一、shamir秘密共享
简述
自安全多方计算技术出现后,秘密共享(secret sharing)技术被广泛应用于安全多方计算协议的构造中。秘密共享技术通过将秘密信息拆分为若干秘密份额,由多位参与者分别保存,通过参与者的合作,可以使用门限个数或者更多个数的秘密份额来重新构造出原始秘密消息。
秘密共享技术的特点在于其计算量小、通信量较低,非常适合用于需要高频通信并进行复杂计算的安全多方计算协议之中。除了Shamir秘密共享外,现有的安全多方计算协议还常采用加法秘密共享、复制秘密共享等方案。
Shamir秘密共享是一种门限秘密共享方案,基于多项式的拉格朗日插值(t,n)门限秘密共享方案中,参与秘密共享的成员有n个,分发者通过秘密多项式,将秘密S分解为n个秘密,分发给持有者,需要至少t个成员的秘密份额才能计算重构S。
算法思路
I.加密过程
1.假设有秘密S要保护,任意取t-1个随机数,构造如下多项式:
,其中,
,所有运算均在有限域中进行。
2.取任意n个数,分别带入多项式,得到
。
3.将分发给n个服务器上。
II.解密过程
从任意t个服务器上取得数据,假设取得,带入并求解多项式系数;
解法一:用矩阵乘法表示为:
将x= 0代入多项式,即可求得原秘密S=a0。
解法二:拉格朗日插值法:
解密结果为:
二、零知识证明
在安全多方计算领域,零知识证明(ZKP,Zero-Knowledge Proof)可以用于确保多个参与方在共享计算过程中保护各自的数据。
1、简介
零知识证明是一种密码学原理,它使得一个实体(证明方)能够向另一个实体(验证方)证明一个陈述的正确性,而不需要泄露任何关于该陈述的其他信息。这种证明方法的核心在于,验证方无法从证明方获取到有关陈述的任何有用信息,但仍然能相信证明方所给出的证明是正确的。
2、零知识证明特点:
完备性(Completeness):如果证明者和验证者都是诚实的,并遵守证明过程的每一步进行正确的计算,则该证明一定会成功,验证者也一定能够接受证明者;(真的假不了)
合理性(Soundness):没有人能够假冒证明者,从而使这个证明成功;(假的真不了)
零知识性(Zero-Knowledge):证明过程执行完后,验证者只会得悉"证明者拥有这项知识",而没有获得关于这项知识本身的任何信息。
3、零知识证明的例子
向红绿色盲证明红球、绿球,数独的零知识证明、三染色问题的零知识证明
4、应用
零知识证明技术在需要保护隐私和安全的场景中具有广泛的应用前景:
身份识别协议
数字签名
加密
区块链隐私保护,zcash(加密货币)
5、zk-SNARK
全称为Zero-Knowledge Succinct Non-interactive Argument of Knowledge,即“零知识简洁非交互式知识论证”,是一种零知识证明(ZKP)。具有简洁、高效和非交互性的特点,在区块链和加密货币领域得到了广泛应用。
为特定问题生成 zk-SNARK 包括以下四个阶段:
将问题(或函数)转换成算术门电路。
然后将这个电路翻译成矩阵公式。
这个矩阵公式进一步转换成一个多项式,这个多项式应该能被一个特定的最小多项式整除。
最后,这种可整除性在有限域的椭圆曲线点中表示出来,证明就在这里进行。