可忽略优势和规约证明的心得与笔记

最近在看《现代密码学——原理与协议》这一本,刚好看到计算安全和规约证明这一块,打算简单的做个笔记,以后也方便复习。

在证明一个加密方案是否安全,其必须在“实践上不可破译”。基于计算的方法包含了两种完美安全的概率:

(1)在对抗“有效的敌手”时,安全性存在,“有效的”是指在可行的时间内运行。

(2) 敌手潜在攻破方案的概率极小(小到几乎不关心是否会发生)。

为了精确的定义上面所述内容,常常使用以下两种方法:

具体方法:通过明确限定任一敌手在最多某个特定时间内的最大成功概率,对给定的密码学方案的安全性进行量化。

渐进方法:将敌手运行时间以及成功的概率视为某个参数的函数,而不是具体的数值。

可忽略优势

在密码学方案中,绝大部分证明都是使用渐进的方法。

现代的密码学中,一个再安全的加密方案,都存在被攻破的可能性。这里就引入了一个可忽略的成功概率

一个方案能以非常小的概率被攻破,这个方案仍然被认为是“安全的”。

用一个通俗的例子来解释就是,我们走在马路上被一颗陨石砸到的概率。该概率不为0,但极小至可以忽略不计。

这样的概率被称为可忽略的,给定定义如下:
函数f是可忽略的,如果对于每个多项式p(·),存在一个N,使得所有的整数n>N,都满足f(n)<(1/p(n))。

我们通常将一个可忽略函数称为negl

对于可忽略的函数negl1和negl2,存在下列特点:

(1)函数negl3被定义为negl3(n) = negl1(n) + negl2(n),则函数是可忽略。

(2)对于任何多项式p,函数negl4(n)被定义为negl4(n) = p(n) · negl1(n),则函数是可忽略的。

第二点可以理解为一个事件发生的概率是多项式的,那么这个实验重复多项式次,依旧是可以忽略的。例如,中彩票的概率是忽略不计的,那么我们买n个多项式次彩票,依旧是可以忽略的。

规约证明

有以下形式的定理:

若给定假设X是正确的,根据给定的定义,构造方案Y是安全的。

证明通常显示:如何将假设X规约到攻破构造方案Y,也就是说如何使用敌手攻破够着方案Y的方法导致一个与假设X的冲突。

翻译成人话就是:将一个密码方案的安全性建立在一个已知的困难问题上。

常见的困难问题有因数分解问题,离散对数问题,LWE问题等等,而密码学方案则是基于这些困难问题来构建的。

举个例子:

以ElGamal加密协议为例,它是基于离散对数问题(具体为判定Diffie-Hellman假设,DDH假设)的。其密文形式可以表示为 C = ( c 1 , c 2 ) = ( g r , h r ⋅ m ) C=(c_1,c_2)=(g^r,h^r·m) C=(c1,c2)=(gr,hrm),其中 r r r为随机数, h = g x h=g^x h=gx x x x为密钥。
拥有密钥 x x x的人,可以进行解密 m = c 2 / c 1 x m=c_2/c_1^x m=c2/c1x


DDH假设
选定一个 q q q阶循环群 G G G,其生成元为 g g g。给定3个随机元素 x , y , z ∈ Z q x,y,z\in Z_q x,y,zZq。对于任意多项式时间敌手 A d v ( G , q , g , g x , g y , Z ) Adv(G,q,g,g^x,g^y,Z) Adv(G,q,g,gx,gy,Z),判断或 Z = g x y Z=g^{xy} Z=gxy者是 Z = g z Z=g^{z} Z=gz困难的。

证明之前,需要强调的是所有的困难性问题都只是假设,因为目前来说,没有人能够有效地解决它们,而一旦出现高效的算法可以在多项式时间内解决这些假设,那么基于这些假设所构造的密码学方案也就不攻自破了。

定理:如果在 G G G上的DDH问题是困难的,那么ElGamal方案在选择明文攻击下是不可区分安全的。

假设我们知道这个IND-CPA(indistinguishable under Chosen-Plaintext Attacks)的安全性定义(也称安全游戏)。那么其中,敌手的目标是识别出挑战密文 C ∗ C^* C中加密的是 m b ( b ∈ 0 , 1 ) m_b(b\in{0,1}) mb(b0,1)

直接证明似乎有点难度,那不如转变一下思路。
假如对于多项式时间敌手A(以下所有敌手都是多项式时间敌手),它有一个DDH实例 G , q , g , g x , g y , Z G,q,g,g^x,g^y,Z G,q,g,gx,gy,Z。很明显,A是没有办法判断出Z的形式的,因为这个问题对于A来说是困难的。
A的trick就是用这样一组实例,构建一个正确的ElGamal安全游戏,与另一个敌手B进行交互。
在这个A构建的安全游戏中,Z的2种形式与加密选择的 m 0 m_0 m0或者 m 1 m_1 m1相对应。
当B拿到这个游戏的挑战密文时,可以用尽一切办法来猜测挑战密文中加密 C ∗ C^* C的是 m 0 m_0 m0还是 m 1 m_1 m1,最后输出一个判断数组b’。如果没有敌手A能够以任意不同于 1 2 \frac{1}{2} 21的概率判断出消息 m 0 , m 1 m_0,m_1 m0,m1中是哪一个被加密的(1/2即随机猜测概率),即b=b’,则方案是安全的。

不可区分性定义说明了:如果在实验中,任何PPT(PolynomialTime 多项式时间)敌手的成功概率最大值高于 1 2 \frac{1}{2} 21的部分可忽略,这一个加密方案是安全的。

定义:对于所有概率多项式时间敌手A,存在一个可忽略函数negl使得:
P r [ b = b ′ ] ≤ 1 2 + n e g l ( n ) Pr[b=b']\leq\frac{1}{2}+negl(n) Pr[b=b]21+negl(n)

如果B能够成功猜测出加密的密文,敌手A就可以借助B的力量去猜测出Z的形式。
但是!我们的前提是不可能存在任何敌手A可以攻破DDH,因此也就不可能有任何敌手B攻破ElGamal。

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值