学习笔记:Report and trace ring signatures

Ashley Fraser and Elizabeth A Quaglia. Report and trace ring signatures. In International Conference on Cryptology and Network Security, pages 179-199. Springer, 2021(CACR C).https://link.springer.com/chapter/10.1007/978-3-030-92548-2_10
引入了报告和跟踪环签名方案,平衡了签名者匿名的愿望和报告恶意行为并随后撤销匿名的能力。与现有的问责环签名文献进行了比较。
这篇文章的意义更多地是给出了一种定义和范式。

Syntax and Security

Syntax

在这里插入图片描述
在这里插入图片描述

Security

Oracles

O X ( y 1 , . . . , y n ) ( z 1 , . . . , z n ) : \mathcal{O}X_{(y_1,...,y_n)}(z_1, . . . , z_n): OX(y1,...,yn)(z1,...,zn):oracle X可以访问的参数集合 y 1 , . . . , y n y_1,...,y_n y1,...,yn,并以 z 1 , . . . , z n z_1,...,z_n z1,...,zn为输入
O r e g \mathcal{O}{reg} Oreg, O c o r r u p t \mathcal{O}{corrupt} Ocorrupt, O s i g n \mathcal{O}{sign} Osign按预期操作:分别为用户注册、用户损坏和签名生成建模
调用 O r e p o r t \mathcal{O}{report} Oreport来获取消息的报告令牌,调用 O t r a c e \mathcal{O}{trace} Otrace来跟踪消息的签名者
在这里插入图片描述

Anonymity

对抗生成密钥的匿名性。因此,我们假设对手可以破坏和控制users和reporters,但tracer是诚实的。
要求对手在获得challenge 签名时,不能确定两个潜在的诚实签名者中哪一个生成了签名,前提是对手没有获得质疑签名的trace。
在这里插入图片描述

Unforgeability

假设对手控制trace程序,并可以破坏和控制users和reporters。我们要求对手不能为诚实用户环输出有效签名,其中签名不是签名oracle的输出。
在这里插入图片描述

Traceability

  • Trace correctness:要求诚实生成的签名必须可跟踪到正确的签名者。
  • Non-frameability:表示报告和跟踪机制不能将非签名者识别为签名者。
  • trace soundness:报告和跟踪机制识别的签名者是唯一的。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Reporter Anonymity

要求报告不暴露产生报告的环成员。我们正式地将记者匿名性定义为这样一种属性:当对手提供一份报告供其签名时,他无法确定两名潜在的记者中是哪一位撰写了这份报告。
在这里插入图片描述

A Report and Trace Ring Signature Construction

setup & keygen

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方案中共出现了4种密钥:

  • RS:用于环签名的密钥对
  • PKE:用于(签名)加密的密钥对
  • Sign:用于report的密钥对
  • T:用于追溯的密钥对

Sign

在这里插入图片描述

  • 加密 reporter token s k s i g n sk_{sign} sksign to each ring member: P K E p k P K E i ( s k s i g n ) → { c 1 , i } i = 1 ∣ R ∣ → c 1 PKE_{pk_{PKE_i}}(sk_{sign})\rightarrow\{c_{1,i}\}_{i=1}^{|R|}\rightarrow {\bf c_1} PKEpkPKEi(sksign){c1,i}i=1Rc1
  • 签名者证明每个PKE密文都加密了与 p k S i g n pk_{Sign} pkSign相关的 reporter token s k s i g n sk_{sign} sksign,该令牌包含在签名中。即为如下关系 提供NIZK证明:
    在这里插入图片描述
  • 然后,对签名者的验证密钥 p k R S pk_{RS} pkRS在跟踪者的公钥下进行加密,得到密文 c 2 ← P K E p k T ( p k R S ) {\bf c_2}\leftarrow PKE_{pk_T}(pk_{RS}) c2PKEpkT(pkRS),再对密文 c 2 {\bf c_2} c2在新生成的公钥 p k S i g n pk_{Sign} pkSign下进行加密,得到密文 c 3 ← P K E p k s i g n ( c 2 ) {\bf c_3}\leftarrow PKE_{pk_{sign}}({\bf c_2}) c3PKEpksign(c2)
  • 最后,签名者产生一个知识签名SoK,证明 c 3 {\bf c_3} c3加密一个验证密钥,签名者知道与其相关联的签名密钥
    在这里插入图片描述

