公钥加密算法那些事 | RSA 与 ECC 系统对比
一、背景
据记载,公元前 400 年,古希腊人发明了置换密码。1881 年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用「恩尼格玛」密码机,密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在 1997 年,美国国家标准局公布实施了「美国数据加密标准(DES)」,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有 DES、RSA、SHA 等。随着对加密强度需求的不断提高,近期又出现了 AES、ECC 等。
使用密码学可以达到以下目的:
- 保密性:防止用户的标识或数据被读取。
- 数据完整性:防止数据被更改。
- 身份验证:确保数据发自特定的一方。
二、加密算法
根据密钥类型不同将现代密码技术分为两类:对称加密算法和非对称加密算法。对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。(本文不做赘述)
非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。
常见的非对称加密算法如下:
- RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
- DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
- ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
三、ECC 和 RSA
在 1976 年,由于对称加密算法已经不能满足需要,Diffie 和 Hellman 发表了一篇叫《密码学新动向》的文章,介绍了公匙加密的概念,由 Rivet、Shamir、Adelman 提出了 RSA 算法。RSA 就是他们三人姓氏开头字母拼在一起组成的。
随着分解大整数方法的进步及完善、计算机速度的提高以及计算机网络的发展,为了保障数据的安全,RSA 的密钥需要不断增加,但是,密钥长度的增加导致了其加解密的速度大为降低,硬件实现也变得越来越难以忍受,这对使用 RSA 的应用带来了很重的负担,因此需要一种新的算法来代替 RSA。
1985 年 N.Koblitz 和 Miller 提出将椭圆曲线用于密码算法,全称:Elliptic curve cryptography,缩写为 ECC,根据是有限域上的椭圆曲线上的点群中的离散对数问题 ECDLP。ECDLP 是比因子分解问题更难的问题,它是指数级的难度。
现在 SSL 证书普遍使用的是 RSA 算法,由于上述的 RSA 算法存在的缺点,使用 ECC 作为其公钥算法的数字证书近几年的发展也不容小觑:2008 年左右 CA 开始储备 ECC 根证书,2012 年左右 CA 开始对外公开销售 ECC 证书,2014 年 ECC 证书在国外被普遍开始使用,2015 年国内开始接受 ECC 证书。
ECC 和 RSA 相比,在许多方面都有对绝对的优势,主要体现在以下方面:
- 抗攻击性强
- CPU 占用少
- 内容使用少
- 网络消耗低
- 加密速度快
随着安全等级的增加,当前加密法的密钥长度也会成指数增加,而 ECC 密钥长度 却只是成线性增加。例如,128 位安全加密需要3,072 位 RSA 密钥,却只需要一 个 256 位 ECC 密钥。增加到 256 位安全加密需要一个 15,360 位 RSA 密钥,却只 需要一个 512 位 ECC 密钥。ECC 具有如此卓越的按位比率加密的性能,预计其特点将成为安全系统关注的重点。
四、测试和分析
前面说了那么多废话,接下来重头来了,接下来会着重从性能来测试两种算法的区别,以下多图预警:
4.1 服务器性能指标
测试在两大云主机上执行。本测试案例中使用了两个不同的身份验证算法:
我们看到,ECC-256 层次结构优于 RSA-2048 和 RSA-3072
4.2 响应时间与吞吐量指标之比较
下表中的条目和以下章节详细说明了我们为云主机运行的测试:测试「0K GET,0% 的重用」使用超大型 ( XLarge ) 服务器在超大型 ( XLarge ) 服桌面客户端上运行,适用于 Apache 和 IISweb 服务器,会话重用为 0%,意味着每个 SSL 握手都是一个完整的握手而不是简化版握手。同时应注意,0K 文件并不表示空负载,在过程中仍有 HTTP 抬头传输。
测试案例和场景
- 0K GET,重用为 0%
会话重用为 0%,表明每次握手是完整的握手,涉及所需 CPU 处理,我们已经发现运行 Apache 的云主机出现 CPU 饱和受限,RSA-3072 在 500 次请求 / 秒左右; RSA-2048 在 1300 次左右,而 ECC-256 经证实在达 2800 次前呈现出极强的适应性。重要的一点是,ECC-256 能够适应相当高的事务数量。虽然 Apache 和 IIS 背 后的数据点(如在吞吐量和等待时间中的数据点)是完全不同的,但得出的结论是相同的,而且有利于 ECC-256。注意,ECC-256 与 RSA-3072 同等安全,效率可相差甚远。
- 200K GET,重用为 0%
在云主机上托管 web 服务器的原因是要减少所需客户端数,以便使服务器能够最大程度地利用 CPU。结果和「0K GET,重用为 0%」趋势相同。
- 200K GET,重用为 68%
会话重用为 68% 的结果是三分之二的握手被简化。与之前测试相比,平均响应时间下降,同时吞吐量增加,三者间的饱和缺口缩小。如果重用百分比增加并绘制成图,我们便可以看到差距在缩小。
- 1200K GET,重用为 0%
一个有趣的现象是,在 Apache 一例中我们观察到 ECC-256 和 RSA-2048 的网络传输开始饱和,但 RSA-3072 却达到了 CPU 利用极限。而对于 IIS,三者都达到了 CPU 利用极限。
五、不久,ECC 将无处不在
ECC 的这些特点使它必将取代 RSA,成为通用的公钥加密算法。比如 SET 协议的制定者已把它作为下一代 SET 协议中缺省的公钥密码算法。
ECC 证书兼容性:
最后,重点来了!!!
七牛云独家支持 ECC 算法的 DV 单域名证书可免费申请及下载!
传送门:七牛云 SSL 证书服务
公钥加密算法那些事 | RSA 与 ECC 系统对比的更多相关文章
- RSA 公钥加密算法
RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的. 这个算法的名字也是他们三个人名字首字母,RSA算法基于一个十分简单的数 ...
- 加密算法 DES 3DES RSA AES 简介
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为[密文],使其只能在输入相应的[密钥]之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人 ...
- 3个著名加密算法(MD5、RSA、DES)的解析
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来. M ...
- [转]3个著名加密算法(MD5、RSA、DES)的解析
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来. ...
- 加密算法—MD5、RSA、DES
最近因为要做一个加密的功能,简单了解了一下加密算法,现在比较常用的有三个加密算法MD5加密算法.RSA加密算法.DES加密算法. MD5加密算法 定义:MD5算法是将任意长度的“字 ...
- [转载]OpenSSL身份认证 RSA、ECC、SM2
一.生成证书openSSL生成RSA证书1 生成自签CA 生成CA密钥genrsa -aes256 -passout pass:123456 -out ca_rsa_private.pem 20481 ...
- 监控系统对比 Ganglia vs Open-falcon vs Prometheus vs Zabbix vs Nagios vs PandoraFMS
Zabbix vs Nagios vs PandoraFMS: an in depth comparison - Pandora FMS - The Monitoring Bloghttps://bl ...
- 易普优APS与国外知名高级计划排程系统对比
众所周知软件执行效率受制于硬件性能,市面上的APS产品多为单机版本,企业要应用好APS,保证紧急插单.计划下发全程无忧,用户电脑硬件性能是不容忽视的一大瓶颈.APS的直接用户是车间管理人员.计划员,而 ...
- scribe、chukwa、kafka、flume日志系统对比
scribe.chukwa.kafka.flume日志系统对比 1. 背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理 这些日志需要特定的日志系统,一 ...
随机推荐
- jQuery将json字符串显示在页面上
js代码: function syntaxHighlight(json) { if (typeof json != 'string') { json = JSON.stringify(json, un ...
- IIS伪静态失效
故障描述: 今天有个美国VPS的用户向我们救助,说他的网站昨晚还好好的,早上起来就发现404了,但是后台却可以正常登陆.经过我们检查后发现原来是伪静态失效了,查看日志,发现许多ISAPI_Rewrit ...
- phpstorm中快速添加函数注释
Preferences 或 command+,快捷键 Live Templates - PHP 下方 - 新建模板 ,Abbreviation 命名随便写,点击Edit Variables配置变量信息 ...
- dzzoffice网盘应用有着最强大的团队、企业私有网盘功能,并且全开源无功能限制。
企业,团队多人使用dzzoffice的网盘应用,灵活并且功能强大. 支持个人网盘,机构部门,群组,并可根据使用情况开启关闭.例如可只开启群组功能. 可通过后缀,标签自定义类型进行快捷筛选 全面 ...
- JavaScript-基础类型和运算符
JavaScript-基础类型和运算符 P02.稍微了解 1.js代码需要编写到script标签中 <script type="text/javascript"> 此处 ...
- python基础一 day7 复习文件操作
read()原样输出 读取出来的是字符串类型 readline()输出一行 读取出来的是字符串类型 readlines()把每行文本作为一个字符串存入列表,并返回列表 打开方式: b以bytes类型打 ...
- Android Studio集成crashlytics后无法编译的问题
http://blog.csdn.net/zhuobattle/article/details/50555393 问题描述: 在用fabric集成后编译出现如下错误, Error:Cause: hos ...
- 用固定长度的数组实现stack queue
package my_basic.class_3; /** * 用数组结构实现大小固定的队列和栈 */ public class Code_01_Array_stack_queue { public ...
- js div大小随意伸缩
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- 关于JVM内存模型,GC策略以及类加载器的思考
JVM内存模型 Sun在2006年将Oracle JDK开源最终形成了Open JDK项目,两者在绝大部分的代码上都保持一致.JVM的内存模型是围绕着原子性(操作有且仅有一个结果).可见性(racin ...