转载:【密码学】可证明安全:随机预言机模型 和 标准模型
随机预言机模型:
在安全证明中,随机预言机模型通常是现实中哈希函数的理想化的替身。哈希函数是一个输入为任意长度,输出为固定长度的函数,除此之外还满足一些其它特性,例如单向性,抗碰撞性等。随机预言机的概念起源于Fiat和Shamir的把哈希函数看为随机的函数的思想,然后进一步由研究者Bellare和Rogaway转化为随机预言机模型。
在随机预言机模型下,通常设计一个方案并证明是安全的;而在方案的实际执行时,用具体的哈希函数来替换方案中的随机预言机。 应该指出,在随机预言机模型下证明安全的方案在实际具体实现中未必是安全的。
随机预言机是一种散列函数,我们可以把它理解为具有以下特性的完美的散列函数:
1)一致性:对于相同的输入,其输出必然相同;
2)可计算性:输出的计算可以在多项式时间内完成;(多项式时间:在计算复杂度理论中,指的是一个问题的计算时间m(n)不大于问题大小n的多项式倍数。任何抽象机器都拥有一复杂度类,此类包括可于此机器以多项式时间求解的问题。)
3)均匀分布性:预言机的输出在取值空间内均匀分布,无碰撞。
在随机预言机模型中,假定敌手不会利用散列函数的弱点来攻击密码学方案。
标准模型:
不依赖随机预言机的模型,称为标准模型。一般指所设计的方案(如果使用了哈希函数)在证明时, 仅使用了现实中哈希函数可以实现的特性,那么可以认为是标准模型。第一个标准模型下可证明安全的高效的公钥加密课题在1998年由Cramer和Shoup[101]提出,随后大部分研究者的兴趣转向了设计标准模型下可证明安全的方案。
随机预言机模型与标准模型的关系:
标准模型下,敌手只受时间和计算能力的约束,而没有其他假设,如果在此条件下, 可以将密码学方案归约到困难性问题上,则称为该归约是基于标准模型的,也称 方案具有在标准模型下的可证明安全性。然而在实际中,很多方案在标准模型下建立安全性归约是比较困难的,也就是难于证明在安全模型下的安全性。 因此为了降低证明的难度,往往在安全性归约过程中加入其他的假设条件,就变成了随机预言机模型。
随机预言机虽然广泛应用与密码学方案的证明,为可证明安全提供了很大的方便,但人们对随机预言机模型下的安全性证明的有效性仍存在争议的。随机预言机是一种过于理想的假设,要求敌手不利用散列函数的弱点(在现实中,散列函数是确定的, 其输出并不能保证是完全随 机且均匀分布的)来对方案进行攻击。因此在随机预言机模型下安全的一些方案,在使用真实的散列函数之后,就不再安全了。尽管如此,基于随机预言机模型的安全证明除了散列函数外的环节都可以达到安全要求,目前大多数的可证明安全方案也是基于随机预言机模型的。因此,随机预言机模型仍被认为是可证明安全中最成功的应用。
原文链接:https://blog.csdn.net/a359680405/article/details/44084067
原文地址:https://www.cnblogs.com/whyaza/p/15040429.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python-opencv】图像上的算术运算
- 个人珍藏的80道多线程并发面试题(11-20答案解析)
- 【python-opencv】性能衡量和提升技术
- 【python-opencv】转换颜色空间
- 七夕,当然少不了纯CSS的点缀啦
- PHP中的垃圾回收相关函数
- 【python-opencv】图像几何变换
- redis keys和scan命令
- 分数排名
- 【python-opencv】图像平滑
- 逃逸安全的模板沙箱(一)——FreeMarker(上)
- JVM面试题
- 【python-opencv】形态转换
- Netgear Nighthawk R8300 upnpd PreAuth RCE 分析与复现
- 【python-opencv】图像梯度