首页
学习
活动
专区
工具
TVP
发布

隐私和匿名技术(三)

这一篇我们稍微了解下环签名、同态加密、代码混淆。

环签名

环签名是一种特殊的群签名,当中只有环成员,没有管理者。签名者利用其他人的公钥临时组建一个集合,被加入到这个集合的其他人都不一定知道自己被“加”进来了。

在环签名中,签名者将要发送的消息和环成员的公钥放在一起,然后用自己的私钥签名,然后这个签名中的某个参数根据一定的规则呈环状,然后根据这个特征,验证者可以利用特定算法验证出这个签名是不是这个环里的人签的,但不知道是哪个人签的(感觉都很神奇,具体怎么做到的,我也不知道)。

所以,环签名和昨天说的群签名一样,也是可以把发送者混在人群里,达到隐蔽的目的。门罗币的匿名性就用到了环签名。如果拿环签名和混合器对比,环签名的匿名性更强,因为混合器还需要一个或多个专门的点来做混合,但环签名完全不需要。所以,大家一般都认为,门罗币的匿名性要比达世币强的。

同态加密

同态加密,可以让别人帮你处理数据,但又不让别人知道你的数据(这一点跟盲签名很形似)。这是怎么做到的呢?我们来看看,假如有明文分别是A1、B1、C1,加密后的对应密文是A2、B2、C2,如果C1=A1+B1,那么C2=A2+B2。能实现这个特征的叫加法同态加密。类似的,也有减法同态、乘法同态、除法同态等。

同态加密在区块链里有什么作用呢?

区块链是一个公开的账本,用户的数据和代码存在上面,其他人都可以在公开看到,但有时候又不想让人知道具体存的是啥,所以得加密放上去。但加了密之后,又碰到一个问题,因为区块链不同于单机,所有的代码执行和数据处理需要区块链上的节点一起执行,加了密别人怎么帮你处理?

举个例子。

假如,我布署一个智能合约,其中有一个函数用于存储一个很隐私的数据,这个数据放在区块链上的目的,是为了存证,但又不想让别人看到,所以这个数据是加密的。每次调用这个函数的时候,我还会提供一个加密的参数,函数接收这个参数后,会将原来存储的数据和这个参数进行相乘,得到新的值存储在合约里。

这时,就可以很好地用到乘法同态加密,对于矿工来说,他们知道两个乘数的加密值,但不知道原始值,然后他们对两个加密值进行处理,再将处理结果放到合约。对于我来说,利用同态加密的性质,将处理结果解密后就可以得到它的原始值,也就是我最新要存储的那个数据(当然,这里完全可以我自己先在电脑上算好,然后直接存结果的加密值到合约上,不过一直想不到很好的例子,就将就用这个了)。

现在好像还没有区块链项目用到同态加密,但以太坊未来很有可能会提供这个功能所以。从上面可以看出,智能合约是同态加密的一个很好应用场景,将来两者应该会完美结合。

另外,在密码学界本身,同态加密就是圣杯之一,可见其潜力。

代码混淆

代码混淆和同态加密很像,它可以将一个程序的代码利用混淆器生成另一个代码完全不同的程序,然后两个程序根据相同的输入,就能得到相同的输出。对于外人来说,完全看不出两个程序有什么不同,压根就没办法根据生成的新程序代码,去算出老的程序来(太牛逼了,别问我具体原理,感觉这些东西不是咱凡人能学会的)。

从代码混淆能干的事来看,感觉就是为智能合约量身打造的。不过,与同态加密一样,现在好像也没落地的区块链案例。

不投资毋宁死

自由,就是拥有选择的权利,而每一次选择都是一次投资。

谢谢阅读

✬如果你喜欢这篇文章,欢迎分享到朋友圈✬

评论功能现已开启,灰常接受一切形式的吐槽和赞美☺

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181022G1235D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券