基于完全同态加密的智能合约账单记录与处理方法

文档序号:487942 发布日期:2022-01-04 浏览:14次 >En<

阅读说明:本技术 基于完全同态加密的智能合约账单记录与处理方法 (Intelligent contract bill recording and processing method based on completely homomorphic encryption ) 是由 赵建立 郑庆荣 汤卓凡 陆颖杰 段玉玮 唐啸 王婧骅 于 2021-09-24 设计创作,主要内容包括:区块链智能合约技术的特点是所有区块链节点共享全部数据,并参与智能合约相关业务运算处理的所有计算工作。这种运算模式带来的结果是每个节点均可以掌握智能合约的所有输入输出参数和执行过程中的所有细节和中间结果,如果这些数据涉及敏感信息,则无法实现隐私保护。使用本发明提供的一种基于完全同态加密的智能合约账单记录与处理方法后,敏感信息经过完全同态加密的保护,以密文的形式出现在智能合约中,则每个区块链节点仍旧可以进行指定的业务逻辑运算处理,涉及到敏感信息的运算,使用完全同态加密方法相应的密文运算技术来实现,就可以解决原方法的隐私问题。(The intelligent block chain contract technology features that all block chain nodes share all data and participate in all calculation of intelligent contract related business operation. The result of this operation mode is that each node can grasp all input and output parameters of the intelligent contract and all details and intermediate results in the execution process, and if these data relate to sensitive information, privacy protection cannot be realized. After the fully homomorphic encryption-based intelligent contract bill recording and processing method provided by the invention is used, sensitive information is protected by fully homomorphic encryption and appears in an intelligent contract in a ciphertext form, each block link point still can perform appointed business logic operation processing, the operation of the sensitive information is related, and the privacy problem of the original method can be solved by using a ciphertext operation technology corresponding to the fully homomorphic encryption method.)

基于完全同态加密的智能合约账单记录与处理方法

技术领域

本发明涉及一种使用完全同态加密技术针对敏感数据进行加密保护的区块链智能合约账单记录与处理方法,利用本发明所提出的方法将订单信息(尤其是订单金额信息)进行加密,并通过区块链智能合约技术实现对订单金额密文的累加运算以得到账单金额,实现对订单数据的保护。

背景技术

智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易和可靠地脚本程序执行,这些交易和执行过程公开透明、可追踪、不可逆转,且其执行结果无法篡改。

完全同态加密技术是一项先进的密码学技术,可以在不影响数据运算的同时完整地保护数据隐私,从2009年第一个完全同态加密技术提出以来,已有三代算法的迭代。

申请号为CN 201710965216.5、名称为《一种保护区块链智能合约隐私的方法、介质》的发明专利申请公开了一种保护区块链智能合约隐私的方法,在掩盖交易细节的同时能验证交易正确性,在保护用户隐私的同时能验证操作的合法性和有效性。其技术方案为:使用加法同态加密区块链中的隐私数据,并在交易过程中生成非交互式的零知识证明以证明交易的有效性。

前述发明专利申请使用的是加法同态,即半同态加密方法,并结合非交互式零知识证明来实现数据保护。

申请号为CN 201910359650.8、名称为《一种基于同态加密区块链的隐私保护方法与系统》的发明专利申请公开了一种基于同态加密区块链的隐私保护方法和系统,包括:每个家庭智能网关为一个节点,多个家庭智能网关形成区块链;为区块链中每个家庭智能网关分配一对秘钥,同时设置全网秘钥;将区块链中的全网节点分为特殊节点和普通节点,所述特殊节点存放每个家庭智能网关的公钥;每个家庭智能网关接收并保存感知器采集的监控终端采集信息,并将信息分为可见信息和不可见信息,通过全网公钥对不可见信息进行同态加密后,将可见信息和不可见信息打包为数据包后通过私钥进行签名,签名后的数据包通过家庭智能网关发送至网络;对数据包做全网验证;记账节点对一段时间内所有验证后的数据写入一个新的区块,连接在主区块链的尾部。

前述发明专利申请主要侧重于网络结构和公私钥的使用方式,并非对完全同态加密算法本身做创新。

发明内容

本发明的目的是:解决区块链智能合约的数据保护问题,支持在智能合约中记录加密数据,同时使用同态密文运算技术直接处理加密数据,得到运算结果,可应用于各种行业各类机构的区块链账单记录与处理的应用场景。

