str*_*elj 7 linux ssh openssh rsa sha1
所以最近有消息称 OpenSSH 放弃了对 SHA-1 登录的支持,我试图了解他们指的是哪种格式。多年来,我一直通过ssh-keygen -t rsa -b 2048
. 这是不再推荐的类型,我应该切换到例如 ECDSA 吗?
在此手册页,https://www.man7.org/linux/man-pages/man1/ssh-keygen.1.html,默认选项rsa
为-t
参数解释说,所选择的选项是使用SHA1签名,所以一应该选择rsa-sha2-256
例如。
我尝试检查密钥的类型,ssh-keygen -l -f key
它告诉我它确实是 SHA256 类型。如果是这样,那么它解决了我的问题,但欢迎澄清一些问题。谢谢你!
消息来源:https : //www.zdnet.com/article/openssh-to-deprecate-sha-1-logins-due-to-security-risk/
use*_*686 13
密钥格式没有改变。唯一改变的是每次身份验证握手期间发送的签名格式。
使一切变得混乱的是,最初在 SSHv2 中,密钥类型和签名类型是组合定义的。(例如,标识符被定义为平均RSA密钥相同的“SSH-RSA”和RSA / SHA-1个签名。)因此改变签名过程将意味着分配一个新的密钥类型标识符,并且这将意味着生成新的钥匙...
然而,已经开发了协议扩展来避免这种情况,现代 SSH 客户端将在涉及 RSA 密钥时自动协商签名类型。如果您连接,ssh -v
您会注意到正在交换一些额外的数据包:
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,
rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,
ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
Run Code Online (Sandbox Code Playgroud)
所以你可以继续使用“ssh-rsa”密钥——你只需要将两端的软件升级到相当新的东西,它就会自动开始从那个密钥生成“rsa-sha2-256”签名。(例如,您可能需要安装新版本的 PuTTY 和 Pageant,并且使用旧版本的 gpg-agent 可能会遇到问题。)
默认选项
rsa
的-t
说法解释说,所选择的选项是使用SHA1签名,所以应该选择rsa-sha2-256
的例子。
这适用于颁发证书,但在生成普通密钥时无关紧要。
每个证书在颁发时都由父 CA 签名。这个长期签名存储在证书本身中(并且意识到这与在每次连接期间制作然后丢弃的短期签名不同,这一点非常重要)。这就是为什么许多 HTTPS (X.509) 证书必须被替换的原因——发证 CA 已经用 RSA/SHA-1 签名标记了它们。
OpenSSH 还创建了自己的证书格式,这就是手册页所指的内容。这些所谓的“SSH证书”是不是只是普通的SSH密钥-他们additionaly例如通过您的工作场所CA签名。因此,如果您有名称以 结尾的文件*-cert.pub
,则可能需要重新发布这些文件。(ssh-keygen -Lf <file>
用于检查它们是如何签名的)。
但是普通的 SSH 密钥内部没有任何长期签名——它们仅用于在每次连接期间进行临时签名。所以钥匙本身没有什么需要更换的。
-l
选项我尝试检查密钥的类型,
ssh-keygen -l -f key
它告诉我它确实是 SHA256 类型
不,这根本不是 ssh-keygen 显示的内容。该-l
选项向您显示密钥的“指纹”,并告诉您它使用 SHA256 来计算此指纹——但这与密钥的类型无关,也与密钥的实际使用方式无关。指纹只是为了显示给您而立即计算的散列值。
(请记住,以前的 SSH 软件用于显示基于 MD5 的密钥指纹——即使在实际的 SSHv2 协议中没有使用 MD5。)
这是不再推荐的类型,我应该切换到例如 ECDSA 吗?
据我所知(即从我在 Security.SE 上收集到的信息),RSA 作为签名算法仍然很强大——问题主要是在尝试使用 RSA 作为加密算法时发生,而这不是 SSHv2 的问题。(嗯,不断增加的密钥大小也不是很好。)
ECDSA 有其自身的问题——它很难正确实施,某些类型的程序员错误可能是灾难性的。如果您必须切换,EdDSA(即 ssh-ed25519 或 ssh-ed448)将是更好的选择。
归档时间: |
|
查看次数: |
2697 次 |
最近记录: |