引 言

1 硬件密码组件的概念

密码技术是解决信息安全问题的核心技术。要实现信息的保密性、完整性、可控性和不可否认性等安全要求,都离不开密码技术的运用。在具体的信息安全系统中,密码技术的运用可以基于软件密码组件(简称为SCM)或硬件密码组件(简称为HCM)来实现。HCM从本质上来说是一个包含某些敏感信息,能自主完成特定功能的黑盒子;外界不能访问其中的敏感信息,亦不能干予其中正在执行或即将执行的运算任务。黑盒子可以通过严格定义的接口和外界进行交互,接口在黑盒子的完全控制之下。任何企图通过物理手段探测黑盒子内部的行为都将导致其中敏感信息的完全清除。

从抽象角度,可以用如下方式描述HCM。

符号和定义:

X——敏感信息,其明文不能以任何形式出现在HCM之外;

E(X)——敏感信息X的秘文;

Fi(X,Y)——HCM用其保存的敏感信息X和外界输入的信息Y完成某项功能,如签名、加密和解密等其它特定功能。HCM的N项功能可以用集合{ Fi(X,Y)|1≤i≤N }表示。

Ui——某个HCM的用户,其全部M个用户可以用集合{ Ui |1≤i≤M }表示。

Zij——表示用户Ui对HCM的功能Fj(X,Y)的权限信息。Zij=0表示用户没有权限,Zij=1表示用户拥有权限。

则HCM可用一个五元函数G(E(X),Y,Fj,Ui,Zij)表示,其定义如下:

从应用角度来看,HCM是一个由软硬件组成的安全计算系统,其系统结构如图1所示。整个HCM总体上可以分为两大部分,即软件部分和硬件部分。在形式上,硬件部分体现为一个硬件实体,而软件部分则是与此硬件实体相配套的驱动程序、动态库等软件包。硬件部分进一步可细分为底层硬件电路、初始引导固件、操作系统或控制程序固件、密码算法库、内部功能固件等几部分。软件部分由接口驱动系统、用户应用编程接口和标准应用编程接口组成。其中标准应用编程接口是指按照某些业界接口标准,如PKCS#11、CSP等进一步对用户应用编程接口进行封装,以方便上层应用系统的调用。标准应用编程接口并非所有 HCM所必需,所以用虚框表示。

2 硬件密码组件与软件密码组件的对比

软件密码组件是指密码技术的软件实现。与HCM比较,SCM开发周期短,开发成本低,使用维护方便,这是其优点。但在自身安全性和实现安全功能方面,HCM则具有优势,这主要体现在以下几个方面。

(1)完整性保护

HCM的完整性和运行时的保密性可以得到很好的保证,而SCM的完整性和运行时的保密性则很难得到保证。HCM由硬件和硬件之上的固件组成,硬件中的密码算法芯片一般采用反熔丝的FPGA或ASIC实现,难以破读或更改。固件则通过烧录器写入到Flash芯片,不能非法改写。另外,HCM 中的RAM空间由其专用,外部程序不能对其进行访问;SCM一般保存在计算机的硬盘上,运行时调入系统内存运行。由于计算机系统本身的安全性不高,因此硬盘上或内存中的SCM都可能被攻击者、病毒程序或黑客程序篡改。另外,SCM运行时占用的内存空间虽然受到操作系统的保护,但不能保证其不被其它进程访问,这样SCM运行时所需的敏感信息或运行中产生的敏感信息就可能泄露。

(2)对商用操作系统安全性的依赖

SCM运行时需要操作系统提供的支持,而HCM本身构成了完整的运行环境,无需依赖操作系统等其它外部支持。由于操作系统往往存在某些漏洞,这些漏洞若被攻击者利用,就可能会给SCM带来严重的安全问题。

(3)抵抗能量分析攻击

进行密码运算时总要消耗运算设备一定的能量,攻击者通过收集能量值,就可能计算出密码运算时所采用的密钥值。特别是在进行运算量很大的 RSA签名时,这种基于能量的攻击更容易得到签名私钥。SCM对于这种攻击是脆弱的;而HCM则可以通过特别措施来防止攻击者收集能量值,从而抵御能量攻击。

(4)种子密钥的保存

安全的保存种子密钥对SCM是非常困难的。种子密钥需要长期保存,对整个系统安全至关重要。对于SCM来说,种子密钥只能保存在计算机的硬盘上,显然保存种子密钥的明文是非常不安全的。一般采用的办法是通过一个口令加密种子密钥,然后保存种子密钥的密文。每当用户使用种子密钥时,需要输入口令。但这样亦是不安全的,首先这就要求有用户在场,才可使用种子密钥,否则就不能使用。其次用户往往会选择容易记忆的简单口令,这使其容易被攻击者猜测。

