基于RSA的XML数字签名

来源 :光盘技术 | 被引量 : 0次 | 上传用户:binsheng
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:在研究RSA数字签名体制和XML数字签名规范的基础上,设计了不需要第三方的基于RSA的XML数字签名方案,保证了电子公文交换和电子定单等相关信息的完整性和不可抵赖性。同时,论文给出了基于VB.NET的XML数字签名的完整实例,为基于.Net平台实现基于XML的数字签名提供了有意义的参考。
  关键词:RSA;数字签名;可扩展标记语言;VB.NET
  中图分类号:TP309.7文献标识码:A
  
  XML Digital Signature Based on RSA
  ZHAO Xue-min,YU Jian-guo
  (ZhengZhou Institute Of Aeronautical Industry Management,Henan Zhengzhou450015)
  Key words:RSA;digital signature;extensible markup language;VB.NET
  
  随着Intemet技术的飞速发展,XML以其优良的可扩展性、互操作性、可靠性、开放性和简便性已在电子商务、电子政务领域得到了日益广泛的应用。基于XML的数字签名在防止伪造和防止抵赖方面具有无可比拟的优势,具有十分重要的实际研究意义。
  
  1RSA数字签名体制
  
  数字签名依赖于公钥密码学,它通过一个公钥算法产生一个加密密钥和一个解密密钥。当发送方S要将消息M发送给接收方R时,S产生公钥PKS和私钥SKS,然后将PKS公布,而SKS只有S知道。S用SKS对消息M进行加密并将加密后的消息Dsks(M)和M一起发给R。R用公钥PKS对Dsks(M)解密得到M',如果M'=M,那么签名是真实的。
  RSA算法是当今在数字签名中应用较为广泛的一种算法。算法描述如下:
  (1)确定参数:K=(n,p,q,e,d)。其中n=pq,p和q是两个大素数且保密,n公开;ed=1mod(p-
  1)(q-1),e 公开作为公钥,d保密作位私钥;
  (2)数字签名:对消息M,定义C=Me mod n 为对消息M的签名;
  (3)验证签名:如果Cd mod n =M,则签名为真。
  由于d保密且只有签名者知道,所以其他人不可能伪造正确的签名,也就容易验证(M,C)是否是发送方发的信息及签名,也保证了发送信息的完整性。
  RSA的安全性依赖于n=pq分解的困难性。密码分析者可以采用穷举攻击、数学攻击、计时攻击等手段来攻击和破解。使用者,可以通过大密钥空间即增加e 和d 的位数抵抗攻击,不过这样就会使密钥的产生、签名、验证的过程的计算量加大,系统运行速度变慢。所以,对于大容量消息在使用RSA算法进行签名前,常常对消息使用hash算法进行运算得出其摘要,对消息摘要进行RSA的数字签名。
  
  2基于XML的数字签名技术
  
  2.1 XML技术简介
  可扩展标记语言XML(eXtensible Markup Language)是一种简单灵活的文本格式的可扩展标记语言。XML是国际互联网联盟(World Wide Web Consortium ,W3C)创建的一组规范,于1998年2月10日通过W3C成员的鉴定和批准而成为“推荐标准”。
  XML作为标记语言,与HTML相比,XML中的标记只描述文档的内容,并不描述其显示方案,实现了内容与显示的分离,数据从最原始形式就与其最终表达分离开来。XML文档重在描述数据及其之间的关系,专门用XSL和CSS来表现其内容,使同一数据可以根据实际情况具有多种表现形式。XML具有跨平台性、灵活性、自描述性和数据整合性等特点。从XML1.0规范发布以来,XML迅速发展并得到了Microsoft、IBM、Oracle和Sun等各大公司的鼎力支持,现在它已经成为Internet上的数据表示和数据交换的标准格式。
  2.2 XML数字签名技术
  在2001年8月20日,由IETF和W3C共同组建的XML Signature工作组公布了XML数字签名规范。规范将XML数字签名解释为:定义一种与XML语法兼容的数字签名语法描述规范,描述数字签名本身和签名的生成与验证过程。作为一个安全有效的数字签名方案,该规范提供了数字签名的完整性、签名确认和不可抵赖性。
  W3C的XML数字签名规范具有标准的数字签名的需求,它要求必须以XML形式表现被签名的数据,而且可以从XML文档中选出一部分内容进行数字签名。一个完整的XML签名可由签名信息(SignInfo)、签名结果(SigValue)、密钥信息(KeyInfo)和签名对象(Object)等几个部分组成。其中,签名信息(SignInfo)部分给出本签名的规范化算法CanonicalizatlonMethod、签名算法SignatureMethod、源签名文档的URL链接Rerence、源文档在进行摘要算法之前进行的转换Transforms等。签名结果(SigValue)部分给出对信息摘要进行签名的结果。而密钥信息(KeyInfo)部分则给出验证签名的密钥信息,包括证书、密钥名、密钥算法等。
  
  3基于RSA的XML数字签名方案
  
  基于RSA算法的XML数字签名和验证方案如如图1所示。该方案在实现时主要包括三个阶段,即密钥生成(分发),生成签名和签名验证。第一阶段是生成公、私密钥对并进行分发,这可以由证书服务器或密钥容器实现,私钥只归签名方保密拥有,而公钥则可以公开分发。第二阶段是签名方进行签名,XML 数字签名不仅能够实现对整篇XML文档进行签名,更重要的是能够对XMI文档的特定的一部分内容签名,当文档的某个部分很关键且不能被篡改时,这一功能显得特别有效。所以,当数据存在数据库中或以其它格式存储时,可以先把其转换成XML格式,然后运用RSA算法以私钥作参数生成数字签名,若被签名的文档是机密文件,则需要进行加密传输或在安全信道上传输。第三阶段,验证方需要读取被签名的数据时,如果能用签名者的公钥解密数字签名,得到正确的XML文档,基于RSA算法的原理就可以认为读取到的数据是可信的。
  


  在私钥的保密性得到保证的情况下,该基于RSA的XML数字签名方案不需要第三方的参与,就可防止发数据在签名年的不可更改性及签名方的抵赖行为,保证了验证方读到的数据是可信和不可否认的。该方案比较简单易行,特别是XML文档数据内容和数据式的分离,只对部分关键数据进行签名能明显提高效率和性能,可以较好的解决电子商务活动中的数字签名有效性问题,在电子商务的公文交换、电子合同的实施、网上银行的实现等方面起着非常重要的作用。
  
  4基于VB.net的XML数字签名实现
  
  4.1XML数字签名的实现方式
  XML数字签名规范发布以来,很多科研机构和公司对其进行了深入的研究并提供了具体的实现方式,主要有IBM的XML安全套件、Java语言、VeriSign XML信任服务和Microsoft Visual Studio.NET平台。IBM的XML安全套件包括XML数字签名、XML加密和XML访问控制语言(XACL),为XML数字签名提供完整支持;Java语言为XML安全的实现提供了很好的工具包;VeriSign XML信任服务的XML密钥管理规范提供了完整的认证、数字签名和加密服务;微软公司在其·NET开发平台中提供了广阔的安全服务,利用其C#、VB.net可以方便的实现XML数字签名。
  4.2基于RSA的XML数字签名的实现
  微软.NET Framework 中的 System.Security.Cryptography.Xml应用了由 W3C 和 IETF 联合制定的XML 签名的语法和处理规范(缩写为 XML DSIG),支持XML数字签名的创建和验证。对XML文档进行数字签名,必须有两个元素;被签名的数据和实施签名的密钥,Microsoft .Net平台提供了实现这些操作的类和方法,为我们实现基于XML的数字签名提供了方便。
  下面,我们基于此平台建立一个典型定购单的XML的数字签名。假定有一个定购单将要被发送的会计部门进行进一步的处理,对这一定购单实施基于XML的数字签名就可以确保没有人能篡改这一定购单。这可以分四步实现:
  (1)建立定购单,并存入一个XML文档
  Dim NewXMLdocument As New XmlDocument( )
  Dim node As XmlNode =
  NewXMLdocument.CreateNode(XmlNodeType.Element, "", "ElementToSign",_ "AdvisorArticleTest")
  ‘定购单信息
  node.InnerText =
  "Example text to be signed. This text could be purchase order, product info. or_credit card info."
  NewXMLdocument.AppendChild(node)
  Dim SaveXML As New XmlTextWriter( _FileName, New UTF8Encoding(False))
  NewXMLdocument.WriteTo(SaveXML)
  SaveXML.Close()
  (2)生成基于RSA算法的密钥对(包括公钥和私钥),并把生成的密钥对存储在一个XML文件中。
  Dim Key As New RSACryptoServiceProvider( )
  Dim strKeyXML As String = Key.ToXmlString(True)
  Dim objXMLdocument As New XmlDocument( )
  objXMLdocument.LoadXml(strKeyXML)
  objXMLdocument.Save(XMLKeyPairFileName)
  (3)利用某一算法对该订购单进行签名;
  Dim doc As New XmlDocument( )
  doc.Load(New XmlTextReader(FileName))
  Dim signedXml As New SignedXml(doc)
  signedXml.SigningKey = Key
  Dim reference As New Reference( )
  reference.Uri = ""
  Dim trns = New XmlDsigC14NTransform( )
  reference.AddTransform(trns)
  Dim env As New XmlDsigEnvelopedSignatureTransform( )
  reference.AddTransform(env)
  signedXml.AddReference(reference)
  signedXml.ComputeSignature()
  Dim xmlDigitalSignature As XmlElement =signedXml.GetXml()
  doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, True))
  If TypeOf doc.FirstChild Is XmlDeclaration Then
  doc.RemoveChild(doc.FirstChild)
  End If
  Dim xmltw As New XmlTextWriter(SignedFileName, New UTF8Encoding(False))
  doc.WriteTo(xmltw)
  xmltw.Close()
  (4)验证签名,如果有人篡改了定购单就可以校验。
  Dim xmlDocument As New XmlDocument()
  xmlDocument.Load(Name)
  Dim signedXml As New SignedXml(xmlDocument)
  Dim nodeList As XmlNodeList = xmlDocument.GetElementsByTagName("Signature")
  signedXml.LoadXml(CType(nodeList(0), XmlElement))
  Return signedXml.CheckSignature(Key)
  
  5结束语
  
  XML即将成为下一代互联网的标准语言,基于XML数字签名技术可以较好的解决了电子商务活动中的数字签名有效性问题。在电子商务的公文交换、电子合同的实施、网上银行的实现等方面发挥了重大的作用,XML数字签名必将具有极为广阔的前景。
  
  参考文献:
  [1](美)弗里曼(Freeman,A.),(美)琼斯(Jones,A.)著,靳京译 .NET安全编程[M].清华大学出版社,2007-2.
  [2]王会进,杨文茵,朱岸青.基于零知识证明的XML数字签名方案[J].计算机工程,2006,(07).
  [3]黄寅.XML数字签名技术在远程考试中的应用研究.[J].计算机系统应用,2006,(10).
  基金项目:郑州航空工业管理学院青年基金项目(Q06L108)
