第29课 密码学算法(二)之 RSA.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第29课 密码学算法(二)之 RSA.doc

第29课 密码学算法(二)之 RSA ******************************************************************************* 预备理论知识(比较枯燥): RSA算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以三个发明者的名字命名:Ron Rivest、Adi Shamir和 Leonard Adleman。RSA的基础是数论的欧拉定理,它的安全性依赖于大数因数分解的困难性。但 RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。 RSA密码系统为每个用户分配两对密钥(公钥和私钥),即公钥(e,n)和私钥(d,n),其中(e,n)用于加密报文,(d,n)用于解密报文,广泛应用于加密和数字签名方面,如现在已延伸到电子纳税申报,公钥或者私钥都可用作加密。 RSA加密算法的过程是: (1)取两个素数 p和 q(保密); (2)计算 n=p×q(n称为模数,公开), φ( n)=(p一1)×(q一1)(保密); (3)随机选取整数e(e称为公钥,公开),且满足gcd(e,φ( n))=1 (即e与(p一1)×(q一1)互素); (4)计算 d,满足 de=1(modφ( n))(d称为私钥,保密)。 利用RSA加密,第一步需要将明文数字化,并取长度小于lg2n位的数字做明文块。 加密算法 C=E(M)=Me (mod n),其中,M为明文,C为密文。 解密算法M=D(C)=Cd (mod n),用私钥d对密文C解密,得到明文M。 例如:假定用户A要将明文“HI”加密传递给用户 B,则 B可以取两个素数 p=5和q=11(保密);计算 n=p×q=5×11=55(公开,公钥),φ( n)=(p一1)×(q一1)=4×10=40(保密);随机选取整数 e=3(公钥),满足 gcd(e,φ( n)) =1;由de=1(modφ( n))得 d=27(保密,私钥)。因为,27×3 mod 40=81 mod 40=1 利用 RSA加密,第一步需要将明文数字化 ,假定 A、B统一明文编码方式为空格=00,A=01,B=02,C=03,...Z=26,则明文数字化HI为08、09,A用 B的公钥(3,55)将数字化明文信息由C=E(M)=Me (mod n)=83mod55、93mod55,加密得密文信息为 l7、l4。用户 B收到密文信息由M=D(C)=Cdmod n=1727mod55、1427mod55解密得O8、O9,将其转化为明文“HI”。 (3)解密: M=Cdmod n,用私钥d对密文C解密,得到明文 M 。 ******************************************************************************* [例1] dihux的keygenme1.exe 读程序的“关于”,写明为RSA200,但这是crackme。我们所对付的一般程序是不会告诉你所采用的密码学算法的,我们需要自己用鼻子把她的气息闻出来、嗅探出来。 用peid扫描目标程序,用kanal插件分析,如图1 图1 kanal扫描的结果 点“Export”按钮,将扫描结果保存为文件,如下: Crypto name :: File offset :: Virtual address 密码 文件偏移RVA VA内存虚拟地址 BASE64 table :: 00001BEE :: 004041EE BigLib BigMod ::::BigLib BigPowMod ::::{Big number} :: 00001A1F :: 0040401F BigPowMod可以看出,采用了RSA算法。同时,明确地告诉我们,编程时采用了BigLib库。 下面,用IDA Pro打开目标程序,利用图2的字符参考 图2 字符参考 很容易来到这里,即图3 图3 很难看出程序在干什么,可读性极差。下面按如图4所示的菜单操作 图4 图5 选取biglib 程序代码变为图6: 可读性大大提高。关键代码如下: xor ecx, ecx .text:004010DA .text:004010DA loc_4010DA: ; CODE XREF: DialogFunc+BDj .text:004010DA push 0 .text:004010DC cal

文档评论(0)

cai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档