文档章节

几种密码学算法比较

中成才
 中成才
发布于 2017/03/07 18:22
字数 1512
阅读 257
收藏 0

###加密演算法 RSA 算法是目前最为流行的公钥算法,其可靠性基于一个常见事实,因式分解一个大整数很难。这里的大整数是指129位以上的大整数,因为RSA-129已经破解,因此实践中往往会使用512位或者1024位的大整数。理论计算学界认为,大整数因式分解的计算难度应该在P(多项式计算时间)与NPC(NP-完全)之间。也许未来量子计算机使用shor算法可以起到一些帮助。

###椭圆曲线密码 椭圆曲线算法的出现是为了解决RSA算法密钥过大导致加解密速度缓慢的问题,通常椭圆曲线加密使用160位的密钥。根据维基百科所说

是ECC的主要商业支持者,拥有超过130项,并且已经以2千5百万美元的交易获得了(NSA)的技术许可。他们也已经发起了许多对ECC算法的挑战。已经被解决的最复杂的是109位的密钥,是在初由一个研究团队破解的。破解密钥的这个团队使用了基于的大块并行攻击,用超过10,000台级的PC机连续运行了540天以上。对于ECC推荐的最小密钥长度163位来说,当前估计需要的计算资源是109位问题的108倍。

当然除了公钥算法外,AES对称密钥算法,SHA 哈希算法都是属于经过严格构建的密码学算法,在商业环境中已经得到了足够的验证。 值得一提的是,山东大学的王小云教授提出了以较低代价(2^63次计算)发现SHA-1的弱碰撞,这是中国理论密码学界的又一骄傲 :)

###SHA方面 在密码学工具假定安全(为什么说假定,因为大整数因式分解等数学问题还被假定是难的,并无确切证明)的情况下,密码学协议的构建就显得极为重要了。一个好的协议必须考虑所有种类的攻击,包括著名的中间人攻击等等。黑客如果能发现协议上的漏洞,他就能操纵使用此协议进行安全协商的上层应用程序。 再举个例子,SSL 和IPSEC 为什么发展起来,这是因为早期IPv4上对于消息的发送和接收方根本没有验证的步骤,攻击者随时可以假冒任何一方发起通信.

在协议和算法ok的情况下, 黑客们依然可以利用密钥的生成机制进行攻击。 举两个著名的。第一个是WIFI 的WEP 协议,现在已经被证明是一个不安全的协议,详情可见

另一个例子则比较劲爆,是有关比特币使用的椭圆曲线加密的安全性。 椭圆曲线加密需要基于一条曲线进行计算。通常密码学界认为国际标准所使用的椭圆曲线上是不可能找到破解方法。但是斯诺登爆出的信息是NSA特意找到了一个后门

####一般而言,曲线会被分成两类:“伪随机”曲线以及Koblitz曲线。

在一条伪随机曲线里,参数a和b是从某个“种子”通过一个特定的算法(本质上是哈希运算)来选择。对于secp256r1(这是标准256位伪随机曲线)来说,它的“种子”是c49d360886e704936a6678e1139d26b7819f7e90,产生的参数是:
p = 115792089210356248762697446949407573530086143415290314195533631308867097853951
a = 115792089210356248762697446949407573530086143415290314195533631308867097853948
b = 41058363725152142129326129780047268409114441015993725554835256314039467401291
一个显眼的疑问:这个种子是怎么来的?为何这个种子不是其他某个看起来更加单纯的数字,比如说15?最近揭露的关于美国国家安全局颠覆加密标准的消息中,一个很重要的点就是说这个种子是以某种方式精心选择的,为了以某种只有国安局知道的方法来弱化这条曲线。谢天谢地,回旋余地不是无限的。因为哈希函数的特性,国安局不能先找到一条“弱”曲线然后再去确定种子;唯一的攻击途径是尝试不同的种子,直到最后有一个种子产生了一条“弱”曲线。如果国安局知道知道一个只能影响一条特定曲线的椭圆曲线的漏洞,那么伪随机数参数的产生流程将阻止他们把那个漏洞标准化推广到其他曲线。然而,如果他们发现了一个通用的漏洞,那么那个流程也就不能提供保护了。我们都知道,c49d360886e704936a6678e1139d26b7819f7e90 有可能是美国国家标准技术局尝试过的第10亿个种子。

