学习笔记:《Short Randomizable Signatures》中的安全性证明

2023-11-10 19:10

本文主要是介绍学习笔记:《Short Randomizable Signatures》中的安全性证明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Short Randomizable Signatures》中的安全性证明

  • Assumptions
    • EUF-CMA
    • LRSW
    • Assumption 1
    • Assumption 2
    • 证明假设成立
  • 方案的安全性
    • Single-Message Signature
    • Multi-Message Signature
    • Sequential Aggregate Signature

原方案https://blog.csdn.net/jiongxv/article/details/125261870
注意区分随机预言机模型与标准预言机模型:https://blog.csdn.net/weixin_43137080/article/details/109595044
这篇文章中涉及的安全性证明是without random oracles but in the generic group model

Assumptions

EUF-CMA

签名方案的标准安全概念是在选择消息攻击(EUF-CMA) [GMR88]下的存在不可伪造性,这意味着即使获得了对签名oracle的访问权,也很难为从未向签名oracle请求的消息m输出有效的签名对 ( m , σ ) (m,\sigma) (m,σ)。它被定义为挑战者 C \mathcal{C} C和敌手 A \mathcal{A} A之间的博弈:
在这里插入图片描述
如果没有概率多项式时间对手 A \mathcal{A} A能以不可忽略的概率获胜,则签名方案是EUF-CMA安全的.

LRSW

到目前为止,一个经典的假设是所谓的LRSW [LRSW00],它承认两个协议:

  • issuing protocol:允许用户在消息 x x x上获得签名 σ \sigma σ,只需向签名者发送 x x x的承诺即可
  • proving protocol:允许用户以零知识的方式证明他对 x x x承诺上的签名的知识。它们导致高效的匿名凭证

(LRSW Assumption) G \mathbb{G} G是素数阶p的循环群,有一个生成元g。对于 X = g x X = g^x X=gx Y = g y Y = g^y Y=gy,其中 x x x y y y Z p \mathbb{Z}_p Zp中的随机标量。我们在输入 m ∈ Z p m\in \mathbb{Z}_p mZp上定义oracle O ( m ) \mathcal{O}(m) O(m),它选择一个随机 h ∈ G h\in \mathbb G hG,输出三元组 T = ( h , h y , h x + m x y ) T = (h, h^y, h^{x+mxy}) T=(h,hy,hx+mxy)。给定 ( X , Y ) (X, Y) (X,Y)和对这个oracle的无限访问,没有敌手可以有效地为一个新标量 m ∗ m^* m生成这样的三元组,而不要求 O \mathcal{O} O

Assumption 1

(Assumption 1).设 ( p , G 1 , G 2 , G T , e ) (p, \mathbb{G}_1, \mathbb{G}_2, \mathbb{G}_T, e) (p,G1,G2,GT,e)为Type-3(非对称, G 1 ≠ G 2 \mathbb{G}_1\neq\mathbb{G}_2 G1=G2)的双线性组设置, g g g (或 g ~ \widetilde g g ) 是 G 1 \mathbb{G}_1 G1 (或 G 2 \mathbb{G}_2 G2)的生成元。对于 ( X = g x , Y = g y ) (X = g^x,Y = g^y) (X=gx,Y=gy) ( X ~ = g ~ x , Y ~ = g ~ y ) , x , y ∈ Z p ( \widetilde X = \widetilde g^x, \widetilde Y = \widetilde g^y),x,y\in\mathbb Z_p (X =g x,Y =g y),x,yZp, 在输入 m ∈ Z p m\in \mathbb{Z}_p mZp上定义oracle O ( m ) \mathcal{O}(m) O(m),它选择一个随机 h ∈ G 1 h\in \mathbb G_1 hG1,输出元组 P = ( h , h x + m y ) P=(h,h^{x+my}) P=(h,hx+my)。给定 ( g , Y , g ~ , X ~ , Y ~ ) (g,Y,\widetilde g,\widetilde X, \widetilde Y) (g,Y,g ,X ,Y )和对这个oracle的无限访问,没有敌手可以有效地为一个新标量 m ∗ m^* m生成这样的元组,with h ≠ 1 G 1 h \neq 1_{\mathbb G_1} h=1G1,而不要求 O \mathcal{O} O

