学习笔记:Short Randomizable Signatures

David Pointcheval, Olivier Sanders. Short Randomizable Signatures.https://link.springer.com/chapter/10.1007/978-3-319-29485-8_7

Bilinear Groups

在这里插入图片描述
文献Galbraith, S.D., Paterson, K.G., Smart, N.P.: Pairings for cryptographers. Discrete Appl. Math. 156(16), 3113–3121 (2008) 定义了3种类型的双线性配对:

  • type 1: G 1 = G 2 \mathbb{G_1=G_2} G1=G2
  • type 2: G 1 ≠ G 2 \mathbb{G_1\neq G_2} G1=G2,但存在一个有效同态 ϕ : G 2 → G 1 \phi:\mathbb{G_2\rightarrow G_1} ϕ:G2G1,反方向则不存在
  • type 3: G 1 ≠ G 2 \mathbb{G_1\neq G_2} G1=G2,在任何方向都不存在 G 1 \mathbb{G_1} G1 G 2 \mathbb{G_2} G2间的有效可计算的同态

这个文章中涉及的方案全部是基于type 3的配对,使用type 1或者type 2会导致签名方案完全不安全

A Single-Message Signature Scheme

在这里插入图片描述

A Multi-message Signature Scheme

在这里插入图片描述

A Sequential Aggregate Signature

用一种滚雪球的方式生成多消息签名,注意1)每个消息的签名公钥须不同 2)验证时整体查验所有签名

假设某用户发布了一个对r-零向量的签名 ( 0 , . . . , 0 ) : ( g , X ) = ( g , g x ) ∈ G 1 2 (0,...,0):(g,X)=(g,g^x)\in\mathbb{G}_1^2 (0,...,0):(g,X)=(g,gx)G12,这个签名虽然不能帮助敌手伪造非0向量的签名,但可以使标量 x x x不能再用作签名私钥:可签名一个向量 ( m 1 , . . . , m r ) (m_1,...,m_r) (m1,...,mr),随机数 t ← Z p t\leftarrow\mathbb{Z}_p tZp,计算签名 ( g t , ( X ) t ⋅ ( g t ) ∑ y j ⋅ m j ) (g^t,(X)^t\cdot(g^t)^{\sum y_j\cdot m_j}) (gt,(X)t(gt)yjmj)

  • 每个签署人 j j j(从 1 1 1 r r r)生成自己的签名密钥和验证密钥 ( y j , Y ~ j ) (y_j, \widetilde{Y}_j) (yj,Y j),但使用公共参数中的相同元素 X X X
  • 为了签署消息 m 1 ∈ Z p ∗ m_1\in\mathbb{Z}_p^* m1Zp,随机选择 t 1 ∈ Z p t_1\in\mathbb{Z}_p t1Zp,输出签名 ( σ 1 , σ 2 ) ← ( g t 1 , ( X ) t 1 ⋅ ( g t 1 ) y 1 ⋅ m 1 ) (\sigma_1,\sigma_2)\leftarrow(g^{t_1},(X)^{t_1}\cdot(g^{t_1})^{y_1\cdot m_1}) (σ1,σ2)(gt1,(X)t1(gt1)y1m1)
  • 后续的签名者2可以在 m 2 m_2 m2上生成聚合签名:随机选择 t 2 t_2 t2,签名 ( σ 1 ′ , σ 2 ′ ) ← ( σ 1 t 2 , ( σ 2 ⋅ σ 1 y 2 ⋅ m 2 ) t 2 ) (\sigma_1',\sigma_2')\leftarrow(\sigma_1^{t_2},(\sigma_2\cdot\sigma_1^{y_2\cdot m_2})^{t_2}) (σ1,σ2)(σ1t2,(σ2σ1y2m2)t2)
    ( σ 1 t 2 , ( σ 2 ⋅ σ 1 y 2 ⋅ m 2 ) t 2 ) = ( g t 1 ⋅ t 2 , ( ( g x ) t 1 ⋅ ( g t 1 ) y 1 ⋅ m 1 ⋅ ( g t 1 ) y 2 ⋅ m 2 ) t 2 ) = ( g t 1 ⋅ t 2 , ( g t 1 ⋅ t 2 ) x + y 1 ⋅ m 1 + y 2 ⋅ m 2 ) (\sigma_1^{t_2},(\sigma_2\cdot\sigma_1^{y_2\cdot m_2})^{t_2})=(g^{t_1\cdot t_2},((g^x)^{t_1}\cdot(g^{t_1})^{y_1\cdot m_1}\cdot(g^{t_1})^{y_2\cdot m_2})^{t_2})=(g^{t_1\cdot t_2},(g^{t_1\cdot t_2})^{x+y_1\cdot m_1+y_2\cdot m_2}) (σ1t2,(σ2σ1y2m2)t2)=(gt1t2,((gx)t1(gt1)y1m1(gt1)y2m2)t2)=(gt1t2,(gt1t2)x+y1m1+y2m2)