为了达到上述目的,本发明的技术方案是提供了一种基于完全同态加密的智能合约账单记录与处理方法,其特征在于,包括以下步骤:

步骤1、从关于函数密钥f(x)的密钥族KEY(f(x))中选择不同的同态加密同族密钥分配给不同的客户端用户,其中,密钥族KEY(f(x))表示为:KEY(f(x))={Keyi|i∈I},同一个密钥族KEY(f(x))共享同一个运算字典,Keyi为属于当前密钥族KEY(f(x))的同态加密同族密钥,I为多项式密钥维数下标集合;

每一个同态加密同族密钥Keyi由多项式密钥yi以及函数密钥f(x)构成,x为正整数,函数密钥f(x)在值域为正整数,函数密钥f(x)为一个处处不连续的离散函数;同一密钥族KEY(f(x))中所有同态加密同族密钥Keyi的函数密钥f(x)均相同,仅多项式密钥yi不同,将由同态加密同族密钥加密得到的密文称为同族密文;

步骤2、将订单信息中需要加密的订单数据字段处理为整数,记为整数明文m;用户在本地使用预先分配的同态加密同族密钥Keyi对整数明文m进行加密,加密时采用如下简化的密文表达式:

Pi=a·f(x)·yi-b

式中,Pi为同族密文,进一步用向量{a,x,b}表示;x、a、b均为正整数,x随机生成,a为随机生成的系数,b为偏移量;

步骤3、对步骤2得到的同族密文进行十六进制编码,得到最终的密文;

步骤4、采用步骤2及步骤3完成订单信息中所有订单数据字段的加密后,将加密后的订单信息通过参数传递的方式,经由用户应用程序接口传入账单处理智能合约;

步骤5、账单处理智能合约接收加密后的订单信息,并将相应密文保存在合约变量中,实现账单记录;

步骤6、当需要进行账单处理时,依据所需要处理的具体数据内容账单处理合约获取保存在合约变量中的相关密文;随后调用密文运算合约基于运算支持函数G对密文进行加法和/或乘法密文运算,得到结果密文;

其中,运算支持函数G定义为:G={g1,g2,g3},有:

式中,h1()和h2()为偏置函数;x1和x2是函数f(x)定义域D中的任意整数,则h1()和h2()的值域也是D;

步骤7、账单处理合约获得前述的结果密文;

步骤8、用户调用智能合约获取步骤7得到的结果密文,在本地解密后查看账单金额信息;

若除当前用户外的其他用户需要查看步骤7得到的结果密文,则使用密文转换方法,将步骤7得到的当前用户的结果密文转换为其他用户密钥空间的密文,然后使用分配给其他用户的同态加密同族密钥解密查看。

优选的,步骤1中,所述函数密钥f(x)为任何一种具有严格的单向性的散列函数。

优选的,步骤1中,所述函数密钥f(x)采用哈希函数构造,对于未知整数k,采用哈希函数构造的函数密钥f(x)写成hash(x+k),将未知整数k称为函数密钥。

优选的,步骤1中,采用二级哈希函数来构造所示函数密钥f(x),具体定义如下:

假设有函数密钥k1以及函数密钥k2,并设q1为一个较小的整数,q2为一个较大的整数,则定义f(x)=hash1(hash2(x+k1)modq1+k2)modq2,式中,hash1()为第一级哈希函数,hash2()为第二级哈希函数;

加密形成同族密文时,将密钥k1告知负责密文运算的服务器。

优选的,所述第一级哈希函数与所述第二级哈希函数相同或不同。

优选的,若采用二级哈希函数来构造函数密钥f(x),则同态加密密钥Keyi生成步骤如下:

步骤101、随机选择第一级哈希函数所采用的哈希算法hash1以及第二级哈希函数所采用的哈希算法hash2;

步骤102、随机生成两个整数作为函数密钥k1以及函数密钥k2;

步骤103、随机生成一个整数作为多项式密钥yi

步骤104、生成同态加密同族密钥Keyi,表示为如下形式:Keyi={hash1,k1,hash2,k2,yi}。

优选的,步骤6中,对于由同一个用户上传的订单信息得到的任意两个密文P1、P2,将其同态加密同族密钥中的多项式密钥定义为y,则有:P1=a1·f(x1)·y-b1,P2=a2·f(x2)·y-b2,采用以下步骤实现密文P1与密文P2的加法密文运算:

