RSA算法的攻击与防范
2023-10-01
来源:步旅网
计算机光盘软件与应用 工程技术 Computer CD Software and Applications 2010年第6期 RSA算法的攻击与防范 李世晓 (中原3-学院,郑州450007) 摘要:作为对典型的公钥密码算法,RSA算法在信息安全领域得到了广泛的应用,但是其安全性却一直是学者们议 论的话题。本文首先介绍RSA公钥加密算法的工作原理,对RSA算法的缺陷以及对其所可能遭受的攻击进行分析,最后 讨论了针对RSA算法攻击的防范措施。 关键词:公钥密码算法;RSA算法;缺陷;攻击;防范 中图分类号:TN918.1 文献标识码:A 文章编号: Attacking&Prevention of RSA Algorithms Ll Shixiao (Zhongyuan University of Technology,Zhengzhou 450007,China) Abstract:As the typical pubfic—key algorithms,RSA algorithms has been widely applied in the field of information security,but its securiy thas been among the scholars.This paper first introduces the heory tof the RSA public—key encryption algorithm,and then,analysis the defects of the possible attacking,inalfly,discusses he atttacking preventive measures for RSA algorithms. Keywords:Public-key algorithms;RSA algorithms;Defects;Attacking;Prevention 引言 计算机和互联网络的飞速发展使世界范围内信息的传递变 得越来越方便,同时,也带来了保障信息安全的新问题。而密码 学理论和技术的研究与应用,为保证信道中信息的安全传输奠定 了基础。 现代密码体制主要分为私钥密码体制和公钥密码体制,其中 私钥体制又称单钥体制或对称密码体制,其加密密钥和解密密钥 相同,密钥严格保密:公钥体制又称双钥体制或非对称密码体制, 其所用的加、解密钥不同,加密密钥公开,解密密钥不公开,适 用于开放的使用环境。1976年Diffie和Hellman发表了《密码 学的新方向》一文,首次提}±{了公开密钥的密码学,即公钥密码 学,打破了长期使用单密钥体制的束缚。 目前比较流行的公钥密码算法主要有两种:一类是基于大素 数因子分解问题的,其中最典型的代表就是RSA公钥密码算法; 1977年R.L.River,A.Shamir和L.Adleman3人其同提出了RSA 算法,并很快成为了一种典型的公钥体制密码算法。另一类是基 于离散对数问题的,如ELGamal公钥密码算法和椭圆曲线公钥密 码算法等。 二、RSA算法简介 RSA公钥加密算法是1978年由美国麻省理工学院(MIT)的 Rivest、Shamirh和Adleman共同提出的,它是目前最有影响力 的公钥加密算法。RSA算法基于一个非常简单的数学难题:将两 个大素数相乘十分容易,但想要对其乘积进行因式分解却非常困 难,用很简单的形式实现了非常可靠的密码算法。RSA的安全性 依赖于大数的因子分解,而大整数因子分解问题是数学上的著名 难题,至今没有有效的方法予以解决,因此能够确保RSA算法的 安全性。 RSA算法是目前最优秀的公钥方案之一,除加密功能外,公 钥系统还用于身份验证(Authentication)或数字签名(Digital Signature),因此它为公用网络上信息的加密和鉴别提供了一种 基本的方法。大多数使用公钥密码进行加密和数字签名的产品和 标准使用的都是RSA算法。它通常是先生成一对RSA密钥,其中 之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开, 甚至可在网络服务器中注册,人们用公钥加密文档发送给个人, 个人就能够用私钥解密接受。 三、RsA的算法描述 (~)RSA算法密钥的产生 1.选两个大的素数P,q(保密): 2.计算n=p*q(公开),欧拉函数 (n)=(p一1),:(q-1):l 3.随机选取e作为公钥(加密密钥),满足gcd(e, (n))=1(公 开): 4.计算私钥d(解密密钥),满足ed l(mod(中(n))),即 一、5.销毁p,q及中(n): 6.得到所需的公开密钥和保密密钥。 公开密钥:EK={e,n): 保密密钥:DK=(d,n); (二)RSA算法加密和解密变换 首先将明文分块并数字化,每个数字化的明文的长度不大于 [ 2n],然后对每个明文块m(O≤m≤n)一次进行加解密变换: 1.加密变换:使用公钥e和明文m,获得密文c-=me(-modn) 2.解密变换:使用私钥d和密文C,获得明文m cd(modn) 四、RSA算法的缺陷 RSA密码算法作为公钥密码体制的代表被广泛地应用于现代 信息安全的各个领域,它的安全性的理论基础是大素数的因子分 解问题,此问题至今没有很好的算法,但是它本身却存在着一些 缺陷,综合来说,RSA算法的不足或者缺陷主要包括: (一)RSA算法所要求的n,P,q都要求为很大的整数或素数, 实现时采用的是重复平方求模和相乘后求模的迭代方法来实现, 此方法在进行数据加密时耗费时间过长。 (二)RSA算法中所用的P,q如果太接近的话,密码分析者 可以通过计算 ,然后在 附近搜索P,q来分解n。 (三)对于一个明文消息m(O≤m<n),如果将其加密成m自 身,称m为RSA的不动点,也成m为未隐匿的消息。对RSA算法来讲 其不动点的个数为(1+gcd((e—1),(p+1))) (1+gcd((e—1), (q-1))。由于e—l,p-1,q-1都是偶数,所以RSA不动点的个数至 少为9个。 (四)同态性。由RSA算法知对于一切X1,x2∈Zn,有Ek(xl, x2)-=Ek(-x1)Ek(modn)是RSA算法的一个缺陷,因为攻击者知道 Cl,C2的明文,就可以知道CIC2(modn)对应明文mlm2(modn)。 基于以上的缺陷,攻击者想来对RSA算法进行攻击的一系列 攻击方法,其中最常用的攻击方法有因子分解攻击、选择密文攻 击、同模攻击、小指数/指数攻击、迭代循环攻击、定时攻击等。 五、常见的RSA攻击方法 (一)因子分解攻击 易知,若n=pq被因子分解,则可以得到p(n)=(p-1)¥(q-1)的 值,从而利用ed l(mod( (n)))解出d。较早出现的因子分解 攻击方法是试除法,即通过尝试小于n的所有素数,来找到因子。 这种办法理论上是有效的,但对于大数n,由于要花费更多时间 使其变得不可能完成。 由于因子分解的时间复杂性并未降到多项式时间,所以仍是 个计算上的难题。但是随着计算速度的提高,分解的速度会越 来越快,2002年人们成功分解了RSA-158。 一(二)选择密文攻击 eid—l(mod(中(n)): 选择密文攻击是通过骗取掌握私钥者的签名实现攻击。假设 攻击者截获了密文y,想得到明文X,可以采用如下方法:选择一 个随机数r,r<n,然后使用收件人的公钥加密r,假设得到的中 计算机光盘软件与应用 2010年第6期 Computer CD Software and Applications 文。 工程技术 间结果为t,显然t=r (modn);然后着将中间结果t与截获的密文 相乘,假设得No,0=t*Y(modn),想办法骗取收件人用私钥d对0 进行签名,假设签名后的结果为u,u=0(modn),得Nu后,攻击 者计算值f=r一 (modn),结合u就可以计算出明文x。 (三)共模攻击 共模攻击是由于在RSA体制的实现过程中,不同用户使用相 同的模n、不同的指数值e和d所引起的。由于出现这种情况可能 导致下列三个主要问题,所以会使得系统变得不再安全。 1.若相同的明文分送给两个不同的使用者,且此二使用者的 公开密钥为互素,则此系统并不安全。 2.拥有一对的加/解密密钥就能因子分解n。 3.拥有一对N/解密密钥,能在不必分解n的情况下,求出另 一(四)通过常数取幂时间,随即延时,在加密前对数据做盲 化处理盲化等方法对定时攻击进行防范。 七、结束语 RSA算法是第一个能同时用于加密和数字签名的算法,也是 被研究得最为广泛的公钥算法,从1978年提出到现在的三十多年 里经历了各种攻击的考验,被认为是目前最优秀的公钥方案之 但是,RSA的安全性还需要不断的研究和改进,这就使得我 们在应用时既要注意使用安全和环境安全,发挥RSA自身的优势, 同时也要重视多种密码体制并用,不断研究和发现新的密码体 制,来满足人们的通信安全保密需求。 一。参考文献: 对加解密密钥。 (四)小指数攻击 【lit开澄.f计算机密码学(第2版)fM】.北京:清华大学出版社,1998 [2]洪帆,崔国华,付小青.信息安全概论【M】.武汉:华中科技大学出 版社.2005 从计算速度角度考虑,公钥指数e越d,2n密速度越快。可是, 当明文也很小时就会出现问题。比如我们取e=3,明文xd,于N的 三次方,密文y=X (modN)=x (modN)=x。,这样直接对密文y开三次 方就会得到明文X。 (五)定时攻击 定时攻击主要针对RSA核心运算是非常耗时间的模乘,只要 能精确监视RSA的解密过程,获得解密时间,就可以估算出私有 密钥d。模指数运算是通过一位一位来计算的,每次迭代执行一 次模乘,并且如果当前位是l,则还需要进行一次模乘.对于有 些密码,后一次模乘执行速度会极慢,攻击者就可以在观测数据 解密时,根据执行时间判断当前位是1还是0。 六、RSA算法的防范 针对RSA算法的固有缺陷和对RSA算法的常见攻击方法,我们 可以采取以下几种措施对其进行防范: (一)为了保证安全性,在选取P、q时使用较大的素数,因 式分解理论的研究现状表明:使用RSA密钥至少需要1024比特, 才能有效的保证攻击者无法在短时间破解得到因子。 (二)通过设计新的素数生成方案,保证为每一用户生成不 同的大素数,从而消除用户共模,避免系统遭受共模攻击。 (--)公钥e不可选得过小,使攻击者很难通过开方得到密 【3】赵胜,孙永道.RSA公开密钥加密算法解析 硅谷,2008(11):56 7 『4]car]isle Adams,Steve Lloyd.公开密钥基础设施——概念口标准 和设施fM1.北京:人民邮电出版社,2001 【5】陈彦学.信息安全理论实务【M1.北京:中国铁道出版社,2001 [6](美)Brace Schneierm-网络信息安全的真相[M】.北京:机械工业出 版社.2001 f7】杨先伟.分析RSA的攻击与陷门田.烟台职业学院学 报,2007,3:84—87 [8】谢朝海.RSA密码攻击进展卟信息网络安全,2007,1 [9】邹惠,余梅生,王建东有效解决RSA共模攻击的素数生成方案 D】计算机工程与应用,2004,27:88—89 [1O】董青,吴楠.整数质因子分解算法新进展与传统密码学面临的 挑战U1.计算机科学,2008,8:71—91 作者简介 李世晓(1981一),男,汉族,河南巩义人,助理电气工程师,在 读硕士研究生,主要研究方向:网络安全,主机取证。 基金项目:河南省科技攻关计划项目(0g2lO2310038) (上接第45页) (一)out.tr文件 NS2生成的out.tr仿真过程记录文件.完整记录了封包在模 拟网络中的传输过程。out.tr的部分记录如下: +awk程序中针对out.tr仿真过程记录文件的配置部分如下。 action=¥l: time=¥2: from=S3: to=¥4: type=S5: pktsize=¥6: flow id=¥8: src=¥9: ‘ ’0.1 l 2 cbr 10000.1 l 2 cbr 1000一一一一一一…一2 1.O 3.1 一 2 1.O 3.1 一2 1.O 3.1 一2 1.0 3.1 一2 1.O 3.1 +—O.1O8 l 2 cbr 1000一0.1O8 l 2 cbr 1000一R 0.114 l 2 cbr 1000…out.tr文件格式如图2所示。 Event Time From To Ph Pl(t Flags id Src Dst Seq Pl(t node node type size addr addr nurn id 图2 dst=¥10: seq—no=¥11: packet_id=¥12: 四、结语 字段1表示封包事件发生的原因:字段2表示事件发生的时 间;字段3和4表示事件发生的地点;字段5表示封包的类型; 字段6是封包的大小;字段7是封包的标记标注;字段8表示封 包所属的数据流:字段9和10表示封包的来源和目的端;字段 l1表示封包序号;字段l2表示封包的id。 (二)awk语言 对于out.tr的分析通常是使用awk语言,执行awk时,它 会反复进行下列4个步骤。 自动从指定的数据文件中提取一笔数据。 自动更新相关的内建变量的值。 逐次执行程序中所有的“Pattern{Action}”指令。 当执行完程序中所有“Pattern{Action}”时,若数据文件 中还有未读取的数据,则反复执行步骤(1)至步骤(4)。 通常要分析网络性能指标包括有端点到端点的延迟,抖动 率,封包遗失率,吞吐量等。 本文提出使用网络模拟的方法对TCN实时协议在异构网络上 运行这一问题进行研究,介绍了使用NS2仿真软件对TCN实时协 议进行仿真研究的一般流程以及数据分析的方法。使用网络模拟 的方法可以自由灵活的配置出模拟网络环境,为工作人员在列车 上配置通信设备和协议功能时提供试验数据以供参考。 参考文献: 【1]The Network Simulator—ns一2[EB/OL]. [2]IEC 613751—1999.Part 1:Train Communication Network 1999 【3】李常贤,谢步明.TCN通信技术的自主研发Ⅱ】.机车电传 动,2006.2 作者简介 欧阳敬原(1986一),男,江西人,华东交通大学在读硕士,研究 方向:电力电子及电力传动