我和我的朋友一直在生成一些ssh2-rsa密钥,并注意到所有公共密钥均以“ AAAAB3NzaC1yc”开头。我在两次连续尝试中在同一台计算机上生成的两个密钥之间的相似性扩展到了“ AAAAB3NzaC1yc2EAAAABIwAAAQEA”。我什至可以在Google上搜索“ AAAAB3Nz”,最终获得一些成功。

这很正常吗?还是我们在生成时做错了什么?随机性不足吗?

评论

您正在使用什么生成它们? openssl,openssh,pgp?它可能是一种编码。

我们在两个不同的Windows机器上使用了puTTYgen,在一个Linux机器上使用了ssh-keygen。

#1 楼

公钥blob不仅由构成公钥的数字组成:它以标有“这是SSH公钥”的标头开头。重复的前缀对该标头进行编码。

RFC 4254指定SSH密钥格式的公钥编码。


“ ssh-rsa”密钥格式具有以下特定编码:

 string    "ssh-rsa"
 mpint     e
 mpint     n


这里的'e'和' n'参数形成签名密钥Blob。


该字符串被编码为32位大字节序长度,后跟文字字符串:

0,0,0,7,'s','s','h','-','r','s','a'


在Base64中对该字节序列进行编码可以得到:密钥的大部分是公共模数,在不同的密钥中完全不同。