主页 > 下载官方imtoken钱包 > 基于全同态加密方法的区块链信息加密方法及过程

基于全同态加密方法的区块链信息加密方法及过程

下载官方imtoken钱包 2024-01-21 05:11:33

基于完全同态加密方法的区块链信息加密方法与流程

本发明涉及信息安全领域技术,具体涉及一种基于完全同态加密方法的区块链信息加密方法。

背景技术:

区块链技术于2008年被提出,中本聪发布《比特币白皮书》,阐述比特币的原理和特点及其底层区块链技术。 2009年,这个想法被中本聪等人实现,比特币正式诞生。 区块链作为比特币背后的技术,近年来受到越来越多的关注,甚至超越了比特币本身,被视为整个加密电子货币浪潮中最具发展和应用潜力的技术。

从狭义上讲,区块链是一种数据结构。 它由固定大小的数据块首尾相连组成一个巨大的链状数据结构。 每个块由头部和主体组成。 主体负责存储块数据。 头部主要记录了区块体的摘要信息和上一个区块头的信息。 这样,一旦记录数据的区块形成一条链,记录数据的顺序和内容就固定了,以后就不能修改了。 因此,区块链是不可变的。

此外,比特币依靠匿名账户来保护账户背后的个人信息。 同时,一个人拥有多个账户可以在一定程度上增加被锁定和追踪的难度。 但由于交易金额等所有交易信息都是公开的,因此通过实际交易仍可知晓账号与真实个人的对应关系。 例如,用比特币支付房租后,房东自然可以查询房客账户余额; 同时,在某些场景下,交易金额本身也需要保密的内容,比如收藏交易的金额。 这是加密货币广泛使用时不可避免的问题和挑战。

自比特币提出以来,已经有数十种类似的加密电子货币系统落地,其背后的区块链技术也受到越来越多的学术机构、金融机构和政府的关注和重视。 区块链研究的实践主要集中在如何提高区块链的运行效率和处理能力,以及如何应用区块链解决交易、支付、金融、公证等各种实际问题。 区块链中注重交易数据隐私保护的系统并不多,主要有:侧链系统、zerocoin系统、enigma系统。

侧链系统在比特币区块链外部构建侧链。 通过将侧链的部分区块锚定到比特币主链的区块上,实现两条不同区块链之间的数据交换。 交换和逻辑关联。 同时,在侧链上,采用加法同态的Pedersen承诺替代需要保密的交易数据,再采用环签名的方式实现对全网节点的认证确认,从而解决交易数据的隐私保护问题。 但Pedersen的承诺本质上是哈希运算,不是加密算法,原始信息不可逆转。 因此,交易数据必须存储在区块链之外,否则,即使是交易的实际参与者,也无法从事后记录在区块链中的交易数据中得知交易的详情。 这导致区块链本身的信息不完整。

Zerocoin系统通过引入可信的第三方节点对隐私数据进行处理,在可信节点上完成对加密交易数据的验证,然后利用零知识证明的签名方式完成全网节点的认证和共识。 在网络结构上,Zerocoin并没有使用额外的链,而是在比特币区块链上增加了一层协议封装来实现这套新的逻辑。 enigma系统采用秘密共享的方式,将需要保护的交易隐私数据加密拆分成很多部分,然后分发到网络中进行验证。 单个节点的验证过程只使用一份数据,不会影响安全性。 所有部分数据的验证结果最终通过复杂的网络协作汇集在一起​​,形成最终的验证结果。 这样,虽然不需要引入可信的第三方节点,但为了验证一笔交易的合法性,所有节点都执行相同的操作,需要引入复杂的协调机制来组装最终的结果。 这个过程非常复杂。

技术实现要素:

针对现有技术的上述不足,本发明提出了一种基于全同态加密方法的区块链信息加密方法,利用全同态加密方法,为敏感信息提供了交易信息的加密存储和验证方法。交易,极大地提高了区块链技术的数据安全性和保密性。 与现有的侧链方案、zerocoin方案等解决交易隐私问题的方法相比,本发明的整体结构更加精简高效,无需引入可信第三方,也无需对原有方案进行大幅度扩展和改造。区块链技术模型。 保密性可以通过最小的修改来实现。 这将大大扩展区块链的应用范围和应用场景,使区块链的内容保密。 同时,由于全同态加密的特殊性,零钱操作、交易有效性验证等操作也可以由任何第三方验证者进行。 结束。

本发明是通过以下技术方案实现的:

本发明涉及一种基于全同态加密方法的区块链信息加密方法。 信息加密方对待加密的明文进行全同态加密,然后对加密后的明文进行签名,并将加密后的密文发布给网络中的所有节点进行验证。 请求,节点使用区块链公钥对签名和信息接收方信息进行区块链验证,使用全同态公钥对密文进行同态加密运算验证。 当验证通过后,将信息加密方、接收方信息和密文打包生成区块,生成更新的区块链并广播到网络中,完成区块链的更新操作。

区块链由若干个区块组成,每个区块包括:区块头信息、区块体信息,其中区块头部分包括但不限于父区块的区块头信息的哈希值、本区块的生成时间,随机数,以及这个区块的区块体的哈希值构成了整个链结构。

签名是指:信息加密方使用区块链私钥对密文进行摘要签名操作,得到签名串,以证明该验证请求得到了信息加密方所有者的验证和签名。私钥。

全同态加密采用但不限于:对于待加密明文p∈r,随机生成函数f(xi)>0且f()可微,k={f(),y}是私钥,y={yi|∈i},当满足:∑i∈iai·(xi)·i=p,则加密后的密文为c={a,x},其中:a={ai|∈i }, x={xi|∈i}, i={1,2}。

明文包括但不限于:发送方即信息加密方、信息主体、信息接收方,其中:信息主体包括但不限于:支付金额、找零金额、等等

区块链验证是指:

i) 验证者使用发送方的区块链公钥验证信息发送方的签名,验证接收方地址是否合法;

ii) 验证者通过同态密文操作验证密文的整体合法性。

区块链的公钥最好是信息加密方的地址。 这个地址可以通过校验和来验证。 同时该地址可以作为公钥来验证匹配的私钥生成的签名是否合法。 当签名验证合法时,意味着签名的签发者确实拥有与其公钥匹配的私钥,可以确认签发者的身份。

对密文整体合法性的验证包括但不限于验证密文中所有数值输入之和减去数值输出之和,即数值变化是否大于等于0。

同态加密操作验证是指:信息加密方联系进行全同态验证的节点,即验证节点,通过密文传递操作在节点的临时密钥空间下生成密文。 在这种情况下,验证密文的操作是否合法,包括以下步骤:

Step 1. 初始化,即随机生成私钥和公钥,用私钥生成私钥加密运算支持函数、私钥密钥空间对应的单元密文、公钥加密运算支持功能;

私钥处于保密状态。

单元密文和公钥以非机密状态保存。

运算支持函数和公钥加密运算支持函数最好保密保存在第三方服务器中,仅在进行密文同态运算和接受或解密公钥加密得到的密文时调用。

Step 2. 将明文加密生成密文,即直接使用私钥加密得到直接密文或者使用私钥对应的公钥进行加密运算得到相同密钥空间的兼容密文;

直接密文和兼容密文在同一个密钥空间,即均由私钥解密还原得到明文或先由公钥加密运算支持函数处理后由私钥解密得到明文得到相同的 处理后的明文。

当用于解密的私钥丢失或无法获取时,可以通过启用备份私钥并将密文转换到对应的密钥空间来实现解密,具体为:提前生成新的私钥,即备份私钥,并通过备用私钥和原私钥联合运算,生成密钥替换支持函数和原密钥的多项式密钥部分的替换表达式,并备份在服务器端; 当需要替换密钥时,密钥替换支持函数和原始密钥通过密钥多项式密钥部分的替换表达式对密文进行密钥空间变换后,转换后的密文可以用备用私钥解密钥匙。

