一种安全高效的区块链实现方法与流程

文档序号:16198321发布日期:2018-12-08 06:21阅读:252来源:国知局

本发明涉及区块链应用安全领域。



背景技术:

目前,国内外的区块链都是采用公钥体制如:pki技术来实现,但是,由于公钥体制运行效率较低,造成现有区块链应用速度较慢,如:比特币每秒只能完成7笔交易,这影响并阻碍了区块链实现规模化并发交易的应用,同时,公钥是以明文形式存储在网络公钥服务器中,容易受到黑客的攻击,其安全等级较低,造成现有区块链应用安全事件频发,如:比特币每半年就出现一次信息安全事件,给用户带来较大损失,总之,现有的区块链技术和产品不能满足市场的需求。



技术实现要素:

一种安全高效的区块链实现方法,是在区块链各个节点服务器端建立分布式账本数据库,是无中心化体系,在有中心数据库情况下,在客户端安装加密芯片,在加密芯片里建立客户端加密系统,并建立身份认证协议、签名协议和加密协议,在支付服务器端建立认证中心,认证中心由加密设备组成,在认证中心加密芯片里建立认证中心端加密系统,并建立身份认证协议、签名验证协议和解密协议;

当用户a与用户b进行交易时,用户a使用客户端加密系统,调用身份认证协议发出身份认证请求,支付服务器端认证中心,对用户a的身份进行身份认证,若未通过身份认证,则用户a身份不可信,若通过身份认证,则该用户a可登录对应自己的账号,并填写交易单,用户a客户端加密系统再调用签名协议,对交易单进行签名,并发送给支付服务器端认证中心,认证中心端加密系统,对被签名的交易单进行签名验证,若未通过签名验证,则交易单不可信,若通过通过签名验证,则支付服务器将交易单的数额支付给用户b的账号里,并将交易单登记到交易单数据库里,从而,完成用户之间交易单的登记和支付过程;

一种安全高效的区块链实现方法,是采用“垂直认证”技术建立区块链安全体系,基于单钥密码算法,完成身份认证、数字签名、密钥交换和数据加密4项功能,能解决海量用户并发认证和并发签验的难题,对比pki可提高区块链签名验证速度200倍,使用组合密钥生成算法实时产生加密、认证或签名密钥,一次一变,解决单钥密码算法密钥管理的难题,在客户端和节点服务器端的加密芯片里分别建立加密系统,在客户端加密芯片里,对区块链的合同、账本记录或交易单进行签名,在节点服务器端加密芯片里,对合同、账本记录或交易单的数字签名进行签名验证,保证合同、账本记录或交易单的真实、可信,在区块链系统中,部署2~10个密钥管理服务器,负责对交易双方用户进行实时密钥交换,同时,对节点服务器端“密钥种子”数据库记录进行更新,其中:采用了“芯片”对“芯片”的身份认证、签名或签验协议,从而,建立“芯片级”可信区块链系统,其方法的技术特征在于:

首先,在用户的客户端嵌入加密芯片,在客户端加密芯片里建立加密系统,并写入单钥密码算法、摘要算法、组合密钥生成算法、一组“密钥种子”表i的元素、身份认证协议、签名协议、加密协议、解密协议,从而,建立“芯片级”区块链的客户端,其中:i=1~n,n≤20亿,n为全体区块链用户总数;

在区块链系统中建立m个密钥管理服务器,在密钥管理服务器端也部署加密芯片硬件,在加密芯片里建立密钥管理服务器端加密系统,写入单钥密码算法、一组“存储密钥”k、组合密钥生成算法、加密协议,在密钥管理服务器端建立“密钥种子”数据库,将全体用户的标识、账号、对应的“密钥种子”表i的元素密文,一并存储在密钥管理服务器端的“密钥种子”数据库中,从而,建立“芯片级”的区块链的密钥管理服务器,其中:用密钥管理服务器端的“存储密钥”k,分别加密全体用户的“密钥种子”表i元素,m=2~10,m为全体密钥管理服务器的总数,不同密钥管理服务器端的“存储密钥”k,两两相同;

在区块链系统中建立j个节点,在节点的服务器端部署加密芯片硬件设备,在加密芯片里建立节点服务器端加密系统,写入单钥密码算法、组合密钥生成算法、一组“存储密钥”k、身份认证协议、签名验证协议、解密协议,在节点服务器端建立“密钥种子”数据库,将全体用户的标识、账号、“密钥种子”表i的元素密文,一并存储在节点服务器端的“密钥种子”数据库中,从而,建立“芯片级”的区块链节点,其中:用密钥管理服务器端的“存储密钥”k,分别加密全体用户的“密钥种子”表i元素,j=100~10万,j为区块链全部节点的总数,i=1~n,n≤20亿,n为全体区块链用户总数,不同节点服务器端的“存储密钥”k,两两相同,节点服务器端和密钥管理服务器端的“存储密钥”k,都两两相同;

“垂直认证”技术模式的定义:密钥集中生成,集中灌装,集中分发,集中销毁;由密码管理单位,负责集中生成密钥,集中灌装到客户端、节点服务器端和密钥管理服务器端加密芯片里,通过客户端、节点服务器端和密钥管理服务器端的加密芯片,集中分发密钥,集中将全体用户的“密钥种子”表i元素,在加密设备中分别加密成密文,并分发给各个节点服务器端和密钥管理服务器端,同时,密钥管理服务器端的系统管理员,在“密钥种子”数据库中,对已经时效的密钥进行集中销毁;

组合密钥生成算法,是由一组时间戳和随机数组成的选取参数,来对一组“密钥种子”表的元素进行选取,将选出的y个元素,并合成一组认证密钥rk、签名密钥qk,或加密密钥jk,因为,区块链加密系统采用单钥密码算法,则:客户端的认证密钥rk=节点服务器端的认证密钥rk,签名密钥qk=签名验证密钥qk,加密密钥jk=解密密钥jk,其中:y=16或32;

当用户客户端的加密芯片丢失需要为用户重新配发加密芯片时,由密钥管理单位负责更新用户客户端加密芯片,在新的加密芯片里写入一组新“密钥种子”表元素,其他内容与原用户客户端加密芯片里内容完全相同,同时,更新密钥管理服务器端的“密钥种子”数据库里对应用户的记录,再由密钥管理服务器端加密系统,对所有节点服务器端的“密钥种子”数据库里对应用户的记录进行自动更新;

定义:区块链的记账时间为t,t=10~200分钟;

定义:区块链的一种共识算法如下:将一次一变的一组随机数的数值,来确定那个用户具有记录一个区块的权利即:对一个区块进行记账;

智能合约:是采用一种可编程合约,当用户之间签署的合同、账本记录或交易单在达到区块链某种条件时,合约自动执行,可编程合约保证区块链运行公平,公证,减少人工干预;

区块链为每个用户分配一个账号,用户账号的第一笔款进入账号里,用户使用客户端加密芯片里的签名密钥qk对自己的账号资金进行签名,之后,用户账号里的每一笔支付款和收入款,交易双方用户都采用自己的签名密钥qk分别进行签名,保证用户账号资金真实,可信,且不可抵赖;

