公钥基础设施 (PKI) 用于管理互联网通信和物联网中的身份和安全性。启用 PKI 的核心技术是公钥密码算法,这是一种依赖于使用两个相关密钥(公钥和私钥)的加密机制。
数学相关的公钥和私钥对一起加密和解密消息。以这种方式配对两个密码密钥也称为非对称加密,它不同于对称加密,其中单个密钥用于加密和解密。非对称加密的优点是公钥可以公开,而私钥在用户设备(一般存储在加密芯片)上保持安全,比对称加密安全得多。
公钥密码算法的加密原理与应用
公钥密码算法依赖数学算法来生成密钥。公钥由一串随机数组成,可用于加密消息。只有预期的接收者才能解密和阅读此加密消息,并且只能使用相关的私钥来解密和阅读,该私钥是私密的,只有接收者知道。公钥是使用复杂的加密算法创建并将它们与相关的私钥配对,这样它们就不会被暴力攻击利用。
公钥的密钥大小或比特长度决定了保护的强度。例如,2048 位 RSA 密钥通常用于 SSL 证书、数字签名和其他数字证书。此密钥长度提供了足够的加密安全性,以防止黑客破解算法。CA/浏览器论坛等标准组织定义了支持的密钥大小的基线要求。 PKI 支持我们在使用网站、移动应用程序、在线文档和连接的设备时每天遇到的、不显眼且无处不在的数字证书。PKI 最常见的用例之一是基于 X.509 的传输层安全性 (TLS)/安全套接字层 (SSL)。这是 HTTPS 协议的基础,可实现安全的 Web 浏览。但数字证书也适用于广泛的用例,包括应用程序代码签名、数签名以及物联网数字身份和安全性等方面。 什么是 RSA、DSA 和 ECC 算法?
PKI 密钥生成使用了三种主要算法:
RSA、DSA、ECC 算法
RSA密码算法:RSA算法由 Ron Rivest、Adi Shamir 和 Leonard Adleman 于 1977 年开发。它依赖于大素数的因式分解需要强大的计算能力这一事实,并且是第一个利用公钥/私钥范式的算法。与 RSA 相关的密钥长度不同,2048 位 RSA 密钥长度是当今大多数网站的标准。研究表明,使用“具有2GB RAM 的单核 2.2 GHz AMD Operton 处理器”来筛选 768 位、232 位 RSA 模数需要 1500 多年的计算时间。
DSA:DSA使用与 RSA 不同的算法来创建公钥/私钥,基于模幂运算和离散对数问题。它为同等大小的密钥提供与 RSA 相同级别的安全性。DSA 由美国国家标准与技术研究院 (NIST) 于 1991 年提出,并于 1993 年被联邦信息处理标准 (FIPS) 采用。
ECC密码算法:ECC基于控制有限域上椭圆曲线代数结构的数学算法。它提供与 RSA 和 DSA 同等级别的加密强度,但密钥长度更短。ECC 是三者中最新开发的加密方法,椭圆曲线数字签名算法 (ECDSA) 于 1999 年获得认可,使用椭圆曲线加密的密钥协议和密钥传输于 2001 年紧随其后。与 DSA 一样,ECC 已通过 FIPS 认证,并且还得到了美国国家安全局 (NSA) 的认可。
注意:这里提一下SM2算法, 作为ECC椭圆曲线理论的分支,SM2算法是我国基于ECC椭圆曲线密码理论自主研发设计,由国家密码管理局于2010年12月17日发布,在密码行业标准GMT 0003.1-2012 SM2 总则中推荐了一条256位曲线作为标准曲线,数字签名算法、密钥交换协议以及公钥加密算法都根据SM2总则选取的有限域和椭圆曲线生成密钥对;在数字签名、密钥交换方面区别于ECDSA、ECDH等国际算法,而是采取了更为安全的机制,提高了计算量和复杂性。为了方便比较,我们这里把SM2也归于ECC。
RSA vs ECC
请注意,可以同时支持多种加密算法。例如,Apache 服务器可以在同一台服务器上同时支持 RSA 和 DSA 生成的密钥。
RSA 和 DSA 如何比较?
虽然 RSA 和 DSA 使用不同类型的数学算法来生成密钥对,但出于加密强度的目的,两者被认为是等效的。相反,主要区别在于性能和速度。
性能和速度
RSA 在加密和签名方面更快,但在解密和验证方面比 DSA 慢;但是,由于身份验证需要两者,因此对于许多实际应用程序而言,性能差异在很大程度上可以忽略不计。RSA 在密钥生成方面也较慢,但由于密钥生成一次并使用数月或数年,因此从实际的角度来看,这通常也不是那么重要的考虑因素。
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 为等效密钥大小提供了更大的加密强度。
密钥大小比较:
各种密码算法-密钥大小组合的安全性比较 |
对称密码大小(BIT) | 对称密码算法 | 非对称密码算法 |
RSA密钥大小(BIT) | ECC密钥大小(BIT) |
80 | Skipjack | 1024 | 160 |
112 | 3DES | 2048 | 224 |
128 | AES-128 | 3072 | 256 |
192 | AES-192 | 7680 | 384 |
256 | AES-256 | 15360 | 512 |
|
|
|
|
ECC 算法更高效,更适用于物联网系统
如上表所示,使用 ECC,您可以获得等效的加密强度,但密钥大小要小得多 - 大约小一个数量级。例如,要达到使用 112 位对称密钥加密的等效加密强度,需要RSA 2048位密钥,但只需要ECC 224位密钥。
更短的密钥长度意味着设备需要更少的处理能力来加密和解密数据,这使得 ECC 非常适合移动设备、物联网和其他计算能力更有限的用例。同时,由于物联网设备的轻量级特征,设备一般采用的是ARM M0到M4级别的MCU作为通用主控,无论是性能还是密钥的安全性都无法保证,所以一般采用集成专用安全芯片的方式来实现ECC等算法的执行和密钥(主要是私钥)以及证书的防护。如基于MOD8ID物联网安全芯片的物联网设备即可直接与服务器进行TLS通讯。 专家预测 RSA 将被 ECC 取代为当前标准,因为 RSA 的可扩展性正在成为一个迫在眉睫的问题。物联网时代已经来临,巨量的物联网电子设备开始接入互联网。有了这些需求,当我们转向 2048 位加密时,RSA 的局限性就变得清晰起来。由于计算能力的增强,预计 RSA2048 位的安全性只能持续到 2030 年。物联网的未来需要连接大量设备,当然,对安全信息的攻击水平不断提高也需要强大的算法。在这方面,网络世界确实希望这种算法具有密钥长度短、安全性强、计算资源消耗低的特点。
词汇表
对称加密——一种使用相同密钥进行编码和解码的密码
非对称加密——一种使用不同密钥进行编码和解码的密码
公钥加密——一种广泛使用的非对称形式加密
MOD8ID——模微半导体有限公司的物联网安全芯片产品
RSA — 第一个可行的公钥加密算法
ECC — 椭圆曲线公钥加密算法
TLS — 传输层安全性,SSL 的升级,也用于物联网设备安全