周 亮 应 欢 戴 波 邱意民
1(中国电力科学研究院有限公司 北京 102211)2(国网浙江省电力有限公司 浙江 杭州 310007)
随着信息网络的不断发展,电子商务作为新兴商业模式迎来的爆炸式增长。以中国为例,2017年市场规模已达24万亿[1]。在“互联网+”的大背景下,电子商务在国民经济中的地位会越来越高。
然而在电子商务给社会带来巨大变革的同时,其安全性面临着严重的威胁。电子商务安全体系建设主要包含四个方面:1) 数据传输的安全性,通常采用数据加密技术或数字信封技术实现;2) 数据完整性,通常采用哈希函数或数字签名技术保障;3) 身份验证,主要采用口令技术,双因子认证以及数字证书;4) 交易不可抵赖,通过数字签名和数字证书保证。这些都是信息安全领域传统的并且成熟的技术,但是无论是数字签名还是数字证书,都要依托公钥基础设施(Public Key Infrastructure, PKI)[2]实现。在PKI中,由证书认证中心(Certification Authority,CA)签发数字证书(简称证书),绑定用户的身份信息和公钥。传统电子商务安全技术无法有效应对移动计算环境和分布式网络环境带来的两方面的挑战。
针对移动计算环境,Shedid等[3]分析了电子支付安全协议SSL和SET。研究表明,这两个协议本身具有安全漏洞,会受到中间人攻击和重放攻击的威胁。Wei[4]提出引入可信第三方,保证身份和交易认证过程的数据安全,但是维护可信第三方具有工程实现方面的难度。Hassinen等[5]设计了基于PKI的支付认证系统,并给出了系统的安全性证明。但是PKI体制是一种依托可信第三方的体制,存在证书维护以及密钥托管的问题。刘明达等[6]提出了基于手机令牌的移动支付协议,但是仅面向移动支付环境,无法推广到电子商务的其他应用场景。
目前电子商务的网络环境已经呈现出分布式的特点,电商平台多,参与用户多,集中化的身份管理机制繁琐且困难,传统的身份认证体制已不能完全满足电子商务的需求。目前,PKI系统在分布式环境下面临的最大的挑战是CA不可信的问题[7]。CA不可信主要包括三种情况:1) CA被黑客攻击,导致中间人攻击的问题;2) 用户无法验证CA签证的过程,导致证书不透明的问题;3) 中心化CA故障,导致所有证书不可用。针对分布式环境下PKI系统的构建问题,相关研究者同样展开了大量的研究工作,其中最具代表性的是文献[8-9]提出的Certcoin和文献[10]提出的CertChain,都是基于区块链技术构建分布式的PKI系统。任彦冰等[11]提出了一种基于区块链的分布式物联网信息管理方法,改变了依托可信第三方的信任管理模式,但是面向的是物联网环境,并不能直接用于电子商务。
为了解决分布式网络环境下电子商务系统的身份认证问题,在上述的研究基础之上,本文提出了一种基于区块链的可信电子商务身份认证系统。一方面,引入区块链技术,解决中心化的CA面临的风险;另一方面,引入基于无证书密码体制,克服中心化环境面临的密钥托管问题,降低中心化的风险;最后基于可信执行技术,提高密码计算的环境安全,增强身份认证的安全性。本文的贡献如下:
(1) 提出基于区块链的电子商务身份认证体系;
(2) 第一次将区块链与无证书密码结合,提出分布式的身份管理方法和身份认证协议;
(3) 基于可信执行技术的身份验证环境构建。
区块链[12-14]本质上是一个状态机副本协议,属于分布式容错研究领域的问题。区块链旨在建立一个去中心或弱中心化的数据库系统,实现分布式环境下安全高效的共识机制。除了数字货币之外,区块链能够适用于在多方不信任中心之间建立互信的应用场景。
典型的区块链系统由网络层、共识层、数据层、智能合约层和应用层组成。其中:网络层通常是基于P2P协议进行节点之间的通信,并通过Gossip等协议加速消息扩散;共识层实现共识协议,协议可以是根据实际场景自由选择,比如基于工作量证明PoW,基于权益证明PoS以及实用拜占庭协议PBFT[15];数据层是区块链的数据结构,每一个数据库通过哈希函数,建立链式的数据结构,每一个计算节点负责维护自己的存储系统;智能合约层[16]能够对于不同的数据输入执行不同的操作,这个过程依托代码自动执行,并在全网达成共识;应用层是区块链系统的各种基本业务,比如金融服务、保险业务等。
无证书密码体制[17]不需要公钥证书,是一种节约PKI体系和基于身份的密码体制之间的一种密码体系。在密码系统中,通常都会维护一个密钥生成中心(Key Generating Center,KGC),提供密钥生成服务。无证书密码体制中的KGC同样用于协助双方生成公私密钥对,不同之处在于,KGC只拥有部分私钥,并不拥有全部私钥。用户需要根据自己随机选择的秘密值生成完整的私钥,而公钥由用户的秘密值、身份核系统参数计算得出。这样的优势在于,能够降低KGC本身的安全强度要求,降低其工程实现的难度,简化认证协议。
无证书签密是基于无证书密码体制的签名和加密技术,能够实现通信双方的加密和数字签名。以Barbosa和Farshim[18]提出的无证书签密方案为例概括无证书签密的基本原理,本文的重点在于使用无证书签密,所以只进行概括性描述。KGC计算用户的部分私钥Du,用户随机选择xu,作为秘密值。用户可以计算出私钥Su=(Du,xu),公钥PKu=xuP。Alice对消息m进行签密,得到密文σ=(V,c,W)。当Bob收到σ时,只需要验证等式是否成立,就可以验证签名并解密得到m。在认证的过程中,通信双方都基于无证书的原理生成公私密钥对,而验证成功的前提是双方都拥有各自的正确公钥。等式如下:
e(W,P)=e(QA,Ppub)e(H3(V,c,IDA,PKA),
V)e(H4(V,c,IDA,PKA),PKA)
密码需要安全可信的计算的环境才能保证其安全。可信执行环境[19](Trusted Execution Environment,TEE)近年来也得到了广泛的关注。和传统系统结构安全技术不同,可信执行技术的核心思想是以CPU作为信任根,建立从信任根直接到应用程序的信任链。
TEE目前有两种技术路线:ARM Trustzone[20]和Intel SGX技术[21]。Trustzone主要面向嵌入式计算领域,能够在SOC内部虚拟出两个计算环境:安全计算环境和普通计算环境。而SGX基于Intel CPU,主要面向终端和云计算领域,支持CPU直接到应用的信任传递。针对可信执行的研究是系统安全的热门研究方向。SGX支持远程证明功能,能够互相证明程序正运行在受SGX保护的环境中。崔晓煜等[22]提出了一种基于Trustzone的密钥管理机制,保证嵌入式设备中的密钥安全。杨霞等[23]提出了基于Trustzone的安全指纹识别技术,提高安全验证过程的安全性。严飞等[24]提出了一种基于SGX的可信环境安全增强方案,能够增强代码和数据安全。Arnautov等[25]提出了SCONE系统,基于SGX技术保护Docker容器的安全,使容器内进程免受外部攻击。基于上述研究可知,在安全系统设计中,如果有涉及安全的代码和数据需要高可信的运行环境,那么根据计算终端的形态,可以选择Trustzone或SGX予以保护。
方案的总体框架如图1所示。
图1 总体框架
该方案由分布式的密钥生成中心(Distributed Key Generating Center,D-KGC)、商家(Merchant,MC)、电商平台(E-commerce Platform,EP)和用户(User)组成。其中:D-KGC是密钥生成机构,是一个基于区块链系统的分布式密钥生成中心;MC是参与电子商务系统的商家,可以是大型商家,也可以是个体商家;EP是电商平台,如京东、淘宝和亚马逊。
本节对协议的运行基本流程进行描述,如图2所示。
图2 协议流程
协议分为三个主要的阶段:注册阶段、认证阶段1和认证阶段2。认证阶段1指的是电商平台和商家之间的认证,两端的计算平台是计算机或服务器,能够实现基于SGX技术的远程证明。阶段2指的是电商平台和用户之间的认证,如果用户使用的计算机,那么认证过程和阶段1相似,都可以基于SGX技术增强认证过程的安全性;如果用户使用的是移动终端,那么只能基于Trustzone技术对密码运算过程进行额外的保护。
• 注册阶段:
(1) 各参与方与D-KGC协同计算,得到公私密钥对,其中D-KGC负责存储保护无证书密码的部分私钥,以及负责分发公钥。
• 认证阶段1:
(2) EP和MC之间发起互相的身份认证。
(3) EP和MC调用SGX的远程证明机制,互相证明各自的密码运算环境均受到SGX安全机制保护。
(4) EP和MC去D-KGC获取对方的公钥。
(5) EP和MC构造无证书签密的消息,并发送。
(6) EP和MC验证消息,完成身份认证过程。
• 认证阶段2:
(7) EP和User之间发起互相的身份认证。
(8) EP和User去D-KGC获取对方的公钥。
(9) EP和User构造无证书签密的消息,并发送。
(10) EP和User验证消息,完成身份认证过程。
为了实现2.2节中的协议流程,需要进行三个部分的设计,也是身份认证系统的核心。分布式的身份管理:研究如何基于区块链构建一个分布式的密钥生成中心,并维护和管理用户的部分私钥和公钥。基于无证书签密的身份认证:研究如何将身份认证和无证书密码结合,实现不基于可信第三方的快速身份认证。可信的身份验证环境:研究如何合理运用SGX和Trustzone强大的安全机制,提高电子商务的安全。
2.3.1分布式的身份管理
分布式的身份管理如图3所示。
图3 分布式的身份管理
密钥生成中心是一个基于区块链的分布式的系统,这里的设计参考CertChain[10]的思路。D-KGC的主要功能有两个:生成无证书密码的用户部分私钥;管理和分发公钥。下面对分布式身份管理的核心设计进行描述。
1) 用户公私钥生成与管理。用户User_A随机向D-KGC的一个服务器Server_A发送密钥注册申请DuReq={UserID,Information}。Server_A收到注册申请后,发布智能合约,将User_A的申请共识到D-KGC的其他节点。假设此时区块链的记账节点是Server_B,此时Server_B运行密码算法,生成User_A的部分私钥,并打包到区块中,写入区块链系统。记账节点的选取和共识机制相关,如PoW共识采用挖矿,而PoS基于权益。此时,Server_A检索到部分私钥已生成,并发布到区块链上,随机将部分私钥Du发送给User_A。
User_A收到部分私钥Du后,运行密码运算,生成自己的公钥PA和完整的私钥SA。其中,私钥SA需要用户自己妥善保存,本文的设计是基于可信执行环境。公钥发送回D-KGC进行管理与分发。
2) 公钥管理与分发。Server_A收到User_A计算得到的公钥PA后,运行共识机制,将公钥分发给D-KGC的其他服务器,并由记账节点写入区块链系统。
当电子商务系统中的其他实体申请User_A的公钥时。假设电商平台EP向D-KGC的Server_C申请公钥。此时,Server_C根据申请返回公钥给EP,但同时将访问信息广播出去,由记账节点写入区块链系统。这样能够建立基于区块链的可信的审计证据,及时发现异常行为。
3) 区块链数据结构设计。和常见的区块链系统类似,本文的区块链数据结构设计同样采用哈希链的方式,构成一个不可篡改的数据结构。在每一个区块中,包含区块头和区块体。区块头的核心是记录前向区块、记账节点和哈希根。区块链是数据记录的主体,这里的记录有多种,如部分私钥、公钥、查询历史以及用户信息等。
2.3.2基于无证书签密的身份认证
身份认证是电子商务系统各参与方在执行交易之前,互相确认对方具有合法身份的过程。既要实现加密通信,又要进行数字签名,以验证各自的身份。Barbosa和Farshim提出的无证书签密协议(以下简称为BF协议)本身具有加密和签名两个层面的功能,能够通过一条消息实现两种功能。问题的核心在于,如何构造BF协议传输的信息。基于无证书签密的身份认证过程如图4所示。
图4 基于无证书签密的身份认证
Step1MC/User发送连接请求到EP;
Step2EP收到连接请求,并发送回执到MC/User;
Step3EP和MC/User随机选择D-KGC服务器,申请对方的公钥;
Step4D-KGC发送公钥给申请方;
Step5MC/User使用自己的公私钥和对方的公钥,构造BF无证书签密消息M1;
Step6MC/User将消息M1发送到EP进行验证;
Step7若EP验证通过,则EP构造BF无证书签密消息M2;
Step8EP将M2发送到MC/User进行验证;
Step9若验证通过,则建立交易连接。
在消息的构造时,需要引入随机数和时间戳,用于对抗重放攻击,这也是密码协议常用的思路。首先让电商平台验证用户或商家的身份,验证通过以后再进行反向认证。这样设计的原因是,电商平台的可信度更高,被攻破的难度更大,能够有效对抗针对电商平台的拒绝服务攻击。
2.3.3可信的身份验证环境
可信的身份验证环境如图5所示。
图5 可信的身份验证环境
1) 基于SGX的可信验证环境。在本文的设计中,处理器支持SGX硬件安全扩展,能够创建Enclave。EPC是内存上的特殊区域,用于存放Enclave实例的代码和数据,这一部分数据只有在CPU的内部才以明文的形式出现。在内核层,SGX驱动用于创建应用层的Enclave,修改Enclave页面或删除。在设计SGX程序时,程序从逻辑上可以分为可信部分和非可信部分。在本文的系统中,可信部分执行和密码相关的机密性操作,如密码运算、密钥管理以及远程证明过程。可信部分和非可信部分之间具有严格的隔离,不能够直接进行数据交互,只能通过特定的接口进行交互。SGX提供了远程证明机制,能够使得通信双方的应用程序能够互相确认各自都运行在Enclave中,增强互信。
2) 基于Trustzone的可信验证环境。Trustzone技术同样是提供基于硬件的可信运行环境,但是实现原理和SGX不同。处理器支持Trustzone安全扩展,能够在处理器内部虚拟成可信核与普通核,进而支持运行在两个系统核上的普通操作系统和安全操作系统。Trustzone没有提供远程证明机制,所以在本文的设计中,移动终端在调用可信执行时,仅对密码运算和密钥管理两个功能模块进行保护。
原型系统旨在验证本文提出的身份认证系统的可行性,在提供高安全性的同时,具备良好的效率。原型系统的组成结构如图6所示,主要由三部分构成,具体实现如表1所示。由于完整的系统涉及的技术多,工作量大,本文只进行核心部分的实验。
图6 原型系统构成
分系统名称模块构成环境搭建分布式密钥管理系统区块链Hyperledger Fabric 1.1物理环境浪潮英信服务器NF5270M4,Intel CPU E5-2603V4,虚拟机管理器VMware12,虚拟机Ubuntu 18.04.1。数量:5个虚拟机组成分布式密钥管理系统
续表1
首先,对D-KGC的基本性能进行测试,即区块大小,共识速度以及交易吞吐量。根据Fabric 1.1[26]的性能测试结论,当区块大小为2 MB时,吞吐量和时延的表现最优。测试结果表明,在共识节点数量为5时,区块链的共识效率能够达到约5 000 TPS。在更大规模的应用中,节点数量会更多,根据Fabric 1.1本身的测试结果,当节点数目为32时,也能够达到3 000 TPS。总之,在Fabric的架构下实现的分布式的身份管理系统,不仅能够实现身份准入,同时能够提供足够的性能支撑。
然后,对基于无证书的身份认证过程进行性能测试与分析。认证的时间消耗主要由通信开销和密码计算开销构成,而通信开销主要有网络质量决定,非本文的研究内容。所以,本实验将身份认证过程分解为3个阶段:(1) 密钥获取阶段;(2) 签密信息构造阶段;(3) 签密信息验证阶段。利用每一个阶段的时间节点测算时间差,经过3轮测试,记录各环节的时间开销。由于无证书密码的运算量大,所以会产生更多的时间开销。同时,移动终端的计算能力低于PC机的计算能力。在PC机上测试的性能如表2所示。在移动终端的测试结果显示,第一阶段和PC机上的性能相似。而第二第三阶段涉及密码运算,运算时间约增加40%。
表2 认证过程耗时测试 ms
接着,对身份认证的并发数量进行分析,即认证数量和性能的关系。从三个场景展开分析:(1) D-KGC支撑并发认证的能力;(2) 商家与电商平台之间并发认证能力;(3) 用户和电商平台之间的并发认证能力。针对场景1,无证书密码的引入克服了密钥托管的问题,D-KGC只需在用户注册阶段生成公私密钥,并负责公钥分发的工作,这大大降低了密钥中心的负担。在系统运行过程中,参与认证的双方只有在第一次认证的时候,才需要去D-KGC申请对方公钥,所以大部分身份认证过程D-KGC都无需参与。从这一角度,大量的认证过程不会为D-KGC带来过多的负担。针对场景2和场景3,电商平台面对的是大量的用户和商家,认证的数量和性能取决于电商平台的网络带宽和计算能力。通过在商家和用户开启多线程的方式模拟大量用户并行认证的过程,结果表明,在未对电商平台产生DDoS攻击[27]效果前,单线程的身份认证效率并未随线程增多而明显降低。在分布式系统中,计算能力可以依靠增加计算设备解决,网络带宽实际上是系统的瓶颈。无证书密码的引入极大减少了与传统认证中可信第三方的通信交互,实际上节约了大量的带宽资源,同等硬件环境下,能够支撑更大的访问量。
最后,进行可信执行环境的效率分析。针对密码运算和密钥管理模块,在普通操作系统环境和可信执行环境(SGX和Trustzone)中进行对比实验,结果表明,调用密码模块增加的系统开销不超过10 ms。对基于SGX的远程证明的过程进行实验,结果表明,基于SGX的远程证明的过程的时间开销不超过50 ms。总之,基于可信执行技术对密码和认证过程进行保护,增加的时间开销较低,具有很强的可行性。
基于区块链的可信电子商务身份认证系统具有以下核心安全特性:
(1) 密钥管理去中心化。由于引入了区块链技术和无证书密码体制,有效规避了传统的身份认证过程面临的中心化固有安全缺陷。和当前基于区块链构建PKI系统的研究相比,本文提出区块链和无证书密码结合的密钥管理机制,具有更强的安全优势。前者是将单点化的可信中心变为分布式的可信中心,解决了单点失效的问题。本文进一步将分布式的可信中心转变为分布式的可信弱中心,进一步降低了密码系统的中心化程度。
(2) 可信的密码运算环境。本节进行了安全性的实际测试,从Trustzone和SGX两种技术入手进行攻击性分析。首先针对Trustzone,构造一个恶意APP程序,尝试攻击密码运算模块,读取相应的内存位置,以获取密钥。实验结果表明,运行在普通世界的APP无法调用安全世界的程序模块,也无法读取相应的内存。在实际的应用场景中,有权限调用安全世界的程序是需要经过硬件厂家签名认证的,普通恶意程序难以获取这样的权限。针对SGX,尝试从逆向分析的角度展开,用OllyDBG这一款调试分析工具对PC端的身份认证程序进行反汇编。实验结果表明,受到SGX机制保护的代码段是无法成功反汇编得到汇编程序的。程序运行到SGX保护的代码时,会直接跳过。
针对电子商务环境面临的身份认证安全问题,本文提出了一种基于区块链的可信电子商务认证系统。系统融合了信息安全领域的最新技术,即区块链、无证书密码和可信执行技术,构建了完整的身份认证体系,有效增强了认证的可信度。实验表明,该方案安全高效,具有很强的可行性。接下来将进一步研究区块链和无证书密码结合过程中面临的密钥撤销问题。