拿什么保护你,我的区块链

2020-07-28 11:33 栏目:经验之谈 来源:网络整理 查看()

包含在新基础设施中的区块链广泛应用于多方参与的系统中,具有数据不可篡改、可公开监管、易于验证等特点,为多方交互信息(行为、数据等)提供了可靠的证据。)。那么,当信息链接受到公众监督时,它能为信息提供隐私保护吗?隐私保护数据如何验证其可靠性?腾讯云块链采用同态加密、零知识证明、可信计算等技术,为区块链的数据隐私和行为可靠性提供多方面的保障,为国家秘密算法提供支持。在金融和政府事务场景中,您可以选择适应SM2-SM3国家秘密证书套件,它完全符合国家标准和银行标准。那么,腾讯云区块链是如何同时实现隐私和可靠性的呢?

“小教室这个术语:

隐私:我有一个价值,但我不会告诉你它是多少。

可靠性:我有一个价值,我向你证明它,并证明它是我的。"

1.供应链中的交易场景

以连锁交易为例,有三种交易方案可以平衡隐私和可靠性:同态加密、ZK证明和可信计算。图1所示的转账场景是区块链常见的交易场景。在比特币、以太网等公共链中。这样的交易以明文形式存储在链中,也就是说,任何人都可以通过区块链提供的查询功能获得任何账户的余额、资本趋势和其他信息。

拿什么保护你,我的区块链

2.供应链中的交易场景

例如,我在银行的余额可以加密,而银行不知道密钥,所以我的余额是保密的;但同时,如果我花10元,银行可以根据我的加密余额扣除相应的钱。这相当于在执行交易的同时保护隐私。这是同态加密。

同态加密算法已经被很多朋友接触甚至使用。这种加密算法具有将密文操作映射为明文操作的特点。利用同态加密,可以直接运算密文来改变隐藏在密文中的明文。

2.1同态加密介绍:如何选择同态加密算法?

“符号类:

拿什么保护你,我的区块链

根据算法支持的同态运算,同态加密的能力是不同的。最受关注的同态运算有四种:

2.1.1加法同态:(在现有算法的数学结构中,加法和减法是相同类型的运算)

拿什么保护你,我的区块链

2.1.2乘法同态

拿什么保护你,我的区块链

腾讯云区块链同态加密同时支持派利尔公钥加密和格加密算法。

加法同态是最容易支持的,几乎所有的同态加密算法都支持加法同态。在目前的实用算法中,派利尔公钥加密是一种同态加密算法,它不仅支持加法同态,还支持密文和明文的相乘。同态能力,即支持加法、乘法甚至除法的同态能力,在基于格的加密算法中更为常见。基于格的算法是后量子的,也就是说,即使在使用量子计算的环境中,这些算法仍然是安全的,不能被暴力破解,但是这些算法的耗时也非常高。

Paillier是一种基于DCRA假设的算法,每秒钟可以计算数万个同态加法(作者最后一次亲自测试是每秒15,000次:在普通Linux系统上的Golang实现,安全级别为2048位)。在相同的安全配置下,基于格的BGV算法每秒只能计算不到格(基准:在相同的环境和安全级别下,每次大约需要700-800毫秒)。这是安全级别、功能强度和性能之间永恒的权衡。

如此强大的同态加密是无用的?事实上,对于每10分钟产生一个块的公共链来说,800毫秒的计算速度仍然是可以接受的。然而,在支持和要求快速阻塞的场景中,我们仍然选择了Paillier。毕竟,我们注重性能和可靠性。

Paillier有各种语言的开源实现,其中一些已经被大规模使用。然而,基于格的后量子算法并没有得到广泛的应用,除了效率之外,它还非常容易使用。HElib是一个C实现,它与其他语言有很好的兼容性。

2.2处理同态加密中的负数

拿什么保护你,我的区块链

2.3处理同态加密中的小数

上述同态加密算法离现实还有很大的障碍。原始算法被设计为整数。这是可以理解的,因为这些密码算法都基于数论。在他们所依赖的数学理论中,数学结构是用整数来表示的,这自然与整数相容,但对小数就不那么友好了。然后,当使用这些算法时,我们需要做一些兼容性处理。事实上,这些处理相对直观,它们都是从工程上解决的,不需要从理论上解决。

2.3.1保持现场有固定的小数位数:

例如,记录金额的数据通常保留两位小数。在这种情况下,在加密之前,所有的数据都要乘以100才能成为一个整数,而在解密之后,通过除以100就可以得到原始的十进制数。这种方法只要不涉及密文和密文的乘法运算,就能解决十进制兼容性问题。

2.3.2保留任意小数位数:

数据的整数部分和小数部分被分开并加密,然后在解密后重新组合。使用这种方案时,我们应该注意为小数部分的数据部分保留一部分缓冲位。当密文计算导致进位到整数部分时,这个整数值可以暂时保存在密文中。以派利尔算法为例,明文长度允许为2048位。作为十进制组件,可以认为明文使用1024位来表示十进制,而其他1024位是为可能的进位整数保留的(事实上,保留64位整数可能就足够了)。

