Simple Schnorr Signature with Pedersen Commitment as Key学习笔记

1. 引言

Gary Yu 2020年论文《Simple Schnorr Signature with Pedersen Commitment as Key》,目前暂无收录信息。

A signature is a zero-knowledge (ZK) proof of knowledge where the prover convince the verifier that they know a/some secret information, without revealing the secret info itself.

目前的Schnorr signature算法,Musig算法,都是secure in the plain public-key model(即signers are only required to have a public key, but do not have to prove knowledge of the private key corresponding to their public key to some certificate authority or to other signers before engaging the protocol)。要求签名者在签名时必须使用与公钥相对应的私钥。

在Monero/Grin/Beam/Gotts等支持隐私交易的区块链系统中,使用了Pedersen commitment scheme来隐藏交易中的input amounts和output amounts。

1.1 Pedersen commitment scheme

Pedersen commitment的定义为:
已知两个互不相关的genertors G G G H H H——即没有任何人知道是否存在 y y y使得 y ∗ G = H y*G=H yG=H成立。committer引入随机private key x x x,对 a a a的commitment为:
C o m m i t m e n t = x ∗ G + a ∗ H Commitment=x*G+a*H Commitment=xG+aH

Pedersen commitment scheme 具有perfectly hiding和computationally binding属性。

1.2 Switch commitment scheme

Grin中使用了Switch commitment scheme(Tim Ruffing等人2017年论文《Switch Commitments: A Safety Switch for Confidential Transactions》),Switch commitment scheme constitute a cryptographic middle ground between computationally binding and statistically binding commitments。
相对于Pedersen commitment,额外引入了第3个generator J J J,与 G 、 H G、H GH均不相关——即没有任何人知道是否存在 y y y使得 y ∗ G = J 或 y ∗ H = J y*G=J或y*H=J yG=JyH=J成立。
Switch commitment定义为:
C o m m i t m e n t = x ’ ∗ G + a ∗ H Commitment=x’*G+a*H Commitment=xG+aH,其中 x ’ = x + H a s h ( x ∗ G + a ∗ H , x ∗ J ) m o d    p x’=x+Hash(x*G+a*H,x*J)\mod p x=x+Hash(xG+aH,xJ)modp

1.3 ElGamal commitment scheme

ElGamal commitment schem具有perfectly binding和computationally hiding属性。
EIGamal commitment定义为:
( x ∗ G + a ∗ H , x ∗ H ) (x*G+a*H,x*H) (xG+aH,xH),其左侧就是1个Pedersen commitment。

以上三种commitment具有一个共性:都包含1个elliptic curve point,可理解为是1个public key,但是没有任何人知道与该public key像对应的private key。——即无法知道 c c c值,使得 c ∗ G = x ∗ G + a ∗ H c*G=x*G+a*H cG=xG+aH成立。
因此,基于现有的签名策略(即签名者需要用与公钥相对应的私钥来进行签名操作),无法将commitment值直接作为公钥用于现有的签名算法中。

1.4 Mimblewimble transaction scheme

2016年Jedusor在Mimblewimble协议中指出,当Pedersen commitment commit to 0的时候,有: C o m m i t m e n t = x ∗ G Commitment=x*G Commitment=xG,则此时可将其看作是一个ECDSA public key。而对于有效的隐私交易,“outputs-(inputs+transaction fees)=0”应成立。
隐私交易的发送方sender可将outputs与inputs的差值作为public key来对交易签名,
2017年,Peverell 《Introduction to Mimblewimble and Grin》中指出了典型的Mimblewimble transaction scheme(有1个 input和2个outputs情况下)为:
( x i ∗ G + a i ∗ H ) + ( e x c e s s ′ + o f f s e t ) ∗ G = ( x c ∗ G + a c ∗ H ) + ( x r ∗ G + a r ∗ H ) + f e e ∗ G (x_i*G+a_i*H)+(excess'+offset)*G=(x_c*G+a_c*H)+(x_r*G+a_r*H)+fee*G (xiG+aiH)+(excess+offset)G=(xcG+acH)+(xrG+arH)+feeG
其中:

  • ( x i ∗ G + a i ∗ H ) (x_i*G+a_i*H) (xiG+aiH)为input commitment owned by sender。
  • ( x r ∗ G + a r ∗ H ) (x_r*G+a_r*H) (xrG+arH)为output commitment for receiver。
  • ( x c ∗ G + a c ∗ H ) (x_c*G+a_c*H) (xcG+acH)为the change commitment for sender。
  • x i , x c , x r x_i,x_c,x_r xi,xc,xr为private keys; a i , a c , a r a_i,a_c,a_r ai,ac,ar为amounts; f e e fee fee为transaction fee。
  • o f f s e t offset offset为a random number selected by the sender。
  • e x c e s s ′ excess' excess 可称为”public excess”,可作为signature public key,满足 e x c e s s ′ = ( x c − x i − o f f s e t ) ∗ G + x r ∗ G excess'=(x_c-x_i-offset)*G+x_r*G excess=(xcxioffset)G+xrG,其中:
    ( x c − x i − o f f s e t ) ∗ G (x_c-x_i-offset)*G (xcxioffset)G可作为public key,仅有sender知道相应的private key。
    x r ∗ G x_r*G xrG 可作为public key,仅receiver知道相应的private key。

To sign this transaction with e x c e s s ′ excess' excess as the public key, the Simpler Variants of MuSig interactive signature scheme is used, meaning both the sender and the receiver exchanges the public key and public nonce info, then executes a MuSig partial signature in both side, then either the sender or the receiver finally aggregate these two partial signatures to get a final joint Schnorr signature, which can be verified exactly as a standard Schnorr signature with respect to a single public key: e x c e s s ′ excess' excess.

1.5 ZK proof of Pedersen commitment

Camenisch 等人2009年论文《On the Portability of Generalized Schnorr Proofs》中指出:
在这里插入图片描述
亦可参见博客 基于Sigma protocol实现的零知识证明protocol集锦 第2.4节Knowledge of the opening of Pedersen commitment。

2. 本论文新的签名机制——ComSig

本论文提出了新的签名机制——ComSig,基于的是Schnorr signature scheme。
主要的group参数有 ( G , p , g , h ) (\mathbb{G},p,g,h) (G,p,g,h),其中 p p p k k k-bit integer, G \mathbb{G} G为a cyclic group of order p p p g , h g,h g,h为generator of G \mathbb{G} G g , h g,h g,h互不相关——即没有任何人知道是否存在 y y y使得 y ∗ G = H y*G=H yG=H成立。
在这里插入图片描述在这里插入图片描述
为了抵抗rogue key attack,借助Musig方案思想,构建支持aggregate multi-signature的ComSig方案:
在这里插入图片描述
Musig方案各签名方需要交互,而ComSig针对的场景是blockchain using the Pedersen commitment as output,a single signer can complete the signature to prove the ownership of a Pedersen commitment output。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值