2023年12月7日发(作者:)

基于MD5和数字水印的电子签章文件校验方案

杨占民;曹斌;闾凡兵;王鹏飞;国洪新

【摘 要】随着电子商务和电子政务的发展,为了保证其应用中文件的安全,根据数字水印的鲁棒性、脆弱性,以及Hash、COM组件等技术,提出了一种基于MD5和数字水印的电子签章文件校验方案.实现了文档的防篡改、文档的合法性验证.%With

the development of e-commerce and e-Government,in order to ensure the

safety of the application documents,according to the digital watermarking

robustness and vulnerability and Hash MD5,COM component technology,a

check scheme was proposed based on digital watermarking overprint file

to realize the documents prevent manipulation prevention and documents

legitimacy check.

【期刊名称】《贵州大学学报(自然科学版)》

【年(卷),期】2013(030)003

【总页数】5页(P113-117)

【关键词】电子印章;Hash;MD5;COM组件;数字水印

【作 者】杨占民;曹斌;闾凡兵;王鹏飞;国洪新

【作者单位】贵州大学计算机科学与信息学院,贵州贵阳550025;贵阳铝镁设计研究院,贵州贵阳550081;贵州信安科技有限公司,贵州贵阳550002;贵州信安科技有限公司,贵州贵阳550002;贵州信安科技有限公司,贵州贵阳550002

【正文语种】中 文 【中图分类】TP319

目前,随着信息化的快速发展,电子商务和电子政务已经得到广泛的应用,传统的纸质盖章文档进行交流,已经不能适应当前的电子商务和电子政务的发展,为了保证电子商务和电子政务交流的安全,需要采用一定的安全措施,既能够使人们快速地接受,又能够保证文档安全,这就需要在电子文档中使用可视化的电子印章,以保证纸质文件、工作图纸、法律文件等转换成电子文档后的合法性[1]。因为电子文档容易复制、篡改,那么如何在开放的互联网环境下保证电子文档的完整性、可靠性、合法性、安全性是电子商务和电子政务成功的关键,因此就要求电子印章必须具有唯一性、防伪性,具有比现实中的印章更可靠的安全性能,提高电子文档的防伪造、防篡改、防抵赖、可验证等安全性控制。所以本文在电子签章系统的基础上,提出一种基于MD5和数字水印的电子签章文件校验方案,通过相关的密码学知识和软件技术,可以实现在电子签章系统中校验签章后文件是否被篡改,满足电子商务和电子政务对以上的需求。

1 基础知识

1.1 数字水印

数字水印是为了解决信息安全提出的一种信息隐藏技术。数字水印技术很好地利用人眼对一些信息隐藏后无法视别的特性,使得被隐藏的水印信息不被人们肉眼察觉。其基本思想是利用一些技术手段将需要隐藏的信息变换成秘密信息嵌到图像、音频和视频等载体中,这些变换后的秘密信息为数字水印[2]。通过检测或提取算法,提取载体中包含的水印信息来验证产品的版权、证明产品的真实性完整性。

数字水印的基本特性:鲁棒性、隐蔽性、脆弱性。鲁棒性是指在经过多种信号处理操作后能够保持水印的完整性。鲁棒性数字水印具有很强的抗干扰能力,而且难以被非法删除,所以能够抵抗多种故意或者偶然的攻击或失真,可用于版权保护,鉴别唯一性[3]。隐蔽性是指以数字信息存储的作品,在嵌入数字水印以后,不会引起感知变化,即原始作品和嵌入数字水印的版本具有很高的逼真度。脆弱性则是和鲁棒性具有相反的特点,脆弱性数字水印主要用于完整性保护,脆弱性数字水印对信号的改动很是敏感,被嵌入到宿主中以后,对宿主信息的各种变化都反映到恢复出来的数字水印上。

1.2 Hash函数

Hash函数是数字签名的主要方法之一,它是一种将一个任意长度的输入,通过散列算法,变换成固定长度的输出,输出值称之为散列值,很显然,这也是一种压缩映射。当把一个任意长度的信息转化成杂乱的128位的编码里,叫做HASH值,也就是说当输入一个任意长度的信息或文件x时,使用相应的散列函数算法,可以很容易地输出一个与原信息唯一对应的固定长度(128位)的信息摘要H(x).Hash函数的安全性在于它是单向的,输入一个信息得到一个与之对应摘要,是很容易的,但是从得到一个摘要返还出它的原信息,是几乎不可行的[4]。Hash主要用于信息安全领域中加密算法,对消息或文件的完整性进行验证,在进行数据传输之前对数据做Hash运算,得到与之对应的信息摘要,然后再将数据与摘要用非对称加密算法加密一起发送出去,接收方对接收到的数据先进行解密,然后用Hash生成摘要,同时比较两个摘要是否相同,若相同则证明传输过程中没有被篡改,否则,则视为被篡改。