P1+P2=a1·f(x1)·y-b1+a2·f(x2)·y-b2

=[a1·f(x1)+a2·f(x2)]·y-(b1+b2)

=[a1·g1(x1,x2)·f(h1(x1,x2))+a2·g2(x1,x2)·f(h1(x1,x2))]·y-b3

=[a1·g1(x1,x2)+a2·g2(x1,x2)]·f(h1(x1,x2))·y-b3

=a3·f(x3)·y-b3

其中,a3=a1·g1(x1,x2)+a2·g2(x1,x2),x3=h1(x1,x2),b3=b1+b2

优选的,步骤6中,对于由同一个用户上传的订单信息得到的任意两个密文P1、P2,将其同态加密同族密钥中的多项式密钥定义为y,则有:P1=a1·f(x1)·y-b1,P2=a2·f(x2)·y-b2,采用以下步骤实现密文P1与密文P2的的乘法密文运算:

P1·P2=[a1·f(x1)·y-b1]·[a2·f(x2)·y-b2]

=a1·f(x1)·a2·f(x2)·y2-[b1·a2·f(x2)+b2·a1·f(x1)]·y+b1·b2

=a1·a2·g3(x1,x2)·f(h2(x1,x2))·y2-[b1·a2·g2(x1,x2)·f(h1(x1,x2))+b2·a1·g1(x1,x2)·f(h1(x1,x2))]·y+b1·b2

=a4·f(x4)·y2-a5·f(x5)·y+b4

式中,a4=a1·a2·g3(x1,x2),a5=b1·a2·g2(x1,x2)+b2·a1·g1(x1,x2),x4=h2(x1,x2),x5=h1(x1,x2),b4=b1·b2

使用降次技术,将二次型规约为一次型,具体方法为,预先计算多项式密钥y的平方项y2,并公开其密文:

将平方项密文代入乘法结果可得:

优选的,步骤8中,对于任意两个不同用户的密文C1、C2,具体密文转换操作如下:

步骤901、在生成用于生成密文C1的同态加密同族密钥Key1以及用于生成密文C2的同态加密同族密钥Key2时;

针对同态加密同族密钥Key1中的多项式密钥y1得到两个向量:(ay1,xy1)、(ay1′,xy1′),满足以下两个公式:

y1=ay1·f(xy1)

y1=ay1′/f(xy1′)

针对同态加密同族密钥Key2中的多项式密钥y2得到两个向量:(ay2,xy2)、(ay2′,xy2′),满足以下两个公式:

y2=ay2·f(xy2)

y2=ay2′/f(xy2′)

式中,ay1、xy1、ay1′、xy1′、ay2、xy2、ay2′、xy2′均为正整数;

步骤902、步骤901计算得到的向量(ay1,xy1)、(ay1′,xy1′)、(ay2,xy2)、(ay2′,xy2′)上传至服务器端,作为密文转换的操作密钥;

步骤903、对于密文C1,基于步骤902得到的操作密钥,则有:

步骤904、根据运算支持函数G的定义,可得:

进一步化简后,得到:C1=a2·f(x)·y-b,其中,g3(x1,xy1)·g3(h2(x1,xy1),xy2′),x2=h2(h2(x1,xy1),xy2′),至此同族密文转换操作完毕。

专利号为ZL 201510192143.1、名称为《基于系数映射变换的多项式完全同态加密方法及系统》的发明专利描述的完全同态加密方法是一种针对实数数据的加密解密和运算处理方法,旨在实现实数运算过程中,针对数据的加密保护。该专利采用了一种基于系数映射变换的多项式完全同态加密技术,针对多项式加密算法进行改进,对密文多项式中每一项的系数进行一次函数映射变换,并根据该函数给出运算支持函数,用以进行密文的同态运算。依靠非特定形态函数方程的求解困难性,保证了高度的安全性,同时具备实现简单,运算速度快,密文扩张性小等特点。该专利的核心技术构成了本发明的完全同态加密技术基础。本发明所针对的应用场景是利益区块链智能合约技术记录和处理订单信息,本发明依据针对的具体应用场景对《基于系数映射变换的多项式完全同态加密方法及系统》做出了以下改进:

1)现有专利中所有参数均为浮点数,其密文占用存储字节数较多。而订单信息中需的加密字段,例如充电量和订单金额等,虽然是浮点数,但是其具有固定的小数位数,可以视作整数处理。因此,本发明针对订单信息的特点做特别的设计,来节省区块链上的密文存储开销。

2)现有专利中,密文表达式的项数最少需要两项。本发明采用特别的设计,引入可以嵌套的离散函数来构造密钥函数,在保证加密强度的同时,让密文表达式的项数减少为一项,因此可以节省区块链上的密文存储开销50%以上。

3)同态加密的特点是可以直接运算密文,但是只有相同密钥生成的密钥之间才能直接运算,而不同的密钥生成的密文之间不能直接运算。因此,针对每一个密钥都需要一个独特的运算字典来支持密文运算。由于运算字典所需存储空间较大,因此系统中如果有很多不同的密钥,就需要大量存储空间用于存储这些密钥对应的运算字典,增加使用成本。本发明提出了同族密钥的概念,即多把密钥可以共享同一份运算字典,这样可以大幅降低运算字典的存储开销;

4)由于不同密钥生成的密文之间不能直接运算,因此需要先进行密文转换运算,让两个密文处于同一个密文空间下。现有专利的构造所对应的密文转换运算,与本发明同族密钥下的密文转换运算相比,操作运算开销和存储开销均更大。

区块链智能合约技术的特点是所有区块链节点共享全部数据,并参与智能合约相关业务运算处理的所有计算工作,一方面通过共识过程实现智能合约业务逻辑的可信执行,另一方面可以消除单点故障、实现可靠执行。然而这种运算模式带来的结果是每个节点均可以掌握智能合约的所有输入输出参数和执行过程中的所有细节和中间结果,如果这些数据涉及敏感信息,则无法实现隐私保护。使用本发明提供的方法后,敏感信息经过完全同态加密的保护,以密文的形式出现在智能合约中,则每个区块链节点仍旧可以进行指定的业务逻辑运算处理,涉及到敏感信息的运算,使用完全同态加密方法相应的密文运算技术来实现,就可以解决原方法的隐私问题。

与现有技术相比,本发明具体具有如下优点:

本发明通过完全同态加密技术将应用程序提交的订单金额信息进行加密,并进行十六进制编码,再将得到的密文作为参数传入智能合约中进行记录。由于本发明采用的是基于系数映射变换的多项式完全同态加密方法,因此其密文运算处理复杂度低,可以采用智能合约来实现,因此本发明在汇总生成账单时,可以利用智能合约实现订单加密数据的加总运算,从而得到账单金额的密文,同时整个运算过程保持密文状态。

本发明由于采用了完全同态加密加智能合约的方式,一方面可以利用区块链智能合约的公开、可审计、可追溯的特性解决传统中心化账单系统中繁琐的对账问题,另一方面又可以完美地解决实际应用场景下的账单系统由多家具有竞争关系的机构参与部署区块链节点并同步数据,导致可能出现的隐私泄露问题。

本发明根据区块链智能合约的特点,在现有的完全同态加密技术基础上,针对密文的编码长度、密文运算的复杂度、运算字典的体积进行改进和优化。本发明在取得密文处理性能提升和运行开销降低的同时,基于对联盟区块链平台特有的信任假设,以及对平台运营方具有基本的信任,在密文运算的过程中,一定程度上降低密文的加密强度,从而获得更高的性能。

附图说明

图1为本发明的整体处理流程图。

具体实施方式

下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。

本发明提供的一种基于完全同态加密的智能合约账单记录与处理方法在专利号为ZL 201510192143.1、名称为《基于系数映射变换的多项式完全同态加密方法及系统》的发明专利(以下简称“现有专利”)的基础上,针对智能合约的应用场景进行改进和升级而来,如图1所示,具体包括以下步骤:

步骤1、从关于函数密钥f(x)的密钥族KEY(f(x))中选择不同的同态加密同族密钥分配给不同的客户端用户。密钥族KEY(f(x))表示为:KEY(f(x))={Keyi|i∈I},Keyi为属于当前密钥族KEY(f(x))的同态加密同族密钥,I为多项式密钥维数下标集合。每一个同态加密同族密钥Keyi由多项式密钥yi以及函数密钥f(x)构成。同一密钥族KEY(f(x))中所有同态加密同族密钥Keyi的函数密钥f(x)均相同,仅多项式密钥yi不同。本发明中,将由同态加密同族密钥加密得到的密文称为同族密文。

