上一篇博文中,为了简化理解,省略了原文中关于证明的部分,现在来把这部分补上
Proof of Type-T AOS Ring Signature
AOS Ring Signature from Canonical Identification T
Type-T AOS ring signature 的安全性未被证明,用Canonical Identification 代替type-T签名定义AOS环签名:
(1)
(2)
Proof of unforgeability
KR-KOA:在唯密钥攻击(攻击者只知道公钥)下的密钥(私钥)恢复安全性-DLP assumption。
Special Soundness:一个canonical identification被称作是Special Soundness的,如果如果存在一个抽取器算法
E
x
t
{\rm Ext}
Ext,对于所有的
(
p
k
,
s
k
)
∈
K
e
y
G
e
n
(
⋅
)
(pk,sk)\in {KeyGen}(\cdot)
(pk,sk)∈KeyGen(⋅),给定任意两个可接受的文本
(
R
,
c
,
z
)
,
(
R
,
c
′
,
z
′
)
(R,c,z),(R,c',z')
(R,c,z),(R,c′,z′)(其中
c
≠
c
′
c\neq c'
c=c′),有
P
r
[
(
s
k
∗
,
p
k
)
∈
K
e
y
G
e
n
(
⋅
)
∣
s
k
∗
←
E
x
t
(
p
k
,
R
,
c
,
z
,
c
′
,
z
′
)
]
=
1
Pr[(sk^*,pk)\in{KeyGen}(\cdot)|sk^*\leftarrow Ext(pk,R,c,z,c',z')]=1
Pr[(sk∗,pk)∈KeyGen(⋅)∣sk∗←Ext(pk,R,c,z,c′,z′)]=1
证明:如果canonical identification满足Special Soundness,则可证明AOS RS在KR-KOA下的不可伪造性安全性
(逆反命题:可伪造
→
\rightarrow
→break KR-KOA)
(再通俗一点,就是敌手已知公钥,(并且可以任意查询签名和其他hash,sk)如果可以伪造新签名,则可(在SS的抽取器帮助下)恢复出私钥,打破KR)
证明:
A
:
\mathcal{A}:
A:打破AOS环签名的不可伪造性的PPT敌手,构建一个算法
B
\mathcal{B}
B来破解Type-T签名的KR-KOA。假设
B
\mathcal{B}
B从挑战者
C
T
\mathcal{C}_T
CT得到公共参数
p
a
r
a
m
param
param和公钥
p
k
∗
pk^*
pk∗
Setup.
- B \mathcal{B} B 随机选择index i ∗ ∈ [ 1 , q k ] i^*\in[1,q_k] i∗∈[1,qk].
- B \mathcal{B} B运行 K e y G e n ( ) → ( p k i , s k i ) , i ∈ [ 1 , q k ] , i ≠ i ∗ KeyGen()\rightarrow(pk_i,sk_i),i\in[1,q_k],i\neq i^* KeyGen()→(pki,ski),i∈[1,qk],i=i∗. p k i ∗ = p k ∗ pk_{i^*}=pk^* pki∗=pk∗.
- C \mathcal{C} C将 p a r a m param param和 S : = { p k i } i = 1 q k S:=\{pk_i\}_{i=1}^{q_k} S:={pki}i=1qk发送给 A \mathcal{A} A.
- B \mathcal{B} B维护一个初始化为空的表 H \mathcal{H} H.
Oracle Simulation. B \mathcal{B} B回答查询:
- H : B H:\mathcal{B} H:B将 H H H模拟为一个random oracle. 对第k个不同的查询with输入 ( m , p k , R ) (m,{\rm pk},R) (m,pk,R),选择一个随机的 c ∈ Δ c c\in\Delta_c c∈Δc.将 ( k , m , p k , R , c ) (k,m,{\rm pk},R,c) (k,m,pk,R,c)放入 H \mathcal{H} H,返回 c c c.
- C O : \mathcal{CO}: CO:输入 i i i,返回 s k i sk_i ski(如果 i = i ∗ i=i^* i=i∗,终止)
-
S
O
:
\mathcal{SO}:
SO:输入消息
m
m
m,公钥集
p
k
{\rm pk}
pk其中签名者的index 是
j
j
j.
如果 j ≠ i ∗ j\neq i^* j=i∗,返回签名 σ ← S I G N ( p a r a m , m , p k , s k j ) \sigma\leftarrow {\rm SIGN}(param,m,{\rm pk},sk_j) σ←SIGN(param,m,pk,skj).
如果 j = i ∗ j= i^* j=i∗, B \mathcal{B} B:
(1)随机选择 c 1 , z 1 , . . . , z n ∈ Z p c_1,z_1,...,z_n\in\mathbb{Z}_p c1,z1,...,zn∈Zp.
(2) 对于 i = 1 , . . . , n i=1,...,n i=1,...,n计算 R i = V ( p k i , z i , c i ) , c i + 1 = H ( m , p k , R i ) R_i=V(pk_i,z_i,c_i),c_{i+1}=H(m,{\rm pk},R_i) Ri=V(pki,zi,ci),ci+1=H(m,pk,Ri).(如果 ( ⋅ , m , p k , R n , ⋅ ) (\cdot,m,{\rm pk},R_n,\cdot) (⋅,m,pk,Rn,⋅)在 H \mathcal{H} H中已存在,重新选取 c 1 , z 1 , . . . , z n ∈ Z p c_1,z_1,...,z_n\in\mathbb{Z}_p c1,z1,...,zn∈Zp).
返回 σ = ( c 1 , z 1 , . . . , z n ) \sigma=(c_1,z_1,...,z_n) σ=(c1,z1,...,zn).
( B \mathcal{B} B simulate hash, corrupt secret key, sign可回答 A \mathcal{A} A的任意查询,但 B \mathcal{B} B无法获得 s k i ∗ sk_{i^*} ski∗)
Challenge.
- A \mathcal{A} A返回一个伪造 ( m ∗ , p k ∗ , σ ∗ = ( c 1 ∗ , z 1 ∗ , . . . , z n ∗ ) ) (m^*,{\rm pk}^*,\sigma^*=(c_1^*,z_1^*,...,z_n^*)) (m∗,pk∗,σ∗=(c1∗,z1∗,...,zn∗)). 定义 p k ∗ = { p k 1 , . . . , p k n } {\rm pk}^*=\{pk_1,...,pk_n\} pk∗={pk1,...,pkn}.如果 p k ∗ ≠ p k j ∗ pk^*\neq pk_{j^*} pk∗=pkj∗,终止;否则有 p k ∗ = p k j ∗ pk^*= pk_{j^*} pk∗=pkj∗.
-
B
\mathcal{B}
B:
(1) 对 i = 1 , . . . , n i=1,...,n i=1,...,n,计算 R i ∗ = V ( p k i , z i ∗ , c i ∗ ) , c i + 1 ∗ = H ( m ∗ , p k ∗ , R i ∗ ) R_i^*=V(pk_i,z_i^*,c_i^*),c_{i+1}^*=H(m^*,{\rm pk}^*,R_i^*) Ri∗=V(pki,zi∗,ci∗),ci+1∗=H(m∗,pk∗,Ri∗)
(2) 注意对于任意 i ∈ [ 1 , n ] , ( ⋅ , m ∗ , p k ∗ , R i ∗ , c i + 1 ∗ ) ∉ H i\in[1,n],(\cdot,m^*,{\rm pk}^*,R_i^*,c_{i+1}^*)\notin\mathcal{H} i∈[1,n],(⋅,m∗,pk∗,Ri∗,ci+1∗)∈/H的概率是 1 ∣ Δ c ∣ \frac{1}{|\Delta_c|} ∣Δc∣1。 所有的 i i i都满足 ( ⋅ , m ∗ , p k ∗ , R i ∗ , c i + 1 ∗ ) ∈ H (\cdot,m^*,{\rm pk}^*,R_i^*,c_{i+1}^*)\in\mathcal{H} (⋅,m∗,pk∗,Ri∗,ci+1∗)∈H的概率至少为 ( 1 − 1 ∣ Δ c ∣ ) n ≥ 1 − n ∣ Δ c ∣ (1-\frac{1}{|\Delta_c|})^n\geq1-\frac{n}{|\Delta_c|} (1−∣Δc∣1)n≥1−∣Δc∣n。
(3)在这种情况下,存在至少一个index i i i令 ( k i , m ∗ , p k ∗ , R i − 1 ∗ , c i ) ∈ H (k_i,m^*,{\rm pk}^*,R_{i-1}^*,c_i)\in\mathcal{H} (ki,m∗,pk∗,Ri−1∗,ci)∈H和 ( k i + 1 , m ∗ , p k ∗ , R i ∗ , c i + 1 ) ∈ H (k_{i+1},m^*,{\rm pk}^*,R_i^*,c_{i+1})\in\mathcal{H} (ki+1,m∗,pk∗,Ri∗,ci+1)∈H, k i > k i + 1 k_i> k_{i+1} ki>ki+1. 称这种索引为reverse index。 reverse index存在是因为这些H查询形成了一个环,以至少 1 / n 1/n 1/n的概率,index j ∗ j^* j∗是一个reverse index。
(4) B \mathcal{B} B rewind回到查询 H ( m ∗ , p k ∗ , R j ∗ − 1 ∗ ) H(m^*,{\rm pk}^*,R_{j^*-1}^*) H(m∗,pk∗,Rj∗−1∗)的点并得到一个不一样的 c j ∗ ′ c_{j^*}' cj∗′, A \mathcal{A} A返回另一个签名 σ ′ = ( c 1 ′ , z 1 ′ , . . . , z n ′ ) \sigma'=(c_1',z_1',...,z_n') σ′=(c1′,z1′,...,zn′).
(5) 因为 j ∗ j^* j∗是reverse index, R j ∗ ∗ R_{j^*}^* Rj∗∗对 σ \sigma σ和 σ ′ \sigma' σ′保持不变。因为 σ \sigma σ和 σ ′ \sigma' σ′都是有效签名,有:
R j ∗ ∗ = V ( p k j ∗ , z j ∗ ∗ , c j ∗ ∗ ) = V ( p k j ∗ , z j ∗ ′ , c j ∗ ′ ) R_{j^*}^*=V(pk_{j^*},z_{j^*}^*,c_{j^*}^*)=V(pk_{j^*},z_{j^*}',c_{j^*}') Rj∗∗=V(pkj∗,zj∗∗,cj∗∗)=V(pkj∗,zj∗′,cj∗′).
因此,有两个有效的文本 ( R j ∗ ∗ , c j ∗ ∗ , z j ∗ ∗ ) , ( R j ∗ ∗ , c j ∗ ′ , z j ∗ ′ ) , c j ∗ ∗ ≠ c j ∗ ′ (R_{j^*}^*,c_{j^*}^*,z_{j^*}^*),(R_{j^*}^*,c_{j^*}',z_{j^*}'),c_{j^*}^*\neq c_{j^*}' (Rj∗∗,cj∗∗,zj∗∗),(Rj∗∗,cj∗′,zj∗′),cj∗∗=cj∗′.
(6) 因为 T T T的special soundness属性,存在一个extractor E x t {\rm Ext} Ext可以输出 p k ∗ pk^* pk∗对应的 s k ∗ sk^* sk∗. B \mathcal{B} B用 s k ∗ sk^* sk∗攻破key recovery under key only attack(KR-KOA).
问题:证明中用的simulate-rewind是什么原理?
- 参考从「模拟」理解零知识证明,其中关于模拟器与理想世界的解释:
- 参考读心术:从零知识证明中提取「知识」,安全的交互协议的三个性质分别是完备性、可靠性与零知识。其中完备性(Prover在没有知识的情况下不能通过Verifier的验证)表示:
如何检验Prover的知识?:借助理想世界中的超能力,可以把对面的Prover 的知识「抽取」出来,而在现实世界中没有超能力,所以还是零知识的。这个超能力就是rewind
Proof of anonymous
Challenge.
- A 1 \mathcal{A}_1 A1给 B \mathcal{B} B: m , p k m,{\rm pk} m,pk和 i 0 , i 1 i_0,i_1 i0,i1
-
B
\mathcal{B}
B随机选择
c
1
,
z
1
,
.
.
.
,
z
n
∈
Z
p
c_1,z_1,...,z_n\in \mathbb{Z}_p
c1,z1,...,zn∈Zp,对于
i
=
1
,
.
.
.
,
n
i=1,...,n
i=1,...,n,计算
R
i
=
V
(
p
k
i
,
z
i
,
c
i
)
,
c
i
+
1
=
H
(
m
,
p
k
,
R
i
)
R_i=V(pk_i,z_i,c_i),c_{i+1}=H(m,{\rm pk},R_i)
Ri=V(pki,zi,ci),ci+1=H(m,pk,Ri),令
H
(
m
,
p
k
,
R
n
)
=
c
1
H(m,{\rm pk},R_n)=c_1
H(m,pk,Rn)=c1
(如果哈希值已经被 H H HOracle查询过,重新选取 c 1 , z 1 , . . . , z n ∈ Z p c_1,z_1,...,z_n\in\mathbb{Z}_p c1,z1,...,zn∈Zp) - 返回
σ
=
(
c
1
,
z
1
,
.
.
.
,
z
n
)
\sigma=(c_1,z_1,...,z_n)
σ=(c1,z1,...,zn)和
{
ω
i
}
i
=
1
q
k
\{\omega_i \}_{i=1}^{q_k}
{ωi}i=1qk给
A
2
\mathcal{A}_2
A2.
B
\mathcal{B}
B随机选择一个bit
b
b
b.
Output.
A 2 \mathcal{A}_2 A2输出一个bit b ′ b' b′,注意在生成签名 σ \sigma σ中没用到 b b b,所以 A 2 \mathcal{A}_2 A2仅可以1/2的概率赢。
Proof of DualRing
为Canonical Identification定义了新的安全性模型:special impersonation under key only attack,是impersonation attack和 special soundness的结合,敌手通过输出两个具有相同承诺的有效文本而获胜。
用这个代替special soundness together with key recovery under key only attack的原因:DualRing-LB有效的lattice-based identification不满足标准的special soundness定义,这起源于有效格基ZKP的knowledge gap. 方法中的知识抽取器不能保证恢复给定pk的sk,而是恢复一个与公私钥对的关系密切相关的放松关系的近似见证。