可以注意到,使用pairing,可以检查敌手的输出,因为对 P = ( P 1 , P 2 ) P = (P_1, P_2) P=(P1,P2)应该满足 e ( P 1 , X ~ ⋅ Y ~ m ) = e ( P 2 , g ~ ) e(P_1,\widetilde X\cdot \widetilde Y^m)=e(P_2,\widetilde g) e(P1,X Y m)=e(P2,g ).
此外, ( X , Y ) (X, Y) (X,Y)足以回答oracle查询:在标量 m ∈ Z p m\in \mathbb{Z}_p mZp上,计算 ( g r , ( X ⋅ Y m ) r ) (g^r,(X·Y^m)^r) (gr,(XYm)r)这需要每个查询进行3次幂运算,而知道 ( x , y ) (x, y) (x,y)只需要在 G 1 \mathbb{G}_1 G1中进行随机抽样和一次幂运算。

在某些情况下,一个较弱的假设就足够了,即不给敌手 Y Y Y:

Assumption 2

(Assumption 2).设 ( p , G 1 , G 2 , G T , e ) (p, \mathbb{G}_1, \mathbb{G}_2, \mathbb{G}_T, e) (p,G1,G2,GT,e)为Type-3(非对称, G 1 ≠ G 2 \mathbb{G}_1\neq\mathbb{G}_2 G1=G2)的双线性组设置, g g g (或 g ~ \widetilde g g ) 是 G 1 \mathbb{G}_1 G1 (或 G 2 \mathbb{G}_2 G2)的生成元。对于 ( X = g ~ x , Y = g ~ y ) , x , y ∈ Z p (X = \widetilde g^x,Y = \widetilde g^y),x,y\in\mathbb Z_p (X=g x,Y=g y),x,yZp, 在输入 m ∈ Z p m\in \mathbb{Z}_p mZp上定义oracle O ( m ) \mathcal{O}(m) O(m),它选择一个随机 h ∈ G 1 h\in \mathbb G_1 hG1,输出元组 P = ( h , h x + m y ) P=(h,h^{x+my}) P=(h,hx+my)。给定 ( g ~ , X ~ , Y ~ ) (\widetilde g,\widetilde X, \widetilde Y) (g ,X ,Y )和对这个oracle的无限访问,没有敌手可以有效地为一个新标量 m ∗ m^* m生成这样的元组, with h ≠ 1 G 1 h \neq 1_{\mathbb G_1} h=1G1,而不要求 O \mathcal{O} O

证明假设成立

Theorem 4.在一般双线性群模型中,上述假设1(因此假设2)成立:在 q q q 次oracle查询和 q G q_G qG 次group-oracle查询之后,没有敌手能够为一个新的标量以好于 6 ( q + q G ) 2 / p 6(q + q_G) ^2/p 6(q+qG)2/p的概率生成一个有效对.
Proof.
假设 r i ∈ Z p ∗ r_i \in \mathbb{Z}^∗_p riZp,第i次对 m i m_i mi的查询返回 ( h i , t i = h i ( x + y ⋅ m i ) ) , h i = g r i (h_i,t_i=h_i^{(x+y\cdot m_i)}),h_i=g^{r_i} (hi,ti=hi(x+ymi)),hi=gri