对于函数密钥f(x),x为正整数,函数密钥f(x)在值域为正整数,在本发明中,函数密钥f(x)为一个处处不连续的离散函数。符合条件的函数密钥f(x)可以是任何一种散列函数,如果该散列函数具有严格的单向性可以大大增加同族密文的安全性。具体的,函数密钥f(x)可以采用哈希函数构造,哈希函数可以是md4、md5、sha1、sha256、sm3等哈希函数,对于未知整数k,采用哈希函数构造的函数密钥f(x)可以写成sha1(x+k),将未知整数k称为函数密钥。

由于x的取值范围大于等于214,如果直接对每一个可能的值均计算运算字典,则运算字典包含228个整数,这样会产生非常大的存储开销,不利于实际应用。本发明引入了二级哈希函数来构造函数密钥f(x),具体定义如下:

假设有函数密钥k1以及函数密钥k2,并设q1为一个较小的整数,例如q1=28=256,q2为一个较大的整数,例如q2=216=65535,则可以定义f(x)=sha1(sha1(x+k1)modq1+k2)modq2,式中。加密形成同族密文时,只要将密钥k1告知负责密文运算的服务器,则运算字典只要拥有q2=216个整数即可,这样可以大大减少运算字典的存储开销。

在上文所举的例子中,第一级哈希函数以及第二级哈希函数均采用了相同的哈希算法,即sha1。函数密钥f(x)的两级哈希函数也可以是不同的哈希算法,例如:

f(x)=sm3(sha256(x+k1)modq1+k2)modq2

或者

f(x)=sha1(md5(x+k1)modq1+k2)modq2

若采用二级哈希函数来构造函数密钥f(x),则同态加密密钥Keyi生成步骤如下:

步骤101、随机选择第一级哈希函数所采用的哈希算法hash1以及第二级哈希函数所采用的哈希算法hash2;

步骤102、随机生成两个整数作为函数密钥k1以及函数密钥k2;

步骤103、随机生成一个整数作为多项式密钥yi

步骤104、生成同态加密同族密钥Keyi,可以表示为如下形式:Keyi={hash1,k1,hash2,k2,yi}。

根据现有专利的运算字典定义可知,同态加密同族密钥对应的运算字典是相同的,即同一个密钥族KEY(f(x))共享同一个运算字典,因此采用同态加密同族密钥对明文进行加密后可以大大降低运算字典的存储开销。使用同一个密钥族KEY(f(x))中的任意同态加密同族密钥所加密得到的所有同族密文,其密文表达式中的函数密钥f(x)均相同,因此本发明将这些密文称为同族密文。

假设采用二级哈希函数构造函数密钥f(x),则对于两个不同的同态加密同族密钥而言,第二级哈希函数所采用的函数密钥k2必需相同,但第一级哈希函数所采用的函数密钥k1可以不同,因此这两个不同的同态加密同族密钥之间具有足够的差异性,很难相互破解。

步骤2、将订单信息中需要加密的订单数据字段(例如订单金额字段)处理为整数,记为整数明文m。客户端用户在本地使用预先分配的同态加密同族密钥Keyi对整数明文m进行加密。本发明由于采用同族密钥,因此无需为每个客户密钥重新计算运算字典。为了提升密文同态运算的效率,以及节约密文存储开销,本发明提出了一种针对正整数类型明文的简化密文表达式,其公式如下:

Pi=a·f(x)·yi-b

式中,Pi为同族密文,进一步用向量{a,x,b}表示;x、a、b均为正整数,x随机生成,a为随机生成的系数,b为偏移量。

上式所示的简短密文表达式可以有效地减少密文体积,降低密文存储开销,有利于区块链智能合约的应用场景。同时,因为密文项数只有一项,在进行密文运算时,运算步骤也成倍减少,可以有效提升密文运算效率,降低运算开销,更加适合智能合约这种性能高度受限的方式来执行和实现密文运算。

基于简化密文表达式,则本发明中采用以下步骤实现对整数明文m的加密:

步骤201、随机生成正整数x,并计算f(x);

步骤202、随机生成系数a,并计算a×f(x);

步骤203、计算偏移量b=m-a×f(x);

步骤204、得到同族密文Pi,表示为Pi={a,x,b}。

步骤3、对步骤2得到的同族密文进行十六进制编码,得到最终的密文。

