数字签名

转自:http://baike.baidu.com/link?url=yUs1tu3HHgLbJyB4vexRLa9idmNOnO4mYv_hZOKoI42Autdot5eA9T3_mgZTvi0yRc1PcDs27monz70z55cEi_

 

数字签名(又称 公钥数字签名、 电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
数字签名是非对称 密钥加密技术数字摘要技术的应用。达到验证 信息发送者信息完整性的功能。
原理
数字签名的文件的完整性是很容易验证的(不需要 骑缝章,骑缝签名,也不需要笔迹专家),而且数字签名具有 不可抵赖性(不需要笔迹专家来验证)。
简单地说,所谓数字签名就是附加在 数据单元上的一些数据,或是对数据单元所作的 密码变换。这种数据或变换允许 数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能相对安全的在 通信网络中传输。基于 公钥 密码体制私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名 算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限 自动机数字签名算法等。特殊数字签名有 盲签名、代理签名、 群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。显然,数字签名的应用涉及到法律问题, 美国联邦政府基于有限域上的离散对数问题制定了自己的 数字签名标准( DSS)。
主要功能
保证信息传输的完整性、发送者的 身份认证、防止交易中的抵赖发生。
数字签名技术是将摘要信息用发送者的私钥加密,与 原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用 HASH函数对收到的 原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。还能验证发送者的身份,因为公钥和私钥是对应的。此外接受者可以把收到的数字签名给别人看,防止发送者抵赖。
数字签名是个加密的过程,数字签名验证是个解密的过程。
签名过程
“发送报文时,发送方用一个哈希函数从报文文本中生成 报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用密钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。
数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。不同的文件将得到不同的数字摘要。 一次数字签名涉及到一个哈希函数、发送者的 公钥、发送者的 私钥。”
数字签名:
发送方用自己的密钥对 报文X进行Encrypt(编码)运算,生成不可读取的密文Dsk,然后将Dsk传送给接收方,接收方为了核实签名,用发送方的公用密钥进行Decrypt(解码)运算,还原报文。
 
数字证书原理特点
每个人都有一对“ 钥匙”(数字 身份),其中一个只有她/他本人知道( 密钥),另一个公开的( 公钥)。签名的时候用密钥,验证签名的时候用 公钥。又因为任何人都可以落款声称她/他就是你,因此 公钥必须向接受者信任的人( 身份 认证机构)来注册。注册后 身份认证机构给你发一 数字证书。对 文件签名后,你把此 数字证书连同文件及签名一起发给接受者,接受者向 身份认证机构求证是否真地是用你的密钥签发的文件。
在通讯中使用数字签名一般基于以下原因:

鉴权

公钥加密系统允许任何人在发送信息时使用 公钥进行加密,数字签名能够让信息接收者确认发送者的 身份。当然,接收者不可能百分之百确信发送者的真实 身份,而只能在 密码系统未被破译的 情况下才有理由确信。
鉴权的重要性在财务数据上表现得尤为突出。举个例子,假设一家银行将指令由它的分行传输到它的中央管理系统,指令的格式是(a,b),其中a是账户的账号,而b是账户的现有金额。这时一位远程 客户可以先存入100元,观察传输的结果,然后接二连三的发送格式为(a,b)的指令。这种方法被称作 重放攻击

完整性

传输数据的双方都总希望确认消息未在传输的过程中被修改。加密使得第三方想要读取数据十分困难,然而第三方仍然能采取可行的方法在传输的过程中修改数据。一个通俗的例子就是同形攻击:回想一下,还是上面的那家银行从它的分行向它的中央管理系统发送格式为(a,b)的指令,其中a是账号,而b是账户中的金额。一个远程客户可以先存100元,然后拦截传输结果,再传输(a,b3),这样他就立刻变成百万富翁了。

不可抵赖

密文背景下,抵赖这个词指的是不承认与消息有关的举动(即声称消息来自第三方)。消息的接收方可以通过数字签名来防止所有后续的抵赖行为,因为接收方可以出示签名给别人看来证明信息的来源。
 
实现方法
数字签名 算法依靠 公钥加密技术来实现的。在 公钥 加密技术里,每一个使用者有一对密钥:一把公钥和一把 私钥公钥可以自由发布,但 私钥则秘密保存;还有一个要求就是要让通过公钥推算出私钥的做法不可能实现。
普通的数字签名 算法包括三种算法:
1. 密码生成 算法
2.标记 算法
3.验证 算法
 
应用例子
假如现在 Alice 向 Bob 传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:
1.Alice 准备好要传送的数字信息(明文);
2.Alice 对数字信息进行哈希运算,得到一个信息摘要;
3.Alice 用自己的私钥对信息摘要进行加密得到 Alice 的数字签名,并将其附在数字信息上;
4.Alice 随机产生一个加密密钥,并用此密码对要发送的信息进行加密,形成密文;
5.Alice 用 Bob 的公钥对刚才随机产生的加密密钥进行加密,将加密后的 DES 密钥连同密文一起传送给Bob;
6.Bob 收到 Alice 传送来的密文和加密过的 DES 密钥,先用自己的私钥对加密的 DES 密钥进行解密,得到 Alice随机产生的加密密钥;
7.Bob 然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃;
8.Bob 用 Alice 的公钥对 Alice 的数字签名进行解密,得到信息摘要;
9.Bob 用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要;
10.Bob 将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值