APP下载

基于分片的云虚拟机安全保护技术

2016-01-21樊文生华铭轩

通信技术 2015年6期
关键词:分片私钥攻击者

樊文生,华铭轩

(1.海司信息化部 北京100041; 2. 中国电子科技集团公司第三十研究所,四川 成都 610041)

摘 要:在典型的IaaS云中,用户使用云服务需要通过虚拟机实现。最近有研究表明,在大多数常用的加密协议(如SSL/TLS等)中,至关重要的加密密钥,可能被攻击者通过跨虚拟机的旁路攻击截获。针对这种攻击方式,提出了一种云虚拟机密钥保护系统,通过将加密密钥随机分割为多个分片,并将每个分片存储于不同的虚拟机中,能有效保护云中的加密密钥,抵御各类跨虚拟机的旁路攻击。此外,云虚拟机密钥保护系统会周期性地对加密密钥进行重新分割,即便攻击者能够截获局部的加密密钥,也无法进行还原。将云虚拟机密钥保护系统作为一种对应用软件透明的扩展库,运行在亚马逊EC2云的web服务器,取得了较好的成果。

关键词:虚拟机;密钥分割;云

doi:10.3969/j.issn.1002-0802.2015.06.021

基于分片的云虚拟机安全保护技术

樊文生1,华铭轩2

(1.海司信息化部 北京100041; 2. 中国电子科技集团公司第三十研究所,四川 成都 610041)

摘要:在典型的IaaS云中,用户使用云服务需要通过虚拟机实现。最近有研究表明,在大多数常用的加密协议(如SSL/TLS等)中,至关重要的加密密钥,可能被攻击者通过跨虚拟机的旁路攻击截获。针对这种攻击方式,提出了一种云虚拟机密钥保护系统,通过将加密密钥随机分割为多个分片,并将每个分片存储于不同的虚拟机中,能有效保护云中的加密密钥,抵御各类跨虚拟机的旁路攻击。此外,云虚拟机密钥保护系统会周期性地对加密密钥进行重新分割,即便攻击者能够截获局部的加密密钥,也无法进行还原。将云虚拟机密钥保护系统作为一种对应用软件透明的扩展库,运行在亚马逊EC2云的web服务器,取得了较好的成果。

关键词:虚拟机;密钥分割;云

doi:10.3969/j.issn.1002-0802.2015.06.021

收稿日期:2015-01-09;修回日期:2015-04-18Received date:2015-01-09;Revised date:2015-04-18

中图分类号:TP309

文献标志码:码:A

文章编号:号:1002-0802(2015)06-0734-06

Abstract:In a typical IaaS (Infrastructure-as-a-Service) cloud, the user would acquire cloud services via executing VM (Virtual Machines). However, recent studies indicate that the crypto keys, as the most crucial component in the usually-used cryptographic protocols (e.g., SSL/TLS), may be extracted by using cross-VM side-channel attacks. To defeat such a threat, this paper proposes a new system for protecting the crypto key of cloud VM. By simply partitioning the crypto key into multiple random shares and storing each share in different VMs, the crypto key in the cloud could be effectively protected, and the cross-VM side-channel attack be resisted. In addition, this crypto-key protection system of cloud VM may periodically re-partition the crypto key, thus the attacker could not re-construct the key, even acquires partial key. This key protection system of cloud VM is taken as a library extension transparent to the application software and applied to the web server of Amazon EC2 cloud. Experiment indicates an excellent result.

作者简介:

Security Protection Technology based on

Piecewise Cloud Virtual Machine

FAN Wen-sheng1,HUA Ming-xuan2

(1. Information Department of Navy Command, Beijing 100041, China;

2. No.30 Institute of CETC, Chengdu Sichuan 610041, China)

Key words:VM; key partitioning; cloud

0引言

近年来云计算日益成熟,越来越多的用户将计算任务放在功能强大的云端处理。这不仅高效的解决了用户的计算任务需求,也大大减轻了用户的资源管理负担,使用户有更多精力思考任务的核心问题。但云计算在发展中也面临着诸多挑战,而这些挑战主要存在于安全和隐私威胁上。云计算的安全和隐私问题近年来日益严重,无论是政府商业机构还是一般民众都越来越不放心将敏感数据和计算能力交给一个远程的计算环境,而这正在严重限制云计算的发展。

