http://www.tnmanning.com

物联网中的Mimblewimble

前言:椭圆曲线加密是大发3d的基础技术之一,而Mimblewimble是对它的优雅应用,它使用Pedersen commitment实现完全保密交易,并消除了对地址和私钥的依赖。同时,它与Bulletproofs相结合,带来了更轻量的匿名和隐私,这对于物联网同时实现扩展性和隐私保护来说有重要的意义。本文作者Grayblock,由“蓝狐笔记”社群的“鑫鑫”翻译。

2017年和18年主要关注可扩展性的话题。各种分叉和项目都把“扩展性”作为他们专属的口头禅。这场辩论给我们带来了解决方案,并向我们表明,当和未来的计划结合在一起的时候,就可以满足当前的需求。未来几年的重点将是匿名性和同质性的大规模采用。

在快速发展的互联数据世界中,隐私正成为一个非常重要的话题。事实上,我们将隐私权委托给中心化的公司,其安全性通过你的密码强度以及攻击者破解密码需要付出的努力来保证。随着我们进入互联网的新时代,所有东西都是相互连接的,无须中介的信任和加密隐私必须成为其所依赖一切的基础。在未来,面临风险的不仅仅是照片和信用卡号码,而是你与之交互的一切,以及它所收集的数据。

如果目标是在一个去中心化和无须中介信任的网络中做到这一点,那么面临的挑战将是找到一系列适用性的解决方案,这些解决方案具有生态系统的多样性并能匹配所预测的规模。了解到这一点,INT已经开始研究如何在其网络中实施两种不同的隐私协议,以及搞定物联网的两个主要需求:可扩展的隐私交易和隐私智能合约。

Mimblewimble

Mimblewimble是和椭圆曲线加密技术具有相同元素的一种全新的实现,后者是大多数加密货币的基础。

物联网中的Mimblewimble

2016年8月,在bitcoin-wizards IRC频道,一位匿名用户发布了一个白皮书的Tor链接,声称它是“一种改进一分PK10隐私的想法”。紧接着是一个大发3d提案,它使用的交易结构与今天看到的任何方案都完全不同,创造了迄今为止看到的椭圆曲线加密技术最优雅的用途之一。

虽然发布的白皮书足以阐述支持该理论的想法和推理,但它不包含明确的数学或者安全性分析。Blockstream的数学家兼研究总监Andrew Poelstra立即开始分析它的价值,在接下来的两个月里,他创建了一份详细的白皮书,概述了创建独立大发3d所涉及的密码学、基本定理和协议。

作为一个协议,它所要做的是完全隐藏交易中的值,并消除对地址的需求,同时解决扩展性问题。

保密交易

假设你想隐藏发送的金额。一个众所周知而且快速的隐藏信息的好方法:哈希!哈希允许你确定性地生成一个长度恒定的随机字符串,而不用管输入的长度,并且不可逆转。然后我们可以对金额进行哈希并在交易中把它发送出去。

X = SHA256(amount)
 或者
4A44DC15364204A80FE80E9039455CC1608281820FE2B24F1E5233ADE6AF1DD5 = SHA256(10)

但是由于哈希是确定性的,有人会把所有可能金额的哈希编成一个目录,这样就无法达到隐藏的目的了。所以,我们不只是对金额进行哈希,而是先用一个私有的盲因子乘以金额。如果保持盲因子私有,就无法知道哈希中的金额。

X = SHA256(blinding factor * amount)
这被称为承诺(commitment),你承诺一个值而不去透露它,并且在不更改承诺的结果值的情况下,它是无法更改的。

但是,节点如何使用这种承诺方式来验证交易呢?最起码,需要证明你满足两个条件:一是你有足够的币,二是你没有在这个过程中造币。大多数协议验证这一点的方法是消耗之前的一个(或多个)输入交易,并且在该过程中创建不超过输入总和的输出。如果我们对这些值进行哈希,而没有办法验证这种情况,那么就可以凭空造币。

input(commit(bf,10), Alice) -> output(commit(bf,9), BOB), outputchange(commit(bf,5), Alice)
Or
input(4A44DC15364204A80FE80E9039455CC1608281820FE2B24F1E5233ADE6AF1DD5, Alice) ->
output(19581E27DE7CED00FF1CE50B2047E7A567C76B1CBAEBABE5EF03F7C3017BB5B7, Bob)
output(EF2D127DE37B942BAAD06145E54B0C619A1F22327B2EBBCFBEC78F5564AFE39D, Alice)

 如上图所示,后面的进行哈希过的值看起来和其他内容一样有效,却导致Alice创造了4个币作为交易找零。在任何交易中,输入之和必须等于输出之和。我们需要某种方法对这些进行哈希过的值进行数学运算,以证明:

commit(bf1,x) = commit(bf2,y1) + commit(bf3,y2)
 如果是有效的交易,则:
commit(bf1,x) - commit(bf2+bf3,y1+y2) = commit(bf1-(bf2+bf3),0)
或者仅仅是剩下的盲因子的承诺。

由于哈希算法的特性,这是不可能实现的。为了验证这一点,我们必须公开所有的盲因子和金额。但是这样做,就没有秘密可言了。那么,我们如何才能公开一个由私有值生成的值,既不能逆向推导私有值,又仍然能验证它满足某些条件?听起来有点像公钥和私钥加密…

我们在椭圆曲线密码学入门中学到的是,通过使用椭圆曲线来定义我们的数字空间,可以使用曲线上的一个点G,将其乘以任意数字x,得到的是同一曲线上的另一个有效点P。这个计算是很快的,但是根据结果点和公开的生成元点G,几乎不可能计算出使用了什么乘数。这样我们就可以用点P作为公钥,数字x作为私钥。有趣的是,它们还具有可加和可沟通的奇妙特性。

如果取点P等于x • G,点Q等于y • G,它们相加的结果点W=P+Q等于用数字组合x+y创建的一个新点:

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。