好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

单向陷门函数.doc

5页
  • 卖家[上传人]:ji****72
  • 文档编号:35775022
  • 上传时间:2018-03-20
  • 文档格式:DOC
  • 文档大小:71.50KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单向陷门函数单单向向陷陷门门函函数数 (One-way Trapdoor Function)定定义义::一一“可可逆逆”函函数数 F 若若满满足足下下列列二二条条件件,,则则 F 称称为为单单向向陷陷门门函函数数::1.对对于于所所有有属属于于 F 定定义义域域的的任任一一 x,,可可以以很很容容易易算算出出 F(x) = y;2.对对于于几几乎乎所所有有属属于于 F 值值域域的的任任一一 y,,则则在在计计算算上上除除非非获获得得陷陷门门,,否否则则不不可可能能求求出出 x,,使使得得 x = F^(-1)(y),,F^((-1))为为 F 的的反反函函数数但但若若有有一一额额外外数数据据z((称称为为陷陷门门)),,则则可可以以很很容容易易的的求求出出 x = F^(-1)(y)单向函数与单向陷门函数的差异在于可逆与不可逆若单向陷门函 数存在,则任何单向陷门函数均可用来设计公开密钥密码系统同时,若单 向函数满足交换性,则单向函数也可能用来设计公开密钥密码系统1 1..单向陷门函数单向陷门函数1976 年,美国学者 Diffie 和 Hellman 为解决密钥的分发与管理问题发表 了著名论文《密码学的新方向》New Direction in Cryptography,提出一种密 钥交换协议,允许在不安全的媒体上通过通讯双方交换信息,安全地传送秘密 密钥,并提出了建立“公开密钥密码体制”(Public Key)的新概念。

      这篇文章 中提出的公钥密码的思想:若每一个用户 A 有一个加密密钥 ka,不同于解秘密 钥 ka’,加密密钥 ka公开,ka’保密,当然要求 ka的公开不至于影响 ka’的安 全若 B 要向 A 保密送去明文 m,可查 A 的公开密钥 ka,若用 ka加密得密文 c,A 收到 c 后,用只有 A 自己才掌握的解密密钥 ka’对 x 进行解密得到 m当 时他们还没有实现这种体制的具体算法公开密钥密码基于单向陷门函数所谓单向函数,人们认为有许多函数正向计算上是容易的,但其求逆计算 在计算上是不可行的,也就是很难从输出推算出它的输入即已知 x,我们很 容易计算 f(x)但已知 f(x),却难于计算出 x在物质世界中,这样的例子是很普遍的,如将挤出的牙膏弄回管子里要比 把牙膏挤出来困难得多;燃烧一张纸要比使它从灰烬中再生容易得多;把盘子 打碎成数千片碎片很容易,把所有这些碎片再拼成为一个完整的盘子则很难 类似地,将许多大素数相乘要比将其乘积因式分解容易得多数学上有很多函 数看起来和感觉像单向函数,我们能够有效地计算它们,但我们至今未找到有 效的求逆算法我们把离散对数函数、RSA 函数作为单向函数来使用,但是, 目前还没有严格的数学证明表明所谓这些单向函数真正难以求逆,即单向函数 是否存在还是未知的。

      在密码学中最常用的单向函数有两类,一是公开密钥密码中使用的单向陷 门函数、二是消息摘要中使用的单向散列函数单向散列函数在下一章介绍单向函数不能用作加密因为用单向函数加密的信息是无人能解开它的 但我们可以利用具有陷门信息的单向函数构造公开密钥密码单向陷门函数是有一个陷门的一类特殊单向函数它首先是一个单向函数, 在一个方向上易于计算而反方向却难于计算但是,如果知道那个秘密陷门, 则也能很容易在另一个方向计算这个函数即已知 x,易于计算 f(x),而已 知 f(x),却难于计算 x然而,一旦给出 f(x)和一些秘密信息 y,就很容 易计算 x在公开密钥密码中,计算 f(x)相当于加密,陷门 y 相当于私有密 钥,而利用陷门 y 求 f(x)中的 x 则相当于解密1978 年,美国麻省理工学院(MIT)的研究小组成员 Ronald L Rivest、Adi Shamir、Leonard Adleman 提出了一种基于公开密钥密码体制的优秀加密算法 棗 RSA 算法RSA 的取名就是来自于这三位发明者姓氏的第一个字母该算法 以其较高的保密强度逐渐成为一种广为接受的公钥密码体制算法RSA 算法是 一种分组密码体制算法,它的保密强度是建立在具有大素数因子的合数,其因 子分解是 NP(Nondeterministic Polynomial)完全问题这一数学难题的基础上 的,因此 RSA 算法具有很强的保密性。

      RSA 算法研制的最初目标是解决 DES 算法秘密密钥利用公开信道传输分发 困难的难题,而实际结果不但很好地解决了这个难题;还可利用 RSA 来完成对 消息的数字签名以防对消息的抵赖;同时还可以利用数字签名发现攻击者对消 息的非法篡改,以保护数据信息的完整性RSA 算法的保密强度随其密钥的长度增加而增强但是,密钥越长,其加 解密所耗的时间也越长因此,要根据所保护信息的敏感程度与攻击者破解所 要花的代价值不值得和系统所要求的反应时间来综合考虑决定尤其对于商业 信息领域更是如此但是,RSA 同其它数学问题一样,也是存在有条件、有特 例的即在不论其密钥长度如何增加,以及如何选取其加、脱密参数,它至少 存在有 9 个不能被加密的明文消息RSA 算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作 RSA 是被研究得最广泛的公钥算法,普遍认为是目前最优秀的公钥方案之一 RSA 得到了世界上的最广泛的应用,并于 1992 年 ISO 国际标准化组织在其颁布 的国际标准 X.509 中,将 RSA 算法正式纳入国际标准编辑本段什么是什么是 RSARSA 算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。

      RSA 是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一RSA 的安全性依赖于大数的因子分解,但并没有从理论上证明破译 RSA 的难度与大数分解难度等价即 RSA 的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是 NPC 问题RSA 的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密B)分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化目前,SET(Secure Electronic Transaction)协议中要求 CA 采用 2048 比特长的密钥,其他实体使用 1024 比特的密钥这种算法 1978 年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法它易于理解和操作,也很流行算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和 Leonard AdlemanRSA 算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

      RSA 的算法涉及三个参数,n、e1、e2其中,n 是两个大质数 p、q 的积,n 的二进制表示时所占用的位数,就是所谓的密钥长度e1 和 e2 是一对相关的值,e1 可以任意取,但要求 e1 与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1n 及 e1),(n 及 e2)就是密钥对RSA 加解密的算法完全相同,设 A 为明文,B 为密文,则:A=B^e1 mod n;B=A^e2 mod n;e1 和 e2 可以互换使用,即:A=B^e2 mod n;B=A^e1 mod n;编辑本段一、一、RSA 的安全性的安全性RSA 的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 RSA 就一定需要作大数分解假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法目前, RSA 的一些变种算法已被证明等价于大数分解不管怎样,分解 n 是最显然的攻击方法现在,人们已能分解多个十进制位的大素数因此,模数 n 必须选大一些,因具体适用情况而定编辑本段二、二、RSA 的速度的速度由于进行的都是大数计算,使得 RSA 最快的情况也比 DES 慢上好几倍,无论是软件还是硬件实现。

      速度一直是 RSA 的缺陷一般来说只用于少量数据加密编辑本段三、三、RSA 的选择密文攻击的选择密文攻击RSA 在选择密文攻击面前很脆弱一般攻击者是将某一信息作一下伪装( Blind),让拥有私钥的实体签署然后,经过计算就可得到它所想要的信息实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:( XM )^d = X^d *M^d mod n前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用 One-Way HashFunction 对文档作 HASH 处理,或同时使用不同的签名算法编辑本段四、四、RSA 的公共模数攻击的公共模数攻击若系统中共有一个模数,只是不同的人拥有不同的 e 和 d,系统将是危险的最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那么该信息无需私钥就可得到恢复设 P 为信息明文,两个加密密钥为 e1 和 e2,公共模数是 n,则:C1 = P^e1 mod nC2 = 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’,而无需分解模数解决办法只有一个,那就是不要共享模数 nRSA 的小指数攻击 有一种提高 RSA 速度的建议是使公钥 e 取较小的值,这样会使加密变得易于实现,速度有所提高但这样作是不安全的,对付办法就是 e 和 d 都取较大的值编辑本段五、五、RSA 加密算法的缺点加密算法的缺点1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密2)安全性, RSA 的安全性依赖于大数的因子分解,但并没有从理论上证明破译 RSA 的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是 NPC 问题目前,人们已能分解 140 多个十进制位的大素数,这就要求使用更长的密钥,速度更慢;另外,目前人们正在积极寻找攻击 RSA 的方法,如选择密文攻击,一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。

      然后,经过计算就可得到它所想要的信息实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:( XM )d = Xd *Md mod n前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用 One-Way Hash Function 对文档作 HASH 处理,或同时使用不同的签名算法除了利用公共模数,人们还尝试一些利用解密指数或 φ(n)等等攻击.3)速度太慢,由于 RSA 的分组长度太大,为保证安全性,n 至少也要 600 bitx 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.