Coconut 签名方案

2024-04-10  本文已影响0人  雪落无留痕

最近研究Nym 区块链项目,提到 Coconut 签名方案,顺便看一下论文。

Coconut 是一种选择性展示凭证属性的分布式门限盲化签名分发方案,具有公开和私有的属性,重新随机化和多个不可链接的属性展示。

Coconut 签名可以用在匿名支付,匿名投票和去中心化代理等应用中。

Coconut 架构如上图所示,首先由用户向授权者发送凭证生成请求,然后由由授权者颁发凭证,由用户将凭证聚合后,生成完整的凭证,然后用户可以对凭进进行重新随机化,并可以选择性展示其私有的属性,实现认证或授权的目的。

形式化定义

Coconut 签名的形式化定义为:

Coconut 签名满足不可伪造性,盲化性,不可链接/零知道证明属性。

签名方案构造

Pointcheval 签名方案

可以对签名 \sigma = (h, s)进行随机化,选择一个随机数 r' \in \mathbb{F}_p, 计算 \sigma' = (h^{r'}, s^{r'})

也可以将其改获取具有私有属性的凭证,在 \mathbf{IssueCred} 过程中,用户首先选择随机数 r\in \mathbf{F}_p, 计算消息 m 的承诺 c_p = g_1^t Y^m , 其中 Y = g_1^y, 并将承诺的证明发送给授权者,授权者验证证明之后,选择随机数 u \in \mathbb{F}_p, 并给用户发送 \tilde{\sigma}=(h, \tilde{s}) = (g^u, (Xc_p)^u), 其中 X=g_1^x. 用户通过计算 \sigma = (h, \tilde{s}(h)^{-t}) 进行去盲化签名, \sigma 可以用作凭证。

该签名可以实现盲化,不可链接性,高效和短凭证的特征,但是不支付门限签发属性。 为了克服这种限制, Coconut 引入BLS签名中的hash 函数: H: \mathbb{F}_p \rightarrow \mathbb{G}_1, 以此计算群元素 h=H(m).

Coconut 门限签名方案

Coconut 门限签名方案(t, n)需要满足: n/2 < t < n

多属性凭证

授权者的密钥对变成:

        $sk = (x, y_1, \cdots, y_q),  vk = (g_2, g_2^x, g_2^{y_1}, \cdots, g_2^{y_q})$

其中 q 为属性的个数,多属性的凭证在 c_m 中,群元素 h 为:

        $c_m = g_1^o \prod_{j=1}^q h_j^{m_j},  h = H(c_m)$

广义的凭证即为:

        $\sigma = (h, h^{x+\sum_{j=1}^q m_j y_j})$

凭证总是由两个群元素组成,并不随着属性个数或授权者个数变化。

应用场景

Coin Tumbler

Coin Tumbler 可以用来实现匿名支付:

Coconut 签名用来实现Coin Tumbler 的流程为:

在上述过程中,Merchant 并不知道用户的地址身份,实现匿名性。

Privacy-perserving petition

Coconut 签名实现匿名投票的流程为:

Censorship-resistat distribution of proxies

代理常常用来绕过审查,但是却总是成为审查的目标,可以基于Coconut 签名方案实现抗审查的分布式代理方案。

上述方案中,用户无法将代理的IP地址和长期使用的公钥 关联在一起,实现代理的匿名性。

限制

参考

https://arxiv.org/pdf/1802.07344.pdf

https://github.com/asonnino/coconut

https://github.com/asonnino/coconut-chainspace

https://github.com/musalbas/coconut-ethereum

上一篇 下一篇

猜你喜欢

热点阅读