report & trace

在这里插入图片描述
环成员运行report来解密reporter token: D e c s k P K E ( c 1 , i ) = s k s i g n Dec_{sk_{PKE}}(c_{1,i})=sk_{sign} DecskPKE(c1,i)=sksign
报告器还提供正确解密的证明,但不透露是哪个环成员解密了token。
在这里插入图片描述
在这里插入图片描述

  • 在收到报告时,跟踪程序运行Trace来解密密文 c 2 ← D e c s k s i g n ( c 3 ) c_2\leftarrow Dec_{sk_{sign}}(c_3) c2Decsksign(c3) p k R S ← D e c s k T ( c 2 ) pk_{RS}\leftarrow Dec_{sk_T}(c_2) pkRSDecskT(c2)并揭示签名者的验证密钥。
  • 由于 s k S i g n sk_{Sign} skSign包含在report中,任何人都可以解密 c 3 c_3 c3,因此可以直接检查正确的解密。因此,跟踪程序只需要证明 c 2 c_2 c2的正确解密,它由以下关系给出:
    在这里插入图片描述

综上我们可以总结一下签名的组成及作用 σ = ( p k s i g n , c 1 , c 2 , ρ , σ S O K ) \sigma=(pk_{sign},{\bf c_1},c_2,\rho,\sigma_{SOK}) σ=(pksign,c1,c2,ρ,σSOK)

  • c 1 {\bf c_1} c1构造环关系并绑定report token(任意环成员能够解开并获得 s k s i g n sk_{sign} sksign), ρ \rho ρ证明其合法性
  • c 2 c_2 c2 p k T pk_T pkT加密 p k R S pk_{RS} pkRS,再将密文用 p k s i g n pk_{sign} pksign加密到 c 3 c_3 c3。Trace中必须拥有 s k s i g n sk_{sign} sksign s k T sk_{T} skT才能顺利解密出身份 p k R S pk_{RS} pkRS.(所以只有环成员主动申请了report才能trace)
  • c 2 c_2 c2的作用是trace, c 3 c_3 c3的作用是封装 c 2 c_2 c2并实现report前置
  • σ S O K \sigma_{SOK} σSOK才是真正的环签名,证明了 c 2 c_2 c2, c 3 c_3 c3的生成过程,结合签名消息 m m m

Verify

在这里插入图片描述
σ = ( p k s i g n , c 1 , c 2 , ρ , σ S O K ) \sigma=(pk_{sign},{\bf c_1},c_2,\rho,\sigma_{SOK}) σ=(pksign,c1,c2,ρ,σSOK), check:

  • N I Z K . V e r i f y ( ρ ) = 1 NIZK.Verify_{}(\rho)=1 NIZK.Verify(ρ)=1, S o K , V e r i f y ( m , σ S O K ) = 1 SoK,Verify(m,\sigma_{SOK})=1 SoK,Verify(m,σSOK)=1
    两步验证分别证明了 c 1 , c 2 , c 3 {\bf c_1},c_2,c_3 c1,c2,c3的加密合法性,以及签名密钥生成合法性

它确保签名者提供他们自己的公钥的加密,如果消息是恶意的,则支持跟踪。
公共跟踪验证算法VerTrace确保跟踪正确的签名者
在这里插入图片描述

  • 这个验证需在report和trace完成后进行,否则无法进行前两步NIZK验证( c 1 , c 2 {\bf c_1},c_2 c1,c2解密的正确性)
  • 验证签名的有效性:签名者提供他们自己公钥的环结构和有效消息签名
  • 由于任何参与方都可以申请report得到 s k s i g n sk_{sign} sksign,故而可以自行验证 c 3 c_3 c3的正确解密

Instantiating

PKE: ElGamal encryption
SoK: Short Accountable Ring Signatures Based on DDH
NIZK: 我们用各种Σ-protocols实例化了我们的NIZK协议,用于签名、报告和跟踪。

