学报网址:卧村密码学报
文章网址:卧村密码学报之安全归约入门之breaking assumption
视频网址:安全归约入门:起源
参考教材:《Introduction to security reduction》Fuchun Guo, Willy Susilo, Yi Mu
笔记:【安全归约】第一讲 | Definitions定义(算法和安全模型)
公钥密码学的可证明安全方通常有 Game-based 和Simulation-based 两种,本书集中讨论的是前一种方法(还有 game hoping)中的安全归约。本质上说,归约是理解两个问题之间关系的一种思维方式,也是一种寻找解决某一问题(或其变形)的技术,它在数学、计算复杂性理论和物理等学科中有着不尽相同的运作模式,而密码学中方案的安全证明所涉及的归约是模拟者借助敌手对方案的攻击能力解决某个数学困难问题实例的算法过程。(卧村密码学报:安全归约初探)
(其实我不太懂为什么把breaking assumption放在入门视频,我感觉一点也不入门…(小声说…
安全归约入门:起源
What is breaking assumption?
现代密码在提出之前都需要进行严格的安全分析,一种证明的方法——安全归约(security reduction)。
breaking assumption定义:
假设存在着一个敌手可以在已定义的安全模型下以一个不可忽略的优势攻破方案
breaking assumption四大概念:
Adversary、Break the propose scheme、Security model、Non-negligible advantage
(对手,打破提出方案,安全模型,不可忽视的优势)
Breaking Assumption:Adversary
- 敌手可以攻破提出的方案
- 敌手处于安全盒子里,双方可听话对话,但是无法看见敌手具体操作,特别是攻破方案时的想法思路(隐藏表情)
- 安全证明就是证明敌手在blackbox不能攻破我们的方案,说明方案安全性
- 如果能看到对方是怎么样计算攻破的,那方案一定是不安全的,无须证明了
安全归约 难点:敌手会说什么?——partially(部分了解)
Breaking Assumption:Break the propose scheme
Adversary和Scheme根据指定的(XX)安全模型的定义交互
Example:
a:给我公钥
:pk
a:给我签名
:签名
a:伪造签名furged signature
...
最终攻破方案
Security model
Breaking Assumption:Non-negligible advantage
敌手有可能攻击失败
敌手只能以不可忽略的优势成功ε攻破
是优势而不是概率**(统一化描述)**
也不能直接考虑ε=1来处理,因为不可忽略已经很危险了
How to Understand breaking assumption
安全归约 难点:敌手会说什么?
Adversary只对break propose scheme感兴趣,交互超出范围则不可预测Adversary行为
Breaking Assumption:Break the propose scheme
什么情况会出现行为的不可预测?
发生条件:
-
敌手有证据验证出所收到的签名/公钥等不真实
-
方案未遵循安全模型
Conclusion.
How to use breaking assumption?
在安全归约时直接用提出方案/实际方案跟敌人进行交互是无法解决困难问题的,所以用一个困难问题实例来创建一个模拟方案,交互时为敌手和模拟方案交互,最终将敌手的攻击转化为困难问题的解。
主要问题:如何防止敌手在归约过程中出现不可预测的行为是最大的挑战
Digital Signatures
我们希望:
- 能成功收到敌手的攻击(simulate scheme should look like proposed scheme)
- 要求攻击可转换解决困难问题
两个问题:
- 敌手会询问哪些消息的签名、无法准备签名?(不可预测)
- 敌手会对哪些消息进行签名伪造?(不可预测)
解决办法核心思想:Block the Dead Road(把路堵死)
Example1:
KeyGen: p k = ( g , g s , e , p ) , s k = s pk=(g,g^{s},e,p) , sk=s pk=(g,gs,e,p),sk=s
Sign: σ m = g 1 s + m \sigma_m=g^{\frac{1}{s+m}} σm=gs+m1 ,( m ϵ Z p m \epsilon Z_p mϵZp)
归约到困难问题:Input:(g, g a g^{a} ga), Output: g 1 a g^{\frac{1}{a}} ga1
Proof.
set g s = g a g^{s}=g^{a} gs=ga
敌手拿到公钥伪造对消息 m ∗ m^{*} m∗的签名: g 1 s + m ∗ = g 1 a + m ∗ g^{\frac{1}{s+m^{*}}}=g^{\frac{1}{a+m^{*}}} gs+m∗1=ga+m∗1
m ∗ m^{*} m∗是敌手选的(行为不可预测)
问:如何从伪造签名中将困难问题抽取出来(安全归约证明的目标)
解:修改方案(困难问题不变)
修改:
KeyGen: p k = ( g , g s , g t , e , p ) , s k = ( s , t ) pk=(g,g^{s},g^{t},e,p) , sk=(s,t) pk=(g,gs,gt,e,p),sk=(s,t)
Sign: σ m = g 1 s + m ∗ t \sigma_m=g^{\frac{1}{s+m*t}} σm=gs+m∗t1 ,( m ϵ Z p m \epsilon Z_p mϵZp)
归约到困难问题(same):Input: g , g a g,g^{a} g,ga, Output: g 1 a g^{\frac{1}{a}} ga1
Proof.
set g s = g a 和 g t = g k ∗ a g^{s}=g^{a}和g^{t}=g^{k*a} gs=ga和gt=gk∗a (random k)
forged signature: g 1 s + m ∗ ∗ t = g 1 a + m ∗ ∗ k ∗ a = g 1 a ( 1 + m ∗ ∗ k ) g^{\frac{1}{s+m^{*}*t}}=g^{\frac{1}{a+m^{*}*k*a}}=g^{\frac{1}{a(1+m^{*}*k)}} gs+m∗∗t1=ga+m∗∗k∗a1=ga(1+m∗∗k)1
不管 m ∗ m^{*} m∗怎么选都有办法将 g 1 a g^{\frac{1}{a}} ga1抽取出来
Example2:
KeyGen: p k = ( g , g s , e , p ) , s k = s pk=(g,g^{s},e,p) , sk=s pk=(g,gs,e,p),sk=s
Sign: σ m = g 1 s + m \sigma_m=g^{\frac{1}{s+m}} σm=gs+m1 ,( m ϵ Z p m \epsilon Z_p mϵZp)
归约到困难问题:Input: (g, g a g^{a} ga), Output: g 1 a g^{\frac{1}{a}} ga1
Proof.
set g s = g a g^{s}=g^{a} gs=ga
chosen-message attack(one query) queried signature: g 1 s + m = g 1 a + m g^{\frac{1}{s+m}}=g^{\frac{1}{a+m}} gs+m1=ga+m1
修改:
KeyGen: p k = ( g , g s , h , e , p ) , s k = ( s ) pk=(g,g^{s},h,e,p) , sk=(s) pk=(g,gs,h,e,p),sk=(s)
Sign: σ m = ( r , h 1 s + m + r ) \sigma_m=(r,h^{\frac{1}{s+m+r}}) σm=(r,hs+m+r1) ,( m ϵ Z p m \epsilon Z_p mϵZp, random r)
归约到困难问题(same):Input: g , g a g,g^{a} g,ga, Output: g 1 a g^{\frac{1}{a}} ga1
Proof.
g s = g a g^{s}=g^{a} gs=ga
set h = g z ( a + w ) h=g^{z(a+w)} h=gz(a+w) random w,z
当敌人使用消息m的签名时,设r=w-n,则 h 1 s + m + r = h 1 a + m + r = h 1 a + w = g z h^{\frac{1}{s+m+r}}=h^{\frac{1}{a+m+r}}=h^{\frac{1}{a+w}}=g^{z} hs+m+r1=ha+m+r1=ha+w1=gz
Conclusion.Reduction in digital signatures
归约数字签名 总结:
- 我们可以从伪造签名中将困难问题的解提取出来
- 无论敌手询问什么信息我们都可以模拟签名
有些消息签名可模拟,有些消息签名可归约
如果敌手发现此消息可模拟,则发动useless attact
所以:将敌手可判断签名可归约还是可签名的路堵死
How to use breaking assumption in Encryption(Decisional Version)?
The IND-CPA security model for eneryption
将安全模型下的攻击归约到判别式困难问题
判别式困难问题:有一个instance中带Z(true or false)
安全归约中,我们使用问题实例(I,Z)创造模拟方案
security model模拟方案使用真实方案模拟,安全性证明时用数学难题模拟,情况比真实方案模拟更多
当Z=true的时候,希望敌手猜中c的概率接近1000次
当Z=false的时候,希望敌手猜中c的概率接近500次
为什么?
因为可以利用敌手的攻击解决问题:如果敌人猜对了,则我们猜测Z=true,否则猜测Z=false
Pr[Guess Z=True|Z=True]=938/1000(我们猜对与敌手猜中次数成正比)
Pr[Guess Z=True|Z=False]=504/1000(我们猜错与敌手猜中次数成正比)
在Z=true的情况下,我们希望敌手猜中的次数越多越好
如何保证猜中次数?:
使用敌手攻破方案的优势
模拟方案应与真实方案看起来是一样的
在Z=false的情况下,我们希望敌手猜中的次数越少越好
We hope:对手不要提供帮助,或者只是输出一个随机猜测
Reality:模拟方案应与真实方案一样的时候,敌手一定会帮忙;而方案不一样的时候,敌手会出现行为不可预测
Solution:即使敌手出现行为不可预测,依然让敌手没有优势猜测正确(猜中c)
Conclusion.
Example(ElGamal Encryption)
KeyGen: p k = ( g , g 1 , p ) = ( g , g s , p ) , s k = s pk=(g,g_1,p)=(g,g^{s},p) , sk=s pk=(g,g1,p)=(g,gs,p),sk=s
Encrypt: C T = ( g r , g 1 r ∗ m ) CT=(g^{r},{g^{r}_1}*m) CT=(gr,g1r∗m) ,( m ϵ G m \epsilon G mϵG)
将密文安全性归约到判别式Diffie-Hellman问题:
Input: ( g , g a , g b , Z g,g^{a},g^{b},Z g,ga,gb,Z)
Output: Z=True if Z = g a b Z=g^{ab} Z=gab and false otherwise.
(如何知晓敌手一定会询问 Z = g a b Z=g^{ab} Z=gab:如果敌手不询问 Z = g a b Z=g^{ab} Z=gab一定没办法攻破方案,询问消息中一定包含)
Proof.
set g s = g a g^{s}=g^{a} gs=ga
敌手发送挑战信息 m 0 , m 1 m_0,m_1 m0,m1,我们设 g b = g r g^{b}=g^{r} gb=gr, C T = ( g b CT=(g^{b} CT=(gb ,Z* m c ) m_c) mc)
若Z=True,看起来与实际方案一样
若Z=False,则把敌手攻破方案的可能性堵死( m c m_c mc看作one-time pad的加密)
How to use breaking assumption in Encryption(Computational Version)?
Computational Problem
给定实例I,计算S
PPT算法A()计算式困难问题定义:
P
R
[
A
(
I
)
=
s
]
≤
ϵ
PR[A(I)=s] \le \epsilon
PR[A(I)=s]≤ϵ(概率
ϵ
\epsilon
ϵ是安全参数中一个可忽略的函数)
(概率性多项式时间 Probabilistic polynomial time)
利用敌手的询问query解决问难问题:
用I产生模拟方案,跟敌手进行交互,
如果与敌手交互1000次,希望敌手向RO询问S的次数接近938次
敌手的行为不可预测不可发生在询问S之前,否则无法知道询问概率。
达到:
模拟方案和实际方案相同(敌手才会攻击)
把敌手攻破方案的方法堵死,只剩下询问S这条路
Conclusion.
Example(Hashed ElGamal Encryption)
KeyGen: p k = ( g , g 1 , p , H ) = ( g , g s , p , H ) , s k = s pk=(g,g_1,p,H)=(g,g^{s},p,H) , sk=s pk=(g,g1,p,H)=(g,gs,p,H),sk=s
Encrypt: C T = ( g r , H ( g 1 r ) ⊕ m ) CT=(g^{r},H({g^{r}_1})\oplus m) CT=(gr,H(g1r)⊕m) ,( m ϵ 0 , 1 n m \epsilon {0,1}^{n} mϵ0,1n,random r)
归约到计算式Diffie-Hellman问题:
Input: ( g , g a , g b , Z g,g^{a},g^{b},Z g,ga,gb,Z)
Output: Z=True if Z = g a b Z=g^{ab} Z=gab and false otherwise.
Proof.
set g s = g a g^{s}=g^{a} gs=ga
敌手发送挑战信息 m 0 , m 1 m_0,m_1 m0,m1,我们设 g b = g r g^{b}=g^{r} gb=gr, C T = ( g b , R ⊕ m c ) CT=(g^{b},R\oplus m_c) CT=(gb,R⊕mc) randomly chosen bit string R
满足条件:
敌手查询 S = g a , b S=g^{a,b} S=ga,b之前,模拟方案与实际方案看起来一样
敌手查询 S = g a , b S=g^{a,b} S=ga,b之前,敌手没有攻破方案的优势,把敌手攻破的其他路径堵死
Counter-Example
KeyGen: p k = ( g , g 1 , p , H ) = ( g , g s , p , H ) , s k = s pk=(g,g_1,p,H)=(g,g^{s},p,H) , sk=s pk=(g,g1,p,H)=(g,gs,p,H),sk=s
Encrypt: C T = ( g r , H ( g 1 r ) ⊕ m ) CT=(g^{r},H({g^{r}_1})\oplus m) CT=(gr,H(g1r)⊕m) ,( m ϵ 0 , 1 n m \epsilon {0,1}^{n} mϵ0,1n,random r)
归约到计算式Diffie-Hellman问题:
Input: ( g , g a , g b , Z g,g^{a},g^{b},Z g,ga,gb,Z)
Output: Z=True if Z = g a b Z=g^{ab} Z=gab and false otherwise.
Proof.
set g s = g a g^{s}=g^{a} gs=ga
敌手发送挑战信息 m 0 , m 1 m_0,m_1 m0,m1,我们设 g b = g r g^{b}=g^{r} gb=gr, C T = ( g b CT=(g^{b} CT=(gb, (1||R) ⊕ m c ) \oplus m_c) ⊕mc)
// ( 1 ∣ ∣ R ) ⊕ m c (1||R)\oplus m_c (1∣∣R)⊕mc:第一个bit必为1,异或一个n-1的random bit
情况:
敌手查询 S = g a , b S=g^{a,b} S=ga,b之前,模拟方案与实际方案看起来一样
敌手查询 S = g a , b S=g^{a,b} S=ga,b之前,若敌手发送的挑战消息 m 0 = 0 ∗ ∗ , m 1 = 1 ∗ ∗ m_0=0**, m_1=1** m0=0∗∗,m1=1∗∗( m 0 m_0 m0的第一个bit为0, m 1 m_1 m1的第一个bit为1),则敌手有攻破方案的优势,即未把路堵死
Summary
彩蛋(?
归约难点在于斜线路径(ex:失败攻击可以出现无用攻击也可以出现有用攻击)
详细请看卧村密码学报:安全归约入门之错综复杂的概念梳理,对成功模拟、失败模拟、不可区分模拟、可区分模拟、成功攻击、失败攻击、有用攻击、无用攻击进行解释