前言
区块链作为一个分布式系统,一方面通过数据共享、协同治理和协同处理,充分发挥数据的价值。另一方面,由于资源和隐私的限制,区块链只适合存储最轻、最必需和非隐私风险的数据,如散列、元数据的密文等。
数据可用性和隐私之间的紧张关系在区块链中变得越来越明显。
俗话说:鱼与熊掌不可兼得。但是专门研究复杂疾病治疗的密码学家不同意这种说法,他们提出了一种方案,即密文也可以参与计算。同态加密(HE,同态加密)。本文将解释同态加密的定义及其在FISCO BCOS中的实现。
什么是同态加密
同态加密是20世纪70年代提出的一个开放问题。它的目标是在不公开数据的情况下完成数据处理,并注重数据处理的安全性。
想象这样的场景,作为一个充满理想的第二代建筑,你过着枯燥的收房租的生活,希望摆脱世俗的束缚,去追求金钱和诗意的距离。
你需要雇一个**人来做收取租金的琐碎工作,但你不希望他监视你的月收入。因此,你让某人设计一套服装,以确保**人能够在不泄露收入信息的情况下收取租金。
这套套装包括信封、胶水、钱包和魔法剪刀,每一个都有独特的功能:
一旦用胶水把信封封好,只有魔法剪刀才能打开它。
不管信封里装了多少钱,信封的大小和重量都不会改变。
当多个信封放入一个钱包时,它们成对组合而成,不需要打开,**成为一个信封,包含合并前所有信封的总和。
你给所有房客发信封和胶水,然后把钱包交给**人。
在指定的日期,租客将租金密封在一个信封内,然后交给**人;**人收集信封,把它们放进他的钱包,**得到一个装满所有租金的信封,他把租金传给你。你用魔法剪刀把它剪开,然后得到租金。
在这个场景中,a和b两个属性的信封是公钥加密的性质,也就是说,使用公钥加密的密文获得只能由人拥有私钥进行解密,和密文不会透露明确的文本的语义信息。另一方面,C表示加法的同态。可以计算出两个密文,解密后得到的结果正好是两个原始明文的总和。
在这一点上,同态加密的全貌已经很清楚了:
同态加密本质上是一种公钥加密方案,即使用公钥pk加密,使用私钥sk解密;
同态加密支持密文计算,即同一公钥加密生成的密文对f()函数进行同态运算,生成的新密文与解密后的两个原始明文计算出的f()函数的结果完全相同。
同态加密公式描述如下:
同态加密可以分为完全同态加密(FHE,完全同态加密)和半同态加密(SWHE,有点同态加密)。
顾名思义,FHE支持任何给定的f()函数。但是,由于计算量大,目前学术界还没有实用的FHE方案。SWHE只支持一些特定的f()函数,如加法或乘法等。由于其低成本,在业界得到了广泛的应用,尤其是在云计算领域。
FISCOBCOS技术的选择
在联盟链中,考虑到监管要求,链组织可能需要在应用程序中链接一些私有数据,如收益账户、产品流等。为了不泄露机密,该机构可以使用监管机构的公钥对信息进行加密。经过加密后,信息统计可以由机构来完成。在这个场景中,同态加密非常有用,因为它需要对密文执行计算。
FISCO BCOS为用户提供了一个隐私保护工具,该工具通过集成同态加密来支持密文处理。加密和解密将公开明文数据。出于安全考虑,只适合在链条下完成。链上只保留同态操作接口,加密和解密接口以独立算法库的形式提供给应用层。
在选择同态加密方案时,考虑到计算开销,选择轻量加法同态方案。由于区块链的存储资源有限,密文不能太大,可以与标准RSA加密算法对齐。
基于以上两点,我们选择了由Paillier于1999年在EUROCRYPT上提出的基于复合度残差类的加性同态方案Paillier,公钥密码系统。
Paillier方案的实验分析如下:
通过RSA密钥生成算法得到公钥-私钥对,从上表可以看出,每个代价与密钥长度正相关。目前,1024位RSA密钥不再安全,建议使用2048位及以上密钥。
如何在FISCOBCOS中使用同态加密
FISCO bcos2.3以预编译契约的形式集成了Paillier scheme的密文同态加法接口。要启用同态加密,请打开CRYPTO_EXTENSION编译选项并重新编译源代码。同态加密预编译的合同地址分配如下:
要完成预编译契约的调用,首先需要以可解析契约格式声明契约接口。
/ / paillierprecompile SOLpragma SOLability ^ 0.4.24;{function paillierAdd(string cipher1, string cipher2) public constant returns(string);}
然后,可以在业务契约中的地址实例化预编译的契约对象,以完成同态加接口调用。
/ / CallPaillier SOLpragma SOLpragma SOLalidity ^ 0.4.24;导入”/ PaillierPrecompiled。索尔”;合同CallPaillier {paillierprecompile paillier;构造函数()public{//实例化paillierprecontract paillier = paillierprecompile (0x5003);函数add(string cipher1, string cipher2) public constantreturns(string){return paillier。PaillierAdd (cipher1 cipher2);函数add(string cipher1, string cipher2) public constantreturns(string){return paillier。}}
Paillier方案中的公钥-私钥生成、加密和解密接口在单独的密码库中提供给开发人员。该库目前包含Jaa语言Paillier方案的完整版本和用于预编译契约调用的同态plus接口的C语言版本。
密码库地址如下:
https://github.com/FISCO-BCOS/paillier-lib
未来改进方向
目前,开发人员可以访问的同态加密算法库只有Jaa版本。未来,我们将结合FISCO BCOS的SDK语言类,根据实际需要提供同态加密库的多语言版本。
同态加密一直是密码学领域的一个难题。要实现完全同态加密的计算,在性能和可用性方面还存在很大的挑战。FISCO BCOS将继续监测这一领域的技术进展。
结论
安全还有很长一段路要走,财政预算将会起起落落。目前,FISCO BCOS已经配置了各种加密工具,包括组签名、环签名和同态加密。下一步是为特定场景实现和集成定制的隐私保护解决方案。
欢迎大家使用并关注同态加密技术在隐私保护场景中的应用,共同探讨交流,给予积极反馈,构建更加安全可靠的FISCO BCOS平台。
-相关阅读-
FISCO BCOS代码是完全开源和免费的
下载地址达;AMPL达;AMPL达;
https://github.com/FISCO-BCOS/FISCO-BCOS
文章标题:链密文参与计算?同态加密显示了| FISCO BCOS的隐私特征
文章链接:https://www.btchangqing.cn/21339.html
更新时间:2020年05月17日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。