加强网络信息安全既要防范外部人员非法介入或窃取信息,更要防范内部人员的主动泄密。根据美国联邦调查局(FBI)和计算机安全机构(CSI)的调查结果显示,80%以上的安全威胁来自内部;中国国家信息安全测评认证中心调查结果也表明,信息安全问题主要来自泄密和内部人员犯罪。

为了实现涉密文件的安全主动防护,在此提出基于网络的系统密钥加密机制,利用系统密钥加密文件数据,使文件只能被特定网络环境下的合法用户所存取。在此将在密码技术研究和eKey开发应用基础上,设计一种密钥安全获取通信协议,研制一种严密的密钥安全管理措施,实现基于网络的主动防泄密文件加密。

1 加密与eKey模块应用设计

1.1 加密算法选择

对称密码技术也被称为单密钥加密,它是指在加密与解密时使用同一密钥。对称密码技术的优点在于效率高,算法简单,系统开销小,适合加密大量数据。

非对称密码技术也被称作公钥密码技术,在加解密时分别使用两个不同密钥:一个可对外界公开,称为“公钥”;一个只有所有者知道,称为“私钥”。公钥与私钥之间紧密联系,用公钥加密的信息只能用相应的私钥解密,反之亦然。非对称密码技术可提供安全认证服务,其主要缺点是加/解密速度慢、耗用资源大。因此,采取综合运用对称密码技术与非对称密码技术的加解密方案。

鉴于AES对称密码算法具有高强度安全性能,故选用AES算法实现涉密文件数据的加密。由于用户认证信息与密钥信息数据相对较小,选用非对称密码RSA算法实现系统对用户的合法认证,以及系统密钥的安全获取。

1.2 eKey的应用开发

eKey又名电子密码钥匙,是一种结合了智能卡技术与USB接口技术的数据安全产品。这里选用明华公司的eKey,其内置SmartCOS[CD*2]XC智能卡操作系统,在文件系统、密码算法和安全控制三方面都进行了精心设计,具有高效完备的安全访问机制。

本文使用eKey来存储用户密钥、系统公钥、系统密钥惟一的ID号及其他重要数据。为了实现对数据的加密与认证操作,基于明华提供的接口函数库开发了eKey应用函数库(eKey.dll)。该函数库可实现与eKey有关的系统操作,包括密钥生成、加密签名等。

方法功能说明

EncryptWithCert()使用eKey内公钥证书中的用户公钥加密数据

EncryptWithKey()使用eKey内用户私钥加密数据

DncryptWithKey()使用eKey内用户私钥解密数据

GenKey() eKey内生成加密或签名密钥对

GetEKeyID()从eKey中获得其惟一的序列号

GenAesKey()eKey硬件中随机产生256位AES算法密钥

2 密钥安全获取通信协议

为保证只有通过合法身份认证的用户才能得到系统密钥SK(System Key),在此设计了一种密钥安全获取通信协议。该协议首先通过检测用户eKey的序列号,并与用户注册的eKey序列号相比较来实现用户合法性判断,然后通过系统密钥SK的ID号,来正确获取每个涉密文件对应的系统密钥SK。用户在服务器端注册时将其eKey惟一的序列号与用户身份绑定,并使用此序列号作为初始值生成密钥EK,再使用EK加密SK,得到EK{SK},并将其保存于系统密钥数据库中。在客户端,用户只有插入合法的eKey,读出相应的序列号,才能解密EK{SK},从而得到SK。协议的流程图如图1所示,其实现过程为:

(1) 用户C首先调用函数GetEKeyID()获得其eKey的序列号Ei;再调用函数EncryptWithKey()通过自己的私钥SKc加密用户名和Ei;得到SKc{Username,Ei};然后用S的公钥PKs加密SKc{Username,Ei}得到PKs{SKc{Username,Ei}},并将其发送给服务器; (2) 服务器S接收到PKs{SKc{Username,Ei}}后,用其私钥SKs和C的公钥PKc依次进行解密,得到用户名Username和eKey序列号Ei。通过对比服务器端数据库中存储的用户信息和从用户端接收到的用户信息,判断用户的合法性。S产生一个表示是否通过认证的ACK信号,并生成一个随机数Rc,分别用S的私钥SKs和C的公钥PKc双重加密ACK和Rc得到PKc{SKs{ACK,Rc}},并发送给C;

