我应该使用 ECDSA 密钥而不是 RSA 吗?

信息安全 SSH ecdsa
2021-08-21 01:06:33

我在 ssh.com 上读到,应该使用新的 ECDSA ssh 密钥来创建公钥/私钥对;这就是基于椭圆曲线的美国政府标准(可能是数学)。我还注意到它们使用的位更少,所以我不确定它应该如何更安全。你有没有听说过这个,如果它使用更少的比特,它到底怎么会更安全?

4个回答

对于“安全性”,请参阅类似这样的比较

为什么 ECC over Prime Field 为您提供相当于一半比特大小的安全性,而 RSA 和 FFDHE 提供的每比特安全性要低得多,这是因为 RSA 对抗最知名攻击的强度是这样计算的,而 ECC 对抗最佳攻击的强度已知攻击是这样计算的

NIST P-256/384/521 曲线是安全的,它们之上的 ECDH 和 ECDSA 算法是安全的,但它们是上一代曲线和算法。从那时起,进步主要体现在三个方面:

  1. 以非任意方式选择一条曲线,使其更加“无所不能”,以确保该曲线不是 NSA 能够比人们担心的暴力破解更快的方法。由于这些原因,您不必担心 IMO,但有些人认为这是从 NIST 曲线升级的原因。
  2. 易于实施,或者等效地,随机实施的机会被证明是安全的。
  3. 表现。

目前最先进的和大家推荐的ECC系统是X25519 ECDH(Curve25519 ECDH)和Ed25519数字签名/长期密钥。基本上每个人都同意它们比 NIST P-256 ECDH 和 ECDSA 更好。一个缺点是它们在 HSM 和 Yubikeys 等硬件令牌中不受支持。

如果您可以使用软件 SSH主机密钥,您应该使用 Ed25519主机密钥

如果可以使用软件 SSH 用户密钥,则应使用 Ed25519用户密钥

如果您可以使用 curve25519密钥交换,您应该使用它。

25519 的后备是 NISP P-256。P-256 的后备方案是 RSA 和 FFDHE,至少有 2048 位(最多 4096 位),使用 SHA2 和不使用 SHA1。不再允许使用 SHA1 的 RSA 和使用 SHA1 的 FFDHE。

请注意,如果有人建造了足够大的量子计算机,所有这些系统都会崩溃。为了解决这个问题,人们正在研究“后量子”替代品,即使对手拥有一台量子计算机,这种替代品也将是安全的。NIST 正在等待 PQ Crypto 竞赛结束,发布建议和标准,硬件加密设备供应商开始销售 PQ 设备,每个人都将升级到 PQ 算法。

因为这次升级迫在眉睫(在 NIST 时间框架内),他们决定不敦促每个人从 P-256 升级到 Curve25519,甚至从 RSA 升级到 ECC。NSA 基本上说要为 PQ 升级节省预算。

不过,使用未存储在硬件设备中的 SSH 密钥的人已经升级,并且每个人都升级了 ECDH,因为临时密钥不需要硬件安全存储。

即使是僵化的 TLS 生态系统(不是 SSH)也已升级到 X25519 ECDH,尽管他们无法升级到 Ed25519,因为没有可用的 HSM,他们基本上决定等待 PQ 加密标准和 HSM。标准/ RFC 是可用的,只是没有人使用它们。

ECC 密钥可以比 RSA 密钥短得多,并且仍然提供相同数量的安全性,就攻击者破解这些密钥所需的蛮力而言。例如,224 位 ECC 密钥需要与 2048 位 RSA 密钥大致相同的蛮力来破解。有关更多信息,请参阅https://wiki.openssl.org/index.php/Elliptic_Curve_Cryptography

为了补充其他答案,让我分享一张取自 NIST SP 800-57 的漂亮表格: 在此处输入图像描述

基本上,您可以在这里看到的是,您需要RSA 3072 bitvsECDSA 256-383 bit才能达到相同级别的安全强度(128 位)。

有优点也有缺点。

我们通过询问“使用最知名的攻击需要多长时间才能破解它”来评估算法的安全强度。对 RSA 和传统的基于素数的 DSA 的已知攻击比最知名的 ECDSA 方法要好得多。因此,与使用 ECDSA 相比,使用 RSA 或基于素数的 DSA 需要更长的密钥长度才能获得等效的安全级别。

然而,在实际使用的密钥长度中考虑到了这一点,没有理由相信 4096 位 RSA 密钥很快就会被破解,即使是 2048 位也可能暂时没问题。

不幸的是,基本 ecdsa 标准有几个潜在的警告。

  • 加密社区中的一些偏执者怀疑,广泛使用的 nist 曲线可能已被后门,因此美国政府拥有破解加密货币的捷径。
  • DSA 和 ECDSA 的基本实现对随机数生成器故障高度敏感。使用错误的随机数生成器进行签名可能会导致密钥受损(即使密钥是使用良好的随机数生成器生成的)。

ed25519 通过使用“无所不能”曲线和使用签名算法的确定性变体解决了这些问题,但选择“仅”的曲线提供了大约 128 位的安全性(通过大多数比较,这使其比 RSA2048 更强,但比RSA4096)。自 2014 年以来它一直受到 openssh 的支持,因此如果您对 128 位安全级别感到满意并且不需要登录旧系统,这可能不是一个糟糕的选择。

ed448 使用与 ed25519 相同的算法,其曲线提供 224 位安全性,使其比 RSA4096 更安全。不幸的是,虽然 ssh 中有 ed448 的标准,但主要的实现 openssh 似乎并不支持它。