其他文献
摘 要:CPU产品,按市场不同档次的需求被划分成很多条产品线,形成了纷繁复杂的产品格局。这为电脑用户如何认知和选购合适自己需求的CPU产品带来了很大的障碍。为了理清这些产品间的区别,本文依据产品发布时间的先后和产品市场定位的高低划分,分别介绍了Intel和AMD这两大CPU厂商的产品,是初识电脑的用户认识CPU产品的指南,也是电脑行家手头的一部简明CPU编年史。  关键词:双核;CPU;多核CPU
期刊
“Intel未来教育”倡导的是“问题化教学”。在教师的问题设计下,学生采用探究问题的学习方式主动学习,在掌握知识内容的同时,让学生体验、理解和应用探究问题的方法,培养学生的创新精神和实践能力。在教学过程中,我尝试将“Intel未来教育”和历史课的探究性学习结合在一起,并作了进一步探索。  1.“Intel未来教育”体现了研究性学习的问题意识  现行教材内容可读性强,教师可以组织学生自我解读,自主学
期刊
当前,新一轮的课改如潮涌来,新课程理念互动、合作、探究也正为许多教育工作者所践行,在课改的过程中,计算机辅助教学CAI作为一种先进模式,是教学改革的一个重要突破口。那么,思想政治课如何借助CAI,将新课程中的教育教学思想与现代教育技术整合起来,优化教学结构,提高教学实效,让课堂既充盈着现代教育技术的气息,又避免陷入应用的误区呢?    一、 政治课教学中应用CAI的必要性和重要性    中学思想政
期刊
摘 要:在如今各类存储系统中,RAID已经成为不可或缺的重要组成部分,为保护数据发挥重要作用。本文详细分析了目前5种不同RAID级别的技术特点,并介绍了它们的各自优缺点和应用特点。  关键字:RAID;磁盘;数据存储  中图分类号:TP309.3 文献标识码:A    TheApplication and Analysis of the RAID Technology  FAN Zhi-ping 
期刊
摘 要:随着Internet应用的逐渐普及,WWW已经发展成为一个巨大的分布式信息空间,为用户提供了一个极具价值的信息源。但因Internet所固有的开放性、动态性与异构性,又使得用户很难准确快捷地从WWW上获取所需信息。文中将数据挖掘的思想引入WWW信息处理领域来解决Web信息有效获取的问题,讨论了在WWW上进行信息挖掘所采用的技术和策略,最后简要介绍了基于Web的信息挖掘应用前景和方向。  关
期刊
摘 要:本文针对如何实现有线电视业务与电话语音业务、计算机互联网业务的融合,研究并设计了一种基于DSP+FPGA的网关实现方案,该网关将数字电视信号转换为组播信号,达到了在用户驻地网实现有线电视网与计算机互联网的融合。  关键词:IPTV;网关;DSP+FPGA  中图分类号:TP391.4文献标识码:A    Architecture Design and Impement Of IPTV Ga
期刊
摘 要:随着GSM网络的通信技术已经成熟,信息数据的保密成为十分重要的问题。本文主要讨论了保密通信的概念、密钥管理方式,描述了一种利用CSD信道来实现GSM手机中的数字加密通信方式。  关键词:保密通信;密钥管理;CSD;GSM保密通信  中图分类号:TP393.07 文献标识码:A    CSD Application in GSM Network Encrypted Communication
期刊
摘 要:ERP(企业资源计划)系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。本文针对企业在实施ERP过程中存在的对ERP认识不到位、管理基础薄弱以及没有进行有效的业务流程重组等问题,提出了若干对策措施和解决方案。  关键词:ERP(企业资源计划);BPR (业务流程重组);信息化  中图分类号:TP274+.2文献标识码:A    Misunde
期刊
摘 要:MOM 2005主要被设计用于实现分布式工作负荷与高效操作特性的组件构成。  关键词:MOM 2005;银行服务器;监控  中图分类号:TP39文献标识码:A     Research Of The Appliance of MOM2005 in Bank Servers' Monitoring  HUANG Zhi-jian  (Zhejiang University Of Techno
期刊
摘 要:教师在QBASIC课程教学过程中培养学生创新思维能力,就要在教学中创设思维情境,培养独立思维;深挖智力因素,发展深刻思维;丰富联想训练,促进发散思维。  关键词:QBASIC教学探研;培养;创新能力  中图分类号:G434文献标识码:A     The Teaching Study of Training Students' Innovative Ability  CHEN Gai-xia
期刊