A. 秘密共享和同态加密的区别
解决的问题不同,应用场景。
1、秘密共享主要是用来将一个秘密信息分割成多份,交给不同的参与者,使得只有当所有参与者合并它们手中的信息时,才能还原出原始的秘密信息;而同态加密则是用来对凯罩已经加密的密文进行一系列计算,得到闭宴正确密文的计算结果,而不用解密得到明文再进行计算,从而实现对加密数据的计算保护和隐私保护。
2、秘密共享主要应用于多方安全计算、安全存储和安全通信等领域;而同态加密主要应盯态闹用于云计算、区块链和数据隐私保护等领域。
B. 同态加密简介
同态加密是数据加密方式的一种,特点是允许数据在加密情况下实现数学或逻辑运算。
同态加密通常为非对称性加密。因此在介绍同态加密之前,简单介绍一下非对称性加密。非对称性加密分为三个步骤:
1. 生成一对钥匙,一个公钥pub和一个密钥priv;
2. 使用公钥pub加密原始数据,得到加密数据,公式:pub(原始数据)= 加密数据 ;
3. 使用密钥priv解密加密数据,得到原始数据,公式:priv( 加密数据 )= 原始数据 ;
同态加密允许对 加密数据 进行处理,得到的解密结果等价于在原始数据下做运算。以联邦学习用到的Paillier算法举例,假设我有两个数 和 ,我希望把它们扔给第三方做加法运算,即 + 。同时不希望第三方知道 、 及它们之和的具体值,同态加密可以派上用场,具体步骤如下:
1. (本地)生成一对钥匙,公钥pub和密钥priv,公钥用于加密,密钥用于解密;
2. (本地)使用公钥pub分别加密 和 ,得到 ( )和 ( );
3. (第三方)使用 函数处理 和 ,即 ;
4. (本地)使用密钥priv解密 ,即 ;
4中 = + 。第三方通过上述步骤3实现了 和 在加密状态下做加法的操作。
为了更直观认识上述步骤,假设 =100, =200,步骤就变成:
1. (本地)生成一对钥匙,公钥pub和密钥priv,公钥用于加密,密钥用于解密;
2. (本地)使用公钥pub分别加密 和 ,得到 =1234, =4321 (举例);
3.(第三方) 使用 函数处理 和 ,即 =12345678;
4. (本地)使用解密priv解密 ,得到 = 300。
第三方在不知道 =100和 =200,但是通过 函数依然可以在加密情况下实现相加运算。
C. 区块链中现代密码学
1983年 - David Chaum描述的盲签
1997年 - Adam Back发明的HashCash(工作证明制度的一个例子)
2001年 - Ron Rivest,Adi Shamir和Yael Tauman向加密社区提出了环签名
2004年 - Patrick P. Tsang和Victor K.提出使用环签名系统进行投票和电子现金;
2008年 - 由Satoshi Nakamoto出版的Bitcoin白皮书
2011年 - 比特币系统中的匿名分析,Fergal Reid和Martin Harrigan
2012 - 目的地址比特币匿名(CryptoNote中的一次性地址)。
安全多方计算起源于1982年姚期智的百万富翁问题。后来Oded Goldreich有比较细致系统的论述。
姚氏百万富翁问题是由华裔计算机科学家、图灵奖获得者姚启智教授首先提出的。该问题表述为:两个百万富翁Alice和Bob想知道他们两个谁更富有,但他们都不想让对方知道自己财富的任何信息。该问题有一些实际应用:假设Alice希望向Bob购买一些商品,但她愿意支付的最高金额为x元;Bob希望的最低卖出价为y元。Alice和Bob都非常希望知道x与y哪个大。如果x>y,他们都可以开始讨价还价;如果z<y,他们就不用浪费口舌。但他们都不想告诉对方自己的出价,以免自己在讨价还价中处于不利地位。
该方案用于对两个数进行比较,以确定哪一个较大。Alice知道一个整数i;Bob知道一个整数j, Alice与B0b希望知道究竟i>=j还是j>i,但都不想让对方知道自己的数。为简单起见,假设j与i的范围为[1,100】。Bob有一个公开密钥Eb和私有密钥Db。
安全多方计算(Secure Multi-Party Computation)的研究主要是针对无可信第三方的情况下, 如何安全地计算一个约定函数的问题. 安全多方计算在电子选举、电子投票、电子拍卖、秘密共享、门限签名等场景中有着重要的作用。
同态加密(Homomorphic Encryption)是很久以前密码学界就提出来的一个Open Problem。早在1978年,Ron Rivest, Leonard Adleman, 以及Michael L. Dertouzos就以银行为应用背景提出了这个概念[RAD78]。对,你没有看错,Ron Rivest和Leonard Adleman分别就是着名的RSA算法中的R和A。
什么是同态加密?提出第一个构造出全同态加密(Fully Homomorphic Encryption)[Gen09]的Craig Gentry给出的直观定义最好:A way to delegate processing of your data, without giving away access to it.
这是什么意思呢?一般的加密方案关注的都是数据存储安全。即,我要给其他人发个加密的东西,或者要在计算机或者其他服务器上存一个东西,我要对数据进行加密后在发送或者存储。没有密钥的用户,不可能从加密结果中得到有关原始数据的任何信息。只有拥有密钥的用户才能够正确解密,得到原始的内容。我们注意到,这个过程中用户是不能对加密结果做任何操作的,只能进行存储、传输。对加密结果做任何操作,都将会导致错误的解密,甚至解密失败。
同态加密方案最有趣的地方在于,其关注的是数据处理安全。同态加密提供了一种对加密数据进行处理的功能。也就是说,其他人可以对加密数据进行处理,但是处理过程不会泄露任何原始内容。同时,拥有密钥的用户对处理过的数据进行解密后,得到的正好是处理后的结果。
有点抽象?我们举个实际生活中的例子。有个叫Alice的用户买到了一大块金子,她想让工人把这块金子打造成一个项链。但是工人在打造的过程中有可能会偷金子啊,毕竟就是一克金子也值很多钱的说… 因此能不能有一种方法,让工人可以对金块进行加工(delegate processing of your data),但是不能得到任何金子(without giving away access to it)?当然有办法啦,Alice可以这么做:Alice将金子锁在一个密闭的盒子里面,这个盒子安装了一个手套。工人可以带着这个手套,对盒子内部的金子进行处理。但是盒子是锁着的,所以工人不仅拿不到金块,连处理过程中掉下的任何金子都拿不到。加工完成后。Alice拿回这个盒子,把锁打开,就得到了金子。
这里面的对应关系是:盒子:加密算法盒子上的锁:用户密钥将金块放在盒子里面并且用锁锁上:将数据用同态加密方案进行加密加工:应用同态特性,在无法取得数据的条件下直接对加密结果进行处理开锁:对结果进行解密,直接得到处理后的结果同态加密哪里能用?这几年不是提了个云计算的概念嘛。同态加密几乎就是为云计算而量身打造的!我们考虑下面的情景:一个用户想要处理一个数据,但是他的计算机计算能力较弱。这个用户可以使用云计算的概念,让云来帮助他进行处理而得到结果。但是如果直接将数据交给云,无法保证安全性啊!于是,他可以使用同态加密,然后让云来对加密数据进行直接处理,并将处理结果返回给他。这样一来:用户向云服务商付款,得到了处理的结果;云服务商挣到了费用,并在不知道用户数据的前提下正确处理了数据;
聚合签名由Boneh等人提出,主要是通过聚合多个签名为一个签名,来提高签名与验证的效率。要对多个用户的数据进行签名,聚合签名能够极大地降低签名计算复杂度。CL就是聚合签名。
零知识证明过程有两个参与方,一方叫证明者,一方叫验证者。证明者掌握着某个秘密,他想让验证者相信他掌握着秘密,但是又不想泄漏这个秘密给验证者。
双方按照一个协议,通过一系列交互,最终验证者会得出一个明确的结论,证明者是或不掌握这个秘密。
对于比特币的例子,一笔转帐交易合法与否,其实只要证明三件事:
发送的钱属于发送交易的人
发送者发送的金额等于接收者收到金额
发送者的钱确实被销毁了
整个证明过程中,矿工其实并不关心具体花掉了多少钱,发送者具体是谁,接受者具体是谁。矿工只关心系统的钱是不是守恒的。
zcash 就是用这个思路实现了隐私交易。
零知识证明的三条性质对应:
(1)完备性。如果证明方和验证方都是诚实的,并遵循证明过程的每一步,进行正确的计算,那么这个证明一定是成功的,验证方一定能够接受证明方。
(2)合理性。没有人能够假冒证明方,使这个证明成功。
(3)零知识性。证明过程执行完之后,验证方只获得了“证明方拥有这个知识”这条信息,而没有获得关于这个知识本身的任何一点信息。
只有环成员,没有管理者,不需要环成员之间的合作,签名者利用自己的私钥和集合中其他成员的公钥就能独立的进行签名,不需要其他人的帮助,集合中的其他成员可能不知道自己被包含在了其中。
环签名可以被用作成一种泄露秘密的方式,例如,可以使用环形签名来提供来自“白宫高级官员”的匿名签名,而不会透露哪个官员签署了该消息。 环签名适用于此应用程序,因为环签名的匿名性不能被撤销,并且因为用于环签名的组可以被即兴创建。
1)密钥生成。为环中每个成员产生一个密钥对(公钥PKi,私钥SKi)
2)签名。签名者用自己的私钥和任意n个环成员的公钥为消息m生成签名a
3)签名验证。签名者根据环签名和消息m,验证签名是否是环中成员所签。如果有效就接收,如果无效就丢弃。
群签名的一般流程
盲数字签名(Blind Signature)简称盲签名——是一种数字签名的方式,在消息内容被签名之前,对于签名者来说消息内容是不可见的。1982年大卫·乔姆首先提出了盲签名的概念。盲签名因为具有盲性这一特点,可以有效保护所签署消息的具体内容,所以在电子商务和电子选举等领域有着广泛的应用。
类比例子:对文件签名就是通过在信封里放一张复写纸,签名者在信封上签名时,他的签名便透过复写纸签到文件上。
所谓盲签名,就是先将隐蔽的文件放进信封里,而除去盲因子的过程就是打开这个信封,当文件在一个信封中时,任何人不能读它。对文件签名就是通过在信封里放一张复写纸,签名者在信封上签名时,他的签名便透过复写纸签到文件上。
一般来说,一个好的盲签名应该具有以下的性质:
不可伪造性。除了签名者本人外,任何人都不能以他的名义生成有效的盲签名。这是一条最基本的性质。
不可抵赖性。签名者一旦签署了某个消息,他无法否认自己对消息的签名。
盲性。签名者虽然对某个消息进行了签名,但他不可能得到消息的具体内容。
不可跟踪性。一旦消息的签名公开后,签名者不能确定自己何时签署的这条消息。
满足上面几条性质的盲签名,被认为是安全的。这四条性质既是我们设计盲签名所应遵循的标准,又是我们判断盲签名性能优劣的根据。
另外,方案的可操作性和实现的效率也是我们设计盲签名时必须考虑的重要
因素。一个盲签名的可操作性和实现速度取决于以下几个方面:
1,密钥的长度;
2,盲签名的长度;
3,盲签名的算法和验证算法。
盲签名具体步骤
1,接收者首先将待签数据进行盲变换,把变换后的盲数据发给签名者。
2,经签名者签名后再发给接收者。
3,接收者对签名再作去盲变换,得出的便是签名者对原数据的盲签名。
4,这样便满足了条件①。要满足条件②,必须使签名者事后看到盲签名时不能与盲数据联系起来,这通常是依靠某种协议来实现的。
D. 区块链技术如何保障信息主体隐私和权益
隐私保护手段可以分为三类:
一是对交易信息的隐私保护,对交易的发送者、交易接受者以及交易金额的隐私保护,有混币、环签名和机密交易等。
二是对智能合约的隐私保护,针对合约数据的保护方案,包含零知识证明、多方安全计算、同态加密等。
三是对链上数据的隐私保护,主要有账本隔离、私有数据和数据加密授权访问等解决方案。
拓展资料:
一、区块链加密算法隔离身份信息与交易数据
1、区块链上的交易数据,包括交易地址、金额、交易时间等,都公开透明可查询。但是,交易地址对应的所用户身份,是匿名的。通过区块链加密算法,实现用户身份和用户交易数据的分离。在数据保存到区块链上之前,可以将用户的身份信息进行哈希计算,得到的哈希值作为该用户的唯一标识,链上保存用户的哈希值而非真实身份数据信息,用户的交易数据和哈希值进行捆绑,而不是和用户身份信息进行捆绑。
2、由此,用户产生的数据是真实的,而使用这些数据做研究、分析时,由于区块链的不可逆性,所有人不能通过哈希值还原注册用户的姓名、电话、邮箱等隐私数据,起到了保护隐私的作用。
二、区块链“加密存储+分布式存储”
加密存储,意味着访问数据必须提供私钥,相比于普通密码,私钥的安全性更高,几乎无法被暴力破解。分布式存储,去中心化的特性在一定程度上降低了数据全部被泄漏的风险,而中心化的数据库存储,一旦数据库被黑客攻击入侵,数据很容易被全部盗走。通过“加密存储+分布式存储”能够更好地保护用户的数据隐私。
三、区块链共识机制预防个体风险
共识机制是区块链节点就区块信息达成全网一致共识的机制,可以保障最新区块被准确添加至区块链、节点存储的区块链信息一致不分叉,可以抵御恶意攻击。区块链的价值之一在于对数据的共识治理,即所有用户对于上链的数据拥有平等的管理权限,因此首先从操作上杜绝了个体犯错的风险。通过区块链的全网共识解决数据去中心化,并且可以利用零知识证明解决验证的问题,实现在公开的去中心化系统中使用用户隐私数据的场景,在满足互联网平台需求的同时,也使部分数据仍然只掌握在用户手中。
四、区块链零知识证明
零知识证明指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的,即证明者既能充分证明自己是某种权益的合法拥有者,又不把有关的信息泄漏出去,即给外界的“知识”为“零”。应用零知识证明技术,可以在密文情况下实现数据的关联关系验证,在保障数据隐私的同时实现数据共享。
E. 请大神解答一下什么是同态加密,百度的都看不懂。
同态加密是一种特殊的加密方法,将明文加密之后通过特殊的运算处理得出的结果与把明文经过特殊处理再进行加密的结果是一样的。这项技术可以在加密的数据中进行诸如检索、比较等操作而无需对数据先进行解密,从根本上解决将数据委托给第三方时的保密问题。这种专业术语在网络上都是解释地比较深奥的,没有基础很难看懂,推荐你们去看煊凌科技的官网,上面的区块链专业术语都是解释得比较通俗。如果看不懂的话还可以在网站联系客服,请他们解答。