[Libssh] libssh server mode decryption errors
Aris Adamantiadis
aris at 0xbadc0de.be
Mon Mar 3 22:46:07 CET 2008
Brendan Gannon a écrit :
> Hi,
>
> I'm using the libssh 0.2 release, running the samplesshd code.
>
> I'm connecting to the server using OpenSSH_4.5p1 (but I've also
> confirmed this is an issue using Putty on Windows).
>
> Everything works fine when AES-128 or Blowfish are the cipher, eg using
> the following command:
> $ ssh -c aes128-cbc -p 22223 admin at localhost
>
> But when the cipher is AES-192, AES-256 or 3DES, eg
> $ ssh -c aes256-cbc -p 22223 admin at localhost
> the first decryption after SSH_MSG_NEWKEYS is received gets corrupted
> and the connection is closed.
>
> Interestingly, using the samplessh app to connect to the server, it has
> no decryption problem.
>
> Does anyone on the list have any idea where the problem lies? I've
> included the server output for AES-256 at the end of the mail.
>
> Any help is much appreciated.
>
> Cheers,
>
> Brendan
>
> Also, the small patch following is needed to get the server mode working:
>
> --- libssh/server.c.orig 2007-11-15 10:46:47.000000000 +1100
> +++ libssh/server.c 2007-11-15 10:47:11.000000000 +1100
> @@ -150,6 +150,7 @@ SSH_SESSION *ssh_bind_accept(SSH_BIND *s
> session->options=ssh_options_copy(ssh_bind->options);
> session->dsa_key=dsa;
> session->rsa_key=rsa;
> + session->alive=1;
> return session;
> }
>
> *** Server output using AES-256 ***
>
> Dsa private key read successfuly
> RSA private key read successfuly
> Socket connecté : 4
> find_matching("ssh-dss,ssh-rsa","ssh-dss,ssh-rsa") = "ssh-dss"
> kex algos : diffie-hellman-group1-sha1
> server host key algo : ssh-dss,ssh-rsa
> encryption client->server :
> aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc
> encryption server->client :
> aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc
> mac algo client->server : hmac-sha1
> mac algo server->client : hmac-sha1
> compression algo client->server : none,zlib
> compression algo server->client : none,zlib
> languages client->server :
> languages server->client :
> Writing on the wire a packet having 247 bytes before,247 bytes after
> comp + 4 padding bytes = 252 bytes packet
> size decrypted : 1c4
> Read a 452 bytes packet
> 6 bytes padding, 451 bytes left in buffer
> After padding, 445 bytes left in buffer
> Final size 445
> type 20
> kex algos :
> diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
> server host key algo : ssh-rsa,ssh-dss
> encryption client->server : aes256-cbc
> encryption server->client : aes256-cbc
> mac algo client->server :
> hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96
> mac algo server->client :
> hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160 at openssh.com,hmac-sha1-96,hmac-md5-96
> compression algo client->server : none,zlib at openssh.com,zlib
> compression algo server->client : none,zlib at openssh.com,zlib
> languages client->server :
> languages server->client :
> find_matching("aes256-cbc","aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc")
> = "aes256-cbc"
> Set output algorithm aes256-cbc
> find_matching("aes256-cbc","aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc")
> = "aes256-cbc"
> Set input algorithm aes256-cbc
> find_matching("aes256-cbc","aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc")
> = "aes256-cbc"
> find_matching("aes256-cbc","aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc")
> = "aes256-cbc"
> find_matching("ssh-rsa,ssh-dss","ssh-dss,ssh-rsa") = "ssh-rsa"
> size decrypted : 8c
> Read a 140 bytes packet
> 6 bytes padding, 139 bytes left in buffer
> After padding, 133 bytes left in buffer
> Final size 133
> type 30
> Importing a 1024 bits,128 bytes object ...
> 1024 bits, 128 bytes, 1 padding
> 1021 bits, 128 bytes, 0 padding
> 1024 bits, 128 bytes, 1 padding
> 1024 bits, 128 bytes, 1 padding
> Writing on the wire a packet having 690 bytes before,690 bytes after
> comp + 9 padding bytes = 700 bytes packet
> Writing on the wire a packet having 1 bytes before,1 bytes after comp +
> 10 padding bytes = 12 bytes packet
> SSH_MSG_NEWKEYS sent
> size decrypted : c
> Read a 12 bytes packet
> 10 bytes padding, 11 bytes left in buffer
> After padding, 1 bytes left in buffer
> Final size 1
> type 21
> Got SSH_MSG_NEWKEYS
> 1024 bits, 128 bytes, 1 padding
> Decrypting 16 bytes data
> size decrypted : ff08c1f
> error : read_packet(): Packet len too high(267422751ld 0ff08c1f)
>
>
> _______________________________________________
> Libssh mailing list
> Libssh at cerkinfo.be
> http://www.cerkinfo.be/cgi-bin/mailman/listinfo/libssh
Hello,
It is resolved in the current SVN.
Regards,
Aris
More information about the Libssh
mailing list