发明内容
本发明针对现有技术中存在的技术问题,提供一种基于联盟区块链的抗量子密钥托管系统及方法,支持使用抗量子密码来进行密钥托管,用来在联盟区块链上提供了一个兼顾数据机密性保护和数据安全监管的密钥托管解决方案,解决了现有基于联盟区块链的密钥托管系统不能抵抗量子计算机攻击的问题。
根据本发明的第一方面,提供了一种基于联盟区块链的抗量子密钥托管系统,包括:数据共享组织、托管组织和监管组织;
所述托管组织包括托管节点,所述监管组织包括监管节点,所述托管节点和所述监管节点安装有发送方合约和托管合约;所述托管合约为每一个托管方各生成一对抗量子公私钥对;
所述数据共享组织包括发送方节点和接收方节点,所述发送方节点和接收方节点分别安装有发送方合约和接收方合约;所述发送方节点发送秘密数据M给所述接收方节点之前,离线协商好会话密钥SK;
所述发送方节点调用所述发送方合约,基于所述会话密钥SK对发送的所述秘密数据M进行加密得到加密数据C;所述接收方节点调用所述接收方合约,基于所述会话密钥SK对接收的所述加密数据C进行解密得到秘密数据M;
所述发送方节点还调用所述托管合约,用所述抗量子公私钥对中的公钥生成托管共享密钥ESS,用所述托管共享密钥ESS对所述秘密数据M进行加密得到C';
所述托管节点调用所述托管合约,基于所述抗量子公私钥对中的私钥得到所述托管共享密钥ESS;
所述监管节点调用所述托管合约,基于所述托管节点得到的所述托管共享密钥ESS对C'进行解密。
在上述技术方案的基础上,本发明还可以作出如下改进。
可选的,所述系统中区块链上的数据通过Key ID进行访问;
所述发送方节点发送秘密数据M给所述接收方节点之前,离线协商好所述发送方节点上传的数据的密钥和所述抗量子公私钥对中的公钥的 Key ID分别为SD key和EAPKkeys。
可选的,所述发送方节点调用所述发送方合约对发送的所述秘密数据M 进行加密的过程包括:
使用所述会话密钥SK对所述秘密数据M通过AES加密算法进行对称加密得到加密数据C,记为C=SEncSK(M),其中SEnc表示所述AES加密算法。
可选的,所述接收方节点调用所述接收方合约对接收的所述加密数据C 进行解密的过程包括:
所述接收方节点使用所述会话密钥SK通过AES解密算法解密所述加密数据C得到所述秘密数据M,记为M=SDecSK(C),SDec表示所述AES解密算法。
可选的,所述托管节点的数量为两个,托管节点一和托管节点二调用所述托管合约各生成一对抗量子公私钥对pubKey1/privKey1和pubKey2/ privKey2;pubKey1和pubKey2为所述抗量子公私钥对中的公钥,privKey1和privKey2所述抗量子公私钥对中的私钥;所述托管共享密钥ESS包括:托管共享密钥ESS1和ESS2。
可选的,所述发送方节点调用所述托管合约对所述秘密数据M进行加密的过程包括:
所述发送方节点调用所述托管合约对所述公钥pubKey1和pubKey2执行封装操作,生成两个托管共享密钥ESS1和ESS2和两个密文CT1和CT2;所述 CT1和CT2分别用来封装ESS1和ESS2;
所述发送方节点使用ESS使用AES加密算法加密所述秘密数据M得到 C'=SEncESS(M);其中ESS=ESS1⊕ESS2,SEnc表示所述AES加密算法;
所述发送方节点上传数据到区块链的链上数据库,所述发送方节点上传的数据包括C、C'、CT1和CT2。
可选的,所述托管节点基于所述抗量子公私钥对中的私钥得到两个托管共享密钥ESS1和ESS2的过程包括:
所述托管节点一和托管节点二分别调用所述托管合约,根据存储在区块链上的CT1和CT2以及存储在各自离线数据库里的privKey1和privKey2分别恢复所述托管共享密钥ESS1和ESS2:
ESS1=Decap(privKey1,CT1);
ESS2=Decap(privKey2,CT2);
Decap为所述托管合约中的实现恢复共享密钥的函数。
可选的,所述监管节点对C'进行解密的过程包括:
所述监管节点调用所述托管合约,对所述托管共享密钥ESS1和ESS2进行异或操作得到ESS,然后调用所述发送方合约得到C',基于函数C'= SEncESS(M)和得到的所述ESS对称解密C'得到所述秘密数据M。
根据本发明的第二方面,提供一种基于联盟区块链的抗量子密钥托管方法,包括:步骤1,建立区块链网络,启动所有的节点并在各个节点上安装对应的智能合约;获取离线协商好的所述发送方节点上传的数据的密钥和所述抗量子公私钥对中的公钥的Key ID;调用托管合约为每个托管方各生成一对所述抗量子公私钥对;
步骤2,所述发送方节点从离线私有数据库中读出所述秘密数据M;
步骤3,所述发送方节点调用所述发送方合约对发送的所述秘密数据M 进行加密;所述发送方节点调用所述托管合约,用所述抗量子公私钥对中的公钥生成托管共享密钥ESS,用所述托管共享密钥ESS对所述秘密数据M进行加密得到C';
步骤4,所述接收方节点调用所述接收方合约对接收的所述加密数据C 进行解密;
步骤5,所述托管节点调用所述托管合约,基于所述抗量子公私钥对中的私钥得到所述托管共享密钥ESS;所述监管节点调用所述托管合约,基于所述托管节点得到的所述托管共享密钥ESS对C'进行解密得到所述秘密数据 M。
本发明提供的一种基于联盟区块链的抗量子密钥托管系统及方法,在不依赖任何加密芯片的保护下,基于智能合约为联盟区块链设计了一种密钥托管系统,可以用于跨链下的数据机密性保护和数据安全监管。该系统主要基于智能合约,不依赖于联盟区块链的底层。该系统与当前N IST国际标准抗量子公钥加解密/密钥封装算法结合,不依赖于传统的非对称加解密算法,能够抵抗量子计算机对密码算法的攻击。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1为本发明提供的一种基于联盟区块链的抗量子密钥托管系统的实施例的交互示意图,如图1所示,该系统包括:数据共享组织、托管组织和监管组织;智能合约包括:发送方合约、接收方合约和托管合约。
托管组织包括托管节点,监管组织包括监管节点,托管节点和监管节点安装有发送方合约和托管合约;托管合约为每一个托管方各生成一对抗量子公私钥对。
数据共享组织包括发送方节点和接收方节点,用来传递会话消息和将会话密钥托管给托管组织,发送方节点和接收方节点分别安装有发送方合约和接收方合约;发送方节点发送秘密数据M给接收方节点之前,离线协商好会话密钥SK。
发送方节点调用发送方合约,基于会话密钥SK对发送的秘密数据M进行加密得到加密数据C;接收方节点调用接收方合约,基于会话密钥SK对接收的加密数据C进行解密得到秘密数据M。
发送方节点还调用托管合约,用抗量子公私钥对中的公钥生成托管共享密钥ESS,用托管共享密钥ESS对秘密数据M进行加密得到C'。
当需要公开交换的秘密数据时,托管节点调用托管合约,基于抗量子公私钥对中的私钥得到托管共享密钥ESS;监管节点调用托管合约,基于托管节点得到的托管共享密钥ESS对C'进行解密。
秘密数据M被托管给托管节点,而监管节点可以从托管节点获得恢复的秘密数据M。
本发明将最新的抗量子密码与联盟区块链相结合,使该系统支持使用抗量子密码来进行密钥托管,用来在联盟区块链上提供了一个兼顾数据机密性保护和数据安全监管的密钥托管解决方案,解决了现有基于联盟区块链的密钥托管系统不能抵抗量子计算机攻击的问题。
实施例1
本发明提供的实施例1为本发明提供的一种基于联盟区块链的抗量子密钥托管系统的实施例,结合图1可知,该实施例包括:数据共享组织、托管组织和监管组织;智能合约包括:发送方合约、接收方合约和托管合约。
发送方合约包括生成发送方数据和获得发送方数据两个函数。生成发送方数据函数的功能是生成并上传发送方需要传递的数据;获得发送方数据函数的功能是从链上数据库读取发送方数据。
接收方合约包括解密函数,功能是读取链上秘密数据并解密。
托管合约包括生成密钥对、获得公钥、恢复共享密钥和解密四个函数。生成密钥对函数的功能是为托管代理方生成一对抗量子公私钥对,并且上传公钥,将私钥存储在离线数据库中。获得公钥函数的功能是从链上读取托管代理方的公钥。恢复共享密钥的函数功能是恢复共享密钥将其作为交换秘密数据的加密密钥。解密函数的功能是解密由共享密钥加密的秘密数据。
系统包括:数据共享组织、托管组织和监管组织;系统中区块链上的数据通过KeyID(密钥标识键)进行访问。
发送方节点发送秘密数据M给接收方节点之前,离线协商好发送方节点上传的数据的密钥和抗量子公私钥对中的公钥的Key ID分别为SD key和 EAPK keys。
即具体实施过程中,区块链上一个“发送-接受-监管”会话需要预先对发送方数据的密钥和托管代理方的公钥的Key ID(表示为SD key和 EAPKkeys)进行离线协商,类似于分别绑定到发送方链码和托管合约的成员变量。即接收方节点、托管节点和监管节点可以通过Key ID为SD key访问发送方节点发出的数据,发送方节点可以通过Key ID为EAPKkeys访问抗量子公私钥对中的公钥。图1中,EAPK表示托管代理方公钥,ESS表示托管共享密钥。
托管组织包括托管节点,监管组织包括监管节点,托管节点和监管节点安装有发送方合约和托管合约;托管合约为每一个托管方各生成一对抗量子公私钥对。
数据共享组织包括发送方节点和接收方节点,发送方节点和接收方节点分别安装有发送方合约和接收方合约。
发送方节点发送秘密数据M给接收方节点之前,离线协商好会话密钥 SK。
发送方节点调用发送方合约,基于会话密钥SK对发送的秘密数据M进行加密得到加密数据C;接收方节点调用接收方合约,基于会话密钥SK对接收的得到的加密数据C进行解密得到秘密数据M。
在一种可能的实施例方式中,发送方节点调用发送方合约对发送的秘密数据M进行加密的过程包括:
使用会话密钥SK对秘密数据M通过AES(Advanced Encryption Standard,高级加密标准)加密算法进行对称加密得到加密数据C(记为C=SEncSK (M)),其中SEnc表示AES加密算法。
接收方节点调用接收方合约对接收的- 加密数据 C 进行解密的过程包括:
接收方节点使用会话密钥SK通过AES解密算法解密加密数据C得到秘密数据M(记为M=SDecSK(C)),其中SDec表示所述AES解密算法。
发送方节点调用托管合约,用抗量子公私钥对中的公钥生成托管共享密钥ESS,用托管共享密钥ESS对秘密数据M进行加密得到C'。
在一种可能的实施例方式中,托管节点的数量为两个,托管节点一和托管节点二调用托管合约各生成一对抗量子公私钥对pubKey1/privKey1和 pubKey2/privKey2;pubKey1和pubKey2为抗量子公私钥对中的公钥, privKey1和privKey2抗量子公私钥对中的私钥;托管共享密钥ESS包括:托管共享密钥ESS1和ESS2。
可以理解的是,抗量子公私钥对用来托管和恢复发送方节点和托管节点之间的共享密钥,将pubKey1和pubKey2以EAPKkeys为Key ID存储在链上,与托管合约绑定。
在一种可能的实施例方式中,发送方节点调用托管合约对秘密数据M进行加密的过程包括:
发送方节点调用托管合约对公钥pubKey1和pubKey2执行封装操作,生成两个托管共享密钥ESS1和ESS2和两个密文CT1和CT2;CT1和CT2分别用来封装ESS1和ESS2。
发送方节点使用ESS使用AES加密算法加密秘密数据M得到C'(记为 C'=SEncESS(M);其中ESS=ESS1⊕ESS2,即ESS为ESS1和ESS2异或的结果),SEnc表示所述AES加密算法。
发送方节点上传数据到区块链的链上数据库,发送方节点上传的数据包括C、C'、CT1和CT2。
可以理解的是,该上传的数据以SD key作为主键,SD key与发送方合约相绑定。
托管节点调用托管合约,基于抗量子公私钥对中的私钥得到托管共享密钥ESS。
在一种可能的实施例方式中,托管节点基于抗量子公私钥对中的私钥得到两个托管共享密钥ESS1和ESS2的过程包括:
托管节点一和托管节点二分别调用托管合约,根据存储在区块链上的 CT1和CT2以及存储在各自离线数据库里的privKey1和privKey2分别恢复托管共享密钥ESS1和ESS2:
ESS1=Decap(privKey1,CT1)。
ESS2=Decap(privKey2,CT2)。
Decap为托管合约中的实现恢复共享密钥的函数。
具体实施中,可以将托管共享密钥ESS1和ESS2分别存储在对应的私有数据集1和私有数据集2中,可以理解的是,ESS1和ESS2在各个私有数据集中对应的KeyID分别为ESS key1和ESS key2。
监管节点调用托管合约,基于托管节点得到的托管共享密钥ESS对C' 进行解密。
在一种可能的实施例方式中,监管节点对C'进行解密的过程包括:
监管节点调用托管合约,对托管共享密钥ESS1和ESS2进行异或操作得到 ESS,然后调用发送方合约得到C',基于函数C'=SEncESS(M)和得到的ESS 对称解密C'得到秘密数据M。
可以理解的是,基于背景技术中的缺陷,本发明实施例提出了一种基于联盟区块链的抗量子密钥托管系统,为了提供数据机密性保护功能,对于发送方传递的消息都使用了AES算法并根据预先协商好的会话密钥来进行数据加密;为了提供数据监管功能,为每个托管代理组织都生成了抗量子公私钥对用来加密和恢复所协商的会话密钥。除了保护数据机密性和数据监管,系统还设置了检查智能合约版本号,来防止恶意修改智能合约和伪造已安装链码。另外由于只存在有一个托管代理方时会出现托管代理方不可信的情况,该系统设置了两个托管组织,每个托管组织包含一个托管节点。而为了防止两个托管节点互相读取为监管节点准备的链上数据,该系统设置了两个私有数据集(记为私有数据集1和私有数据集2)用于对两个托管节点实施数据隔离。
实施例2
本发明提供的实施例2为本发明提供的一种基于联盟区块链的抗量子密钥托管方法的实施例,结合图1,首先建立区块链网络,在节点上安装需要的智能合约。发送方节点根据提前商议好的会话密钥将消息使用链码通过 AES算法进行加密上传至区块链,接收方节点从链码上下载加密数据进行解密。每一个托管节点会调用托管合约生成一对抗量子公私钥对用来托管和恢复发送方节点和托管节点之间的共享密钥。
具体的,该方法的实施例包括:
步骤1,初始化。
具体可以包括:建立区块链网络,启动所有的节点并在各个节点上安装对应的智能合约;即在发送方和接收方节点上安装发送方合约和接收方合约,在托管节点和监管节点上安装发送方合约和托管合约。
获取离线协商好的发送方节点上传的数据的密钥和抗量子公私钥对中的公钥的Key ID;离线协商好发送方节点上传的数据的密钥和抗量子公私钥对中的公钥的Key ID分别为SD key和EAPK keys。
调用托管合约为每个托管方各生成一对抗量子公私钥对。
调用托管合约为每一个托管方各生成一对抗量子公私钥对(表示为 pubKey1/privKey1和pubKey2/privKey2)用来托管和恢复发送方节点和托管节点之间的共享密钥。将pubKey1和pubKey2以EAPKkeys为Key ID存储在链上,与托管合约绑定。将privKey1和privKey2放在离线的数据库中。
步骤2,准备秘密数据。
具体可以包括:发送方节点从离线私有数据库(如:MySQL)中读出秘密数据M,并准备进行密钥托管过程。
步骤3,生成和上传加密秘密数据和被托管的密钥。
具体可以包括:发送方节点调用发送方合约对发送的秘密数据M进行加密;发送方节点调用托管合约,用抗量子公私钥对中的公钥生成托管共享密钥ESS,用托管共享密钥ESS对秘密数据M进行加密得到C'。
步骤4,下载和解密加密数据C。
具体可以包括:接收方节点调用接收方合约对接收的加密数据C进行解密得到秘密数据M:M=SDecSK(C)。
步骤5,恢复托管共享密钥ESS,解密C'得到秘密数据M。
具体可以包括:托管节点调用托管合约,基于抗量子公私钥对中的私钥得到托管共享密钥ESS;监管节点调用托管合约,基于托管节点得到的托管共享密钥ESS对C'进行解密得到秘密数据M。
可以理解的是,本发明提供的一种基于联盟区块链的抗量子密钥托管方法与前述各实施例提供的基于联盟区块链的抗量子密钥托管系统相对应,基于联盟区块链的抗量子密钥托管方法的相关技术特征可参考基于联盟区块链的抗量子密钥托管系统的相关技术特征,在此不再赘述。
本发明实施例提供的一种基于联盟区块链的抗量子密钥托管系统及方法,在不依赖任何加密芯片的保护下,基于智能合约为联盟区块链设计了一种密钥托管系统,可以用于跨链下的数据机密性保护和数据安全监管。该系统主要基于智能合约,不依赖于联盟区块链的底层。该系统与当前NIST国际标准抗量子公钥加解密/密钥封装算法结合,不依赖于传统的非对称加解密算法,能够抵抗量子计算机对密码算法的攻击。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。