基于多技术融合的密码计算资源池研究

2021-04-06 00:39李向锋傅大鹏
信息安全研究 2021年4期
关键词:虚拟化密码模块

李向锋 傅大鹏 李 敏

(北京数字认证股份有限公司研究院 北京 100080)

(lixiangfeng@bjca.org.cn)

互联网和云计算的快速发展推动了电子认证从1.0时代迈向2.0时代[1],而电子认证的发展需要密码技术的不断进步来支撑.在云计算应用迅猛发展的今天,业务应用对密码技术提出新的需求和挑战,人们迫切希望密码支撑能够提供与地域无关、易于水平扩展的云密码服务[2].陈亚男等人[3]的《一种基于密码云的政务云密码应用研究》描述云技术与密码技术融合、优化密码应用的方案.而云密码服务的一大核心愿景就是提供弹性扩展、按需使用、按量计费、即需即用的密码功能.这就需要服务提供方能够构建一个具备高度水平扩展能力的密码计算能力、海量密码管理能力、密钥管理能力的密码资源池,将密码资源池通过各种接入和交付技术映射给云虚拟化之上的各层使用.文献[4]介绍了一种云计算环境下密码资源池系统的应用.本文在这些研究的基础上,分析并提出了密码技术综合利用微内核操作系统、CPU安全增强、虚拟化等软硬件技术,构建了一个涵盖CPU、操作系统、虚拟化的多层次、体系化、安全的、可支持大规模应用的密码计算资源池方案,用以作为云密码服务的强有力底层支撑架构.

1 现有方案和技术分析

当前有很多种云密码的解决方案,涵盖了公有云、混合云、私有云各种云部署模式,其技术路线主要有以下几类:

1) 为密码设备加一个“云化”的服务层.

使用若干传统密码机组成密钥管理和密码计算的集群,用以完成实际密码功能,使用“密码服务网关”层,完成密码功能请求的认证、路由转发、日志、监控等处理.网关层设计时可以采用云技术,使整个密码服务具备若干与云服务的位置无关、便捷易用的特征.典型方案例如Cryptomathics公司的CSG(crypto service gateway)[5].其典型架构如图1所示:

图1 使用CSG的方案

CSG方案能够满足在部分私有云场景中的密码需求,所设计的网关层降低了应用部署、使用和维护密码功能的成本.其不足之处是进行密码处理的密码机/密码卡没有满足云计算特征的、可快速水平扩展的需求,依然需要部署更多的专用密码设备.另外,业务系统直接使用CSG提供的服务接口和管理接口,因为没有明确的业务接入端点和管理端点,因而不易于进行策略管理和服务管控.

2) 将密码设备进行虚拟化.

另一种方案是对密码设备进行虚拟化.将密码硬件虚拟成多个密码硬件,向外提供的是一个“虚拟的密码机”[6].云服务厂商使用硬件密码产品为公有云提供服务,用户在云服务商基础设施上部署的业务系统,在需要密码机时直接租用虚拟密码机,包含在自身业务系统的虚拟私有云(virtual private cloud, VPC)内.

虚拟密码机方案借助虚拟化技术和群组内共享密钥的技术,在一定程度上做到了密码计算能力共享.其不足之处是当客户租用虚拟密码机之后,在后端仍然需要为该客户保留较多的密钥资源和密码计算资源,因此在密码能力快速水平扩展时依然存在很多困难.

上述2种典型密码资源池的方案都在试图解决云中业务面临的密码问题,构建密码资源池并交付给使用者.但对于需要按需服务、水平扩展、便捷安全的密码资源池,还存在一些不尽人意之处.因此,本文提出了一种新的方案,用以构建密码计算资源池并映射给使用者的方案来解决这2个难题.

2 密码资源池技术

2.1 使用密码计算单元和密钥管理系统构建密码资源池

密码资源池由密钥管理系统(KMS)和多个软件或硬件密码计算单元CCU(crypto computing unit)组成,封装为服务提供给业务系统.CCU可以为软件形态——软件密码计算单元(software crypto computing unit, SCCU)或硬件形态——硬件密码计算单元(hardware crypto computing unit, HCCU).其中,软件计算单元能够提供低廉的硬件成本,易于部署使用,能够提供更强的水平扩展能力,相比硬件密码计算单元具备更多的优势.在系统中多个SCCU与其他系统相互配合,共同完成密码计算任务.

由于软件密码计算模块潜在的安全问题,需要进行针对性设计,可以考虑的技术包括微内核操作系统和基于CPU的密码保护技术.

1) 使用微内核操作系统减小密码计算单元的攻击面,提升其按需启动和回收的能力.

当前计算机系统通常需要设计非常复杂和庞大的操作系统,以满足灵活多变的业务需要和交互需求,但这也带来了诸多安全问题.正如Tanenbaum等人[7]在其论文“Can We Make Operating Systems Reliable and Secure”中所指出的,复杂而灵活的体系结构设计也使系统充满了各种漏洞,导致不得不通过频繁的补丁和更新来加固.而上文所述的密码计算单元SCCU,其中所包含的硬件和软件基本上是固定不变的,所提供的服务也存在非常清晰的边界,因此,现代操作系统很大一部分内容是SCCU所不需要的,这些内容的存在反而给SCCU带来各种潜在的漏洞与隐患.

