密码学论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于RSA的数字签名技术研究
摘要:数字签名是现在网络信息安全的核心技术之一。通过了解其基本概念、基本原理以及数字签名的重要性和实现思路,实现了对RSA的数字签名技术的分析和理论实现。在实现了RSA的C++编程实现上,对RSA算法的不足做出了总结。
关键词:数字签名;RSA;C++;不足
Abstract:Digital signature is now the core of the network information security technologies. By understanding the basic concepts, basic principles and the importance of digital signature and implementation ideas, realized the RSA digital signature technology, analysis and theory to achieve. On the base of the realization of RSA in programming in C++, the shortcomings of RSA algorithm are summed up.
Key words:digital signature; RSA; C++; inadequacy
引言
Internet的迅猛发展在带给人们的便捷和高效的同时,也导致了网络的安全性受到严重危险。而数字签名(Digital Signatures)技术正是在这种背景下产生的,它是保证信息传输的保密性、数据交换的完整性、发送信息的不可否认性、交易者身份的确定性的一种有效的解决方案,是目前电子商务、电子政务等应用中技术最成熟的、可操作性最强的一种电子签名方法。另一个方面,数字签名是网络信息安全的核心技术,在网络传输中显得非常重要。它在保证数据的完整性、私有性、不可抗抵赖性方面起着重要的作用,通常用于鉴定签名人的身份,验证信息传输有无篡改,确保信息传输的完整性、真实性和不可否认性。
1数字签名基本概念
1.1 数字签名定义
数字签名是通过一个单向函数对要传送的报文进行处理得到的用以认证报文来源并核实报文是否发生变化的一个字母数字串,并以此来解决数据的否认、伪造、篡改及冒充等问题。数字签名在ISO7498-2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。
数字签名可以基于公钥密码体制,也可以基于私钥密码体制。目前主要是基于公钥密码体制的数字签名,包括普通数字签名和特殊数字签名。普通数字签名算法有:RSA、ElGamal、Fiat-Shamir、Guillou-Quisquarter、Schnor、Ong-Schnorr-Shamir数字签名算法、DeDSA椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。
1.2数字签名的作用
数字签名是通过一个单向函数对要传送的报文进行处理,得到的用以认证报文来源并核实报文是否发生变化的一个字母数字串。数字签名可以解决否认、伪造、篡改及冒充等问题,要实现的功能是我们平常的手写签名要实现功能的扩展平常在书面文件上签名的主要作用。一是因为对自己的签名本人难以否认,从而确定了文件已被自己签署这一事实;二是因为自己的签名不易被别人模仿,从而确定了文件是真的这一事实。故数字签名应有以下几个作用:
(1)保证数据的保密性
用于防止非法用户进入系统及合法用户对系统资源的非法使用;通过对一些敏感的数据文件进行加密来保护系统之间的数据交换,防止除接收方之外的第三方截获数据及即使获取文件也无法得
到其内容如在电子交易中,避免遭到黑客攻击丢失信用卡信息的问题。
(2)保证数据的完整性
防止非法用户修改交换的数据或因此造成的数据丢失等。
(3)保证数据的不可否认性
对数据和信息的来源进行验证,以确保数据由合法的用户发出;防止数据发送方在发出数据后又加以否认,同时防止接收方在收到数据后又否认曾收到过此数据或篡改数据。
2数字签名的实现原理
数字签名的过程大致如下:先是对将要发送的消息进行预处理,即通过数学算法由输入的消息数据产生一种消息摘要。然后再用加密算法对消息摘要进行加密,最后将加密了的消息摘要和要发送的信息一起发送给接受方。接收方接到数据后,从接收到的原始信息中用同样的算法计算出新的消息摘要,再用发送方的公钥对加了密的消息摘要的进行解密,最后通过对比,得出数据是否被篡改、是否完整等。下面详细介绍数字签名的实现过程。
2.1 Hash函数
单向Hash函数的工作原理如下:
(1)通过数学算法,把未做处理的报文(不论是明文还是密文)转换为不定长的待输入字符串,称为预映射值。
(2)将预映射值再次转换为定长(一般更短)的输出字串,称为hash值,又叫消息摘要,预映射值可任意长,但hash值总是定长;报文或预映射值有丝毫改动,则Hash值完全不同这里所谓“单向”,是指不可能由hash值反推出预映射值或报文,但又不是加密,因为不存在解密的问题。正由于其单向,也就没有了运算速度的障碍最常用的Hash 算法叫做MD5,可以用MD5对消息产生散列值,或用发送者的私钥加密消息散列值(即消息摘要)。
2.2 用加密算法进行数字签名
用来数字签名的加密算法主要分为两类:一是对称加密算法,二是非对称加密算法。本文主要对称加密算法中的RSA进行讨论。
对称加密算法所用的加密密钥和解密密钥通常是相同的,即使不同也可以很容易地由其中的任意一个来推导出另一个在此算法中,加、解密双方所用的密钥都要保守秘密,由于计算速度快而广泛应用于对大量数据如文件的加密过程中常用的加密算法有DES等。
与对称型密钥加密系统不同,非对称型密钥加密系统的特点是:加解密过程使用不同的密钥,并且若仅仅知道加密密钥,也无法推断出解密密钥,这样就可把加密密钥向整个安全通信网公开,用户只须保存解密密钥即可所以,非对称加密算法有时又称为公开密钥加密算法,其中最具有代表性的是RSA公钥密码体制。
2.3 签名和验证过程
目前的数字签名是建立在公共密钥体制基础上,它是公用密钥加密技术的一种应用,主要涉及到两方:发送方和接受方。发送方对发送文档采用特定的算法(如哈希算法)进行运算,得到一个固定长度的数字串,称为消息摘要(Message digest),不同的文档所得到的消息摘要各异,但对相同的文档它的消息摘要却是唯一的。发送方生成文档的消息摘要,并用自己的私钥对摘要进行加密来形成发送方的数字签名。这个数字签名将作为文档的附件和文档一起发送给接收方。接收方首先从接收到的原始文档中用同样的算法计算出新的消息摘要,再用发送方的公钥对文档附件的数字签名进行解密,比较两个消息摘要,如果值相同,接收方就能确认该数字签名是发送方的,这样的签名方法是符合可靠性原则的,即:签字是可以被确认的,签字是无法被伪造的,签字是无法重复使用的,文件被签字以后是无法被篡改的,总之签字具有不可否认性。