数字签名方案的实现欧家权、应用数学、2111011451一:数字签名的背景随着信息、电子技术的迅速发展,全球己步入信息社会。由于整个社会将形成一个巨大的计算机网络,任何部门的计算机网络一旦出现安全问题,都会直接影响到整个国家的网络安全,所以计算机网络安全问题已引起了各国的高度重视。随着我国信息化进程的加快,网络化将向各经济部门、政府机关、军队、学校和社会团体等方向延伸,先进的计算机系统能把整个社会乃至军队联结起来。计算机作为国家的关键基础设施和战略命脉,其安全状况直接影响到国家的安全和发展。加密技术是保证信息安全的关键技术,其理论是信息安全的核心内容之一。密码学是一门古老而又年轻的学科,1949年以前,密码学是一种艺术而并不是作为一门严格的科学存在。1949年shannon[’]发表的“保密系统的信息理论”一文为私钥密码系统建立了理论基础,从此密码学成为了一门科学。而1976年Diffie和Hellman[2]的“密码学的新方向”则开创了公钥密码学的新纪元。目前的数据加密、数字签名、消息认证等技术都是以密码技术作为基础设计出来的。随着信息化的高速发展,密码学理论的研究和应用越来越受到重视。数字签名的概念由Diffie和Hellman提出,是现代密码学最重要最基本的概念之一。数字签名的设计思想等同于手写签名,即将签名者的身份与其签署的消息绑定,表示某人已对某消息进行了签字。任何的验证者均能验证消息确实为签名者所签署,而伪造一个合法用户的签名却是困难的。数字签名是实现数字通信中可认证性、完整性和不可否认性的重要密码技术,是应用最为广泛的公钥密码技术之一。综上所述,数字签名的应用范围相当广泛,而数字签名最重要的应用之一就是数字版权管理系统的应用。随着网络和数字技术的快速发展,以数字形式存在的产品在人们的日常工作、学习和生活中占据越来越重要的地位。这些数字产品包括:电影、音乐、图片、电视、软件、书籍、期刊等,我们通称之为数字内容。数字内容通常都是有版权的,版权所有者销售数字内容并希望获得最大的经济收益。然而,数字内容的数字特性在为合法的用户提供存储、传输、处理等便利性的同时,也为盗版者的盗版行为提供了捷径。如果不采取有效的措施,盗版者就可以将数字内容精确复制并通过互联网络传播,版权所有者的利益将受到严重的侵害。如何通过技术手段来保护数字内容的版权己成为近年来工业界和学术界研究的热点问题,许多开放的或专有的数字内容保护系统被提出来并得到不同程度的应用。数字内容保护技术是对各类数字内容的知识产权进行保护的一系列软硬件技术,合理地使用这些技术能够有效平衡数字内容价值链中各参与方的利益和需求,带动数字内容制作、消费电子和信息技术等产业的发展,并有助于开展新的商业模式,促进整个数字内容市场的发展和信息的传播,具有广泛的经济和社会意义。因此,基于数字签名技术与数字版权保护技术的特点与共性,研究数字签名理论在数字版权管理系统中的应用是一个很有意义的课题,本文将在对数字签名进行研究的基础上,将数字签名的技术与数字版权管理系统进行有机结合,使数字签名理论能为数字版权的保护作出贡献。2000年6月30日,美国克林顿总统用数字签名和手写签名两种方式正式签署((数字签名法律》,使数字签名在美国与传统签名一样具有了法律效力。2004年8月28日,第十届全国人民代表大会常务委员会在第十一次会议通过了《中华人民共和国数字签名法》,该法自2005年4月1日已经开始施行。随着各国相关法律的建立,数字签名在今后将与手写签名或者盖章具有同等的法律效力。以数字签名方式签署的合同、文件等电子文档与传统签名方式签署的纸质文件具有同样的法律效应,这就为基于互联网的电子商务、电子政务等各种应用铺平了道路。我国将在国家计委的项目—网络身份认证管理示范工程基础上,逐步开展以公安户政信息和特征识别码为支持平台的网络身份管理等工作,为数字签名法的实施提供技术上的保障。数字签名法立法通常遵循技术中立的原则。目前,国际上流行的态度是,数字签名标准的发展应该统一、透明和客观,放弃为每一种认证方法进行立法的做法,承认各种数字签名的形式的合法性,只要其符合国际标准,均具有同等的法律效力和可强制执行力。反映到立法上,就是要确立技术的中立地位,避免规定使用特定技术,只从功能上对数字签名做出规定。这样,才能为未来新的数字签名技术的发展预留法律空间。数字签名技术的发展是无止境的,一些原本被认为安全的技术,随着时间的推移和技术的进步也逐渐暴露出其缺陷。如,美国朗讯科技公司的贝尔实验室信息科学研究中心的DanielBleiehenbaehe研究员于2000年2月5日宣布在著名的数字签名算法DSA的随机数生成技术存在着重大缺陷。因为密钥的有效性依赖于数字产生的随机度,但DSA的随机数产生方法上存在偏重某些数字的现象。在概率上,从某个特定范围的数字中选择随机数的概率是从其它范围的数字中选择的2倍。正是这种偏重性大大减弱了DSA的安全性能,从而会加大整个系统的脆弱性。不过以目前性能还不足够发达的计算机而言,该缺陷还不至于立即构成威胁。但在不久的将来,因特网和企业/政府的内部网络业务的完整性就会面临危险。VPN(虚拟个人网络)、在线购物和金融交易等都有可能受到影响。在国际密码学会议(Crypt。2004)上,研究人员宣布,他们发现了破解数种Hash算法的方法,其中包括MD4,MDS,NAVAL一128,RIPEMD。这些都是常搭配数字签名使用的算法。分析表明,SHAI的减弱条件的变种算法可能被破解,但完整的SHAI并没有被破解,也没有找到SHAI的碰撞。研究结果说明,SHAI的安全性暂时没有问题,但随着技术的进步,也面临着危险。随着数字签名与普通签名有同等效力的法规出台,数字签名技术的研究与应用将进入一个新的阶段。随着电子政务、电子商务等应用的普及和认识的提高,人们对数字签名本身的安全要求也在不断提高。对己有签名方案的安全分析和攻击将不断升级,密码学中各种算法的安全性将面临严峻的考验。另一方面,需要依靠数字签名技术的网络应用呈快速增长的趋势。例如:2004年的美国总统大选已开始部分采用网上投票,据称,世界上搞网上投票和电子投票的不止美国一家,瑞士、英国也己开始尝试这种新的投票方法。随着信息化的发展,我国信息安全技术的研究和产业已受到党和国家的高度重视,江泽民总书记曾明确指出:“信息和网络安全关系国家安全”。信息安全的地位越来越高,越来越引起政府的重视,投入上也越来越大。在军事上,信息战这种新型作战模式的出现被视为是一次军事革命,今后的战争中决定胜负的因素不再仅仅是炸药、飞机和大炮,信息将成为一种重要的克敌制胜的武器。目前这种新型战争的各项准备工作各国都在高速进行,而这主要取决于计算机硬件、软件、网络通信技术的发展水平。数字签名技术由于其能有效地防止信息的伪造、确定信息的来源和判断信息是否完整等能力,使其在信息战中有着极其重要的作用。数字签名的特性使得数字签名在运用到数字版权管理系统的协议中能起到重要的作用。现今对数字产品的版权保护的主要技术是数字水印技术,数字水印算法己经有了较大发展,能够应用于所有网络上的数字媒体,抗攻击性和可用性也正在提高。目前,有些系统己经开始尝试将数字水印算法用于数字媒体的版权保护过程中。但是我们应该看到,在开放环境下,密码算法的安全性和安全协议的安全性是保障信息安全的两个基本方面。在开放环境下若要保护数字版权,使用数字水印算法来保证版权的安全性固然很重要,但也必须考虑到版权保护过程中所采用协议的安全性。当攻击者转向攻击协议而不是数字水印算法本身时,如果协议本身存在安全漏洞,则整个系统就起不到真正保护数字版权的作用。1883年,AugusteKerckhoffS〔3}阐述了第一个密码系统的设计准则,他在该准则中建议:我们应该假设对手知道加密数据的方法,数据的安全性必须仅依赖密钥的选择。像商用的密码算法和协议那样,为了使数字版权管理系统在开放环境下能起到版权保护作用,系统的设计必须遵守KerCkhoffS准则。显然,通过引入完备的安全协议,可以最大限度的防范攻击者对整个系统的破坏。随着数字化信息应用的普及,数字版权保护安全协议的研究必将会成为一个新的研究热点。二:数字签名的原理2.1数字签名具备的特征数字签名类似于数字化的手写签名,但它们又不完全相同.数字签名与单独的数据,如签名的合同或电子邮件有关.数字化的手写签名也是为了完成相同的工作,但是它却无法引用待签的文档.强迫进行数字化的手写签名比强迫进行数字签名容易的多:只需从另一个文档拷贝签名即可.数字签名通常提供更高的安全度,因为它们与签名的文档相关,而且如果无法读取所使用的密钥,就很难伪造签名.由此,数字签名要具备以下特征:(1)签名不能被伪造;(2)签发方签过名后不能对签发文件的事实进行抵赖和否认;(3)信息发出后,任何人不能对其进行篡改;(4)若双方关于签名发生纠纷,可以给第三方仲裁机构提供用于仲裁的证据。2.2数字签名的原理数字签名的基础是密码技术,目前较多使用公钥加密技术,如基于RSADateSecurity公司的PKCS(PublicKeyCryptographyStandards)、DSA(Digi2talSignatureAlgorithm)、PGP(PrettyGoodPrivacy)等.在1994年美国标准与技术协会公布了数字签名标准(DSS)后,公钥加密技术在数字签名中的应用更为广泛.公钥加密系统使用密钥对公钥和私钥来加密和解密信息.用户可以公布其公钥,公钥的公布不会损害系统的保密性.而私钥只有密钥对的所有者才知道,从而可把私钥作为其所有者的身份特征.发送者A用其私钥SKA对文件X进行加密,结果DSKA(X)传送给接收者B.B用已知的A的公钥PKA解密得出EPKA(DSKA(X))=X.由于除A外无人具有A的私钥SKA,所以除A外没有别人能产生密文DSKA(X),也就唯一标识了A的身份.若A要抵赖曾发送文件给B,B可将X及DSKA(X)出示给第三者.第三者很容易用PKA去证实A确实发送文件X给B.反之,若B将X伪造为X′,则B不能在第三者前出示DSKA(X′),就证明B伪造了报文.这样就实现了数字签名.为了保证传输的数据不被篡改,在现有的数字签名方案中,通常以单向函数(如Hash函数等)作用于文件,产生固定长度的二进制作为信息摘要,再将信息摘要用公钥加密作为签名与文件一起发送.由于采用单向函数,给定一个固定长度的字符串,很难找到一个具有明确意义的消息,使其函数值与该字符串的信息摘要值完全相同.所以消息一旦被修改或破坏,就会与原来的信息摘要值不匹配.接收方很容易通过计算文件的信息摘要值与传来的函数值的不同,而察觉出消息被非法用户篡改过.目前,Java开发包JDK中支持DSA签名,JDK1.3及以后的版本还支持RSA签名.而且,Java还提供了2个信息摘要函数MD5和SHA.以DSA签名算法和基于MD5的信息摘要为例,数字签名及验证的过程签名是首先计算被签名文件的MD5码,该码经过DSA私钥和DSA加密算法加密后,形成数字签名,然后再附加到原文件之后,向外发送.收件人得到带有数字签名的文件后,要对数字签名进行鉴别.首先取出签名者的公钥,数值签名经过公钥和DSA解密算法解密后,恢复出原来的MD5码.然后计算原文件的MD5码,再与前者比较,如果相同,则文件属实,否则文件或签名已经过改动.2.3数字证书由于数字签名依赖于公钥的完整性,那么验证人如何确保他们获得的公钥不是来自某个冒名顶替者呢?而且,在数字签名认证发送人的同时,接收人如何能够确保发送人值得信任呢?这些问题的解决方案就是数字证书.由共同信任的第三方或证书授权机构CA(CertificateAuthority)颁发证书.CA不仅有签名者的公钥,还有该用户的其他信息.证书含有一个有效期.颁发机构用它的专用密钥在证书上签名.该过程隐含一个假定,即CA的公钥是广泛可用的和真实的.公钥证书以X.509标准为基础.默认情况下,Java开发包使用的是X.509证书.一个