我们必须首先证明敌手 A \mathcal A A不能符号化地产生一个新的有效元组,然后证明偶然有效性是非常不可能的。
对于标量 m ∗ m^* m上的输出元组 ( h ∗ , t ∗ ) (h ^*,t ^*) (h,t),由于 h ∗ , t ∗ ∈ G 1 h^*,t^*\in \mathbb G_1 h,tG1,所以它们只能是之前的元组 ( h i , t i ) , g , Y (h_i,t_i), g,Y (hi,ti),g,Y的组合(没有任何 G 2 \mathbb G_2 G2中的元素的帮助):它们是在 G 1 \mathbb G_1 G1通过对内部规则的oracle的查询构建的,所以我们知道 ( ( u i , 1 , v i , 1 , u i , 2 , v i , 2 ) i , ( w 1 , w 2 ) , ( w 1 ′ , w 2 ′ ) ) ∈ Z p 4 q + 4 ((u_{i,1},v_{i,1},u_{i,2},v_{i,2})_i,(w_1,w_2),(w_1',w_2'))\in \mathbb Z_p^{4q+4} ((ui,1,vi,1,ui,2,vi,2)i,(w1,w2),(w1,w2))Zp4q+4满足:
在这里插入图片描述
因此,有新元组
在这里插入图片描述
在这里插入图片描述
新元组的有效性意味着 z ∗ = r ∗ ( x + y ⋅ m ∗ ) z^*=r^*(x+y\cdot m^*) z=r(x+ym),这导致:
在这里插入图片描述
为了使两个多变量多项式相等,两边应该出现相同的单项:

  • 左边没有3次的单项式,所以对所有i, v i , 1 = 0 v_{i,1}=0 vi,1=0
  • 右边没有 r i r_i ri的项,所以对所有i, u i , 2 = 0 u_{i,2}=0 ui,2=0
  • 右边没有常数项,所以 w 2 = 0 w_2=0 w2=0
  • 左边没有 x x x x y xy xy的项,所以 w 1 = 0 , w 1 ′ = 0 w_1=0,w_1'=0 w1=0,w1=0:
    在这里插入图片描述
  • 右边没有 y y y的项了,所以 w 2 ′ = 0 w_2'=0 w2=0:
    在这里插入图片描述
  • 对于所有的i, x r i xr_i xri的系数相等: v i , 2 = u i , 1 v_{i,2}=u_{i,1} vi,2=ui,1 y r i yr_i yri的系数: v i , 2 ⋅ m i = u i , 1 ⋅ m ∗ v_{i,2}\cdot m_i=u_{i,1}\cdot m^* vi,2mi=ui,1m
    因为 r ∗ ≠ 0 r^*\neq 0 r=0(否则 h ∗ = 1 G 1 h^*=1_{\mathbb G_1} h=1G1),所以右边不等于0, v i , 2 = u i , 1 ≠ 0 v_{i,2}=u_{i,1}\neq0 vi,2=ui,1=0 m i = m ∗ m_i=m^* mi=m,这不是新的标量。
    所以,敌手无法以符号化的方式为新标量生成有效的元组。

还需要评估偶然有效的概率:当两个不同的多项式涉及到对Oracle的回答时,得到相同的值。

  • 由于oracle提供的元素与最多2阶多项式相关联(指被查询过的结果 ( h i , t i ) (h_i,t_i) (hi,ti)的系数 u i 1 , v i , 1 , u i , w , v i , 2 u_{i_1},v_{i,1},u_{i,w},v_{i,2} ui1,vi,1,ui,w,vi,2多项式),
  • 由于公共元素与最多1阶多项式相关联(指公共元素 Y , g Y,g Y,g的系数 w 1 , w 2 , w 1 ′ , w 2 ′ w_1,w_2,w_1',w_2' w1,w2,w1,w2多项式),
  • 从对不同组oracle的查询中得到的多项式最多3阶(因为配对查询)

(解释:公共元素就是group oracle,一阶表示只有一个变量,对应 q G q_G qG个结果;同理,由oracle提供的元素2阶表示两个结果,对应 2 q 2q 2q;而前文所述pairing中 g ~ \widetilde g g 等其他组oracle查询的多项式是3阶)
q G q_G qG为group-oracle查询的最大值,因此最多有 3 + 2 q + q G 3+2q +q_G 3+2q+qG多项式,所以最多 ( 3 + 2 q + q G ) 2 / 2 (3+2q +q_G)^2/2 (3+2q+qG)2/2对不同的多项式能求出相同的值.

根据Schwartz-Zippel引理, ( 3 + 2 q + q G ) 2 / 2 (3 + 2q + q_G)^2/2 (3+2q+qG)2/2个多项式的总概率上界为 3 / p × ( 3 + 2 q + q G ) 2 / 2 p 3/p\times(3 + 2q + q_G)^2/2p 3/p×(3+2q+qG)2/2p

3 ( 3 + 2 q + q G ) 2 / 2 p ≤ 6 ( q + q G ) 2 / p 3(3 + 2q + q_G)^2/2p \leq 6(q + q_G)^2/p 3(3+2q+qG)2/2p6(q+qG)2/p(放缩法),可以忽略不计。
(Schwartz-Zippel引理)
在这里插入图片描述

方案的安全性

Single-Message Signature

  • 已经证明了Assumption 2是成立的,即如果有方案满足assumption2,则没有敌手能够成功伪造;single message是完全符合Assumption 2的
  • 对于single message方案的EUF-CMA,query部分返回对Sign的oracle查询结果;等同于assumption 2。
  • 所以,single message方案是满足EUF-CMA的

Multi-Message Signature