(3) C解密双重加密的密文分组PKc{SKs{ACK,Rc}},得到ACK信号和随机数Rc,若ACK信号表示通过认证,以Rc为密钥加密系统密钥SK惟一的ID号,再用S的公钥PKs加密Rc{ID}得到PKs{Rc{ID}},并发送给服务器;

(4) S用其私钥SKs和随机数Rc依次解密PKs{Rc{ID}}得到系统密钥SK惟一的ID,并通过查找数据库密钥信息获得系统密钥SK的密文EK{SK},再用C的公钥PKc加密此密钥数据得到PKc{EK{SK}},并发送到C。

协议通过每一步中基于公钥算法的加密与解密保证了用户合法性判断;基于eKey惟一序列号的身份认证,保证非法用户无法通过其他eKey得到系统密钥SK;基于EK的加密存储保证了系统密钥的存储安全,协议从整体上保证了系统密钥获取的安全性。

3 密钥安全管理

采用密码技术保护信息时,对密钥的保护非常重要。密码体制可以公开,然而一旦密钥丢失或出错,对系统安全造成极大威胁。因此,基于网络的涉密文件加密存储必须加强服务器公私钥、用户公私钥,特别是系统密钥SK的安全管理。

3.1 系统公私钥的安全管理

系统初始化安装时服务器通过应用程序生成自己的公钥对,并将公钥以公开的方式分发给所有用户。用户将得到的服务器公钥复制到自己的eKey或密钥文件夹中,再利用服务器公钥完成与服务器之间传送保密信息的操作。为了保证系统安全性,系统应定期更新服务器公钥对,并加密存储服务器私钥。

3.2 eKey公私钥的安全管理

用户通过eKey并调用GenKey()函数接口产生用户的公钥对,并向服务器传送用户公钥。发送信息时用服务器的公钥加密,接收信息时用自己的私钥解密。用户私钥存储在eKey中且不可读,保证了用户密钥的安全性。

3.3 系统密钥SK的安全管理

实现主动防泄密既要保证密钥数据的安全存储,还要保证合法用户能通过身份认证获得解密密钥(系统密钥SK)。每一个涉密文件对应一个加密密钥,加密密钥是由服务器端密钥中心通过硬件随机产生的256位AES密钥,通过ID编号处理后,使用EK加密得到EK{SK},最后存储到密钥数据库。合法用户获取系统密钥SK是基于上一节提出的“密钥安全获取通信协议”实现的。

4 基于网络的涉密文件加解密

4.1 基于网络加解密流程

文件加密时首先以系统密钥SK为加密密钥,通过AES算法加密原文件,得到文件加密数据,再将系统密钥SK的ID号写入文件头,与文件加密数据组成加密后的涉密文件。

文件解密时,首先读出文件头,获得系统密钥SK的ID号,并通过ID号在密钥数据库中查找对应的EK{SK}。然后检测用户eKey的序列号,并与用户注册信息相比较,若相同则通过认证,服务器将{EK{SK}}发送到用户端。用户端以其eKey的序列号为初始值生成EK,使用EK解密EK{SK},获得系统密钥SK(文件解密密钥),最后使用系统密钥SK通过AES算法解密涉密文件。涉密文件基于网络的加密与解密流程。

4.2 涉密文件加解密的实现

基于网络的涉密文件加解密,涉及服务器端数据库信息管理、数据通信以及各种算法的加解密操作。系统分别定义了CUserSet类、CFileSet类和CKeySet类来[LL]实现对用户信息、文件信息和密钥信息的操作;系统基于TCP/IP协议,采用Windows sockets API建立Windows环境与网络之间的编程接口,实现服务器端与用户端的数据通信。文件加密操作的相关函数主要有:

AES加密算法是分组算法,加密时以16 B为单位进行分块加密,本文在实现中使用CBC分组链接模式对16 B的数据块进行处理,对其算法原理和实现代码不再赘述。

5 安全性分析

在选用高强度AES加密算法加密涉密文件数据;充分利用eKey的安全特性和密码服务;设计严密的系统密钥安全获取协议;实现了密钥的安全管理;设计了缜密的加解密流程,使得文件只能被特定网络环境下合法的用户所存取,从整体上达到了高安全性的主动防泄密目的。

小知识之密钥概念:

密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据。