1.3 MD5算法

MD5算法是由公钥加密算法标准RSA的开发者于20世纪 90年代初在

MD2、MD3、MD4的基础上研发出的一种新的HASH算法,该算法是以每512

bit为一组进行分组对原消息进行处理,而每一分组又被划分为16个32 bit的子分组。算法的最终输出结果由128 hit的数据串组成。MD5算法开始前,首先需要对信息进行一定的填充预处理,使其填充后的总位长对512求余的结果等于448.这样处理后,信息的总位长(Bits Length)变为(N*512十448)bit,N为正整数。填充的方法如下:先在信息的末尾填充一个1,然后用0一直进行填充,直到满足上面的条件时停止填充[5]。最后,在这个填充结果后面再填充一个64位的二进制数,该二进制数的作用是表示填充前信息的长度,如果消息的长度大于264,则以264为模数取模。这样处理后,现在的信息的总位长=N*512+448+64=(N+l)*512,该信息的总长度恰好是512 bit的整数倍。因此可将消息表示为分组长为512 bit的一系列分组Y0 Y1…Yt,而每一分组又可表示为16个32 bit的字,这样消息中的总字数为N=L×16,因此消息又可按字表示为M[0,1,…,N-1].如图 1 所示。

图1 MD5算法填充分组过程

对MD缓冲区初始化。算法使用128 bit的缓冲区以存储中间结果和最终Hash值,缓冲区可以表示为4个32 bit的寄存器(A,B,C,D),每个寄存器都以数据的最低有效字节优先顺序的方式存储数据,其初值为 A=01234567,B=89ABCDEF,C=FEDCBA98,D=76543210.每一分组 Yt(t=0,…,L-1)都经一压缩函数处理,压缩函数是整个MD5算法的核心,共有4个不同的布尔函数,分别为F函数、G函数、H函数、I函数。每一轮的输入为当前处理的消息分组Yt和缓冲区当前值,输出仍放在缓冲区中以产生新的A、B、C、D.消息L个分组都被处理完后,最后一个压缩函数输出值即为整个MD5运算的最终Hash值,即消息摘要。如图2所示。

图2 MD5主循环图

2 电子签章文件校验的实现方案

根据电子签章系统工作流程,给出了一份从电子文档、生成摘要、生成水印、加盖印章、文档校验的电子印章文件校验的总体流程,如图3所示。

图3 电子印章系统总体设计方案 2.1 签章系统中的各种密钥

密钥K1:是非对称密钥中的公钥,对应的私钥为K1’,K1’是用来在印章Y中嵌入水印M,从而得到印章Y1;K1’是印章所有者保管。K1的作用是用来从印章Y1中提取水印M,K1是公钥,可通过公共的检索系统检索到[6]。其中水印M是电子文档生成的摘要信息。

密钥K2,是非对称密钥中的公钥,对应的私钥K2’,K2’的作用是从电子文档P’中检测提取印章Y1,该密钥是由用户保管;公钥K2是用来在电子文档P中嵌入印章Y1,从而得到电子文档P’.

2.2 用户的使用与验证流程

用户在使用电子签章系统时,发送方(印章所有者)使用接收方的公钥K2嵌入到电子文档P中,从而生成加印文档P’,然后发送给接收方,当接收方收到加印文档P’后,采用数字水印的提取方法,提取印章中的水印进行验证。详细步骤,首先,用户使用自己的私钥K2’提取印章Y1,然后用发送方的公钥K1从印章Y1中提取嵌入在印章中的水印M(原文档摘要),将提取水印后的文档生成摘要与M进行比较,若相同则说明电子文档的内容没有被篡改过。

2.3 实现的相关技术

2.3.1 COM组件技术

由于该校验方法是适用于中文Microsoft Office格式,为了使用双方的方便操作,所以采用COM组件技术,在Office中以插件的形式供用户使用。COM是一个说明如何建立可动态互变组件的规范。它提供了为保证能够互操作,客户和组件应遵循的一些标准。COM组件是以Win32动态链接库(DDLs)或可执行文件的形式发布的可执行代码组成的[7]。对于COM组件而言,它的封装是很容易的,这是因为它们能够满足下面的一些条件:COM组件是完全与语言无关的;可以以二进制的形式发布;可以在不妨碍老客户的情况下被升级;可以透明地在网络上被重新分配位置。一个Office2000下的内部COM插件必须实现一个_IDTExtensibility2派发接口,_IDTExtensibility2派发接口被定义在MSADDin Designer类型库(/)中,通常位于<盘符>/Program

