草庐IT

【区块链隐私计算】技术原理及业务场景

SugarPPig 2023-06-07 原文

1.区块链隐私计算介绍

区块链隐私计算是一种保护用户隐私,确保数据安全和保密的技术,通过区块链技术和密码学算法等手段实现了用户之间的数据安全共享和隐私保护。

在传统区块链技术中,数据是公开透明的,且所有数据都会被记录在区块链上,所有节点都可以访问。因此,如果区块链中记录的信息涉及到个人隐私或商业机密等敏感信息,就会存在被其他人获取、篡改、泄露的风险。为了弥补这一缺陷,区块链隐私计算技术应运而生。

区块链隐私计算技术包括同态加密(Homomorphic Encryption)、零知识证明(Zero-Knowledge Proof)、安全多方计算(Secure Multiparty Computation,SMC)、可信计算(Trusted Computing)、差分隐私(Differential Privacy)等技术手段,它们都可以在不暴露敏感数据的情况下,实现数据的共享和计算。

1.1.同态加密

同态加密(Homomorphic Encryption)是一种特殊的加密技术,它允许对密文进行无需解密的计算,最终得到的结果与对明文进行同样的计算得出的结果相同。

一种简单的同态加密是 RSA 加密方案。与 RSA 一样,同态加密也基于大数分解难题和离散对数难题。同态加密的基本原理是:对于两个整数 x 和 y,设 x 和 y 的密文分别为 c(x) 和 c(y),则这两个密文的和可以表示为:

c(x+y) = E(x) + E(y),

其中 E 为同态加密函数。同理,对于两个密文的乘积:

c(x*y) = E(x)*E(y)。

下面是一些常见的同态加密算法:

  1. 完全同态加密(Fully Homomorphic Encryption,FHE): FHE 可以对加密后的数据进行任意深度的计算操作。

  2. 部分同态加密(Partially Homomorphic Encryption,PHE): PHE 可以执行一些特定的加/乘操作。

  3. 同态加密计算(Homomorphic Encryption Scheme for Arithmetic Circuit Evaluation,HE-SCA): HE-SCA 使用了一种新的方式来实现同态加密的计算,在计算的过程中需要对电路首先进行编写,然后对所有操作都进行同态加密。

例如,假设 Alice 希望向 Bob 发送两个数 a 和 b 的和,但是她不想让 Bob 了解 a 和 b 的具体值。那么为了实现这个目标,Alice 可以利用同态加密技术来加密 a 和 b,然后将加密后的密文发送给 Bob。Bob 在收到密文后,利用同态加密技术对密文进行计算,并将计算结果发送给 Alice。Alice 再次利用同态加密技术对计算结果进行解密,从而得到 a 和 b 的和。

以上是同态加密的工作原理和分类,其实现的具体方法还需要从不同的同态加密算法入手进行深入了解。

1.2.零知识证明

零知识证明(Zero-Knowledge Proof)技术是一种加密学中常用的技术,它可以在不泄露任何有关证明内容的前提下,向其它人证明自己拥有某些信息或知道某些信息的证明方式。它是一个在计算机密码学中被广泛应用的协议,它可以帮助用户在不泄露敏感信息的前提下证明自己的身份、资格和权利。

零知识证明的工作原理是通过使用一系列加密学算法,包括哈希、公钥加密、数学计算等等,生成一个可信的证明(证明的正确性可以被验证)并验证其正确性,但又不会泄露任何有关证明内容的具体信息。具体来说,零知识证明技术不会泄露任何有关证明内容的具体信息,只会保证在证明被验证的情况下,验证者知道被验证的事件确实发生了,而无法知道如何发生的。

这种技术主要有以下几个要素:

  1. 知识:证明者必须知道某些信息。
  2. 隐藏性:证明者必须证明这些知识存在,但不能透露这些知识。
  3. 可验证性:任何人都可以验证证明的真实性,即证明正确性。

下面举一个实际的例子来说明零知识证明技术的应用:假设存在两个人Alice和Bob,他们彼此之间不信任但又需要证明自己身份的真实性。例如,Alice想向Bob证明自己是某家银行的客户,并且拥有一定的存款余额。这时,Alice可以使用零知识证明技术向Bob证明自己的身份和余额情况,但不需要透露任何其他有关账户的信息,如账户号码或密码等。