每个节点服务器端事先部署了权限管理系统,用户可以通过身份认证协议,登录自己的账号浏览交易记录,同时,用户可调用自己的签名验证密钥qk,对每一笔账号记录进行签名验证,保证用户账号资金真实,可信,或者,用户之间的合同、账本记录或交易单通过节点服务器端验证后,节点服务器端权限管理系统自动登录对应用户的账号,验证用户账号资金是否合规;

在区块链合同或账本记录登记应用领域,当用户a和用户b的合同或账本记录在区块链上登记时,用户a和用户b分别调用客户端加密芯片里的签名协议,产生用户a的签名密钥qka和用户b的签名密钥qkb,分别对用户a和用户b的合同或账本记录进行签名,所有节点服务器端都将已被用户a和用户b签名的合同或账本记录,分别收入一个区块里,否则,则用户a和用户b的合同或账本记录无效;

每个节点服务器端加密系统,分别生成用户a的签名验证密钥qka1和用户b的签名验证密钥qkb1,对已经被用户a和用户b签名的合同或账本记录进行签名验证,若通过签名验证,每个节点服务器端加密系统,将用户a和用户b签名的合同或账本记录写入一个区块中;

在经过时间t后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间t内所有通过签名验证的合同或账本记录,登记在一个区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到本区块的摘要信息m,其他节点服务器端加密系统对摘要信息m进行验证,通过验证后也在所有其他节点服务器端记录该区块,从而,完成用户之间合同或账本记录登记的区块链应用;

若用户a和用户b的合同或账本记录内容需要保密,则通过密钥管理服务器产生过程密钥gk,对用户a和用户b的合同或账本记录进行加密,用户a和用户b分别调用各自客户端加密芯片里的签名协议,分别对用户a和用户b的合同或账本记录进行签名,同时,对过程密钥gk分别进行加密;

各个节点服务器端加密系统,分别调用各自加密芯片里的签名验证协议,对用户a和用户b签名的合同或账本记录密文进行签名验证,实现用户a和用户b的合同或账本记录以密文形式传输,以密文形式存储在区块中,只有用户a和用户b,才能调用自己的密钥,对用户a和用户b签名的合同或账本记录密文进行解密,并浏览合同或账本记录的内容;

其中:合同或账本记录登记包括:数字档案登记,数字版权登记,房产证登记,电子病历登记,商用合同登记,购物账目记录登记,物联网传感信息登记,食品和药品生产各环节登记,商品的生产、物流、经销过程管理登记,用户诚信记录登记;

在区块链的数字货币应用领域,当用户a和用户b进行交易,如:用户a支付一笔款给用户b时,

用户a和用户b调用各自客户端加密芯片里的签名协议,分别产生用户a的签名密钥qka和用户b的签名密钥qkb,对用户a和用户b的交易单进行签名,所有节点服务器都将已被用户a和用户b签名的交易单,分别收入一个区块里,每个节点服务器端加密芯片里,分别生成用户a的签名验证密钥qka1和用户b的签名验证密钥qkb1,对已经被用户a和用户b签名的交易单进行签名验证,若通过签名验证,则每个节点服务器端根据权限管理系统,分别登录用户a的账号和用户b的账户,查询资金流水是否合规,若通过签名验证,各个节点服务器端加密系统,将用户a和用户b的交易单写入区块中,否则,则用户a和用户b的交易单无效;

在经过时间t后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间t内所有通过签名验证的交易单登记在一个区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对本区块进行摘要得到摘要信息m,其他节点服务器端加密系统对摘要信息m进行验证,通过验证后也在其他所有节点服务器端记录该区块,从而,完成用户之间的交易单登记的区块链应用;

若用户a和用户b之间交易单内容需要保密,则通过密钥管理服务器产生过程密钥gk,对用户a和用户b之间交易单进行加密,用户a和用户b客户端加密系统,分别调用各自加密芯片里的签名协议,生成用户a的签名密钥qka和用户b的签名密钥qkb,分别对用户a和用户b的交易单进行签名,同时,对过程密钥gk分别进行加密;

各个节点服务器端加密系统,分别调用各自加密芯片里的签名验证协议,对用户a和用户b签名的交易单密文进行签名验证,实现用户a和用户b的交易单以密文形式传输,以密文形式存储在区块中,用户通过身份认证登录各个节点服务器端,可浏览节点服务器端区块的各条记录,只有交易双方如:用户a和用户b,才能调用自己的密钥,对用户a和用户b签名的交易单密文进行解密,并浏览交易单的内容;

在区块链的数字货币应用领域,当用户a和用户b进行交易,如:用户a发送一张现金支票给用户b时,

用户a客户端加密系统,调用加密芯片里的签名协议,产生用户a的签名密钥qka,对用户a发送给用户b的现金支票进行签名,用户b客户端加密系统,调用加密芯片里的加密协议,产生用户b的加密密钥jkb,将用户a发送给用户b的现金支票加密成密文,所有节点服务器都将已被用户a签名和用户b加密的交易单,分别收入一个区块里,每个节点服务器端加密芯片里,分别生成用户a的签名验证密钥qka1和用户b的解密密钥jkb1,对已经被用户a签名的现金支票进行签名验证,若未通过签名验证,则现金支票不可信,否则,每个节点服务器端根据权限管理系统,分别登录用户a的账号,查询现金支票的数额是否合规,若查询通过,则用户a发送给用户b的现金支票有效,各个节点服务器端加密系统将用户a发送给用户b的现金支票写入一个区块中;

在经过时间t后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间t内所有通过签名验证的现金支票登记在一个区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息m,其他节点服务器端加密系统,对摘要信息m进行验证,通过验证后,也在其他所有节点服务器端记录该区块,从而,完成用户现金支票登记的区块链应用,只有用户b才能调用自己的密钥,对用户a发送给用户b的现金支票密文进行解密,并使用该现金支票;

总之,采用“垂直认证”技术,是基于单钥密码算法建立区块链加密系统,在客户端、节点服务器端和密钥管理服务器端都部署加密芯片,建立“芯片级”可信区块链系统,且整个过程由软件和硬件结合方式实现,具体方法如下:

1、在用户的客户端的pc机或手机上,嵌入智能卡,如:u盾、sim卡、sd卡、tf卡,或手机里内置智能卡,在智能卡的cpu芯片里,建立客户端加密系统,即:在客户端加密芯片里,并写入单钥密码算法、摘要算法、组合密钥生成算法、身份认证协议、签名协议、加密协议、解密协议,以及用户标识、账号和一组“密钥种子”表i的元素,实现在客户端部署加密芯片,每个客户端加密芯片里的一组用户标识、账号和“密钥种子”表i的元素,都两两不同,其中:单钥密码算法,如:sm1、sm4、aes,摘要算法,如:sm3、sha-2,i=1~n,n≤20亿,n为全体区块链用户总数。

2、在区块链中部署j个节点,在节点服务器端部署加密硬件设备,建立节点服务器端加密系统,即:在加密硬件设备的加密芯片里,写入单钥密码算法、组合密钥生成算法、身份认证协议、签名验证协议、解密协议,以及一组“存储密钥”k,不同节点端加密芯片里的“存储密钥”k,两两相同,其中:j=100~10万,j为全体节点的总数;

在节点服务器端,建立“密钥种子”数据库,存储全体用户的“密钥种子”表i元素的密文,“密钥种子”数据库的字段包括:用户标识、账号、“密钥种子”表i元素的密文;