(5)安全地进行密码操作

在HCM中可以安全地进行密钥生成(公钥密钥对、会话密钥)、加密、解密、签名等操作,同时保证加解密密钥和签名私钥的安全性;而在SCM 中进行这些操作时,则存在泄露这些密钥的可能性。

(6)密码算法实现的效率

在HCM中通过专用的密码运算器,如公钥协处理器和专用对称算法芯片可以大大提高对称算法和非对称算法的运算速度;而SCM密码运算的速度则依赖于计算机系统的效率。这使得目前SCM中密码算法的运算速度往往低于HCM的实现速度。

(7)逆向工程攻击

SCM保存在计算机硬盘或内存中,而一般的计算机对硬盘和内存的保护是非常脆弱的,因此它容易受到逆向工程攻击。

SCM的基本组成如图2所示。SCM用到的数据包括敏感数据和一般数据。敏感数据是指密钥、用户PIN码等数据。SCM的程序逻辑可分为密码算法(对称和非对称的)、密码协议(例如SSL、IPSEC等)以及其它程序控制逻辑。利用逆向工程的工具和技术,攻击者可以监控程序的输入和输出,从而获得用户口令等敏感信息;其次攻击者还可以扫描程序数据区,得到密钥、口令信息;另外攻击者对程序的运行逻辑进行跟踪,可以得到密码算法和密码协议的运行轨迹,特别是如果算法和协议不是公开的,而是保密的,这时攻击者可以得到重要信息。而且攻击者还可以进一步修改软件执行逻辑,制造“后门”。

逆向工程工具可以分为两大类:第一类是为获得程序的运行逻辑,反汇编、反编译工具属于此类;第二类是为获得程序实时的运行信息,仿真、调试工具属于此类。IDA Pro是目前最有效的反汇编工具。它可以自动对目标代码进行分析,自动检测Win32 API功能调用,并能建立这些调用之间的关联。IDA Pro还能以交互方式运行,攻击者可以告诉IDA Pro某些程序片断是带何种参数的API调用,从而提高IDA Pro的分析能力。另外IDA Pro还有脚本语言,攻击者可以用该语言编写能够进行反汇编的小程序。W32Dasm是另一个著名的反汇编自由软件,同时它是一个功能强大的调试器,可以获取程序运行的实时信息。Java是目前最流行的网络编程语言,Java源代码经过汇编成为Java字节代码。这种代码不同于一般的汇编代码,它具有唯一性,独立于底层的处理器。这就意味着Java源代码和Java字节代码之间几乎存在着一一对应的关系,所以Java类文件可以很容易反编译成Java源文件。互联网上有很多专门完成这项功能的工具软件。另一个类C反编译工具是REC,它可以输出可读性较好、容易理解的反编译结果。

利用仿真、调试工具可以建立软件的模拟运行环境,在这个环境中通过实时观察各种变量、内存和寄存器的变化情况,从而获得较为准确的程序运行信息。最著名的调试工具是SoftICE。利用该软件对在操作系统内核层运行的驱动程序都可以进行跟踪调试。Microsoft Visual Studio亦提供了功能强大的调试环境,不过它主要是对在操作系统用户层运行的程序进行仿真跟踪。

(8)密钥的随机性保证

在HCM一般都有物理噪声源,可以产生真随机数,以此为种子可以产生高质量的随机大素数、公钥密钥对和会话密钥;而在SCM中没有物理噪声源,只有取系统时钟、用户击键频率等作为随机因素,由此生成的公钥密钥对和会话密钥的随机性很难保证。

(9)物理暴露与密封

普通的计算机在物理上是暴露的,攻击者可以轻易地进行系统重启、修改硬盘文件,安装黑客软件等攻击操作。甚至攻击者还可以将整台机器“盗走”,据为已有。另外,普通计算机上的系统主板等电路没有防护措施,攻击者可以利用逻辑分析仪等其它工具对印刷电路板上的芯片进行侦测、记录。当密钥在芯片之间传递时就可能被攻击者获取。而HCM有物理防护措施,其关键电路在物理上被密封,避免被攻击者探测。如果强行打开物理密封,则会导致系统自毁或敏感数据完全清除,从而保证了HCM在物理攻击下的安全性。

(10)备份与灾难恢复

