论文部分内容阅读
摘要:信息技术的高速发展推动了计算模式不断更新,使计算模式逐渐由原来的单机计算发展为网络计算(Networkcomputing),随着这种计算模式的不断发展,基于网络计算的应用系统和软件也越来越多,然而这类软件往往存在着一些安全问题,并且传统的应用于操作系统之上的安全防范技术已经不能彻底解决这些安全问题,本文引入可信计算的概念,基于TPM和TSS,将基于信任链传递机制的远程平台完整性认证应用于VNC中,使得VNC服务器端在与客户端建立连接时能保证客户端是可信安全的。
关键词:信息安全;可信平台模块(TPM);可信软件栈(TSS);平台完整性认证;信任链
中图分类号:TP309 文献标识码:A DOI:10.3969/j.issn.1003-6970.2013.03.038
0 引言
随着网络通信技术的发展,信息和计算资源的共享变得越来越普遍,网络计算模式占据了越来越重要的地位。这种模式的特点是:应用程序和数据都运行和存储在服务器端,客户端甚至只剩下显示和输入设备,不进行复杂计算,用户通过终端设备使用计算中心的各种应用和计算资源。源自AT&T剑桥实验室的虚拟网络计算(Virtual Network Computing,简称VNC)作为这一模式的代表,以其真正的瘦客户技术、跨平台特性、开放代码和低带宽的需要,得到了广泛的应用。
但作为网络软件,VNC存在着严重的网络安全问题。VNC提供的对于客户的身份验证,所采用的方法是随机挑战响应。在客户端请求连接的初始化阶段,双方协商了所要使用的RFB(远程帧缓存)协议版本后,对客户的身份进行验证。这时服务器首先产生一个随机的16字节挑战并发送给客户端,客户端使用用户口令作为密钥用DES对挑战加密,并将加密后的密文作为响应返回到服务器,服务器用保存在本地的口令副本进行解密。若得到的明文与所发送的挑战相符则允许客户与服务器之间建立会话,否则断开连接。这种对客户平台进行的身份验证机制的安全性是远远不够的,如果服务器端和客户端之前的身份验证信息被攻击者截获,攻击者可以通过伪装客户端来与服务器端建立连接,同时,攻击者可以利用客户端平台配置环境存在的安全漏洞进行病毒入侵,造成数据的泄露。所以,为了保证VNC服务器端连接的是可信的客户平台,保证其数据不被泄露,传统的应用于操作系统之上的恶意程序防范技术并不能彻底阻止这些攻击。可信计算的主要思想就是在硬件平台上引入安全芯片架构,为整个PC机提供基于可信平台模块的安全保证,从而保证终端平台的可信性和安全性。
本文通过将基于可信平台模块的平台完整性度量应用于VNC客户端的远程认证中,构建了完整的VNC主机与客户端握手时进行的远程认证系统,使得VNC主机在连接时能确保连接的是一台可信的客户机,从而避免主机中的资源和服务被恶意主机篡改和窃取。
1 相关概念
1.1 TPM及其功能
可信平台模块(TPM,Trusted Platlorm Module)是由TCG提出的可信计算技术中的核心部件,是一种用于增强平台安全性的硬件芯片,具有密码运算和安全存储功能,同时具备防篡改特性。当前TCG已经制定了一系列TPM的相关技术规范,包括有TPM的功能模块及各种相关参数等。TPM主要由随机数生成器、密钥生成器、HMAC引擎、SHA-1引擎、易失性存储器(PCR)、非易失性存储器、密码协处理器、执行引擎和开关等组成,其组织结构如图1所示:
如图所示,TPM内部各组成部分之间以及TPM与外部设备之间使用I/O总线进行信息交互。TPM各组成部分的作用如下:
易失性存储器为TPM中的平台配置寄存器(PCR,Platform Configuration Register),主要用于存储平台配置的度量信息,易失性存储器中存储的内容在系统重启后被重置;
非易失性存储器主要用于存储TPM中需永久保存的数据,如TPM的背书密钥EK、存储根密钥SRK;
密钥生成器用于生成密钥对,可为平台TPM生成无数对密钥;
密码协处理器的功能为执行RSA相关运算,如加密、解密等,相当于RSA引擎,可用于数字签名,且能够生成密钥、存储密钥;
HMAC引擎能够判定数据或命令的正确性,可防止TPM接收错误的数据或命令;
SHA-1引擎用于执行SHA-1哈希运算,运算输出结果长度为160位。
TPM设计的主要目的为:作为平台信任链传递的起点要能够完整地度量平台配置信息、安全存储平台度量信息,并最终能安全地报告平台当前运行环境。
1.2 可信计算平台相关知识
可信计算平台是以TPM为核心,把CPU、操作系统、应用软件和网络基础设备融合为一体的完整体系结构。一个典型的PC平台上的体系结构主要可以分为三层:可信平台模块(TPM,Trusted Platform Module)、可信软件栈(TSS,TrustedSoftware Stack)和应用软件。
TPM是可信计算平台的核心,是一个含有密码运算部件和存储部件的芯片,与平台主板相连。TPM通过提供密钥管理和配置管理等特性,与配套的应用软件一起,主要用于完成计算平台的可靠性认证、用户身份认证和数字签名等功能。
TSS处于TPM与应用软件之间被称为可信软件栈。TSS是对可信计算平台提供支持的软件,它的设计目标是对使用TPM功能的应用程序提供一个唯一入口,并提供对TPM的同步访问。
TSS的结构可以分为内核层、系统服务层和用户程序层。内核层的核心软件是TPM设备驱动(TDD,TPM DeviceDrive)模块,它是直接驱动TPM的软件模块,由TPM的嵌入式操作系统所确定。
系统服务层的核心软件是TSS设备驱动库(TDDL,TSSDevice Library)和TSS核心服务模块(TCS,TSS CoreService)。其中TDDL是一个提供与TPM设备驱动程序TDD进行交互的API库,以方便与TPM的交互。例如:向TPM发送数据或从TPM接收数据,查询TPM状态等。TCS主要功能是管理TPM资源,例如,上下文管理,密钥和证书管理,时间管理,审计管理和TPM参数块产生等等。 用户程序层的核心软件是TSS服务提供模块(TSP,TSSService Provider)。TSP给应用提供的最高层的API函数,以共享对象或动态链接库的方式被应用程序调用,使应用程序可以方便地使用TPM。
工作流程为:应用程序将数据和命令通过TSS服务提供接口发给TSP,TSP处理后通过TCS再传给TDDL。TDDL处理后传给TDD。TDD处理并驱动TPM。TPM传给的响应,反向经TDD、TDDL、TCS、TSP传给应用。有了TSS的支持,不同的应用都可以方便地使用TPM所提供的可信计算功能。
1.3 远程平台完整性认证
平台完整性认证是判断终端是否可信的关键,是对平台当前运行状态的度量验证。平台完整性认证首先需完成平台配置的完整性度量及存储,之后采用合理的认证机制进行远程认证。对完整性度量的研究包括完整性度量方式、完整性度量内容两个方面。本文平台的完整性度量方式采用信任链传递方式,从平台底层组件依次度量至上层应用组件。完整性度量的内容采用对平台组件二进制信息的度量。
信任链的传递过程从终端加电开始,首先由TPM中的可信度量根(CRTM)对BIOS进行完整性度量,若其配置信息未被篡改、完整性没有遭到破坏,则将度量权限转交给BIOS,由BIOS对下一组OS Loader(本文实验中使用的是Grub)的完整性进行度量,而后依据平台启动顺序依次对Grub的配置文件和系统上层应用进行度量监测。据此建立起的链式信任传递模式即为信任链传递机制,模型如图2所示:
二进制认证(BA,Binary Attestation)是由可信计算组织TCG提出的一种平台状态完整性证明方法,其核心在于验证平台组件的二进制度量信息。通过对比平台配置寄存器PCR中存储的完整性度量值及平台处于可信状态下的预期值来判断平台组件的完整性是否被破坏,若两者信息不一致则组件完整性被破坏,平台当前配置环境不可信,反之则可信。二进制认证方法中采用的认证方式为双方直接认证,认证模型如图3所示,其中Verifier表示验证方,Prover为证明方,repository为TPM中的存储区域。
二进制认证过程如下:
(1)验证方发送挑战信息到证明方请求验证目标平台的配置状态信息;
(2)证明方平台代理接受请求,欲收集平台TPM内的相关PCR值以及存储度量日志SML中内的相关实体信息;
(3)证明方平台获取存储的度量日志SML;
(4)证明方平台内的TPM根据代理请求获取指定PCR的值,并使用身份标识密钥AIK对PCR值进行签名;
(5)证明方平台内的TPM在自身的存储区域获取身份凭证;
(6)证明方平台代理收集到TPM的身份标识、签名过的PCR值及存储度量日志SML等信息后,返回给验证方;
(7)验证方验证目标平台的应答,并检验TPM身份凭证、PCR值、SML值,从而确定目标平台是否可信。
2 系统设计
2.1 系统设计目标
当在通过VNC客户端进行远程操作时,客户端的安全性对于远程主机是非常重要的,由于远程主机上的数据和服务往往具有机密性,只能让拥有特定权限的用户进行连接和在远程主机上操作。因此,远程主机在接到远程访问请求时必须保证访问的客户是安全可信的,传统的VNC只在连接建立时进行简单的身份认证,本文基于TPM芯片和平台完整性认证,构建了完整的VNC远程连接建立认证系统,该系统在VNC双方连接时除了进行客户端身份认证外,还会继续对远程客户平台的二进制信息进行签名,并把签名后的信息发送到服务器端,服务器端再将当前的信息与预期的可信信息进行验证,从而能从根本上对远程客户机进行可信认证,进一步加强了客户平台的安全性,有效的保护了远程服务器平台上数据和服务。
2.2 系统整体架构
VNC的连接建立过程包括握手阶段、报文初始化阶段、消息传递阶段,本文只研究VNC双方的握手阶段,具体握手阶段流程如图4所示:
(1)RFB协议版本确定阶段:连接建立开始时,server端先向client发送它所支持的RFB协议的最高版本号,此时client会发送相似的消息告诉server将要使用的协议版本。客户端不应该请求高于服务器的协议版本。如此一来就给客户和服务器端提供了一种向后兼容机制。目前发布的协议版本主要有3.3、3.7、3.8。
(2)协议版本确定后,服务器端和客户端要确定使用的安全认证类型。首先,服务器发送所支持的安全列表给客户端,客户端选择其支持的某几种安全类型并将其反馈给服务器端,如果安全类型为0,表示连接失败;安全类型为1表示不进行任何认证;安全类型为2表示使用VNC认证。服务器在确定使用哪种安全认证后会给客户端发送安全结果,然后双方进行相应的安全身份认证。
(3)在对客户端进行完安全身份认证后,服务器端接着对其进行平台完整性认证,认证开始时服务器向客户端发送认证请求,客户端在接到请求后从TPM中读取PCR中存储的平台度量信息,并对其进行签名,然后将签名后的信息发送到服务器端,服务器端在接受到信息后将其解密,并进行验证,如果与可信平台的配置信息一致则可确定该客户平台可信,并与之建立连接;反之,则不建立连接。
3 实验结果
实验中服务器端和客户端均使用Fedora 12操作系统,客户端机器中装有TPM芯片,因为平台完整性度量只在客户端进行,所以TPM芯片、Trousers软件栈、Grub-IMA等环境只在客户端中搭建,TPM及Trousers的操作如图5图:
本文中VNC客户端在向服务器端发出连接请求后,首先进行客户端身份认证,在此继续保留VNC使用的身份认证机制,在身份认证结束后服务器端继续向客户端发送平台完整性认证请求,客户端在接收到请求后将存储在PCR中的二进制信息签名,并发送给服务器端进行验证,通过对Grub安装Grub-IMA补丁,并将要度量的组件添加到grub.conf配置文件中,在系统启动时Grub就自动将度量信息扩展到PCR中,然后在认证时对PCR中的信息签名并发送给服务器端验证,服务器端验证成功,则握手成功;验证失败,则连接断开。如图6所示:
4 结论
本文在分析VNC连接建立过程中所存在的安全问题的同时,提出将基于TPM进行的远程认证应用于VNC中,提出了完整的VNC服务器端对客户端进行远程身份认证和平台完整性认证的模型,并且构建了该系统的整体架构,防范了操作系统之上可能存在的安全隐患,从而有效增强了VNC客户端的可信性和安全性,使得VNC服务器中的数据和资源更加安全,也是对VNC这类网络计算软件的安全性提高进行了一次有益的尝试。
关键词:信息安全;可信平台模块(TPM);可信软件栈(TSS);平台完整性认证;信任链
中图分类号:TP309 文献标识码:A DOI:10.3969/j.issn.1003-6970.2013.03.038
0 引言
随着网络通信技术的发展,信息和计算资源的共享变得越来越普遍,网络计算模式占据了越来越重要的地位。这种模式的特点是:应用程序和数据都运行和存储在服务器端,客户端甚至只剩下显示和输入设备,不进行复杂计算,用户通过终端设备使用计算中心的各种应用和计算资源。源自AT&T剑桥实验室的虚拟网络计算(Virtual Network Computing,简称VNC)作为这一模式的代表,以其真正的瘦客户技术、跨平台特性、开放代码和低带宽的需要,得到了广泛的应用。
但作为网络软件,VNC存在着严重的网络安全问题。VNC提供的对于客户的身份验证,所采用的方法是随机挑战响应。在客户端请求连接的初始化阶段,双方协商了所要使用的RFB(远程帧缓存)协议版本后,对客户的身份进行验证。这时服务器首先产生一个随机的16字节挑战并发送给客户端,客户端使用用户口令作为密钥用DES对挑战加密,并将加密后的密文作为响应返回到服务器,服务器用保存在本地的口令副本进行解密。若得到的明文与所发送的挑战相符则允许客户与服务器之间建立会话,否则断开连接。这种对客户平台进行的身份验证机制的安全性是远远不够的,如果服务器端和客户端之前的身份验证信息被攻击者截获,攻击者可以通过伪装客户端来与服务器端建立连接,同时,攻击者可以利用客户端平台配置环境存在的安全漏洞进行病毒入侵,造成数据的泄露。所以,为了保证VNC服务器端连接的是可信的客户平台,保证其数据不被泄露,传统的应用于操作系统之上的恶意程序防范技术并不能彻底阻止这些攻击。可信计算的主要思想就是在硬件平台上引入安全芯片架构,为整个PC机提供基于可信平台模块的安全保证,从而保证终端平台的可信性和安全性。
本文通过将基于可信平台模块的平台完整性度量应用于VNC客户端的远程认证中,构建了完整的VNC主机与客户端握手时进行的远程认证系统,使得VNC主机在连接时能确保连接的是一台可信的客户机,从而避免主机中的资源和服务被恶意主机篡改和窃取。
1 相关概念
1.1 TPM及其功能
可信平台模块(TPM,Trusted Platlorm Module)是由TCG提出的可信计算技术中的核心部件,是一种用于增强平台安全性的硬件芯片,具有密码运算和安全存储功能,同时具备防篡改特性。当前TCG已经制定了一系列TPM的相关技术规范,包括有TPM的功能模块及各种相关参数等。TPM主要由随机数生成器、密钥生成器、HMAC引擎、SHA-1引擎、易失性存储器(PCR)、非易失性存储器、密码协处理器、执行引擎和开关等组成,其组织结构如图1所示:
如图所示,TPM内部各组成部分之间以及TPM与外部设备之间使用I/O总线进行信息交互。TPM各组成部分的作用如下:
易失性存储器为TPM中的平台配置寄存器(PCR,Platform Configuration Register),主要用于存储平台配置的度量信息,易失性存储器中存储的内容在系统重启后被重置;
非易失性存储器主要用于存储TPM中需永久保存的数据,如TPM的背书密钥EK、存储根密钥SRK;
密钥生成器用于生成密钥对,可为平台TPM生成无数对密钥;
密码协处理器的功能为执行RSA相关运算,如加密、解密等,相当于RSA引擎,可用于数字签名,且能够生成密钥、存储密钥;
HMAC引擎能够判定数据或命令的正确性,可防止TPM接收错误的数据或命令;
SHA-1引擎用于执行SHA-1哈希运算,运算输出结果长度为160位。
TPM设计的主要目的为:作为平台信任链传递的起点要能够完整地度量平台配置信息、安全存储平台度量信息,并最终能安全地报告平台当前运行环境。
1.2 可信计算平台相关知识
可信计算平台是以TPM为核心,把CPU、操作系统、应用软件和网络基础设备融合为一体的完整体系结构。一个典型的PC平台上的体系结构主要可以分为三层:可信平台模块(TPM,Trusted Platform Module)、可信软件栈(TSS,TrustedSoftware Stack)和应用软件。
TPM是可信计算平台的核心,是一个含有密码运算部件和存储部件的芯片,与平台主板相连。TPM通过提供密钥管理和配置管理等特性,与配套的应用软件一起,主要用于完成计算平台的可靠性认证、用户身份认证和数字签名等功能。
TSS处于TPM与应用软件之间被称为可信软件栈。TSS是对可信计算平台提供支持的软件,它的设计目标是对使用TPM功能的应用程序提供一个唯一入口,并提供对TPM的同步访问。
TSS的结构可以分为内核层、系统服务层和用户程序层。内核层的核心软件是TPM设备驱动(TDD,TPM DeviceDrive)模块,它是直接驱动TPM的软件模块,由TPM的嵌入式操作系统所确定。
系统服务层的核心软件是TSS设备驱动库(TDDL,TSSDevice Library)和TSS核心服务模块(TCS,TSS CoreService)。其中TDDL是一个提供与TPM设备驱动程序TDD进行交互的API库,以方便与TPM的交互。例如:向TPM发送数据或从TPM接收数据,查询TPM状态等。TCS主要功能是管理TPM资源,例如,上下文管理,密钥和证书管理,时间管理,审计管理和TPM参数块产生等等。 用户程序层的核心软件是TSS服务提供模块(TSP,TSSService Provider)。TSP给应用提供的最高层的API函数,以共享对象或动态链接库的方式被应用程序调用,使应用程序可以方便地使用TPM。
工作流程为:应用程序将数据和命令通过TSS服务提供接口发给TSP,TSP处理后通过TCS再传给TDDL。TDDL处理后传给TDD。TDD处理并驱动TPM。TPM传给的响应,反向经TDD、TDDL、TCS、TSP传给应用。有了TSS的支持,不同的应用都可以方便地使用TPM所提供的可信计算功能。
1.3 远程平台完整性认证
平台完整性认证是判断终端是否可信的关键,是对平台当前运行状态的度量验证。平台完整性认证首先需完成平台配置的完整性度量及存储,之后采用合理的认证机制进行远程认证。对完整性度量的研究包括完整性度量方式、完整性度量内容两个方面。本文平台的完整性度量方式采用信任链传递方式,从平台底层组件依次度量至上层应用组件。完整性度量的内容采用对平台组件二进制信息的度量。
信任链的传递过程从终端加电开始,首先由TPM中的可信度量根(CRTM)对BIOS进行完整性度量,若其配置信息未被篡改、完整性没有遭到破坏,则将度量权限转交给BIOS,由BIOS对下一组OS Loader(本文实验中使用的是Grub)的完整性进行度量,而后依据平台启动顺序依次对Grub的配置文件和系统上层应用进行度量监测。据此建立起的链式信任传递模式即为信任链传递机制,模型如图2所示:
二进制认证(BA,Binary Attestation)是由可信计算组织TCG提出的一种平台状态完整性证明方法,其核心在于验证平台组件的二进制度量信息。通过对比平台配置寄存器PCR中存储的完整性度量值及平台处于可信状态下的预期值来判断平台组件的完整性是否被破坏,若两者信息不一致则组件完整性被破坏,平台当前配置环境不可信,反之则可信。二进制认证方法中采用的认证方式为双方直接认证,认证模型如图3所示,其中Verifier表示验证方,Prover为证明方,repository为TPM中的存储区域。
二进制认证过程如下:
(1)验证方发送挑战信息到证明方请求验证目标平台的配置状态信息;
(2)证明方平台代理接受请求,欲收集平台TPM内的相关PCR值以及存储度量日志SML中内的相关实体信息;
(3)证明方平台获取存储的度量日志SML;
(4)证明方平台内的TPM根据代理请求获取指定PCR的值,并使用身份标识密钥AIK对PCR值进行签名;
(5)证明方平台内的TPM在自身的存储区域获取身份凭证;
(6)证明方平台代理收集到TPM的身份标识、签名过的PCR值及存储度量日志SML等信息后,返回给验证方;
(7)验证方验证目标平台的应答,并检验TPM身份凭证、PCR值、SML值,从而确定目标平台是否可信。
2 系统设计
2.1 系统设计目标
当在通过VNC客户端进行远程操作时,客户端的安全性对于远程主机是非常重要的,由于远程主机上的数据和服务往往具有机密性,只能让拥有特定权限的用户进行连接和在远程主机上操作。因此,远程主机在接到远程访问请求时必须保证访问的客户是安全可信的,传统的VNC只在连接建立时进行简单的身份认证,本文基于TPM芯片和平台完整性认证,构建了完整的VNC远程连接建立认证系统,该系统在VNC双方连接时除了进行客户端身份认证外,还会继续对远程客户平台的二进制信息进行签名,并把签名后的信息发送到服务器端,服务器端再将当前的信息与预期的可信信息进行验证,从而能从根本上对远程客户机进行可信认证,进一步加强了客户平台的安全性,有效的保护了远程服务器平台上数据和服务。
2.2 系统整体架构
VNC的连接建立过程包括握手阶段、报文初始化阶段、消息传递阶段,本文只研究VNC双方的握手阶段,具体握手阶段流程如图4所示:
(1)RFB协议版本确定阶段:连接建立开始时,server端先向client发送它所支持的RFB协议的最高版本号,此时client会发送相似的消息告诉server将要使用的协议版本。客户端不应该请求高于服务器的协议版本。如此一来就给客户和服务器端提供了一种向后兼容机制。目前发布的协议版本主要有3.3、3.7、3.8。
(2)协议版本确定后,服务器端和客户端要确定使用的安全认证类型。首先,服务器发送所支持的安全列表给客户端,客户端选择其支持的某几种安全类型并将其反馈给服务器端,如果安全类型为0,表示连接失败;安全类型为1表示不进行任何认证;安全类型为2表示使用VNC认证。服务器在确定使用哪种安全认证后会给客户端发送安全结果,然后双方进行相应的安全身份认证。
(3)在对客户端进行完安全身份认证后,服务器端接着对其进行平台完整性认证,认证开始时服务器向客户端发送认证请求,客户端在接到请求后从TPM中读取PCR中存储的平台度量信息,并对其进行签名,然后将签名后的信息发送到服务器端,服务器端在接受到信息后将其解密,并进行验证,如果与可信平台的配置信息一致则可确定该客户平台可信,并与之建立连接;反之,则不建立连接。
3 实验结果
实验中服务器端和客户端均使用Fedora 12操作系统,客户端机器中装有TPM芯片,因为平台完整性度量只在客户端进行,所以TPM芯片、Trousers软件栈、Grub-IMA等环境只在客户端中搭建,TPM及Trousers的操作如图5图:
本文中VNC客户端在向服务器端发出连接请求后,首先进行客户端身份认证,在此继续保留VNC使用的身份认证机制,在身份认证结束后服务器端继续向客户端发送平台完整性认证请求,客户端在接收到请求后将存储在PCR中的二进制信息签名,并发送给服务器端进行验证,通过对Grub安装Grub-IMA补丁,并将要度量的组件添加到grub.conf配置文件中,在系统启动时Grub就自动将度量信息扩展到PCR中,然后在认证时对PCR中的信息签名并发送给服务器端验证,服务器端验证成功,则握手成功;验证失败,则连接断开。如图6所示:
4 结论
本文在分析VNC连接建立过程中所存在的安全问题的同时,提出将基于TPM进行的远程认证应用于VNC中,提出了完整的VNC服务器端对客户端进行远程身份认证和平台完整性认证的模型,并且构建了该系统的整体架构,防范了操作系统之上可能存在的安全隐患,从而有效增强了VNC客户端的可信性和安全性,使得VNC服务器中的数据和资源更加安全,也是对VNC这类网络计算软件的安全性提高进行了一次有益的尝试。