在节点端服务器里,事先部署了权限管理系统,用户可以通过客户端加密芯片里的身份认证协议,登录对应自己的账号,浏览资金交易记录,或者,用户之间的交易单通过节点服务器端验证后,节点服务器端根据权限管理系统,分别登录交易双方用户的账户,检查账户资金变化情况即:资金是否合规,来确认交易是否真实,可信。

3、在区块链系统中,部署m个密钥管理服务器,在密钥管理服务端部署加密硬件设备,建立密钥管理服务器端加密系统,即:在加密硬件设备的加密芯片里,写入单钥密码算法、组合密钥生成算法、加密协议,以及一组“存储密钥”k,不同密钥管理服务器端加密芯片里“存储密钥”k,两两相同;

在密钥管理服务器里,建立“密钥种子”数据库,存储全体用户的“密钥种子”表i元素的密文,“密钥种子”数据库的字段包括:用户标识、账号、“密钥种子”表i元素的密文,其中:i=1~n,n≤20亿,n为全体区块链用户总数,m=2~10,m为全体密钥管理服务器的总数,密钥管理服务器端和节点服务器端的“存储密钥”k,都两两相同。

4、“垂直认证”技术定义:密钥集中生成,集中灌装,集中分发,集中销毁;

“垂直认证”技术是基于单钥密码算法建立认证架构,采用组合密钥生成算法,实现认证、签名和加密密钥实时生成,都一次一变,解决单钥密码算法密钥更新管理的难题,仅用单钥密码算法,实现身份认证、数字签名、密钥交换和数据加密4项功能,对比pki“垂直认证”技术认证架构简单,认证速度比pki快100倍,签名验证速度比pki快200倍。

5、智能合约:是采用一种可编程合约,当用户之间签署的合同、账本记录或交易单在达到区块链某种条件时,合约自动执行,可编程合约保证区块链运行公平,公证,减少人工干预,区块链运行达到如下6种条件时,自动执行合约,

(1)在节点服务器端收到用户发送来已被签名的合同、账本记录或交易单后,节点服务器端加密系统,自动进行签名验证;(2)在用户对一个区块进行记账后,节点服务器端加密系统,自动将上个记录的摘要信息写入本区块的“头部”形成一个完整的区块,并自动对本区块进行摘要获得摘要信息m;(3)其他各个节点服务器端加密系统根据各自区块的内容,自动来判断摘要信息m是否可信,若可信,则所有节点服务器端都自动记录该区块,否则,放弃记录本区块;(4)用户之间被签名的交易单通过节点服务器端验证后,节点服务器端权限管理系统自动登录对应用户的账号,验证用户账号资金是否合规;(5)当被签名的用户合同、账本记录或交易单通过节点服务器端验证后,节点服务器端权限管理系统自动登录对应用户的账号,验证用户账号资金是否合规;(6)由密码管理单位,人工更新密钥管理服务器端的“密钥种子”数据库的相关记录后,密钥管理服务器端加密系统自动替换所有节点服务器端“密钥种子”数据库相关记录。

6、区块链的一种“共识”算法如下:将一次一变的随机数的数值,来确定那个用户具有记录一个区块的权利,设:区块链用户群为z,z≤20亿,即:将区块链的用户群进行编号:1、2、......、z;将随机数转换成二进制数,设:二进制的随机数为r位,取其中的p位,p≤r,使得2p≤z,z≤2p+1,取出随机数2p+1的数值再摸z后得到对应的记账者,举例:若用户群共有1030位用户,则将所有用户标号为:用户1、用户2、......用户1030,即:z=1030,210≤1030,211≥1030,取211的数值2048,再模m=1030,得到2048-1030=1018位用户,由1018位用户获得记录一个区块的权利,其中:“共识”算法中采用的随机数一次一变,则选择有记录一个区块权利的用户也具有随机性。

7、用户的标识由一组数字或数字和英文字母组成,用户的标识如:手机号或身份证号,用户的账号由一组数字组成,用户的标识两两不同,用户的账号也两两不同,每个用户的标识对应一个账号和一组“密钥种子”。

8、时间戳由年、月、日、时、分和秒,共14位数字组成,如:2017-07-28-19-01-55,可取部分时间戳,年、月、日和时,如:2017-07-28-19,若取时间戳为:14位数字组成,即:“年”由4位数字组成即:xxx0年~xxx9年,即:“年”取0~9,“月”由2位数字组成即:“月”取01~12,“日”由2位数字组成即:“日”取01~31,“时”由2位数字组成即:“时”取01~24,“分”由2位数字组成即:“分”取01~60,“秒”由2位数字组成即:“秒”取01~60,如:2017-07-28-19-01-55,表示2017年07月28日19点1分55秒;

随机数由y=16,或32位,二进制数组成,当y=16时,每位随机数为4比特二进制数,即:每位随机数占4比特,16位随机数共占64比特,每位随机数的二进制数据的数值为0~15,如:0011,1010,0000,......,1111,0110,则其二进制数据的数值为:3,10,0,......,15,6;

当y=32时,则每位随机数占5比特,32位随机数共占160比特,每位随机数的二进制数的数值为:0~31,如:00110,10100,00000,......,11111,01100,则其二进制数据的数值为:6,20,0,......,31,12。

9、单钥密码算法使用sm1、sm4、rc4、rc5、3des、或aes算法,密钥长度为128、210、或256比特,或者根据单钥密码算法的密钥长度要求,对密钥长度进行定义;

摘要算法使用sm3算法、sha-2算法,摘要信息的长度为256比特,若使用的摘要算法其摘要信息的长度相对较短,则会降低签名系统的安全等级。

10、由密码管理单位,负责用户密钥的生成、灌装、分发和销毁;

(1)密钥集中生成,由密码管理单位,使用加密设备的cpu芯片里随机数发生器,产生一组随机数,将该组随机数作为一组“存储密钥”k,

由密码管理单位,使用加密设备的cpu芯片里随机数发生器,产生一组f2字节随机数,将该组随机数作为一组“密钥种子”,若取时间戳为:10位,即:年、月、日和时,则:取f2=1424或1680字节,将f2字节的随机数组成,一套w×y的“密钥种子”表d,

其中:表d的元素为duv,u=0~w-1,v=0~y-1,duv占0.5字节,或1字节,w=89,或105,y=16,或32;

总之,由密码管理单位,集中生成“存储密钥”k,集中生成“密钥种子”表i的元素;

(2)密钥集中灌装,由密码管理单位,将集中生成的“存储密钥”k,在离线的环境下,灌装到所有密钥管理服务端的加密芯片里,同时,灌装到所有节点服务器端加密芯片里;

再将集中生成的“密钥种子”表i的元素,与对应的用户标识i、账号i一起,在离线的环境下,分别灌装到全体用户客户端的加密芯片里;

同时,在加密设备的芯片里,将集中生成的“密钥种子”表i的元素,用“存储密钥”k将“密钥种子”表i元素加密成密文,存储在“密钥种子”数据库中,每个用户的标识i和账号i,都对应一组“密钥种子”表i元素,从而,实现用加密设备集中灌装密钥;

(3)密钥集中分发,由密码管理单位,通过分发客户端加密芯片来实现用户客户端的密钥分发;

