区块链精读——How to Leak a Secret

本文中第一次提出了环签名的概念,来自于国际会议:
International Conference on the Theory and Application of Cryptology and Information Security

1、介绍

组签名:

1991年Chaum和van Heyst 引入了组签名方案的一般概念。在这样的方案中,受信任的组管理器预定义了某些用户组,并向其成员分发了专门设计的密钥。然后,单个成员可以使用这些密钥代表其组匿名签名消息。由不同小组成员产生的签名对于他们的验证者而言似乎是无法区分的,但对于可以撤消举报人行为不当的匿名性的小组经理而言,则无法区分。

环签名:

在本文中,我们将环签名方案的相关概念形式化。这些是仅具有用户且没有管理者的简化的组签名方案(我们将此类签名称为“环签名”,而不是“组签名”,因为环是具有均匀外围且没有中心的几何区域)。
在环形签名方案中,没有预先安排的用户组,没有设置,更改或删除组的过程,因此无法分发专用密钥,并且无法撤消实际签名者的匿名性(除非他决定公开自己)。
为了产生环形签名,实际的签名者声明包括他本人在内的任意一组可能的签名者,并仅使用他的秘密密钥和其他人的公共密钥完全由他自己计算签名

本文提出的环签名的直接构造基于完全不同的思想,并且对于大型环特别有效(每个环成员仅添加一个模块乘法和一个对称加密以生成和验证这种签名)。结果签名在随机预言模型中具有匿名性,并且证明是安全的。

2、定义与应用

环签名

术语:我们将一组可能的签名者称为环。我们将产生实际签名的环成员称为签名者,而将其他每个环成员称为非签名者。

假设使用陷门单向排列(例如RSA函数)来生成和验证签名。
环形签名方案由两个过程定义:

区块链精读——How to Leak a Secret_第1张图片
image.png

如何泄露一个秘密

本文用了一个大臣透露消息的例子来说明为何要使用环签名,可见原文Bob的例子。

指定的验证者签名方案

为一种简化版的环签名,只存在签名者与验证者,并且两者组成一个环,这样第三方无法获知其所产生的环签名来自于哪一方,以此达到匿名。

效率方面

从本质上讲,生成或验证环签名的成本与生成或验证常规签名以及为每个非签名者添加一个或多个额外乘数的成本相同。因此,即使环包含数百个成员,该方案也确实可行。

3、拟议的环形签名方案(RSA版本)

假设爱丽丝希望为r个个人A1,A2,...,Ar的环签名带有环签名的消息m,其中,签名者爱丽丝是As,对于s的某个值,1≤s≤r。为了简化表示和证明,我们首先描述一个环签名方案,其中所有环成员都使用RSA 作为其单独的签名方案。对于任意环签名成员Ai,假设只有Ai知道其馅门函数的逆向排列,(用其私钥求解)。

本文通过一系列的说明及推导,推出环方程如下:


环方程

Ek为以k为密钥的加密函数,该式表明经过一系列的计算,输入可等于输出,对应一环,如下图所示:


区块链精读——How to Leak a Secret_第2张图片
环方程

具体环签名步骤如下:

签名生成

区块链精读——How to Leak a Secret_第3张图片

签名验证

区块链精读——How to Leak a Secret_第4张图片

4、本文的环签名方案(Rabin version)

Rabin的公钥密码系统比RSA更有效的签名验证,因为验证涉及的是平方运算而不是求立方运算,这将模乘的数量从2减少到1。但是,我们需要处理一个事实,只能签名四分之一的消息,可以签名的消息具有多个签名。
操作解决方案是自然的解决方案:签名时,如果未定义gs^-1(ys),则更改xs-1的最后一次随机选择。由于只有一个活板门单向功能必须被反转,因此签名者应该平均希望尝试四次才能成功生成环签名。无论环的大小如何,此搜索的复杂度与常规Rabin签名的情况基本相同。
更重要的区别在于无条件匿名的证明,这取决于所有映射都是置换的事实。当gi不排列时,在给定的环签名中,随机选择的和计算的xi的分布之间可能会有明显的差异。这可能导致在所有可能的签名者中识别出真正的签名者,并且在许多具体类型的活板单向功能中,这可以证明是一个真正的问题。

通过以下的定理,本文克服了Rabin方案的以上困难:


区块链精读——How to Leak a Secret_第5张图片
定理

令S为给定的“大理石”有限集,令B1,B2,...,Bn为S的不相交子集(称为“桶”),以使所有非空桶都具有相同数量的大理石,并且每个大理石在S中恰好在一个存储桶中。请考虑以下采样过程:随机选择一个桶,直到找到一个非空的桶,然后从该桶中随机选择一个大理石。然后,此过程从S中以均匀的概率分布选择大理石。

你可能感兴趣的:(区块链精读——How to Leak a Secret)