而在安全隐私威胁上,用户信息泄露无疑是比较严重的一种。其产生机制主要是云服务提供商有时为了增加效率和减少开销,可能会在同一个物理机上为不同的用户创建不同种类的虚拟机。在这种情况下,各虚拟机之间需要进行逻辑隔离,以保护每位用户的隐私。通常情况下云服务提供商会利用虚拟机监控器来实现运行在同一物理机的多个虚拟机之间的逻辑隔离。但是,最近的研究表明,通过跨虚拟机的旁路攻击方式(后文简称旁路攻击),攻击者可以获取其他虚拟机中的私有信息,甚至强行打破公有云基础设施中的逻辑隔离。Ristenpart[1]演示了一种攻击方法,攻击者可以将其虚拟机置于受害虚拟机旁,并利用缓存数据获取粗略信息。张银钱[2]利用跨虚拟机攻击完成了ElGamal解密密钥的提取。旁路攻击的方法多种多样,但从上文提到的两种攻击方法就可看出,仅仅使用逻辑隔离来保证用户的隐私安全是远远不够的。

基于以上考虑,本文提出了一种分片技术,通过计算将私钥分片,并存储于不同的虚拟机上,此时即使虚拟机遭到攻击,信息泄露,入侵者也只能得到密钥的一部分。同时为了进一步保证安全,密钥将会周期性的重新分片,再重新分发。本文将从密钥分片、重分片技术入手,最终完成云虚拟机安全保护系统。

1背景技术

1.1SSL/TLS协议

SSL和TLS协议被广泛用于在两个互不信任的节点间建立安全信道,二者非常相似。为了简明起见,本文主要以SSL为研究对象,有关SSL的结论同样适用于TLS。

SSL协议主要包括握手和记录两个过程,协议中的两个节点分别被称作client和server。在握手过程中,client和server利用公钥密码系统(PKC)进行相互认证,并协商会话密钥。会话密钥仅用于保护单个会话的机密性和完整性。client和server之间共享着一个主密钥,会话密钥就是通过随机数的变化和预主密钥计算产生的[3]。

图1示出了握手的全过程。首先,client向server发送client_hello消息(Step 1),包含有一系列SSL支持的加密算法和一些用于产生会话密钥的随机数。然后,server将自己的证书、一些随机数和接受的密码算法发送给client(Step 2)。如果有必要,还应包含密钥交换参数(Step 2b)。此外,如果server想要认证client,它还会要求client提供证书(Step 2c)。server以发送hello_done消息结束(Step 2d)。如果server要求client提供证书,client会将自己的证书连同一些利用自己的私钥加密后的随机数发送给server(Step 3a)。接着,client随机创建一个预主密钥,并用自己的私钥将其加密后发送给server(Step 3b)。至此,client和server都能利用预主密钥和随机数通过伪随机函数的确定组合计算出主密钥。

图1 SSL协议握手的过程

在选中的加密算法基础之上,消息中的数字和内容允许改变。例如,Diffe-Helman(DH)协议被用于预主密钥的协商,client和server分别使用自己的私钥对DH参数签名,并在Step 2b和Step3b中发送。另一方面,client和server可能使用RSA进行预主密钥的协商,client使用server的RSA公钥对预主密钥加密,server使用自己的私钥对其解密。

1.2两类分片方法

分布式RSA(Distributed RSA)也称 D-RSA是给定一个私钥d,采用加性密钥分片方法(Additive Secret Sharing),将d分割成l个随机分片d1,…,dl,这里d≡d1+…+dlmodφ(n),n是模数,φ是欧拉函数。给定公钥(n,e)和一个密钥分片,任何节点都不能计算得到d。因此,攻击者必须掌控所有的l个密钥分片才能还原d[4]。

门限RSA(Threshold RSA)又称T-RSA采用shamir密钥分片方法(shamir secret sharing)分割给定的私钥,其中仅有1

2云虚拟机密钥保护系统

在SSL协议中,证书包含不同公开密钥密码体制(PKCs)的公共参数(例如RSA,DSA,ECC),这些参数用于加密秘密信息或者证明某些临时数据的真实性。在云虚拟机密钥保护系统中,我们假定各节点采用RSA作为其PKC[6],但是,当采用其他PCK参数时,系统将要做相应修改才可使用。

