关于DSA密钥大小

时间:2015-08-19 14:53:10

标签: encryption ssh dsa

执行时

  

ssh-keygen -t ssh-dss

它会生成两个文件:一个包含公共文件,另一个包含私钥。

ssh-keygen man-page表示它总是生成1024位密钥,但是当我打开公钥文件时,我总是得到一个580个字符的行(这将是 ASCII码中的4640位。

我错过了什么或者想错了吗?我已经尝试过阅读算法,但考虑到所涉及的素数的大小,这很难计算。

有没有办法可以根据id_dsa.pub文件中的字符数来验证它是否是1024位密钥?

1 个答案:

答案 0 :(得分:1)

ssh-keygen存储公钥和私钥的文件有一些预定义的格式(PEM,...),它们不是密钥本身的转储(例如,记住私钥通常是加密的) 。

在此链接(https://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html)中,您将找到有关不同格式的一些很好的解释,以及使用“openssl asn1parse”等工具来显示它们:

私钥是ASN.1数据结构,使用DER序列化为字节字符串,然后进行Base64编码。 ASN.1与JSON大致相当(它支持各种数据类型,例如可以嵌套在树结构中的整数,布尔值,字符串和列表/序列)。它被广泛用于加密目的,但它在某种程度上与网络世代不相关(我不知道为什么,它看起来像一个相当不错的格式)。

查找公钥大小的方法是在ASN1中查找存储它的标记并验证其数据的长度。