由密码管理单位,将“存储密钥”k,通过密钥管理服务器端加密芯片和节点服务器端加密芯片,集中分发到密钥管理服务器端和节点服务器端,从而,实现用加密硬件集中分发“存储密钥”k;

将生成的“密钥种子”数据库,分别传输给各个密钥管理服务器和各个节点服务器中,从而,实现通过密文形式集中分发“密钥种子”数据库的记录;

(4)密钥集中销毁,若用户丢失手机端加密芯片如:pc机端u盾,手机端带加密芯片的sim卡、sd卡或tf卡,则密钥管理服务器端系统管理员,将存储在密钥管理服务器端“密钥种子”数据库中对应用户标识的的记录删除,从而,实现用户密钥集中销毁;同时,密钥管理服务器端加密系统,将更新后的“密钥种子”数据库,分别替代所有节点服务器端“密钥种子”数据库;

当用户客户端的加密芯片丢失需要为用户重新配发加密芯片时,由密钥管理单位,负责更新用户客户端加密芯片,在新的客户端加密芯片里写入一组新“密钥种子”表i元素,对应的用户标识i、账号i,与原用户客户端加密芯片里内容完全相同,在加密设备芯片里,用“存储密钥”k将该新“密钥种子”表i元素加密成密文,同时,更新各个密钥管理服务器端的“密钥种子”数据库里对应用户的记录,密钥管理服务器端加密系统,将更新后的“密钥种子”数据库的记录,来替代所有节点服务器端“密钥种子”数据库中的记录,将用户标识i和账号i对应的记录作为一张表,写入更新后的“密钥种子”表i元素的密文,并增添更新“密钥种子”表i元素时的时间戳,保留原“密钥种子”表i元素,表中最多存储10套“密钥种子”表i元素的密文,即:用户最多可以丢失10次客户端的加密芯片硬件;

为用户重新配发客户端加密芯片后,用户客户端加密系统可调用签名协议,由新“密钥种子”表i元素生成签名密钥,对用户之间的合同、账本记录或交易单进行签名,节点服务器端加密系统,调用对应用户的新“密钥种子”表i的元素密文,在节点服务器端加密芯片里解密新“密钥种子”表i的元素密文成明文,并生成签名验证密钥,对用户之间已被签名的合同、账本记录或交易单进行签名验证,原来丢失的“密钥种子”表i元素已经被替换,不能对合同、账本记录或交易单进行签名;

用户通过客户端加密芯片里的身份认证协议,登录任何一个节点服务器端,可以浏览所有区块中的记录,可以“点击”区块中一个历史记录进行签名验证,节点服务器端加密系统,则根据用户“密钥种子”表i元素更新前的时间戳,调用届时对应用户用户“密钥种子”表i元素的密文,生成签名验证密钥对该条记录进行签名验证,原来的“密钥种子”表i元素,只能针对原来签名的合同、账本记录和交易单进行签名验证,不能再对合同、账本记录或交易单进行签名,从而,实现用户的“密钥种子”表i元素的更新过程,其中:i=1~n,n≤20亿,n为全体区块链用户的总数。

11、组合密钥生成算法,是通过一组时间戳和随机数组成的选取参数,来对一组“密钥种子”表的元素进行选取,用时间戳对“密钥种子”表的“行”元素进行选取,选出y行y列的“密钥种子”表的子表,再根据随机数,对y行y列的“密钥种子”表的“列”元素进行选取,选出y个元素,并合成一组存储密钥k,或认证/签名密钥ck,其中:y=16或32;

组合密钥生成算法的具体实现方法如下:

以表d为例,来说明组合密钥生成算法的具体实现方法,当选择表d元素为89行16列元素时,即:89×16=1424个元素,每个元素占1字节,共占1424字节,当选择表d元素为105行32列元素时,即:105×32=3360个元素,每个元素占,0.5字节,共占1680字节;

(1)用时间戳的“年”对应表d中的第1~10行,共10行,“月”对应表d中的第11~22行,共12行,“日”对应表d中的第23~53行,共31行,“时”对应表d中的第54~77行,共24行,当选择表d元素为89行16列元素时,表d还有12行元素不对应时间戳;当选择表d元素为105行32列元素时,表d还有28行元素不对应时间戳;

根据时间戳从表d的元素中先选出4行,其方法是:从表d的第1~10行共10行中取1行即:用时间戳“年”数字中个位数的数值,作为取表d中“年”对应的行数,如:时间戳为:2013xxxxxx,则:取表d中的第4行,从表d的第11~22行共12行中取1行即:用时间戳“月”数字的数值,作为取表d中“月”对应的“行”,如:时间戳为:20xx11xxxx,则:取表d中的第21行,从表d的第23~53行共31行中取1行即:用时间戳“日”数字的数值,作为取表d中“日”对应的“行”,如:时间戳为:20xxxx30xx,则:取表d中的第52行,从表d的第54~77行共24行中取1行即:用时间戳“时”数字的数值,作为取表d中“时”对应的“行”,如:时间戳为:20kxxkkx21,则:取表d中的第74行,再将表d的第78行~第w行共w-78+1行选出,共选出y行,其中:y=16或32行,组成:y×y表d的子表d1,

其中:表d1的元素为:dvv,v=0~y-1,dvv占0.5或1字节,y=16或32;表d1中第5行~第y行的元素与表d的第78行~第w行的元素完全相同;

(2)设:随机数为:q1,q2,......,qy,对应的数值分别为:l1,l2,......,ly,当y=16时,16位随机数对应的数值为:0~15之间,用:l1,l2,......,l16,对表d1的列进行选取,即:用第1位随机数q1的数值l1,来选取表d1第1行的第l1+1列的元素,用第2位随机数q2的数值l2,来选取表d1第2行的第l2+1列的元素,......,用第16位随机数q16的数值l16,来选取表d1第16行的第l16+1列的元素,共选出16个元素;

当y=32时,32位随机数的数值为:0~31,用:l1,l2,......,l32,对表d1的列进行选取,即:用第1位随机数q1的数值l1,来选取表d1第1行的第l1+1列的元素,用第2位随机数q2的数值l2,来选取表d1第2行的第l2+1列的元素,......,用第32位随机数q32的数值l32,来选取表d1第32行的第l32+1列的元素,共选出32个元素;

由于,国家规定单钥密码算法的密钥长度为128比特,则从表d中选出的y组元素合并成一组密钥,若表d的元素为:8比特,y=16,则从表d中选出的16组元素合并成的密钥为128比特,若表d的元素为:4比特,y=32,则从表d中选出的32组元素合并成的密钥也为128比特,设:存储密钥k、认证密钥rk、签名密钥qk和过程密钥gk都为128比特。

12、根据组合密钥生成算法,能实时产生密钥,一次一变,若时间戳取10位,即:年、月、日和时,“密钥种子”表为89×16,随机数取16位二进制数,其中:每位随机数占4比特,共16种变化,则密钥的变化量为:264/小时;若时间戳取10位即:年、月、日和时,“密钥种子”表为105×32,随机数取32位二进制数,其中:每位随机数占5比特,共32种变化,则密钥的变化量为:2160/小时。

13、在用户账号的每一条记录中都包含对应记录的数字签名,用户a账号的第一笔款进入账号里,用户a通过身份认证协议登录自己的账号后,用户a客户端加密系统产生一组时间戳和随机数,根据组合密钥生成算法和一套“密钥种子”表a元素,产生签名密钥qka对用户账号的第一笔款进行签名;