Step 3. 当需要将密文安全传递给验证节点时,通过①信息加密方、验证节点和第三方服务器或②信息加密方和验证节点完成密文传递,其中:

方案① 具体步骤包括:

3.1)首先,服务器生成一个临时密钥,发送给发送方和接收方;

3.2) 接收端根据服务器临时密钥生成接收端临时密钥、投递函数和接收端投递支持函数,并将投递函数发送给密文发送端,将接收端投递支持函数发送给密文发送端服务器;

3.3) 发送方生成发送方临时密钥,将待投递的密文从原密钥空间转移到临时密钥空间,根据接收服务器的临时密钥和从接收方获得的投递函数生成投递支持函数发送方,最后将密文和发送方的投递支持函数发送给服务器;

3.4) 服务器根据接收端的投递支持函数、密文和发送端的投递支持函数,依次将密文从发送端的临时密钥空间转换到接收端的临时密钥空间,然后到原始密钥密钥空间,最后将转换后的密文发送给接收方进行同态验证。

方案②的具体步骤包括:

3.a) 接收端生成临时密钥、传递函数及其对应的密钥替换支持函数,然后将临时密钥和传递函数发送给发送端;

3.b) 发送方首先生成发送方的临时密钥,将待投递的密文从原密钥空间转换到临时密钥空间,然后根据接收方的临时密钥和投递函数生成发送方的投递支持函数,然后向接收端发送临时密钥空间密文和发送端的投递支持函数;

3.c) 接收端根据临时密钥空间密文和发送端的投递支持函数,将密文从发送端临时密钥空间转换为接收端临时密钥空间,然后转换为用于同态验证的原始密钥空间。

Step 4. 同态验证:验证节点调用全同态加密计算的相关服务,计算所有输入之和减去输出等于变化,同时验证变化>=0,然后验证节点验证交易方字典比特币交易验证流程,即操作支持函数Authenticity。 最后,当验证节点验证output_a=output_b,即任何第三方使用该运算支持函数进行密文计算,得到的结果真实无误时,验证通过。

上述第三方服务器作为同态加密运算助手存在,不构成区块链系统的必要组成部分。 只是为了提高运行效率,加快数据传输速度。

同时,这个服务器是去信任的,这意味着区块链中的所有节点在验证交易的有效性时不需要事先假定服务器的计算是真实的,而是可以通过一系列的计算来进行零知识操作。 证明服务器所做的每一个操作都是真实的。

上述网络中的所有节点都使用上述过程来验证交易的合法性和真实性。 这种验证操作需要交易双方和第三方服务器的支持,但整个验证操作不需要建立在对服务器的信任之上。 同时可以保证即使验证者无法获知交易的真实金额数据,也可以顺利完成计算和真实性验证。

优选地,信息接收方可以用自己的私钥对更新后的区块链进行解密,恢复出明文。

技术效果

与现有技术相比,与普通的区块链相比,本发明实现了对交易的所有相关信息进行加密,数据的安全性和保密性显着提高。 同时,由于全同态加密的特殊性,保证了即使在加密状态下,任何网络节点都可以安全、同态地完成交易的有效性验证操作,从而保留了区块链的去中心化性以及整个网络的完整性。 审计共识机制。

与现有解决区块链交易隐私问题的方法相比,本发明结构简洁明了,适应性广,可操作性强,处理速度快,无需引入复杂的附加网络结构,无需首先引入可信三方节点的优势,可以最大限度的保证数据的安全性,同时不会对区块链的公平正义产生任何负面影响。

图纸说明

图1是本发明的流程示意图;

图2为实施例的流程示意图;

