首页 / 专利库 / 资料储存系统 / 分布式账本 / 一种安全高效的区块链实现方法

一种安全高效的链实现方法

阅读:1026发布:2020-08-04

专利汇可以提供一种安全高效的链实现方法专利检索,专利查询,专利分析的服务。并且一种安全高效的 区 块 链 实现方法,是采用“垂直认证”技术建立区块链安全体系,基于单钥密码 算法 ,完成身份认证、数字签名、密钥交换和数据加密4项功能,能解决海量用户并发认证和并发签验的难题,对比PKI可提高区块链签名验证速度200倍,使用组合密钥生成算法实时产生加密、认证或签名密钥,一次一变,解决单钥密码算法密钥管理的难题,在客户端加密芯片里,对区块链的合同、账本记录或交易单进行签名,在 节点 服务器 端加密芯片里,对合同、账本记录或交易单的数字签名进行签名验证,保证合同、账本记录或交易单的真实、可信,其中:采用了“芯片”对“芯片”的身份认证、签名或签验协议,从而,建立“芯片级”可信区块链系统。,下面是一种安全高效的链实现方法专利的具体信息内容。

1.一种安全高效的链实现方法,是在区块链各个节点服务器端建立分布式账本数据库,是无中心化体系,在有中心数据库情况下,在客户端安装加密芯片,在加密芯片里建立客户端加密系统,并建立身份认证协议、签名协议和加密协议,在支付服务器端建立认证中心,认证中心由加密设备组成,在认证中心加密芯片里建立认证中心端加密系统,并建立身份认证协议、签名验证协议和解密协议;
当用户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的现金支票密文进行解密,并使用该现金支票;
总之,采用“垂直认证”技术,是基于单钥密码算法建立区块链加密系统,在客户端、节点服务器端和密钥管理服务器端都部署加密芯片,建立“芯片级”可信区块链系统。
2.根据权利要求1的方法,其特征在于:
“垂直认证”技术是基于单钥密码算法建立认证架构,采用组合密钥生成算法,实现认证、签名和加密密钥实时生成,都一次一变,解决单钥密码算法密钥更新管理的难题,仅用单钥密码算法,实现身份认证、数字签名、密钥交换和数据加密4项功能。
3.根据权利要求1的方法,其特征在于:
“垂直认证”技术定义:密钥集中生成,集中灌装,集中分发,集中销毁;具体密钥生成管理过程如下:
(1)密钥集中生成,由密码管理单位,使用加密设备的CPU芯片里随机数发生器,产生一组随机数,将该组随机数作为一组“存储密钥”K,
由密码管理单位,使用加密设备的CPU芯片里随机数发生器,产生一组F2字节随机数,将该组随机数作为一组“密钥种子”,若取时间戳为:10位,即:年、月、日和时,则:取F2=
1424或1680字节,将F2字节的随机数组成,一套W×Y的“密钥种子”表D,
其中:表D的元素为Du v,u=0~w-1,v=0~y-1,Du v占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为全体区块链用户的总数。
4.根据权利要求1的方法,其特征在于:
(1)组合密钥生成算法,是通过一组时间戳和随机数组成的选取参数,来对一组“密钥种子”表的元素进行选取,用时间戳对“密钥种子”表的“行”元素进行选取,选出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字节;
■用时间戳的“年”对应表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中“时”对应的“行”,如:时间戳为:20XXXKXX21,则:取表D中的第74行,再将表D的第78行~第W行共W-78+1行选出,共选出Y行,其中:Y=16或32行,组成:Y×Y表D的子表D1,
其中:表D1的元素为:Dv v,v=0~Y-1,Dv v占0.5或1字节,Y=16或32;表D1中第5行~第Y行的元素与表D的第78行~第W行的元素完全相同;
■设:随机数为: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比特;
(2)根据组合密钥生成算法,能实时产生密钥,一次一变,若时间戳取10位,即:年、月、日和时,“密钥种子”表为89×16,随机数取16位二进制数,其中:每位随机数占4比特,共16种变化,则密钥的变化量为:264/小时;若时间戳取10位即:年、月、日和时,“密钥种子”表为
105×32,随机数取32位二进制数,其中:每位随机数占5比特,共32种变化,则密钥的变化量
160
为:2 /小时。
5.根据权利要求1的方法,其特征在于:
用户身份认证协议,用户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,对每一笔账号资金记录进行签名验证,验证用户账号交易记录是否真实,可信。
6.根据权利要求1的方法,其特征在于:
在区块链合同或账本记录登记应用领域,当用户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,分别对合同或账本记录进行签名,在各个节点服务器端,将通过签验的合同或账本记录登记在一个区块里。
7.根据权利要求1的方法,其特征在于:
(1)在区块链的数字货币应用领域,当用户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的交易单明文,从而,完成用户之间交易单以密文形式登记的区块链应用;
(2)在区块链的数字货币应用领域,当用户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的现金支票,从而,完成用户现金支票登记的区块链应用。
8.根据权利要求1的方法,其特征在于:
(1)在用户的客户端加密芯片里,写入摘要算法,签名协议,在节点服务器端和密钥管理服务器端加密芯片里,都不写入摘要算法和签名协议,因此,只容许用户客户端加密系统才能对合同、账本记录或交易单进行签名,而节点服务器端和密钥管理服务器端,都不能对用户的合同、账本记录或交易单进行伪造签名,从而,保证区块链签名系统的安全可靠;
(2)采用“垂直认证”技术建立区块链安全体系,是“垂直认证”技术在区块链领域的应用,是一种转移性发明
采用组合密钥生成算法实时产生认证、签名和加密密钥,都一次一变,同时,在用户的客户端、节点服务器端和密钥管理服务器端,都部署加密芯片里,建立“芯片级”的认证架构,实现“芯片”对“芯片”的身份认证协议、签名协议和签名验证协议,从而,建立一种“芯片级”可信区块链系统,可大幅度提高区块链的安全等级;
(3)基于单钥密码算法建立签名/签名验证协议,可充分发挥单钥密码算法具有加/解密速度快,能大大提高区块链节点服务器端并发签名验证的效率,对比PKI能提高区块链认证速度100倍,对比PKI能提高区块链签名验证速度200倍,解决现有区块链系统每秒只能完成7笔交易,运行效率较低的难题,同时,有效降低节点服务器的建设成本;
(4)客户端、节点服务器端和密钥管理服务器端,都是通过时间戳和随机数的交换来实时完成密钥的交换,实现密钥由组合密钥生成算法实时产生,从而,解决单钥密码算法密钥更新管理的难题,充分发挥单钥密码算法抗集团攻击能强的优点,提高区块链的安全等级;
(5)每个用户对应的“密钥种子”,两两不同,一个用户的“密钥种子”不慎泄露,不影响其他用户“密钥种子”的安全,密钥管理服务器端和节点服务器端的“密钥种子”数据库,采用相同的存储密钥K,分别加密全体用户“密钥种子”,即能保证全体用户“密钥种子”的存储和运行安全,也利于密钥管理服务器端和节点服务器端“密钥种子”数据库记录的便捷管理。