之后,用户账号里的每一笔支付款和收入款,交易双方用户都采用自己的签名密钥qk分别进行签名,保证用户账号资金真实,可信,且不可抵赖,其中:在用户的账号资金记录中包括:每次交易单金额、交易后的余额、交易单金额和交易后余额的数字签名、时间戳和随机数。

每个节点服务器端事先部署了权限管理系统,用户可以通过身份认证协议,登录自己的账号浏览交易记录,同时,用户可调用自己的签名验证密钥qk,对每一笔账号记录进行签名验证,保证用户账号资金真实,可信;

智能合约,保证被签名的用户合同、账本记录或交易单通过节点服务器端验证后,节点服务器端权限管理系统自动登录对应用户的账号,验证用户账号资金是否合规。

14、用户身份认证协议,用户a采用挑战/应答式身份认证登录自己账号,首先,用户a“点击”任意一节点服务器端的认证“按钮”发出身份认证请求,节点服务器端产生一组时间戳1并发给客户端,在客户端产生一组随机数1,在客户端加密芯片里,根据组合密钥生成算法,对一组“密钥种子”表a元素进行选取,选出y=16,或32个元素合成一组认证密钥rk,再调用摘要算法对该组时间戳1和随机数1进行摘要,得到该组时间戳1和随机数1的摘要信息即:验证码1,用认证密钥rk加密验证码1得到签名码,将认证参数:用户a的标识、账号、验证码1、签名码、时间戳1和随机数1,一并发送给拟登录的节点服务器端,该节点服务器端加密系统,根据用户a的标识取出“密钥种子”库中,对应的“密钥种子”表a元素的密文,在该节点服务器端加密芯片里,用“存储密钥”k解密“密钥种子”表a元素的密文得到明文,根据时间戳1和随机数1组成的组合密钥生成算法,生成节点服务器端的认证密钥rk1,用认证密钥qk1解密签名码得到验证码2,若验证码1≠验证码2,则用户a登录该节点服务器端失败,否则,用户a可成功登录该节点服务器端;

用户通过身份认证协议,可登录任何一个节点,浏览区块链区块中的记录,同时,可根据节点服务器端的权限管理系统,进入自己的账号,浏览用户自己账号的交易记录,另外,用户客户端加密系统,可根据交易记录中的时间戳和随机数,组成的组合密钥生成算法,产生签名验证密钥qk,对每一笔账号资金记录进行签名验证,验证用户账号交易记录是否真实,可信。

15、在区块链合同或账本记录登记应用领域,当用户a和用户b的合同或账本记录在区块链上登记时,用户a的客户端加密系统调用签名协议,首先,产生一组时间戳1和随机数1,在加密芯片里根据组合密钥生成算法,对一套“密钥种子”表a的元素进行选取,将选出的y=16,或32个元素合成一组签名密钥qka,调用摘要算法对合同或账本记录进行摘要,得到摘要信息l1,再使用签名密钥qka将摘要信息l1加密成密文,即:用户a对合同或账本记录的数字签名,同时,用户a的客户端加密系统,将用户a的标识、合同或账本记录、用户a对合同或账本记录的数字签名、时间戳1和随机数1,发送给用户b客户端,用户b的客户端加密系统调用签名协议,首先,产生一组时间戳2和随机数2,在加密芯片里根据组合密钥生成算法,对一套“密钥种子”表b的元素进行选取,生成一组签名密钥qkb,调用摘要算法对合同或账本记录进行摘要,得到摘要信息l3,再使用签名密钥qkb将摘要信息l3加密成密文即:用户b对合同或账本记录的数字签名,用户b的客户端加密系统,将合同或账本记录,以及相关参数:用户a标识、用户b的标识、摘要信息l1、摘要信息l3、用户a对合同或账本记录的数字签名、用户b对合同或账本记录的数字签名、时间戳1和随机数1、时间戳2和随机数2,一并发送给各个节点服务器端;

所有节点服务器端都将已被用户a和用户b签名的合同或账本记录以及相关参数,分别收入一个区块里,每个节点服务器端加密系统,分别对合同或账本记录的数字签名进行签名验证,具体签名验证过程如下:

首先,每个节点服务器端加密系统,在加密芯片里调用签名验证协议,根据用户a的标识,取出“密钥种子”数据库中对应用户a的“密钥种子”表a元素的密文,用“存储密钥”k解密“密钥种子”表a的密文,得到“密钥种子”表a元素的明文,根据时间戳1和随机数1,组成的组合密钥生成算法,生成用户a的签名验证密钥qka1,解密用户a对合同或账本记录的数字签名,得到摘要信息l2,通过对比摘要信息l1和l2是否相同,来判别用户a的签名是否可信,之后,在加密芯片里调用签名验证协议,根据用户b的标识,取出“密钥种子”数据库中对应用户b的“密钥种子”表b元素的密文,用“存储密钥”k解密“密钥种子”表b的密文,得到“密钥种子”表b元素的明文,根据时间戳2和随机数2,组成的组合密钥生成算法,生成用户b的签名验证密钥qkb1,解密用户b对合同或账本记录的数字签名,得到摘要信息l4,通过对比摘要信息l3和l4是否相同,来判别用户b的签名是否可信,若l1=l2,同时,l3=l4,则用户a和用户b对合同或账本记录的签名真实,可信,每个节点服务器端加密系统,将用户a和用户b的合同或账本记录写入一个区块中,若未通过签名验证,则为非法合同或账本记录;

在经过时间t后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间t内所有通过签名验证的合同或账本记录,以及相关参数写入区块里,智能合约自动将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息m,其他节点服务器端都验证该区块的摘要信息m是否完整、可信,当其他节点服务器端通过摘要信息m的验证后,也在所有其他节点服务器端记录该区块,从而,完成用户之间合同或账本记录登记的区块链应用;

若用户a和用户b的合同或账本记录内容需要保密,则对合同或账本记录内容,进行签名和加密的具体过程如下:

用户a客户端加密系统,将用户a和用户b的标识发送给密钥管理服务器端,密钥管理服务器端加密系统,根据用户a的标识,取出对应的“密钥种子”表a元素的密文,在密钥管理服务器加密芯片里,用“存储密钥”k来解密“密钥种子”表a元素的密文得到明文,产生一组时间戳1和随机数1,根据组合密钥生成算法,对用户a对应的“密钥种子”表a元素进行选取,实时产生一组对应用户a的密钥ka,密钥管理服务器端加密系统,根据用户b的标识,取出对应“密钥种子”表b元素的密文,在密钥管理服务器加密芯片里,用“存储密钥”k,来解密“密钥种子”表b元素的密文得到明文,根据一组时间戳1和随机数1,组成的组合密钥生成算法,对用户b对应的“密钥种子”表b元素进行选取,实时产生一组对应用户b的密钥kb,密钥管理服务器端加密系统,在加密芯片里产生一组随机数,将该组随机数作为过程密钥gk,用用户a的密钥ka将过程密钥gk加密成密文gk1,再将过程密钥gk的密文gk1,与时间戳1和随机数1一并发送给用户a客户端加密芯片里,同时,密钥管理服务器端加密系统,用用户b的密钥kb将过程密钥gk加密成密文gk2,再将过程密钥gk的密文gk2,与时间戳1和随机数1一并发送给用户b客户端加密芯片里,在用户a客户端加密芯片里,根据时间1和随机数1组成的组合密钥生成算法,对“密钥种子”表a元素进行选取,选出y=16或32个元素并合成密钥ka,来解密过程密钥gk的密文gk1,得到过程密钥gk的明文,在用户b客户端加密芯片里,根据时间1和随机数1组成的组合密钥生成算法,对“密钥种子”表b元素进行选取,选出y=16或32个元素并合成密钥kb,来解密过程密钥gk的密文gk2,得到过程密钥gk的明文;

