文章目录
前言
论文学习记录:Security of the SM2 Signature Scheme Against Generalized Key Substitution Attacks(张振峰 SSR 2015)1
一、Contribution
- 证明了ISO /IEC 14888-3中定义的基于证书的签名方易受到广义密钥替换攻击 (generalized key substitution attacks).(省略)
- 证明了SM2签名方案在底层哈希函数 h h h 是一致的(uniform)、抗冲突的 (collision-resistant),并且底层转换函数 f f f 几乎是可逆的(almost-invertible)的情况下,满足自适应选择消息攻击下存在性不可伪造(existential unforgeability under adaptively chosen-message attacks (EUF-CMA)).
- 证明了SM2签名方案在底层哈希函数 H H H 和 h h h 被建模为非可编程随机预言器(non-programmable ranom oracles (NPROs))的情况下,可以抵抗广义密钥替换攻击.
二、Preliminaries
1. Uniform (Smooth) Hash Functions2
字面意思是没办法区分
e
e
e 是从哈希函数
h
h
h 值域
H
\mathscr{H}
H 里随机选取的,还是某个
M
M
M 的哈希值
h
(
M
)
h(M)
h(M) ,其中
M
M
M 从
D
\mathscr{D}
D 中随机选取。
我的理解就是哈希函数
h
h
h 值域均匀分布。
2. Almost-Invertibility of Conversion Functions
SM2 uses a conversion function
f
:
A
n
→
F
n
f : \mathbb{A}_{n} → \mathbb{F}_{n}
f:An→Fn,
F
n
\mathbb{F}_{n}
Fn是集合
{
0
,
1
,
.
.
.
,
n
−
1
}
\{0, 1, ...,n-1\}
{0,1,...,n−1},
A
n
\mathbb{A}_{n}
An 是一个
n
n
n 阶群. An almost-inverse of
f
f
f is a probabilistic polynomial time (PPT) algorithm
f
−
1
:
F
n
→
A
n
f ^{−1} : \mathbb{F}_{n} → \mathbb{A}_{n}
f−1:Fn→An which on input
x
∈
F
n
x ∈\mathbb{F}_{n}
x∈Fn produces a
Q
∈
A
n
∪
{
I
n
v
a
l
i
d
}
Q ∈ \mathbb{A}_{n} ∪ \{Invalid\}
Q∈An∪{Invalid} such that:
就是通常的函数求逆,只不过注意第三点,求逆之后的值和原来定义域里的元素计算上不可区分。
3. Non-programmable ranom oracles
可编程随机谕言机和不可编程随机谕言机主要区别(从加密的角度来看)是模拟器是否能够选择谕言机查询的答案。
可编程随机谕言机是指:模拟器能够为敌手对随机谕言机进行的查询选择答案。谕言机的响应不是事先固定的,可以在证明中自适应地选择它们。例如可以分配特定值作为对特定请求的随机预言机响应,但是无法将该值与随机值区分开来。
不可编程随机预言机模型限制了模拟器,使其无法再为敌手的查询选择答案。对模拟器的这种限制(或者更一般地说,安全降低)使基础证明更可取,因为更少依赖于随机预言机的属性。
4. EUF-CMA
5. (generalized) key substitution attacks
给定 KS 敌手一个公钥
p
k
pk
pk 和在
p
k
pk
pk下有效的消息签名对
(
m
,
σ
)
(m, σ)
(m,σ) ,敌手试图生成另一个公钥
p
k
′
(
≠
p
k
)
pk^{'}( \ne pk)
pk′(=pk) ,使
(
m
,
σ
)
(m, σ)
(m,σ) 在
p
k
′
pk^{'}
pk′ 下仍然有效。
强密钥替换(SKS)攻击:只输出公钥
p
k
′
pk^{'}
pk′ 。
弱密钥替换(WKS)攻击:进一步要求 KS 敌手输出公钥
p
k
′
pk^{'}
pk′ 对应的私钥
p
k
′
pk^{'}
pk′ 。
显然,一个能抵抗SKS攻击的签名方案也能抵抗WKS攻击。
三、EUF-CMA Security of SM2
- SM2签名方案
- SM2的EFU-CMA安全性
证明:
假设敌手 A A A 不能直接访问群,而只能通过与oracle交互获得表示群元素的“句柄”( h a n d l e handle handle ),从而获取群内新元素。
敌手可以从群操作谕言机查询、公钥或者签名谕言机查询中获取群元素句柄。实际上,敌手可以使用公钥或签名中的句柄作为“基础”,来执行进一步的群操作。
设 ( G , Y ) (G,Y) (G,Y) 为公钥中的群元素句柄,设 ( V 1 , … , V q s ) (V_{1},…,V_{qs}) (V1,…,Vqs) 为签名查询中创建的群元素句柄,其中 q s qs qs 是对手进行签名查询的次数。然后,假设敌手想要计算的所有群元素的形式为 z 1 G + z 2 Y + z 3 V 1 + … + z q s + 2 V q s z_{1}G+z_{2}Y+z_{3}V_{1}+…+z_{q_{s}+2}V_{qs} z1G+z2Y+z3V1+…+zqs+2Vqs其中 z 1 , . . . , z q s + 2 z_{1} ,..., z_{q_{s}+2} z1,...,zqs+2 是对手选择的已知整数。因此,可以通过系数向量 ( z 1 , . . . , z q s + 2 ) (z_{1} ,..., z_{q_{s}+2}) (z1,...,zqs+2) 统一所有群操作查询。例如, z G zG zG 可以表示为群操作查询 ( z , 0 , . . . , 0 ) (z, 0,..., 0) (z,0,...,0)。
用表 L L L 来回答敌手对群操作的查询。
模拟器 C C C 首先从群 A n \mathbb{A}_{n} An 中随机选择 G G G 生成基元素的句柄,并添加 ( 1 , G , − , − ) (1, G, −, −) (1,G,−,−) 到表 L L L 中,然后从群 F n \ { 0 , n − 1 } \mathbb{F}_{n} \backslash\{0, n-1\} Fn\{0,n−1} 中随机选择 d d d ,从群 A n \mathbb{A}_{n} An 中随机选择 Y Y Y ,表示 d G dG dG ,并添加 ( d , Y , − , − ) (d, Y, −, −) (d,Y,−,−) 到表 L L L 中。
-case2解释:
SM2签名中
s
=
k
−
r
d
1
+
d
s=\frac{k-rd}{1+d}
s=1+dk−rd ,从而
k
=
s
+
(
s
+
r
)
d
k= s+(s+r)d
k=s+(s+r)d ,
V
V
V 由
(
z
1
,
.
.
.
,
z
q
s
+
2
)
(z_{1} ,..., z_{q_{s}+2})
(z1,...,zqs+2) 作为输入的群操作查询产生。所以:
k
=
s
+
(
s
+
r
)
d
=
z
1
+
z
2
d
+
z
3
k
1
+
…
+
z
q
s
+
2
k
q
s
k= s+(s+r)d=z_{1}+z_{2}d+z_{3}k_{1}+…+z_{q_{s}+2}k_{qs}
k=s+(s+r)d=z1+z2d+z3k1+…+zqs+2kqs
因为私钥
d
d
d 对于敌手完全被隐藏,所以要想上面等式相等,那么
s
=
z
1
+
z
3
k
1
+
…
+
z
q
s
+
2
k
q
s
,
且
s
+
r
=
z
2
s= z_{1}+z_{3}k_{1}+…+z_{q_{s}+2}k_{qs}, 且s+r=z_{2}
s=z1+z3k1+…+zqs+2kqs,且s+r=z2
从而
r
=
z
2
−
z
1
−
z
3
k
1
−
…
−
z
q
s
+
2
k
q
s
r=z_{2}-z_{1}-z_{3}k_{1}-…-z_{q_{s}+2}k_{qs}
r=z2−z1−z3k1−…−zqs+2kqs
V
=
f
−
1
(
r
−
e
)
=
f
−
1
(
z
2
−
z
1
−
z
3
k
1
−
…
−
z
q
s
+
2
k
q
s
−
h
(
Z
′
∣
∣
m
′
)
)
V=f^{-1}(r-e)=f^{-1}(z_{2}-z_{1}-z_{3}k_{1}-…-z_{q_{s}+2}k_{qs}-h(Z^{'}||m^{'}))
V=f−1(r−e)=f−1(z2−z1−z3k1−…−zqs+2kqs−h(Z′∣∣m′))
分析:
C
C
C 诚实地生成公钥和签名,如果
C
C
C 也完美地回答了群操作查询,那么我们知道
C
C
C 几乎模拟了
F
F
F 的完美攻击环境。实际上,很容易检查所有群元素句柄是否都是随机选择的,除了群操作查询的case 2。
现在分析case 2中生成的句柄
V
′
V^{'}
V′也是均匀分布的:
已知
V
=
f
−
1
(
r
−
e
)
=
z
2
−
z
1
−
z
3
k
1
−
…
−
z
q
s
+
2
k
q
s
−
h
(
Z
′
∣
∣
m
′
)
V=f^{-1}(r-e)=z_{2}-z_{1}-z_{3}k_{1}-…-z_{q_{s}+2}k_{qs}-h(Z^{'}||m^{'})
V=f−1(r−e)=z2−z1−z3k1−…−zqs+2kqs−h(Z′∣∣m′) ,其中
Z
′
,
m
′
Z^{'}, m^{'}
Z′,m′ 是随机选择的,
h
h
h 是 uniform 哈希函数,所以
f
−
1
f^{-1}
f−1 的输入也是随机的,同时因为
f
−
1
f^{-1}
f−1 是 almost-invertible的,所以
V
′
V^{'}
V′是均匀分布的。
表明
C
C
C 几乎完美地模拟了
F
F
F 的攻击环境。
现在只需证明 ( r ∗ , s ∗ ) (r^{∗}, s^{∗}) (r∗,s∗)是 m ∗ m^{*} m∗ 上的有效签名概率可以忽略不计。
令 k ∗ = s ∗ + ( s ∗ + r ∗ ) d k^{*}= s^{*}+(s^{*}+r^{*})d k∗=s∗+(s∗+r∗)d , ( r ∗ , s ∗ ) (r^{∗}, s^{∗}) (r∗,s∗)是 m ∗ m^{*} m∗ 上的有效签名当且仅当 ( k ∗ , V ∗ , − , − ) (k^{*}, V^{*}, -, -) (k∗,V∗,−,−) 出现在表 L L L 中,其中 V ∗ = f − 1 ( r ∗ − h ( Z ∣ ∣ m ∗ ) ) V^{*}=f^{-1}(r^{*}-h(Z||m^{*})) V∗=f−1(r∗−h(Z∣∣m∗)) 。因此想要证明 ( r ∗ , s ∗ ) (r^{∗}, s^{∗}) (r∗,s∗)是 m ∗ m^{*} m∗ 上的有效签名概率可以忽略不计,就要证明 ( k ∗ , V ∗ , − , − ) (k^{*}, V^{*}, -, -) (k∗,V∗,−,−) 出现在表 L L L 中的概率可以忽略不计。
首先
V
∗
V^{*}
V∗ 不能等于
G
G
G 或
Y
Y
Y ,不然
F
F
F 可以通过
k
∗
=
s
∗
+
(
s
∗
+
r
∗
)
d
k^{*}= s^{*}+(s^{*}+r^{*})d
k∗=s∗+(s∗+r∗)d 确定性的计算
d
d
d ,这与
d
d
d 从敌手的角度被完全隐藏相矛盾。
那么
V
∗
V^{*}
V∗ 只能在群操作查询和签名查询中被创造。
-
V ∗ V^{*} V∗ 在签名查询中被创造:
因此, V ∗ V^{*} V∗ 在签名查询中被创造的概率可以忽略不计。 -
V ∗ V^{*} V∗ 在群操作查询中被创造:
根据上面提到的case 2, r ∗ = z 2 ∗ − z 1 ∗ − z 3 ∗ k 1 − … − z q s + 2 ∗ k q s r^{*}=z_{2}^{*}-z_{1}^{*}-z_{3}^{*}k_{1}-…-z_{q_{s}+2}^{*}k_{qs} r∗=z2∗−z1∗−z3∗k1−…−zqs+2∗kqs
且存在 ( Z ′ ∣ ∣ m ′ ) (Z^{'}||m^{'}) (Z′∣∣m′) ,使得 f ( V ∗ ) = z 2 ∗ − z 1 ∗ − z 3 ∗ k 1 − … − z q s + 2 ∗ k q s − h ( Z ′ ∣ ∣ m ′ ) f(V^{*})=z_{2}^{∗}-z_{1}^{∗}-z_{3}^{∗}k_{1}-…-z_{q_{s}+2}^{∗}k_{qs}-h(Z^{'}||m^{'}) f(V∗)=z2∗−z1∗−z3∗k1−…−zqs+2∗kqs−h(Z′∣∣m′)
( r ∗ , s ∗ ) (r^{∗}, s^{∗}) (r∗,s∗)是 m ∗ m^{*} m∗ 上的有效签名当且仅当 h ( Z ∣ ∣ m ∗ ) = r ∗ − f ( V ∗ ) = h ( Z ′ ∣ ∣ m ′ ) h(Z||m^{∗}) = r^{∗} − f(V^{∗}) = h(Z^{'}||m^{'}) h(Z∣∣m∗)=r∗−f(V∗)=h(Z′∣∣m′)
由于 h h h 是抗冲突的,所以 V ∗ V^{*} V∗ 在群操作查询中被创造的概率可以忽略不计。
综上, ( k ∗ , V ∗ , − , − ) (k^{*}, V^{*}, -, -) (k∗,V∗,−,−) 出现在表 L L L 中的概率可以忽略不计,所以 ( r ∗ , s ∗ ) (r^{∗}, s^{∗}) (r∗,s∗)是 m ∗ m^{*} m∗ 上的有效签名概率可以忽略不计,也就是说 SM2 签名算法是 EFU-CMA 安全的。 定理1得证!
四、Security of SM2 Against Generalized SKS Attacks
易知
e
∗
≠
e
j
e^{*} \ne e_{j}
e∗=ej ,两个
f
f
f 也不相等,所以
(
1
)
(1)
(1) 成立的概率可忽略不计,所以 SM2 可以抵抗强密钥替换攻击 。定理 2 得证!