把这个多消息签名方案的安全性依赖于单消息签名方案的安全性,依此类推,假设2。
Theorem 6
在上述假设2下,多消息签名方案满足EUF-CMA安全级别。
更准确地说,如果攻击者能够以 ϵ \epsilon ϵ的概率攻破多消息签名方案的EUF-CMA安全性,则在相同的运行时间和相同的签名查询次数内,存在攻击者攻破单消息签名方案的EUF-CMA安全性,且成功的概率大于 ϵ − q / p \epsilon-q/p ϵq/p
Proof.
假设 A \mathcal A A是多消息签名方案的EUF-CMA安全性的敌手。针对单消息签名方案的EUF-CMA安全性,使用 A \mathcal A A构造一个归约 R \mathcal R R。后一场game的挑战者将用 C \mathcal C C表示.

  • Setup. R \mathcal R R C \mathcal C C接收到一个公钥 p k ∗ {\rm pk^*} pk,其中包含签名方案的公共参数 p p pp pp ( g ~ , X ~ , Y ~ ) (\widetilde g,\widetilde X, \widetilde Y) (g ,X ,Y )。它选择 α j , β j ← Z p , j = 1 , . . . , r \alpha_j,\beta_j\leftarrow \mathbb Z_p,j=1,...,r αj,βjZp,j=1,...,r,令 Y ~ j ← Y ~ α j g ~ β j \widetilde Y_j\leftarrow \widetilde Y^{\alpha_j}\widetilde g^{\beta_j} Y jY αjg βj。输出公钥 p k ← ( g ~ , X ~ , Y ~ 1 , . . . , Y ~ r ) pk\leftarrow(\widetilde g,\widetilde X,\widetilde Y_1,...,\widetilde Y_r) pk(g ,X ,Y 1,...,Y r)
  • Queries. 当 A \mathcal A A查询一个向量 M i = ( m i , 1 , . . . , m i , r ) M_i=(m_{i,1},...,m_{i,r}) Mi=(mi,1,...,mi,r)上的签名时, R \mathcal R R首先向 C \mathcal C C请求一个 m i = ∑ α j m i , j m_i=\sum\alpha_jm_{i,j} mi=αjmi,j上的签名 σ = ( σ 1 , σ 2 ) \sigma=(\sigma_1,\sigma_2) σ=(σ1,σ2) ,从而 e ( σ 1 , X ~ ⋅ Y ~ ∑ α j m i , j ) = e ( σ 2 , g ~ ) e(\sigma_1,\widetilde X\cdot\widetilde Y^{\sum\alpha_jm_{i,j}})=e(\sigma_2,\widetilde g) e(σ1,X Y αjmi,j)=e(σ2,g ).接着,计算 σ 2 ′ ← σ 2 ⋅ σ 1 ∑ β j ⋅ m i , j \sigma_2'\leftarrow\sigma_2\cdot\sigma_1^{\sum \beta_j\cdot m_{i,j}} σ2σ2σ1βjmi,j并返回有效签名 ( σ 1 , σ 2 ′ ) (\sigma_1,\sigma_2') (σ1,σ2) A \mathcal A A
    在这里插入图片描述
  • Output. 最终, A \mathcal A A在向量 M ∗ = ( m 1 ∗ , . . . , m r ∗ ) M ^*=(m_1^*,...,m_r^*) M=(m1,...,mr)上输出签名 σ = ( σ 1 , σ 2 ) \sigma=(\sigma_1,\sigma_2) σ=(σ1,σ2)。签名 σ \sigma σ是一个有效的伪造,如果:
    在这里插入图片描述
    如果对于某些 i = { 1 , . . . , q } i=\{1,...,q\} i={1,...,q}, ∑ α j m j ∗ = ∑ α j m i , j , R \sum \alpha_jm_j^*=\sum\alpha_jm_{i,j},\mathcal R αjmj=αjmi,j,R中止。
    否则,输出 σ ∗ = ( σ 1 ∗ , σ 2 ∗ ) : σ 1 ∗ ← σ 1 , σ 2 ∗ ← σ 2 ⋅ σ 1 − ∑ β j ⋅ m j ∗ , m ∗ ← ∑ α j m j ∗ \sigma^*=(\sigma_1^*,\sigma_2^*):\sigma_1^*\leftarrow \sigma_1,\sigma_2^*\leftarrow\sigma_2\cdot\sigma_1^{-\sum\beta_j\cdot m_j^*},m^*\leftarrow\sum\alpha_jm_j^* σ=(σ1,σ2):σ1σ1,σ2σ2σ1βjmj,mαjmj:
    在这里插入图片描述
    因为消息 m ∗ m^* m从未查询过,所以这是一个有效的伪造签名。
    分析:
  • query阶段,敌手 A \mathcal A A经过q次查询,获得对于消息 M i = ( m i , 1 , . . . , m i , r ) M_i=(m_{i,1},...,m_{i,r}) Mi=(mi,1,...,mi,r)的合法multi message签名;
  • output阶段,先假设敌手 A \mathcal A A能输出对于新消息 M ∗ = ( m 1 ∗ , . . . , m r ∗ ) M ^*=(m_1^*,...,m_r^*) M=(m1,...,mr)合法的multi message签名,再证明可以利用这组签名伪造single messge签名
  • 命题:多消息伪造 → \rightarrow 单消息伪造;逆否命题:单消息不可伪造 → \rightarrow 多消息不可伪造
  • 注意:如果出现 ∑ α j m j ∗ = ∑ α j m i , j \sum \alpha_jm_j^*=\sum\alpha_jm_{i,j} αjmj=αjmi,j,表示用multi message组合而成的single message已经查询过了,不符合EUF-CMA的要求,所以中止这种巧合。

