6.3. Encryption (加密)
6.3. Encryption (加密)
加密算法和密钥将在密钥交换期间协商.当加密生效时, 每个数据包的数据包长度、填充长度、有效载荷和填充字段必须使用给定的算法进行加密.
单个方向发送的所有数据包中的加密数据应该被视为单个数据流.例如, 初始化向量应该从一个数据包的末尾传递到下一个数据包的开头.所有密码应该使用有效密钥长度为 128 位或更长的密钥.
每个方向的密码必须独立运行.如果本地策略允许多个算法, 实现必须允许为每个方向独立选择算法.然而在实践中, 建议两个方向使用相同的算法.
当前定义了以下密码:
3des-cbc REQUIRED CBC 模式的三密钥 3DES
blowfish-cbc OPTIONAL CBC 模式的 Blowfish
twofish256-cbc OPTIONAL CBC 模式的 Twofish, 使用 256 位密钥
twofish-cbc OPTIONAL "twofish256-cbc" 的别名 (出于历史原因保留)
twofish192-cbc OPTIONAL 192 位密钥的 Twofish
twofish128-cbc OPTIONAL 128 位密钥的 Twofish
aes256-cbc OPTIONAL CBC 模式的 AES, 使用 256 位密钥
aes192-cbc OPTIONAL 192 位密钥的 AES
aes128-cbc RECOMMENDED 128 位密钥的 AES
serpent256-cbc OPTIONAL CBC 模式的 Serpent, 使用 256 位密钥
serpent192-cbc OPTIONAL 192 位密钥的 Serpent
serpent128-cbc OPTIONAL 128 位密钥的 Serpent
arcfour OPTIONAL 128 位密钥的 ARCFOUR 流密码
idea-cbc OPTIONAL CBC 模式的 IDEA
cast128-cbc OPTIONAL CBC 模式的 CAST-128
none OPTIONAL 无加密; 不推荐
"3des-cbc" 密码是三密钥三重 DES (加密-解密-加密), 其中密钥的前 8 字节用于第一次加密, 接下来的 8 字节用于解密, 后面的 8 字节用于最后的加密.这需要 24 字节的密钥数据 (其中实际使用 168 位).要实现 CBC 模式, 必须使用外部链接 (即只有一个初始化向量).这是一个 8 字节块的块密码.该算法在 [FIPS-46-3] 中定义.
其他密码的详细规范请参考相关标准文档.
可以按照 [SSH-ARCH] 和 [SSH-NUMBERS] 中的规定定义其他方法.