基于国产化可信芯片的文件加密系统研究

时间:2022-10-19 02:24:03

基于国产化可信芯片的文件加密系统研究

摘 要 本文提出了建立基于国产化可信芯片的文件加密系统的必要性,采用我国自主研发的TCM安全芯片为可信根,通过C++/C#语言混合编程实现可信系统开发,经过TCM芯片进行加密的数据就只能在该平台上进行解密和处理,证明了TCM的可信信息系统的可行性。

【关键词】国产化 TCM 加密 解密

1 研究背景

研发自己的可信计算技术,是国家安全的需要,我国目前采用的信息产品存在严重的安全隐患。关键信产品都是来自国外,安全后门普遍存在。

在此背景下,许多公司和研究机构在可信计算方面进行了大量的研究,2005年4月联想集团和中科院计算所完成了安全芯片和可信PC平台开发。2005年4月,兆日科技也推出符合可信计算联盟技术标准的可信安全芯片。2008年4月底,中国可信计算联盟(CTCU)在国家信息中心成立。2007年12月,国家密码管理局正式了《可信计算平台密码支撑平台功能和接口技术规范》,至此,中国有了自己的可信计算规范。

2 研究目的

建立基于硬件的应用软件的访问控制策略,让指定的用粼谥付ㄖ斩松鲜褂弥付ǖ挠τ萌砑做指定的事,指定策略范围之外的行为都是不被允许的,为应用系统提供一个可信、可控、可管理的安全运行环境。包含如下几点:

2.1 芯片级的身份鉴别

可信信息系统采用基于TCM模块的平台身份证书标识用户身份。

2.2 芯片级的数据保护

利用了硬件级加解密算法,完成数据保护。

2.3 芯片级的应用软件访问控制

采用基于信任链的访问控制机制,用户在计算机终端上只能安装和使用已授权的应用软件和程序。应用软件及其包含的可执行文件、动态链接库和控件的完整性,由可信密码模块安全芯片验证。

3 系统总体设计

3.1 系统架构设计

本系统三层结构,包括可信密码模块、中间层及应用层。其中:

3.1.1 可信密码模块

主要用为可信计算电脑提供数据加密,将敏感数据存放在芯片的安全存储区中;提供完整的密钥管理方案,包括密钥的建立,存储,迁移以及密钥协商等功能。

3.1.2 中间层

介于前端TCM硬件模块与应用软件中间,提供数据加密程序、数据签名等功能的封装。

3.1.3 应用层

包括身份认证,数据加密,软件保护等上层应用。

3.2 系统逻辑结构图

为了简化系统开发和实现一个稳键、可靠的系统架构,根据系统分层设计的思想,把系统分为:表示层,业务逻辑层,中间层,数据处理层。

3.2.1 表示层

使用WinForm作为数据表示层。

3.2.2 业务逻辑层

使用C#作为业务逻辑层。

3.2.3 中间层

使用C#、CLR和C++作为中间传输层。

3.2.4 数据处理层

使用Subsonic代码生成工具作为数据处理层。

4 系统关键技术实现

C/C++则擅长写算法的编写,执行效率高,因此封装TCM的底层函数都是用C/C++开发的,而C#则擅长快速开发,同时有良好的兼容性,本系统利用CLR C++(指托管C++)把本机C++代码包装起来编写输出类库,供C#使用,由于CLR C++和C#都符合CLS规范,所以两者可以无缝集成,在一个解决方案里包含这两种语言的项目。下面以数据加密为例说明一下实现方法:

4.1 用C++实现TCM数据加密函数

//加密函数

//keylenth:密钥长度;key:密钥数据;dataLength:被加密数据长度;

//data;加密数据;enDataLength:密文长度;enData;密文数据

TSM_RESULT TcmEncryption(UINT32 keylenth,BYTE* key,UINT32 dataLength,BYTE* data,UINT32 &enDataLength,BYTE* &enData)

{//函数实现}

4.2 使用托管C++包装本地C++类

TSM_RESULT TcmEncryption(UINT32 keyLenth,BYTE* key,UINT32 dataLength,BYTE* data,UINT32 &enDataLength,BYTE* &enData)

{

System::UInt32 r=-1;

CTcm tcm;//非托管C++类

r=tcm.TcmEncryption(keyLenth,key,dataLength, data,enDataLength,enData);

return r;

}

由以上代码可以看出,托管c++代码的函数声明跟C++几乎一样。编译生成TCM_CM_DLL.DLL供C#使用。

4.3 在C#中使用托管C++库

在C#项目中的“引用”添加对“TCM_CM_DLL.DLL”的引用。用对象浏览器查看TCM_CM_DLL的成员变量和函数,可以看出导出的加密函数为:

public uint TcmEncryption(uint keyLenth, byte* key, uint dataLength, byte* data, uint* enDataLength, byte** enData)

此函数可以直接在C#使用。

5 结论

本系统参考《可信计算密码支撑平台功能与接口规范》,设计开发了国产自主平台下的可信信息系统,实现了密钥管理、数据加密、文件签名、软件保护等功能,系统运行结果表明该方法切实可行,执行效率高,为应用软件系统提供一个可信、可控、可管理的安全运行环境,经过TCM芯片进行加密的数据就只能在该平台上进行解密和处理,从而把机密数据绑定在该平台上,即使数据被盗,数据也无法解密。

参考文献

[1]李小将,梅栾芳,师俊芳等.基于TCM的嵌入式可信终端系统设计[J].计算机工程与设计,2010,31(04):733-735.

[2]何慧,江水,李立号,桑耘.基于TCM的国产化虚拟可信计算平台研究[J].计算机工程,2011(S1).

[3]李伟.基于可信密码模块的电子签名系统设计与实现[D].西安:西安电子科技大学,2012.

[4]冯登国.可信计算-理论与实践[M].北京:清华大学出版社,2013.

[5]敬军,郝福珍,徐东华.国产自主平台下可信执行环境的设计与实现[J].计算机工程与设计,2012(10).

作者单位

核工业计算机应用研究所 北京市 100048

上一篇:基于PDM的BOM航天研制过程管理技术研究与实现 下一篇:浅谈城镇居住小区绿化种植设计