2021-4-10 | 计算机
传统的安全防护技术主要是通过防火墙、病毒检测、Virtualprivatenetwork(VPN)等来实现安全保障,而这些技术基本上都是以软件为基础,侧重以防为主,致使各种防御措施越做越复杂,系统性能要求越来越高,但是安全性仍然不能得到保障。
现在通常的做法是,在纯软件防护基础上,再增加一层硬件保护,协同特有的软件技术,能够很大程度地提高甚至完全保障系统的安全性。而可信计算密码支撑平台正是一种能够提供高可靠性、可用性的软硬件计算机平台,它的思想是通过可信平台模块,以密码学技术为支撑,以操作系统为核心,通过一些加解密技术和认证技术来为系统提供安全性保障。
1基于ETSM板卡的可信计算机平台
本文采用的是以双处理器协同处理的硬件体系结构技术,是一个双处理器双操作系统的安全Windows终端,即硬件体系结构采取保持主核系统(PC机)的软硬件结构不变、增加辅核系统(ARM处理系统)的方法。
在Windows主机中的PCI插槽中插人一块ARM板卡,ARM板卡运行Linux系统,通过PCI9054高速芯片与Windows主机相连。
板卡中集成了密码算法模块、随机数发生器(产生真随机数)模块以及可信处理模块。Windows系统和Linux系统通过ARM板卡中的双端口存储器进行内部重要数据信息通信,双端口处理器是可信密码模块与Windows主机进行密钥管理的缓冲存储器,是可信计算机平台的重要组成部分,Windows主核系统和Linux辅核系统通过中断机制共同对密钥的加载、存储和授权数据进行有效的管理。
2密钥管理
可信密码模块内部提供SM2一椭圆曲线密码算法、SMS4一对称密码算法、SM3一密码杂凑算法、HMAC一消息认证码算法。这些算法的功能都是在密钥的基础上提供的,因此作为密码学基本要素的密钥管理决定着整个可信计算机平台的安全性旧J,是可信计算体系的核心。
2.1密钥管理总体架构
在可信计算中,密钥是以树形结构存储的。
整个密钥层次为树形结构,存储主密钥(Storagemasterkey,SMK)是整个密钥层次结构的根密钥,其余的密钥是由它直接或间接地进行保护的,其保护方式为父密钥加密子密钥¨0l。本文是以双核协同处理的硬件体系结构,在可信计算密钥树形结构的基础上,针对ETSM平台,设计实现出可信计算机密钥体系结构,密码算法与随机数发生器由FPGA硬件实现,其具有快速、高效、产生真随机数的特点,它为E,rsM提供最基本的可信密码算法(SM2、SMS4、SM3、HMAC),并提供随机数产生和基本数据加解密服务;ETSM密钥管理模块是ETSM的核心模块,它对密钥的生成、加载、注册、销毁等进行有效安全地管理,其管理方式是按照树形结构来实现的;双端口密钥缓存管理是PC机与ETSM板卡通信的枢纽,承担着命令字与数据的交换;外部密钥数据库是用来存放经ETSM生成并加密的密钥数据块,对于用户需要注册的密钥就是存储在此外部的密钥数据库中。
2.2ETSM密钥管理
可信密码模块中的密钥按照使用范围可以分为三类L8曲J:(1)平台身份类密钥,包括密码模块密钥(TCMendorsementkey,EK)、平台身份密钥(Platformidentitykey,PIK)、平台加密密钥(Plat-formencryptionkey,PEK);(2)平台存储类密钥,如SMK,用于保护PIK和用户密钥UK的主密钥,是密钥存储树结构的根密钥;(3)用户类密钥,如UK,用于实现用户所需的密码功能,包括机密性、完整性保护和身份认证等。
在信息系统中,密钥若是无限制的明文存储,无论访问控制如何复杂,也总会有一些特权用户有机会存取密钥,这对信息系统的安全是十分不利的。因此在可信计算中就采用多级密钥管理体系,SMK是整个密钥层次结构的根密钥,是密钥存储的关键密钥,其余所有的密钥都是由它直接或间接地进行保护的,由SMK派生多个子密钥。
父密钥以加密的方式加密子密钥存储,对于处在叶子节点的密钥,层次越高,它的安全性越高,但是它的管理就会相对复杂一些,一般三层可以满足安全要求。本文实现的ETSM密钥管理,其核心就是密钥的数据管理与实现。密钥的数据结构如图3所示,algorithm字段标识该密钥属于何种密钥(SM2或SMS4密钥),每个子密钥都是由其父密钥进行加密,对于SMS4密钥,它的整个密钥数据部分都要进行加密,而对于SM2密钥,它的公钥部分不进行加密,私钥部分则由其父密钥进行加密。父密钥的类型也可以是SM2或SMS4的一种,因此hSM2Key与hSMS4Key用来存放必要的密钥信息。authDataUsage存放该密钥的授权数据,flag代表此密钥是否已解密,0代表已加密,l代表已解密。
函数Tspi—Key—CreateKey(TCM—KEYhKey,TCM—KEYhParentKey)使ETSM板卡生成指定的密钥,由父密钥对生成的密钥进行加密保护。调用函数Tspi—Key—LoadKey(TCM—KEYhKey,TCM—KEYhParentKey)将密钥加载到ETSM板卡内部才能使用,只有通过父密钥对需加载的密钥进行解密才能够正确地加载。密钥的生成是依赖于高效的FPGA硬件实现,当生成密钥字符串后,必须由指定的父密钥进行加密,并填充加密后的相应字段。同理,密钥的加载只有通过父密钥对需加载的密钥进行解密才能够正确地加载,并填充相应的字段。如果密钥是需要授权的,就需要为密钥设置正确的授权数据才能加载,否则就会加载失败。
2.3双端口密钥缓存管理双端口存储器是PC机与ETSM进行信息交换的关键部件,它为上层的应用程序提供可信的服务保障。当用户使用ESPI层的功能函数时,PC机Windows往双端口存储器写入相应的数据,并触发中断向ETSM板卡提出相应的功能请求,ETSM板卡则在内部响应请求做相应处理,再将处理结果返回给Windows。命令字段是整个密钥缓存的重要部分,它代表的是功能命令字段,每当用户需要ETSM的服务时,ETSM就会根据命令字段的类型做出相应的处理,命令字段种类繁多,这里仅列出几条密钥相关的部分定义。例如,当用户调用Tspi—Data—Encrypt时,命令字段就为KEY—ENCRYPT,并在双端口存储器写入相应的密钥信息,包括加密的密钥数据块以及密钥类型、授权数据等,并触发中断,ETSM收到中断后读取命令字,并提取密钥信息,对数据进行加密,将加密后的结果返回给PC机。