基于XML数字签名的研究及实现

来源 :商场现代化 | 被引量 : 0次 | 上传用户:zondy_gongqi
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘 要] 本文主要研究如何充分利用XML的结构化优势,结合传统数字签名技术,实现粒度可选的数字签名。首先深入研究了XML数字签名的规范,XML数字签名的生成原理及验证方法。并利用跨平台的Java语言对基于WEB的XML电子定单实现粒度可选的数字签名,解析了基于Java的XML数字签名的通用实例,使其能够很方便的融入实际应用之中。
  [关键词] XML 数字签名 RSA JAVA
  
  一、引言
  XML(eXtensible Markup Language,可扩展标记语言)是由W3C于1998年2月发布的一种标准,是SGML(Standard Generalized Markup Language,标准通用标记语言)的一个简化子集。XML作为一种描述数据的标记语言,以其强大的描述功能、可扩展性、结构化语义,以及平台无关性等特点,在互联网和分布式异构环境中成为主要的数据传输和交换载体,在电子商务等领域得到了广泛的应用。为了确保XML数据的安全性,尤其是数据的完整性、可验证性和不可抵赖性,XML数字签名技术应运而生。
  XML数字签名与传统的数字签名技术相比,并没有技术上的飞跃或本质上的不同。XML数字签名技术同样基于目前广泛使用的公共密钥体系(Public Key Infrastructure,PKI),用户基于某种非对称加密算法,例如:RSA、DSA,用私钥对要签署的数据签名,然后接受方用签名者的公钥对签名进行校验。但不同的是,传统的数字签名技术一般采用整体式签名,或基于OLE的对象链接嵌入式签名。传统的数字签名技术很难支持电子文档的多人批复签名,也不支持对电子文档的部分签名。XML数字签名较好地解决了上述问题。XML数字签名充分利用了XML语言本身强大的表达能力和扩展能力,不仅可以像传统的数字签名技术一样对整个文档签名,还可以实现在较细的粒度上对文档的特定部分进行签名,且支持多重签名。
  二、XML数字签名规范
  由IETF(Internet Engineering Task Force)和W3C共同组建的XML Signature工作组在2001年8月20日公布了XML数字签名的推荐版本。W3C将XML数字签名解释为:定义一种与XML语法兼容的数字签名语法描述规范,描述数字签名本身和签名的生成与验证过程。作为一个安全有效的数字签名方案,该规范提供了数字签名的完整性(Integrity)、签名确认(Authentication)和不可抵赖性(None repudiation)。其规范框架及产生流程如图1所示:
  根据签名元素和被签名对象之间的关系,XML数字签名有三种签名方式:
  1.封装式签名(Enveloping Signature),被签名数据被封装在XML签名元素的内部,元素类似于一个信封,将签名的数据封在里面。
  2.嵌入式签名(Enveloped Signature),元素本身被嵌入到被签名数据中,与封装式相反,被签名的数据充当了包含签名的“信封”。
  3.分离式签名(Detached Signature),元素和被签名数据是彼此分离的,两者之间不存在包含和被包含的关系。被签名的数据可以是独立的外部文档,也可以是跟Signature元素位于同一XML文档内的并列的兄弟元素。
  三、XML数字签名的实现
  1.XML数字签名生成。自从XML数字签名规范发布以来,很多组织机构进行了研究并提供了具体的实现。例如,IBM的AlphaWorks小组开发了XML安全套件(XML Security Suite),除了提供XML数字签名的实现外,还包括了XML的访问控制、XML加密等功能。NEC专门提供了XML-Signature Software Library对XML数字签名进行支持。但是XML安全或数字签名套件,很难满足在各种应用程序中对各种各样实际的XML文档进行灵活的签名应用。本文将XML数字签名与跨平台的Java语言相结合,对XML电子订单文档实现粒度可选的数字签名。实现步骤如下:
  (1)生成密钥对。对于一个用户来说,如果要进行数字签名,那么他必须有一对属于自己的密钥对(私钥和公钥)。在实际应用系统中,密钥对通常是由CA预先生成的并存储在服务器密钥库中,私钥自己保存和公钥公开。我们利用Java中提供的工厂类KeyPairGenerator,通过其中的genKeyPair()方法生成密钥对。
  KeyPairGenerator KPG=KeyPairGenerator.getInstance("RSA"); //---创建密钥对生成器---
  KPG.initialize(1024);//---初始化密钥生成器---
  KeyPair KP=KPG.genKeyPair();//---生成密钥对---
  (2)加载解析XML文档转换为DOM对象。用DOM解析XML文档操作比较简便,先将XML文档读入内存,在内存中建立起一棵DOM文档树,然后通过对内存中DOM文档树的操作来完成对XML文档的操作。加载解析XML文档并取得根元素的代码如下:
  DocumentBuilderFactory userDBF=DocumentBuilderFactory.newInstance();//---建立一个解析器工厂---
  DocumentBuilder userDB=userDBF.newDocumentBuilder(); //---获得一个DocumentBuilder对象,这个对象代表了具体的DOM解析器
  Document doc=userDB.parse(new File("invoice.xml")); //---得到代表invoice.xml文件的文档对象
  Element elementRoot=doc.getDocumentElement(); //---得到根元素---
  然后通过Node结点对象的getChildNodes()方法获取DOM树中所需要的子节点。后面我们创建Reference元素对象、SignedInfo元素对象、KeyInfo元素对象、XMLSignature元素对象都要用到加载的DOM文档树。
  (3)对XML文档中的节点进行可选性签名。对要签名的文档(或节点)用指定的算法进行转换。如下转换获得需要签名的节点:
  
   descendant-or-self::creditcard
  

  根据指定的算法对转换后的结果进行摘要计算,结果存入。JAVA中提供了比较成熟的计算摘要的算法,MessageDigest是工厂类,用静态方法getInstance()来生成对象,传入参数是String类型,用于指出计算摘要使用的算法。摘要计算的核心代码如下:
  try{ MessageDigest MD=MessageDigest.getInstance("MD5");
  MD.update(str.getBytes("UTF8"));
  byte[] strMD5Byte=MD.digest();
  return strMD5Byte;
  }catch(Exception e){e.printStackTrace();}
  III.收集各个参考对象元素,该元素包括:,建立
  IV.建立元素并进行规范化处理后签名。读取私钥并签名的关键代码:
  FileInputStream FIS=new FileInputStream("RSAPriKey.dat"); //---读取私钥---
  Signature signature=Signature.getInstance("MD5WithRSA"); //---获取Signature对象---
  signature.initSign(RSAPK); //---初始化Signature对象---
  signature.update(mydata.getBytes("UTF8")); //---传入要签名的数据---
  byte[] signeddata=signature.sign();//---用私钥作签名---
  (4)按照中指定的算法对元素进行签名操作,将签名结果存入节点。建立元素,该元素包括。最后,将各个元素添加入XML文档,生成XML签名文档。运用JAVA语言对下图中的XML电子订单文档实现了XML文档节点可选性的数字签名,结合上述签名过程解析,对结点进行签名的实现结果如下图所示:
  2.XML数字签名验证。XML数字签名的校验过程分为两部分进行,参考校验(Reference Validation)和签名校验(Signature Validation)。参考校验的目的是确保被签署对象没有被做任何的修改,验证在每个元素的元素中进行;而签名校验的目的则是保证签署人身份的真实性,验证利用元素计算得来的签名。
  (1)对签名校验(参考校验)。对签名校验通过计算元素中的每一个元素,与元素中已包含的摘要值进行比较。
  (2)对签名校验(签名校验)。对的签名校验,用指定的算法重新计算元素的签名值,将生成的值和中已有的签名值进行比较。
  当上述两步都成功时,该XML数字签名的校验才算通过。
  四、结束语
  随着XML的广泛应用,XML数据的安全问题已成为关注的焦点。本文主要对XML数字签名规范,XML数字签名的生成与验证过程进行了系统的研究。并结合XML文档的结构优势和RSA算法的安全性,利用跨平台的Java语言对XML文档实现粒度可选的数字签名,并详细解析了实现过程及关键代码,使其能够很方便的融入实际应用之中。在文档部分签名的实际应用当中具有一定的借鉴意义。
  参考文献:
  [1]丁跃潮 张 涛:XML实用教程[M].北京:北京大学出版社,2006
  [2]韦琳娜 张连宽等:XML数字签名和传统数字签名的对比研究[J].信息技术与标准化,2004,10
  [3]张 勇 冯玉才:XML数字签名技术及其在Java中的具体实现[J].计算机应用,2003,9
  [4]http://www.w3.org/TR/2008/PER-xmldsig-core-20080326/
  [5]郭竞乐 赵正德等:XML 数字签名技术的研究与实现[J].计算机工程与设计,2005,05
  [6]于国良 韩文报:XML的签名[J].计算机工程与应用,2006,07
