基于区块链技术的云身份管理信任模型设计
2020-06-12朱曦吴浩
朱曦,吴浩
(中国人民解放军陆军军医大学 教研保障中心,重庆 400000)
随着科技的发展,云计算技术变得越来越重要,跨云身份管理已成为备受关注的领域,在应用程序迁移到云模型时,身份管理是一项巨大的挑战[1-3]。而联合身份管理(federated identity management,FIM)是解决这些问题最常用的方案,尤其对跨域问题[4-6]更为有效。这种方法通过使用跨域的单点登录功能简化了用户体验,并降低了管理用户帐户的成本。各个安全域之间的用户身份信息基于标准化协议联合交换,所有这些框架通常遵循一个相似的架构概念,即均涉及身份提供者(identity providers ,IdP)和服务提供者(service providers,SP),两者的结构称为信任圈,IdP和SP必须相互信任。特别是,IdP必须信任SP才能安全地处理用户的身份数据,而SP必须信任IdP才能正确认证待访问其服务和受保护资源的用户。虽然身份联盟是云计算中进行身份管理的一种方法,但其定义的信任模型较差,无法通过具有公钥基础结构的预配置信任锚列表进行手动管理[7-8]。在身份联盟模型中,信任是建立在业务协议的基础上的,而业务协议必须在交互发生之前设置好,从而形成封闭和孤立的区域,这种信任模型不适用于动态环境(例如云计算)。在动态环境中,应根据需要动态创建参与联盟的各方之间的信任,而不是由中央机构静态定义和手动管理。
研究普遍认为,分散的动态信任管理和安全、透明地使用用户的敏感数据及云服务至关重要。但是,身份联盟具有重大的安全性和跟踪风险,并且没有很好地保护用户隐私。在不同实体之间共享用户身份属性涉及未经用户同意而收集用户数据[9-10]。诸多研究表明,收集到的个人数据可能会被恶意的SP和IdP滥用,或遭到破坏,或以其他不当方式披露,这可能导致更高程度的信息泄漏。
由于云计算是一个高动态、多用户、不安全且开放的环境,因此这些问题在云计算中将变得更加复杂。FIM的上述缺点成为其在云计算中应用的主要障碍,由此产生了对具有改进安全性和隐私性的云身份管理方案的需求[11-13]。
近年来,区块链技术受到了互联网用户、研究人员等的广泛关注,其涉及的领域包括金融、医疗保健、物流和运输等。区块链最初被用作比特币的公共分类账,被视为一种分布式容错且受信任的数据结构,可以在对等点网络的成员之间复制和共享。区块链在结构上是由多个有序数据块串联而成的链式结构,其基本组成单位为区块。每个区块所包含的构成要素相同,大体上包括区块头和区块体两部分,其结构如图1所示。区块头对于区块链系统的形成至关重要,其主要作用是利用其中封装的前区块哈希值(Hash)将该区块与前面的区块(链)相结合,即可以此类推得到一个完整的区块链系统。区块链的透明性、分布式和可信任性质使得其能够开发不重复且不可伪造的数据分布式账本,这是许多成功应用程序(例如身份管理)的关键特征。与FIM方法相比,将这种新的信任技术与云身份管理相结合具有可观的优势,并且可以解决上文提出的一些问题。成诺[14]认为区块链为规范和加强身份管理提供了良好机遇,有助于提高云身份管理透明度和安全性。使用分布式共识协议可以防止恶意活动,例如重复支出、黑客攻击以及身份盗用和欺诈等等。此外,使用区块链消除中介机构可以降低云身份管理的成本、时间和复杂性[14]。所有这些特征表明,区块链技术可以满足云身份管理需求。
图1 区块链结构Fig.1 Blockchain structure
在过去的几年中,为了满足新的身份管理需求,出现了大量采用区块链技术的研究成果。Zyskind等[15]根据区块链技术提出了一种去中心化的个人数据管理平台。周亮等[16]提出了一种新的基于区块链的认证和信任管理模型(BATM),BATM区块链作为分布式数据库,用于存储身份验证公钥、数字签名和有关对等点的信息,所提出的框架有助于确保密码认证数据的有效性和完整性,并在分散的自组织网络区域中关联对等信任级别。熊方[17]提出了区块链在身份管理中的另一种应用,即一种新的公共分散身份验证方案(Certcoin),Certcoin提供了去中心化的公共密钥基础结构(public key infrastructure,PKI),以维护域及其相关公共密钥的公共分布式账本,该解决方案有助于缓解当前PKI中的许多问题。与传统方法相比,区块链在增强安全性和私密性方面很有潜力。然而,每个方案都是专门针对特定区域设计的,尚未将区块链用于云环境中的身份管理。基于以上原因,本文提出一种基于区块链的云身份管理信任模型,该信任模型允许云服务提供者(cloud service providers, CSP)以动态和分布式的方式自主管理其信任关系,而无需诸如IdP等集中管理机构,这使得云服务供应商和用户交互更加容易、安全和灵活。
1 模型架构设计
1.1 系统架构
解决方案中涉及的3个关键实体是云用户、云服务提供商(CSP)和信任管理平台(trust management platform,TMP),其作用分别说明如下:
(1)云用户:访问TMP中来自不同CSP的服务和受保护资源的实体。用户在TMP的一个或多个CSP中注册,TMP中的未注册用户必须注册以获得其数字身份。
(2)云服务提供商:CSP向云用户提供各种云服务和资源,用户的主CSP负责对用户进行身份验证。
(3)信任管理平台:TMP包含了由许多CSP组成的区块链网络。所有身份验证交易将以块形式记录,并由区块链节点(即CSP)进行验证。TMP是动态可扩展的,新的CSP可以在运行时自动加入。这样就可以在多个未知CSP之间进行快速无缝交互,而无需预先配置信任关系,从而显著提高云身份管理的可伸缩性和灵活性。
系统的核心思想如图2所示,具体过程如下:
图2 平台体系结构Fig.2 Platform architecture
用户欲访问TMP中未注册CSP的受保护资源和服务,此类CSP将被称为外部CSP。在这种情况下,外部CSP将用户重定向到主CSP,以执行身份验证。主CSP对身份验证请求进行验证并创建一个访问令牌,该令牌包含与用户帐户关联的身份信息。
令牌存储在区块链中,以证明这是用户拥有并由TMP中受信任的CSP发行的有效令牌,一旦令牌被验证并存储在区块链中,CSP将继续进行交易,并允许用户根据指定的访问权限访问受保护的资源;否则,CSP将停止交易并拒绝访问受保护的资源。当存在恶意节点时,每个节点位置在添加到区块链总账之前都要经过验证。为此,要求保护的节点除了发送其位置之外,还要发送相邻节点的列表。通过验证相邻节点列表,确定其是否在要求保护的节点附近即可排除恶意数据。
1.2 区块链结构
在本文提出的框架中,区块链被视为去中心化信任模型,该模型允许CSP无需依赖受信任的第三方(即IdP),就以分布式方式管理其信任关系,同时还可以用作公共共享分布式账本,用于存储交互的CSP之间的所有交易。交易用于创建和存储令牌,这些令牌对外部CSP的用户进行身份验证并保证其对受保护资源的访问。访问令牌Tokens(TKN)包含用户帐户u相关的身份信息,该信息由令牌的创建者Hcsp(即主CSP)定义并发送给接收方Fcsp(外部CSP),用户请求访问的受保护资源res由其地址Addr(res)标识。每个令牌最多对应一个交易信息TX,其结构如下所示:
TX=(TXID‖Nin‖Vin[]‖Nout‖Vout[]),
(1)
其中,TXID是交易的标识符,Nin和Nout为保存交易输入和输出的数量,而Vin和Vout分别为输入和输出向量。为了按时间顺序存储令牌,通过将前一交易的哈希值包括在当前交易的字段中来实现交易和彼此链接。TMP中CSP的标识和令牌的真实性由数字密钥、签名和地址来保证。每个CSP与一对密钥(prvcsp,pubcsp)相关联,其中prvcsp表示私钥,而pubcsp表示公钥。prvcsp用于创建称为sig的签名,该签名用于签署交易并证明令牌的真实性。Hcsp对用户信息进行加密,即只有密钥持有者才能访问用户身份。密钥是在树状结构中派生的,因此父密钥可以派生一系列子密钥,并使用椭圆曲线数字签名算法(ECDSA)来实现。节点使用其私钥计算消息的数字签名,网络中的其他节点通过使用发送者公钥检查此签名来验证消息的安全性。当矿机节点接收到新块时,首先使用发送方公钥验证消息签名,然后矿工验证所有节点位置的正确性。后一个验证包括在给定邻居节点附近验证要求保护的位置,如果其中一个验证操作失败,则忽略该块并将该节点位置剔除。
1.3 共识协议
交易的验证由网络中的CSP执行,CSP还负责维护分布式账本的完整性。交易(携带令牌)不会立即添加到区块链中;相反,出于效率原因,它们被打包到包含许多事务的块中,这样可以避免每个生成的块充斥网络,并最大限度地减少花费在块生成上的时间。通常将由对等点来验证交易真实性的算法称为共识协议,在这一领域有很多解决方案,但是本文选用权益证明(proof of stake,PoS)。在提出的解决方案中,每个新交易都广播给所有网络对等点(即CSP),并从CSP生成一个符合条件的新块。PoS协议由以下高级函数定义:
(1)CheckEligibility(hblk,d,keycsp,stakecsp)。该函数通过检查CSP是否合格来选择一个父区块,以生成链中的下一个区块。其输入参数包括最后一个块头hblk,目标值d,帐户密钥keycsp(与其他操作中使用的公钥/私钥对不同)及CSP拥有的资产stakecsp。该函数返回一个布尔值(真或假)。
(2)GenerateBlock(blk,d)。该函数用于生成存储在区块链上的块。其输入参数包括交易块blk和目标值d;返回值是一对“prf,sig”,其中prf为资格证明(其他CSP可以验证),而sig为块的数字签名。这些值的计算方法如下:
(2)
其中pubcsp和prvcsp是生成新块CSP的公钥和私钥,而prfold为最后的资格证明(例如Nxt的PoS协议)。当CheckEligibility指示CSP不符合条件时,则函数返回空值。
(3)ValidateBlock(blk,d,prf)。该函数用于验证存储在区块链上的块。仅当CheckEligibility为true并且blk(块的签名)和prf(证明)均有效时,它才返回true。
(4)Resolve(fork1,…,forkn)。该函数通过返回唯一的fork(例如fork1)来解决出现多个fork的可能情况。当许多CSP同时符合生成下一个块的条件时,就会发生这种情况。
在上述函数中,使用的系统级目标值d(调整CSP解决问题的难度)控制块生成时间,在应用场景中,该时间为30 s。每个CSP要解决问题的难度还取决于自特定CSP生成最后一个块以来经过的时间timecsp,资源stakecsp以及在TMP中的信任值tcsp。
dcsp=d·timecsp·stakecsp·tcsp。
(3)
式(3)提供了一种简单的方法来定义针对云身份管理的CSP特定难度级别。然后,通过检查条件Prefix(prf,k) 为了确保TMP中参与的CSP之间有效且更安全地交互,使用存储在区块链中的交易根据其行为随时间的变化评估每个CSP的可信度。在TMP中,每个CSP都有两种角色:主CSP(Hcsp)和外部CSP(Fcsp)。主CSP提供注册用户(u)的身份验证服务,而外部CSP向TMP中外部CSP的注册用户授予对受保护资源的访问权限。为了计算每个CSP的信任度,将Trustn,t(CSP)定义为在t时间间隔内最多n个交易的CSP信任水平,该值在[0 ,1]范围内,并且取决于表1中显示的特征。 表1 信任度特征描述Table 1 Description of trustworthiness 1.4.1 用户信任度 使用Credn,t(u)表示TMP中的CSP在时间间隔t内向用户提供最多n个交易的信任度值。定义如下式(4)。 (4) 式中,Credn,t(Fcsp(i),u)的初始值为1,即Cred0,0(Fcsp,u)=1,信任度更新函数定义如式(5)所示。 (5) 式中,Trustn-1,t(Fcsp)代表在时间间隔t内最多n-1个交易的Fcsp信任级别,而Credcurr代表Fcsp给定用户u的当前信任度值,它是基于Fcsp在用户行为的交易中向用户提供的反馈来计算的,其定义为式(6)。 (6) 1.4.2 身份验证 使用Authn,t(Hcsp)表示其他CSP在t内最多基于n个交易的Hcsp身份验证级别,记录Hcsp与参与TMP的其他CSP进行所有交易的身份验证级别。按式(7)计算如下: (7) 该函数的初始值为Auth0,0(Fcsp,Hcsp)。身份验证更新函数的定义如式(8)。 (8) 式中,Authcurr表示当前交易的身份验证级别,是由Fcsp根据交易行为从交易中Hcsp用户提供的反馈中得出的。定义如式(9)。 Authcurr(Hcsp)=Credcurr(u)。 (9) 1.4.3 满意度 使用Satn,t(Fcsp)表示其他CSP对Fcsp的满意度,该满意度基于该CSP在时间间隔t内最多n个交易的服务质量得出,根据下式(10)计算得到: (10) Satn,t(Hcsp,Fcsp)=Credn,t(u)×Satcurr+(1-Credn,t(u))×Satn-1,t(Hcsp,Fcsp) (11) 式中,Satcurr为当前交易的满意度值,Satcurr的值基于反馈系统计算,其中Hcsp中的用户u对Fcsp在每次交易提供的服务质量进行评分。 TMP中一个CSP在时间间隔t内最多n个交易的总体信任水平Trustn,t(CSP)定义由式(12)给出: (12) 式中,ω1,ω2分别是赋予满意度和认证特征的权重。这些参数表示每个特征对整体信任度值的影响程度,根据参数的信任要求,由间隔为[0,1]的参与TMP的k个CSP定义式(10)。 (13) 为了说明所提出模型的可行性,具体的应用示例着重于基础架构即服务云联盟(IaaS),这是不同CSP之间用于借用/出借虚拟资源(VM、虚拟集群和虚拟网络)的伙伴关系。对于希望整合其有限资源以提高服务质量、成本效益和可靠性的中小型云提供商而言,这种云计算的新视角尤其有用。当前的研究证实,只有IaaS级别的联盟才能以极低的成本实现无限的计算能力和无限存储的前景。但IaaS云联盟尚未成熟,存在互操作性、安全性和信任管理有关的许多障碍。身份管理问题为摆在面前的第一道难题,解决该问题便可在建立联盟的异构CSP之间执行身份验证。现有解决方案为使用联盟身份技术在整个云联盟中管理身份验证和授权,但是,现有的联盟模型是为静态环境设计的,在静态环境中,各方之间需要先验业务协议,并且会带来许多安全性、隐私性和互操作性问题,本文提出的信任模型可解决上述障碍并促进创建安全IaaS云联盟。 在IaaS云联盟中,各个CSP向其他联盟成员提供虚拟资源,并从中使用虚拟资源。在这种情况下,用户可以是联盟中彼此共享虚拟资源的CSP,也可以是普通的云用户。当主CSP共享来自联盟中其他CSP的虚拟资源时,主CSP负责对注册的普通用户进行身份验证,而外部CSP向联盟中的其他CSP或普通用户提供虚拟资源。IaaS联盟中参与CSP之间的信任关系由TMP管理,TMP结合了区块链网络和建议的信任模型。按照设计,TMP可自动扩展,从而允许其他CSP以动态方式加入IaaS联盟。 图3演示了一个CSP共享来自联盟中另一个CSP的虚拟资源时的身份验证场景。主CSP创建一个访问令牌并将交易发送到区块链网络,在区块链中验证和存储令牌之后,外部CSP将请求的虚拟资源提供给主CSP。 图3 共享虚拟资源时的身份验证方案Fig.3 Authentication scheme to share virtual resources 应用基于区块链技术的云身份认证系统进行身份认证实验。首先搭建云身份认证系统的实验测试环境,包括服务器端搭建测试环境与客户端搭建测试环境,具体如表2所示,其中客户端版本为5.27。 表2 服务器端与客户端搭建测试环境Table.2 Server and client test environment 利用搭建的实验测试环境进行云身份认证实验。为了保障本次实验结果具备有效性,将传统云身份认证系统与本文设计的基于区块链技术的云身份认证系统进行对比实验,其中传统云身份认证系统包括基于全局变量、基于虚拟堆栈的云身份认证系统。比较各个云身份认证系统的数据集成性能,判断数据集成性能的依据是数据集成曲线的波动性。数据集成曲线越平稳,证明数据集成性能越优秀;反之,数据集成性能越差。 传统云身份认证系统与基于区块链技术的云身份认证系统的数据集成性能对比实验结果如图4所示。根据图4的数据集成性能对比实验结果可知,基于全局变量的云身份认证系统数据集成曲线波动较大,其数据集成性能较差;基于虚拟堆栈的云身份认证系统数据集成曲线波动较小,其数据集成性能一般;基于区块链技术的云身份认证系统数据集成曲线波动最小,其数据集成性能在3个实验系统中表现最优。 图4 数据集成性能对比实验结果Fig. 4 Results of data integration performance comparison experiment 当前管理云服务提供商及其客户端的信任关系时会产生较多的复杂性问题,联盟身份管理系统信任管理不完善,会造成许多安全性、隐私性和互操作性问题,导致各组织不愿将其关键身份数据转移至云中。本文通过引入基于区块链的云身份管理模型来解决这些问题,所提出的模型提供了基于区块链的身份验证机制以及去中心化信任模型,使用此信任模型,CSP不需要预先配置的信任关系即可进行交互,而信任度可以根据实体行为动态变化,这种方法提供了一种有效的身份管理解决方案,可以促进安全IaaS云联盟的创建,也可以应用于分布式和开放环境中。通过与传统的云身份管理模型对比实验,证明了本方案可有效提升数据集成性能,对于移动终端应用安全保障具有较大意义。1.4 信任模型
2 身份验证方案示例
3 实验设计与结果分析
3.1 实验方法
3.2 实验结果分析
4 结语