可信计算机平台发展思考

可信计算机平台发展思考

 

传统的安全防护技术主要是通过防火墙、病毒检测、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机。#p#分页标题#e#   2.4外部密钥存储   在ETSM中,只有EK和SMK存储在可信模块的内部,而其余的密钥都是通过根密钥SMK进行层次级保护以后通过双端ISl加密存储在外部Windows的磁盘存储设备中。只有在密钥需要使用的时候才将外部的密钥通过双端口导入到可信模块内部使用,使用完成之后再将模块内部密钥释放,这在很大程度上节约了空间使用。   对ETSM板卡生成的密钥,如果想要进行保存,可以通过函数Tspi—Context—RegisterKey存储在外部Windows保护磁盘空间里,并且为之分配一个唯一的UUID号,UUID号只是密钥的标识,通过UUID号,可以对此密钥进行相关操作,所有的密钥可以分为两类,非对称密钥和对称密钥。对称密钥,是加密和解密共享同一个密钥,是SMS4算法密钥,密钥长度为128比特位。   非对称密钥是SM2算法密钥,它的私钥长度为256比特位,而公钥是两个长度为256比特位组成的坐标点。而在模块的外部,密钥是不能以明文进行存储的,必须用父密钥进行加密才能存储,为了方便进行检索,分以下四种情况分别存储。   2.4.1存储SMS4密钥,父密钥为SMS4密钥   需要存储的密钥为128比特位,经过父密钥加密过后仍然是128位,因此它的存储格式比较简单,用文件SMS4一SMS4.txt进行存储。   每个密钥项在文件中以换行符隔开,以便存取。父密钥ID号若为0,则表示此密钥是由可信模块内部的存储主密钥SMK进行加密的。著子密钥ID号为0,则表示没有子密钥,在密钥树中为叶子节点。   2.4.2存储SMS4密钥,父密钥为SM2密钥   SM2密钥的公钥为两个256位的整数,共512位即64字节。对于SM2非对称密钥,它的公钥部分不需要加密,只需要保护它的私钥部分。128位的SMS4密钥数据经过SM2的公钥加密得到两个密文点Cl(clx,cly)、C2(c2x,c2y)。用文件SMS4_SM2.txt进行存储。   2.4.3存储SM2密钥,父密钥为SMS4密钥   SM2非对称密钥的公钥共有512位64字节,不需要经过加密存储。而它的私钥部分经过SMS4算法加密存储后,为256位32字节。用文件SM2~SMS4.txt进行存储   2.4.4存储SM2密钥,父密钥为SM2密钥   需要存储的SM2密钥的私钥部分用它的父密钥的公钥进行加密,加密后的数据是4个256位长度,占用128字节。而公钥部分无需加密。用文件SM2__SM2.txt进行存储。   密钥的产生是在可信模块内部进行存储的,如果只是临时使用,则不需要进行存储,只有一些用户需要存储的密钥,才要通过双端口缓存进行存储。在可信模块内部,经过父密钥加密后将加密后的密钥数据按照双端口控制信息格式写入双端口,并触发中断给Windows,Windows从双端口读取出密钥数据块,根据不同长度判断存入相对应的文件中。   2.5系统测试   本系统的加密算法、密钥管理等模块已通过Linux系统的C编程实现,随机密钥的生成模块采用AheraFPGA逻辑设计实现。完成加密程序、密钥管理模块在ARM处理器中加载之后,并在Windows系统运行系统客户应用程序,则搭建了一个可信验证平台。通过在该平台完成的网络信息传递及处理,能够验证系统方案的正确性。   3结束语   密钥在可信计算机体系中对平台的身份证明、安全存储和完整性度量起着非常重要的作用,因此密钥管理是实现可信计算的重要环节。本文在自主开发的$3C2410的ARM9的ErrsM板卡中,设计实现了符合TCM规范的密钥管理体系结构,对其中的密钥管理形式进行了详细的分析,并设计实现了密钥的有关管理模块,通过测试得到了可行性验证,系统进一步完善提升功能后,将重点应用于国防及安全性要求较高的计算机网络环境中保障信息安全性。