证明这种线性关系几乎不可能出现:

(要区分 R \mathcal R R A \mathcal A A的视角, α j \alpha_j αj是由 R \mathcal R R选择的, A \mathcal A A得到的公钥中包含 α j \alpha_j αj,分析这种“包含”是否导致公钥和 α j \alpha_j αj之间存在某种联系,即 A \mathcal A A是否能从中获得某些知识)
设标量 y , Y ~ = g ~ y y,\widetilde Y=\widetilde g^y y,Y =g y,随机选择 γ j ← Z p , j = 1 , . . . , r \gamma_j\leftarrow\mathbb Z_p,j=1,...,r γjZp,j=1,...,r,设 α j ′ ← α j − γ j , β j ′ ← β j + y γ j , j = 1 , . . . , r \alpha_j'\leftarrow\alpha_j-\gamma_j,\beta_j'\leftarrow\beta_j+y\gamma_j,j=1,...,r αjαjγj,βjβj+yγj,j=1,...,r,可以注意到:
在这里插入图片描述
因此,公钥是独立于实际的 γ j \gamma_j γj的,因此没有揭示 α j \alpha_j αj的信息,这与仅依赖于oracle和公钥选择的 σ 1 \sigma_1 σ1的签名是一样的。
因此,敌手的完整视图完全独立于 α j \alpha_j αj的视图。因此, R \mathcal R R中止的概率的上限(多项式Schwartz-Zippel引理)是 q × 1 / p = q / p q\times 1/p=q/p q×1/p=q/p
结论 R \mathcal R R成功将攻破multi message签名规约到攻破single message签名的概率大于 ϵ − q / p \epsilon-q/p ϵq/p.证毕。

Sequential Aggregate Signature

在认证公钥设置中,我们将这个聚合签名方案的安全性依赖于单消息签名方案的安全性,依此类推假设2:

