一种面向数字档案文件的多重加密方法
2012-12-24张媛媛,苏灵波,崔燕
张媛媛,苏灵波,崔燕
摘要:针对传统文件加密系统中加密算法单一、加密文件格式简单、安全性相对较低的问题,结合对称密码算法中的DES、TripleDES、AES和单向散列算法SHA-256等算法,提出一种采用融合多种加密算法的文件动态多重加密方案。详细地论述加密文件格式的设计、多种加密算法动态产生的方法、加密解密过程,以及数据完整性和安全性。通过实验论证了其实用性,同时,对动态多重加密方案优点与不足进行分析。
关键词:多重加密;数字档案;文件加密
Abstract: The traditional file encryption system-- encryption algorithm in single file format is simple and its safety is relatively low. In view of the above problems, combined with the symmetric cryptographic algorithm in DES, TripleDES, AES and one-way hash algorithm SHA-256 algorithm, we put forward a file dynamic scheme with multiple encryption to use fusion multiple encryption algorithm .This paper discusses in detail the encrypted file format design, a variety of encryption algorithms dynamically generated method, encryption and decryption process, and data integrity and security. The experiment proved its practicability, and analyzes its advantages and disadvantages.
Keywords:Multiple encryption;Digital archives; File encryption
1 引言
随着档案数字化和信息化建设步伐的加快,数字档案馆中的电子文件日益增多。但随之而来的数字档案文件安全问题成为业务发展和管理的重中之重。典型的数字文件安全问题包括非法篡改、违规拷贝、敏感文件失泄密、版权受侵害等。加密技术能为数字文件提供有效的安全保护,基于加密技术的数字签名、数字水印等应用是保证数字文件的机密性、完整性的有效手段。
一般的做法是采用单一的加密算法对文件数据进行加密[1][2][3],加密代价低,部署实施便捷。但是,单一的加密算法易遭到诸如暴力破解、口令攻击等手段的破坏,一旦该加密机制被密码攻击手段破解,则数字文件安全性无法保证,而且数字档案管理机构更换加密机制代价、工作量非常巨大。多重加密方法可有效防御各种密码攻击手段。本文提出一种面向数字档案文件的多重加密方法,该方法按照特定的加密格式,对数字文件动态地采用多重加密算法进行加密,加密算法采用常用的对称密码算法DES、TripleDES、RC2、AES等,通过设计合理的加密格式,融合上述加密算法对数字文件进行多重加密。在实际使用过程中,该方法的加密速度和效率相比传统单一加密机制并未有明显降低,且具有更优良的安全性。
2相关算法
本文的方法所采用的加密算法包括对称加密算法和散列算法两大类。前者主要包括DES、3DES、RC2、AES,后者主要是SHA-256散列算法。首先,简介密码系统的一般工作原理:明文借助加密算法中的密钥形成密文,密文经过信道传输到接收者,接收者依托解密算法中的解密密钥成功提取明文。如图1所示。
2.1对称加密算法。DES使用64位的密钥和64位的加密向量对文件明文进行加密,加密速度较快。该算法存在弱密钥和半弱密钥,但在本文的方法中使用的加密密钥都经过了筛选,避免出现弱密钥和半弱密钥。3DES是DES的改进版本,使用192位的密钥和64位的加密向量对明文加密,安全性更高。RC2使用128位的密钥和64位的加密向量对明文加密,其优点是加密速度快,密文体积小。AES全称为“高级加密标准”,采用对称分组密码体制,是一种迭代分组密码算法,分组长度为128位,密钥长度可指定为128位、192位或256位。AES针对4个字节的字进行操作,经历一系列线性和非线性变换,从而极大降低了破译的可能。
2.2散列加密算法。本文使用的散列算法是SHA-256,SHA-256是SHA-1的改进,具有更大的数字指纹、更复杂的非线性函数和压缩函数、每一步均有唯一的加法常数等,SHA-256具有更高的安全性。
2.3加密模式。分组加密算法可以使用四种加密模式[4],ECB是最基本的加密模式,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少使用。CBC是明文被加密前,要与前面的密文进行异或运算后再加密,因此,只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。CFB和OFB类似于同步序列密码。本文使用CBC加密模式。
3多重文件加密方法
3.1加密文件格式设计。加密文件格式是指密文数据的文件存储格式,设计是否合理,不仅会影响加密机制的安全性,还会对加解密的速度及效率造成不良影响。本文的加密文件格式设计如图2所示。
整个加密文件分为文件头和文件体两部分,文件头又分为未加密部分和加密部分;文件体部分就是文件数据加密后的密文数据。各部分含义如下:
·Ef 部分保存加密标识,用来标识文件是不是加密文件,标志字符串为“ENCRYPTEFLAGS”,长度为14字节。解密时,首先,会根据该加密标识来确定文件是不是一个加密文件。
·Et部分保存加密时间,格式为“yyyyMMddhhmmss”,长度为14字节。主要用来加密(解密)文件体H部分时选择合适的加密(解密)算法,同时,也可以标识加密的具体时间。
·Lf部分保存原文件名长度,长度为2字节,解密时,用来确定D部分中保存的原文件名的实际长度。
·Nf部分保存原文件名,长度为512字节,存放原文件名,解密时,用来恢复原文件名。
·Ct部分保存文件创建时间,长度为14字节,解密时,用来恢复原文件的创建时间。
·Fm部分保存文件修改时间,长度为14字节,解密时,用来恢复原文件的最后修改时间。
·Cf部分保存压缩标志,固定字符串,“COMPRESSEDFLAG”,长度为11字节。
·Ed部分保存分段的文件加密数据。
3.2文件加密方式。虽然,加密算法是文档安全系统的核心,但加密算法以何种方式进行实现,是决定文档安全系统的关键。在文档安全系统中,常用的实现方式有静态加密方式和动态加密方式,静态加密是指在加密期间,待加密的数据处于未使用状态(静态),这些数据一旦加密,在使用前,需首先通过静态解密得到明文,然后,才能使用。目前,市场上许多加密软件产品就属于这种加密方式。与静态加密不同,动态加密(也称“实时加密”、“透明加密”等,其英文名为“Encrypt On-the-Fly”),是指数据在使用过程中(动态)自动对数据进行加密或解密操作,无需用户的干预,合法用户在使用加密的文件前,也不需要进行解密操作即可使用。表面看来,访问加密的文件和访问未加密的文件基本相同,对合法用户来说,这些加密文件是“透明的”,即好像没有加密一样,但对于没有访问权限的用户,即使通过其他非常规手段得到了这些文件,由于文件是加密的,因此,也无法使用。由于动态加密技术不仅不改变用户的使用习惯,而且,无需用户太多的干预操作即可实现文档的安全,因而,近年来,得到了广泛的应用。由于动态加密要实时加密数据,必须动态跟踪需要加密的数据流,且其实现层次一般位于系统内核中,因此,从实现的技术角度看,实现动态加密要比静态加密难得多,需要解决的技术难点也远超过静态加密。
本文的动态文件加密方式设计如下:
加密时,首先,取得加密时间(当前时间),待加密文件的文件名、文件名长度、文件创建时间、文件修改时间,如果文件要先压缩后加密,则Cf部分的值为“COMPRESSEDFLAG”,否则,为空值。然后,使用一个固定的32bytes长度的密钥加密文件头Et~Ct部分,加密向量取密钥的前8 bytes。采用AES加密算法加密Et~Ct部分,把文件头内容按2.1节中定义的格式写入加密文件。加密文件数据时,采用分块加密的方式,实验数据证明(如表1所示),4K bytes是一个合适的分块值,这样,可以加快数据处理速度,如果分块太大或者太小,都会影响加密解密的速度。首先,把用户输入的密钥做SHA-256运算,得到一个32 bytes的散列值,这个32字节的散列值就作为加密数据的密钥;当采用DES算法时,取前8 bytes作为密钥;当采用RC2算法时,取前16bytes作为密钥;当采用TripleDES时,取前24 bytes作为密钥;当采用AES时,32字节的散列值作为密钥,四种算法的加密向量都是取前8 bytes数据。
若Cf部分的值为“COMPRESSEDFLAG”,则先对文件数据采用ZIP算法进行压缩,然后加密。各个分块采用哪种加密算法是根据加密时间动态产生的,产生的方式如图3所示。如加密时间为“20120225171824”,每一位对4求模,结果为“2008112131020”。加密算法和每一位的模的对应关系为:0:DES;1:RC2;2:TripleDES:3:AES。根据这一对应关系,第1分块采用TripleDES加密,第2、第3分块采用DES加密,…,第14分块采用DES加密,后面的分块则重新按照第1到第14分块的加密算法进行加密,依此类推,直到所有分块都加密。因为当前时间值是不断变化的,所以,各个分块采用的加密算法根据加密的时刻不同而不同,是动态变化的,可有效地增强数据的安全性。
3.3文件解密。解密时,过程与加密时大致相反,先读取加密标志,判断文件是不是加密文件,若是,才解密。使用固定的密钥解密文件头Et~Ct部分,得到文件头的数据。用户输入的密钥,采用和2.2节中一样的处理方式,得到用于解密的密钥和解密向量。再按图2中的方法,得到各个分块的加密算法,对每一个加密数据分块采用对应的加密算法、密钥和解密向量进行解密。解密完成后,检查Cf部分的值,若“COMPRESSEDFLAG”,则对解密的数据采用ZIP压缩算法解压缩。最后,根据Lf~Cf部分还原结果数据文件的文件名、文件创建时间、文件修改时间,得到最终解密的明文结果。
3.4数据完整性。对于文件头的Ef部分,其长度在文件加密前后是不变的。对于Et~Ct部分文件头数据,加密前的长度是567bytes,采用AES算法加密后长度为576bytes。对于H部分的加密数据,由于采用分块加密的方式,分块值为4096bytes,若采用DES、RC2和TfipleDES加密算法,加密后分块的长度都为4104bytes。若采用AES加密算法,加密后分块的长度为4112bytes。这样,解密时,文件头的长度是固定的,密文数据分块数据解密正确。
4实验验证
将本文的加密方法与常用的加密工具(CryptoNet )进行加密效率测试,CryptoNet 采用单一的TfipleDES加密算法,本文采用动态多模式的加密算法,针对1兆、5兆、10兆大小的三个文件进行加密(同一计算机平台,操作系统为Windows XP SP3,CPU为Intel Pentium4 2.8GHz,内存2GB),测试结果如表2所示。
从测试结果来看,本系统和CryptoNet在加密数据时,效率差异相差不大,本系统尽管采用多种加密算法的文件加密方案,但在加密速度上并不慢。
5结束语
本文的多重加密方法基于特定的加密文件格式,在笔者所在的档案管理业务部门得到广泛的使用。需要强调的是,本文所提的方法在加解密过程中的容错性还需进一步完善。加密密钥依赖业务主管部门的人工管理,导致密钥管理效率存在一定的问题。如何在安全性得到增强的同时,提高其加密解密的容错性,并解决密钥管理的问题,是本文进一步研究的方向。
参考文献:
[1]甘新标,沈立,王志英.采用异或算子和椭圆曲线的混合加密机[J].西安交通大学学报,2010,44(12):28~31.
[2]张健.基于多层防御的数字档案馆安全体系[J].兰台世界,2008(16):16~17.
[3]刘雪梅.档案信息交换过程中的安全手段[J].档案管理,2004(2):39.
[4]Sehneier B. Applied euptography, protocols, algorithms and source code in C[M].Beijing: China Machine Press,2000:78~81.
(作者单位:解放军61195部队档案馆来稿日期:2012-08-10)