【问题标题】:on DSA key sizeDSA 密钥大小
【发布时间】:2015-11-12 22:56:27
【问题描述】:

当你执行时

ssh-keygen -t ssh-dss

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

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

我是否遗漏了什么或想错了什么?我已经尝试阅读该算法,但考虑到所涉及的素数的大小,它很难计算。

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

【问题讨论】:

  • 我投票结束这个问题,因为这与编程或软件开发无关。这个问题可能更适合Super UserInformation Security
  • 其中还有其他元数据,而不仅仅是密钥位本身。另外,如果密钥是 base64 编码的,您将只处理每个字符 6 位。
  • 其实有。考虑到它的大小,我必须编写一个代码来验证它是否是一个有效的键。
  • 我建议使用大于 1024 的密钥,最好是 2048。

标签: encryption ssh dsa


【解决方案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 中查找存储它的标签并验证其数据的长度。

【讨论】:

  • 注意:您可以使用openssl asn1parse解析ASN1(编辑答案但被拒绝)。
猜你喜欢
  • 2013-09-20
  • 1970-01-01
  • 2013-10-30
  • 2013-05-07
  • 2023-03-18
  • 2016-11-08
  • 2013-12-02
  • 2022-01-20
  • 2014-05-25
相关资源
最近更新 更多