摘要:密码技术是解决信息安全问题的核心技术。密码技术的运用可以基于软件密码组件或硬件密码组件。硬件密码组件在自身安全性和实现安全功能方面比软件密码组件更具优势。本文论述硬件密码组件的数学模型、系统结构、硬件结构,并比较硬件密码组件与软件密码组件的优劣。
关键词:密码 硬件密码组件 软件密码组件
引 言
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)抵抗能量分析攻击
进行密码运算时总要消耗运算设备一定的能量,攻击者通过收集能量值,就可能计算出密码运算时所采用的密钥值。特别是在进行