密码学归约证明——选择明文攻击下的不可区分性

1. 选择明文攻击CPA不可区分性实验PrivK_{A,\Pi }^{cpa}\left ( n \right )

       运行Gen\left ( 1^{n} \right )生成密钥k ;输出\large 1^{n}给敌手\large A,敌手\large A可以访问预言机\large Enc_{k}\left ( \cdot \right ),并输出一对长度相等的消息\large m_{0},m_{1};选择一个随机比特\large b\leftarrow \left \{ 0,1 \right \} ,计算出挑战密文\large c\leftarrow Enc _{k}\left ( m_{b} \right )交给\large A ;敌手\large A继续访问预言机,输出一个比特\large b';如果\large b=b' ,则PrivK_{A,\Pi }^{cpa}\left ( n \right )=1\large A成功。

2. 选择明文攻击CPA条件下的不可区分加密

       对称密钥加密方案\Pi =\left ( Gen,Enc,Dec \right )满足:如果对任意概率多项式敌手\large A,存在可忽略函数negl,使

Pr\left [ PrivK_{A,\Pi }^{cpa}\left ( n \right ) =1\right ]\leq \frac{1}{2}+negl\left ( n \right )

       则满足选择明文攻击CPA条件下的不可区分加密。

3. 伪随机函数构造CPA安全的构造方法\large \Pi

       令\large F是伪随机函数,定义一个消息长度为\large n的对称密钥加密方案如下:

      \large Gen:输入\large 1^{n},均匀随机地选择密钥\large \large k\leftarrow \left \{ 0,1 \right \}^{n}

      \large Enc:输入密钥\large k和消息\large m\in \left \{ 0,1 \right \}^{n},均匀随机选择\large r\leftarrow \left \{ 0,1 \right \}^{n},输出密文\large c:= \left \langle r,F_{k}\left ( r\right ) \oplus m\right \rangle

      \large Dec:输入密钥\large k和密文\large c=\left \langle r,s \right \rangle,输出明文\large m:= F_{k}\left ( r\right ) \oplus s

4. 伪随机函数\large PRF

       令\large F:\left \{ 0,1 \right \}^{*}\times \left \{ 0,1 \right \}^{*}\rightarrow \left \{ 0,1 \right \}^{*}是有效的、长度保留的、带密钥的函数。如果对于所有多项式时间的区分器\large D,存在可忽略函数\large negl,满足