用户a客户端加密系统,在加密芯片里,调用摘要算法对用户a和用户b的合同或账本记录进行摘要,得到摘要信息l1,将密钥ka作为用户a客户端的签名密钥qka,对摘要信息l1进行加密,得到摘要信息l1的密文即:用户a对用户a和用户b合同或账本记录的数字签名,用过程密钥gk,对用户a和用户b的合同或账本记录进行加密,得到用户a和用户b的合同或账本记录密文,用户a客户端加密系统,将用户a的标识、用户a对a和用户b的合同或账本记录的数字签名、用户a和用户b的合同或账本记录密文、过程密钥gk的密文gk1,一并发送给用户b客户端加密芯片里,用户b客户端加密系统,在加密芯片里,调用摘要算法对用户a和用户b的合同或账本记录进行摘要,得到摘要信息l3,将用户b的密钥kb作为签名密钥qkb,来对摘要信息l3进行加密得到摘要信息l3的密文即:用户b对用户a和用户b的合同或账本记录的数字签名;

用户b客户端加密系统,将用户a和用户b的合同或账本记录密文、以及相关参数:用户a的标识、用户b的标识、摘要信息l1、摘要信息l1的密文、摘要信息l3、摘要信息l3的密文、时间戳1和随机数1,过程密钥gk的密文gk1和过程密钥gk的密文gk2,一并发送给各个节点服务器端,所有节点服务器端,都将用户a和用户b的合同或账本记录密文以及相关参数,分别收入各自的一个区块里,每个节点服务器端加密系统,分别对已被用户a和用户b签名的合同或账本记录,进行签名验证,具体验证过程如下:

首先,每个节点服务器端加密系统,根据用户a的标识,取出“密钥种子”数据库中对应用户a的“密钥种子”表a元素的密文,在每个节点服务器端加密芯片里,用“存储密钥”k解密“密钥种子”表a元素的密文,得到“密钥种子”表a元素的明文,根据时间戳1和随机数1组成的组合密钥生成算法,生成用户a的签名验证密钥qka1,用签名验证密钥qka1解密摘要信息l1的密文,得到摘要信息l2,通过对比摘要信息l1和l2是否相同,来判别用户a的签名是否可信,每个节点服务器端加密系统,根据用户b的标识,取出“密钥种子”数据库中对应用户b的“密钥种子”表b元素的密文,在每个节点服务器端加密芯片里,用“存储密钥”k解密“密钥种子”表b元素的密文,得到“密钥种子”表b元素的明文,根据时间戳1和随机数1组成的组合密钥生成算法,生成用户b的签名验证密钥qkb1,用签名验证密钥qkb1解密摘要信息l3的密文,得到摘要信息l4,通过对比摘要信息l3和l4是否相同,来判别用户b的签名是否可信,若l1=l2,同时,l3=l4,则用户a和用户b的合同或账本记录真实,可信,每个节点服务器端加密系统,将用户a和用户b的合同或账本记录以及相关参数写入一个区块中;

在经过时间t后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间t内所有通过签名验证的合同或账本记录,以及相关参数写入区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息m,其他节点服务器端都验证该区块的摘要信息m是否完整、可信,当其他节点服务器端通过摘要信息m的验证后,也在所有其他节点服务器端记录该区块,其中:用户a和用户b的合同或账本记录是以密文形式传输,以密文形式存储在区块中,用户a或用户b,可以分别调用各自客户端加密芯片里的密钥,解密过程密钥gk的密文即:gk1或gk2,得到明文,再使用过程密钥gk来解密用户a和用户b的合同或账本记录密文,得到明文,并浏览用户a和用户b的合同或账本记录明文,亦即:只有用户a和用户b才能对用户a和用户b的合同或账本记录进行解密,浏览明文,而其他用户无法浏览用户a和用户b的合同或账本记录明文,从而,完成用户之间合同或账本记录以密文形式登记的区块链应用;

其中:合同或账本记录登记包括:数字档案登记,数字版权登记,房产证登记,电子病历登记,商用合同登记,购物账目记录登记,物联网传感信息登记,食品和药品生产各环节登记,商品的生产、物流、经销过程管理登记;

当合同或账本记录需要国家有关部门的公务员进行登记时,由这些公务员代表国家使用他们的客户端加密芯片,根据组合密钥生成算法和对应的“密钥种子”表的元素,生成签名密钥qk,对合同或账本记录进行签名,并在区块链的各个节点服务器端,根据这些公务员标识对应的“密钥种子”表的元素和组合密钥生成算法,生成签名验证密钥qk1,对已被签名的合同或账本记录进行签名验证,将通过签验的合同或账本记录登记在一个区块里;

若有合同或账本记录的内容需要保密,由公务员代表国家使用他们的客户端加密芯片,根据组合密钥生成算法和对应的“密钥种子”表的元素,生成签名密钥qk,对合同或账本记录进行签名,同时,用签名密钥qk作为加密密钥jk,将合同或账本记录的内容加密成密文,在各个节点服务器端,将通过签验的合同或账本记录密文登记在一个区块里,只有代表国家的公务员,使用他们的客户端加密芯片,才能产生加密密钥jk,解密合同或账本记录的密文,浏览明文内容;

若有合同或账本记录需要双方用户签名时,在用户a和用户b的客户端加密芯片里,根据组合密钥生成算法,分别生成用户a和用户b的签名密钥qka和qkb,分别对合同或账本记录进行签名,在各个节点服务器端,将通过签验的合同或账本记录登记在一个区块里。

16、在区块链的数字货币应用领域,当用户a和用户b进行交易,如:用户a支付一笔款给用户b时,用户a客户端加密系统调用数字签名协议,首先,产生一组时间戳1和随机数1,在客户端加密芯片里,根据组合密钥生成算法,生成一组签名密钥qka,再调用摘要算法对用户a和用户b的交易单进行摘要,得到摘要信息l1,用签名密钥qka加密摘要信息l1,得到摘要信息l1的密文即:用户a对用户a和用户b交易单的数字签名,用户a客户端加密系统,将用户a的账号、用户a和用户b的交易单、摘要信息l1、摘要信息l1的密文、时间戳1和随机数1,一并发送给用户b客户端,用户b客户端加密系统调用数字签名协议,产生一组时间戳2和随机数2,在加密芯片里根据组合密钥生成算法,生成一组签名密钥qkb,再调用摘要算法对用户a和用户b的交易单进行摘要,得到摘要信息l3,用签名密钥qkb加密摘要信息l3,得到摘要信息l3的密文即:用户b对用户a和用户b交易单的数字签名;

