当前位置:文档之家› 数字签名技术的实现

数字签名技术的实现

兰州理工大学 1 软件职业技术学院

课程设计实验报告

课程名称 : 网络安全 题 目 : 数字签名技术

兰州理工大学

2 目录 (一)主要内容 ............................................................................................3 (二)目的和意义 ........................................................................................3 二、数字签名的概念 ..........................................................................................4 (一)数字签名的定义 ................................................................................4 (二)数字签名的原理 ................................................................................4 三、RSA数字签名系统的实现 ...........................................................................6 (一)RSA数字签名所需实现的功能 .........................................................6 (二)主要模块流程图 ................................................................................6 四、数字签名的前景展望 ..................................................................................9 结 束 语 ........................................................................................................... 10 参 考 文 献 ...................................................................................................... 11 兰州理工大学

3 一、引言 (一)主要内容 数字签名(Digital Signature)技术是非对称加密算法的典型应用。数字签名的应用过程是,数据源发送方使用自己的私钥对数据校验或其他与数据内容有关的变量进行加密处理,完成对数据的合法“签名”,数据接收方则利用对方的公钥来解读收到的“数字签名”,并将解读结果用于对数据完整性的检验,以确认签名的合法性。数字签名技术是在网络系统虚拟环境中确认身份的重要技术,完全可以代替现实过程中的“亲笔签字”,在技术和法律上有保证。在数字签名应用中,发送者的公钥可以很方便地得到,但他的私钥则需要严格保密。

(二)目的和意义 随着信息技术和计算机网络技术的发展,其应用涉及到政府、军事、文教、商业、金融等诸多领域。如商业经济信息系统、政府机关信息系统、银行业务系统、证券业务系统、科研数据传输等,这些系统都涉及到机密信息的传输与存储。信息时代虽然带给我们无限的商机与方便,但也充斥着隐患与危险。由于网络容易受到攻击,导致机密信息的泄密,轻则引发企业、部门工作陷于瘫痪而造成巨大的经济损失,重则危及国家、军事安全和社会稳定。所以网络信息安全已成为保证国民经济信息化建设健康发展的基础,直接关系到国家的安全,其影响重大。如何保证机密信息不泄漏,鉴别信息来源的真实性,确保信息的完整性和不可抵赖性,就是网络信息安全研究需要解决的问题。网络安全的目标应当满足:身份真实性、信息机密性、信息完整性、服务可用性、不可否认性、系统可控性、系统易用性、可审查性等等。数字签名技术是网络安全的重要手段之一,它可以保证信息完整性、鉴别发送者的身份真实性与不可否认性;再运用数字签名本身的基础技术如加密技术可以保证信息机密性;如再运用审计日志的办法,可完成可审查性的功能。数字签名技术是当前网络安全领域的研究热点。数字签名的特性及可防御的网络威胁可以概括为:身份鉴别,可鉴别信源的真实性而防止冒充;数据完整性保护,抵御数据的篡改或重排;不可抵赖性,信源事后不可否认以防止其抵赖;一般还使用加密技术保护信息机密性,以防截听攻击;加入流水号等技术,可防重放攻击。所以,数字签名技术满足网络安全的目标即身份真实性、信息机密性、信息完整性、服务可用性、不可否认性、系统可控性、系统易用性、可审查性等等。特别是其身份鉴别、数据完整性和不可抵赖性在电子商务、电子政务等应用领域中有很重要的作用[1]。作为网络安全的关键性技术之一,数字签名在社会生活的各个领域也都具有十分广阔的应用前景。可见,数字签名技术十分具有研究价值,并具有重要的研究意义 兰州理工大学