总之,零知识证明技术可以为数据隐私保护、身份认证、信息交换等领域提供有效的安全解决方案,并已被广泛应用。

1.3.安全多方计算

安全多方计算(Secure Multiparty Computation,SMC)技术是一种加密学中的协议,旨在允许在多方间进行交互操作的同时,确保数据安全和隐私保护。在SMC协议中,多个参与方可以在不相互信任的情况下共同执行一项计算任务,而不会泄露每个参与方所拥有的信息。多个参与方通过SMC协议分摊计算和存储任务以及结果,而且不需要相互通信,所有的数据流和计算结果都在安全的加密中完成。

SMC的核心原理是使用加密学算法,例如用私有计算机(对数据进行加密和解密过程)来控制访问权限,加密数据上下文、身份验证、操作控制和加密密钥管理,实现安全的多方计算。平均的说,SMC协议包含以下几个基本要素:

  1. 安全协议:在交互式的通讯过程中使用密码学协议来控制信息传递,确保通讯过程的安全。
  2. 数据隔离:将数据分散存储在多个计算机节点之间,在操作后每个参与方获得计算结果的子集,且无法得知其他服务器所拥有的数据。
  3. 加密和解密:参与方用移项和混淆的方式来保护敏感数据,以确保数据在处理和传输时的安全性。

例如,假设有三个人Alice、Bob和Charlie需要计算某个数的加法,但各自拥有同一的加数加上自己的一份数据。在使用SMC的情况下,三个人的数据都可以被加在一起,得到正确的结果,但各自数据仅自己知道,无法知道其他人的数据,因此SMC可以保障数据的安全性和隐私。

总之,SMC技术是保护计算数据隐私的一种有效手段,它可以帮助参与方在不相互信任的情况下进行计算,从而保证了多方计算的数据隐私、完整性和保密性。

1.4.可信计算

可信计算(Trusted Computing)技术是一种安全计算基础设施,旨在确保计算设备和系统的可信性、最小化计算机攻击的风险,并保护计算设备上的用户数据,防止数据被篡改、盗取、窃取等。

其技术原理包括如下几部分:

  1. 安全启动(Secure Boot)
    安全启动是在计算机启动时,验证计算机上所有的固件和软件是否受信任,并保证在启动过程中没有恶意软件的干扰。安全启动采用数字签名技术,确保计算机系统最初的启动代码和固件是合法、受信任的。

  2. 受信任的平台模块(TPM)
    受信任的平台模块是可信计算技术中的关键组件,它是一种嵌入式安全芯片,安装在主板上,用于保存密钥、证书和各种密码学参数。TPM提供了安全模式的凭证校验、可信度认证、软件及数据的完整性验证等功能,以确保对计算机系统的攻击行为得到有效控制。

  3. 测量链(Measurement Chain)
    测量链是一种记录和验证计算机系统完整性的技术。它在计算机启动后开始运行,从硬件、固件、操作系统和应用程序等方面记录和储存计算机系统运行信息,并生成数码签名。这些信息包含了计算机系统的所有细节,如计算机的型号、硬件组成、操作系统版本等等。每个记录的测量值都将被数字签名,以保证其完整性和可信性。

  4. 隔离技术
    可信计算技术还使用隔离技术来确保安全。主要表现在虚拟化技术、容器化技术、防火墙技术等上。隔离技术可以将计算机系统中不同应用程序之间的数据隔离开来,形成相对隔离的空间,并提供安全的访问控制机制,以确保不同应用程序之间的数据互不干扰,从而保证系统整体的安全。

综上所述,可信计算技术是一种保障计算设备和系统的安全和可信度的技术,实现了开放环境下的安全性和保密性,提高了计算机系统的安全性和稳定性。

1.5.差分隐私

差分隐私(Differential Privacy)是一种保护隐私信息的技术,旨在在数据挖掘等场景下保护数据的隐私性,确保敏感数据不会被泄露。该技术的基本原理是通过添加噪音使数据中的个体信息不可区分,从而保护数据的隐私。

