余祥 熊秋犇 李强
近年来,数据泄漏事件越来越多,成本越来越高,2019年全球数据泄露的平均成本为392万美元,平均规模达25575条记录[1],较2018年继续稳步上升.2017年6月1日正式生效的《中华人民共和国网络安全法》[2]明确提出需要加强对关键信息基础设施及其数据的保护.数据安全作为网络空间安全的重要组成部分,已经成为信息安全管理体系最突出的问题.
目前,关于数据泄漏防护以被动检测为主,常见的包括通过访问控制技术防止数据被非法访问[3];通过加密技术对数据进行加密处理[4];基于数据匹配的内容监控和过滤技术发现和阻断数据泄漏[5−6];通过虚拟化技术的隔离机制保护数据等等[7].
随着云计算技术的快速发展和网络存储数据的海量增加,虚拟化技术在数据泄漏防护中正发挥着越来越重要的作用.但在数据主动泄漏方面效果并不尽如人意.随着基于主动免疫的可信计算技术逐渐兴起并快速发展[8],为数据泄漏防护提供了全新的解决思路[9−10].2011年,TCG发布了《虚拟可信平台架构规范》(Virtualized Trusted Platform Architecture Specification[11],规范了虚拟可信平台的架构,使得虚拟可信平台的构建更加规范和标准化,也为虚拟可信平台在数据泄漏防护中应用提供了一定的技术基础.可以结合我国提出的可信计算3.0规范构建适用于我国可信计算标准的虚拟可信平台并用于数据泄漏防护.
基于上述考虑,本文基于KVM虚拟机和可信计算技术构建虚拟可信平台,并在此基础上设计客户端和服务端网络数据保护模型,提高网络存储数据的安全性.
将可信计算的主动免疫特性和虚拟化的隔离特点相结合,一方面通过虚拟化技术在操作系统和软件应用层之间建立隔离和监控机制,对可信计算平台提供安全支持;另一方面,通过可信计算技术防止外界对系统的侵害,使虚拟隔离的虚拟域更加安全.
KVM(Kernel-based Virtual Machine),是基于Linux内核的开源虚拟化解决方案.其基本思想是Linux内核的基础上添加虚拟机管理模块,重用Linux内核中已完善和成熟的机制和模块,比如进程调度、内存管理、IO管理等,将Linux内核转化为一个支持运行虚拟机的Hypervisor.KVM本身只提供部分的虚拟化功能(虚拟CPU和内存),由经过改造后的Qemu(Qemu-kvm)来协助提供完整的平台虚拟化功能.KVM架构如图1所示.
图1 KVM架构
相较于KVM,Xen也是Linux常用虚拟化技术.但Xen是一个外部的虚拟机管理程序,更新时需要重新编译整个操作系统内核,稍有不慎就无法启动系统.而KVM是Linux的一部分,可使用通常的Linux调度器和内存管理,结构更加简化,出错可能性更小,且易于使用[12].
可信计算是保障信息系统可预期性的技术,是在计算的同时进行安全防护,使计算结果与预期结果一样,计算全程可测可控,不受干扰[13].可信计算的基本思想是基于硬件建立物理安全可信任的可信根,然后从可信根开始,依托可信密码技术和系统中的安全机制,通过可信链,确保系统从可信根到应用每一层面的可信.
可信计算组织(Trusted Computing Group,TCG)提出可信平台模块(Trusted Platform Module,TPM)作为受保护的可信根,针对TCG提出的TPM存在的一些不足,如缺少对可信计算平台安全的主动控制;不适合大数据量的通信;缺少芯片本身物理安全方面的设计等,我国研制了可信平台控制模块[14](trusted platform control module,TPCM).我国提出的可信支持的双体系结构如图2所示.
可信计算的核心是通过硬件确保可信根的安全,再通过可信链扩展到系统的整体安全,其特点是能够对安全威胁主动免疫.而虚拟化技术由于逻辑隔离和部署的灵活性,在数据泄漏防护中欠缺的正是主动数据泄漏的问题.由此,将上述二者相结合,充分发挥二者的特点和优势,对于解决数据泄漏的问题是有益的尝试.
目前,物理机环境下的可信密码模块已经有了较广泛的应用.为解决虚拟机环境下的可信密码支撑功能需求,学者们提出了虚拟TPM/TCM的概念[15−17],需要具备可信密码模块的基本功能,同时又与特定的虚拟机绑定.因此,可以通过添加vTCM的方式设计基于KVM的虚拟可信平台.
图2 可信支持的双体系结构
为防止攻击者直接攻击主机或vTCM管理软件获取vTCM密钥,设计平台主要遵循以下原则:
1)虚拟可信平台密码模块保密性和可信性最好能沿用物理TCM的大部分结论,和物理可信平台密码模块相比,不应该有很大差距.
2)使用对称加密对vTCM密钥进行加密,不允许频繁访问物理TCM,提高运行效率.一般在以下两种情况下访问TCM:a)启动虚拟机时,访问TCM获得密钥用于数据加密;b)关闭虚拟机时,访问TCM将vTCM的密钥存储在宿主机.
3)TCM密钥的安全迁移.在虚拟机迁移后,确保vTCM可以继续使用以及密钥的安全问题.
基于KVM的虚拟可信平台体系结构主要由硬件层、内核层和虚拟化层组成,如图3所示.
硬件层包含物理TCM、CPU、内存和I/O设备等.CPU需要支持虚拟化技术,满足虚拟化的性能和安全要求.内核层主要包含KVM模块,TCM驱动程序和vTCM生命周期管理机制等.vTCM生命周期管理机制,主要负责vTCM的密钥管理、vTCM模块、资源管理和迁移管理等.
虚拟化层由宿主机系统和虚拟机进程组成.所有vTCM的加解密密钥都存储在宿主机系统中,密钥的加密和解密过程都在物理TCM中完成.虚拟机的进程中包含一个特殊的线程,专门负责对vTCM的密钥进行实时加解密.
数据正逐渐向网络化和分布式的存储方向发展,网络存储数据安全正面临越来越大的威胁,其威胁主要来自两个方面,一是数据传输过程面临的威胁,二是数据存储面临的威胁.数据传输过程的安全可以通过构建三元三层可信网络[18−19]保证数据在传输过程中的机密性和完整性.存储在系统中的数据不仅会因系统和软件漏洞受到攻击而面临威胁,也会因内部人员的主动泄漏而面临威胁.
为保证数据在网络中的安全存储,防止数据被动或者主动泄漏,基于虚拟可信平台,分别设计客户端和服务端的网络存储数据泄漏防护模型,确保网络存储数据只能被可信网络或授权用户访问.
网络存储数据泄漏主要是非法用户访问以及合法用户越权访问或通过非法行为(如非法复制等)使数据在不安全系统中被查看.因此,需要对访问数据的客户端进行安全防护,防止用户对数据的越权访问,从而导致数据泄漏.数据泄漏途径如图4所示.
为确保数据安全,使数据即使在未授权的设备也无法查看,对数据进行加密是必要的.数据在客户端后加密再进行存储操作,密钥加密后存储在客户端.如此,加密后存储的数据只有在客户端才能解密正常查看,其他用户由于没有解密密钥而无法正常查看数据,即使数据外泄也无法被读取.客户端需要完成加密操作和密钥的安全管理,客户端数据泄漏防护模型如图5所示.
在客户端数据泄漏防护模型中,使用国产对称加密算法SM4-4对数据进行加密处理,为了确保对称密钥的存储安全,通过vTCM提供的非对称加密算法SM2加密对称密钥,解密的私钥存储在vTCM中,可以确保私钥的安全.使用对称密钥加密数据的同时,将被加密数据与可信平台状态绑定,只有当可信平台状态与加密时的状态相同,才能得到对称密钥,用户才可以使用对称密钥解密被加密的数据.
根据图5所示客户端数据泄漏防护模型,数据加密存储的主要过程如下:
1)基于vTCM接口函数获取一个用于加密的随机数K,并将其作为对称密钥用于加密数据;
2)基于对称加密算法E对数据M进行加密操作得到加密数据C1,C1=EK(M),其中,K为对称密钥;
图3 虚拟可信平台体系结构
图4 数据泄漏途径
图5 客户端数据泄漏防护模型
3)基于vTCM提供的非对称加密算法EKpub−s对对称密钥 K 进行加密,C2=EKpub−s(K∪VPCR−x),其中,Kpub−s是非对称密钥对的公钥,VPCR−x是可信平台一组PCR值,反映可信平台的状态;
4)将加密数据C1保存到网络存储服务器中.
客户端从网络存储数据库读取数据的主要过程如下:
1)从网络存储服务器读取加密数据C1;
2)使用vTCM 中的私钥 Kpri−s进行密钥解密K=DKpri−s(C2)kVPCR−x,其中,DKpri−s是解密算法,如果发现VPCR−x与加密时的值不同则说明平台已不安全,停止解密;
3)得到对称密钥K后,通过其解密数据,M=DK(C1).
将非对称加密和对称加密算法结合起来使用可以更好地提高加密效果.对称加密密钥可以通过vTCM的随机数产生器生成,也可以由用户选择其他可信密码模块提供的算法生成.非对称加密公私钥对由vTCM调用SM4引擎生成.将对称密钥和PCR值通过密封函数密封,可以把密钥和可信平台状态绑定,不仅需要得到私钥,并且PCR值加解密前后一致才能得到对称密钥,充分发挥了可信平台的优势.
仅仅是在客户端对数据进行加密处理后存储在网络中对数据安全而言是不够的,而且对用户操作有一定要求.数据长期存储在网络服务器中,如果不对网络服务器采取必要的数据保护措施,数据泄漏风险依然不小.因此,有必要对网络服务器采取保护机制,确保存储在网络服务器中数据的安全性.
访问控制是网络存储数据保护的常见方法.用户通过身份标识和口令得到网络存储数据的使用权并依据身份类别享有不同的权限.一旦身份标识和口令被截获或破解,则用户数据将面临较大安全威胁.不仅如此,一旦服务器被攻击导致防御机制失效或被绕过,其中存储的数据将面临泄漏的巨大风险.单纯依靠一种方法并不能保证数据安全,多管齐下是提高数据安全的有效手段.通过虚拟可信平台对数据进行加密,可以进一步提高数据的安全性.网络存储服务端的数据保护模型如图6所示.
网络存储服务端的数据保护模型由用户端、服务器端和网络存储设备组成.其中,用户端是数据的来源地和所有者.服务器端包括虚拟数据端和虚拟密钥端,其中,虚拟数据端负责数据和对称密钥的加密操作,虚拟密钥端负责对称密钥的解密操作.虚拟数据端和虚拟密钥端的vTCM分别存放密钥的公钥部分和私钥部分.网络存储设备包括两部分,分别存储加密后的数据和加密密钥.
根据图6所示服务端数据泄漏防护模型,数据保护的主要过程如下:
1)用户端将数据M传输到网络存储服务器的虚拟数据端;
2)在虚拟数据端通过vTCM接口函数生成对称密钥K,K=Random(),用密钥K对用户上传的数据M进行加密处理,C1=EK(M),数据C1存储在网络存储设备(数据)中;
3)使用虚拟数据端vTCM中的公钥Kpub−s加密对称密钥K,并绑定平台状态,C2=EKpub−s(K);
4)将加密后的密钥C2保存到网络存储设备(密钥)中;
5)用户访问数据时,虚拟密钥端从网络存储设备(密钥)中读取加密后的对称密钥C2;
图6 服务端数据泄漏防护模型
6)通过vTCM中的私钥 Kpri−s解密,得到对称密钥 K=DKpri−s(C2);
7)虚拟数据端从网络存储设备(数据)中读取加密后的用户数据C1;
8)使用在虚拟密钥端解密后的对称密钥K对数据进行解密,M=DK(C2),将数据M传输到用户端.
本模型中的密钥由可信密码模块提供安全保护,加密对称密钥的公私钥对是可迁移密钥,公钥和私钥分别存储在不同的虚拟域vTCM中分开管理,进一步提高存储数据的安全性.也正因如此,对称密钥加密时没有和平台状态绑定,因为加密和解密分别在不同的可信平台完成,如果绑定则解密时会因为平台状态不同而无法进行密钥解密.但是,基于密封原理对指定文件进行杂凑,并将结果与密钥一起密封.需要进行密钥解密时,可以将特定文件拷贝到虚拟密钥端,类似处理即可得到解密后的密钥.这样通过指定文件为密钥的解密又增加了一道锁,可以进一步提高密钥安全.
虚拟机在迁移过程中会使密钥脱离物理TCM的保护,从而可能给密钥带来风险.为此,需要设置专门的密钥管理机制进行密钥管理,使一个虚拟客户端专门负责密钥管理,负责生成公私钥对,并将其发送给虚拟数据端,加解密数据的对称密钥都由密钥管理的虚拟客户端进行管理,解密数据需要先从其中取出密钥,此时取出的密钥是已加密的对称密钥,进行私钥解密后发送给虚拟数据端,用于解密数据,从而确保私钥的安全.
网络中存储的数据越来越多,其安全的重要性也与日俱增.本文在分析网络存储数据安全问题的基础上,将虚拟化技术和可信计算技术相结合,构建虚拟可信平台,提出了客户端数据泄漏防护模型和服务端数据泄漏防护模型,充分利用可信密码模块提供的密钥保护和虚拟化技术的虚拟域相互隔离的特点,在遭受网络攻击的情况下保护数据安全,防止数据非法泄漏.随着物联网和雾计算的发展,网络规模也在不断扩大,数据在网络传输过程中的数据泄漏防护仍需进一步研究.