4 二、数字签名的概念 (一)数字签名的定义 公钥密码学最重要的应用之一就是数字签名。究竟什么是数字签名?数字签名是一个比特串或者比特串的ASCII表示,它把我们所考虑的电子数据“绑定”到一个密码私钥上。在进一步探讨数字签名之前,先谈一谈传统签名。我们对一些重要的文件进行签名,以确定它的有效性。例如,伪造传统的签名并不困难,这就使得数字签名与传统签名之间的重要差别更加突出:如果没有产生签名的私钥,要伪造由安全密码数字签名方案所产生的签名,在计算上是不可行的。传统的签名可以伪造,人们实际上也可以否认曾对一个议论中的文件签过名。但是否认一个数字签名却困难得多,这样做本质上涉及证明在签名生成以前私钥的安全性就受到危害。这是由于数字签名的生成需要使用私钥,而它对应的公钥则用以验证签名。因而数字签名的一个重要性质就非否认性,目前己经有一些方案,比如数字证书,把一个实体(个人,组织或系统)的身份同一个私钥和公钥对“绑定”在一起。这使得一个人很难否认数字签名。 数字签名同手写签名相比,具有巨大的优势。手写签名由于是模拟的,它因人而异,因此很容易被人仿造,当收发双方一旦出现争端,第三方不容易仲裁;而数字签名是由O和1组成的数字串,它因消息而异,而且当收发双方出现争端时,它能给仲裁者提供足够的证据来进行裁决,因此其安全性远远高于前者。此外,数字签名依托于计算机网络,因此其时效性远远大于前者。I50对数字签名是这样定义的:附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据或变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(如接收者)伪造。

(二)数字签名的原理 数字签名是解决网络通信中特有安全问题的一种有效方法,它能够实现电子文档的辨认和验证,在保证数据的完整性、私有性、不可抵赖性方面起着极其重要的作用。为了实现网络环境下的身份鉴别、数据完整性认证和抗否认的功能。 数字签名应满足以下要求: 签名者发出签名的消息后,就不能再否认自己所签发的消息; 接收者能够确认或证实签名者的签名,但不能否认; 任何人都不能伪造签名; 第三方可以确认收发双方之间的消息传送,但不能伪造这一过程,这样,当通信的双方关于签名的真伪发生争执时,可由第三方来解决双方的争执[。 对于一个典型的数字签名体系而言,它必须包含2个重要的组成部分:即签名算法和验证算法。为了满足上述4点要求,数字签名体系必须满足2条基本假设: 兰州理工大学 5 1. 签名密钥是安全的,只有其拥有者才能使用; 2. 使用签名密钥是产生数字签名的唯一途径。 数字签名的基础是密码技术,其大致思想就是在传输文件(明文或密文)的同时附带一个“签名”,这个“签名”是用此文件作者的密钥把文件或者由其产生的一段文档加密而得。其中采用的加密算法大致分为两类,对称加密和非对称加密。]对称加密中使用的一对密钥本质相同,所以通信前双方必须通过安全途径交换密钥,否则任何一方的密钥泄露,另外一方也毫无安全可言。同时,其密钥的管理随着用户的增加呈平方级数增长。而非对称加密使用的一对密钥(公共密钥和私有密钥)互不相同且不能由一个推出另外一个。用自己的私钥对信息的数字摘要签名,将其发送给对方时,如果对方能够使用发送者的公钥来验证信息,他就能确定信息是从你那里发来的。

私钥公钥签名验证发送B

明文A

C

TRUE A==C

FALSE A!=C 数字签名原理图 密钥对中的私有密钥只有密钥对的所有者才知道,从而可以作为其所有者的身份特征。公共密钥的管理可以由专门的仲裁中心负责,其复杂程度随用户的增加呈线性增长。鉴于以上两点,采用非对称加密算法签名更好,但其加密的运算复杂度和速度比对称加密慢得多,所以采用非对称加密算法签名常常是对文件由哈希函数所产生的数字摘要进行的。 兰州理工大学

6 三、RSA数字签名系统的实现 (一)RSA数字签名所需实现的功能 1.生成RSA密钥:公钥ke=(e,n),私钥kd=(d,n); 1) 选择两个大的素数p和q(典型情况下为1024位); 2) 计算n = p×q和在z =(p -1)×(q-1); 3) 选择一个与z互素的数,将它称为d; 4) 找到e,使其满足e ×d = 1modz。 其中:明文消息P落在间隔0 ≤P 将明文划分成k位的块,这里k是满足2k 加密一个消息P,只要计算C =Pe mod n即可; 为了解密C,只要计算P =Cd mod n; 2.利用函数将明文消息转化为16进制数字即消息摘要MD; 3.数字签名的实现:用私钥d对消息摘要进行加密计算(RSA算法中的加密方法); 4.验证数字签名:用公钥e对数字签名进行解密计算(RSA算法中的解密方法),得到的解密结果与2步计算出的消息摘要比较,如果两个消息摘要一样则签名成功(即没有被篡改过)[11]。

(二)主要模块流程图 1. 密钥的理论产生模块流程图

相关主题