加密机的相关信息

hacker0ne 2011-11-09

主机加密机是通过国家商用密码主管部门鉴定并批准使用的国内自主开发的主机加密设备,加密机和主机之间使用TCP/IP协议通信,所以加密机对主机的类型和主机操作系统无任何特殊的要求。通过加密机的使用为计算机网络系统提供安全保密数据通信服务,防止网上的各种欺诈行为发生。

一般而言加密机主要有四个功能模块:硬件加密部件、密钥管理菜单、加密机后台进程、加密机监控程序和后台监控进程。

硬件加密部件主要的功能是实现各种密码算法,安全保存密钥,例如CA的根密钥等。

加密机通过提供前台API给应用系统提供的加密开发接口,应用系统通过把加密机前台API使用加密的加密服务,加密机前台API是以标准C库的形式提供。

加密机支持目前国际上常用的多种密码算法,目前使用较为广泛的为对称加密算法DES、3DES。

2加密机在网络安全中的应用方法

对于需要使用加密机进行网络信息加密的系统应用,一般为涉及账务交易或者敏感信息,如电信扣费系统,银行交易系统,政府部门信息发布系统等等。在这些系统中如果使用不加密系统网络安全设置,必然会产生风险。如果采用简单的软件加密设置,系统安全被破解的机率就会很大。因此本文主要阐述如何在这些需要加密机的网络应用中使用硬件级加密技术,来达到防范安全隐患的目的。

一般而言加密机采用三层密钥体系,并且对不同密钥(特别是工作密钥)的功能做了严格的使用限制。一般密钥分层体系如下图2-1所示:

  

加密机的相关信息

(1)本地主密钥。

本地主密钥(LocalMasterKey),即为加密机主密钥,是指存储在加密机中,用于保护存储在加密机外的各种密钥和关键数据的密钥加密密钥。

(2)传输主密钥。

传输主密钥(TransferMasterKey),是指在两台加密设备间(加密机和加密机或加密机和终端间)用于加密保护工作密钥的更换。

(3)工作密钥

工作密钥(WorkingKey),是指处理对象为一般数据的密钥,如加密敏感信息报文,MAC校验。

<!--StartFragment -->
-

3加密机应用整体框架结构

对于使用硬件加密机进行网络安全加解密的应用,从总体框架来讲,最主要要有以下硬件:网络安全防火墙、硬件级加密机。

通过网络安全防火墙首先对外部访问进行第一道的安全屏障,对访问链接进行安全检查,对非法访问进行安全隔离。在通过网络安全防火墙后再由硬件级加密机对所需要进行通讯的数据报文进行安全检查,MAC加解密校验操作。对非法访问进行隔离、拒绝。如图3-1所示,为简单加密机应用架构。

加密机在网络安全应用系统的主要应用为对相关联系统通讯报文进行加解密操作,校验报文的合法性,以及对报文中敏感信息进行加解密处理,防止信息泄漏,以及非法报文攻击的风险。

在进行加解密操作最主要的加解密方法为使用对称密钥加解密的DES算法。目前采用比较多的是3DES密钥加解密算法。

使用3DES加解密操作要具备以下条件:加解密双方已知的主密钥、主密钥通过约定方式进行工作密钥交换操作。

4加密机密钥产生方法

(1)加密机主密钥产生方法。

硬件加密机进行工作首先要完成自身系统参数设置工作,最主要完成的设置为加密机主密钥的灌注工作。硬件级加密机一般采用多人、分段、手工的方式灌注主密钥,灌注完成的主密钥由加密机系统自动进行合成、存储。并且加密机自身存有密钥自毁装置,对于非法进行主密钥获取的行为,加密机会启动主密钥自毁以保证主密钥的安全性。

(2)加密机传输主密钥产生方法。

使用加密机安全系统产生传输主密钥主要通过应用调用加密机提供的前台API生成用于网络通讯安全的传输主密钥。