Theorem 7. 在上述假设2下,在认证公钥设置下,聚合签名方案达到EUF-CMA安全级别。更准确地说,如果攻击者能够破坏聚合签名方案的EUF-CMA安全性,则存在攻击单消息签名方案的EUF-CMA安全性的攻击者,在相同的运行时间和相同的签名查询次数内,以相同的概率成功。
Proof.
在认证公钥设置中,假设 A \mathcal A A是聚合签名方案的EUF-CMA安全性的敌手。针对单消息签名方案的EUF-CMA安全性,使用 A \mathcal A A构造一个归约 R \mathcal R R。后一场game的挑战者将用 C \mathcal C C表示.

  • Setup. R \mathcal R R首先将密钥列表KeyList初始化为空。然后,从 C \mathcal C C中获取一个公钥 p k {\rm pk} pk,其中包含签名方案的公共参数 p p pp pp ( g ~ , X ~ , Y ~ ) (\widetilde g,\widetilde X, \widetilde Y) (g ,X ,Y )
    • 请求 C \mathcal C C在0上签名,返回 τ = ( τ 1 , τ 2 ) \tau=(\tau_1,\tau_2) τ=(τ1,τ2)使 e ( τ 1 , X ~ ) = e ( τ 2 , g ~ ) e(\tau_1,\widetilde X)=e(\tau_2,\widetilde g) e(τ1,X )=e(τ2,g ) ,可以设置 g ← τ 1 g\leftarrow \tau_1 gτ1 X ← τ 2 X\leftarrow \tau_2 Xτ2
    • 将聚合签名方案的公共参数设为 ( p p , g , X , g ~ , X ~ ) (pp,g,X,\widetilde g,\widetilde X) (pp,g,X,g ,X ),并将 p k ∗ ← Y ~ {\rm pk} ^*\leftarrow\widetilde Y pkY 发送给 A \mathcal A A。在下面, x ∗ x^ * x y ∗ y ^* y将表示(未知)标量,使 X ~ = g ~ x ∗ \widetilde X=\widetilde g^{x^*} X =g x(及 X = g x ∗ X=g^{x^*} X=gx), Y ~ = g ~ y ∗ \widetilde Y=\widetilde g^{y^*} Y =g y.因此,标量 y ∗ y^* y是与 p k ∗ pk^* pk相关联的未知密钥 s k ∗ sk^* sk(注意 R \mathcal R R可以请求 C \mathcal C C的查询和公共信息,但并不知道single message的私钥等)。
  • Join Query.
    A \mathcal A A要求添加一个公钥 p k i pk_i pki时,认证过程包括对相关密钥 s k i sk_i ski的知识证明,允许 R \mathcal R R提取它:它将 p k i pk_i pki存储在KeyList中,并将 ( s k i , p k i ) (sk_i,pk_i) (ski,pki)存储在其自己的签名/验证密钥列表中,以供将来的模拟使用
  • Signature Query.
    • A \mathcal A A请求将消息 m i m_i mi聚合到公共密钥 ( p k i , 1 , . . . , p k i , r i ) (pk_{i,1},...,pk_{i,r_i}) (pki,1,...,pki,ri)下消息 ( m i , 1 , . . . , m i , r i ) (m_{i,1},...,m_{i,r_i}) (mi,1,...,mi,ri)上的聚合签名 σ i \sigma_i σi上时,如果 r i > 0 r_i>0 ri>0, R \mathcal R R首先检查 σ i \sigma_i σi的有效性,并在否定的情况下中止。
    • 请求 C \mathcal C C m i m_i mi上签名,返回 σ = ( σ 1 , σ 2 ) \sigma = (\sigma_1,\sigma_2) σ=(σ1,σ2)
    • 聚合签名中涉及的所有公钥必须事先经过认证,然后 R \mathcal R R知道相关的密钥 ( s k i , 1 , . . . , s k i , r i ) = ( y i , 1 , . . . , y i , r i ) (sk_{i,1},...,sk_{i,r_i}) = (y_{i,1},...,y_{i,r_i}) (ski,1,...,ski,ri)=(yi,1,...,yi,ri):它随机选择一个 t ← Z p t\leftarrow\mathbb Z_p tZp并返回 σ ′ ← ( σ 1 t , ( σ 2 ⋅ σ 1 ∑ j = 1 r i y i , j ⋅ m i , j ) t ) \sigma'\leftarrow(\sigma_1^t,(\sigma_2\cdot \sigma_1^{\sum_{j=1}^{r_i}y_{i,j}\cdot m_{i,j}})^t) σ(σ1t,(σ2σ1j=1riyi,jmi,j)t)。这个签名满足:
      在这里插入图片描述
      它是在公钥 ( ( p k i , j ) i , p k i ∗ ) ((pk_{i,j})_i,pk_i^*) ((pki,j)i,pki)下,对向量 ( ( m i , j ) i , m i ) ((m_{i,j})_i,m_i) ((mi,j)i,mi)的有效签名.

