OAEP--最优非对称加密填充
Posted AnWen~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OAEP--最优非对称加密填充相关的知识,希望对你有一定的参考价值。
OAEP–最优非对称加密填充(二)
<下节内容,RSA-OAEP的安全性证明>
大量对教科书式加密算法的攻击都是这样采样一种通用技术:篡改密文从而以一种可控的方式修改相应的明文。
OAEP变换是把密码学杂凑函数和一个著名对称密码算法结构结合起来构造的。OAEP构造可以看成是一个两轮Feistel密码,第一轮使用杂凑函数G,第二轮使用杂凑函数H,代替Feistel密码的“s盒函数”,但这里的两个“s盒函数”不是加密钥,而且两个半分组的大小可以不同。
正因为OAEP有良好的代数特性,具有逐比特的代数特性:因此,如果Malice想通过篡改密文,都会导致明文的改变是不可控的,因为使用了杂凑函数,在保证杂凑函数的安全性下(比若说单向性、抗碰撞性等),很难找到一个有效的hash值,其对应的明文是有效的。这种改变是由于破坏了增加到明文消息中的冗余。
【换种说法:如果攻击者试图以适应性的方式修改密文,那么数据完整性检验将以“压倒性”概率失败,并且解密结果为一条没有任何意义的明文。】
其次,除了上面RSA-OAEP保护了选择密文攻击下的安全性,值得注意的是,该算法提供的数据完整性保护很奇特,当解密者Bob看到解密后明文的k1个0的传之后,能够确信一点的就是,密文没有 被修改过,但是Bob却永远不知道该消息的发送者。(这里可以想想,怎么才可以保证知道消息的发送者?答:可以用消息发送者的私钥对整个密文进行加密)
这种公钥加密体制在抗击CCA2的公钥密码系统中,解密过程还能保证数据的完整性验证,可以说这种密码系统内是“无懈可击的”。即便是下面的极端攻击形式:
攻击者和目标用户进行询问-应答的模式。攻击者可以自由的向公钥拥有者发送任意多的“选择适应性密文”的消息,要求目标用户以预言机-服务的方式进行解密,意思就说解密是正确的,不会故意解密错的明文发给攻击者。当然,目标用户也不是真的傻,自己也有一定的识别能力,不会帮助解密之前刚发出的密文。
当OAEP所基于的陷门单向置换f是单向安全时,f-OAEP在随机语言机模型下可证明达到适应性选择密文攻击下的不可区分性(IND-CCA2).
RSA-OAEP是一个非常成功的公钥加密方案,也被著名的Internet电子商务协议SET选中。
OAEP的加密方案的形式化证明——要基于一个非常有效的技术,随机语言机模型(ROM),这种证明假设OAEP中使用的杂凑函数的性能完全和随机函数一样在随机预言机假设下,也就是当在填充中使用的杂凑函数是随机语言机时,填充的输出,即函数 f 输入,确实服从均匀分布。
对于RSA-OAEP加密方案的基于随机语言机模型的证明,目标是:构造一个有效的变换(归约),将对OAEP的加密方案的攻击优势转换为该方案中解决RAS问题(实际上,就是解决公钥e求逆的问题,在转换,就是对模数n进行因子分解—大整数分解的问题)的优势,因为人们普遍相信不存在有效的算法求解大整数分解的问题,所以可以认为这种有效的归约导致了一个矛盾,这种构造证明----称为归约为矛盾。
随机语言机是一种强大的虚拟函数,他是确定性的、有效的,而且它的输出服从均匀分布。Bellare和Rogaway在证明OAEP的安全性时,就利用了随机语言机的这些性质,,证明模型也就称为------随机语言机模型
在证明过程中,使用了一个特殊的代理—Simon仿真器【通过模拟攻击者的工作环境,来满足攻击者的所有假设和要求】,以某种方式仿真每个人的随机语言机行为。所以当某个人对某个值应用一个随机语言机时,比如,输入a,应用G,得到G(a)(eg:求哈希运算),就可以对Simon做一个所谓的随机语言机提问,Simon总是诚实的遵守从任意次序的提问,并且按时返回正确的结果。只要每个人都遵守只提问Simon的随机语言机这个规则,Simon就可以很容易地而且完全精确地仿真该随机语言机地行为。
对于预言机G,Simon要维护一个G表,包含所有的(a, G( a ) ),a是在G地整个历史中被提问过的值。仿真工作很平凡:对于每一个提问a,Simon检查a是否在表中,如果在,他就将G( a )作为提问的结果返回;否则,他在G的值域范围内均匀随机地选择一个新值作为G(a),将这个新值作为提问结果返回,并将(a, G ( a ))对记录在表中。没有必要使用排序算法,因为开始时每个表都初始化为空,然后随着提问地增加而增加。对于每一次地提问,在N个排过序地元素中查找都可以在logN时间内完成。
在RSA-OAEP中,这种仿真随机语言机地方法使得Simon可以在明文和密文之间构造一个一一映射地关系。
现在,如果一个攻击者Malice,使用 f 构造一个有效地选择密文,那么只要Malice在构造 c 时使用过Simon地随机语言机服务,Simon就可以“解密”这个 c ,即使Simon没有对 f 求逆地陷门信息。【这是因为Simon在他仿真随机语言机地表中有这对明-密文对。只要密文是合法的,该明文一定在这个表中。】,所以说Simon既有仿真随机语言机的功能,又有仿真解密预言机的功能,即“特殊代理”。
仿真“解密”能力使得Simon可以在IND-XXX(XXX为CPA、CCA1、CCA2)游戏中,为Malice提供一个正确的“密码分析训练课程”,那么作为一个成功的攻击者,Malice就必定以一个不可忽略的优势,在足够的时间内(PPT)攻破加密方案而结束【在IND-XXX游戏中,将两个选择明文之一与询问密文联系起来而游戏结束】。当然,拥有随机语言机的Simon也会因为这一条询问密文成功求得密码函数的逆而结束,并且该明文-密文询问的结果也会出现在他的随机语言机的一个表中。
以上的内容只是针对存在随机语言机的世界。也有作者说明了,这种基于ROM的证明技术是个很好的试验台。如果在现实世界中,使用的杂凑函数(为随机函数)没有“明显的”缺点,那么使用他们的理想化模型对方案的安全性进行验证,仍然是有效的。
【【参考书】】毛文波. 现代密码学理论与实践
【此内容是阅读该书做的笔记,某些地方有自己的理解,仅供参考!!】
以上是关于OAEP--最优非对称加密填充的主要内容,如果未能解决你的问题,请参考以下文章