对于重要的信息系统,备份与灾难恢复机制是必不可少的。这就需要把关键数据复制,分散保存在不同地方。但如何保障这些数据不被窃取、修改和盗用呢?单单利用SCM不能很好地解决这个问题,而采用HCM则可构建安全可靠的数据备份与恢复系统。

(11)可靠的时间戳服务

时间戳在密码系统中的应用越来越广,最初使用时间戳是用来保证认证和密钥协商协议中传递消息的新鲜性。目前随着网上电子商务的不断发展,在传统信息的保密性、身份的真实性、内容的完整性和数据的不可抵赖性等安全要求之外,还要解决信息的时效性问题,这主要有两方面的含义。

① 保证信息的时效性。对于像商业情报、专利发明等对时间敏感的信息,通过申请时间戳,可以证明你在某一时刻拥有这一信息。

② 保证操作有时效性。对于像竟标、竟拍等对时间敏感的活动,通过申请时间戳,可以证明你在某一时刻完成了这项活动。

在HCM中可以包含精确的时钟部件,它可以独立可靠地为系统提供准确时间信息。而SCM本身不能产生时间信息,只能取计算机的系统时间,显然这是不可靠的;或者从专门的时间提供系统获取时间信息。

3 硬件密码组件的硬件结构

典型的硬件密码组件结构如图3所示。基本组成部件由中央处理器与外围接口、随机存储器、Flash、BBRAM、硬件随机数发生器、密码运算协处理器、实时时钟、总线接口等组成。其中Flash保存所有固件和部分加密敏感信息,BBRAM作为安全存储器保存敏感信息明文。硬件控制逻辑通过大规模的可编程逻辑阵列CPLD实现。另有物理安全检测与反应电路,负责检测物理攻击,并及时向中央处理器发出攻击反应触发信号。以上部件包含在硬件安全边界之内,通过加装物理密封层保证整个系统的物理安全性。在安全边界之外有长效电池作为后备电源。

HCM在物理上主要从以下几个方面区别于一般的硬件系统。

① HCM内部有安全存储部件,其中保存敏感信息,这些信息不会以任何形式出现在HCM外部。安全存储部件只能由HCM自己访问,其它任何形式的访问都会导致所有敏感信息的完全清除。普通的硬件系统没有这样的安全存储部件。

② HCM有物理安全边界,它可以阻断对HCM的物理攻击。普通的硬件系统没有这样的密封装置,攻击者可以对其中的信号进行多种形式的探测。

③ 在密码算法和协议本身没有安全漏洞的前提下,其安全性主要取决于密钥的长度和随机性。密钥的长度可以提前确定,如1024位或更高的2048位的RSA密钥,128位的对称算法密钥;而要生成具有高度随机性的密钥就必须有安全的随机信源。因此HCM中必须有硬件随机数发生器,为系统提供真随机数。普通的硬件系统一般没有专门的硬件随机数发生器。

④ 为了获得较高的密码运算效率,HCM内部往往有专门的密码运算协处理器。普通的硬件系统主要通过软件实现各种密码算法和协议,其效率主要依赖于系统CPU 性能。

为了增加安全性,HCM往往会有多个物理接口和外界通信,每个接口完成特定的功能。例如,具有PCI接口、USB接口、以太网接口和 RS232接口的HCM,其每个接口分别完成以下功能。

① PCI接口:向上层用户提供HCM的各种密码服务功能,如加密、解密、签名、验证或其它特定应用执行结果。

② USB接口:HCM对操作员身份进行验证时,操作员将标识其身份的USB电子TOKEN插入USB接口,即提供操作员身份认证的物理通道。

③ 以太网接口:通过该接口,可以在网络上对HCM进行远程配置和管理。另外,还可以向远端用户提供密码服务。

④ RS232接口:通过该接口可以对HCM进行本地配置和管理。

结 语

硬件密码组件是信息安全系统的核心部件,是嵌入式硬件设计技术与密码理论结合的成果。目前国内的硬件密码组件设计技术与国外相比还有差距,这为商用嵌入式系统的研发厂商进入信息安全领域提供了良好的机遇。希望本文能对此起到抛砖引玉的作用。

责任编辑:gt