分析:(这是不是查询并生成合法聚合签名的过程?)
已知一个对单消息 m i m_i mi的签名, ( σ 1 , σ 2 = σ 1 x + y i ) (\sigma_1,\sigma_2=\sigma_1^{x+y_i}) (σ1,σ2=σ1x+yi)
根据聚合签名的原始定义,首先要构造一个将消息 m i m_i mi聚合到公共密钥 ( p k i , 1 , . . . , p k i , r i ) (pk_{i,1},...,pk_{i,r_i}) (pki,1,...,pki,ri)下消息 ( m i , 1 , . . . , m i , r i ) (m_{i,1},...,m_{i,r_i}) (mi,1,...,mi,ri)上的聚合签名 σ i \sigma_i σi:
- j = 0 , σ i , 0 = ( g , X ) j=0,\sigma_{i,0}=(g,X) j=0,σi,0=(g,X)
- j = 1 , σ i , 1 = ( g t i , 1 , ( X ⋅ g y i , 1 m i , 1 ) t i , 1 ) j=1,\sigma_{i,1}=(g^{t_{i,1}},(X\cdot g^{y_{i,1}m_{i,1}})^{t_{i,1}}) j=1,σi,1=(gti,1,(Xgyi,1mi,1)ti,1)
- j = 2 , σ i , 2 = ( g t i , 1 t i , 2 , ( X ⋅ g y i , 1 m i , 1 + y i , 2 m i , 2 ) t i , 1 t i , 2 ) j=2,\sigma_{i,2}=(g^{t_{i,1}t_{i,2}},(X\cdot g^{y_{i,1}m_{i,1}+y_{i,2}m_{i,2}})^{t_{i,1}t_{i,2}}) j=2,σi,2=(gti,1ti,2,(Xgyi,1mi,1+yi,2mi,2)ti,1ti,2)
- …
- j = r i , σ i = ( g ∏ j t i , j , ( X ⋅ g ∑ j y i , j m i , j ) ∏ j t i , j ) = j=r_i,\sigma_i=(g^{\prod_j t_{i,j}},(X\cdot g^{\sum_j y_{i,j}m_{i,j}})^{\prod_j t_{i,j}})= j=ri,σi=(gjti,j,(Xgjyi,jmi,j)jti,j)= ( σ 1 , σ 1 x + ∑ j y i , j m i , j ) (\sigma_1,\sigma_1^{x+\sum_j y_{i,j}m_{i,j}}) (σ1,σ1x+jyi,jmi,j)(用 σ 1 \sigma_1 σ1表示了 g ∏ j t i , j g^{\prod_j t_{i,j}} gjti,j
- 那么后面也要变换: σ ′ = ( σ 1 t , σ 2 ′ ) \sigma'=(\sigma_1^t,\sigma_2') σ=(σ1t,σ2) σ 2 ′ = ( σ 2 ⋅ σ 1 y i m i ) t = ( σ 1 x + ∑ j y i , j m i , j ⋅ σ 1 y i m i ) t = ( σ 2 m i ⋅ σ 1 ∑ j y i , j m i , j ) t \sigma_2'=(\sigma_2\cdot\sigma_1^{y_im_i})^t=(\sigma_1^{x+\sum_j y_{i,j}m_{i,j}}\cdot\sigma_1^{y_im_i})^t=(\sigma_2^{m_i}\cdot\sigma_1^{\sum_j y_{i,j}m_{i,j}})^t σ2=(σ2σ1yimi)t=(σ1x+jyi,jmi,jσ1yimi)t=(σ2miσ1jyi,jmi,j)t

  • Output.
    A \mathcal A A最终在公钥 ( p k 1 , . . . , p k r ) (pk_1,...,pk_r) (pk1,...,pkr)下的消息 ( m 1 ∗ , . . . , m r ∗ ) (m_1^*,...,m_r^*) (m1,...,mr)上输出一个聚合签名 σ = ( σ 1 , σ 2 ) \sigma=(\sigma_1,\sigma_2) σ=(σ1,σ2)。当满足以下条件时,聚合签名σ是一个有效的伪造:
    在这里插入图片描述
    1代表 e ( σ 1 , X ~ ⋅ ∏ p k j m j ∗ ) = e ( σ 2 , g ~ ) e(\sigma_1,\widetilde X\cdot\prod pk_j^{m_j^*})=e(\sigma_2,\widetilde g) e(σ1,X pkjmj)=e(σ2,g )
    2代表 R \mathcal R R知道所有 y j y_j yj满足 p k j = g ~ y j , j = 1 , . . . , r pk_j=\widetilde g^{y_j},j=1,...,r pkj=g yj,j=1,...,r p k j ≠ p k ∗ pk_j\neq pk^* pkj=pk
    3代表在 1 , . . . , r 1,...,r 1,...,r中有一个唯一的 j ∗ j^* j, p k j ∗ pk_{j^*} pkj,对应未查询过的 m j ∗ m_{j^*} mj
    (下面构造single message的伪造)
    R \mathcal R R可以计算 σ ∗ = ( σ 1 ∗ ← σ 1 , σ 2 ∗ ← σ 2 ⋅ ∏ j ≠ j ∗ σ 1 − y j ⋅ m j ∗ ) \sigma^*=(\sigma_1^*\leftarrow\sigma_1,\sigma_2^*\leftarrow\sigma_2\cdot\prod_{j\neq j^*}\sigma_1^{-y_j\cdot m_j^*}) σ=(σ1σ1,σ2σ2j=jσ1yjmj)满足:
    在这里插入图片描述
    分析:(这是不是构造了一个有效的单消息签名伪造?)
    σ ∗ = ( σ 1 ∗ ← σ 1 , σ 2 ∗ ← σ 2 ⋅ ∏ j ≠ j ∗ σ 1 − y j ⋅ m j ∗ ) = ( σ 1 , σ 1 x + ∑ j ≠ j ∗ p k j m j ∗ + p k j ∗ m j ∗ ∗ ⋅ σ 1 ∑ j ≠ j ∗ − y j ⋅ m j ∗ ) = ( σ 1 , σ 1 x + p k j ∗ m j ∗ ∗ ) \begin{aligned} \sigma^*&=(\sigma_1^*\leftarrow\sigma_1,\sigma_2^*\leftarrow\sigma_2\cdot\prod_{j\neq j^*}\sigma_1^{-y_j\cdot m_j^*})\\ &=(\sigma_1,\sigma_1^{x+\sum_{j\neq j^*}pk_jm_j^*+pk_{j^*}m_{j^*}^*}\cdot\sigma_1^{\sum_{j\neq j^*}-y_j\cdot m_j^*})\\ &=(\sigma_1,\sigma_1^{x+pk_{j^*}m_{j^*}^*}) \end{aligned} σ=(σ1σ1,σ2σ2j=jσ1yjmj)=(σ1,σ1x+j=jpkjmj+pkjmjσ1j=jyjmj)=(σ1,σ1x+pkjmj)
    是构造了一个有效的未查询过的单消息签名。

