正文:
图1 TrustedJVM系统结构图
我们使用TrustedJVM作为基础,通过验证独立于平台的可移植代码的高级、精确、动态的属性来进行远程认证来解决该问题,核心是使用可信虚拟机来构建新系统,从而明确的获得或要求运行于其上的应用程序具有不同属性,验证其从哪里来,并验证或证明其行为符合安全策略的要求。
3.2.本系统核心内容和可行性
3.2.1.系统的核心内容
远程验证是可信计算平台(TCP)的核心功能之一,它给各种不同的应用程序授权
[6]。但是,现有的远程验证技术完全不能适应当今的分布式异构计算环境以及普通开放系统 。
使用基于语言的虚拟机能够使远程证明具有动态特性,并独立于平台。其目标是验证程序的行为,而不是一个特殊的二进制状态。使用可信虚拟机代替可信操作系统来验证远端所运行代码的各种属性,虚拟机其上的软件都是可信的。
远程验证的请求由可信虚拟机来完成。这些请求要求执行或检查运行于可信虚拟机上代码的特定安全策略
[7]。因此,强制符合的并不是特定的二进制执行状态,而是安全测试和其他远端要求的规范。
3.2.2.可信虚拟机的可行性:
首先,代码以可移植的方式表达(JAVA字节码),那么其必然可以包括高级的代码信息:类层次,方法名,类型信息等等。这些高级信息的存在以及代码以独立于平台的格式表示使得这些代码非常适合程序分析。通过分析,一个可信的虚拟机能够验证程序的高级原始信息。
第二,代码完全在虚拟机的控制下运行,那么其执行就能够被明确的监视。因此,一个可信的虚拟机能够验证关于程序执行的动态属性或其输入。
3.2.3.可信虚拟机可以验证的属性
●验证类属性:由于子类B或者C包括了A的行为,远端可以要求类A转化为众所周知的类B,或者某接口C。C可能被限制使用输入输出操作,不接受未授权的网络连接。
●验证动态属性:程序完全在虚拟机的控制下运行,因此,可信虚拟机能够验证动态的属性。包括程序的运行时状态和输入。
●验证随意的属性:在本机安全策略的范围内可信虚拟机有运行任意分析代码的能力。因此,远端可以通过发送测试代码来适当的分析验证各种属性。
●验证系统信息:远端可以发送代码来测试相应的系统和虚拟机属性,可信虚拟机能够验证其结果。比如,在运行一个分布式计算程序前(比如SETI@HOME),服务器可能想测试系统和虚拟机的浮点运算能力,这通过可信虚拟机发送一个浮点测试程序即可达到。
属性验证就比单纯的执行映象的HASH值要精确、完整得多
[8]。现在要验证的是程序的相关属性,那么这就可以明确的区分以前合为一体的问题:身份和行为。程序行为被虚拟机明确的验证,直接结果就是,现在大量不同的应用可以在本远程验证构架中使用,只要其符合需要的属性。密码验证则扮演绑定代码行为声明与做出该声明实体――TrustedJVM的作用。
3.3.主要技术研究与实现
●JVM和安全芯片之间数据的可靠传递:数据在操作系统上的安全可靠的传输问题是一般可信验证系统的常见弱点,因此我们的系统首先着力以解决此问题。我们使用内嵌加密解密芯片,并在JVM中构建一个与之相对应的加密解密模块,保证所有数据在穿越操作系统时都是用足够强的算法加密后的密文,从而在操作系统层形成一个逻辑的“隧道”,这样保证JVM和安全芯片之间数据的可靠传递。
●TrustedJVM强制验证机制的实现:如本文3.2.3所述,一个可信的虚拟机能够验证关于程序执行的动态属性或其输入来完成验证工作。
●存储隔离机制的实现:我们使用目前比较成熟的硬盘保护机制、磁盘过滤技术和加密系统相结合的方法来隔离硬盘,使用加密技术和内存监视技术来保证内存隔离机制的实现。
3.4.主要技术关键问题研究与实现
●加解密算法的实现:实现对敏感数据的加解密,而且数据的加解密操作均在可TrustedJVM和在安全芯片内实现,加解密过程对操作系统完全透明,确保不被恶意用户破解。
●JVM验证类属性、JVM验证动态属性、JVM验证随意的属性、JVM验证系统信息:见本文3.2.3。
●远程验证:实用的密码技术使秘密证明不需要第3方的参与,最简单的机制是组签名
[9]。组签名(group signatures )使秘密证明不需要用户做任何额外工作。硬件制造商在每台机器标准证明中嵌入不同的秘密标记密钥,这个密钥在导入时被用来标记固件(如BIOS)。但是,签名不能暴露是那台机器标记的,就是说,证明签名使远程实体相信硬件是可信的,但没有暴露硬件的身份。如下图2:

图2 远程验证示意图 图3 远程能力测试示意图
●远程能力测试:服务端必需知道客户端的浮点运算能力、I/O处理能力、加密解密能力等,因而使用一段代码测试这些能力是必要和可靠的
[11]。简单工作原理图如上图3:
●磁盘过滤技术的实现及扩展:在操作系统的文件系统中加入中间隔离,使对文件系统的任何操作都被磁盘管理程序接收,在处理完成后再转发给操作系统的文件系统,这样保证磁盘数据的可信度
[12][13]。
4.测试与结论
●测试环境
软件环境:Linux RedHat 9.0
开发环境:该软件主要在基于J2SE1.4标准 采用java语言进行开发
硬件环境:Intel Pentium IV,主频3.06GHz,内存1024M,外部存储器120G
●测试结果
测试业务 |
测试次数(并发进程) |
所耗时间(毫秒) |
类属性验证 |
1000000(9) |
11.7 |
完整性度量 |
100000(1) |
24.1 |
远程能力测试 |
100000(3) |
39.8 |
动态程序行为检测报警 |
400000(1) |
成功48708,成功率98% |
综上所述,我们认为“基于TCP的可信JVM远程验证系统”支持类属性验证、类行为监控、安全策略继承配置,提供动态远程认证、远程能力测试、唯一主机标识、自身免疫功能,提供实时完整性度量功能。其各项测试完全符合设计要求。
2/3 首页 上一页 1 2 3 下一页 尾页