软件与硬件密码模块安全性研究

2019-12-06 06:22张玉国
中国科技纵横 2019年19期

张玉国

摘 要:密码模块是保护数据信息的核心部件,密码模块保护数据信息的同时,其自身的安全性如何保证。密码模块有哪些实现方式,能达到多高的安全级别,不同的实现方式有哪些优劣,本文从两种实现方式对密码模块的安全性做了简单的介绍。

关键词:密码模块;软件密码模块;硬件安全模块;PCIE密码卡

中图分类号:TP309 文献标识码:A 文章编号:1671-2064(2019)19-0045-03

0 引言

当今社会是一个信息化的社会,在保护计算机及电信安全系统的需求下,密码应用的需求日益增强,数据需要密码的保护来防止非授权的访问。密码技术能够实现实体鉴别和不可抵赖等安全服务,但密码的安全性和可靠性直接取决于实现它们的安全密码模块。

在密码应用系统中,如何保护及使用敏感的密钥信息对整个密码应用系统的安全强度有着至关重要的影响。一般由两种方式来使用敏感的密钥信息:软件密码模块在主机内存中使用密鑰;硬件密码模块,密钥存储及使用均在扩展板卡或其他嵌入式密码设备中进行,该嵌入式设备要嵌入到服务器中使用,该类产品典型的形态有密码卡、安全UKEY。除了软件密码模块和硬件密码模块,还有其他类型的模块,如固件密码模块,混合软件密码模块,混合固件密码模块,但对密钥的使用根本的区别在于:是否在内存中使用敏感的密钥信息。

1 软件密码模块的安全性分析

软件密码模块的边界为执行在可修改的运行环境中的纯软件部件,软件密码模块运行的环境多为计算平台及操作系统。

软件密码模块中的敏感的密钥信息对计算平台和操作系统是可见的,攻击者利用对计算平台及操作系统的熟悉程度,基于现有计算平台及操作系统的漏洞便可以实现达到获取敏感的密钥信息的目的,因此软件密码模块的高安全性对计算平台以及操作系统的安全性设计有着高度的依赖。

下面从两个攻击案例,来说明软件密码模块所面临的威胁。

1.1 攻击案例1:系统漏洞-内存窥视密钥信息

攻击基于OpenSSL软件密码模块实现的文件加密程序,获得文件加密程序所使用的密钥信息。

本案例是一个内存攻击的简单展示,展示的内容为获取目标进程的密钥信息。

目标程序“enc.exe”功能介绍:从口令衍生密钥,使用RC4加密需要保护的文件。

使用了OpenSSL软件安全中间件;

遵循PKCS#5文件加密标准;

被加密文件:abc.txt;

口令:123456;

衍生密钥:???????。

图1所示,攻击者编写了一段程序mematt_1.exe,使用ReadProcessMemory的方法,对enc.exe目标进程进行了内存窥视,比较容易地获取了目标进程中使用的密钥。

1.2 攻击案例2:CPU芯片漏洞-Meltdown

内存隔离是计算机系统安全的基础,例如:内核空间的地址段往往是标记为受保护的,用户态程序读写内核地址则会触发异常,从而阻止其访问。在本文中,我们只简单描述这个叫Meltdown的硬件漏洞。Meltdown是利用了现代处理器上乱序执行的副作用,使得用户态程序也可以读出内核空间的数据,包括个人私有数据和密码(或密钥)。由于可以提高性能,现代处理器广泛采用了乱序执行特性。利用Meltdown进行攻击的方法和操作系统无关,也不依赖于软件的漏洞。地址空间隔离带来的安全保证被Meltdown无情的打碎了(半虚拟化环境也是如此),因此,所有基于地址空间隔离的安全机制都不再安全了。在受影响的系统中,Meltdown可以让一个攻击者读取其他进程的数据,或者读取云服务器中其他虚拟机的数据,而不需要相应的权限。

Meltdown漏洞并非针对某个系统或者某个软件,而是针对计算机体系结构,该漏洞危害能够遍及大多数近代的CPU。手机,个人PC,服务器,到云服务器以及虚拟机,都受到了这次漏洞的影响。

图2展示的是读取内核内存的实例,计算机基于内存隔离实现的内核空间数据的保护被完全破坏。如果密钥出现在受保护的内核空间内,攻击者利用CPU漏洞窃取密钥信息是可实现的。

更详细的分析及影响可参考下面两处文章。

https://www.linuxidc.com/Linux/2018-01/150307.htm

https://blog.csdn.net/zhipingxi/article/details/79307648

1.3 软件密码模块安全性总结

2.1以及2.2章节只用两个例子来说明,攻击者能够利用计算平台以及操作系统自身的一些漏洞,对软件密码模块实施攻击。此类利用硬件或系统自身漏洞进行获取用户敏感信息的例子还有很多,这些案例也足以说明软件密码模块是无法从根本上保证敏感信息的安全性,因为软件密码模块最终都要在主机内存中运行。

如果被保护的密钥信息达到一定的安全级别,我们需要利用具有更高安全级别的硬件密码模块来实现敏感密钥信息的保护。

2 硬件密码模块的安全性分析

软件密码模块运行过程中,所使用的安全算法,密钥信息,权限控制都无一例外的会出现在主机内存中,这给了攻击者以可乘之机。与软件密码模块不同,硬件密码模块的特点是:密钥由硬件密码模块保护,密码算法由硬件密码模块实现,密码运算在硬件密码模块内进行,操作过程中可以保证密钥只出现在硬件密码模块之内。本文只以简单的方式对硬件密码模块做一下介绍,硬件密码模块有一整套复杂完善的安全机制来确保敏感数据的安全性,不做过多赘述。

2.1 硬件密码模块硬件组成