图3为加密区块链交易数据结构示意图;

图中:input_1_a+input_2_a‐output_a=change_a,output_a=output_b;

图4为本实施例的结构示意图。

详细说明

示例 1

本实施例对待加入区块链的交易信息进行同态加密,将加密后的信息公开,并通过同态密文运算进行验证,最后将验证后的加密交易信息写入区块链,实现区块链交易内容的保密性。 本实施例以交易发起方作为信息发送方,以交易信息作为在区块链中加密的明文来说明本发明的具体实施过程。 在实际应用中,区块链中的内容可以是任何其他敏感信息。

如图1和图2所示,本实施例具体包括以下步骤:

第一步,付款方发起交易信息并广播,请求验证。 具体步骤包括:

1.1. 付款人使用同态加密私钥在本地查看自己账户的余额;

1.2. 支付方选择至少一个未花费的交易输出(utxo)作为输入,发起一笔交易;

1.3. 支付方使用同态加密私钥对本次交易需要支付的金额进行加密,得到output_a。 这里需要保证选择输入的总金额大于支付金额,计算差额变化;

1.4. 付款人联系收款人,在同态加密服务器的帮助下,调用密文传递操作在收款人的临时密钥空间下生成支付金额密文output_b或者直接使用收款人的同态加密公钥生成收款人的密文支付金额临时密钥空间下的密文output_b;

1.5. 付款人填写收款人地址,签名,广播交易信息;

签名是指:支付方使用区块链私钥对交易数据进行摘要签名操作,得到签名串,以证明交易经过账户所有者的验证和签名。

广播是指支付方将已签名的交易数据以广播的形式发布到全网,任何接收到广播数据的节点都可以参与交易的验证。

第二步,如图2和图3所示,网络中的其他节点,即验证者使用支付方的区块链公钥和同态计算公钥分别对交易信息进行验证,具体步骤包括:

2.1 验证方收到交易信息,使用区块链公钥验证付款人签名和收款人地址的有效性。

2.2 验证者通过同态密文运算验证密文的整体合法性,即验证者使用区块链私钥计算交易信息中所有输入的总和减去输出,即变化量c是否更大小于或等于零,特别是:

2.2.1) 密钥持有者随机生成一个新的临时密钥k'={f'(), y'}比特币交易验证流程,并调用密钥替换操作将c转换为新密钥空间下的密文c';

2.2.2) key holder随机生成一个新的函数key部分f″(),然后给出一个比较支持函数:

其中:h(x1,2)≠h(x2,1)≠x1≠x2,f″()>0且f″()处处可微。

2.2.3) key holder在临时key的多项式key部分y'={y1',y2'}周围给出合理面积的矩形区间rect(y');

2.2.4) 对y'的每个分量计算密文c'的偏导数

2.2.5) 然后求解c'的一阶偏导数等于0的方程,记录矩形区间1ect(y')内的所有解;

2.2.6) 将矩形区间rect(y′)的四个顶点加入评价点集合,然后交叉组合矩形区间内偏导数等于0的所有解,得到新的评价点并相加到集合中,最后将这些解对应的矩形区间边界上的投影点也加入到集合中;

2.2.7) 将评价点集中的各点yi′={y1i′,y2i′}代入密文c′,利用比较支持函数gcomp将密文c′变换为a″·f等形状″(对于x的表达式),由于f"()>0,通过判断a"的符号,可以判断密文表达式c'在求值点是否大于0;

2.2.8) 计算所有评价点的符号。 当所有评价点均大于0时,可得出c'>0的结论,进而判断c>0; 当所有评价点均小于0时,可得出结论c'<0,进而判断c<0;