但是必须另外证明签名查询是用 σ ′ ← ( σ 1 t , ( σ 2 ⋅ σ 1 ∑ j = 1 r i y i , j ⋅ m i , j ) t ) \sigma'\leftarrow(\sigma_1^t,(\sigma_2\cdot \sigma_1^{\sum_{j=1}^{r_i}y_{i,j}\cdot m_{i,j}})^t) σ(σ1t,(σ2σ1j=1riyi,jmi,j)t)正确模拟的, σ = ( σ 1 , σ 2 ) \sigma= (\sigma_1,\sigma_2) σ=(σ1,σ2)是在 p k ∗ pk^* pk m 1 m_1 m1的签名, t t t是一个随机标量,而真正的签名应该是 σ ′ ← ( σ i , 1 t , ( σ i , 2 ⋅ σ i , 1 y ⋅ m ) t ) \sigma'\leftarrow(\sigma_{i,1}^t,(\sigma_{i,2}\cdot \sigma_{i,1}^{y\cdot m})^t) σ(σi,1t,(σi,2σi,1ym)t),其中 σ i = ( σ i , 1 , σ i , 2 ) \sigma_i= (\sigma_{i,1},\sigma_{i,2}) σi=(σi,1,σi,2)是公钥 ( p k i , 1 , . . . , p k i , r i ) (pk_{i,1},...,pk_{i,r_i}) (pki,1,...,pki,ri)下消息 ( m i , 1 , . . . , m i , r i ) (m_{i,1},...,m_{i,r_i}) (mi,1,...,mi,ri)上的有效签名(或当 r = 0 r = 0 r=0 σ i = ( g , X ) \sigma_i = (g,X) σi=(g,X)), t t t是一个随机标量。

但可以注意到,在这两种情况下, σ 1 ′ \sigma_1' σ1 G 1 ∗ \mathbb G _1^* G1中的一个随机元素,而 σ 2 ′ \sigma_2' σ2是满足 e ( σ 2 ′ , g ~ ) = e ( σ 1 ′ , X ~ ⋅ ∏ j = 1 r i p k i , j m i , j ⋅ p k m i ) e(\sigma_2',\widetilde g) = e(\sigma_1', \widetilde X\cdot \prod_{j=1}^{r_i} pk_{i,j}^{m_{i,j}}\cdot pk^{m_i}) e(σ2,g )=e(σ1,X j=1ripki,jmi,jpkmi)的唯一元素。因此,完美的模拟。
结论:多消息伪造 → \rightarrow 单消息伪造;逆否命题:单消息不可伪造 → \rightarrow 多消息不可伪造

这篇关于学习笔记:《Short Randomizable Signatures》中的安全性证明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/384686

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件