Setup & keygen

S e t u p ( 1 λ ) → ( p p P K E , p p S O K ) Setup(1^\lambda)\rightarrow(pp_{PKE},pp_{SOK}) Setup(1λ)(ppPKE,ppSOK)

  • p p P K E = p p N I Z K = ( G , g , q ) pp_{PKE} = pp_{NIZK} = (\mathbb{G},g,q) ppPKE=ppNIZK=(G,g,q)
  • p p S O K = ( e k , c k ) pp_{SOK}=(ek,ck) ppSOK=(ek,ck): e k ek ek is an ElGamal encryption key, c k ck ck is a key for a commitment scheme.
  • f ( x ) : = g x , x ∈ Z q f(x):=g^x,x\in \mathbb{Z}_q f(x):=gx,xZq one way function

k e y g e n ( p p ) → ( ( p k T , s k T ) , ( p k U , s k U ) ) keygen(pp)\rightarrow((pk_T,sk_T),(pk_U,sk_U)) keygen(pp)((pkT,skT),(pkU,skU))

  • p k T = ( g s k T , s k T ) pk_T=(g^{sk_T},sk_T) pkT=(gskT,skT)
  • ( p k U , s k U ) = ( ( g s k R S , g s k P K E ) , ( s k R S , s k P K E ) ) , s k T , s k R S , s k P K E ∈ Z q (pk_U,sk_U)=((g^{sk_{RS}},g^{sk_{PKE}}),(sk_{RS},sk_{PKE})),sk_{T},sk_{RS},sk_{PKE}\in \mathbb{Z}_q (pkU,skU)=((gskRS,gskPKE),(skRS,skPKE)),skT,skRS,skPKEZq

Sign

S i g n ( ) → Sign()\rightarrow Sign()

  • 用ElGamal encryption实例化PKE:密文 c 1 , c 2 = ( A 2 , B 2 ) = ( g r 2 , p k T r 2 ⋅ p k R S ) , c 3 = ( A 2 , A 3 , B 3 ) = ( g r 2 , g r 3 , p k S i g n r 3 ⋅ p k T r 2 ⋅ p k R S ) {\bf c_1},c_2=(A_2,B_2)=(g^{r_2},pk_T^{r_2}\cdot pk_{RS}),c_3=(A_2,A_3,B_3)=(g^{r_2},g^{r_3},pk_{Sign}^{r_3}\cdot pk_T^{r_2}\cdot pk_{RS}) c1,c2=(A2,B2)=(gr2,pkTr2pkRS),c3=(A2,A3,B3)=(gr2,gr3,pkSignr3pkTr2pkRS)
  • 使用一种已有的 Σ \Sigma Σ协议生成 ρ \rho ρ,然后用Fiat-Shamir变换生成NIZK
  • 改进已有的一种SoK生成 σ S O K \sigma_{SOK} σSOK,证明签名者知道 s k R S sk_{RS} skRS使得 p k R S = g s k R S pk_{RS}=g^{sk_{RS}} pkRS=gskRS是环中的元素

Report & trace

  • P K E . D e c PKE.Dec PKE.Dec,由于离散对数的性质,不需要证明解密的正确性
  • p k s i g n = g s k s i g n pk_{sign}=g^{sk_{sign}} pksign=gsksign,tracer可以使用reporter的返回平凡地检查解密正确性
  • tracer解密signer的ID: B 3 / ( A 2 s k T A 3 s k s i g n ) = p k S i g n r 3 ⋅ p k T r 2 ⋅ p k R S / ( g r 2 ⋅ s k T g r 3 ⋅ s k s i g n ) = p k R S B_3/(A_2^{sk_T}A_3^{sk_{sign}})=pk_{Sign}^{r_3}\cdot pk_T^{r_2}\cdot pk_{RS}/(g^{r_2\cdot sk_T}g^{r_3\cdot sk_{sign}})=pk_{RS} B3/(A2skTA3sksign)=pkSignr3pkTr2pkRS/(gr2skTgr3sksign)=pkRS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值