2.2.9)当评价点同时大于0和小于0时,无法判断c'是否大于0,此时采用两种方法进行校正运算。 一种方法是围绕 y' (y' ) 收缩和移动 rect; 另一种方法是选择一个较大的正整数z,重新计算z·c',直到可以判断c'是否大于0。

通过证明密文操作的真实性,区块链网络中的任何节点都可以验证特定用户的同态操作的真实性,进而验证该节点调用这些同态操作发起的交易的真实性。 .

2.3 验证者通过同态计算来比较操作的真实性,具体为:

2.3.1) 验证者随机生成明文数据p={p1, p2}, p3<f(p1, p2),其中:p1,p2,p3为三个随机明文,f()为任意选择的双变量多项式功能。

2.3.2) 验证者调用发送者的同态计算公钥对明文数据p进行加密,得到对应的密文ca1、ca2、ca3;

2.3.3) 验证者调用发送方的操作字典,采用同态的方法将密文ca1和ca2代入函数f得到结果密文ca',即计算f(ca1,ca2)得到ca ',然后转换ca'与ca3比较得到结果r1。

运算字典可以完全公开,也可以自由访问或授权访问(因为运算字典比较大,一般存放在服务器上,只在进行密文运算和运算时使用,完整数据下载不提供。,但可能被合法调用者任意使用。

2.3.4)验证者调用发送者的同态比较操作,得到ca3<ca'的结果r1。 这里验证比较运算是否正确的核心思想是首先假设同态比较运算本身是正确的。 这只是为了防止有人作弊,即篡改字典或参数,使验证者得到错误的比较结果,从而获利。

因此,假设验证者没有作弊,它必须调用正确的操作步骤。 如果被验证方提供的参数和字典为真,则验证得到的同态比较运算结果也必须为真,即满足ca3 <ca'; 否则说明参数或字典被篡改,验证者可以认为原来的比较结果是错误的。

2.3.5) 如果r为假,则证明比较操作不正确; 如果为真,则证明比较操作正确

2.3.6) 重复步骤2.3.1至2.3.5数次,当结果全部正确时,说明发送端的同态比较操作为真。

重复次数可根据验证速度和容错度的要求来确定。

2.4 验证者验证交易方字典的真实性,包括:

2.4.1) 验证者随机生成明文数据p={p1, p2},其中:p1和p2分别为随机明文;

2.4.2) 验证者调用发送方的公钥对明文数据p进行加密,得到密文ca={ca1, ca2};

2.4.3) 验证者调用发送方的操作字典,计算f(ca)得到ca′,其中: f()为任意选择的二元多项式函数;

2.4.4) 验证者调用发送者的密文传递过程将ca'转换为cb;

2.4.5) 验证者使用自己的私钥对密文cb进行解密,得到解密后的明文p';

2.4.6) 验证者判断f(p)=p',当结果为真时,证明交易方字典为真。

2.5 当接收方临时密钥空间下的支付金额密文output_b直接由接收方同态加密公钥生成时,利用步骤2.3中的同态计算验证公钥加密的真实性; 当接收方的临时密钥通过密文投递操作生成密钥空间下的支付金额密文output_b时,验证方需要验证输出信息的真实性,包括:

2.5.1) 验证者向服务器发起密文相等性证明操作请求,并通知投递双方;

2.5.2) 交付双方协商生成一元函数f(严格单调递增函数,所有参数均为明文),约定大于零的实数r;

2.5.3) 交割双方分别对r进行加密,得到cra和crb;

2.5.4) 交割双方将f、cra、crb告知验证者,验证者计算sa=f(ca)*cra,

sb=f(cb)*crb;

2.5.5)验证方向服务器向服务器上传sa和sb,要求服务器启动验证程序;

2.5.6) 服务器随机生成一个临时密钥k,联系投递方,要求他们对sa和sb进行密文投递操作;

2.5.7 交割双方分别验证sa=f(ca)*cra,sb=f(cb)*crb,同意交割;

2.5.8) 服务器完成投递得到密文sk1(sa)、sk2(sb),计算得到sk3=sk1-sk2,

sk4=sk1+sk2;

