RSA详解
精选 转载 其实是在用到PHP一个函数md5_file()的时候看到RSA算法的,之后发现我们公司的Token上写着RSA。百度一下,发现好多好多这方面的文章,这里其实算是一个整理,给想要了解这个算法的同学一点集中的学习资料,一站式学习:)
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
安全性
RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。
这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。
RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数( 大于 100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。
密钥对的产生。选择两个大素数,p 和q 。计算:
n = p * q
然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。最后,利用Euclid 算法计算解密密钥d, 满足
e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )
其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。
加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。对应的密文是:
ci = mi^e ( mod n ) ( a )
解密时作如下计算:
mi = ci^d ( mod n ) ( b )
RSA 可用于数字签名,方案是用 ( a ) 式签名, ( b )式验证。具体操作时考虑到安全性和 m信息量较大等因素,一般是先作 HASH 运算。
RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。
若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该信息无需私钥就可得到恢复。设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则:
C1 = P^e1 mod n
C2 = P^e2 mod n
密码分析者知道n、e1、e2、C1和C2,就能得到P。
因为e1和e2互质,故用Euclidean算法能找到r和s,满足:
r * e1 + s * e2 = 1
假设r为负数,需再用Euclidean算法计算C1^(-1),则
( C1^(-1) )^(-r) * C2^s = P mod n
另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。解决办法只有一个,那就是不要共享模数n。
RSA的小指数攻击。 有一种提高RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。但这样作是不安全的,对付办法就是e和d都取较大的值。
RSA的边信道攻击
目前国内外防范公钥密码边信道攻击主要以牺牲效率为代价。公钥密码的实现效率一直是信息安全系统的应用瓶颈,进一步损害算法效率,必将造成信息系统性能恶化。因此,寻找高效又抗功耗分析的公钥算法实现途径,并结合其他层面抗攻击手段,使密码器件运行效率、功耗、面积等综合因素实现最优化,无疑是极富挑战性的课题,不仅对抗边信道攻击理论研究有重要价值,而且对广泛应用的智能卡(尤其是银行卡、手机SIM或USIM卡)、各种硬件密码电子设备、有时也包括软件实现的密码算法的安全应用无疑具有极大的现实意义。
边信道攻击以功耗分析和公钥密码为研究重点,在对各种类型、系列、型号、规模的基本电路运行过程中的功耗轨迹进行大量研究、掌握其变化规律的基础上,继续研究电路工艺、结构、算法、协议对功耗轨迹的影响,经过一系列处理,从中提取出密钥信息。目标是针对功耗分析攻击机理,提出抗功耗分析的综合优化新方法,并尽量兼顾算法效率。
边信道攻击研究涉及密码学、信息论、算法理论和噪声理论,还涉及硬件电路设计、通信、信号处理、统计分析、模式识别等诸多技术。
目前,边信道攻击在若干关键问题研究上已取得了实质性进展。
目前国内已经有大学的研究者提出了公钥密码等功耗编码的综合优化方法,佐证了安全性和效率的可兼顾性。截至目前,研究团队已针对著名公钥密码算法RSA的多种实现算法和方式成功实施了计时攻击、简单功耗和简单差分功耗分析攻击,实验验证了多种防御方法,包括 “等功耗编码”方法的有效性,并完成了大规模功耗分析自动测试平台的自主开发。
RSA 公司
1982年,里弗斯特(Rivest)、沙缪尔(Shamir)和阿多乐曼(Adleman)三个创始人正式成立了RSA Data Security。
2006年9月,RSASecurity被EMC公司(1979年成立)收购,成为RSA,EMC安全事业部。收购RSA的同时,EMC还收购了NetworkIntelligence,为RSA带来了行业领先的信息安全和事件管理(SIEM)解决方案,并将其整合到RSA事业部。
RSA的业务有四块:
一是身份认证,RSA的双因认证技术,是全球最安全的身份认证技术。所谓双因素认证,是除了传统的静态密码保护,再加一个动态密码。动态密码由专门的硬件令牌生成,每分钟改变一次;认证服务器上基于同样的密码算法,每分钟生成一次密码。用户必须手里有硬件令牌,才能提供正确的密码,从而提高了安全性。
前面提到的反网络欺诈是第二块。
第三块是信息安全与事件管理。当前,主要客户是上市公司。用专门的设备搜集整个IT系统的设备日志,包括网络、服务器、存储等多个方面,并对这些日志进行自动分析,发现安全漏洞。
第四块是防数据丢失。可以发现、监测和保护企业的敏感数据,无论在数据中心、网络还是终端上都不被丢失、泄漏或滥用。
参考:百度百科
上一篇:php开源CMS总汇
下一篇:PHP里的instanceof
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
RSA算法详解
文章目录什么是RSARSA的加密RSA的解密N,E,D的生成1. 生成N2. 求L3. 求E4. 求D破解RSA 什
blockchain 加密解密 密码学 区块链 加密算法 -
RSA加解密&RSA加验签详解
RSA 是第一个能同时用于 数据加密 和 数字签名 的算法。签名(认证):私钥签名,公钥/公钥证书验签加解密:公钥加密 私钥解密
rsa PKCS#8 pkcs8 x509 X.509 -
详解 RSA 非对称加密
前言随着互联网越来越渗透入我们生活的方方面面,各种私密信息在网络中传框架...
java python 区块链 安全 密码学 -
密码学_RSA算法原理详解
在一起组成的。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被I
rsa 密码学 算法原理 公钥加密 群论

