说明书全文

一种安全高效的链实现方法

技术领域:

[0001] 本发明涉及区块链应用安全领域。背景技术:
[0002] 目前,国内外的区块链都是采用公钥体制如:PKI技术来实现,但是,由于公钥体制运行效率较低,造成现有区块链应用速度较慢,如:比特币每秒只能完成7笔交易,这影响并阻碍了区块链实现规模化并发交易的应用,同时,公钥是以明文形式存储在网络公钥服务器中,容易受到黑客的攻击,其安全等级较低,造成现有区块链应用安全事件频发,如:比特币每半年就出现一次信息安全事件,给用户带来较大损失,总之,现有的区块链技术和产品不能满足市场的需求。发明内容:
[0003] 一种安全高效的区块链实现方法,是在区块链各个节点服务器端建立分布式账本数据库,是无中心化体系,在有中心数据库情况下,在客户端安装加密芯片,在加密芯片里建立客户端加密系统,并建立身份认证协议、签名协议和加密协议,在支付服务器端建立认证中心,认证中心由加密设备组成,在认证中心加密芯片里建立认证中心端加密系统,并建立身份认证协议、签名验证协议和解密协议;
[0004] 当用户A与用户B进行交易时,用户A使用客户端加密系统,调用身份认证协议发出身份认证请求,支付服务器端认证中心,对用户A的身份进行身份认证,若未通过身份认证,则用户A身份不可信,若通过身份认证,则该用户A可登录对应自己的账号,并填写交易单,用户A客户端加密系统再调用签名协议,对交易单进行签名,并发送给支付服务器端认证中心,认证中心端加密系统,对被签名的交易单进行签名验证,若未通过签名验证,则交易单不可信,若通过通过签名验证,则支付服务器将交易单的数额支付给用户B的账号里,并将交易单登记到交易单数据库里,从而,完成用户之间交易单的登记和支付过程;
[0005] 一种安全高效的区块链实现方法,是采用“垂直认证”技术建立区块链安全体系,基于单钥密码算法,完成身份认证、数字签名、密钥交换和数据加密4项功能,能解决海量用户并发认证和并发签验的难题,对比PKI可提高区块链签名验证速度200倍,使用组合密钥生成算法实时产生加密、认证或签名密钥,一次一变,解决单钥密码算法密钥管理的难题,在客户端和节点服务器端的加密芯片里分别建立加密系统,在客户端加密芯片里,对区块链的合同、账本记录或交易单进行签名,在节点服务器端加密芯片里,对合同、账本记录或交易单的数字签名进行签名验证,保证合同、账本记录或交易单的真实、可信,在区块链系统中,部署2~10个密钥管理服务器,负责对交易双方用户进行实时密钥交换,同时,对节点服务器端“密钥种子”数据库记录进行更新,其中:采用了“芯片”对“芯片”的身份认证、签名或签验协议,从而,建立“芯片级”可信区块链系统,其方法的技术特征在于:
[0006] 首先,在用户的客户端嵌入加密芯片,在客户端加密芯片里建立加密系统,并写入单钥密码算法、摘要算法、组合密钥生成算法、一组“密钥种子”表i的元素、身份认证协议、签名协议、加密协议、解密协议,从而,建立“芯片级”区块链的客户端,其中:i=1~n,n≤20亿,n为全体区块链用户总数;
[0007] 在区块链系统中建立m个密钥管理服务器,在密钥管理服务器端也部署加密芯片硬件,在加密芯片里建立密钥管理服务器端加密系统,写入单钥密码算法、一组“存储密钥”K、组合密钥生成算法、加密协议,在密钥管理服务器端建立“密钥种子”数据库,将全体用户的标识、账号、对应的“密钥种子”表i的元素密文,一并存储在密钥管理服务器端的“密钥种子”数据库中,从而,建立“芯片级”的区块链的密钥管理服务器,其中:用密钥管理服务器端的“存储密钥”K,分别加密全体用户的“密钥种子”表i元素,m=2~10,m为全体密钥管理服务器的总数,不同密钥管理服务器端的“存储密钥”K,两两相同;
[0008] 在区块链系统中建立j个节点,在节点的服务器端部署加密芯片硬件设备,在加密芯片里建立节点服务器端加密系统,写入单钥密码算法、组合密钥生成算法、一组“存储密钥”K、身份认证协议、签名验证协议、解密协议,在节点服务器端建立“密钥种子”数据库,将全体用户的标识、账号、“密钥种子”表i的元素密文,一并存储在节点服务器端的“密钥种子”数据库中,从而,建立“芯片级”的区块链节点,其中:用密钥管理服务器端的“存储密钥”K,分别加密全体用户的“密钥种子”表i元素,j=100~10万,j为区块链全部节点的总数,i=1~n,n≤20亿,n为全体区块链用户总数,不同节点服务器端的“存储密钥”K,两两相同,节点服务器端和密钥管理服务器端的“存储密钥”K,都两两相同;
[0009] “垂直认证”技术模式的定义:密钥集中生成,集中灌装,集中分发,集中销毁;由密码管理单位,负责集中生成密钥,集中灌装到客户端、节点服务器端和密钥管理服务器端加密芯片里,通过客户端、节点服务器端和密钥管理服务器端的加密芯片,集中分发密钥,集中将全体用户的“密钥种子”表i元素,在加密设备中分别加密成密文,并分发给各个节点服务器端和密钥管理服务器端,同时,密钥管理服务器端的系统管理员,在“密钥种子”数据库中,对已经时效的密钥进行集中销毁;
[0010] 组合密钥生成算法,是由一组时间戳和随机数组成的选取参数,来对一组“密钥种子”表的元素进行选取,将选出的Y个元素,并合成一组认证密钥RK、签名密钥QK,或加密密钥JK,因为,区块链加密系统采用单钥密码算法,则:客户端的认证密钥RK=节点服务器端的认证密钥RK,签名密钥QK=签名验证密钥QK,加密密钥JK=解密密钥JK,其中:Y=16或32;
[0011] 当用户客户端的加密芯片丢失需要为用户重新配发加密芯片时,由密钥管理单位负责更新用户客户端加密芯片,在新的加密芯片里写入一组新“密钥种子”表元素,其他内容与原用户客户端加密芯片里内容完全相同,同时,更新密钥管理服务器端的“密钥种子”数据库里对应用户的记录,再由密钥管理服务器端加密系统,对所有节点服务器端的“密钥种子”数据库里对应用户的记录进行自动更新;
[0012] 定义:区块链的记账时间为T,T=10~200分钟;
[0013] 定义:区块链的一种共识算法如下:将一次一变的一组随机数的数值,来确定那个用户具有记录一个区块的权利即:对一个区块进行记账;
[0014] 智能合约:是采用一种可编程合约,当用户之间签署的合同、账本记录或交易单在达到区块链某种条件时,合约自动执行,可编程合约保证区块链运行公平,公证,减少人工干预;
[0015] 区块链为每个用户分配一个账号,用户账号的第一笔款进入账号里,用户使用客户端加密芯片里的签名密钥QK对自己的账号资金进行签名,之后,用户账号里的每一笔支付款和收入款,交易双方用户都采用自己的签名密钥QK分别进行签名,保证用户账号资金真实,可信,且不可抵赖;
[0016] 每个节点服务器端事先部署了权限管理系统,用户可以通过身份认证协议,登录自己的账号浏览交易记录,同时,用户可调用自己的签名验证密钥QK,对每一笔账号记录进行签名验证,保证用户账号资金真实,可信,或者,用户之间的合同、账本记录或交易单通过节点服务器端验证后,节点服务器端权限管理系统自动登录对应用户的账号,验证用户账号资金是否合规;
[0017] 在区块链合同或账本记录登记应用领域,当用户A和用户B的合同或账本记录在区块链上登记时,用户A和用户B分别调用客户端加密芯片里的签名协议,产生用户A的签名密钥QKa和用户B的签名密钥QKb,分别对用户A和用户B的合同或账本记录进行签名,所有节点服务器端都将已被用户A和用户B签名的合同或账本记录,分别收入一个区块里,否则,则用户A和用户B的合同或账本记录无效;
[0018] 每个节点服务器端加密系统,分别生成用户A的签名验证密钥QKa1和用户B的签名验证密钥QKb1,对已经被用户A和用户B签名的合同或账本记录进行签名验证,若通过签名验证,每个节点服务器端加密系统,将用户A和用户B签名的合同或账本记录写入一个区块中;
[0019] 在经过时间T后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间T内所有通过签名验证的合同或账本记录,登记在一个区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到本区块的摘要信息M,其他节点服务器端加密系统对摘要信息M进行验证,通过验证后也在所有其他节点服务器端记录该区块,从而,完成用户之间合同或账本记录登记的区块链应用;
[0020] 若用户A和用户B的合同或账本记录内容需要保密,则通过密钥管理服务器产生过程密钥GK,对用户A和用户B的合同或账本记录进行加密,用户A和用户B分别调用各自客户端加密芯片里的签名协议,分别对用户A和用户B的合同或账本记录进行签名,同时,对过程密钥GK分别进行加密;
[0021] 各个节点服务器端加密系统,分别调用各自加密芯片里的签名验证协议,对用户A和用户B签名的合同或账本记录密文进行签名验证,实现用户A和用户B的合同或账本记录以密文形式传输,以密文形式存储在区块中,只有用户A和用户B,才能调用自己的密钥,对用户A和用户B签名的合同或账本记录密文进行解密,并浏览合同或账本记录的内容;
[0022] 其中:合同或账本记录登记包括:数字档案登记,数字版权登记,房产证登记,电子病历登记,商用合同登记,购物账目记录登记,物联网传感信息登记,食品和药品生产各环节登记,商品的生产、物流、经销过程管理登记,用户诚信记录登记;
[0023] 在区块链的数字货币应用领域,当用户A和用户B进行交易,如:用户A支付一笔款给用户B时,
[0024] 用户A和用户B调用各自客户端加密芯片里的签名协议,分别产生用户A的签名密钥QKa和用户B的签名密钥QKb,对用户A和用户B的交易单进行签名,所有节点服务器都将已被用户A和用户B签名的交易单,分别收入一个区块里,每个节点服务器端加密芯片里,分别生成用户A的签名验证密钥QKa1和用户B的签名验证密钥QKb1,对已经被用户A和用户B签名的交易单进行签名验证,若通过签名验证,则每个节点服务器端根据权限管理系统,分别登录用户A的账号和用户B的账户,查询资金流是否合规,若通过签名验证,各个节点服务器端加密系统,将用户A和用户B的交易单写入区块中,否则,则用户A和用户B的交易单无效;
[0025] 在经过时间T后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间T内所有通过签名验证的交易单登记在一个区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对本区块进行摘要得到摘要信息M,其他节点服务器端加密系统对摘要信息M进行验证,通过验证后也在其他所有节点服务器端记录该区块,从而,完成用户之间的交易单登记的区块链应用;
[0026] 若用户A和用户B之间交易单内容需要保密,则通过密钥管理服务器产生过程密钥GK,对用户A和用户B之间交易单进行加密,用户A和用户B客户端加密系统,分别调用各自加密芯片里的签名协议,生成用户A的签名密钥QKa和用户B的签名密钥QKb,分别对用户A和用户B的交易单进行签名,同时,对过程密钥GK分别进行加密;
[0027] 各个节点服务器端加密系统,分别调用各自加密芯片里的签名验证协议,对用户A和用户B签名的交易单密文进行签名验证,实现用户A和用户B的交易单以密文形式传输,以密文形式存储在区块中,用户通过身份认证登录各个节点服务器端,可浏览节点服务器端区块的各条记录,只有交易双方如:用户A和用户B,才能调用自己的密钥,对用户A和用户B签名的交易单密文进行解密,并浏览交易单的内容;
[0028] 在区块链的数字货币应用领域,当用户A和用户B进行交易,如:用户A发送一张现金支票给用户B时,
[0029] 用户A客户端加密系统,调用加密芯片里的签名协议,产生用户A的签名密钥QKa,对用户A发送给用户B的现金支票进行签名,用户B客户端加密系统,调用加密芯片里的加密协议,产生用户B的加密密钥JKb,将用户A发送给用户B的现金支票加密成密文,所有节点服务器都将已被用户A签名和用户B加密的交易单,分别收入一个区块里,每个节点服务器端加密芯片里,分别生成用户A的签名验证密钥QKa1和用户B的解密密钥JKb1,对已经被用户A签名的现金支票进行签名验证,若未通过签名验证,则现金支票不可信,否则,每个节点服务器端根据权限管理系统,分别登录用户A的账号,查询现金支票的数额是否合规,若查询通过,则用户A发送给用户B的现金支票有效,各个节点服务器端加密系统将用户A发送给用户B的现金支票写入一个区块中;
[0030] 在经过时间T后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间T内所有通过签名验证的现金支票登记在一个区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息M,其他节点服务器端加密系统,对摘要信息M进行验证,通过验证后,也在其他所有节点服务器端记录该区块,从而,完成用户现金支票登记的区块链应用,只有用户B才能调用自己的密钥,对用户A发送给用户B的现金支票密文进行解密,并使用该现金支票;
[0031] 总之,采用“垂直认证”技术,是基于单钥密码算法建立区块链加密系统,在客户端、节点服务器端和密钥管理服务器端都部署加密芯片,建立“芯片级”可信区块链系统,且整个过程由软件和硬件结合方式实现,具体方法如下:
[0032] 1、在用户的客户端的PC机或手机上,嵌入智能卡,如:U盾、SIM卡、SD卡、TF卡,或手机里内置智能卡,在智能卡的CPU芯片里,建立客户端加密系统,即:在客户端加密芯片里,并写入单钥密码算法、摘要算法、组合密钥生成算法、身份认证协议、签名协议、加密协议、解密协议,以及用户标识、账号和一组“密钥种子”表i的元素,实现在客户端部署加密芯片,每个客户端加密芯片里的一组用户标识、账号和“密钥种子”表i的元素,都两两不同,其中:单钥密码算法,如:SM1、SM4、AES,摘要算法,如:SM3、SHA-2,i=1~n,n≤20亿,n为全体区块链用户总数。
[0033] 2、在区块链中部署j个节点,在节点服务器端部署加密硬件设备,建立节点服务器端加密系统,即:在加密硬件设备的加密芯片里,写入单钥密码算法、组合密钥生成算法、身份认证协议、签名验证协议、解密协议,以及一组“存储密钥”K,不同节点端加密芯片里的“存储密钥”K,两两相同,其中:j=100~10万,j为全体节点的总数;
[0034] 在节点服务器端,建立“密钥种子”数据库,存储全体用户的“密钥种子”表i元素的密文,“密钥种子”数据库的字段包括:用户标识、账号、“密钥种子”表i元素的密文;
[0035] 在节点端服务器里,事先部署了权限管理系统,用户可以通过客户端加密芯片里的身份认证协议,登录对应自己的账号,浏览资金交易记录,或者,用户之间的交易单通过节点服务器端验证后,节点服务器端根据权限管理系统,分别登录交易双方用户的账户,检查账户资金变化情况即:资金是否合规,来确认交易是否真实,可信。
[0036] 3、在区块链系统中,部署m个密钥管理服务器,在密钥管理服务端部署加密硬件设备,建立密钥管理服务器端加密系统,即:在加密硬件设备的加密芯片里,写入单钥密码算法、组合密钥生成算法、加密协议,以及一组“存储密钥”K,不同密钥管理服务器端加密芯片里“存储密钥”K,两两相同;
[0037] 在密钥管理服务器里,建立“密钥种子”数据库,存储全体用户的“密钥种子”表i元素的密文,“密钥种子”数据库的字段包括:用户标识、账号、“密钥种子”表i元素的密文,其中:i=1~n,n≤20亿,n为全体区块链用户总数,m=2~10,m为全体密钥管理服务器的总数,密钥管理服务器端和节点服务器端的“存储密钥”K,都两两相同。
[0038] 4、“垂直认证”技术定义:密钥集中生成,集中灌装,集中分发,集中销毁;
[0039] “垂直认证”技术是基于单钥密码算法建立认证架构,采用组合密钥生成算法,实现认证、签名和加密密钥实时生成,都一次一变,解决单钥密码算法密钥更新管理的难题,仅用单钥密码算法,实现身份认证、数字签名、密钥交换和数据加密4项功能,对比PKI“垂直认证”技术认证架构简单,认证速度比PKI快100倍,签名验证速度比PKI快200倍。
[0040] 5、智能合约:是采用一种可编程合约,当用户之间签署的合同、账本记录或交易单在达到区块链某种条件时,合约自动执行,可编程合约保证区块链运行公平,公证,减少人工干预,区块链运行达到如下6种条件时,自动执行合约,
[0041] (1)在节点服务器端收到用户发送来已被签名的合同、账本记录或交易单后,节点服务器端加密系统,自动进行签名验证;(2)在用户对一个区块进行记账后,节点服务器端加密系统,自动将上个记录的摘要信息写入本区块的“头部”形成一个完整的区块,并自动对本区块进行摘要获得摘要信息M;(3)其他各个节点服务器端加密系统根据各自区块的内容,自动来判断摘要信息M是否可信,若可信,则所有节点服务器端都自动记录该区块,否则,放弃记录本区块;(4)用户之间被签名的交易单通过节点服务器端验证后,节点服务器端权限管理系统自动登录对应用户的账号,验证用户账号资金是否合规;(5)当被签名的用户合同、账本记录或交易单通过节点服务器端验证后,节点服务器端权限管理系统自动登录对应用户的账号,验证用户账号资金是否合规;(6)由密码管理单位,人工更新密钥管理服务器端的“密钥种子”数据库的相关记录后,密钥管理服务器端加密系统自动替换所有节点服务器端“密钥种子”数据库相关记录。
[0042] 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位用户获得记录一个区块的权利,其中:“共识”算法中采用的随机数一次一变,则选择有记录一个区块权利的用户也具有随机性。
[0043] 7、用户的标识由一组数字或数字和英文字母组成,用户的标识如:手机号或身份证号,用户的账号由一组数字组成,用户的标识两两不同,用户的账号也两两不同,每个用户的标识对应一个账号和一组“密钥种子”。
[0044] 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秒;
[0045] 随机数由Y=16,或32位,二进制数组成,当Y=16时,每位随机数为4比特二进制数,即:每位随机数占4比特,16位随机数共占64比特,每位随机数的二进制数据的数值为0~15,如:0011,1010,0000,......,1111,0110,则其二进制数据的数值为:3,10,0,......,15,6;
[0046] 当Y=32时,则每位随机数占5比特,32位随机数共占160比特,每位随机数的二进制数的数值为:0~31,如:00110,10100,00000,......,11111,01100,则其二进制数据的数值为:6,20,0,......,31,12。
[0047] 9、单钥密码算法使用SM1、SM4、RC4、RC5、3DES、或AES算法,密钥长度为128、210、或256比特,或者根据单钥密码算法的密钥长度要求,对密钥长度进行定义;
[0048] 摘要算法使用SM3算法、SHA-2算法,摘要信息的长度为256比特,若使用的摘要算法其摘要信息的长度相对较短,则会降低签名系统的安全等级。
[0049] 10、由密码管理单位,负责用户密钥的生成、灌装、分发和销毁;
[0050] (1)密钥集中生成,由密码管理单位,使用加密设备的CPU芯片里随机数发生器,产生一组随机数,将该组随机数作为一组“存储密钥”K,
[0051] 由密码管理单位,使用加密设备的CPU芯片里随机数发生器,产生一组F2字节随机数,将该组随机数作为一组“密钥种子”,若取时间戳为:10位,即:年、月、日和时,则:取F2=1424或1680字节,将F2字节的随机数组成,一套W×Y的“密钥种子”表D,
[0052]
[0053] 其中:表D的元素为Du v,u=0~w-1,v=0~y-1,Du v占0.5字节,或1字节,W=89,或105,Y=16,或32;
[0054] 总之,由密码管理单位,集中生成“存储密钥”K,集中生成“密钥种子”表i的元素;
[0055] (2)密钥集中灌装,由密码管理单位,将集中生成的“存储密钥”K,在离线的环境下,灌装到所有密钥管理服务端的加密芯片里,同时,灌装到所有节点服务器端加密芯片里;
[0056] 再将集中生成的“密钥种子”表i的元素,与对应的用户标识i、账号i一起,在离线的环境下,分别灌装到全体用户客户端的加密芯片里;
[0057] 同时,在加密设备的芯片里,将集中生成的“密钥种子”表i的元素,用“存储密钥”K将“密钥种子”表i元素加密成密文,存储在“密钥种子”数据库中,每个用户的标识i和账号i,都对应一组“密钥种子”表i元素,从而,实现用加密设备集中灌装密钥;
[0058] (3)密钥集中分发,由密码管理单位,通过分发客户端加密芯片来实现用户客户端的密钥分发;
[0059] 由密码管理单位,将“存储密钥”K,通过密钥管理服务器端加密芯片和节点服务器端加密芯片,集中分发到密钥管理服务器端和节点服务器端,从而,实现用加密硬件集中分发“存储密钥”K;
[0060] 将生成的“密钥种子”数据库,分别传输给各个密钥管理服务器和各个节点服务器中,从而,实现通过密文形式集中分发“密钥种子”数据库的记录;
[0061] (4)密钥集中销毁,若用户丢失手机端加密芯片如:PC机端U盾,手机端带加密芯片的SIM卡、SD卡或TF卡,则密钥管理服务器端系统管理员,将存储在密钥管理服务器端“密钥种子”数据库中对应用户标识的的记录删除,从而,实现用户密钥集中销毁;同时,密钥管理服务器端加密系统,将更新后的“密钥种子”数据库,分别替代所有节点服务器端“密钥种子”数据库;
[0062] 当用户客户端的加密芯片丢失需要为用户重新配发加密芯片时,由密钥管理单位,负责更新用户客户端加密芯片,在新的客户端加密芯片里写入一组新“密钥种子”表i元素,对应的用户标识i、账号i,与原用户客户端加密芯片里内容完全相同,在加密设备芯片里,用“存储密钥”K将该新“密钥种子”表i元素加密成密文,同时,更新各个密钥管理服务器端的“密钥种子”数据库里对应用户的记录,密钥管理服务器端加密系统,将更新后的“密钥种子”数据库的记录,来替代所有节点服务器端“密钥种子”数据库中的记录,将用户标识i和账号i对应的记录作为一张表,写入更新后的“密钥种子”表i元素的密文,并增添更新“密钥种子”表i元素时的时间戳,保留原“密钥种子”表i元素,表中最多存储10套“密钥种子”表i元素的密文,即:用户最多可以丢失10次客户端的加密芯片硬件;
[0063] 为用户重新配发客户端加密芯片后,用户客户端加密系统可调用签名协议,由新“密钥种子”表i元素生成签名密钥,对用户之间的合同、账本记录或交易单进行签名,节点服务器端加密系统,调用对应用户的新“密钥种子”表i的元素密文,在节点服务器端加密芯片里解密新“密钥种子”表i的元素密文成明文,并生成签名验证密钥,对用户之间已被签名的合同、账本记录或交易单进行签名验证,原来丢失的“密钥种子”表i元素已经被替换,不能对合同、账本记录或交易单进行签名;
[0064] 用户通过客户端加密芯片里的身份认证协议,登录任何一个节点服务器端,可以浏览所有区块中的记录,可以“点击”区块中一个历史记录进行签名验证,节点服务器端加密系统,则根据用户“密钥种子”表i元素更新前的时间戳,调用届时对应用户用户“密钥种子”表i元素的密文,生成签名验证密钥对该条记录进行签名验证,原来的“密钥种子”表i元素,只能针对原来签名的合同、账本记录和交易单进行签名验证,不能再对合同、账本记录或交易单进行签名,从而,实现用户的“密钥种子”表i元素的更新过程,其中:i=1~n,n≤20亿,n为全体区块链用户的总数。
[0065] 11、组合密钥生成算法,是通过一组时间戳和随机数组成的选取参数,来对一组“密钥种子”表的元素进行选取,用时间戳对“密钥种子”表的“行”元素进行选取,选出Y行Y列的“密钥种子”表的子表,再根据随机数,对Y行Y列的“密钥种子”表的“列”元素进行选取,选出Y个元素,并合成一组存储密钥K,或认证/签名密钥CK,其中:Y=16或32;
[0066] 组合密钥生成算法的具体实现方法如下:
[0067] 以表D为例,来说明组合密钥生成算法的具体实现方法,当选择表D元素为89行16列元素时,即:89×16=1424个元素,每个元素占1字节,共占1424字节,当选择表D元素为105行32列元素时,即:105×32=3360个元素,每个元素占,0.5字节,共占1680字节;
[0068] (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行元素不对应时间戳;
[0069] 根据时间戳从表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,
[0070]
[0071] 其中:表D1的元素为:Dv v,v=0~Y-1,Dv v占0.5或1字节,Y=16或32;表D1中第5行~第Y行的元素与表D的第78行~第W行的元素完全相同;
[0072] (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个元素;
[0073] 当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个元素;
[0074] 由于,国家规定单钥密码算法的密钥长度为128比特,则从表D中选出的Y组元素合并成一组密钥,若表D的元素为:8比特,Y=16,则从表D中选出的16组元素合并成的密钥为128比特,若表D的元素为:4比特,Y=32,则从表D中选出的32组元素合并成的密钥也为128比特,设:存储密钥K、认证密钥RK、签名密钥QK和过程密钥GK都为128比特。
[0075] 12、根据组合密钥生成算法,能实时产生密钥,一次一变,若时间戳取10位,即:年、月、日和时,“密钥种子”表为89×16,随机数取16位二进制数,其中:每位随机数占4比特,共16种变化,则密钥的变化量为:264/小时;若时间戳取10位即:年、月、日和时,“密钥种子”表为105×32,随机数取32位二进制数,其中:每位随机数占5比特,共32种变化,则密钥的变化量为:2160/小时。
[0076] 13、在用户账号的每一条记录中都包含对应记录的数字签名,用户A账号的第一笔款进入账号里,用户A通过身份认证协议登录自己的账号后,用户A客户端加密系统产生一组时间戳和随机数,根据组合密钥生成算法和一套“密钥种子”表a元素,产生签名密钥QKa对用户账号的第一笔款进行签名;
[0077] 之后,用户账号里的每一笔支付款和收入款,交易双方用户都采用自己的签名密钥QK分别进行签名,保证用户账号资金真实,可信,且不可抵赖,其中:在用户的账号资金记录中包括:每次交易单金额、交易后的余额、交易单金额和交易后余额的数字签名、时间戳和随机数。
[0078] 每个节点服务器端事先部署了权限管理系统,用户可以通过身份认证协议,登录自己的账号浏览交易记录,同时,用户可调用自己的签名验证密钥QK,对每一笔账号记录进行签名验证,保证用户账号资金真实,可信;
[0079] 智能合约,保证被签名的用户合同、账本记录或交易单通过节点服务器端验证后,节点服务器端权限管理系统自动登录对应用户的账号,验证用户账号资金是否合规。
[0080] 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可成功登录该节点服务器端;
[0081] 用户通过身份认证协议,可登录任何一个节点,浏览区块链区块中的记录,同时,可根据节点服务器端的权限管理系统,进入自己的账号,浏览用户自己账号的交易记录,另外,用户客户端加密系统,可根据交易记录中的时间戳和随机数,组成的组合密钥生成算法,产生签名验证密钥QK,对每一笔账号资金记录进行签名验证,验证用户账号交易记录是否真实,可信。
[0082] 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,一并发送给各个节点服务器端;
[0083] 所有节点服务器端都将已被用户A和用户B签名的合同或账本记录以及相关参数,分别收入一个区块里,每个节点服务器端加密系统,分别对合同或账本记录的数字签名进行签名验证,具体签名验证过程如下:
[0084] 首先,每个节点服务器端加密系统,在加密芯片里调用签名验证协议,根据用户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的合同或账本记录写入一个区块中,若未通过签名验证,则为非法合同或账本记录;
[0085] 在经过时间T后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间T内所有通过签名验证的合同或账本记录,以及相关参数写入区块里,智能合约自动将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息M,其他节点服务器端都验证该区块的摘要信息M是否完整、可信,当其他节点服务器端通过摘要信息M的验证后,也在所有其他节点服务器端记录该区块,从而,完成用户之间合同或账本记录登记的区块链应用;
[0086] 若用户A和用户B的合同或账本记录内容需要保密,则对合同或账本记录内容,进行签名和加密的具体过程如下:
[0087] 用户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的明文;
[0088] 用户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的合同或账本记录的数字签名;
[0089] 用户B客户端加密系统,将用户A和用户B的合同或账本记录密文、以及相关参数:用户A的标识、用户B的标识、摘要信息L1、摘要信息L1的密文、摘要信息L3、摘要信息L3的密文、时间戳1和随机数1,过程密钥GK的密文GK1和过程密钥GK的密文GK2,一并发送给各个节点服务器端,所有节点服务器端,都将用户A和用户B的合同或账本记录密文以及相关参数,分别收入各自的一个区块里,每个节点服务器端加密系统,分别对已被用户A和用户B签名的合同或账本记录,进行签名验证,具体验证过程如下:
[0090] 首先,每个节点服务器端加密系统,根据用户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的合同或账本记录以及相关参数写入一个区块中;
[0091] 在经过时间T后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间T内所有通过签名验证的合同或账本记录,以及相关参数写入区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息M,其他节点服务器端都验证该区块的摘要信息M是否完整、可信,当其他节点服务器端通过摘要信息M的验证后,也在所有其他节点服务器端记录该区块,其中:用户A和用户B的合同或账本记录是以密文形式传输,以密文形式存储在区块中,用户A或用户B,可以分别调用各自客户端加密芯片里的密钥,解密过程密钥GK的密文即:GK1或GK2,得到明文,再使用过程密钥GK来解密用户A和用户B的合同或账本记录密文,得到明文,并浏览用户A和用户B的合同或账本记录明文,亦即:只有用户A和用户B才能对用户A和用户B的合同或账本记录进行解密,浏览明文,而其他用户无法浏览用户A和用户B的合同或账本记录明文,从而,完成用户之间合同或账本记录以密文形式登记的区块链应用;
[0092] 其中:合同或账本记录登记包括:数字档案登记,数字版权登记,房产证登记,电子病历登记,商用合同登记,购物账目记录登记,物联网传感信息登记,食品和药品生产各环节登记,商品的生产、物流、经销过程管理登记;
[0093] 当合同或账本记录需要国家有关部的公务员进行登记时,由这些公务员代表国家使用他们的客户端加密芯片,根据组合密钥生成算法和对应的“密钥种子”表的元素,生成签名密钥QK,对合同或账本记录进行签名,并在区块链的各个节点服务器端,根据这些公务员标识对应的“密钥种子”表的元素和组合密钥生成算法,生成签名验证密钥QK1,对已被签名的合同或账本记录进行签名验证,将通过签验的合同或账本记录登记在一个区块里;
[0094] 若有合同或账本记录的内容需要保密,由公务员代表国家使用他们的客户端加密芯片,根据组合密钥生成算法和对应的“密钥种子”表的元素,生成签名密钥QK,对合同或账本记录进行签名,同时,用签名密钥QK作为加密密钥JK,将合同或账本记录的内容加密成密文,在各个节点服务器端,将通过签验的合同或账本记录密文登记在一个区块里,只有代表国家的公务员,使用他们的客户端加密芯片,才能产生加密密钥JK,解密合同或账本记录的密文,浏览明文内容;
[0095] 若有合同或账本记录需要双方用户签名时,在用户A和用户B的客户端加密芯片里,根据组合密钥生成算法,分别生成用户A和用户B的签名密钥QKa和QKb,分别对合同或账本记录进行签名,在各个节点服务器端,将通过签验的合同或账本记录登记在一个区块里。
[0096] 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交易单的数字签名;
[0097] 用户B客户端加密系统,将用户A和用户B的交易单,以及相关参数:用户A的账号、用户B的账号、摘要信息L1、摘要信息L1的密文、摘要信息L3、摘要信息L3的密文、时间戳1和随机数1,时间戳2和随机数2,一并发送给各个节点服务器端,所有节点服务器端都将收到用户A和用户B的交易单以及相关参数,分别收入一个区块里,每个节点服务器端加密系统调用签名验证协议,分别对用户A和用户B的交易单的数字签名进行签名验证,具体签名验证过程如下:
[0098] 首先,每个节点服务器端加密系统,根据用户A的的账号,取出“密钥种子”数据库中对应用户A账号的“密钥种子”表a元素的密文,在每个节点服务器端加密芯片里,用“存储密钥”K解密“密钥种子”表a元素的密文,得到“密钥种子”表a元素的明文,根据时间戳1和随机数1,组成的组合密钥生成算法,生成用户A的签名验证密钥QKa1,用签名验证密钥QKa1解密摘要信息L1密文,得到摘要信息L2,通过对比摘要信息L1和L2是否相同,来判别用户A的签名是否可信;
[0099] 每个节点服务器端加密系统,根据用户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的账号、转入款前余额、转入款后余额;
[0100] 在经过时间T后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间T内所有通过签名验证的交易单记录在区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息M,其他节点服务器端都验证该区块的摘要信息M是否完整、可信,当其他节点服务器端通过摘要信息M的验证后,也在所有其他节点服务器端记录该区块,从而,完成用户之间交易单登记的区块链应用;
[0101] 若用户A和用户B的交易单内容需要保密,对用户A和用户B的交易单,进行签名和加密的具体过程如下:
[0102] 用户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的明文;
[0103] 用户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交易单的数字签名;
[0104] 用户B客户端加密系统,将用户A和用户B的交易单密文、以及相关参数:用户A的账号、用户B的账号、摘要信息L1、摘要信息L1的密文、摘要信息L3、摘要信息L3的密文、时间戳1和随机数1,过程密钥GK的密文GK1和过程密钥GK的密文GK2,一并发送给各个节点服务器端,所有节点服务器端,都将用户A和用户B的交易单密文以及相关参数,分别收入各自的一个区块里,每个节点服务器端加密系统,分别对已被用户A和用户B签名的交易单,进行签名验证,具体验证过程如下:
[0105] 首先,每个节点服务器端加密系统,根据用户A的账号,取出“密钥种子”数据库中对应用户A的“密钥种子”表a元素的密文,在每个节点服务器端加密芯片里,用“存储密钥”K解密“密钥种子”表a元素的密文,得到“密钥种子”表a元素的明文,根据时间戳1和随机数1组成的组合密钥生成算法,生成用户A的签名验证密钥QKa1,用签名验证密钥QKa1解密摘要信息L1的密文,得到摘要信息L2,通过对比摘要信息L1和L2是否相同,来判别用户A的签名是否可信;
[0106] 每个节点服务器端加密系统,根据用户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的交易单以及相关参数写入一个区块中;
[0107] 在经过时间T后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间T内所有通过签名验证的交易单记录在区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息M,其他节点服务器端验证该区块的摘要信息M,通过验证后也在其他所有节点服务器端记录该区块,其中:用户A和用户B的交易单以密文形式传输,以密文形式存储在区块中,用户A和用户B可以分别调用各自客户端加密芯片里的密钥,解密过程密钥GK密文,再使用过程密钥GK来解密用户A和用户B的交易单密文,得到其明文,并浏览用户A和用户B的交易单明文,亦即:只有用户A和用户B才能对用户A和用户B的交易单进行解密,浏览其明文,而其他用户无法浏览用户A和用户B的交易单明文,从而,完成用户之间交易单以密文形式登记的区块链应用。
[0108] 17、在区块链的数字货币应用领域,当用户A和用户B进行交易,如:用户A发送一张现金支票给用户B时,
[0109] 用户A调用客户端加密芯片里的签名协议,对现金支票进行签名,其中:现金支票包括:用户A账号、用户B账号和现金支票额度,用户A对现金支付进行的签名过程:
[0110] 用户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明文;
[0111] 在用户A客户端加密系统,在加密芯片里,调用摘要算法对现金支票进行摘要,得到摘要信息L1,将密钥Ka作为用户A客户端的签名密钥QK,对摘要信息L1进行加密得到摘要信息L1的密文即:用户A对现金支票的数字签名,再用用户B的密钥Kb,来对现金支票进行加密得到现金支票的密文,用户A客户端加密系统,将现金支票的密文,以及相关参数:用户A的账号、用户B的账号、时间戳1和随机数1,时间戳,2和随机数2,摘要信息L1、用户A对现金支票的数字签名、一并发送给各个节点服务器端,所有节点服务器端,都将现金支票的密文以及相关参数,分别收入各自的一个区块里,每个节点服务器端加密系统,分别对用户A签名的现金支票进行签名验证,具体验证过程如下:
[0112] 首先,每个节点服务器端加密系统,根据用户A的账号取出“密钥种子”数据库中对应的“密钥种子”表a元素的密文,在每个节点服务器端加密芯片里,用“存储密钥”K解密“密钥种子”表a元素的密文,得到“密钥种子”表a元素的明文,根据时间戳1和随机数1组成的组合密钥生成算法,对“密钥种子”表a元素进行选取,生成用户A的签名验证密钥Ka1,来解密用户A对现金支票的数字签名,得到摘要信息L2,通过对比摘要信息L1和L2是否相同,来判别用户A的签名是否可信,若签名验证未通过,则用户A发给用户B的现金支票无效,若签名验证通过,则用户A发给用户B的现金支票可信;同时,每个节点服务器端根据权限管理系统系统,登录用户A的账号,查询余额是否大于或等于现金支票的数额,若查询未通过,则用户A发给用户B的现金支票无效,否则,用户A发给用户B的现金支票真实、可信,每个节点服务器端加密系统,都将现金支票的密文以及相关参数写入一个区块中;
[0113] 在经过时间T后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间T内所有通过签名验证的现金支付密文,以及相关参数记录在区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息M,其他节点服务器端验证该区块的摘要信息M,通过验证后也在其他所有节点服务器端记录该区块,其中:其中:用户A发送给用户B的现金支票是以密文形式传输,并以密文形式存储在区块中,只有用户B才能对用户A发送的现金支票进行解密,并使用该现金支票,而其他用户无法使用用户A发送给B的现金支票,从而,完成用户现金支票登记的区块链应用。
[0114] 18、在用户的客户端加密芯片里,写入摘要算法,签名协议,在节点服务器端和密钥管理服务器端加密芯片里,都不写入摘要算法和签名协议,因此,只容许用户客户端加密系统才能对合同、账本记录或交易单进行签名,而节点服务器端和密钥管理服务器端,都不能对用户的合同、账本记录或交易单进行伪造签名,从而,保证区块链签名系统的安全可靠。
[0115] 19、采用“垂直认证”技术建立区块链安全体系,是“垂直认证”技术在区块链领域的应用,是一种转移性发明;采用组合密钥生成算法实时产生认证、签名和加密密钥,都一次一变,同时,在用户的客户端、节点服务器端和密钥管理服务器端,都部署加密芯片里,建立“芯片级”的认证架构,实现“芯片”对“芯片”的身份认证协议、签名协议和签名验证协议,从而,建立一种“芯片级”可信区块链系统,可大幅度提高区块链的安全等级。
[0116] 20、基于单钥密码算法建立签名/签名验证协议,可充分发挥单钥密码算法具有加/解密速度快,能大大提高区块链节点服务器端并发签名验证的效率,对比PKI能提高区块链认证速度100倍,对比PKI能提高区块链签名验证速度200倍,解决现有区块链系统每秒只能完成7笔交易,运行效率较低的难题,同时,有效降低节点服务器的建设成本。
[0117] 21、客户端、节点服务器端和密钥管理服务器端,都是通过时间戳和随机数的交换来实时完成密钥的交换,实现密钥由组合密钥生成算法实时产生,从而,解决单钥密码算法密钥更新管理的难题,充分发挥单钥密码算法抗集团攻击能强的优点,提高区块链的安全等级。
[0118] 22、每个用户对应的“密钥种子”,两两不同,一个用户的“密钥种子”不慎泄露,不影响其他用户“密钥种子”的安全,密钥管理服务器端和节点服务器端的“密钥种子”数据库,采用相同的存储密钥K,分别加密全体用户“密钥种子”,即能保证全体用户“密钥种子”的存储和运行安全,也利于密钥管理服务器端和节点服务器端“密钥种子”数据库记录的便捷管理。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