2.5.9)验证者和服务器完成密文传递(简化密文传递),得到sc3,sc4,再解密得到p3,p4;

2.5.10)当p3=0,且p4>0时,通过上述操作验证成功,可以证明属于不同密钥空间的两个密文是相等的,并且由于这个操作类似于密文比较操作,对a一定程度上会涉及到密文真实价值的信息,因此对运行过程的安全性要求比较高,需要第三方服务器的参与。

由于整个过程涉及四名参与者,因此也需要防止其中任意两三人相互勾结,欺骗其他参与者,造成计算结果被篡改或密文被破解。

2.6 全部验证通过,交易有效。

第三步,将交易信息打包生成新区块,找到满足条件的随机数,将新区块发送到全网,实现区块链的加法。

满足条件的随机数是指:根据区块链生成条件,包含该随机数的单个区块的压缩哈希系数前17位全为0。

打包是参与验证,验证交易真实有效的节点,并将交易信息写入区块链。

可以看出,在上述交易验证过程中,交易的输入金额、输出金额、找零金额均以密文状态出现并记录,而输入金额、找零金额、一个输出金额的密文在支付方的密钥空间中,另一个输出金额在收款人的密钥空间中。

在交易过程中,如果交易双方采用加密交易方式,则明文和密文之间不存在计算问题。 如果一方是明文模式,需要按照图4所示的步骤进行转换,才能得到计算结果。 零金额。 Specifically, as shown in Figure 4, when the ciphertext and the plaintext are added, the specific operation steps are as follows:

1) When the ciphertext c1 and the plaintext p2 need to be added, the user's private key is sk, and the public key is pk

2) First use the public key pk to encrypt p2 to get c2

3) Calculate c3=c1+c2 again to obtain the operation result. Since the public key encryption method does not involve the operation of the constant item b, whether the ciphertext contains a constant item will not affect the operation steps of the public key encryption.

As shown in Figure 4, it is the specific framework for realizing the above method in this embodiment, wherein: each node in the block chain network is connected to each other through a p2p network, each node has a built-in block chain client, and the user passes through the block chain client Conduct transactions, verify the legitimacy of other transactions on the network, and read and write blockchain data.

The homomorphic encryption server in this architecture further assists the blockchain client to perform homomorphic operations and verification operations, among which: homomorphic operations include: ciphertext homomorphic four arithmetic operations, ciphertext delivery operations, ciphertext comparison operations, key Replacement operations, etc.; verification operations include: ciphertext four arithmetic authenticity verification, ciphertext delivery authenticity verification, ciphertext comparison authenticity verification.

The above specific implementation can be partially adjusted in different ways by those skilled in the art without departing from the principle and purpose of the present invention. The scope of protection of the present invention is subject to the claims and is not limited by the above specific implementation. Each implementation within the scope is bound by the invention.

技术特点:

技术概要

A blockchain information encryption method based on a fully homomorphic encryption method, through which the information encryption party performs fully homomorphic encryption on the plaintext to be encrypted and then signs it, and uses the encrypted ciphertext to publicly issue a verification request to all nodes in the network, and The nodes respectively use the blockchain public key to perform blockchain verification on the signature and information recipient information, and use the fully homomorphic public key to perform homomorphic encryption operation verification on the ciphertext. After the verification is passed, the information encryption party , receiver information and ciphertext are packaged to generate a block to generate an updated blockchain and broadcast to the network to complete the update operation of the blockchain. The present invention greatly improves the data security and confidentiality of blockchain technology, and the overall structure is more streamlined and efficient, without the need to introduce a trusted third party, and without greatly expanding and transforming the original blockchain technology model, only the smallest Improvement can achieve the effect of confidentiality.

Technical R&D personnel: Zheng Kewei

Protected Technology User: Zheng Kewei

Technology R&D Day: 2016.07.28

Technology announcement date: 2018.02.06