Word文档多重签名和部分加密研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第22卷 第5期 天 中 学 刊 V ol. 22 No. 5 2007年10月 Journal of Tianzhong Oct. 2007
收稿日期:2007-07-20
作者简介:张洪飞(1967~ ),男,河南新蔡人,黄淮学院电子科学与工程系高级实验师.
Word 文档多重签名和部分加密研究
张洪飞,韩 栋
(黄淮学院,河南 驻马店 463000)
摘 要:基于Word2003对XML 文档的支持,提出了将Word 文档转换成自定义XML 模式的XML 文档,再对XML 文档进行签名加密,从而实现对Word 文档多重签名和部分加密的思想.在将XML 转换成Word 时,还提出了适用于在各种平台中实现动态生成有格式Word 文档的通用解决方案.
关键词:Word 多重签名;Word 部分加密;XML 签名;XML 加密;XML 转换成Word Microsoft Office Word 是现在使用最广泛的应用软件,当用它来编辑重要文档(如电子公文等)时,需要保证文档的安全性.文档的创建者有时希望不同的接收者看到文档的不同部分内容,而接收方也希望验证文档的确来自发送方.目前,文档保护是采取整个文档加密或签名的方式,基本上未对Word 文档进行部分加密和多重签名的研究.Word 提供了加密方案,但它只对整个文档进行加密,并不能对部分文档加密.因此,当多人共同完成一个文档时,需要实现对文档的多重签名,即多人对同一文档进行签名.本文主要研究怎么实现对Word 文档实现部分加密(包括多个部分)和多重签名. 1 XML 签名加密
1.1 XML 签名语法及多重签名方案的提出
XML 签名即XML —Signature Syntax and Processing ,是由负责Web 技术标准制订的W3C (World Wide Web Consortium )组织于2002年2月14日发布的.这个标准提供了XML 文档的签名语法,使得文档在签名前后都是结构化的.其结构如下所示:
< Signature ID? > < SignedInfo >
< CanonicalizationMethod / > < SignatureMethod / > (
< DigestV alue > < /Reference >) + | < /SignatedInfo > < SignatureV alue > ( < KeyInfo > )? ( < Object ID? > )*
< / Signature >
其中,“?”表示出现0或1次,“+ 表示出现1或多次,“*”表示出现0或多次.
XML 签名的父元素是< Signature >元素,该元素标识了一个特定的上下文环境中完整的XML 签名.< SignedInfo >元素包含了实际签名的所有信息,即签过名的信息,它的子元素< CanonicalizationMethod / >、< SignatureMethod / >表示签名前进行的规范化操作用到的算法和签名的算法. < Reference URI? >元素则是指向了需要签名的内容,利用这个元素就可以实现对
XML 文档的部分元素进行签名.< KeyInfo >元素包括用来验证XML 签名的具体信息.
根据XML 签名语法结构,本文提出利用< Signature >元素的ID 属性来标识不同签名者,通过< Reference >元素的URI 属性来指向被签名的元素,并且将各个不同签名者的签名作为被签名文档根元素的子节点,从而实现多人对文档的不同部分进行签名的思想.它解决了传统多重签名互操作性差和签名效率低[2]的不足.多重签名方案可如下所示,它显示了“张三”、“王五”对元素< Element1 >签名的实现. < SourceDocument >
中图分类号:TP311.132
文献标识码:A
文章编号:1006-5261(2007)05-0042-04
张洪飞,韩 栋:Word文档多重签名和部分加密研究·43·
< Element1 Id = “SignHere”>这是需要签名的重要信息
< Signature Id = “张三” >
< SignedInfo>
< Reference URI = “#SignHere” >… < /SignedInfo >
…
< /Signature >
< /Signature Id = “王五” >
< SignedInfo >
< Rererence URI = “#SignHere” > … < /Signature >
…
< / Signature >
< /SourceDocument >
1.2XML加密语法与部分加密的可能性
W3C推荐的XML加密标准的语法结构如下所示,与XML签名的语法结构相似.
< EncryptedData Id? Type?>
< EncryptionMethod / >?
< ds:KeyInfo>
< EncryptedKey>?
< ds:KeyName >?
< ds:RetrievalMethod >?
< ds:* >?
< /ds:KeyInfo >?
< CipherData>?
< CipherV alue>?
< CipherReference URI? >?
< /Cipherdata>?
< EncryptionProperties/ >?
< /EncrypteData>?
< EncryptionMethod >元素用来识别加密算法和可能的一些辅助参数.< CipherData >元素以某种形式(直接存储或引用)表示加密后的数据.< ds:KeyInfo>元素描述了如何获得密钥从而对< CipherData>元素的内容解密.< Encryption—Properties>包括其他一些额外的属性.利用XML加密的语法可实现对指定XML 元素加密,从而具有实现对文档部分加密的可能性.
2Word文档转换成XML文档方案探讨
根据XML签名和加密语法,如果能将Word文档转换成XML文档,就能实现对Word文档的多重签名和部分加密.下面以某项目为例介绍如何将Word文档转换成XML文档.该项目采用的是J2EE平台,利用Word2003对XML的支持特性在Word里创建XML 文档.其自定义XML模式XML文档的创建过程和步骤如下:
(1) 创建电子公文的XML模式officeDoc.xsd.
(2) 在Word里创建电子公文.
(3) 在菜单中选择“工具-模板和加载项”,再选择“添加架构”将XML模式定义附加到Word文档.
(4) 在添加模式后,就可以利用该模式中的元素批注文档.如图1所示,在Word中的“XML结构”窗格(显示在文档右侧)中,可将附加模式中的自定义元素插入到文档中.选中需要加入到某XML元素中的内容,再在文档右边任务窗格“XML结构”中选择相应的元素,将选择内容变成相应的元素内容.
图1 在Word中按自定义XML模式创建XML文档
(5) 选择“另存为”菜单命令,在保存类型中选择“XML文档(*.XML)”,选中保存按钮左边的“仅保存数据”.如图2所示,这样就将文档保存为按officeDoc.xsd结构创建的XML文档.
图2 保存为XML文档
为了复用上述各步的操作,方便不熟悉XML的用户使用,可以隐藏XML文档,不让标记显示出来.同时,为了防止误删除没有显示的标记,利用Word 的“保护文档—编辑限制”功能对整个文档中不能输入值的地方进行编辑保护,并将上述文档保存为模板,以保证文档格式的绝对统一,并避免重复劳动.对实现文档的部分加密而言,还需要知道哪些元素需要加密.这可以通过在创建XML模式时,将各个元素都加上“加密”属性来实现.利用上面创建的模板,在创建XML文档的时候,对需要签名或加密的元素点击右键选择元素属性,对加密属性值处填写上“是”表示要对此元素加密.通过上面操作的介绍,就可以在Word里创建加密的XML文档了.