硬件密码组件的硬件结构、作用及实现应用设计相关推荐

  1. 基于Montgomery算法的高速、可配置 RSA密码IP核硬件设计系列(五)——模幂模块(抵抗侧信道攻击)模块的设计实现方案

    基于Montgomery算法的高速.可配置RSA密码IP核硬件设计系列(五) 2.2 模幂模块设计(抵抗测信道攻击模块) 2.2.1 模幂模块及内部模块的功能 2.2.3 模幂各模块的实现方案 2.2 ...

  2. Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用

    Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...

  3. 计算机组装需要的硬件,组装电脑选择硬件,只要记住2个装机思路,选好硬件配置不是难题...

    要说选购一套电脑整机,如今大多数人还是喜欢自己选择硬件进行组装.毕竟根据自己的想法需求,去组装一套电脑整机,可以比到实体店组装少花一些冤枉钱. 电脑组装 其实,组装电脑选择硬件,自己动手选择硬件进行组 ...

  4. 【人工智能系列 - 智能硬件 - 01】演化硬件的概述

    演化硬件(Evolvable Hardware)是一种硬件电路或者大规模集成电路. 它能够像生物一样根据环境的变化而改变自身的结构以适应其生存环境,具有自组织.自适应.自修复的功能. 演化硬件概念的正 ...

  5. 设计规范 | 详解组件控件结构体系

    设计规范 | 详解组件控件结构体系 2018年4月16日luodonggan 什么是控件?什么组件?两者的区别是什么? Control翻译为控件,Component翻译为组件. 通俗的解释说法就是组件 ...

  6. Linu命令 hwclock,clock,设置硬件时钟,linux硬件时间

    Linu命令 hwclock,clock hwclock作用与clock相同,暂未发现不同之处. 相关的常用命令: 查看硬件时钟: [root@192 temp]# clock 2020年10月09日 ...

  7. 计算机局域网有哪些硬件组成,局域网的硬件组成有哪些

    局域网的硬件组成有哪些 局域网(英文:Local Area Network 缩写LAN),指有限区域(如办公室或楼层)内的多台计算机通过共享的传输介质互连,所组成的封闭网络.一般是方圆几千米以内,局域 ...

  8. java jtextfield 密码_Java Swing实战(三)文本组件JTextField和密码组件JPasswordField

    接下来添加文本组件JTextField和密码组件JPasswordField. /** * @author: lishuai * @date: 2018/11/26 13:51 */ public c ...

  9. 怎么关闭计算机硬件加速,怎么关闭硬件加速?关闭硬件加速的操作技巧分享

    懂得电脑的用户就知道,硬件加速就是利用硬件模块来替代软件算法以充分利用硬件所固有的快速特性.但是有些电脑开启这个功能会导致视频卡顿,那么怎么关闭硬件加速功能呢?下面,小编给大家介绍关闭硬件加速的操作步 ...

最新文章

  1. 自动驾驶的视觉感知包括哪些内容?
  2. python动态数组的最大值_python实现动态数组的示例代码
  3. 在vscode中使用pylint-django插件解决pylint的一些不必要的错误提示【转】
  4. 霍夫变换提取线段与圆
  5. Oracle创建dblink和同义词小记
  6. c web文件服务器,使用C++制作简单的web服务器(续).pdf
  7. html5 实现坦克大战,HTML5实现坦克大战(一)
  8. jquery简单实现树形结构收缩展开效果
  9. [前台]---js中去掉双引号或者单引号
  10. visionpro定位不跟随图像_医海探弋,TMS定位技术的发展分析
  11. 查找排序数组的最小值(js)
  12. 十几减9的口算题_小学一年级下册十几减9数学教案
  13. 树莓派上搭建ActiveMQ
  14. vue 双向数据绑定
  15. IP Scanner Pro for mac(局域网IP扫描软件)
  16. 运维第二篇:Docker--Harbor私有镜像仓库搭建
  17. Win10 提示账户名与安全标识间无任何映射完成
  18. html引入微软雅黑,求让所有浏览器支持微软雅黑的方法_html/css_WEB-ITnose
  19. C++实现的windows系统下的WIFI管理
  20. 使用RSD对高分1号卫星数据进行批量大气校正

热门文章

  1. html5 webview,HTML5+学习历程之webview经典案例
  2. php微信模板信息发送的代码例子,微信模板消息发送样例
  3. java游戏服务器面试_我做游戏开发这八年
  4. [你必须知道的.NET]第十九回:对象创建始末(下)
  5. 接口和抽象类是否继承了Object
  6. lfsr算法c语言,求助:如何用C语言实现LFSR加密
  7. linux tcp server开源,GitHub - 06linux/cellnet: 高性能,简单,方便的开源服务器网络库...
  8. 【Hihocoder - 1723】子树统计(线性基合并)
  9. 【POJ - 3253】Fence Repair(贪心,时光倒流)
  10. 【HDU - 3038】How Many Answers Are Wrong (带权并查集--权为区间和)