数字签名,数字信封的基本原理
数字签名,就是通过在数据单元上附加数据,或对数据单元进行秘密变换,从而使接收者可以确认数据来源和完整性。简单说来,数字签名是防止他人对传输的文件进行破坏,以及确定发信人的身份的手段。
目前的数字签名是建立在公共密钥体制基础上,它是公用密钥加密技术的另一类应用。它的主要方式是:报文的发送方从报文文本中生成一个128位的散列值(又称报文摘要,数字指纹)。发送方用自己的私人密钥对这个散列值进行加密来形成发送方的数字签名。然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收到的原始报文中计算出128位的散列值,接着再用发送方的公用密钥来对报文附加的数字签名进行解密。如果两个散列值相同、那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别。采用数字签名,能确认以下两点:第一,信息是由签名者发送的;第二,信息自签发后到收到为止未曾作过任何修改。这样数字签名就可用来防止电子信息因易被修改而有人作伪,或冒用别人名义发送信息。或发出(收到)信件后又加以否认等情况发生。
应用广泛的数字签名方法主要有三种,即:RSA签名、DSS签名和Hash签名。这三种算法可单独使用,也可综合在一起使用。用RSA或其它公开密钥密码算法的最大方便是没有密钥分配问题(网络越复杂、网络用户越多,其优点越明显)。因为公开密钥加密使用两个不同的密钥,其中有一个是公开的,另一个是保密的。公开密钥可以保存在系统目录内、未加密的电子邮件信息中、电话黄页(商业电话)上或公告牌里,网上的任何用户都可获得公开密钥。而私有密钥是用户专用的,由用户本身持有,它可以对由公开密钥加密信息进行解密。RSA算法中数字签名技术实际上是通过一个哈希函数来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。DSS数字签名是由美国国家标准化研究院和国家安全局共同开发的。由于它是由美国政府颁布实施的,主要用于与美国政府做生意的公司,其他公司则较少使用,它只是一个签名系统,而且美国政府不提倡使用任何削弱政府窃听能力的加密软件,认为这才符合美国的国家利益。Hash签名是最主要的数字签名方法,也称之为数字摘要法(Digital Digest)或数字指纹法(Digital Finger Print)。它与RSA数字签名是单独的签名不同,该数字签名方法是将数字签名与要发送的信息紧密联系在一起,它更适合于电子商务活动。
对电子文件进行数字签名并在网上传输,其技术实现过程大致如下:首先要在网上进行身份认证,然后再进行签名,最后是对签名的验证。
1. 认证
PKI提供的服务首先是认证,即身份识别与鉴别,确认实体即为自己所声明的实体。认证的前提是甲乙双方都具有第三方CA所签发的证书,认证分单向认证和双向认证。
(1)单向认证是甲乙双方在网上通信时,甲只需要认证乙的身份即可。这时甲需要获取乙的证书,获取的方式有两种,一种是在通信时乙直接将证书传送给甲,另一种是甲向CA的目录服务器查询索取。甲获得乙的证书后,首先用CA的根证书公钥验证该证书的签名,验证通过说明该证书是第三方CA签发的有效证书。然后检查证书的有效期及检查该证书是否已被作废(LRC检查)而进入黑名单。
(2)双向认证。双向认证是甲乙双方在网上通信时,甲不但要认证乙的身份,乙也要认证甲的身份。其认证过程与单向认证过程相同。
2. 数字签名与验证过程
网上通信的双方,在互相认证身份之后,即可发送签名的数据电文。数字签名的全过程分两大部分,即签名与验证。即发方将原文用哈希算法求得数字摘要,用签名私钥对数字摘要加密得数字签名,发方将原文与数字签名一起发送给接受方;收方验证签名,即用发方公钥解密数字签名,得出数字摘要;收方将原文采用同样哈希算法又得一新的数字摘要,将两个数字摘要进行比较,如果二者匹配,说明经数字签名的电子文件传输成功。
数字签名原理中定义的是对原文做数字摘要和签名并传输原文,在很多场合传输的原文是要求保密的,要求对原文进行加密的数字签名方法如何实现?这里就要涉及到“数字信封”的概念。“电子信封”基本原理是将原文用对称密钥加密传输,而将对称密钥用收方公钥加密发送给对方。收方收到电子信封,用自己的私钥解密信封,取出对称密钥解密得原文。其详细过程如下:
(1) 发方A将原文信息进行哈希运算,得一哈希值即数字摘要MD;
(2) 发方A用自己的私钥PVA,采用非对称RSA算法,对数字摘要MD进行加密,即得数字签名DS;
(3) 发方A用对称算法DES的对称密钥SK对原文信息、数字签名SD及发方A证书的公钥PBA采用对称算法加密,得加密信息E;
(4) 发方用收方B的公钥PBB,采用RSA算法对对称密钥SK加密,形成数字信封DE,就好像将对称密钥SK装到了一个用收方公钥加密的信封里;
(5) 发方A将加密信息E和数字信封DE一起发送给收方B;
(6) 收方B接受到数字信封DE后,首先用自己的私钥PVB解密数字信封,取出对称密钥SK;
(7) 收方B用对称密钥SK通过DES算法解密加密信息E,还原出原文信息、数字签名SD及发方A证书的公钥PBA;
(8) 收方B验证数字签名,先用发方A的公钥解密数字签名得数字摘要MD;
(9) 收方B同时将原文信息用同样的哈希运算,求得一个新的数字摘要MD’;
(10)将两个数字摘要MD和MD’进行比较,验证原文是否被修改。如果二者相等,说明数据没有被篡改,是保密传输的,签名是真实的;否则拒绝该签名。
这样就做到了敏感信息在数字签名的传输中不被篡改,未经认证和授权的人,看不见原数据,起到了在数字签名传输中对敏感数据的保密作用。
数字签名,数字信封的基本原理相关推荐
- java p7 数字签名,p7结构的数字信封 | 学步园
PKCS7的数字信封格式分为两种:带签名的数字信封和不带签名的数字信封.由于这个数字信封的生成过程比较复杂,所以这两种格式比较容易记混,导致都搞不清楚一个数字信封里面到底是存储的什么内容了.下面我就详 ...
- [转]密码技术-实现数字信封和数字签名
密码技术-实现数字信封和数字签名 转载自:http://hi.baidu.com/king0332/item/ea9b19da597aec17e1f46f5b 数字信封是公钥密码体制在实际中的一个应用 ...
- 数字签名和数字信封之间的介绍
介绍 公钥密码体制在实际应用中包含数字签名和数字信封两种方式 数字签名 指用户用自己的[私钥]对原始数据的哈希摘要进行加密所得的数据.数字签名定义两种互补的运算:一个用于签名,另一个用于验证.&quo ...
- 数字签名、数字信封、数字证书
数字签名 发送方使用单向Hash把明文生成数字摘要(单向不可逆) 发送方使用自己的私钥加密数字摘要,形成数字签名 发送方把原始明文和数字签名一起发给接收方,接收方用发送方公钥对数字签名解密,得到数字摘 ...
- 数字签名与数字信封流程
数字签名 数字签名(Digital Signature)(又称公钥数字签名.电子签章)是一种类似写在纸上的普通的物理签名,背后的思想是模仿传统手写签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信 ...
- PKI基础知识(数字信封与数字签名过程,对称密钥与非对称密钥)
1.数字信封 关于对称密码术和非对称密码:前者具有加密速度快.运行时占用资源少等特点,后者可以用于密钥交换.一般来说,并不直接使用非对称加密算法加密明文,而仅用它保护实际加密明文的对称密钥,来减少运算 ...
- 数字签名和数字信封的比较
参考博客:数字签名与数字信封流程 相同点 都使用了非对称算法对密钥进行了加密 数字签名 重点:防止文本被篡改,防止抵赖 发送方将文本取摘要,再生成一个密钥对摘要加密,同时该密钥使用自己的私钥进行非对称 ...
- 什么又是数字证书?(数字证书与数字签名什么关系?)数字信封、PGP又是啥?
什么是非对称加密? 什么是信息摘要? 什么是数字签名? 本节我们接着上面的内容继续,话说有了非对称加密技术.有了信息摘要技术.也有了数字签名技术,信息的安全传输是不是就万无一失了呢? 其实并不完全,虽 ...
- 数字指纹,数字信封,数字签名,数字证书详解
思维导图 ·前言 ·对称机密 ·非对称加密 ·数字指纹 ·数字信封 ·数字签名 ·数字证书及PKI体系 前言 为保证数据在通信过程中可以被安全的传输,通常采取一系列加密的措施来对数据进行保护.常见的加 ...
最新文章
- RuoYi(分离版) 使用代码生成器添加子模块(idea版)
- MySQL性能优化步骤
- 计算机专业英语在线测试9,《计算机专业英语》第9章在线测试【DOC精选】.doc
- .net中调用esb_大型ESB服务总线平台服务运行分析和监控预警实践
- 前端学习(589):在console中调试日志
- OD(Ollydbg)简介
- live555 linux编译静态库,【Live555】liveMedia下载、配置、编译、安装、基本概念
- 游戏开发工具,让你事半功倍!
- STM32CubeMX + STM32F407ZG + USB3300 高速USB实验(虚拟串口)
- Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were
- 多传感器数据融合简介(转)
- Git 使用 stash暂存代码
- 3D游戏开发中的矩阵详解
- 【小程序】微信小程序自定义导航栏及其封装
- LoRa 扩频因子和码片
- Tableau :蝴蝶图
- 你不具备访问 IIS 配置文件的权限。要在 IIS 上打开和创建网站,需要使用 Administrator 帐户运行 Visual Studio。
- 基于C语言在8×8点阵实现9到0倒计时牌显示
- 数据窗口控件的函数Describe()
- 总结程序员的性格特点、生活习惯