用户b客户端加密系统,将用户a和用户b的交易单,以及相关参数:用户a的账号、用户b的账号、摘要信息l1、摘要信息l1的密文、摘要信息l3、摘要信息l3的密文、时间戳1和随机数1,时间戳2和随机数2,一并发送给各个节点服务器端,所有节点服务器端都将收到用户a和用户b的交易单以及相关参数,分别收入一个区块里,每个节点服务器端加密系统调用签名验证协议,分别对用户a和用户b的交易单的数字签名进行签名验证,具体签名验证过程如下:

首先,每个节点服务器端加密系统,根据用户a的的账号,取出“密钥种子”数据库中对应用户a账号的“密钥种子”表a元素的密文,在每个节点服务器端加密芯片里,用“存储密钥”k解密“密钥种子”表a元素的密文,得到“密钥种子”表a元素的明文,根据时间戳1和随机数1,组成的组合密钥生成算法,生成用户a的签名验证密钥qka1,用签名验证密钥qka1解密摘要信息l1密文,得到摘要信息l2,通过对比摘要信息l1和l2是否相同,来判别用户a的签名是否可信;

每个节点服务器端加密系统,根据用户b的账号,取出“密钥种子”数据库中对应用户b账号的“密钥种子”表b元素的密文,在每个节点服务器端加密芯片里,用“存储密钥”k解密“密钥种子”表b元素的密文,得到“密钥种子”表b元素的明文,根据时间戳2和随机数2,组成的组合密钥生成算法,生成用户b的签名验证密钥qkb1,用签名验证密钥qkb1解密摘要信息l3密文,得到摘要信息l4,通过对比摘要信息l3和l4是否相同,来判别用户b的签名是否可信,若l1=l2,同时,l3=l4,则用户a和用户b交易单真实,可信,之后,根据智能合约,每个节点服务器端通过权限管理系统,分别进入用户a的账号,查询是否支付了交易单对应的金额,且余额仍为正,且分别登录用户b的账号,查询是否账户余额增加了交易单对应的数额,若以上查询未通过,则用户a和用户b的交易单无效,否则,每个节点服务器端加密系统,将用户a和用户b的交易单以及相关参数写入一个区块中,其中:一种交易单格式包括:用户a的账号、用户b的账号、转账金额,另一种交易单格式包括:用户a的账号、转出款前余额、转款金额、转出款后余额、用户b的账号、转入款前余额、转入款后余额;

在经过时间t后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间t内所有通过签名验证的交易单记录在区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息m,其他节点服务器端都验证该区块的摘要信息m是否完整、可信,当其他节点服务器端通过摘要信息m的验证后,也在所有其他节点服务器端记录该区块,从而,完成用户之间交易单登记的区块链应用;

若用户a和用户b的交易单内容需要保密,对用户a和用户b的交易单,进行签名和加密的具体过程如下:

用户a客户端加密系统,将用户a和用户b的标识发送给密钥管理服务器端,密钥管理服务器端加密系统,根据用户a的标识,取出对应的“密钥种子”表a元素的密文,在密钥管理服务器加密芯片里,用“存储密钥”k来解密“密钥种子”表a元素的密文得到明文,产生一组时间戳1和随机数1,根据组合密钥生成算法,对用户a对应的“密钥种子”表a元素进行选取,实时产生一组用户a的密钥ka,密钥管理服务器端加密系统,根据用户b的标识,取出对应“密钥种子”表b元素的密文,在密钥管理服务器加密芯片里,用“存储密钥”k,来解密“密钥种子”表b元素的密文得到明文,根据一组时间戳1和随机数1,组成的组合密钥生成算法,对用户b对应的“密钥种子”表b元素的进行选取,实时产生一组用户b的密钥kb,密钥管理服务器端加密系统,在加密芯片里产生一组随机数,将该组随机数作为过程密钥gk,用用户a的密钥ka将过程密钥gk加密成密文gk1,再将过程密钥gk的密文gk1,与时间戳1和随机数1一并发送给用户a客户端加密芯片里,同时,密钥管理服务器端加密系统,用用户b的密钥kb将过程密钥gk加密成密文gk2,再将过程密钥gk的密文gk2,与时间戳1和随机数1一并发送给用户b客户端加密芯片里,在用户a客户端加密芯片里,根据时间1和随机数1组成的组合密钥生成算法,对“密钥种子”表a元素进行选取,实时产生一组用户a的密钥ka,来解密过程密钥gk的密文gk1,得到过程密钥gk的明文,在用户b客户端加密芯片里,根据时间1和随机数1组成的组合密钥生成算法,对“密钥种子”表b元素进行选取,实时产生一组用户b的密钥kb,来解密过程密钥gk的密文gk2,得到过程密钥gk的明文;

用户a客户端加密系统,在加密芯片里,调用摘要算法对对用户a和用户b的交易单进行摘要,得到摘要信息l1,将密钥ka作为用户a客户端的签名密钥qka,对摘要信息l1进行加密,得到摘要信息l1的密文即:用户a对用户a和用户b交易单的数字签名,用过程密钥gk,对用户a和用户b的交易单进行加密,得到用户a和用户b的交易单密文,用户a客户端加密系统,将用户a的账号、摘要信息l1、摘要信息l1的密文、用户a和用户b交易单的密文、过程密钥gk的密文gk1,一并发送给用户b客户端加密芯片里,用户b客户端加密系统,在加密芯片里,调用摘要算法对用户a和用户b的交易单进行摘要,得到摘要信息l3,将用户b的密钥kb作为签名密钥qkb,来对摘要信息l3进行加密,得到摘要信息l3的密文即:用户b对用户a和用户b交易单的数字签名;

用户b客户端加密系统,将用户a和用户b的交易单密文、以及相关参数:用户a的账号、用户b的账号、摘要信息l1、摘要信息l1的密文、摘要信息l3、摘要信息l3的密文、时间戳1和随机数1,过程密钥gk的密文gk1和过程密钥gk的密文gk2,一并发送给各个节点服务器端,所有节点服务器端,都将用户a和用户b的交易单密文以及相关参数,分别收入各自的一个区块里,每个节点服务器端加密系统,分别对已被用户a和用户b签名的交易单,进行签名验证,具体验证过程如下:

首先,每个节点服务器端加密系统,根据用户a的账号,取出“密钥种子”数据库中对应用户a的“密钥种子”表a元素的密文,在每个节点服务器端加密芯片里,用“存储密钥”k解密“密钥种子”表a元素的密文,得到“密钥种子”表a元素的明文,根据时间戳1和随机数1组成的组合密钥生成算法,生成用户a的签名验证密钥qka1,用签名验证密钥qka1解密摘要信息l1的密文,得到摘要信息l2,通过对比摘要信息l1和l2是否相同,来判别用户a的签名是否可信;

每个节点服务器端加密系统,根据用户b的账号,取出“密钥种子”数据库中对应用户b的“密钥种子”表b元素的密文,在每个节点服务器端加密芯片里,用“存储密钥”k解密“密钥种子”表b元素的密文,得到“密钥种子”表b元素的明文,根据时间戳1和随机数1组成的组合密钥生成算法,生成用户b的签名验证密钥qkb1,用签名验证密钥qkb1解密摘要信息l3密文,得到摘要信息l4,通过对比摘要信息l3和l4是否相同,来判别用户b的签名是否可信,若l1=l2,同时,l1=l3,则用户a和用户b交易单真实,可信,再用qka1解密过程密钥密文gk1,得到过程密钥gk,来解密用户a和用户b的交易单密文,得到其明文,之后,每个节点服务器端通过权限管理系统,分别进入用户a的账号,查询是否支付了交易单对应的金额,且余额仍为正,每个节点服务器端通过权限管理系统,分别进入用户b的账号,查询是否余额增加了交易单对应的数额,若以上查询未通过,则用户a和用户b的交易单无效,否则,每个节点服务器端加密系统,将用户a和用户b的交易单以及相关参数写入一个区块中;