正因为传统操作系统漏洞频繁出现,微内核操作系统成为操作系统领域近年来的研究热点,其代表性项目是Unikernel[8].Madhavapeddy等人[9]在ACM 2013发表的“Unikernels: Library Operating Systems for the Cloud”中提出,Unikernel机制能够显著降低系统复杂度,减少系统攻击面:一是所形成的系统镜像复杂度低,资源占用少,因而启动和关闭速度非常快.Manco等人[10]发表的“My VM is Lighter (and Safer) than Your Container”中描述了对Unikernel展开的研究,一个简单的Unikernel虚拟机能够在2.3 ms完成启动,单个物理主机可以支持8 000个虚拟机,挂起和恢复时间仅为60 ms,30/25 ms,每个虚拟机运行期间内容占用仅为3.6 MB,这有助于根据外部密码计算量的需求迅速启动计算资源.二是使用Unikernel技术最终形成的SCCU中,没有传统意义上的操作系统,仅有密码计算所需的驱动CPU进行密码计算的组件、基本文件系统、网络协议栈等等,没有SSH、没有多用户管理、USB驱动程序等可能引发系统漏洞的组件,因而借助Unikernel能够很大程度上缩减SCCU的攻击面,提升系统安全性.

采用Unikernel技术封装密码模块,如图2所示.

2) 使用基于CPU的密码保护技术增强密钥保护.

图2 基于Unikernel形成的密码模块

在图2所示的密码模块中,虽然能够形成一个密码边界,但依赖内存和CPU计算其密钥保护能力还是不够的.对此,可借助CPU安全增强机制来加强保护.

近年来,CPU等硬件提供了不少安全机制可以用来进行密码保护,包括Intel 的TSX[11]和SGX[12]、ARM的TrustZone[13]等等.其具体思路是通过CPU的特殊指令集,在内核中形成一个封闭的空间进行密码运算,在运算过程中,外部的访问者不能对此封闭空间进行读取和写入,从而保证密钥安全和密码算法功能正确性.

微内核操作系统、基于CPU和OS内核的密码保护技术可以结合使用,微内核操作系统最大程度上隔离外在的各种入侵和攻击,基于CPU的密码保护技术形成本机和操作系统内部的边界与屏障,从而形成高安全性的SCCU单元,并进一步通过大规模SCCU的集群,形成计算能力高度可扩展的密码计算资源池.

2.2 借助虚拟化技术将实体能力映射到虚拟环境

密码资源池建设完成之后,需要将其映射给虚拟化层之上的业务系统或使用者.当前映射的机制主要有Pass-Through模式和SR-IOV模式.Pass-Through模式允许将宿主机中的物理 PCI 设备以独占方式直接分配给客户机使用.SR-IOV模式支持多个客户机共享单个设备,支持使用更少的设备来支持更多的客户机,可以提高数据中心的空间利用率.

当前更适合与大规模高度可水平扩展的密码资源池配合使用的是Virtio技术.Virtio属于半虚拟化的一种实现,即Guest OS中需要运行Virtio的驱动程序,通过Virtio设备和后端(KVM/QEMU)进行交互.

使用Virtio技术时,在虚拟机中的模块驱动和实体系统的功能实现可以是毫无关系的.例如虚拟机中的密码卡,其具体实现可以由密码资源池提供.甚至可以将密码资源池呈现为虚拟机中的加密打印机、可信计算模块、加密磁盘等等.通过Virtio机制结合密码技术,可以将高度水平扩展的密码能力,映射到虚拟化空间虚拟机中的虚拟密码模块.用户在云服务商处租用包含密码模块的虚拟机,可以使用实际密码模块同样接口的虚拟密码模块,包括管理界面、密码API接口等.密码功能通过Virtio机制,透过虚拟化层(VMM)传递给密码资源池,由密钥管理单元、密码计算单元协同配合完成该密码请求.

2.3 使用Unikenel机制对映射的密码能力进行轻量级封装和编排

映射到虚拟层的密码模块需要进行服务化封装,如同将传统密码卡封装成密码机一样,将密码模块封装成虚拟密码服务单元(virtual crypto-service unit, VCSU).为了保证VCSU的自身安全,使用上文所述的“微内核操作系统”来封装虚拟密码服务单元,并对虚拟密码单元进行分组编排,借助微内核操作系统强隔离机制和快速启动、快速回收的特点,提升密码服务层的安全性和可伸缩性.

Unikernel为每个虚拟密码服务单元之间提供虚拟机层面的隔离,因而增强了密码功能访问的安全性;由于2.2节中所描述虚拟密码单元的安全特性,使虚拟密码服务单元攻击面大为降低;2.2节描述的密码单元轻量级特性,使SCCU与其底层的OS包含在一个非常小的镜像中,使系统的发布和管理非常容易.也使系统的启动和回收时间大大缩短,因而,完全可以随着外部请求的增加即时启动大量的VSCU为其进行服务,随着外部需求的减少进行回收,这也做到了真正的随需使用资源,能够大大降低资源池运营方的成本.

至此,我们设计了支持快速水平扩展、支持高度资源共享的密码资源池,并将其通过虚拟化技术映射成虚拟机上的密码模块,供业务系统和用户使用,满足云密码服务的需求.

3 总 结

本文所述的方案一是采用通用计算机实现了构建大规模易扩展的密码计算单元集群,降低了密码资源池建设的成本,提升了密码计算水平扩展能力;二是通过微内核操作系统实现了密码单元按需部署按需启动;三是使用虚拟化技术实现了密码资源池到大量虚拟密码模块的映射,极大地方便了上层业务系统、密码行业上游生态厂商的集成.

猜你喜欢
虚拟化密码模块
28通道收发处理模块设计
“选修3—3”模块的复习备考
密码里的爱
基于OpenStack虚拟化网络管理平台的设计与实现
密码抗倭立奇功
对基于Docker的虚拟化技术的几点探讨
H3C CAS 云计算管理平台上虚拟化安全防护的实现
密码藏在何处
存储虚拟化还有优势吗?
夺命密码