步骤4、采用步骤2及步骤3完成订单信息中所有订单数据字段的加密后,将加密后的订单信息通过参数传递的方式,经由客户端用户应用程序接口传入账单处理智能合约。

步骤5、账单处理智能合约接收加密后的订单信息,并将相应密文保存在合约变量中,实现账单记录。

步骤6、当需要进行账单处理时,依据所需要处理的具体数据内容账单处理合约获取保存在合约变量中的相关密文。例如,若需要对订单信息中的订单金额进行处理,则获得已保存的订单金额的密文。随后调用密文运算合约基于运算支持函数G对密文进行加法和/或乘法密文运算,得到结果密文。

运算支持函数G定义为:G={g1,g2,g3},有:

式中,h1()和h2()为偏置函数;x1和x2是函数f(x)定义域D中的任意整数,则h1()和h2()的值域也是D。

对于由同一个客户端用户上传的订单信息得到的任意两个密文P1、P2,将其同态加密同族密钥中的多项式密钥定义为y,则有:P1=a1·f(x1)·y-b1,P2=a2·f(x2)·y-b2,本发明采用以下步骤实现密文P1与密文P2的加法密文运算:

P1+P2=a1·f(x1)·y-b1+a2·f(x2)·y-b2

=[a1·f(x1)+a2·f(x2)]·y-(b1+b2)

=[a1·g1(x1,x2)·f(h1(x1,x2))+a2·g2(x1,x2)·f(h1(x1,x2))]·y-b3

=[a1·g1(x1,x2)+a2·g2(x1,x2)]·f(h1(x1,x2))·y-b3

=a3·f(x3)·y-b3

其中,a3=a1·g1(x1,x2)+a2·g2(x1,x2),x3=h1(x1,x2),b3=b1+b2

对于前述的任意两个密文P1、P2,本发明采用以下步骤实现密文P1与密文P2的乘法密文运算:

P1·P2=[a1·f(x1)·y-b1]·[a2·f(x2)·y-b2]

=a1·f(x1)·a2·f(x2)·y2-[b1·a2·f(x2)+b2·a1·f(x1)]·y+b1·b2

=a1·a2·g3(x1,x2)·f(h2(x1,x2))·y2-[b1·a2·g2(x1,x2)·f(h1(x1,x2))+b2·a1·g1(x1,x2)·f(h1(x1,x2))]·y+b1·b2

=a4·f(x4)·y2-a5·f(x5)·y+b4

式中,a4=a1·a2·g3(x1,x2),a5=b1·a2·g2(x1,x2)+b2·a1·g1(x1,x2),x4=h2(x1,x2),x5=h1(x1,x2),b4=b1·b2

上述密文乘法运算后,得到的结果为二次型,为了保持密文表达式的统一,再使用降次技术,将二次型规约为一次型。具体方法为,预先计算多项式密钥y的平方项y2,并公开其密文:

将平方项密文代入乘法结果可得:

步骤7、账单处理合约获得前述的结果密文;

步骤8、客户端用户调用智能合约获取步骤7得到的结果密文,在本地解密后查看账单金额信息。

本发明中采用以下步骤实现对密文C={a,x,b}的解密:

步骤801、将正整数x代入由二级哈希函数构造的函数密钥f(x),计算f(x)=sha1(sha1(x+k1)modq1+k2)modq2;

步骤802、计算得到整数明文m,m=a×f(x)-b。

步骤9、若平台方用户需要查看步骤7得到的结果密文,则需要使用密文转换方法,将步骤7得到的结果密文转换为平台方用户密钥空间的密文,然后使用分配给平台方用户的同态加密同族密钥解密查看。

本发明中,上述结果密文以及平台方用户密钥空间的密文均为同族密文,同族密文之间由于仅有多项式密钥不同,因此是非常接近的。本发明虽然不能直接进行相互运算,但是同族密文之间的密文空间相互转换方法相较于普通密文可以有很大的简化。对于任意两个不同用户的密文C1、C2,具体密文转换操作如下:

步骤901、在生成用于生成密文C1的同态加密同族密钥Key1以及用于生成密文C2的同态加密同族密钥Key2时。

针对同态加密同族密钥Key1中的多项式密钥y1得到两个向量:(ay1,xy1)、(ay1′,xy1′),满足以下两个公式:

y1=ay1·f(xy1)

