SHA-2 Data Integrity Verification for the Secure Shell (SSH) Transport Layer Protocol
updates
- rfc-4253 — The Secure Shell (SSH) Transport Layer Protocol
Extracted elements (9)
HMAC-SHA2-224 and HMAC-SHA2-384 were considered but excluded because they have the same computational requirements as HMAC-SHA2-256 and HMAC-SHA2-512 respectively, and are not commonly used in practice.
Users, implementors, and administrators may place hmac-sha2-256 and hmac-sha2-512 ahead of the REQUIRED hmac-sha1 algorithm in algorithm negotiation proposals so that SHA-2-based MACs are negotiated first.
hmac-sha2-256 is RECOMMENDED for use as a data integrity algorithm in the SSH Transport Layer Protocol, with a digest length of 32 bytes and key length of 32 bytes.
hmac-sha2-512 is OPTIONAL for use as a data integrity algorithm in the SSH Transport Layer Protocol, with a digest length of 64 bytes and key length of 64 bytes.
hmac-sha2-256 is defined as an SSH MAC algorithm using HMAC-SHA2-256 with a digest length of 32 bytes and a key length of 32 bytes.
hmac-sha2-512 is defined as an SSH MAC algorithm using HMAC-SHA2-512 with a digest length of 64 bytes and a key length of 64 bytes.
IANA updated the 'Secure Shell (SSH) Protocol Parameters' MAC Algorithm Names registry to add hmac-sha2-256 and hmac-sha2-512, both referencing RFC 6668 Section 2.
Per NIST SP 800-107 and SP 800-131A, HMAC-SHA1 provides 128-bit security strength and HMAC-SHA2-256 provides 256-bit security strength, both considered acceptable key lengths.
This document was motivated by security concerns with SHA-1 (RFC 6194) and MD5 (RFC 6151), which were the only data integrity algorithms previously defined in SSH (RFC 4253).