◆徐冠宁 赵桂芬
(1.北京市科学技术情报研究所 北京 100044;2.网络密码认证北京市重点实验室 北京 100044)
目前,国内外的区块链都是采用公钥体系(如:PKⅠ)来实现,但是,由于公钥算法运行效率较低,造成现有区块链运行速度较慢,如:比特币每秒只能完成7 笔交易,这影响并阻碍了区块链实现规模化并发交易的应用,同时,用户的私钥容易被黑客获取,其安全等级较低,造成现有区块链的安全事件频发,如:比特币每半年就出现一次信息安全事件,给用户带来较大损失,总之,现有的区块链技术产品不能满足市场的需求。
近几年,区块链技术也在进行安全升级,陆续为用户客户端提供带CPU 芯片的U 盾,带CPU 芯片的U 盾是采用价格低廉的加密芯片,将用户的私钥放在U 盾的芯片里。但是,这些廉价的CPU 芯片安全等级较低,容易被不法分子通过破坏性解剖拿到用户的私钥,再来克隆用户的U 盾,盗取用户账户里的资金。即使在客户端为用户提供的是合规的U 盾,而PKⅠ技术的公钥是以明文形式存储在网络公钥服务器中,也容易受到黑客的攻击。
为一劳永逸彻底解决现区块链的安全问题,我们提出一种基于“垂直认证”技术的区块链安全升级方案,其中:“垂直认证”技术是基于“密钥种子”集中生成,集中灌装,集中分发,集中销毁,并采用单钥密码算法(SM1 或SM4 算法)和组合密钥(CSK,combined secret key)生成算法,实现单钥密钥一次一变,建立认证、签名和加密协议,在客户端为用户提供合规的加密芯片(如:U 盾或手机端TF 卡、SⅠM 卡),在加密芯片里写入认证、签名和加密协议,在节点服务器端嵌入带加密芯片加密硬件设备,在加密芯片里写入认证、签名验证和解密协议,建立“芯片”对“芯片”的签名协议,且签名密钥一次一变,亦即:新一代签名协议,采用单钥算法建立区块链的安全体系,对比公钥体系安全性较高,且并发认证的速度大约能提高100 倍,并发签验的速度大约能提高200 倍,可以解决目前存在的区块链安全体系漏洞而带来的资金被盗的问题。
区块链系统存在多种安全隐患,我们这里主要是阐述采用公钥体系建立区块链数字货币系统存在的安全隐患。
区块链数字货币交易系统是采用公钥算法(如:PKⅠ)建立安全架构,PKⅠ已经问世近30 年了,PKⅠ采用公钥体系建立认证体系,即:采用公钥算法(公钥密码算法如:RSA 或ECC),实现身份认证、数字签名和密钥交换,并采用单钥密码算法(如:SM1、SM4等)实现数据的加/解密。
1.1“软钱包”存在的安全隐患
所谓“软钱包”就是采用软件方式开发的认证协议,如:软件开发的PKⅠ认证/签名协议,实现身份认证后登录用户的账号(钱包),通过签名协议对支付单进行签名。软件开发的PKⅠ认证/签名协议,存在安全隐患。
(1)“软钱包”容易被破解,黑客可以通过病毒获得用户在客户端(PC 机或手机等)中的私钥,再使用盗来的用户私钥登录用户的钱包,从而,盗用数字货币,其中:私钥就是一串数字,如:RSA算法的密钥对的长度为1024、2048、4096 比特;ECC 算法密钥对的长度为256 比特。
黑客还可以篡改数字货币社区公钥服务器中的用户证书,其中,证书含:用户标识、实体证书公钥、中级证书公钥、根证书公钥,以及上一级证书的私钥对下一级证书的数字签名等,即:黑客使用伪造的证书来替代用户存储在公钥服务器中的证书,黑客采用自己的私钥来通过身份认证协议登录用户的钱包。
(2)“软钱包”受攻击的原理,在建立“软钱包”的过程中,公钥密码算法(如:RSA 或ECC 算法)是公开的,PKⅠ身份认证协议(双向认证、单向认证、或挑战/应答式认证)是公开的,数字签名的协议是公开的,证书(含:公钥)也是公开的,且能在数字货币社区的证书服务器里下载。可见,除了用户的私钥,所有的认证/签名协议及其数据黑客都知道。黑客可伪造一组密钥对和证书,在客户端采用伪造的私钥,对证书和一组随机数进行加密(举例:挑战/应答式认证协议),生成认证口令,数字货币社区的证书服务器对应黑客伪造的证书,对口令进行认证,实现黑客登录用户的账户(钱包)。
同时,黑客在客户端,采用伪造的私钥对数字货币的交易单进行签名,数字货币社区的证书服务器对应黑客伪造的证书(含:公钥),对交易单的数字签名进行签名验证,从而,完成数字货币的交易,盗用用户的数字货币。
通过以上攻击方式,黑客可以实现“张冠李戴”式攻击进入用户的账户(钱包),从而盗取用户钱包里的数字货币。
1.2“硬钱包”存在的安全隐患
(1)所谓“硬钱包”就是采用PKⅠ建立认证/签名协议,在用户的客户端使用U 盾(智能卡加密芯片)或带加密芯片的SD 卡(插入手机里),将密码算法、摘要算法、私钥、证书、身份认证协议和数字签名协议存放在U 盾或SD 卡中,用户使用U 盾或SD 卡硬件设备,实现身份认证后可登录用户的账号(钱包)。
数字货币交易所采用“硬钱包”,要比“软钱包”安全等级高得多。但是,为数字货币交易所提供PKⅠ服务的开发商,若采用劣质U 盾芯片,造成智能卡中被封装的芯片容易受到黑客破坏性破解,读出芯片里用户的私钥;或者,用户丢失U 盾或SD 卡后,通过设备初始化生成的记忆,重新将相同的私钥写入新U 盾或SD 卡的过程中,造成用户的私钥外泄。
总之,劣质的U 盾或SD 卡容易被破解,用户的私钥会被读出,无法保证“硬钱包”的安全。
(2)“硬钱包”与“软钱包”一样,存储在数字货币社区公钥服务器上的用户证书容易受到黑客攻击,即使用户不将自己的证书(含:公钥)存储在数字货币社区公钥服务器上,黑客也容易在节点服务器端获得用户的证书(含:公钥)。黑客通过伪造用户证书(公、私钥),来替代用户的证书(含:公钥)(存储在公钥服务器中),黑客采用自己的私钥来通过身份认证协议登录用户的账户(钱包),并对交易单进行数字签名来盗取用户的数字货币。
目前,数字货币交易系统的节点服务器端,处理区块链数字货币交易记录为:7 笔/秒。数字货币交易系统的区块链,是使用公钥算法建立认证体系如:PKⅠ,数字货币社区的证书认证服务器,并发认证或并发签验的速度都较慢,直接制约了数字货币交易系统的效率,无法支撑较大量用户的并发认证,或较大量支付单的并发签验。
ⅠBM 曾经发出豪言壮语:他们公司开发的区块链,节点服务器处理交易记录的速度能达到:10000 笔/秒。但是,每个节点端的设备成本他们没有阐述。
因此,若想提高节点端交易速度,只能不断增加节点端服务器设备的投入,从而,增加了数字货币交易所建立数字货币区块链系统的成本。
“垂直认证”技术的定义:密钥集中生成,集中灌装,集中分发,集中注销。“垂直认证”技术的特征:是采用单钥算法如:SM1、SM4、AES 算法,完成身份认证、数字签名、密钥交换和数据加密4 个功能。国际通用“第三方认证”技术如:PKⅠ,是采用公钥算法(如:ECC或RSA),与单钥算法(如:SM1 或SM4)相结合,完成身份认证、数字签名、密钥交换和数据加密等4 项功能。
“垂直认证”技术是在认证中心端使用硬件设备作为仲裁者,使用组合对称密钥生成算法,实现认证、签名和加密密钥,一次一变,解决了单钥算法的密钥更新管理的难题,其中:采用组合密钥生成算法更新密钥,是一种智能合约式密钥更新方式,PKⅠ是人工更新密钥方式。
客户端采用获得国家密码管理局颁发商密产品证书的U 盾或SD卡,该U 盾或SD 卡、SⅠM 卡通过密码管理局商密产品测试中心的安全检测,认证/签名协议和密钥数据不能被读出,可抗破坏性解剖分析,U 盾或SD 卡中芯片的安全得到保证。或者,与芯片厂商深入合作,在U 盾或SD 卡芯片的ⅠP 内,写入“垂直认证”技术的组合密钥生成算法和认证、签名和加密协议(国密算法SM1、SM2、SM3、SM4 算法,也写入芯片的ⅠP 核中),其中:采用SM1 保密算法(算法不公开),芯片的ⅠP 核可以保证各种密码算法、协议和密钥数据的运行和存储安全。
在客户端嵌入加密芯片如:U 盾或SD 卡、SⅠM 卡,在客户端加密芯片里写入单钥算法、摘要算法、组合密钥生成算法、一组“密钥种子”表i 的元素、身份认证协议、签名协议、加密协议、解密协议,从而,建立“芯片级”区块链的客户端。
在区块链系统中建立j 个节点,在节点的服务器端部署加密芯片硬件设备,写入单钥算法、组合密钥生成算法、一组“存储密钥”K、身份认证协议、签名验证协议、解密协议,在节点服务器端建立“密钥种子”数据库,将全体用户的标识、账号、“密钥种子”表i 的元素密文,一并存储在节点服务器端的“密钥种子”数据库中,从而,建立“芯片级”的区块链节点(见下图),其中:分别用“存储密钥”K,加密全体用户的“密钥种子”表i 元素,j=100~10 万,j 为区块链全部节点的总数。
图1 数字货币交易区块链系统拓扑图
在区块链系统中建立1~3 个密钥管理服务器,在密钥管理服务器端也部署加密芯片硬件,在加密芯片里写入单钥算法、一组“存储密钥”K、组合密钥生成算法、加密协议,在密钥管理服务器端建立“密钥种子”数据库,将全体用户的标识、账号、对应的“密钥种子”表i的元素密文,一并存储在密钥管理服务器端的“密钥种子”数据库中,从而,建立“芯片级”的区块链的密钥管理服务器(见图2),其中:用“存储密钥”K,分别加密全体用户的“密钥种子”表i 元素,i=1~n,n≤20 亿,n 为全体区块链用户总数,不同节点服务器端和密钥管理服务器的“存储密钥”K,都两两相同。
图2“芯片级”的区块链的密钥管理
(1)组合密钥生成算法,是由一组时间戳和随机数组成的选取参数,来对一组“密钥种子”表的元素进行选取,将选出的Y 个元素,并合成一组认证密钥RK、签名密钥QK,或加密密钥JK,因为,区块链加密系统采用单钥算法,则:客户端的认证密钥RK=节点服务器端的认证密钥RK,签名密钥QK=签名验证密钥QK,加密密钥JK=解密密钥JK,其中:Y=16 或32,认证、签名和加密密钥一次一变。
(2)当用户客户端的加密芯片丢失时,由密钥管理单位负责更新用户客户端加密芯片,在新的加密芯片里写入一组新的“密钥种子”表元素,其他内容与原用户客户端加密芯片里内容完全相同,同时,更新密钥管理服务器端的“密钥种子”数据库里对应用户的记录,再由密钥管理服务器端加密系统,对所有节点服务器端的“密钥种子”数据库里对应用户的记录进行自动更新。
(1)当用户A 支付一笔款给用户B 时,用户A 和用户B 客户端加密芯片里的签名协议,根据组合密钥生成算法,分别产生用户A的签名密钥QKa 和用户B 的签名密钥QKb,对用户A 和用户B 的交易单进行签名,所有节点服务器都将已被用户A 和用户B 签名的交易单,分别收入一个区块里,每个节点服务器端加密芯片里,根据组合密钥生成算法,分别生成用户A 的签名验证密钥QKa1 和用户B的签名验证密钥QKb1,对已经被用户A 和用户B 签名的交易单进行签名验证,若通过签名验证,则各个节点服务器端加密系统,将用户A 和用户B 的交易单写入区块中,否则,则用户A 和用户B 的交易单无效。
在经过时间T 后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间T 内所有通过签名验证的交易单登记在一个区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对本区块进行摘要得到摘要信息M,其他节点服务器端加密系统对摘要信息M 进行验证,通过验证后也在其他所有节点服务器端记录该区块,从而,完成用户之间的交易单在区块链里的登记。
(2)当用户A 发送一张现金支票给用户B 时,用户A 客户端加密芯片里的签名协议,根据组合密钥生成算法,产生用户A 的签名密钥QKa,对用户A 发送给用户B 的现金支票进行签名,用户B客户端加密芯片里的加密协议,产生用户B 的加密密钥JKb,将用户A 发送给用户B 的现金支票加密成密文,所有节点服务器都将已被用户A 签名和用户B 加密的交易单,分别收入一个区块里,每个节点服务器端加密芯片里,分别生成用户A 的签名验证密钥QKa1和用户B 的解密密钥JKb1,对已经被用户A 签名的现金支票进行签名验证,若未通过签名验证,则现金支票不可信,若查询通过,则用户A 发送给用户B 的现金支票有效,各个节点服务器端加密系统将用户A 发送给用户B 的现金支票写入一个区块中。
在经过时间T 后,各个节点服务器端加密系统,根据“共识算法”,确认某个用户对区块进行记账,将时间T 内所有通过签名验证的现金支票登记在一个区块里,智能合约将上一个区块的摘要信息写入本区块“头部”,形成区块链中的一个区块,并对该区块进行摘要得到摘要信息M,其他节点服务器端加密系统,对摘要信息M 进行验证,通过验证后,也在其他所有节点服务器端记录该区块,从而,完成用户现金支票在区块链的登记。只有用户B 才能调用自己的密钥,对用户A 发送给用户B 的现金支票密文进行解密,并使用该现金支票。
这样能实时产生认证、签名和加密密钥,一次一变。同时,在客户端、节点服务器端和密钥管理服务器端,都部署加密芯片里,实现“芯片”对“芯片”的身份认证协议、签名协议和签名验证协议,也是新一代数字签名协议,从而,建立一种“芯片级”可信区块链系统,可大幅度提高区块链数字货币应用系统的安全等级。
教科书阐述:在芯片里,单钥算法比公钥算法的运行速度快1000倍,在计算机内存里,单钥算法比公钥算法的运行速度快100 倍,这是公理。由此可见,采用单钥算法建立认证/签名协议,可充分发挥单钥算法具有加/解密速度快的优势,能大大提高区块链节点服务器端并发签名验证的效率。
PKⅠ技术签名和加密协议过程图如图3、图4。
通过对比“垂直认证”技术与PKⅠ的签名和加密协议的流程图,可见:PKⅠ多调用了2 次公钥算法,同时,多调用了2 种公钥,一次是加密数据文件的“摘要”(即:数字签名),一次是加密过程密钥K,实现过程密钥K 的交换。而“垂直认证”技术少调用2 次公钥算法,且少调用了2 次密钥(私钥和公钥)。
因此,“垂直认证”技术的并发认证/签验对比PKⅠ,大约能提高区块链认证速度100 倍,对比PKⅠ大约能提高区块链签名验证速度200 倍(详见4.3 测试报告数据对比)。采用新一代签名协议,能有效解决现有区块链系统每秒只能完成7 笔交易,运行效率较低的难题。
图3 PKⅠ技术签名和加密协议过程图
图4“垂直认证”技术的签名和加密协议过程图
经过权威的国内第三方产品性能检测,单座认证中心,可管理3亿用户,并发认证达到1228.50 次/秒,并发签名验证达到823.93 次/秒。
图5“垂直认证”技术的认证中心测试报告
由图5 可见:“垂直认证”技术产品,经过第三方权威部门的检测报告:可管理用户规模达3 亿,并发认证:1228.50 次/秒,并发签验:823.93 次/秒。“垂直认证”技术的技术性能,远远超过2020 年国家该领域的技术指标(见:“网络空间安全”重点专项2016 年度项目申报指南)。
用“垂直认证”技术的检测报告,来对比国家《“网络空间安全”重点专项2016 年度项目申报指南》中的认证技术指标,其中:并发认证的速度比PKⅠ快1000 倍有余,远远超过100 倍。由此可推算出,并发签验的速度比PKⅠ快200 倍以上。[注:《“网络空间安全”重点专项2016 年度项目申报指南》3.1 网络可信身份管理技术研究(重大共性关键技术类)考核指标:1.身份管理系统应支持亿级规模的身份管理,百万级并发、1000 个应用条件下,单个身份鉴别延时不大于3秒,身份鉴别应采用国产密码算法]。
总之,采用“垂直认证”技术建立区块链数字货币交易安全系统,通过组合密钥生成算法解决单钥算法密钥管理的难题,可实现认证、签名和加密密钥,一次一变。每个用户对应的“密钥种子”,两两不同,一个用户的“密钥种子”不慎泄露,不影响其他用户“密钥种子”的安全,并通过建立客户端、节点服务器端和密钥管理服务器端的“芯片级”认证、签名和加密协议,能提高区块链的安全等级。不法分子无法攻克新一代签名协议——签名密钥一次一变的“芯片级”签名协议。同时,“垂直认证”技术采用的单钥算法,具有加/解密速度快的优势,能提高区块链数字货币交易的效率,对比PKⅠ大约能提高区块链认证速度100 倍,对比PKⅠ大约能提高区块链签名验证速度200 倍,能解决现有区块链系统每秒只能完成7 笔交易,运行效率较低的难题。另外,“垂直认证”技术产品已经通过的国家密码管理局颁发的商密产品证书——《SRZ06 身份认证系统》和《SRT1101 数据签名验证系统》,技术合规且成熟,能较好应用于区块链领域,保证区块链系统运行安全高效。