数字签名技术已经广泛使用于网络安全协议或分布式系统中。目前,比较流行的数字签名算法有RSA和ECC。本文详细介绍RSA和ECC算法的定义,帮助你了解这两者间的区别。

产生背景

据记载,公元前 400 年,古希腊人发明了置换密码。1881 年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用「恩尼格玛」密码机,密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在 1997 年,美国国家标准局公布实施了「美国数据加密标准(DES)」,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有 DES、RSA、SHA 等。随着对加密强度需求的不断提高,近期又出现了 AES、ECC 等。

通过使用密码学,可以达到以下几个目的:

  • 保密性:防止用户的标识或数据被读取。
  • 数据完整性:防止数据被更改。
  • 身份验证:确保数据发自特定的一方。

加密算法

根据密钥类型不同将现代密码技术分为两类:对称加密算法非对称加密算法

  • 对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。
  • 非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。常见的算法如下所示:
    • RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。
    • DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准)。
    • ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。

ECC与RSA

RSA

1976年,由于对称加密算法已经不能满足需要,一篇叫《密码学新动向》的文章中介绍了公匙加密的概念,由 Rivet、Shamir、Adelman 提出了 RSA 算法。RSA 就是他们三人姓氏开头字母拼在一起组成的。

现在 SSL 证书普遍使用的是RSA算法。但随着分解大整数方法的进步及完善、计算机速度的提高以及计算机网络的发展,为了保障数据的安全,RSA 的密钥需要不断增加。但是,密钥长度的增加导致了其加解密的速度大为降低,硬件实现也变得越来越难以忍受,这对使用RSA的应用带来了很重的负担,因此,需要一种新的算法来代替RSA。

ECC

1985年,N.Koblitz和Miller提出l将椭圆曲线用于密码算法,即ECC算法。该算法是根据有限域上的椭圆曲线上的点群中的离散对数问题(ECDLP)。ECDLP 是比因子分解问题更难的问题,它是指数级的难度。

现在,使用ECC算法作为其公钥算法的数字证书近几年的发展不容小觑。2008年左右,Certificate Authority(CA)开始储备ECC根证书,2012年左右CA开始对外公开销售ECC证书,2014年ECC证书在国外被普遍开始使用,2015年国内开始接受ECC证书。

ECC vs. RSA

ECC与RSA相比,在许多方面都有对绝对的优势,主要体现在以下方面:

  • 抗攻击性强
  • CPU占用少
  • 内容使用少
  • 网络消耗低
  • 加密速度快