图2 系统架构

图2示出了云虚拟机密钥保护系统中的各个实体:防御者,攻击者,防御者的l个虚拟机,以及试图与防御者的虚拟机建立SSL安全连接并访问防御者的web应用的客户端。防御者持有一组RSA私钥,并将这组密钥分割至其多个虚拟机中,每一虚拟机掌握了每个私钥的一个分片,再将所有分片结合起来求幂。直接与客户端交互的虚拟机被叫做组合器,而其余的虚拟机被叫做辅助虚拟机。攻击者获取私钥的方法有两种:①跨虚拟机攻击依次获取每一虚拟机的密钥分片,从而至少还原出一个RSA私钥;②监听各虚拟机之间的每条交互信息。为了实现安全通信,每个信道都是采用本文的增强型SSL协议建立。更具体地讲,虚拟机间的信道建立都需要相互认证(即两两节点相互认证),而只有组合器虚拟机会与客户端/防御者进行身份验证。防御者每隔τ秒会重新分割私钥。两次连续的重新分割之间的时间窗被称为一个时隙,而在任意两次会话私钥中,私钥分片之间是独立的。

云虚拟机密钥保护系统具有两种操作模式,即D-RSA和T-RSA方式,使用相应的RSA变体(参见§2.2)。当系统运行在D-RSA模式时,攻击者只有得到了所有节点的密钥分片才能还原密钥本身;而在T-RSA模式下,攻击者则需要掌握至少k个密钥分片。

云虚拟机密钥保护系统的运行分为几个阶段:①分割私钥;②系统初始化,分发初始的密钥分片,并建立虚拟机间的SSL信道;③建立防御者虚拟机和客户端之间的连接;④重新协商虚拟机间的SSL信道;⑤再次分发新的分片。

2.1SSL协议的改进

在SSL协议中,通信节点之间可以进行相互认证或者与服务器进行单向验证。在SSL协议中,服务器在两个过程中使用私钥(参见图1):(1)步骤2a后,对临时参数签名;(2)步骤3b后,解密预主密钥。而对于客户端来说,仅在步骤3a前,相互认证时使用其私钥。相对于常规的SSL,本文主要对SSL在服务器和客户端在执行上述步骤时,做了一些改进。

图3 服务器单向认证的增强型SSL协议流程

图3示出了在服务器单向认证过程中执行改进的SSL协议的过程。在各虚拟机间建立的安全信道后,客户端与组合器进行SSL握手。在步骤2后,组合器会产生临时密钥参数,并与辅助虚拟机一同对其签名。组合器向所有采用D-RSA模式(或至多k个T-RSA模式)的辅助虚拟机发出一个help_sign的消息,该消息的内容仅包括需要进行签名的参数(步骤2aa)。每个接收到该请求的辅助虚拟机,使用其私钥分片对参数进行计算,并将其得到的部分结果打包成sign_partial_result消息发送给组合器(步骤2ab)。另一方面,如果组合器需要对从客户端传入的消息进行解密,它会向所有D-RSA模式(或至多k个T-RSA模式)的辅助虚拟机发送一个help_decrypt消息,消息中包含客户端消息的明文或密文的信息(步骤3ba)。然后,每个辅助虚拟机采用dec_partial_result将计算出的部分结果发送给组合器(步骤3bb)。help_decrypt消息的内容是否需要使用一个随机数进行加密取决于操作模式的不同。即便是在最坏的情况下,当攻击者能够得知虚拟机之间交互的每条消息,组合器也不必加密D-RSA的消息。这归根于D-RSA的安全性。假设客户端向组合器发送消息,其中M是预主秘密,(n,e)为公钥。为了还原M,攻击者需要向组合器一样获取每个虚拟机计算出的部分结果。然而,即使攻击者能够攻陷所有安全信道和捕获所有消息,它只能截获l-1个节点的部分结果,因为组合器不发送其部分结果给任何人。因此,攻击者不能计算出M,从而不能得到任何有用的信息。在T-RSA的情形下,组合器从全部虚拟机中随机地选择k个,即S={i1,i2,…,ik},并将消息发送给他们。这里有两种情况需要考虑:(1)如果该组合器包含在集合S中,那么不需要对该消息进行加密,即类似于D-RSA的情形。攻击者需要k个部分结果,但只能截获k-1个。(2)否则、,组合器采用随机数对消息进行加密;由于攻击者可能截获k个不同辅助虚拟机发出的k个部分结果,而其它的计算参数都是公开的(例如Δ=l!,a和b可以通过gcd(e,4Δ2)得到),因而,攻击者可以计算出M。