在经过时间t后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间t内所有通过签名验证的交易单记录在区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息m,其他节点服务器端验证该区块的摘要信息m,通过验证后也在其他所有节点服务器端记录该区块,其中:用户a和用户b的交易单以密文形式传输,以密文形式存储在区块中,用户a和用户b可以分别调用各自客户端加密芯片里的密钥,解密过程密钥gk密文,再使用过程密钥gk来解密用户a和用户b的交易单密文,得到其明文,并浏览用户a和用户b的交易单明文,亦即:只有用户a和用户b才能对用户a和用户b的交易单进行解密,浏览其明文,而其他用户无法浏览用户a和用户b的交易单明文,从而,完成用户之间交易单以密文形式登记的区块链应用。

17、在区块链的数字货币应用领域,当用户a和用户b进行交易,如:用户a发送一张现金支票给用户b时,

用户a调用客户端加密芯片里的签名协议,对现金支票进行签名,其中:现金支票包括:用户a账号、用户b账号和现金支票额度,用户a对现金支付进行的签名过程:

用户a客户端加密系统,将用户a和用户b的标识发送给密钥管理服务器端,密钥管理服务器端加密系统,根据用户a的标识,取出对应的“密钥种子”表a元素的密文,在密钥管理服务器加密芯片里,用“存储密钥”k来解密“密钥种子”表a元素的密文得到明文,产生一组时间戳1和随机数1,根据组合密钥生成算法,对用户a对应的“密钥种子”表a元素进行选取,实时产生一组用户a的密钥ka,密钥管理服务器端加密系统,根据用户b的标识,取出对应“密钥种子”表a元素的密文,在密钥管理服务器加密芯片里,用“存储密钥”k,来解密“密钥种子”表a元素的密文得到明文,产生一组时间戳2和随机数2,根据组合密钥生成算法,对用户b对应的“密钥种子”表a元素的进行选取,实时产生一组用户b的密钥kb,密钥管理服务器端加密系统,用用户a的密钥ka将用户b的密钥kb加密成密文,再将用户b的密钥kb密文、时间戳1和随机数1,时间戳2和随机数2,发送给用户a的客户端,在用户a客户端加密芯片里,根据时间1和随机数1组成的组合密钥生成算法,产生对应的用户a的密钥ka来解密用户b的密钥kb密文,得到用户b的密钥kb明文;

在用户a客户端加密系统,在加密芯片里,调用摘要算法对现金支票进行摘要,得到摘要信息l1,将密钥ka作为用户a客户端的签名密钥qk,对摘要信息l1进行加密得到摘要信息l1的密文即:用户a对现金支票的数字签名,再用用户b的密钥kb,来对现金支票进行加密得到现金支票的密文,用户a客户端加密系统,将现金支票的密文,以及相关参数:用户a的账号、用户b的账号、时间戳1和随机数1,时间戳,2和随机数2,摘要信息l1、用户a对现金支票的数字签名、一并发送给各个节点服务器端,所有节点服务器端,都将现金支票的密文以及相关参数,分别收入各自的一个区块里,每个节点服务器端加密系统,分别对用户a签名的现金支票进行签名验证,具体验证过程如下:

首先,每个节点服务器端加密系统,根据用户a的账号取出“密钥种子”数据库中对应的“密钥种子”表a元素的密文,在每个节点服务器端加密芯片里,用“存储密钥”k解密“密钥种子”表a元素的密文,得到“密钥种子”表a元素的明文,根据时间戳1和随机数1组成的组合密钥生成算法,对“密钥种子”表a元素进行选取,生成用户a的签名验证密钥ka1,来解密用户a对现金支票的数字签名,得到摘要信息l2,通过对比摘要信息l1和l2是否相同,来判别用户a的签名是否可信,若签名验证未通过,则用户a发给用户b的现金支票无效,若签名验证通过,则用户a发给用户b的现金支票可信;同时,每个节点服务器端根据权限管理系统系统,登录用户a的账号,查询余额是否大于或等于现金支票的数额,若查询未通过,则用户a发给用户b的现金支票无效,否则,用户a发给用户b的现金支票真实、可信,每个节点服务器端加密系统,都将现金支票的密文以及相关参数写入一个区块中;

在经过时间t后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间t内所有通过签名验证的现金支付密文,以及相关参数记录在区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息m,其他节点服务器端验证该区块的摘要信息m,通过验证后也在其他所有节点服务器端记录该区块,其中:其中:用户a发送给用户b的现金支票是以密文形式传输,并以密文形式存储在区块中,只有用户b才能对用户a发送的现金支票进行解密,并使用该现金支票,而其他用户无法使用用户a发送给b的现金支票,从而,完成用户现金支票登记的区块链应用。

18、在用户的客户端加密芯片里,写入摘要算法,签名协议,在节点服务器端和密钥管理服务器端加密芯片里,都不写入摘要算法和签名协议,因此,只容许用户客户端加密系统才能对合同、账本记录或交易单进行签名,而节点服务器端和密钥管理服务器端,都不能对用户的合同、账本记录或交易单进行伪造签名,从而,保证区块链签名系统的安全可靠。

19、采用“垂直认证”技术建立区块链安全体系,是“垂直认证”技术在区块链领域的应用,是一种转移性发明;采用组合密钥生成算法实时产生认证、签名和加密密钥,都一次一变,同时,在用户的客户端、节点服务器端和密钥管理服务器端,都部署加密芯片里,建立“芯片级”的认证架构,实现“芯片”对“芯片”的身份认证协议、签名协议和签名验证协议,从而,建立一种“芯片级”可信区块链系统,可大幅度提高区块链的安全等级。

20、基于单钥密码算法建立签名/签名验证协议,可充分发挥单钥密码算法具有加/解密速度快,能大大提高区块链节点服务器端并发签名验证的效率,对比pki能提高区块链认证速度100倍,对比pki能提高区块链签名验证速度200倍,解决现有区块链系统每秒只能完成7笔交易,运行效率较低的难题,同时,有效降低节点服务器的建设成本。

21、客户端、节点服务器端和密钥管理服务器端,都是通过时间戳和随机数的交换来实时完成密钥的交换,实现密钥由组合密钥生成算法实时产生,从而,解决单钥密码算法密钥更新管理的难题,充分发挥单钥密码算法抗集团攻击能力强的优点,提高区块链的安全等级。

22、每个用户对应的“密钥种子”,两两不同,一个用户的“密钥种子”不慎泄露,不影响其他用户“密钥种子”的安全,密钥管理服务器端和节点服务器端的“密钥种子”数据库,采用相同的存储密钥k,分别加密全体用户“密钥种子”,即能保证全体用户“密钥种子”的存储和运行安全,也利于密钥管理服务器端和节点服务器端“密钥种子”数据库记录的便捷管理。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1