\large \left | Pr\left [ D^{F_{k}\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ] -Pr\left [ D^{f\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ]\right |\leq negl\left ( n \right )

       则\large F是一个伪随机函数,其中\large k\leftarrow \left \{ 0,1 \right \}^{n}是随机均匀选择的,\large f\left ( \cdot \right )是将\large n比特字符串映射到\large n比特字符串的函数集合中均匀随机选择出来的。

5. 选择明文攻击下的不可区分性

       如果\large F是伪随机函数,则上述构造方法\large \Pi为消息长度为\large n的定长对称密钥加密方案,在选择明文攻击下不可区分。

       书《现代密码学——原理与协议》中针对此类型的归约给出了通用思路:首先在理想的世界中分析方案的安全性,即用真正的随机函数\large f来取代\large F_{k},然后说明此时的安全性;然后当\large F_{k}被使用时,如果该方案不是安全的,则意味着将\large F_{k}从真正的随机函数中区分出来是可能的。

       分别创建两个情景:

  • 敌手\large D攻击其对应的挑战者\large C

       挑战者\large C有两种方式使用函数来输出\large t:真随机函数\large f和伪随机函数\large F_{k}\large C随机地选择\large t交给敌手D来判断该\large t是随机的还是伪随机的。若D输出b'满足b'=b,则敌手D成功。

        如果\large b=0,则敌手D成功的概率为

\large Pr\left [ D^{F_{k}\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ]

       如果\large b=1,则敌手D成功的概率为

\large Pr\left [ D^{f\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ]

       且伪随机函数\large F_{k}满足

\large \left | Pr\left [ D^{F_{k}\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ] -Pr\left [ D^{f\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ]\right |\leq negl\left ( n \right )

       图解:

  • 敌手\large A攻击\large \Pi

       \large A生成两个长度相等的字符串\large m_{0}\large m_{1}\large \Pi随机选择\large m,计算密文\large c交给\large A来判断\large c来自\large m_{0}还是\large m_{1}。若\large A输出\large b'=b,则成功。

       如果\large t来自随机函数,令加密方案\large \widetilde{\Pi }:用真正的随机函数\large f来代替伪随机函数\large F_{k},其他与\large \Pi相同。每个敌手\large A最多向它的加密预言机问询多项式\large q\left ( n \right )次,有

\large Pr\left [ PrivK_{A,\widetilde{\Pi }}^{cpa} \left ( n\right )=1\right ]\leq \frac{1}{2}+\frac{q\left ( n \right )}{2^{n}}

       下面证明此命题:

       令\large r_{c}表示生成挑战密文\large c=\left \langle r_{c},f\left ( r_{c}\oplus m_{b} \right ) \right \rangle时生成的随机字符串。有两种情况:

       值\large r_{c}被加密预言机使用来回答至少一个\large A的问询:

       无论何时加密预言机返回一个密文\large \left \langle r,s \right \rangle来回应加密消息\large m的请求,敌手由\large f\left ( r \right )=s\oplus m掌握了值\large f\left ( r \right )。此时,\large A可能轻易地判断出哪一个消息被加密。因为\large A最多向预言机问询\large q\left ( n \right )次,并且每次预言机回答它的问询都是使用一个均匀选择的\large r,所以该事件发生的概率最多为\large \frac{q\left ( n \right )}{2^{n}}

       值\large r_{c}没有被加密预言机用来回答\large A的问询:

       这种情况下,\large A在和加密预言机的交互过程中,没有掌握任何关于\large f\left ( r_{c} \right )值的信息。在这种情况下,输出b'=b的概率刚好是\large \frac{1}{2}(类似于“一次一密”)。

       令\large Repeat表示值\large r_{c}被加密预言机使用来回答至少一个\large A的问询的事件。则有

\large Pr\left [ PrivK_{A,\widetilde{\Pi }}^{cpa} \left ( n \right )=1\right ]

\large =Pr\left [ PrivK_{A,\widetilde{\Pi }}^{cpa} \left ( n \right )=1\wedge Repeat \right ]+Pr\left [ PrivK_{A,\widetilde{\Pi }}^{cpa} \left ( n \right )=1\wedge \overline{Repeat}\right ]

\large \leq Pr\left [ Repeat \right ]+Pr\left [ PrivK_{A,\widetilde{\Pi }}^{cpa} \left ( n \right )=1| \overline{Repeat}\right ]\leq \frac{1}{2}+\frac{q\left ( n \right )}{2^{n}}

       得证。

       如果\large t来自伪随机函数,则敌手\large A成功的概率被表示为

\large Pr\left [ PrivK_{A,\Pi }^{cpa}\left ( n \right ) =1\right ]

       如果下面不等式成立,就可以说明加密协议\large \Pi是安全的:

\large \left | Pr\left [ D^{F_{k}\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ] -Pr\left [ D^{f\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ]\right |\leq negl\left ( n \right )

       图解:

证明:根据上面所述的情景,正式说明逻辑命题等价式表示为:

\large \left | Pr\left [ D^{F_{k}\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ] -Pr\left [ D^{f\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ]\right |\leq negl\left ( n \right )\rightarrow

\large Pr\left [ PrivK_{A,\Pi }^{cpa}\left ( n \right ) =1\right ]\leq \frac{1}{2}+negl\left ( n \right )

       令区分器\large D使用\large A作为子程序,来模拟\large CPA不可区分实验。

       如果\large D的预言机是一个伪随机函数,那么当\large A\large D作为一个子程序运行时的所见视图分布,与在实验PrivK_{A,\Pi }^{cpa}\left ( n \right )\large A所见的视图分布是相同的。则

\large Pr\left [ D^{F_{k}\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ]=Pr\left [ PrivK_{A,\Pi }^{cpa}\left ( n \right ) =1\right ]

       如果\large D的预言机是一个随机函数,那么当\large A\large D作为一个子程序运行时的所见视图分布,与在实验\large PrivK_{A,\widetilde{\Pi }}^{cpa} \left ( n \right )\large A所见的视图分布是相同的。则

\large Pr\left [ D^{f\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ]=Pr\left [ PrivK_{A,\widetilde{\Pi }}^{cpa} \left ( n \right )=1\right ]

       根据不等式\large \left | Pr\left [ D^{F_{k}\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ] -Pr\left [ D^{f\left ( \cdot \right )}\left ( 1^{n} \right )=1 \right ]\right |\leq negl\left ( n \right )

\large Pr\left [ PrivK_{A,\Pi }^{cpa}\left ( n \right ) =1\right ]相关于\large negl\left ( n \right )+ \frac{1}{2}+\frac{q\left ( n \right )}{2^{n}}

       由于\large \frac{q\left ( n \right )}{2^{n}}满足多项式,得证。

6. 参考文献

       乔纳森.卡茨,耶胡达.林德尔著,任伟译,现代密码学——原理与协议,国防工业出版社,2017年第一版第4次印刷.

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值