Files/Common Files/Designer下。_IDTExtensibility2接口中必须实现下面五个接口函数(一般只需编写OnConnection和OnDisconnection中代码),分别如下:

ection:装载插件到内存时处理(可以通过自动化在程序启动时自动装载插件)。

onnection:从内存中缷载插件时处理。

nsUpdate:COM插件改变时处理。

tupComplete:当应用程序启动时插件刚装载完成时处理。

nShutdown:当应用程序关闭时插件刚缷载完成时处理。

2.3.2 电子签章文件摘要生成

在Windows系统中提供了一套专门用于实现数字签名的API,在使用这些API时我们要加入wincrypt.h的头文件[8]。其中创建Hash对象并对其进行数字签名的函数有以下几个:

CryptCreateHash(HCRYPTPROVhProv,ALGID Algid, HCRYPTKEYhKey,

DWRODdwFlags,HCRYPTHASH*phHash):用来创建 Hash对象。由于采用的是MD5算法,故Algid取值为CALGMD5,生成的Hash对象的指针保存在phHash中;

CryptHashData(HCRYPTHASH phHash,const BYTE*pbData,DWROD

dwDataLen,DWROD dw-Flags):用来接收输入的数据以产生Hash值,其中pbData的数据源是通过MSWORD9类型库中的GetContent方法获得的WORD文档的内容;

CryptSignHash(HCRYPTHASHhHash,DWROD-dwKeySpec,LPCTSTR szDescription,DROD dwFlags,BYTE*pbSignature,WORD*pdwSigLen):对生成的Hash值进行数字签名。其中hHash是前面生成的Hash对象的指针,签名后的Hash值保存在字节流pbSignature中,以备后面用来插入水印中。

2.3.3 水印的生成和嵌入

水印是当今常用的信息安全隐藏技术,而将水印隐藏的方法有很多种,最常见是将水印隐藏在图片或文档某个位置,因为本文所提出的文件校验方法是应用于电子签章系统,所以结合电子印章图片,将生成的水印嵌入到印章图片当中,为了不影响印章图片的外观,在图片中嵌入水印时,应尽量使水印均匀分布于电子印章图片的各个部分,这种方法提高了水印检测的准确性,也提高了水印算法的鲁棒性和抗攻击能力。

水印的嵌入,首先对电子印章图片进行分块,把每个分块的大小分为32×32,然后选择对每个分块图像进行小波变换,从中选择低频部分的小波系数进行水印嵌入,将水印信息嵌入到电子印章图片指定位置的代码如下:

3 安全性分析

由于本文提出的方法是应用于电子签章系统中,在电子签章系统保证印章合法性的前提下,通过对文件的摘要进行数字签名,然后生成水印并嵌入到电子印章图片,而且结合了水印鲁棒性和脆弱性,实现了电子签章文件安全可靠的校验。

4 结束语

本方案中,综合运用并发展了数字水印、数字签名、COM组件等技术,实现了在电子签章系统中对签章后的文件进行合法校验,采用现有MD5技术对文件获取摘要,采用数字水印对摘要进行隐藏,采用COM组件实现对Microsoft Office的无缝结合方便了用户的使用。虽然本文实现了对签章后文件校验,但是采用MD5对大文件的效率,有待于改进。 参考文献:

[1]Xia Xiang-Gen,Boncelet C G,Arce G t Transform based

Watermark for Digital Images[J].Watermarking Special Issue of Optics

Express,1998,3(12):497-511.

[2]马秀莹,林家骏.数字水印系统性能评价研究的现状与展望[J].计算机工程与设计,2009(22):5233-5238.

[3]许文丽.基于码分多址的大容量鲁棒数字水印方案[J].吉林大学学报(工学版),2011,41(2):547-552.

[4]柯汉平.基于多层数字水印技术的电子印章研究[J].牡丹江师范学院学报,2011,75(2):4-6.

[5]余香敏,焦占亚.数字水印在电子印章系统中的应用[J].自动化与信息工程,2008(3):5-7.

[6]赵彦锋,权义宁.基于数字水印技术的数字印章研究与实现[J].电子科技,2011,24(3):115-117.

[7]张九华.基于数字水印技术的电子印章方案[J].科技信息,2007,33:326.

[8]许盛伟,葛悦涛,方勇,等.基于网络的电子印章服务平台及其安全性研究[J].计算机工程与设计,2007,28(24):5951-5954.