在这里插入图片描述
在这里插入图片描述
r = 0 r=0 r=0,是第一个签名
r > 0 r>0 r>0,如果前置签名无法通过验证,停止
m = 0 m=0 m=0,如果被签名的消息是0,停止
如果当前签名公钥是前置签名公钥之一,停止
如果能通过所有停止条件且不是第一个签名,按照上文原理生成新的聚合签名(如果这个签名还有后置签名,那它的公钥 p k pk pk m m m都被加入到 m i , p k i m_i,pk_i mi,pki集的末位中)
在这里插入图片描述
验证原理等同于Multi-message Signature

Useful Features

Signing Committed Messages

许多密码学原语需要获得committed (or transformed) values上的签名。
例如:在一些group签名中,用户不能直接把 m m m发给组管理器,而是发送一个公共值 g m g^m gm。并用这个值开启一个协议生成 m m m的签名。

协议场景:将 g m g^m gm提交给签名者并证明 m m m的知识,如果证明有效,返回签名 σ = ( σ 1 , σ 2 ) ← ( g u , ( g x ⋅ ( g m ) y ) u ) , u ← Z p \sigma=(\sigma_1,\sigma_2)\leftarrow(g^u,(g^x\cdot(g^m)^y)^u),u\leftarrow\mathbb{Z}_p σ=(σ1,σ2)(gu,(gx(gm)y)u),uZp。但 g m g^m gm在某些场景中(比如anonymous credentials)安全性不够,有时需要对消息的Pedersen Commitment进行签名 C = g 0 t ⋅ g 1 m 1 . . . g r m r C=g_0^t\cdot g_1^{m_1}...g_r^{m_r} C=g0tg1m1...grmr,协议如下:
A Single-Message Protocol
在这里插入图片描述
( g u , ( X C ) u ) = ( g u , ( g x g t g y ⋅ m ) u ) = ( g u , ( g u ) x + y ⋅ m ( g u ) t ) (g^u,(XC)^u)=(g^u,(g^xg^tg^{y\cdot m})^u)=(g^u,(g^u)^{x+y\cdot m}(g^u)^t) (gu,(XC)u)=(gu,(gxgtgym)u)=(gu,(gu)x+ym(gu)t),用 ( σ 1 ′ ) t = g u ⋅ t (\sigma_1')^t=g^{u\cdot t} (σ1)t=gut可消去与 t t t分量,使签名去盲化,变成 m m m的签名

A Multi-message Protocol
在这里插入图片描述
在这里插入图片描述
( g u , ( X C ) u ) = ( g u , ( g x g t ∏ i = 1 r g y i ⋅ m i ) u ) = ( g u , ( g u ) x + ∑ i = 1 r y i ⋅ m i ( g u ) t ) (g^u,(XC)^u)=(g^u,(g^xg^t\prod_{i=1}^rg^{y_i\cdot m_i})^u)=(g^u,(g^u)^{x+\sum_{i=1}^ry_i\cdot m_i}(g^u)^t) (gu,(XC)u)=(gu,(gxgti=1rgyimi)u)=(gu,(gu)x+i=1ryimi(gu)t),同理可去盲化得到 ( m 1 , . . . , m r ) (m_1,...,m_r) (m1,...,mr)的签名

Proving Knowledge of a Signature

如果仍然考虑匿名凭证的例子,那么前面的协议已经解决了它们的发布问题。然而,一旦用户获得了证书,他还必须能够使用它来证明其属性是经过认证的,同时保持匿名。通常采用文献(Camenisch, J.L., Lysyanskaya, A.: Signature schemes and anonymous credentials from bilinear maps. In: Franklin, M. (ed.) CRYPTO 2004. )的框架,故需要一种有效的方法证明签名的知识。

为了证明对消息 m m m的签名 σ = ( σ 1 , σ 2 ) \sigma=(\sigma_1,\sigma_2) σ=(σ1,σ2)的知识,用户将在虚拟公钥 g ~ \widetilde{g} g 下聚合对某个随机消息 t t t的签名,生成的签名 σ ′ \sigma' σ在消息块 ( m , t ) (m,t) (m,t)上有效且不会泄露 m m m的信息。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值