其技术原理包括如下几个关键要素:

  1. 随机化
    差分隐私技术通过对原始数据进行随机化操作,使得原始数据中的个体信息变得不可区分,从而保护个体隐私,确保隐私不被泄露。随机化技术可以采用哈希函数、加扰方法等技术实现,可以在数据发布前或者查询时进行。
  2. 添加噪音
    为了保护隐私,差分隐私技术在随机化操作的基础上,可以添加一定程度的噪音。添加噪音的目的是为了保证数据的可用性,同时保护隐私。添加的噪音应该符合高斯分布或拉普拉斯分布,同时噪音的大小需要经过严格的计算和控制,以确保保护数据隐私的效果。
  3. 共享-不公开模型
    差分隐私技术使用共享-不公开模型进行隐私保护。该模型将数据分为两部分:一部分是隐私信息,这部分数据需要经过随机化和添加噪音的处理;另一部分是非隐私信息,在保护隐私的前提下,可以尽可能多地共享和使用。
  4. 差分隐私参数ε和δ
    差分隐私技术使用参数ε和δ来控制噪音的大小和随机化的程度。其中,ε表示数据的隐私保护水平,ε越小说明数据的隐私保护程度越高,噪音添加的越多;δ表示事件发生的概率,它是噪音大小的一个修正因子,δ越小说明数据的噪音越少,但是数据的隐私保护程度相对较低。

综上所述,差分隐私技术通过随机化和添加噪音等操作,保护个体隐私的同时,确保数据可用性和去重准确性。该技术已广泛应用于数据挖掘、搜索推荐、机器学习等领域,是当前保护个人隐私的有效方法之一。

2.业务场景示例

在金融场景中,同态加密技术可以让金融机构在不暴露客户数据的情况下,对客户的风险进行评估和管理。这可以通过以下步骤实现:

  1. 加密数据:当客户向金融机构提供财务数据时,金融机构可以使用同态加密技术对数据进行加密,将数据转化为密文形式。在这个过程中,客户的隐私和安全得到了保障。

  2. 利用同态性质对数据进行计算:对于加密后的数据,金融机构可以利用同态性质来对数据进行计算,比如加法、减法、乘法等。通过同态加密,金融机构可以在不解密的情况下对客户数据进行计算。

  3. 得出结果并解密:在计算完成后,金融机构会得到密文形式的结果。此时,金融机构可以使用同态加密技术将结果解密成明文形式,然后据此对风险进行评估和管理。

需要注意的是,在这个过程中,金融机构从未解密客户数据,从而避免泄露客户隐私。同时,金融机构也不需要保存原始的明文数据,这也有利于数据隐私的保护。

在具体应用时,同态加密技术可以用于很多数据处理方面,例如信用评估、风险控制、欺诈检测、投资决策等。而使用同态加密技术处理数据,可以从根本上保护金融机构的商业秘密和客户数据隐私。

技术技术特点应用技术成熟度
多方安全计算不泄露各自数据前提下,使用多方数据协同计算,仅输出结果多方数据流通合作两方数据合作有成熟的商用案例,多方数据合作的应用场景在不断扩展中
同态加密对密文状态下数据进行计算,最终将计算结果的密文解密多方数据流通合作、外包计算全同态性能还较低,半同态已成熟
零知识证明不泄露秘密信息前提下,证明知道符合公开约束的秘密信息运算结果的可信证明复杂的零知识证明性能有待提高
差分隐私通过添加噪声来使得无法从一个或多个数据处理结果中恢复出单个样本的敏感信息单方数据处理结果对外输出已成熟商用
可信计算通过可信的执行环境来防止攻击,保证数据和代码的私密性、完整性多方数据流通合作、运算结果的可信证明商业产品已经推出,安全性还待提高

有关【区块链隐私计算】技术原理及业务场景的更多相关文章

  1. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  2. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  3. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  4. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  5. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  6. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  7. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  8. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  9. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  10. ruby-on-rails - 用于门户的 Ruby 技术 - 2

    我刚刚看到whitehouse.gov正在使用drupal作为CMS和门户技术。drupal的优点之一似乎是很容易添加插件,而且编程最少,即重新发明轮子最少。这实际上正是Ruby-on-Rails的DRY理念。所以:drupal的缺点是什么?Rails或其他基于Ruby的技术有哪些不符合whitehouse.org(或其他CMS门户)门户技术的资格? 最佳答案 Whatarethedrawbacksofdrupal?对于Ruby和Rails,这确实是一个相当主观的问题。Drupal是一个可靠的内容管理选项,非常适合面向社区的站点。它

随机推荐