I'm building a fuse client for ssh/sftp. I write the required ssh and sftp functions myself. Now I read in RFC4253 that before signing the data to sign is default hashed. In RFC4253 8. "Diffie-Hellman Key Exchange" SHA1 is mentioned as the default for ssh-dss. What is it for ssh-rsa?
The "ssh-rsa" key format has the following specific encoding:
string "ssh-rsa" mpint e mpint n
Here the 'e' and 'n' parameters form the signature key blob.
Signing and verifying using this key format is performed according to the RSASSA-PKCS1-v1_5 scheme in [RFC3447] using the SHA-1 hash.
So the answer is "SHA-1" as well.
It is using always SHA-1, unless it does not. There are two new drafts to use SHA-2 functions family:
- https://tools.ietf.org/html/draft-rsa-dsa-sha2-256-03 (in 2018 published as RFC 8332)
The usage is negotiated using the protocol extension:
So basically, the other answers are correct for now and the past, but for now and close future, we don't want to use SHA-1 for cryptographic signatures and possibly deprecate SHA-1 in this area. So if you will use any decently recent version of SSH, it will use SHA-2.
I've found already:
So by openssh always sha1 is used.