其他文献
[摘 要] 特别保障措施是特别针对中国商品的一种歧视性条款,我国在入世后受其影响严重,本文基于中欧、中美的纺织品协议,对特别保障措施实施效应进行了研究,并阐述了特别保障措施对我国相关商品出口的消极以及积极影响:消极影响主要表现在出口数量下降、企业利益受损、引起连锁反应等,积极影响则表现在商品出口市场的调整、出口商品结构的优化等,最后依据影响提出相关应对对策。  [关键词] 特别保障措施 出口影响
期刊
[摘 要] 阐述了VLAN技术及其局限性,分析了PVLAN技术的特点和产生背景及其应用场合,结合实例介绍了PVLAN在DCS-3926s交换机下的配置,总结了PVLAN技术应用于企业网络管理的优势。  [关键词] 虚拟局域网(VLAN) 专用虚拟局域网(PVLAN) 网络管理 数据安全    在交换式以太网诞生之初,主机之间通过透明网桥在2层直接完成交换,过程简单且速度很快,但会引起广播风暴的问题
期刊
[摘 要] 中小企业的出口在我国出口中占有相当大的比重,已经成为我国出口创汇的生力军,如何发挥优势、克服弱势、抓住机遇、应对挑战获得进一步发展,是中小企业目前面临的问题。本文采用SWOT分析法对我国中小企业的出口问题作了分析,并在此基础上对如何提升中小企业的出口竞争力给出了相应对策。  [关键词] 中小企业 出口 SWOT分析    近年来,我国中小企业呈现出良好的发展势头,尤其在出口方面,中小企
期刊
[摘 要] 针对关联规则挖掘算法在处理海量数据的过程中存在的效率低、需要反复访问数据库等,在入侵检测系统产生误报、效率低下等问题。提出了基于关联规则挖掘算法的ALT算法,设计了基于ALT算法的入侵警报检测系统模型,通过实验证明ALT算法在减少入侵警报的数量和降低误报率等方面明显优于其它算法。  [关键词] ALT算法 入侵检测 数据挖掘 警报分析    引言  入侵检测技术是信息网络安全技术的重要
期刊
[摘 要] 本文基于对科技研发型企业核心竞争力培育的几个基本问题认识的基础上,通过以ZJ科研企业为例分析阻碍ZJ科研企业核心竞争力培育的几个问题,进而提出了该企业培育核心竞争力的途径在于构建和打造难于仿制的核心能力、精心设计企业组织和人才培养、建立知识扩散保护机制、创新ZJ科研企业新价值观等观点。  [关键词] ZJ科研企业 核心竞争力 培育 对策    一、科技研发型企业核心竞争力的几个基本问题
期刊
[摘 要] 货物买卖的核心即是转移货物所有权。货物所有权的转移是一个复杂的法律问题,甚至是CISG这样的国际实体法都避而不谈,而各国的国内法对此的规定几乎也各行其是。本文旨在借此现象,剖析各国现有的法律法规,探讨货物所有权转移问题在全球的发展以及解决办法。   [关键词] 国际贸易 货物所有权转移 国际商法    CISG 是不同政治、经济、法律制度国家之间,特别是英美法与大陆法之间达成调和与妥协
期刊
[摘 要] 针对中国报表复杂而需求各异的问题,本文分析了使用SQL Server 2008报表服务开发报表的优势,给出了实现基于Reporting Services企业报表的模型,应用该模型开发了某企业报表系统,使系统达到了无需计算机专业知识就可以定制报表的目标,同时验证了模型的合理性。  [关键词] SQL Server 2008 报表服务 企业报表系统    一、引言  随着企业管理系统的广泛
期刊
[摘 要] 本文分析了CRM带来的图书采购变革,并从加强领导战略管理,配备必要的人员、设备,建立多种与用户联系渠道等三个方面提出了图书采购CRM实现策略。  [关键词] CRM 图书 采购    一、从企业CRM到图书馆CRM  在20世纪80年代初期,便有所谓的“接触管理”,专门收集客户与公司联系的所有信息,“接触管理”虽然取得了很大的成效,但是企业在处理客户关系时,越来越感觉没有信息技术支持的
期刊
[摘 要] 在高新技术企业中,人力资本是经济增长中的主要生产要素,人力资本的所有者应当在企业的收益分配中享有份额。本文通过对西安高新技术企业的人力资本参与企业剩余分配的现状调查,发现了其中存在的问题,并提出了可供参考的人力资本参与企业剩余分配的模式。希望该模式能为其它类似高新技术企业的收益分配提供一种新的理念。  [关键词] 人力资本 企业剩余分配 高新技术企业    近几年,高新技术企业的发展迅
期刊
[摘 要] 从舆论的角度研究2008年中国平安的公共关系危机,可以发现舆论领袖们在其中发挥了主导性的作用。他们能发挥如此重要的作用,原因在于他们赢得了公众的信任。平安陷于被动局面,根源则在于他们失去了公众的信任。  [关键词] 中国平安 危机公关 舆论领袖 信任    本文拟研究在2008年中国平安(以下简称“平安”)的公共关系危机中舆论领袖的作用,以及他们是如何起到这样的作用的。  一、平安的公
期刊