为什么在使用 ssh-keygen 时要使用“-t rsa -b 4096”参数?

18
当创建SSH密钥时,Github建议使用选项-t rsa-b 4096-C "myemail@example.com"。如果没有使用这些选项创建SSH密钥,是否会降低安全性呢?为什么呢?
这些选项让人感到困惑的是它们很难记住(是4096还是4095?哪个标志与数字配对,哪个标志与“rsa”值配对?我的电子邮件前面是哪个标志?不是大写字母吗?),而创建新密钥可能是一个频繁的活动,例如,尝试Bitbucket和GitLab以及不同的云托管提供商。
更新:man页面指出,“要生成的密钥类型由-t选项指定。如果在没有任何参数的情况下调用ssh-keygen,则会生成用于SSH协议2连接的RSA密钥。”那么,为什么Github页面要指定使用-t rsa呢?

1
为什么要记住它们?这就是man命令和其他文档的作用。 - President James K. Polk
2
由于计算机以二进制运行,您应该记住二进制位值:1、2、4、8、16、32、64、128、256、1024、2048、4096、8192。在许多其他数字场合中,您可能会看到这些数字。如果您知道这些数字,您就会本能地知道它应该是4096而不是4095。 - kojow7
2个回答

13

-t-b是ssh-keygen实用程序所需的参数。

-t(类型)

指定用于生成密钥的算法。 可用的算法有 - rsadsaecdsa

-b(位数)

指定密钥大小的位数。 以前这些位数分别为1024, 2048

2048 * 2 = 4096 被认为很强大。因此推荐使用这个密钥大小。

2048 位被认为是 RSA 密钥的足够长度。如果您没有提到 -b 标志,则此为默认密钥大小。


rsa - Rivest-Shamir-Adleman

dsa - Digital Signature Algorithm。通常会使用1024位的密钥大小。

ecdsa - Elliptic Curve Digital Signature Algorithm - 支持三种不同的密钥大小:256、384和521位。

对于不同公钥加密算法中的不同数字,您需要探索信息安全/加密/对称算法领域。


为什么要使用这些选项而不是默认选项? - rm.rf.etc
1
如果默认设置满足您的需求,您可以使用默认设置。 -t-b的默认值为RSA2048位。 通过选项,您可以更改算法和位数以获得更好的加密效果。 - Shreyas

11

从2021年开始:

为了更好的安全性,RSA正逐渐被淘汰,取而代之的是Ed25519。原始问题的基础信息已经过时。现在Github和大多数人都建议尽可能使用Ed25519。

ssh-keygen -t ed25519 -C "your_email@example.com"

此默认轮数为16。您可以使用-a参数增加轮数。但请记住,轮数越多,则验证速度越慢,因此登录会变慢。默认的16可能少于1秒钟就能登录,而150或更多的值可能会增加几秒钟或更长时间的延迟:

ssh-keygen -t ed25519 -a 100 -C "your_email@example.com"

1
值得考虑阅读此文章中的信息:https://medium.com/risan/upgrade-your-ssh-key-to-ed25519-c6e8d60d3c54。我在这里发现了一条有用的评论:https://medium.com/@hopeseekr_86196/this-article-aged-very-poorly-in-2021-there-is-grave-danger-with-using-ed25519-dc35a24ebc2?source=responses-----c6e8d60d3c54----0---------------------------- - dkcwd
2
我会在这里粘贴部分评论...它来自一个名叫 Theodore R. Smith 的人,评论内容是“在2021年,使用ed25519作为您的SSH密钥存在严重危险”。他将量子计算的改进归因于支持该观点。他说:“我已经切换到RSA 8192。支持似乎相当不错。 ssh-keygen -o -t rsa -a 100 -b 8192 -f id_rsa-8192 -C "youremail@example.com" -a 100使得传统黑客更难破解您的密码短语。” - dkcwd
3
@dkcwd,除了这篇文章之外,您能提供其他表明应避免使用ED25519的来源吗?该文章指出了DARPA和NIST,但没有提供链接。此外,您能解释一下为什么您认为量子计算机会更难破解RSA(即使在100轮)吗? - kojow7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接