####幸运的是,比特币使用的不是伪随机曲线

比特币使用了Koblitz曲线。比特币的secp256k1的参数如下:
p = 115792089237316195423570985008687907853269984665640564039457584007908834671663
a = 0
b = 7
就是这样。并且甚至p都是很容易得出来的;它只是2256 – 232 – 977(公平的说,p和a在secp256r1里面也是相当简单的;它的问题出在b)。这些参数的简约,使得国安局和国家标准技术局没有精心创造一条邪恶曲线的余地。并且甚至0、7、还有977这些数值的采用都是基于安全和效率的考虑而采用的。当Dan Brown,他是高效密码学组标准的现任主席,被问及此事时,他回复说:

“我不知道比特币正在使用secp256k1。确实,我对于有人会采用secp256k1而不是secp256r1感到惊讶。”如果secp256r1是事实上的被破解了,那么因为比特币是为数不多的几个采用secp256k1而不是secp256r1的程序,比特币真的是躲过了一颗子弹。

© 著作权归作者所有

上一篇: 比特币地址算法
下一篇: QuickSort & MergeSort
中成才
粉丝 54
博文 128
码字总数 49674
作品 0
海淀
架构师
私信 提问
如何安全存储口令?了解下Hash加盐的原理

最近要开发一个项目,其中涉及到了用户口令存储(大家习惯称之为密码),毫不夸张的说,如果方案设计的不合格,未来再想补救就会困难重重。 以前研究了很多密码学算法,和口令加密有关的算法...

虞大胆
01/30
0
0
密码学-学习资料和网站

我接触密码学有一段时间了,把我收集的资料整理出来,以便后期查阅。另外也给网友一些捷径。 书籍 计算机安全和密码学.Computer.Security.And.Cryptography.pdf 英文版 《深入浅出密码学——...

BjarneCpp
2018/01/09
0
0
密码学基础知识

密码学.png 密码学 推荐书籍 图解密码技术 结城浩 著 周自恒 译 密码学概览 密码学概览图 消息的特性 机密性 完整性 认证 不可否认性 密码算法 密码算法应用场景概览 对称密码 商密算法 国密...

数学角度看生活
2017/06/21
0
0
区块链开发公司浅析区块链如何保障安全

  当下,随着量子技术的逐步成熟,量子计算机也将逐步取代现有的电子计算机 。而现有的、基于传统公钥密码的数字货币将逐步退出历史舞台。   不得不说的是,量子计算的功能虽然强大,但同...

dreamer520
2018/09/18
0
0
AES,SHA1,DES,RSA,MD5区别 

AES,SHA1,DES,RSA,MD5区别 加密 版权声明:本文为博主原创文章,未经博主允许不得转载。 AES:更快,兼容设备,安全级别高; SHA1:公钥后处理回传 DES:本地数据,安全级别低 RSA:非对称加...

法斗斗
2016/05/31
45
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 判断实体类属性是否为空工具类

import org.apache.commons.lang.StringUtils;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * 判断对象是否为空 * @param obj * @return */pub......

骑羊放狼灬
18分钟前
0
0
基于nginx搭建RTMP服务器

安装nginx 下载ngnix源码 git clone https://github.com/nginx/nginx.gitgit clone https://github.com/arut/nginx-rtmp-module.git 编译安装 ./configure --add-module=../nginx-rtmp-mod......

cloudjx
31分钟前
0
0
从 Spark 到 Kubernetes — MaxCompute 的云原生开源生态实践之路

2019年5月14日,喜提浙江省科学技术进步一等奖的 MaxCompute 是阿里巴巴自研的 EB 级大数据计算平台。该平台依托阿里云飞天基础架构,是阿里巴巴在10年前做飞天系统的三大件之分布式计算部分...

迷你芊宝宝
34分钟前
0
0
5个Vue.js项目的模板

开发人员查看使用SPA,Webpack,身份验证,GraphQL,文档和测试的Vue开发人员的资源。 你准备开始一个重要的Vue项目吗?为了确保从坚实的基础开始,您可以使用模板(也就是样板,骨架,起动器...

写字的男孩儿
34分钟前
0
0
epoll 的本质是什么?

从事服务端开发,少不了要接触网络编程。epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。 epoll 很重要,但是...

编辑部的故事
38分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部