2.3.3准确的计算结果:

拿什么保护你,我的区块链

2.4使用同态加密保护交易隐私

回到链交易的问题,在引入同态加密之后,交易过程变成如图2所示。

拿什么保护你,我的区块链

3.如何保证——零知识证明操作的合理性

我不会给你看我的身份证,但我想向你证明我已经18岁了。这个时候我该怎么办?

拿什么保护你,我的区块链

“注意:在算法的这一部分,大写变量是椭圆曲线上的点,小写变量是数值。除法符号表示模拟运算。”

拿什么保护你,我的区块链

3.1彼得森承诺算法[3]

承诺算法是一种提供数据绑定和数据机密性的算法。它有两个基本界面:做出承诺和公开承诺。

拿什么保护你,我的区块链

承诺的隐藏可以为链上的数据提供隐私保护,而绑定可以为链上机密数据的公开监管提供可靠性保证。

3.1.1彼得森承诺算法的细节

拿什么保护你,我的区块链

3.1.2彼得森承诺的同态运算

彼得森的承诺支持部分同态:承诺,承诺价值,承诺-承诺,承诺-价值,承诺的逆,承诺价值。

拿什么保护你,我的区块链

3.2 Bullet证明零知识范围证明(zk范围证明)算法[4,5]

彼得森承诺算法只能保证对密文(承诺)进行正确的数值运算,但对运算结果没有任何限制。在某些情况下,比如转账——,我们要求转出账户的余额要大于转出金额,即计算结果应该是非负数。零知识范围的证明可以提供在不公开数值的情况下证明一个数在一定范围内的能力。

零知识证明具有三个特征:零知识、完备性和公平性。

零知识:通过给定的证明、验证过程和公开信息,不可能计算出证明中包含的隐藏命题成分。

完备性:根据该算法对正确命题的所有证明都可以通过验证。

公平性:由不正确的命题产生的证明不能被验证。

拿什么保护你,我的区块链

拿什么保护你,我的区块链

证明输入中的c实际上是x的Pedersen承诺,转化为非交互证明后,验证过程主要验证以下几点:

1.证据和承诺中约束和隐藏的是相同的价值;

2.证书中的内容在范围内。

多种不同的证明(除了盲目因素外,证明中还有其他随机因素)可以对应同一个承诺,而多种不同的承诺不能对应同一个证明进行验证。

3.3任何范围的证明

拿什么保护你,我的区块链

4.将计算逻辑放入保险箱——可信计算(TEE)

前两个小节介绍了在区块链解决机密交易的两个密码系统。密码算法提供了高度的安全性,但是它们也有缺点:兼容性问题和低操作效率。面对安全级别、功能和性能之间永恒的权衡,我们还有工程加密解决方案——可信计算。

与密码算法相比,可信计算在理论上不能被严格证明是安全的(推导出等价于NP问题),但在现实中很难突破可信计算环境。此外,它还具有兼容性好、操作灵活、运算效率高的优点,是密码算法的良好替代品。

可信计算本质上是使用硬件来构建一个反沙箱环境,外部(包括操作系统)不能自主访问或更改可信硬件内部的软件和数据。结合一些简单的密码算法,可信硬件可以安全地与外界进行交互,从而实现在可信环境下处理敏感数据,然后以密文形式取出并提供可靠性认证的目的。

例如,腾讯的计费业务催生的风险控制系统已经积累了大量准确的风险控制模型能力。如果外部合作游戏厂商希望通过腾讯的风险控制模式来提高业务风险控制效果,他们就不希望暴露用户信息的敏感数据。此时,我们可以确保通过可信计算在可信域中处理风控制模型和用户信息,并与区块链相结合,以确保交互跟踪、可追溯性和透明性。

有三种主流可信硬件:

1.sgx(软件保护扩展):英特尔的处理器扩展芯片提供有限的安全指令集,具有强大的计算能力,在应用层是软件加固的,并且没有存储容量。

2.可信平台模块(TPM):TCG的可信计算模块(AMD、惠普、IBM、英特尔和微软的联合项目),首先启动,可用于从硬件到软件的认证链,计算和存储能力较弱。

3.信任区(trust zone):ARM架构中的一个可信计算扩展模块,它是非公共架构,行为类似于SGX。

由于SGX具有强大的计算能力,并且其兼容的操作逻辑灵活多样(几乎是图灵完成的),我们以SGX为主体进行介绍。SGX最初设计用于保护可信域之外的软件和硬件读写。这里的对手包括操作系统、虚拟机管理程序、基本输入输出系统、固件等。在当地环境中。即使同一系统中的其他软件受到特权攻击,也不会影响信任域。

拿什么保护你,我的区块链

SGX硬件中有两个固有的私钥:根密封密钥和根供应密钥,它们分别用于导出加密密钥和认证可靠性。这两个私钥是通过使用可编程只读存储器保存的。可编程只读存储器一次刻录后不能更改,在SGX也不能从外部访问。SGX的隔离原则如图5所示,其中飞地是运行从外部导入的逻辑的资源片段。

拿什么保护你,我的区块链