y1=ay1′/f(xy1′)

针对同态加密同族密钥Key2中的多项式密钥y2得到两个向量:(ay2,xy2)、(ay2′,xy2′),满足以下两个公式:

y2=ay2·f(xy2)

y2=ay2′/f(xy2′)

式中,ay1、xy1、ay1′、xy1′、ay2、xy2、ay2′、xy2′均为正整数。

步骤902、步骤901计算得到的向量(ay1,xy1)、(ay1′,xy1′)、(ay2,xy2)、(ay2′,xy2′)上传至服务器端,作为密文转换的操作密钥。

步骤903、对于密文C1,基于步骤902得到的操作密钥,则有:

步骤904、根据运算支持函数G的定义,可得:

进一步化简后,得到:C1=a2·f(x2)·y2-b,其中,g3(x1,xy1)·g3(h2(x1,xy1),xy2′),x2=h2(h2(x1,xy1),xy2′)至此同族密文转换操作完毕。

以下以一具体实例来进一步说明本发明:

1)本实施例中的密钥为Key={sm3,123,sm3,456,89}。其代表了两层函数密钥,表达式为P=a·f2(f1(x,k1),k2)·y-b(1),其中,第一层函数f1为sm3散列函数,其对应的函数密钥k1为123;第二层函数f2为sm3散列函数,其对应的函数密钥k2为456;多项式密钥y为89。

2)假设输入的第一个订单明文金额数据为m1=100,代入公式(1),则得到密文为一个三元组c1={57,8228,21519566},其中a=57,x=8228,b=21519566。

3)然后,使用紧凑的16进制表示该三元组密文为c1=392024feb7a332。

4)在智能合约中记录该订单的金额数值为392024feb7a332。

5)假设输入的第二个订单明文金额数据为m2=156,同样代入公式(1),则得到密文为c2={46,10982,204654810},其中a=46,x=10982,b=204654810。

6)使用紧凑的16进制表示密文为c2=2e2ae6f3cd3726。

7)在智能合约中记录该订单的金额数值为2e2ae6f3cd3726。

8)假设需要根据上述两个订单汇总生成账单,并计算账单金额数据,则有:

A)首先获取第一个订单的金额密文392024feb7a332,并解码为三元组{57,8228,21519566},再获取第二个订单的金额密文2e2ae6f3cd3726,再解码为三元组{46,10982,204654810};

B)使用密文加法运算后,得到结果密文c3={55,37097,127543864},其中a=55,x=37097,b=127543864;

C)再将c3进行16进制编码得到3790e9f865d5c8并记录到智能合约中;

D)持有密钥Key的用户可以获取账单金额密文3790e9f865d5c8,并将密文与密钥一并代入公式(1),解密运算后得到最终结果为256。

区块链平台广泛地采用智能合约技术来实现其应用承载能力,其中典型的例子是Ethereum(以太坊),它使用以太坊虚拟机EVM来实现智能合约的运行,极大地扩展了区块链技术的应用领域,促进了区块链技术的应用落地。然而区块链技术公开透明和可追溯的技术特点,让所有节点都可以查看和验证智能合约的所有历史输入输出和当前状态数据,这样就在实际应用时,对业务数据的隐私保护带来不利因素,尤其在账单应用中,一旦某参与方可以从其他渠道得知某一区块链地址所对应的实际企业信息,则该企业历史上所有的订单及账单详细数据均可一览无余,这会带来严重的商业机密泄露风险。

本发明使用完全同态加密技术对智能合约中的数据进行加密保护,由于该技术可以实现针对密文的直接运算和处理,因此可以在无需解密的前提下,完成智能合约中加密数据的处理。数据首先经过加密后,被记录到区块链智能合约中,其后在智能合约内的各种运算均保持密文状态,让数据在区块链平台上做到“可算不可见”,最终实现链上全流程的数据保护。

应当注意的是:本发明中所涉及的完全同态加密方法的基本算法原理及系统实现在现有专利中已经有详细描述。本发明针对现有专利所公开的方法进行了针对性地修改,包括:对密文表达式进行了简化、函数密钥可以是不连续函数、密文十六进制编码、同族密文间的转换运算,上文所述的具体实现过程仅针对上述改进点进行了详细描述,其他技术内容本领域技术人员可以参考现有专利,此处不再赘述。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:区块链交易池实现方法、装置、计算机设备和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!