密码学归约证明——哈希签名范式的安全性
1. 哈希碰撞发现实验HashcollA,H(n)Hashcoll_{A,H} (n)HashcollA,H(n)
- 产生密钥s←Gen(1n)s\leftarrow Gen(1^n )s←Gen(1n);
- 敌手AAA输入sss并输出xxx和x′x'x′;
- 当且仅当x≠x′x\neq x'x=x′且Hs(x)=Hs(x′)H^s (x)=H^s (x')Hs(x)=Hs(x′),实验输出111。
2. 抗碰撞散列函数CRHF
\qquad对任意的多项式时间敌手AAA,存在可忽略函数neglneglnegl,满足Pr[HashcollA,H(n)=1]≤negl(n)Pr[Hashcoll_{A,H} (n)=1]\leq negl(n)Pr[HashcollA,H(n)=1]≤negl(n),则哈希函数HHH是抗碰撞的。
3. 数字签名实验SigforgeA,Π(n)Sigforge_{A,\Pi} (n)SigforgeA,Π(n)
- 获得公钥私钥(pk,sk)←Gen(1n)(pk,sk)\leftarrow Gen(1^n )(pk,sk)←Gen(1n);
- 将pkpkpk和访问预言机Sign(⋅)Sign(\cdot )Sign(⋅)的权利交给敌手AAA。敌手输出(m,σ)(m,\sigma)(m,σ)。设QQQ为AAA的问询集合。
- 当且仅当Vrfypk(m,σ)=1Vrfy_{pk} (m,\sigma)=1Vrfypk(m,σ)=1且m∉Qm\notin Qm∈/Q时,实验输出111。
\qquad若对于任意的多项式时间敌手,存在可忽略函数neglneglnegl,使得Pr[SigforgeA,Π(n)=1]≤negl(n)Pr[Sigforge_{A,\Pi} (n)=1]\leq negl(n)Pr[SigforgeA,Π(n)=1]≤negl(n),则称此数字签名方案是CMACMACMA安全的。
4. 哈希签名范式
设Π=(GenS,Sign,Vrfy)\Pi=(Gen_S,Sign,Vrfy)Π=(GenS,Sign,Vrfy),ΠH=(GenH,H)\Pi_H=(Gen_H,H)ΠH=(GenH,H),定义签名方案Π′\Pi'Π′:
- Gen′Gen'Gen′:s←GenH(1n)s\leftarrow Gen_H (1^n )s←GenH(1n),(pk,sk)←GenS(1n)(pk,sk)\leftarrow Gen_S (1^n )(pk,sk)←GenS(1n)。令pk′=⟨pk,s⟩pk'=\langle pk,s \ranglepk′=⟨pk,s⟩,sk′=⟨sk,s⟩sk'=\langle sk,s\ranglesk′=⟨sk,s⟩;
- Sign′Sign'Sign′:输入sk′sk'sk′和m∈{0,1}∗m∈\{0,1\}^*m∈{0,1}∗,输出σ←Signsk(Hs(m))\sigma \leftarrow Sign_{sk} (H^s (m))σ←Signsk(Hs(m));
- Vrfy′Vrfy'Vrfy′:输入pk′pk'pk′,m∈{0,1}∗m∈\{0,1\}^*m∈{0,1}∗和σ∈{0,1}∗\sigma \in \{0,1\}^*σ∈{0,1}∗,如果Vrfypk(Hs(m))=σVrfy_{pk} (H^s (m))=\sigmaVrfypk(Hs(m))=σ输出111。
5. 哈希签名范式的CMA安全性
\qquad若Π\PiΠ是CMACMACMA安全的签名方案,ΠH\Pi_HΠH是CRHFCRHFCRHF,则哈希签名范式Π′\Pi'Π′是CMACMACMA安全的。
\qquad设事件collcollcoll为在实验SigforgeA′,Π′Sigforge_{A',\Pi'}SigforgeA′,Π′中存在m′∈Qm'\in Qm′∈Q,对于Hs(m′)=Hs(m)H^s (m' )=H^s (m)Hs(m′)=Hs(m)。于是
Pr[SigforgeA′,Π′(n)=1]=Pr[SigforgeA′,Π′(n)=1∧coll]+Pr[SigforgeA′,Π′(n)=1∧coll‾]Pr[Sigforge_{A',\Pi' } (n)=1]=Pr[Sigforge_{A',\Pi' } (n)=1\wedge coll]+Pr[Sigforge_{A',\Pi' } (n)=1\wedge \overline{coll} ]Pr[SigforgeA′,Π′(n)=1]=Pr[SigforgeA′,Π′(n)=1∧coll]+Pr[SigforgeA′,Π′(n)=1∧coll] ≤Pr[coll]+Pr[Sig−forgeA′,Π′(n)=1∧coll‾]\leq Pr[coll]+Pr[Sig-forge{A',\Pi' } (n)=1\wedge \overline{coll}]≤Pr[coll]+Pr[Sig−forgeA′,Π′(n)=1∧coll]。
\qquad考虑找到ΠH\Pi_HΠH的碰撞的算法CCC:输入sss,
- (pk,sk)←Gens(1n)(pk,sk)\leftarrow Gen_s (1^n )(pk,sk)←Gens(1n),令pk′=⟨pk,s⟩pk'=\langle pk,s\ranglepk′=⟨pk,s⟩;
- 输入pk′pk'pk′,运行A′A'A′。当A′A'A′问询第iii个签名时,计算σi←Signsk(Hs(m))\sigma_i\leftarrow Sign_{sk} (H^s (m))σi←Signsk(Hs(m)),将σi\sigma_iσi给A′A'A′;
- A′A'A′输出(m,σ)(m,\sigma)(m,σ)。若存在iii,使得Hs(m)=Hs(mi)H^s (m)=H^s (m_i )Hs(m)=Hs(mi),则输出(m,mi)(m,m_i )(m,mi)。
\qquad分析CCC的行为。当算法CCC的输入sss来自GenH(1n)Gen_H (1^n )GenH(1n)时,A′A'A′作为CCC的子程序运行所见情形与实验SigforgeA′,Π′Sigforge_{A',\Pi'}SigforgeA′,Π′中相同。因为当collcollcoll发生时,CCC输出一个碰撞,得到
Pr[coll]=Pr[HashcollC,ΠH(n)=1]≤negl1(n)Pr[coll]=Pr[Hashcoll_{C,\Pi_H } (n)=1]\leq negl_1 (n)Pr[coll]=Pr[HashcollC,ΠH(n)=1]≤negl1(n)。
\qquad考虑攻击Π\PiΠ的敌手AAA:输入pkpkpk,
- s←GenH(1n)s\leftarrow Gen_H (1^n )s←GenH(1n),令pk′=⟨pk,s⟩pk'=\langle pk,s\ranglepk′=⟨pk,s⟩;
- 输入pk′pk'pk′,运行A′A'A′。当A′A'A′问询第iii个签名时,计算Hs(mi)H^s (m_i )Hs(mi),向签名预言机问询σi\sigma_iσi,交给A′A'A′;
- A′A'A′输出(m,σ)(m,\sigma)(m,σ)。输出⟨Hs(m),σ⟩\langle H^s (m),\sigma \rangle⟨Hs(m),σ⟩。
\qquad实验SigforgeA,ΠSigforge_{A,\Pi}SigforgeA,Π中,A′A'A′作为CCC的子程序运行所见情形与实验相同。此外,当SigforgeA′,Π′(n)=1Sigforge_{A',\Pi' } (n)=1SigforgeA′,Π′(n)=1和coll‾\overline{coll}coll同时发生时,AAA输出一个伪造。因此
Pr[SigforgeA′,Π′(n)=1∧coll‾]=Pr[SigforgeA,Π(n)=1]≤negl2(n)Pr[Sigforge_{A',\Pi' } (n)=1\wedge \overline{coll}]=Pr[Sigforge_{A,\Pi} (n)=1]\leq negl_2 (n)Pr[SigforgeA′,Π′(n)=1∧coll]=Pr[SigforgeA,Π(n)=1]≤negl2(n)。
\qquad所以 Pr[SigforgeA′,Π′(n)=1]≤negl(n)Pr[Sigforge_{A',\Pi'} (n)=1]\leq negl(n)Pr[SigforgeA′,Π′(n)=1]≤negl(n)。
6. 参考文献
乔纳森.卡茨,耶胡达.林德尔著,任伟译,现代密码学——原理与协议,国防工业出版社,2017年第一版第4次印刷.
密码学归约证明——哈希签名范式的安全性相关推荐
- 密码学归约证明——计数器CTR模式
1. 计数器CTR模式 选择,计算,.不加密并作为密文的一部分发送. 2. CTR模式的CPA安全 若是,则模式是安全的. 挑战密文在实验中被加密时,设表示初始,表示加密挑战密文每个分组.要求从未被加 ...
- 密码学归约证明——基于伪随机函数的消息鉴别码方案
1. 消息鉴别码实验 运行得到密钥,即. 敌手获得输入,且能够访问预言机,最终输出,其中为消息的鉴别码.设为敌手访问预言机的问询集合. 当且仅当且,实验输出1.其中是鉴别码方案的验证方法. 如果一个消 ...
- 密码学归约证明——定长对称加密密钥的敌手不可区分性
1. 前言 针对任伟译<现代密码学--原理与协议>这本书中,将reduction一词翻译成"规约",根据笔者在网上查阅资料,最终认为翻译成"归约"更 ...
- 密码学归约证明——选择明文攻击下的不可区分性
1. 选择明文攻击不可区分性实验 运行生成密钥 :输出给敌手,敌手可以访问预言机,并输出一对长度相等的消息:选择一个随机比特 ,计算出挑战密文交给 ;敌手继续访问预言机,输出一个比特:如果 ,则,成功 ...
- 密码学归约证明——DH密钥交换协议在窃听者存在的情况下的安全性
1. 密钥交换实验KEA,Πeav(n)KE^{eav}_{A,\Pi}(n)KEA,Πeav(n) 持有1n1^n1n的通信方执行Π\PiΠ协议.之后得到通信双方发送的所有的消息的副本以及双方输出 ...
- 通俗地解释下密码学中的归约证明
本文首发于本人的:能否通俗地解释下密码学中的归约证明? - ChainingBlocks的回答 - 知乎 https://www.zhihu.com/question/49441102/answer/ ...
- python 密码学计算_python 密码学示例——理解哈希(Hash)算法
Hash 是密码学安全性的基石,它引入了单向函数(one-way function)和指纹(fingerprint)的概念.即: 对于任意输入,都可以产生相同的.唯一的输出值 输出值中不包含输入值的任 ...
- 【区块链与密码学】第9-3讲:群签名方案的安全性要求
[本课堂内容全部选编自PlatON首席密码学家.武汉大学国家网络安全学院教授.博士生导师何德彪教授的<区块链与密码学>授课讲义.教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系 ...
- 现代密码学5.4--对哈希函数的攻击
现代密码学5.4--对哈希函数的攻击 生日攻击 生日问题 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan K ...
最新文章
- 2020年投入200000000美元,华为不只挖掘年薪百万的“天才少年”
- Jfinal碰到的问题记录
- 算法导论-算法基础-2.1插入排序 (从小到大)
- git clone 所有远程分支
- js的字符串和变量拼接
- linux c++ 输出到终端,如何将彩色文本输出到Linux终端?
- Fluent软件零基础入门到精通教程
- 用python做思维导图软件_两款好用的思维导图工具详细介绍,Xmind和幕布
- html右侧客服代码,非常好看的jQuery网站右侧固定在线客服代码
- 利用虚拟打印机截取打印文件并上传到服务器
- GitCode 在线 Web IDE
- Codeforces 图论板刷总结(更新中)
- 最赚钱H5游戏《大天使之剑H5》公测24天流水破亿!
- 【Avro二】Avro RPC框架
- 前端面试题【131道】
- 不是贫穷限制了你的思维,是你的思维导致了你的贫穷
- 女人嫁错人,但又离不了婚,过来人告诉你该怎么办
- npm下载什么都报错ERRO -4048
- 计算机毕业大学生如何解决难就业问题?
- 请简述什么是spring的ioc和di_请简述什么是 Spring 的 IoC 和 DI?_学小易找答案
热门文章
- 6. 中文命名实体提取
- 集合(Collections)
- 123457123456#0#-----com.threeapp.MakerHanBao01----儿童汉堡制作游戏
- vba 判断文本框内容是否为空_VBA代码用SetFocus精确控制焦点事件
- 研究Win32 GUI中SetActiveWindow与SetFocus和窗口消息
- HomeBrew安装软件慢的简单有效解决方法
- smartSVN 分支合并到主干上,iOS 编译时链接错误
- UE使用(UltraEdit)
- java致谢_JAVA语言课程设计致谢例文.doc
- 舍友整日沉迷代码?偷偷给他的idea装上防沉迷插件!!