对于服务器单向认证的SSL信道,云虚拟机密钥保护系统要求进行相互认证,因为任意两个防御者虚拟机,VMi和VMj可以通过密钥协商更新会话密钥。不失一般性,假设VMi是SSL协议的客户端,VMj是服务器。那么,两者都应与辅助虚拟机通信,它们使用自己的私钥进行操作。服务器在步骤2a和3b后需要与客户端合作,而客户端在步骤3a前需要对随机数进行签名。服务器的行为与所述的服务器单向认证的增强SSL协议一致。另一方面,客户端在步骤3a前向辅助虚拟机发送help_sign消息,并组合部分结果。按照上述步骤,这两个防御者虚拟机可以利用与辅助虚拟机建立好的安全SSL信道顺利完成握手过程。

2.2密钥分割

2.3系统初始化

在这个阶段,虚拟机需要使用增强型SSL协议建立初始的身份认证和安全SSL信道。然而,正如§3.1提到的,增强型SSL需r要使用已经建立的安全SSL信道在虚拟机之间传输信息。在这里,我们可以做出一个假设来绕过这一要求。假设虚拟机和SSL信道是安全的、可信的,即各虚拟机之间的初始SSL信道建立过程没有受到攻击。这样假设是合理的,因为:……①在云端定位防御者虚拟机需要时间;②整个初始化过程只需很短的时间,特别是在密钥分割过程事先完成的情况下。一旦虚拟机间的初始SSL信道已经建立,云虚拟机密钥保护系统就已经做好了为客户端服务的准备。需要注意的是,同一个防御者虚拟机与其他虚拟机或客户端连接都使用相同的RSA密钥对。

最后,在云虚拟机密钥保护系统中,假设虚拟机的数量在全生命周期都是固定值。然而,有时候需要通过动态扩展以增强云虚拟机密钥保护系统的效能,在新的虚拟机创建过程中,我们应当保证初始密钥和初始安全信道的安全性。§3.6会提到,在密钥的重新分割过程中,防御者会将密钥发给新创建的虚拟机。尽管如此,通过创建新的虚拟机进行动态扩展是否可能导致产生安全漏洞还需要更深入的研究。

2.4连接客户端

在初始化阶段结束后,客户端或防御者就可以连接到防御者虚拟机:①使用防御者提供的各类服务;②分发新的私钥分片。在任何情况下,通过服务器单向认证的增强型SSL协议进行连接,其中,被连接的虚拟机将充当组合器。

假设客户端使用增强型SSL连接到虚拟机。在整个握手过程中,虚拟机VMi与辅助虚拟机(除VMi以外的所有虚拟机)进行交互,并按§3.1所述进行分布式签名或解密运算。整个分布式运行过程对客户端透明,组合器或任一辅助虚拟机除运算结果以外不能得到关于私钥的任何知识。

2.5虚拟机间的密钥协商

在一个时隙过程中,两个正在通信中的防卫虚拟机(整个云虚拟机密钥保护系统包含防御者,攻击者,防御者的l个虚拟机,以及试图与防御者的虚拟机建立SSL安全连接并访问防御者的web应用的客户端,其中防御者的l个虚拟机被称为防卫虚拟机)的任意一个都有可能主动结束一个SSL会话,再为下一次会话的建立协商密钥。在此情况下,这两个虚拟机会使用它们的RSA密钥对,并通过增强型SSL协议的双向认证机制进行一个新的握手过程。假设虚拟机VMi和VMj重新进行密钥协商,其中VMi和VMj分别作为客户端和服务器。这两个虚拟机使用与辅助虚拟机之间已经建立的SSL信道执行增强型SSL协议的握手程序。当VMi或WMj需要用自己的私钥进行求幂运算时,它将与辅助虚拟机协作,并计算出结果。

