We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
学习强国App真是个好物,很多Mooc学习资源它都有入口,看到电子科大有一门《现代密码学》所以就简单过了一遍。虽然平时是做区块链,但是涉及隐私计算这部分少,并且我们公司的技术并没有盲签名,群签名(组签名)的应用,所以还是打算简要介绍下。PlatON就是主要做隐私计算的,嗯。
盲签名是在发送者A和签名者B之间的双方协议,基本套路是:A发送一段信息给B,B对这和消息签名并返回给A,从这个签名中,A能够计算B关于A预先选取的消息m的签名。
以上说法有点绕,平时的签名我们接触到,就是签名者用自己的私钥对消息m(明文),进行签名,也就是签名者是知道消息m的内容的,这样暴露了消息隐私,那么有没有什么方法可以既不让签名者知道消息明文m,又可以对其进行签名并还不知道真实的签名数据呢?答案就是盲签名。盲签名的作用就是让签名者无法知道它对什么东西签了名,也无法知道其真实的签名,那么以后签名者B也不能将所签的消息和发送者A联系起来,也就是签名者貌似是把“眼睛”蒙蔽起来了。
那么盲签名具体有什么应用场景呢?
发送者A(客户)不希望签名者B(银行)能够将一条消息m及其签名Sig_B(m)与客户自己联系起来,可能消息m中有具体的金额数额,当m和Sig_B(m) 提交给B进行支付时,B无法推断原先接收签名的是谁。这就允许了A的匿名性,从而A的消费模式B也不知道。
大概的盲签名协议如下:
以上协议大致就这样,你看到第二条就知道了,关键就是函数f和g的选择,这样才可以满足第二条的等式关系,你可以从关系等式中看到,对消息明文m进行签名就等价于给消息m“加密“以后的签名再“解密“以得到最原始的签名,也就是签名者B签出来的名不是对原始数据的签名,这样A既达到了签名的目的,也没有泄露自己消息m的隐私。非常强大。
一个比较成熟的盲签名协议---Chaum盲签名协议
这个协议是基于RSA公钥体系的,也是最原始的盲签名协议
当然还有一些其他的盲签名方案,具体看参考。据了解,也有盲签名构造在BLS签名之上的,也有基于Elgamal签名的。盲签名在github上倒是能搜索到很多实现,js,golang的都有,也有基于盲签名构造以太坊上的电子投票。估计落地应用也很多了。
1991年,Chaum等人提出了群签名的方法。该方案允许群里(组织)的某个成员以群的名义匿名地签名。满足以下三个条件:
这种机制也非常强大,一个应用就是匿名举报,比如一个单位某个人受贿贪污,在群中的成员可以匿名举报(对举报内容进行签名),并不用担心自己被泄露,如果最后更加上层的机构要奖励举报人,那么可以找到管理者把这个签名者恢复出来,这样就可以奖励举报人了。
一个群签名的基本协议为以下部分:
现在群签名的方案有哪些?
就是斯坦福Dan Boneh他们的成果,简称BBS签名(不是BLS签名,但是用到了Weil Pairing等东西),论文名为Short Group Signatures。Github搜了下这个论文标题,貌似几乎没有什么代码实现,也不知道性能怎样,落地没落地,crypto exchange上也有个哥们儿跟我一样有疑惑,https://crypto.stackexchange.com/questions/81238/practical-group-signatures 哈哈, 密码学的东西真是浩如烟好,都快看不完了,我还是先把BLS签名搞明白吧,毕竟这个是真有落地大量应用了。
现在有大量落地的是环签名(Ring Signature), 环签名是群签名的一种演化,消除了一些群签名的弊端,但是也增加了审计难度,门罗币这些有用到。
环签名中只有环成员没有类似于群签名的管理者, 不需要环成员之间的合作,签名者作为一个环成员,只要利用自己的私钥和其他成员的公钥集合就可以独立对消息m进行签名,任何人都可以通过环签名s,消息m和成员的公钥集合来校验这个签名是否合法。环签名对签名者有无条件匿名的优势,环中其他成员也不能伪造签名者的真实签名(在私钥不泄露的情况下)。
环签名的生成首先要生成一个签名环,环签名的原始方案就是基于RSA的,具体算法细节就不细细研究了。有空看wikipedia吧。
有三种环签名:
CryptoNote实现的是Fujisaki和Suzuki那篇论文里的Traceable ring signature。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
学习强国App真是个好物,很多Mooc学习资源它都有入口,看到电子科大有一门《现代密码学》所以就简单过了一遍。虽然平时是做区块链,但是涉及隐私计算这部分少,并且我们公司的技术并没有盲签名,群签名(组签名)的应用,所以还是打算简要介绍下。PlatON就是主要做隐私计算的,嗯。
正文
盲签名(Blind Signature)
盲签名是在发送者A和签名者B之间的双方协议,基本套路是:A发送一段信息给B,B对这和消息签名并返回给A,从这个签名中,A能够计算B关于A预先选取的消息m的签名。
以上说法有点绕,平时的签名我们接触到,就是签名者用自己的私钥对消息m(明文),进行签名,也就是签名者是知道消息m的内容的,这样暴露了消息隐私,那么有没有什么方法可以既不让签名者知道消息明文m,又可以对其进行签名并还不知道真实的签名数据呢?答案就是盲签名。盲签名的作用就是让签名者无法知道它对什么东西签了名,也无法知道其真实的签名,那么以后签名者B也不能将所签的消息和发送者A联系起来,也就是签名者貌似是把“眼睛”蒙蔽起来了。
那么盲签名具体有什么应用场景呢?
发送者A(客户)不希望签名者B(银行)能够将一条消息m及其签名Sig_B(m)与客户自己联系起来,可能消息m中有具体的金额数额,当m和Sig_B(m) 提交给B进行支付时,B无法推断原先接收签名的是谁。这就允许了A的匿名性,从而A的消费模式B也不知道。
大概的盲签名协议如下:
以上协议大致就这样,你看到第二条就知道了,关键就是函数f和g的选择,这样才可以满足第二条的等式关系,你可以从关系等式中看到,对消息明文m进行签名就等价于给消息m“加密“以后的签名再“解密“以得到最原始的签名,也就是签名者B签出来的名不是对原始数据的签名,这样A既达到了签名的目的,也没有泄露自己消息m的隐私。非常强大。
一个比较成熟的盲签名协议---Chaum盲签名协议
这个协议是基于RSA公钥体系的,也是最原始的盲签名协议
当然还有一些其他的盲签名方案,具体看参考。据了解,也有盲签名构造在BLS签名之上的,也有基于Elgamal签名的。盲签名在github上倒是能搜索到很多实现,js,golang的都有,也有基于盲签名构造以太坊上的电子投票。估计落地应用也很多了。
群签名(Group Signature)
1991年,Chaum等人提出了群签名的方法。该方案允许群里(组织)的某个成员以群的名义匿名地签名。满足以下三个条件:
这种机制也非常强大,一个应用就是匿名举报,比如一个单位某个人受贿贪污,在群中的成员可以匿名举报(对举报内容进行签名),并不用担心自己被泄露,如果最后更加上层的机构要奖励举报人,那么可以找到管理者把这个签名者恢复出来,这样就可以奖励举报人了。
一个群签名的基本协议为以下部分:
现在群签名的方案有哪些?
就是斯坦福Dan Boneh他们的成果,简称BBS签名(不是BLS签名,但是用到了Weil Pairing等东西),论文名为Short Group Signatures。Github搜了下这个论文标题,貌似几乎没有什么代码实现,也不知道性能怎样,落地没落地,crypto exchange上也有个哥们儿跟我一样有疑惑,https://crypto.stackexchange.com/questions/81238/practical-group-signatures 哈哈, 密码学的东西真是浩如烟好,都快看不完了,我还是先把BLS签名搞明白吧,毕竟这个是真有落地大量应用了。
环签名(Ring Signature)
现在有大量落地的是环签名(Ring Signature), 环签名是群签名的一种演化,消除了一些群签名的弊端,但是也增加了审计难度,门罗币这些有用到。
环签名中只有环成员没有类似于群签名的管理者, 不需要环成员之间的合作,签名者作为一个环成员,只要利用自己的私钥和其他成员的公钥集合就可以独立对消息m进行签名,任何人都可以通过环签名s,消息m和成员的公钥集合来校验这个签名是否合法。环签名对签名者有无条件匿名的优势,环中其他成员也不能伪造签名者的真实签名(在私钥不泄露的情况下)。
环签名的生成首先要生成一个签名环,环签名的原始方案就是基于RSA的,具体算法细节就不细细研究了。有空看wikipedia吧。
有三种环签名:
CryptoNote实现的是Fujisaki和Suzuki那篇论文里的Traceable ring signature。
参考
The text was updated successfully, but these errors were encountered: