文章目录
常见困难问题
在日常学习中,大家会发现很多密码学算法的安全性证明是通过规约到一个困难问题从而证明的。(本文就是记录我目前接触到的困难问题!)
首先介绍安全性证明的定义:
安全性证明就是在一个普通的攻击模型中,判定密码算法和所依赖的可信密码学算法问题之间的规约关系。如果算法的攻破(即攻击者赢)意味着某一在密码学中可信问题的解决,则说明该算法是安全的,即安全性得到证明。
概括一下,安全性证明只需假设:敌手能攻破现有方案,只要敌手能解决某一个困难性问题。然而,困难性问题目前是无法解决的。所以方案也就是安全的。
1.大整数因数分解问题
问题概述:
1.给定两个素数p,q,计算两数的乘积n是容易的;
2.给定大整数n,求n的素因子p,q却是非常困难的。
典型应用:RSA算法(效率低,安全性一般)
2.离散对数问题(The Discrete Logarithm Problem,DLP)
问题概述:
令
G
G
G为一个阿贝尔群(交换群),将
G
G
G中的二元操作写成乘法*。
1.给定
G
,
g
G,g
G,g和
h
=
g
a
h=g^a
h=ga,计算
a
a
a是困难的,其中
a
a
a被称为
h
h
h以
g
g
g为底的离散对数。
离散对数问题(数学概述)
如果对于一个整数 b b b和的质数 p p p的一个原根为 a a a,可以找到一个唯一的指数 i i i ,使得 b = a i ( m o d p ) b=a^i(mod\quad p) b=ai(modp),其中 0 ≤ i ≤ p − 1 0\leq i \leq p-1 0≤i≤p−1成立。那么指数 i i i称为 b b b的以 a a a为基数的模 p p p的离散对数。
原根:若 n , a n,a n,a为正整数,且 n , a n,a n,a互质,令 a d ≡ 1 ( m o d n ) a^d\equiv1(mod\quad n) ad≡1(modn),如果用 δ ( n , a ) \delta(n,a) δ(n,a)表示是该式成立的最小正整数 d d d,此时如果 d = φ ( n ) d=\varphi(n) d=φ(n),则称 a a a为模 n n n的原根。其中, φ ( n ) \varphi(n) φ(n)即欧拉函数。
欧拉函数:对于正整数 n n n,欧拉函数 φ ( n ) \varphi(n) φ(n)是小于或者等于 n n n的正整数中与n互质数的个数。
欧拉定理:若 n , a n,a n,a为正整数,且 n , a n,a n,a互质,则 a φ ( n ) ≡ 1 ( m o d n ) a^{\varphi(n)}\equiv1(mod\quad n) aφ(n)≡1(modn)
注意:原根对应有限循环群 G G G的生成元 g g g,而正整数 n n n对应群 G G G的阶数 p p p,其中 p p p为一个大素数。
3.计算DH问题(The Computational Diffie-Hellman Problem,CDH)
CDH是基于由Whit Diffie和Martin Hellman提出的两方协商密钥在公共信道上不会被窃取的问题:
1)Alice和Bob共同确定使用的循环群
G
G
G,和生成器
q
q
q
2)Alice选择一个随机的密钥整数
a
a
a,Bob选择了一个随机的整数
b
b
b
3)Alice计算
g
a
g^a
ga 在公共信道上发送给Bob,同时Bob也计算出
g
b
g^b
gb在公共信道上发送给Alice.
4)Alice和Bob通过他们已知的随机整数来计算
g
a
b
=
(
g
a
)
b
=
(
g
b
)
a
g^{ab}=(g^a)^b=(g^b)^a
gab=(ga)b=(gb)a。而
g
a
b
g^{ab}
gab就是他们协商的密钥,即一个能被用于两人间的对称加密密钥.
敌手已知 G , g , g a , g b G,g,g^a,g^b G,g,ga,gb,需要在多项式时间内找出 g a b g^{ab} gab
4.决策DH问题(The Decisional Diffie-Hellman Problem,DDH)
DDH主要用于证明难以区分的属性。假如Alice和Bob执行如上所述的Diffie-Hellman密钥协议,那么 G , g , g a , g b G,g,g^a,g^b G,g,ga,gb都是公共的, g a b g^{ab} gab是密钥.简单而言,DDH问题就是对手是否能够从G中的随机元素区分出Alice和Bob的密钥 g a b g^{ab} gab.
定义:给定 G , g , g a , g b G,g,g^a,g^b G,g,ga,gb和 T x T_x Tx使得 T 0 T_0 T0是 G G G中的一个随机元素, T 1 = g a b T_1=g^{ab} T1=gab同时 x x x被随机均匀的从{0,1}中选择,找出 g a b g^{ab} gab.
如果对手能够解决DDH,即 P r [ x = g a b ] ≥ 1 2 Pr[x=g^{ab}]\geq \frac{1}{2} Pr[x=gab]≥21.那么意味着 G , g a , g b G,g^a,g^b G,ga,gb泄露了关于 g a b g^{ab} gab的信息,使得攻击者能把它从随机的元素中分辨出来,尽管不能直接计算出来。
显然,CDH的困难性大于DDH
5.Gap Diffie-Hellman
给定三元组(g,ga,gb),a,b属于Z*q,在DDH(·)预言机的辅助下计算gab是困难的
6.双线性DH问题(BDH)
给定四元组(P,aP,bP,cP),a,b,c属于Z*q,判断等式e(P,P)d = e(P,P)abc是困难的