RSA、DSA 和 ECC 加密算法有什么区别?

时间:2022-11-17 17:06:51

RSA、DSA 和 ECC 加密算法是用于在公钥基础设施中生成密钥的主要算法。

公钥基础设施 (PKI) 用于管理互联网通信和计算机网络中的身份和安全性。 启用 PKI 的核心技术是公钥密码术,这是一种依赖于使用两个相关密钥(公钥和私钥)的加密机制。

这个公钥和私钥对一起加密和解密消息。 以这种方式配对两个密码密钥也称为非对称加密,它不同于对称加密,其中单个密钥用于加密和解密。

非对称加密的优点是公钥可以公开给全世界看,而私钥在用户设备上保持安全,比对称加密安全得多。

公钥加密如何依赖加密

公钥密码术依靠数学算法来生成密钥。公钥由一串随机数组成,可用于加密消息。只有预期的接收者才能解密和阅读此加密消息,并且只能使用相关的私钥来解密和阅读,该私钥是秘密的,只有接收者知道。

公钥是使用复杂的加密算法创建的,以将它们与相关的私钥配对,这样它们就不会被暴力攻击利用。

公钥的密钥大小或比特长度决定了保护的强度。例如,2048 位 RSA 密钥通常用于 SSL 证书、数字签名和其他数字证书。此密钥长度提供了足够的加密安全性,以防止黑客破解算法。 CA/浏览器论坛等标准组织定义了支持的密钥大小的基线要求。

PKI 支持我们在使用网站、移动应用程序、在线文档和连接的设备时每天都会遇到的、不显眼且无处不在的数字证书。 PKI 最常见的用例之一是基于 X.509 的传输层安全性 (TLS)/安全套接层 (SSL)。这是 HTTPS 协议的基础,可实现安全的 Web 浏览。但数字证书也适用于广泛的用例,包括应用程序代码签名、数字签名以及数字身份和安全性的其他方面。

什么是 RSA、DSA 和 ECC 算法?

PKI 密钥生成使用了三种主要算法:

  • Rivest-Shamir-Adleman (RSA)
  • 数字签名算法 (DSA)
  • 椭圆曲线密码学 (ECC)

RSA、DSA、ECC 算法

RSA 算法由 Ron Rivest、Adi Shamir 和 Leonard Adleman 于 1977 年开发。 它依赖于大素数分解需要强大的计算能力这一事实,并且是第一个利用公钥/私钥范式的算法。 与 RSA 相关的密钥长度不同,2048 位 RSA 密钥长度是当今大多数网站的标准。

DSA 使用与 RSA 不同的算法来创建公钥/私钥,基于模幂运算和离散对数问题。它为同等大小的密钥提供与 RSA 相同级别的安全性。 DSA 由美国国家标准与技术研究院 (NIST) 于 1991 年提出,并于 1993 年被联邦信息处理标准 (FIPS) 采用。

ECC 基于控制有限域上椭圆曲线代数结构的数学算法。它提供与 RSA 和 DSA 同等级别的加密强度,但密钥长度更短。 ECC 是三者中最新开发的加密方法,椭圆曲线数字签名算法 (ECDSA) 于 1999 年获得认可,使用椭圆曲线加密的密钥协议和密钥传输于 2001 年紧随其后。与 DSA 一样,ECC 已通过 FIPS 认证,并且还得到了美国国家安全局 (NSA) 的认可。

请注意,可以同时支持多种加密算法。例如,Apache 服务器可以在同一台服务器上同时支持 RSA 和 DSA 生成的密钥。采用这种“束手无策”的方法可以增强您的企业安全性。

RSA 和 DSA 如何比较?

虽然 RSA 和 DSA 使用不同类型的数学算法来生成密钥对,但出于加密强度的目的,两者被认为是等效的。相反,RSA 和 DSA 之间的主要区别在于性能和速度。

性能和速度

RSA 在加密和签名方面比 DSA 快,但在解密和验证方面比 DSA 慢。但是,由于身份验证需要两者,因此对于许多实际应用程序而言,性能差异在很大程度上可以忽略不计。

RSA 在密钥生成方面也比 DSA 慢,但由于密钥生成一次并使用数月或数年,这通常不是一个重要的考虑因素。

SSH 协议支持

另一个不同之处在于它们的 Secure Shell (SSH) 协议支持。 RSA 与原始 SSH 以及更新的第二版 SSH2 兼容,而 DSA 仅适用于 SSH2。由于 SSH 被认为不如 SSH2 安全,这可能是使用 DSA 的一个考虑因素。

联邦背书

DSA 和 RSA 之间的另一个区别是 DSA 得到美国联邦*的认可。 对于向联邦机构提供服务的企业,跟上*标准的能力可能是使用 DSA 的一个理由。

底线是,对于大多数用例、行业和监管环境,RSA 和 DSA 非常相似,提供相同的加密强度,两者之间的差异相对较小。 这两种算法也同样兼容领先的互联网协议,包括 Nettle、OpenSSL、wolfCrypt、Crypto++ 和 cryptlib。

ECC 与 RSA 和 DSA 相比如何?

ECC 和 RSA/DSA 之间的最大区别在于 ECC 为等效密钥大小提供了更大的加密强度。 ECC 密钥比相同大小的 RSA 或 DSA 密钥更安全。

密钥大小比较:

对称密钥大小(位) RSA 大小(位) 椭圆曲线密钥大小(位)
80 1024 160
112 2048 224
128 3072 256
192 7680 384
256 15360 521

根据 NIST 推荐的密钥大小

ECC 更高效

如图所示,使用 ECC,您可以获得等效的加密强度,但密钥大小要小得多 - 大约小一个数量级。例如,要达到使用 112 位对称密钥加密的等效加密强度,需要 RSA 2048 位密钥,但只需要 ECC 224 位密钥。

更短的密钥长度意味着设备需要更少的处理能力来加密和解密数据,这使得 ECC 非常适合移动设备、物联网和其他计算能力更有限的用例。

安全和速度

在 Web 服务器等更传统的用例中,与 RSA 或 DSA 相比,ECC 也有一些优势,因为较小的密钥大小可以通过更快的 SSL 握手实现更强的安全性,这意味着更快的网页加载时间。

值得注意的是,ECDSA 是 ECC 的原始版本,是 DSA 的一个变种。 ECDSA 提供与 ECC 相同的每比特数的加密强度级别。