预配密钥类似于证书,英特尔是一个证书颁发机构,它将为所有SGX模块的预配密钥颁发独立的证书。密封密钥绝对只存在于SGX,每个SGX硬件都有一个唯一的密封密钥(当然,随机数会发生冲突,但概率极低),用于生成所有后续的私钥或密钥对进行加密。SGX的可靠性是通过供应密钥的证书系统从外部验证的:它是否是一个可信的环境,以及飞地中的运行逻辑是否没有被篡改。当内部和外部通信时,使用从密封密钥导出的密钥进行加密。供应和密封分别保证可信计算的可靠性(包括操作逻辑不被篡改和结果被认证)和保密性。

4.1使用可信计算保护交易隐私

拿什么保护你,我的区块链

4.2链条下的桥梁

TEE也可用于链上互连。在某些情况下,计算逻辑需要部署在链下,但不能以智能合同的形式部署在区块链。例如,某些国家或地区的数据不能跨地区传输到其他地区的区块链,只能在处理完该地区的数据后才能传输。此时,数据处理逻辑可以部署在TEE中。TEE收集数据并计算后,结果经过签名和验证,然后传输到跨区域的区块链。区块链节点只需要验证TEE的签名和可靠性就可以决定是否接受上行链路请求。

5.安全领域的自主可控光——国家秘密算法

国家秘密算法是一套基本的密码算法,包括对称加密、非对称加密、签名、散列等。从算法设计、理论推导到开发和实现,是中国自主开发的一套密码算法。过去,商业密码算法由美国主导。从理论到算法实现,都是由国外学者和工程师完成的。我们不确定在与安全相关的密码算法设计中是否有后门。在政府事务、军事、金融等敏感领域。在使用他人的算法时,存在敏感信息被泄露和重要信息被篡改的风险,因此国家推广独立的密码算法势在必行。

腾讯云区块链使用的加密算法不仅是区块链自己的哈希和签名,也是通信过程中的凭证。腾讯云区块链平台基于自主研发的国家秘密解决方案,为国家秘密证书提供支持。它支持在区块链节点和区块链用户之间的通信中使用传统的ECDSA-SHA256证书和国家秘密SM2-SM3证书。切换证书时,用户可以选择自己的证书,而用户并不知道这些证书。

目前,国家秘密算法的支持一方面满足了金融、政务和各种企业安全标准的要求,另一方面可以帮助中国的区块链技术实现自我控制和安全,不受人的支配。

6.区块链密码安全特性的工业应用

话虽如此,腾讯云块链中使用的这些安全技术离我们的现实生活有多近?如何利用前文中提到的同态加密和零知识范围证明实现的保密交易,以及可信计算实现的多方计算和链与链之间的互通?下面我们介绍一些真实场景的应用。

在银行和金融系统中,使用链上的机密交易,账户信息被加密,然后放在区块链进行认证,交易金额也在交易请求中加密,以保护资本流动。然后,通过同态加密或零知识证明算法,实现对链上密文的计算和对计算结果的验证,从而达到交易信息保密、交易事件公开监管和交易结果及时验证的效果。例如,A公司和B公司作为区块链分布式分类账的参与者,可以将其账户余额和其他信息以同态加密密文的形式保存在链中。这样,当甲向乙支付一笔款项时,甲可以通过同态运算执行交易,并提供余额足以支付交易的证明,零知识证明,从而使整个业务交互在隐私保护下进行。

在广告场景中,具有可信计算功能的腾讯云区块链也可以用来安全地从私人数据中联合提取公开可用的信息。广告归属是涉及多方数据共享的典型场景。该场景的主要参与者包括广告分销商和广告平台:广告分销商拥有用户购买其产品或服务的交易信息,而广告平台拥有用户浏览和点击分销商在平台上投放的广告的信息。在当前的商业模式下,广告商将根据浏览和点击广告的用户是否购买产品或服务来计算广告转换率。计算公式为:转换率=浏览和购买广告的用户数/浏览广告的用户数。为了获得转换率数据,有必要获得在广告提供商侧购买了产品的用户集合和在广告平台侧浏览了广告的用户集合的交集。广告商和广告平台可以使用第四部分中提到的上链和下链交互工作机制,在区块链上放置他们自己的数据证书,而不披露数据本身。当需要计算转换率时,可以通过可信计算环境验证链上证书和链下的实际数据,并根据实际数据计算结果。整个过程不会揭示数据链下的信息。

这是本期的结尾。区块链有很多安全应用场景。我希望这个分享可以帮助每个人思考。

[1]施诺尔,“智能卡的有效识别和签名”,密码1989

[2]菲亚特,沙米尔,“如何证明自己:识别和签名问题的实用解决方案”,密码1986

[3]彼得森,“非交互式和信息论安全可验证秘密共享”,密码1991

[4] Camenisch,Chaabouni,Shelat,“集合成员和范围证明的有效协议”,AsiaCrypt 2008

[5] Bunz,Bootle,Boneh,Poelstra,Wuille,Maxwell,“Bulletproofs:Short校样for secretary Transactions and More”,SP 2018

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发