1、44目录前 言11 绪论21.1因特网21.2网络安全21.3数字签名的研究意义31.3.1数字签名原理简述31.3.2数字签名可以抵御的威胁32 密码学理论基础52.1密码学基础52.1.1基本概念52.1.2密码系统工作原理62.2密码技术的要求62.3传统密码体制的分析72.4公开密钥体制分析72.4.1公钥密码体制简介82.4.2其他公钥体制92.4.3公开密钥密码体制的安全性103 RSA密码体制研究113.1 RSA密码体制简述113.2 RSA密码体制的工作流程123.3 RSA的安全性133.3.1因子分解问题133.3.2定时攻击134 数字签名技术及分析154.1 数字签名
2、的形式化定义154.1.1系统的初始化154.1.2签名产生过程154.1.3签名验证过程164.2 数字签名的安全性174.3 典型的数字签名算法174.3.1 ELGamal数字签名算法174.3.2 DSA数字签名算法184.3.3椭圆曲线数字签名算法204.4数字签名的一般的工作流程224.5数字签名中的问题224.6数字签名的前景与担忧235 基于RSA算法的数字签名的实现245.1开发环境介绍245.1.1 C#语言概述245.1.2 C#语言的特点245.2 数字签名的主要技术255.2.1 单向Hash函数255.2.2 数字摘要265.2.3 RSA加密体系265.3 .NE
3、T提供的类的介绍265.4 数字签名系统的实现275.4.1 数字签名原理275.4.2 程序实现及运行结果28结束语35参考文献36致 谢37附录:RSA算法C源码38数字签名算法及实现计算机科学与技术 余治华 指导老师:符开耀摘 要;建立在HTTP,TCP/IP,MIME,FTP等开放式协议基础上的Internet,由于它们的协议结构简单,得到了大力推广,尤其是渗透了国民生产及国家安全的关键领域。但是它们对网络系统安全与防范并不十分完善,在网络通信的同时,出现了大量的网络攻击,对信息系统造成了巨大破坏,使网络安全技术成为了各国政府和研究机构的重要研究课题。传统的文件加密与信息传输的存在较大
4、的缺陷,而数字签名技术是信息安全理论与技术的基础和重要保证,RSA算法被公认为是目前理论和实际应用中最为成熟和完善的一种公钥加密体制,可以用来进行数字签名和身份验证。目前仍具有一定的发展前景。本文介绍了密码学的基本概念,主要从以下四个方面对基于RSA密码体制的数字签名技术进行分析:第一是分析了数字签名的安全性,指明了数字签名的发展方向,第二是分析了RSA算法的安全性,为数字签名的实现提供了安全基础,第三是提出了基于RSA密码体制的数字签名系统的设计思想和工作流程,第四提供了实现此数字签名系统的数字签名过程。关键词:数字签名;RSA公钥算法;公开密码体制;加密 ;解密;Digital signa
5、ture algorithm and realizationComputer Science and Technology Yu zhihua Tutor: Fu kaiyao ABSTRACT:Internet was based on the open protocol like HTTP,TCP/IP, MIME, FTP etc.Due to the simple protocol structure, Internet becomes more and more popular.nowadays,It has penetrated into national main fields
6、of peoples common life and national security system. But they are still not good for Internet system security and protection. There are many network attacks when we communicate through network, and the attacks will damage the information system seriously,so network security technology has become an
7、important research topic for many governments and organizations. but the old communication encrypt and transmit have some objection. The digital signature technique is the foundation and guarantee of the information security. Among the various public key cryptosystem, RSA algorithm is the best choic
8、e in both theory and application, and it is often used in digital signature and it is often used digital signature and identification system., Today this algorithm use in some time more and more.In this thesis, the basic concepts of cryptogram, Thesis analyzed digital signature algorithms base on RS
9、A public-key algorithm system for four sides: First, analyzed the security for the digital signature and point to the way for the digital signature; second, analyzed the security for RSA public-key algorithm; third bring forward the pensive project and work flow base on RSA public-key algorithm digi
10、tal signature system; finally provide the process achieve the digital signature system.Keywords:digital signature; RSA public-key algorithm; public key crypt system; encryption; decryption; 前 言随着现代通信技术的发展和迅速普及,特别是随着由通信与计算机相结合而诞生的计算机互联网络全面进入千家万户,使得信息共享应用日益广泛与深入。世界范围的信息革命激发了人类历史上最活跃的生产力,但同时也使得信息的安全问题日
11、渐突出而且情况也越来越复杂。从大的方面来说,信息安全问题已威胁到国家的政治、经济、军事、文化、意识形态等领域。因此,很早就有人提出了“信息战”的概念并将信息武器列为继原子武器、生物武器、化学武器之后的第4大武器。从小的方面来说,信息安全问题也是人们能否保护自己个人隐私的关键。计算机网络的飞速发展,使人类社会正经历着一场前所未有的全方位的深刻变革,它改变了传统的事务处理方式,对社会的进步和发展起着很大的推动作用,与此同时,人们也越来越意识到信息安全的重要性,在日常生活中,我们用签名来表示个人身份。那么,在Internet 上,我们该如何表示身份呢?数字签名的提出和其可靠的应用,使得数字签名成为了
12、手写签名有效合法的替代者。 数字签名的概念最初是由Diffie 和Hellman 提出的,他们提出让每一个用户使用一个公钥用于验证签名,同时还保存一个私钥用于产生签名。在Diffie 和Hellman 的数字签名策略中,用户对消息的签名取决于消息本身和用户的私钥,而利用用户的公钥则可对签名进行验证。1 绪论1.1因特网Internet最早来源于美国国防部高级研究计划局DARPA(Defense advanced Research Projects Agency)的前身ARPA建立的ARPAnet,该网于1969年投入使用。从60年代开始,ARPA就开始向美国国内大学的计算机系和一些私人有限公司
13、提供经费,以促进基于分组交换技术的计算机网络的研究。1968年,ARPA为ARPAnet网络项目立项,这个项目基于这样一种主导思想:网络必须能够经受住故障的考验而维持正常工作,一旦发生战争,当网络的某一部分因遭受攻击而失去工作能力时,网络的其它部分应当能够维持正常通信。最初,ARPAnet主要用于军事研究目的。 1969年12月,当ARPAnet最初建成时只有四个结点,到1972年3月也仅仅只有23个结点,直到1977年3月总共只有111个结点。但是近十年来,随着社会科技,文化和经济的发展,特别是计算机网络技术和通信技术的大发展,随着人类社会从工业社会向信息社会过渡的趋势越来越明显,人们对信息
14、的意识,对开发和使用信息资源的重视越来越加强,这些都强烈刺激了ARPAnet和以后发展成的NSFnet的发展,使联入这两个网络的主机和用户数目急剧增加,1988年,由NSFnet连接的计算机数就猛增到56000台,此后每年更以2到3倍的惊人速度向前发展,1994年,Internet上的主机数目达到了320万台,连接了世界上的35000个计算机网络。现在,Internet 上的用户将突破1亿,每月仍以1015的数目向前增长。今天的Internet已不再是计算机人员和军事部门进行科研的领域,而是覆盖了社会生活的方方面面,构成了一个信息社会的缩影。1.2网络安全随着计算机网络的普及和发展,我们的生活
15、和工作都越来越依赖于网络。与此相关的网络安全问题也随之凸现出来,并逐渐成为企业网络应用所面临的主要问题。网络安全潜在威胁形形色色,从不同角区看:有人为有非人为的、内部攻击和外部攻击、被动和主动攻击等。对网络安全威胁主要表现为:非授权访问、冒充合法用户、破坏数据完整性、干扰系统正常运行、利用网络传播病毒、线路窃听等方面。安全威胁主要利用以下途径来达到破坏的目的:系统存在的漏洞、系统安全体系的缺陷、使用人员的安全意识薄弱、管理制度的薄弱等。 网络威胁日益严重,网络面临的威胁五花八门,概括起来主要有以下几类。()内部窃密和破坏。内部人员可能对网络系统形成下列威胁:内部涉密人员有意或无意泄密、更改记录
16、信息;内部非授权人员有意无意偷窃机密信息、更改网络配置和记录信息;内部人员破坏网络系统等。()截收。攻击者可能通过搭线或在电磁波辐射的范围内安装截收装置等方式截获机密信息,或通过对信息流和流向、通信频道和长度等参数的分析推出有用信息。它不破坏传输信息的内容。不易被查觉,属于被动攻击。()非法访问。非法访问指的是未经授权而使用网络资源或以未授权的方式使用网络资源,它包括:非法用户如黑客进入网络或系统,进行违法操作;合法用户以未授权的方式进行操作。()破坏信息的完整性。攻击可能从二个方面破坏侍息的完整性:改变信息流的次序、时序,更改信息的内容、形式;删除某个消息或消息的某些部分;在消息中插入一些信
17、息,让收方读不到或接收错误的信息。属于主动攻击类型。()冒充。攻击者可能进行下列冒充:冒充领导发布命令、调阅文件;冒充主机欺骗合去主机及合法用户;冒充网络控制程序套取或修改用户权限、口令、密钥等信息,越权使用网络设备和资源;接管合法用户,欺骗系统,占用合法用户的资源等等。()抵赖。从发信者和接收者两个角度看,可能出现下列抵赖行为:发信者事后否认曾经发送过某条消息;发信者事后否认曾经发送过某条消息的内容;接收者事后否认曾经接收过某条消息;接收者事后否认曾经接收过某条消息的内容。()其他威胁。对网络系统的威胁还包括计算机病毒、电磁泄漏、各种自然灾害(如水灾,火灾,地震等)、战争、失窃、操作失误等。
18、1.3数字签名的研究意义1.3.1数字签名原理简述数字签名在具体实施时,首先发送方对信息施以数学变换,所得的信息与原信息惟一的对应;在接收方进行进变换,得到原始信息。只要数学变换方法优良,变换后的信息在传输中就具有很强的安全性,很难被破译、篡改。这个发送方的变换过程就是签名,通常是种加密措施;对应的逆变换过程就是对签名的认证,通常是一种解密措施。 有一种密码体制称为公钥密码,又叫非对称密码;密钥是由公开密钥和私有密钥组成的密钥对。简单地讲,数字签名就是用私有密钥进行加密,而认证就是利用公开密钥可以进行正确的解密。但是由于公开密钥无法推算出私有密钥,所以公示的公开密钥并不会损害私有密钥的安全;公
19、开密钥无须保密,可以公开传播,而私有密钥必须保密。如此,某人用其私有密钥加密消息,能够用他的公开密钥正确解密,就可肯定该消息是某人签字的。因为共他人的公开密钥不可正确解密该加密过的消息,其他人也不可能拥有该人的私有密钥而制造出该加密过的消息。1.3.2数字签名可以抵御的威胁 数字签名机制作为保障网络信息安全的手段之一,可以解决伪造、抵赖、冒充和篡改问题。 数字签名的目的之,就是在网络环境中代替传统的手工签字与印章,其可抵御这些网络攻击: ()防冒充(伪造)。其他人不能伪造对消息的签名,因为私有密钥只有签名者自己知道,所以其他人不可能构造出正确的签名结果数据。显然要求各位保存好自己的私有密钥,好
20、象保存白己家门的钥匙样。 可鉴别身份。由于传统的手工签字一般是双方直接见面的,身份自可一清二楚;在网络环境中,接受方必须能够鉴别发送方所宣称的身份。如可鉴别身份:接收者使用发送者的公开密钥对签名报文进行解密运算,如其结果为明文,则签名有效,证明对方身份是真实的。 ()防篡改(防破坏信息的完整性)。传统的手工签字,假如要签署一本200页的合同,是仅仅在合同末尾签名呢,还是对每一页都签名,不然,对方会不会偷换其中几页,这些都是问题所在。而数字签名,如前所述:签名与原有文件已经形成了一个混合的整体数据,不可能篡改,从而保证了数据的完整性。()防重放。人们大做无本之利的事情是不可能的,在日常生活中,我
21、向李君借钱,同时写了一张借条给李君;当我还钱的时候,肯定要向他索回我写的借条撕毁,不然,恐怕他会再次挟借条要求我再次还钱。在数字签名中,如果采用了对签名报文添加流水号等技术,可以防止重放攻击。()防抵赖。数字签名可以鉴别身份,不可能冒充伪造,那么,只要保存好签名的报文,就好似保存好了手工签署的合同文本,也就是保留了证据,签名者就无法抵赖。以上是签名者不能抵赖,那如果接受者确已收到对方的签名报文,却抵赖没有收到呢,要防接受者的抵赖,在数字签名体制中,要求接受者返回一个自己签名的表示收到的报文,给对方或者是第三方,或者引入第三方机制。如此操作,双方均不可抵赖。()机密性(保密性)。有了机密性保证,
22、截收攻击也就失效了。手工签字的文件(如合同文本)是不具备保密性的,文件一旦丢失,文件信息极可能泄露。数字签名可以加密要签名的信息。由以上对比,数字签名比手工签字更具优越性。特别是在网络应用中,数字签名是进行身份鉴别与网上安全交易的通用实施技术。当然,网络环境还有很多其他威胁,要由其他专门技术解决,如防火墙技术、反病毒技术、入侵检测技术等。2 密码学理论基础密码学是网络信息安全的基础,公钥密码体制是密码学的重要组成部分,数字签名的基础就是公钥密码体制。网络信息安全是密码学的重要应用领域,公钥密码体制的主要应用之一就是数字签名。2.1密码学基础 密码学是一门古老的学科,例如著名的凯撒(Caesar
23、)密码,是公元前50年左右,用于古代军队秘密通信的。美国南北战争时期,军队使用的双轨式密码(rail-fence cipher),也有几百年历史了。1949年Shannon发表了“保密信息的理论1”,将密码学的研究纳入了科学的轨道,但该篇论文当时并没有引起人们的广泛重视,直到70年代中期,人类开始步入信息时代时才引起了普遍的重视。那时密码学研究出现了两件引人注目的事情:一件是Diffie和Hellman发表了“密码学的新方案”一文,提出一种崭新的密码体制,冲破长期以来一直沿用的私钥体制;另一件是美国国家标准局(NBS)公开征集,并于1977年正式公布实施的美国数据加密标准(DES)。这两个事件
24、标志着现代密码学的诞生。2.1.1基本概念密码学包括二个方面:密码编码学与密码分析学。密码编码学就是研究对数据变换的原理,手段和方法的技术和科学,其目的是隐藏数据的真实内容,以防止数据被无觉察的篡改和非法使用。密码分析学是为了取得秘密的消息,而对密码系统及其流动的数据进行分析,是对密码原理,手段和方法进行分析,攻击的技术和科学。密码编码学和密码分析学相互矛盾,又相互促进。简言之:密码学=密码编码学+密码分析学 在密码学中,需要通过加密加以保护因而进行变换的原报文称为明文,它可能是位序列、文本文件、位图、数字化的语音序列或数字化的视频图像等。对于计算机,明文指简单的二进制数据。明文经过变换成为一
25、种不可直接辨读的隐蔽形式,称为密文,它也是二进制数据,有时和明文一样大,有时稍大。 什么是密码,简单地说它就是一组含有参数k的变换E。设已知信息m, 通过变换E,得到密文c,即。这个过程称之为加密,参数k称之为密钥。E称为加密算法,它是对明文进行加密时所采用的映射函数或者变换规则。由于密钥k不同,密文c也不同。 当然不是所有含有参数k的变换都可以作为密码,它要求计算k(m)不困难,而且若第三者不掌握密钥k,即使截获了密文c,他也无法从c恢复信息m,也就是说:从c求m极为困难。从密文c恢复明文m的过程称之为解密。解密算法D是加密算法E的逆运算,解密算法是对密文进行解密时所采用的(逆)映射函数或者
26、(逆)变换规则。传统加密用的密钥k与解密用的密钥k是相同的,所以有时也叫对称密码。通信双方用的密钥k是通过秘密方式私下约定产生的,只能有通信双方秘密掌握。如果丢失了密钥,则密码系统不攻自破。2.1.2密码系统工作原理密码系统由明文、密文、密钥、加密算法、解密算法五个基本元素组成。其工作流程为:发方将明文M在加密密钥Ke的作用下,经过加密算法的变换成为密文,通过通信信道传输到收方,收方在解密密钥Kd的作用下,经过解密算法的变换将密文还原成明文,其工作原理如图2-1所示:图-1 密码系统工作原理当密文信息在通信信道传输的过程中,可能会受到不法分子的攻击要解密密钥是保密的,即使截获后也不能还原成明文
27、。2.2密码技术的要求任何一个加密体系的核心目标就是保护数据不致泄漏、更替等,为了对数据起到有效的保护作用,加密体系至少应当满足以下几个基本要求: 1.有足够大的密钥空间。例如在凯撒密码体系中密钥的个数只有25个,密钥空间的狭小,必然导致容易被攻破。密钥空间的大小除了可供使用的密钥个数的多少以外,还包括可用密钥的长度,这是一个事情的两个方面。 2.对于密码空间的所有密码k,加、解密算法的实现应当在技术上可行的。算法本身不应在理论上存在漏洞,比如对某些特殊的密钥出现计算不收敛的问题等。 3.在满足加密强度要求的前提下,密钥必须取到一定的长度,密钥长度越大,加密计算的代价就越大,因此还要求加、解密
28、算法在现实环境下使用方便。4.理想的加、解密算法即使公开其函数形式,也不影响所加密数据的安全保密性,即保密强度不受影响。这个特性称之为加密体系的保密强度只依赖于加密密钥,独立于加密算法。之所以提出这个要求,是因为加密算法尽管从函数理论上讲可以是无穷多个,但是设计一个可行的加密算法确非易事,总希望能够在较长时间内有效服役。5.加密算法对明文密文转换的长度比率以接近为好,换而言之,密文长度不应过分大于明文的长度。特别是在数据库系统内,如果不能控制密文的长度,则库内数据的组织就成为不可能的事。2.3传统密码体制的分析传统密码密钥体制的特点是无论加密和解密都共有一把密钥(Kc=Kd ),也称对称加密算
29、法。对称加密算法要求通讯双方在建立安全信道之前,约定好所使用的密钥。对于好的对称加密算法,其安全性完全取决于密钥的安全,算法本身是可以公开的,因此一旦密钥泄露就等于泄露了被加密的信息。 对称加密算法是传统常用的算法。其中最有影响的是1977年美国国家标准局颁布的DES算法(数据加密标准算法)。DES属于分组加密,它用密钥对64位二进制信息进行加密,将64位明文加密成64位密文。在实际运算过程中,DES设计的64位密钥只有56位用于加密过程,其它8位用于奇偶校验位。DES加解密只是简单比特位处理的组合,因此速度快,密钥生成容易。其主要缺点:一是密钥长度太短,随着硬件技术的飞速发展,采用对所有密钥
30、的遍历搜索,搜索的时间会进一步缩短,DES的安全性受到严重的威胁:二是当用户数n增大时,通信密钥数按n (n-1) /2的几何级数增加,从而给密钥分配与管理带来困难;三是由于DES算法公开,其安全性完全依赖于对密钥的保护。因此,必须使用秘密的方式交换密钥。所以DES不适合在计算机中单独使用。 保密通信进入计算机网络,传统的密码便暴露出它的严重弱点。传统密码要求通信双方用的密钥是通过秘密信道私下商定的,如果在网路上传输,无论如何也不能保证这个宝贵的密钥不被敌人截获。另外,网上若有n个用户,则需要C(n, 2)个密钥,如n=1000时,C(1000,2)=500000。这么多密钥的管理和必需的更换
31、都将是十分繁重的工程。更有甚者,每个用户必须记下与其它n-1个用户通信所用的密钥,数量如此之大,只能记录在本上或存储在计算机内存或外存上,这本身就是极不安全的。2.4公开密钥体制分析公开密钥密码体制是现代密码学的最重要的发明和进展。一般理解密码学(Cryptography)就是保护信息传递的机密性。但这仅仅是当今密码学主题的一个方面。对信息发送与接收人的真实身份的验证、对所发出/接收信息在事后的不可抵赖以及保障数据的完整性是现代密码学主题的另一方面。公开密钥密码体制对这两方面的问题都给出了出色的解答,并正在继续产生许多新的思想和方案。在公钥体制中,加密密钥不同于解密密钥。人们将加密密钥公之于众
32、,谁都可以使用;而解密密钥只有解密人自己知道。1976年提出公开密钥密码体制,其原理是加密密钥和解密密钥分离。这样一个具体用户就可以将自己设计的加密密钥和算法公诸于众,而只保密解密密钥。任何人利用这个加密密钥和算法向该用户发送的加密信息,该用户均可以将之还原。公开密钥密码的优点是不需要经过安全渠道传递密钥,大大简化了密钥管理。它的算法有时也称为公开密钥算法或简称为公钥算法。迄今为止的所有公钥密码体制中,RSA算法是最著名、使用最广泛的一种。2.4.1公钥密码体制简介下面介绍一下公钥密码体制中的一些基本概念与结构组成。1.密钥对 在基于公钥密码体制的安全系统中,密钥是成对生成的,每对密钥由一个公
33、钥Ke和一个私钥Kd组成。若某一用户A有一加密密钥Ke不同于解密密钥Kd,可将加密密钥Ke公开,Kd保密。若B要向A保密发送明文m,可查A的公开密钥Ke,用Ke加密明文得到密文 A收到C后,用只有A自己掌握的解密密钥Kd对C进行解密得: 在实际应用中,私钥由拥有者自己保存,而公钥则需要公布于众。为了使基于公钥密码体制的业务(如电子商务等)能够广泛应用,一个基础性关键的问题就是公钥的分发与管理。公钥本身并没有什么标记,仅从公钥本身不能判别公钥的主人是谁。 在很小的范围内,比如A和B这样的两人小集体,他们之间相互信任,交换公钥,互联网上通讯,没有什么问题。这个集体再稍大一点,也许彼此信任也不成问题
34、,但从法律角度讲这种信任也是有问题的。如再大一点,信任问题就成了一个大问题。2.认证 公钥密码术可能会有密钥分发问题,但并不像对称密码术的密钥分发问题那么严重。公钥并不需要像对称密钥那样经常改变。尽管对称密钥在每次消息加密之后都应改变,然而,非对称公钥和私钥能够用于很多数字签名和数字信封中。这要归功于破解非对称密钥相当困难,而且攻击者也难于在使用相同密钥进行多次对称加密的过程中通过相似性而获得好处。 更为重要的是,公钥的真实性可以通过可信的第三方建立,如果用户A确定自己所用的公钥属于用户B,她就可以非常有信心地使用这个密钥。受到用户A和用户B这两方所信任的第三方可以担保公钥的真实性。公钥所有者
35、身份的保证叫做公钥认证(certification )。认证公钥的个人或组织叫做认证机构(CA, Certification Authority)。 公钥加密的最大优点是无需预先建立通信者之间的关系m,而这正是对称加密遇到的问题。然而,现在可以看到,公钥加密需要预先的关系。但这个关系不必是非对称密钥用户之间的。用户A和B双方必须都与CA建立关系。这就是一种信任关系。用户B必须相信认证机构已经正确地把用户A认证为私钥的所有者。信任是公钥基础设施所依赖的基本规则。3.公钥证书 互联网络的用户群决不是几个人互相信任的小集体,在这个用户群中,从法律角度讲用户彼此之间都不能轻易信任。为了验证公钥,用户A
36、生成一个不对称密钥对,并把公钥交给CA。她必须包括一些确定其身份的信息,如名字和/或地址。一旦CA验证了他的身份,就会给他分发一个公钥证书。证书是二进制文件,能够在计算机网络上很容易地传输。CA把它的数字签名应用到所分发的公钥证书中。CA通过签署的方式来认证公钥。如果用户B信任CA,那么他就能够信任它的签名。 由于证书上有权威机构的签字,所以大家都认为证书上的内容是可信任的;又由于证书上有主人的名字等身份信息,别人就很容易地知道公钥的主人是谁。 4.CA (Certification Authority ) 前面提及的权威机构就是认证权威机构(即CA)。CA也拥有一个证书(内含公钥),当然,它
37、也有自己的私钥,所以它有签字的能力。网上的公众用户通过验证CA的签字从而信任CA,任何人都应该可以得到CA的证书(含公钥),用以验证它所签发的证书。 如果用户想得到一份属于自己的证书,他应先向CA提出申请。在CA判明申请者的身份后,便为他分配一个公钥,并且CA将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给那个用户(申请者)。 如果一个用户想鉴别另一个证书的真伪,他就用CA的公钥对那个证书上的签字进行验证(如前所述,CA签字实际上是经过CA私钥加密的信息,签验证的过程还伴随使用CA公钥解密的过程),一旦验证通过,该证书就被认为是有效的。 CA除了签发证书之外,它的另一个重要作用
38、是证书和密钥的管理。 由此可见,证书就是用户在网上的电子个人身份证,同日常生活中使用的个人身份证作用一样。CA相当于网上公安局,专门发放、验证身份证。2.4.2其他公钥体制 人们一直努力在其他困难问题上建立公开密钥密码体制,不至于一旦一些数学难题被解决以后,没有可用的密码算法,所以出现了大量的公开密钥密码算法,包括:背包算法,Pohlig-Hellman算法,Rabin算法,E1Gamal算法,SCHNORR算法,ESIGN算法,McEliece算法,OKAMOTO算法,还可以在有限域上的椭圆曲线上建立 EIGamal算法等。 我们认为RSA算法是目前最好的密码算法,它不仅可以作为加密算法使用
39、,而且可以用作数字签名和密钥分配与管理,而DSA只适合作签名,且安全强度和速度都不如RSA,椭圆曲线上的公开密钥密码系统安全强度依赖于曲线的选择和体制,我们相信它会有更高的安全强度。2.4.3公开密钥密码体制的安全性 由于公钥不需要保密,因此在黑客或许会用他们自己的公钥冒充其他人的公钥进行攻击,这是这种模式的主要风险。为了防范这种攻击的发生,我们采用公钥证书。证书是一组规定了与特定公钥有关的单个计算机或主机名称的数字化数据。名称和密钥都受到一个值得信任的第三方附加的数字签名的保护:即证书机关(或CA)。 公钥领域的大多数主要厂商都可以成为证书机关,他们可以将他们的信任状(credentials
40、)安装在Web浏览器。其他机构可以要求这些厂商有偿签发证书,在使用标准浏览器时,这些证书就会生效。另外,企业也可以购买软件自己签发证书。然而,被用来给这些证书签名的信任状必须安装在任何需要验证这些证书的软件(如Web浏览器)中。 另外,公钥长期存在的一个问题是密钥的撤消。公钥是非常易于创建和签发的。其成本主要是在撤消密钥的过程中产生的。由于公钥在签发时不需要保密,因此用户可以自由地复制和签发它们,这样其他用户在需要时就可以得到它们。然而,如果需要更换公钥,那么这个问题就成为一场噩梦。例如,黑客可能会得到属于特定公钥的私钥,这样他就可以冒充密钥的所有者和欺骗任何使用该公钥的人。如果所有者意识到这
41、个问题,并试图更换私钥,他必须以某种方式联络曾经得到过旧的公钥的所有人和确保其他人不再使用旧的公钥。 大多数公钥系统现在都依靠撤消清单识别不应再使用的公钥。这些清单类似于以前信用卡特约商户使用的厚厚的小册子:在小册子中列出了所有丢失或被偷窃的信用卡的卡号,这些商户会查看小册子,核实某个信用卡是否被偷。其它在线证书验证技术虽然己经出现,但是还没有完全满意的解决方案应用到实践中。随着用户的增加,密钥的数量管理也需要考虑。3 RSA密码体制研究3.1 RSA密码体制简述公钥密码体制的观点是Diffi和Hellman在1976年首次提出的2。这使密码学发生了一场变革。但目前最流行的RSA算法是1977
42、年由Rivest, Shamir和Adleman共同开发的,分别取自三名数学家的名字的第一个字母来构成的。1976年提出的公开密钥密码体制思想不同于传统的对称密钥密码体制,它要求密钥成对出现,一个为加密密钥,另一个为解密密钥,且不可能从其中一个推导出另一个。自1976年以来,已经提出了多种公开密钥密码算法,其中许多是不安全的,一些认为是安全的算法又有许多是不实用的,它们要么是密钥太大,要么密文扩展十分严重。多数密码算法的安全基础是基于一些数学难题,这些难题专家们认为在短期内不可能得到解决。因为一些问题(如因子分解问题)至今己有数千年的历史了。公钥加密算法也称非对称密钥算法,用两个密钥:一个公共
43、密钥和一个专用密钥。用户要保障专用密钥的安全:公共密钥则可以发布出去。公共密钥与专用密钥是有紧密关系的,用公共密钥加密的信息只能用专用密钥解密,反之亦然。由于公钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大简化了密钥管理。除加密功能外,公钥系统还可以提供数字签名。公钥加密算法中使用最广的是RSA。RSA使用两个密钥,一个公共密钥,一个专用密钥。如用其中一个加密,则可用另一个解密,密钥长度从40到2048bit可变,加密时也把明文分成块,块的大小可变,但不能超过密钥的长度,RSA算法把每一块明文转化为与密钥长度相同的密文块。密钥越长,加密效果越好,但加密解密的开销也大,所以要在安全与性能
44、之间折衷考虑,一般64位是较合适的。RSA的一个比较知名的应用是SSL,在美国和加拿大SSL用128位RSA算法,由于出口限制,在其它地区(包括中国)通用的则是40位版本。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题:还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。通常信息安全的目标可以概括为解决信息的以下问题。保密性(Confidentiality)保证信息不泄露给未经授权的任何人。完整性(Integri
45、ty)防止信息被未经授权的人篡改。可用性(Availability)保证信息和信息系统确实为授权者所用。可控性(Controllability)对信息和信息系统实施安全监控,防止非法利用信息和信息系统。密码是实现一种变换,利用密码变换保护信息秘密是密码的最原始的能力,然而,随着信息和信息技术发展起来的现代密码学,不仅被用于解决信息的保密性,而且也用于解决信息的完整性、可用性和可控性。可以说,密码是解决信息安全的最有效手段,密码技术是解决信息安全的核心技术。公开密钥体制的优点就在于,也许你并不认识某一实体,但只要你的服务器认为该实体的CA是可靠的,就可以进行安全通信,而这正是Web商务这样的业务
46、所要求的。例如信用卡购物。服务方对自己的资源可根据客户CA的发行机构的可靠程度来授权。目前国内外尚没有可以被广泛信赖的CA。3.2 RSA密码体制的工作流程 RSA是1978年由Rivest、Shamir和Adleman联合提出的一种公钥密码系统,也是现在应用最为广泛的公钥密码。目前Internet上供大众使用的PGP( PrettyGood Privacy)数字签名与加密软件就是基于RSA的。RSA的基础是数论中的欧拉定理,它的安全性依赖于大数的因数分解的困难性。RSA密码体制的工作流程为:1. 用户选择一对不同的素数,计算;2. 根据欧拉定理,计算欧拉函数值;3. 随机选一整数e,满足;4
47、. 计算e的逆元d,即满足。 则密钥空间K=(n,p,q,e,d),将n, e公开,即n, e是公钥(publickey)秘密保存,即d是私钥(private key )。 p和q应该被销毁掉,不再需要(PGP为了用中国的同余理论加快加密运算保留了P和q,不过它们是用IDEA加密过再存放的)。 加密的过程:若待加密信息为m,首先将其数字化,看成是一个大数字串,并取长度小于的数字做明文块。如果mn,就将m表示成s进位(s=n)通常取二进制表示,选2的最大幂小于n,然后分段编码。接下来用公e进行加密,计算,就是编码后的信息。 解密的过程:用私钥d进行解密,计算,恢复明文m。如果第三者如果要解码的话,必须想办法得到d。所以,他必须先对n作质因数分解。如果他能够成功的分解n,得到这两个质数p和q,那么就表明此算法被攻破。RSA算法是利用