在一定时间内,云虚拟机统密钥保护系统仅允许进行一次密钥重协商,因为这个过程进行时需要占用已经建立的SSL信道。当两个防御者虚拟机开始密钥重协商过程时,它们会向所有的虚拟机告警,以阻止任何其他节点进行的重协商。在一次密钥重协商过程停止后,云虚拟机密钥保护系统会移除告警并允许此后的第一个重协商请求。

2.6密钥再分割

在每一个时隙结束后,防御者会对RSA私钥重新分割生成新的密钥分片。实际上,这个过程仍然使用在§3.2中讨论的密钥分割算法,但将产生独立于以前的密钥分片。此后,仅需像§3.4描述那样,使用增强型SSL连接到每一个防御者虚拟机,并为全部分割后的私钥发送新的密钥分片。

上述过程可以防止潜在的私钥泄露风险,因为攻击者还是有可能获取同一私钥的一组分片。而对同一密钥进行第二次分割产生一组不同且独立于前一次的分片,只要攻击者不能在一个时隙内获取足够多的分片以还原密钥,那么他已经截获的分片在下一个时隙会失去意义,结果他必须把之前的所做的都再重复一次,这无疑会提高攻击者攻击成功的难度,使整个系统更加安全。而当所有防御者虚拟机都已收到了新的分片时,整个系统就会进入下一个时隙,开始使用新的密钥分片,而旧的分片则会被彻底移除。

3评估

我们实现的云虚拟机密钥保护系统原型,运行于最常用的开源SSL库之上。其使用的是最新版的Opensslv1.0.1e版本。

由于云虚拟机密钥保护系统拥有所有的网络基准测试项,因此很难进行完全详尽的测试,在评估系统的过程中我们将使用微型基准测试项来评估系统的表现,并将其用于一个有代表性的案例研究。

为了抽取微型测试基准结果,我们开发了一些应用并将其连接到给定的防火墙VM上,并且指定了并发客户端的数量。对于网页服务应用,我们使用两个完全不同的基准测试工具:Apache HTTP(v2.4.4)服务器基准测试工具,其可以允许我们发送有多种执行选项的HTTPS请求;Apache JMeter(AJ)v2.9 ,使用它我们可以使用默认的HTTPS请求采样,采样标准的AJ二进制数据流。

实验中将会在亚马逊EC2上建造10个VM实例。实验中使用的虚拟机主要用于网页服务器应用,每个虚拟机都使用m1.xlarge类型,有4个虚拟CPU和15 GB的RAM。其余剩下的VMs使用m1.small类型,其有一个虚拟CPU,一个虚拟内核,1.7 GB的RAM,装载的是64 bit Red Hat Enterprise Linux 6.4 。设备采用IBM x3500m3服务器,拥有16 GB的RAM,4核2.4 GHz的cpu。

实验中,将会从1到1 000以指数的方式调整并发的服务端数量,然后观察这些负载的增加对云虚拟机密钥保护系统会产生什么样的影响表现规律(平均延迟,平均吞吐量)。在实验中我们将会观察到重分享过程大概会花费50 ms。再加上观察的时间,最终平均处理一个请求可能要花到2秒的时间,我们将会把τ在5~125 s之间改变。

在执行实验的过程中,我们将会使用10台VMs,使用(l,k)来代表程序,其中l是活动的VMs数量,k是需要计算RSA结果的分享数量。当l等于k的时候,系统将会运行在D-RSA模式,使用10个VMs。另外由于l必须大于等于k,所以我们应该注意到实验中不要设置l

在基准测试中,使用D-RSA模式且有10个VMs。在实验中从1~1 000改变共享主机的数量,然后测量平均连接时间,内部虚拟机通话时间,每毫秒融合局部结果时间。从辅助虚拟机中融合部分结果的时间开销不会超过3毫秒。另一方面,内部的虚拟机交流占用了全部的D-RSA加强SSL模式下的时间开销。当共享用户端的数量是1 000,l>7执行SSL链接平均时间超过1秒时尤为明显。因此,当融合器虚拟机在成功连接后关闭链接且在D-RSA高负载模下网络通信成为主要瓶颈。在案例研究中,可以观察到在成功建立一个SSL链接之后,如果融合器要处理一个请求,网络开销将会减少,平均时延也会减少。