为保证传输主密钥的安全性,一般调用加密机提供前台API生成密钥时,同时产生两到三个密钥分量,通过对这两到三个密钥分量进行合成来形成真正的传输主密钥。

(3)Linux系统加密机传输主密钥产生方法。

函数原型:

IntHSMAPIGTransKey(intiKeyLen,intiKeyType,char*bCKey,char*bCValue);

输入参数:

intiKeyLen//密钥字节长度;

intiKeyType//密钥类型:0x01:通信主密钥。

输出参数:

char*bCKey//LMK加密的随机密钥密文;

char*bCValue//随机密钥的检验码。

函数返回值:

0x00://正确返回;

for(i=0;i<num;i++)

{

ret=HSMAPIGTransKey(iKeyLen,iKeyType,&TransKey[iKeyLen*i],check_value);

if(ret!=0)

{

returnret;

}

}

(4)加密机工作密钥产生方法。

对于使用加密机进行网络安全加密的应用系统,在产生传输主密钥后,需要产生工作密钥。利用工作密钥对进行网络传输的报文、敏感数据加解密操作,以及MAC校验操作。

为保证网络应用的安全性,工作密钥需要采用动态同步操作。通过不断更新、同步工作密钥,保证工作密钥的安全性。在实际进行通讯时双方要对敏感信息使用工作密钥进行加密,对报文进行MAC加密。接收报文一方要使用工作密钥对接收到的报文进行MAC校验,对敏感信息进行解密操作。

应用通过加密机请求产生工作密钥,调用加密机提供前台API函数,加密机通过加密算法,返回使用指定传输主密钥加密的工作密钥。通过网络传输同步给对方主机。

(5)Linux系统加密机工作密钥产生方法。

函数原型:

IntHSMAPIGWorkKey(intiKeyLen,intiKeyType,char*bCKey,char*bCValue);

输入参数:

intiKeyLen//密钥字节长度;

intiKeyType//密钥类型:0x01:PIN加密密钥;0x02:MAC计算密钥;0x03:数据加密密钥。

输出参数:

char*bCKey//LMK加密的随机密钥密文;

char*bCValue//随机密钥的检验码。

函数返回值:

0x00://正确返回;

函数原型:

IntHSMAPIKeyChange(intiKeyLen,intiTMKLen,intiKeyType,char*bTMK,char*bCLMK,char*bCKeyTMK,char*bCValue);

输入参数:

intiKeyLen//密钥字节长度;

intiTMKLen//传输主密钥字节长度;

intiKeyType//密钥类型:0x01:PIN加密密钥;0x02:MAC计算密钥;0x03:数据加密密钥;

char*bTMK//LMK加密的ZMK密文;

char*bCLMK//LMK加密的工作密钥密文。

输出参数:

char*bCKeyTMK//TMK加密的工作密钥密文;

char*bCValue//工作密钥的检验码。

函数返回值:

0x00://正确返回;

rc=HSMAPIGWorkKey(0x01,0x01,(char*)lbuf,tmpbuf);

if(rc!=0)

{

printf("产生本地主密钥加密的工作密钥错误");

return(-1);

}

rc=HSMAPIKeyChange(0x01,0x08,0x01,tmk,lbuf,(char*)lxbuf,txbuf);

if(rc<0){

printf("将本地主密钥加密的工作密钥转换为传输主密钥加密的工作密钥错误!");

return(-1);

}

通过实现方法可以看出,工作密钥的产生需要两个步骤的操作:

①通过向硬件加密机申请随机工作密钥,生产后的工作密钥为适应本地主密钥加密;

②将本地主密钥加密的工作密钥转换为传输主密钥加密的工作密钥,通过网络传输给对方主机。

结束语

本文通过对核心级主密钥、传输主密钥、数据交互级工作密钥。三层密钥体系在整个网络安全中的应用的说明。阐述了在网络安全应用中如何设置加密机,以及如何使用加密机提供前台API进行网络安全应用的原理。

相关推荐