我们推断,如果引入接近2k的新虚拟机进入云虚拟机密钥保护系统将会帮助我们减少将近50%的时间开销。在不同的k值和l值下执行了同样的T-RSA实验。

图3 测试结果

之后我们测量了不同数量防卫虚拟机在重分配密钥时的平均完成时间。实验中每5 s防卫虚拟机都会重分配同样的部分密钥,且此时没有其他的客户端尝试连接到虚拟机。我们观察到平均时间随着虚拟机数量的增加而增加。实验中我们得到密钥重分发完成时间和D-RSA模式中得到的值是有对应关系的。当l等于10时,防护系统将会同时和云虚拟机密钥保护系统建成10个链接,最终结果将会与10个客户端在D-RSA模式下执行程序(10,10)相同。考虑到高负载时的情况,此时密钥重分发过程一定会花费更长的时间。因此,密钥重分发的最佳时间点τ值在选择时,应该考虑到服务器负载和防卫虚拟机数量。

4结语

本文提出的云虚拟机密钥保护系统能有效防止公有云中虚拟机加密密钥的泄露,其核心技术是利用分片技术将加密密钥随机分割成多个分片,每个分片存储于不同的虚拟机。这样一来,除非攻击者可以从多个虚拟机中获取所有的密钥分片,否则将无法还原完整的加密密钥。此外,同一个加密密钥会被周期性地重新分割,使一个密钥分片仅在一个时间段内是有意义的,通过这些手段,该系统使得攻击难度大幅提高。同时通过测试,我们发现服务器负载和防卫虚拟机数量有较大的关系,在实际使用中要考虑到τ值的选择。

参考文献:

[1]Ristenpart T, Tromer E, Shacham H, et al. Hey, You, Get off of My Cloud: Exploring Information Leakage in Third-Party Compute Clouds [J].In Proceedings of the 16th ACM Conference on Computer and Communications Security, ACM, 2009, 51(1):199-212.

[2]ZHANG Y, JUELS A, REITER M, et al. Cross-VM Side Channels and Their Use to Extract Private Keys [J]. In Proceedings of the 2012 ACM Conference on Computer and Communications Security, ACM, 2012, 51(1): 305-316.

[3]闫鸿滨.网络密钥管理关键技术研究[J].计算机应用与软件, 2011,28(12):68-70.

YAN Hong-bin. Research on Critical Technology of Network Key Management [J].Computer Applications and Software, 2011,28(12):68-70.

[4]Frankel Y. A Practical Protocol for Large Group Oriented Networks [J]. In Advances in Cryptology EUROCRYPT 1989 Springer, 1990,1(343):56-61.

[5]Shoup V. Practical Threshold Signatures [J]. Advances in Cryptology EUROCRYPT 2000 Springer, 2000,1(1807): 207-220.

[6]何映伟, 邓小艳, 吉庆兵. 一种混合密码体制下的密钥管理方案[J]. 通信技术, 2012, 45(01):122-124.

HE Ying-wei, DENG Xiao-yan, JI Qing-bing. A Hybrid Crypto System Key Management [J]. Communications Technology, 2012, 45(1): 122-124.

[7]范园利, 焦占亚. 基于密钥分解理论的文件安全分割算法[J]. 计算机工程与设计, 2008, 29(02):315-317.

FAN Yuan-li, JIAO Zhan-ya. Algorithm about Safe File-Splitting based on Theory of Key Assignment. [J].Computer Engineering and Design, 2008, 29(2):315-317.

樊文生(1967—),男,学士,高级工程师,主要研究方向为通信工程、信息安全。

华铭轩(1990—),男,硕士,助理工程师,主要研究方向为信息安全、通信技术和大数据。

猜你喜欢

分片私钥攻击者
清扫机器人避障系统区块链私钥分片存储方法
上下分片與詞的時空佈局
比特币的安全性到底有多高
降低跨分片交易回滚概率的多轮验证方案
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
基于模糊二分查找的帧分片算法设计与实现
正面迎接批判
正面迎接批判
一种基于虚拟私钥的OpenSSL与CSP交互方案
通用导弹雷达罩曲面分片展开系统的开发