什么是数字签名?其安全性从何而来?
一、数字签名简介
数字签名是基于公钥密码体制(非对称密钥密码体制)的。
1.1.基本特征
数字签名必须保证以下三点:
- 报文鉴别——接收者能够核实发送者对报文的签名;
- 报文的完整性——接收者不能伪造对报文的签名或更改报文内容。
- 不可否认——发送者事后不能抵赖对报文的签名;
1.2.数字签名的验证过程
上图位用户A使用数字签名向用户B传输一份文件的过程:
- 首先,文件经过单向散列函数的处理得到一份占128位的摘要(无论文件多大,经过单向散列函数的处理,生成的摘要都是128位),这份摘要相当于该文件的"指纹",能够唯一地识别文件。注意:只要文件发生改动,经过单向散列函数处理后得到地摘要都会不一样。所以,文件和文件的摘要具有很强的对应关系。
- 随后,用户A使用自己地私钥对这份128位地摘要进行加密,得到一份加密地摘要。
- 然后,用户A把文件、加密的摘要和公钥打包一起发给用户B。传输的过程中并没有对文件进行加密处理。
- 用户B将收到的文件经过单向散列函数处理得出一份128位摘要,这份摘要是通过收到的文件得到的,存在被更改的可能;使用A提供的公钥对收到的"加密的摘要"进行解密得到另一份128位摘要,这份摘要是通过原始文件得到的,一般认为代表真正的文件;然后将两份摘要进行比较。
- 如果两份摘要相等,说明文件经过用户A签名之后,在传输的过程中没有被更改;若不相等,说明文件在传输过程中被更改了,或者说已经不是原来的文件了,此时用户A的签名失效。
数字签名三个特征的验证
- 不可否认——只有用户A拥有私钥A,并能使用私钥A产生"加密的摘要",这样用户A就不能否认给用户B发送了经过签名的密文。
- 报文的完整性——用户B通过比较得出的两份摘要是否相等,可以判断签名或文件内容是否发生改变。
- 报文鉴别——用户B可以使用收到的公钥对"加密的摘要"进行解密,从而核实用户A对文件的签名。
需要强调
用户A使用私钥对由文件生成的128位摘要进行加密的过程称为数字签名的过程,得到的"加密的摘要",称为该文件的数据签名。
- 用户A使用私钥加密的是摘要而不是文件。
用户B验证签名实际上是比较得出的两份摘要是否相等。
1.3.数字签名使用的场合
什么时候使用这种不对文件加密,而对文件的摘要加密(对文件进行签名)的技术呢?
- 数字签名解决的核心问题是:确保收到的文件没有被更改。
- 比如:公司的领导给员工下发放假通知,这时候就需要对邮件进行数字签名来证明这个通知是领导发的。员工收到通知,看到上面有领导的签名,于是就可以放心休假了。如果有人冒充领导发通知,上面没有领导的签名,员工休假回来就要扣工资。同样的,通知有了领导的签名,领导想抵赖也不行。
二、证书颁发机构CA
2.1CA简介
- 证书颁发机构,即认证中心CA (Certification Authority),来将公钥与其对应的实体(人或机器)进行绑定(binding);即给公司或个人颁发证书。
- 认证中心一般由政府出资建立。每个实体都有CA 发来的证书(certificate),里面有公钥及其拥有者的标识信息。此证书被 CA 进行了数字签名。任何用户都可从可信的地方获得认证中心 CA 的公钥,此公钥用来验证某个公钥是否为某个实体所拥有。有的大公司也提供认证中心服务。
如图所示,用户A使用数字签名时给用户B发送了一个数据包,数据包中包含了A的公钥、文件和加密的摘要。那么问题来了:用户B如何确定收到的公钥是用户A发送的,而不是他人冒充用户A发送的呢?
- 举个例子:把用户A的公钥和私钥假设为身份证。如果是用户A自己造的身份证别人会信吗?反之,用户A拿着真正的身份证去住宾馆,老板一开始也不相信身份证是用户A的,但是老板相信给用户A发身份证的公安局,老板通过比对公安网上对应身份证号码的信息就可以判断这个身份证是不是用户A的,由此可以确认用户A的身份。
- 同理,B一开始并不确认收到的公钥是来自用户A的,用户A也可抵赖B收到的公钥不是自己发送的。这时就需要有一个双方都信任的第三方证书颁发机构来协调。
2.2.证书颁发和使用过程
首先,用户A向证书颁发机构提交个人信息,申请证书。通过CA审核后,CA生成用户A的证书,证书中包括了A的公钥和私钥还有CA的数字签名。证书颁发机构CA本身拥有一对密钥,这是对CA所颁发的证书进行数字签名和保密的基础,绝不能泄露。
用户A收到的证书中包括了带有CA数字签名的,专属A公钥和私钥,CA的数字签名确保了别人不能伪造用户A的公钥和私钥。
同时,用户B也必须信任给用户A颁发证书的第三方认证机构CA,即用户B拥有CA颁发的"CA公钥"。
通信时,用户A向用户B发送的数据包中的"加密的摘要"上有用户A的数字签名,“A公钥” 上有认证机构CA的数字签名。用户B收到数据包之后,先要验证收到的 “A公钥” 是否来源合法:是认证机构颁发的带有CA签名的公钥吗?用户B并不信任用户A,但是用户B信任第三方认证机构CA。所以,用户B先使用证书颁发机构颁发的 "CA公钥" 验证收到的 "A公钥" 是否由同一认证机构颁发,是否在颁发之后更改过。
验证通过后,用户B便相信收到的 "A公钥" 确实来自真实的用户A。随后再使用 "A公钥" 对 "加密的摘要" 进行解密,进行上文提到的对比操作,以判断文件是否更改。
2.3.查看计算机信任的认证机构
信任一个第三方认证机构就意味着拥有该机构颁发的包含该机构公钥的证书。
- 在Windows系统开始菜单中输入"MMC"命令,打开 "Microsoft 管理工具" 。
- 打开 "文件" 菜单栏,选择 "添加或删除管理单元" 选项,找到 "证书" 。
- 点击 "添加" ,选择需要查看帐户的证书。可重复操作,添加多个账户。
- 添加完成之后,点击 "确认" ,即可查看相关帐户的证书。
- 双击列表中的一个 "证书" ,在 "详细信息" 中可以找到证书对应的 "公钥" 。
2.4.证书的吊销
当用户A遗失或泄露了CA颁发的证书后,为了避免他人使用该证书冒充用户A,用户A向认证机构CA "挂失" 该证书。于是认证机构CA把该证书放入该认证机构的证书吊销列表(CRL)中,并在网上公示。
用户B在收到用户A的公钥时,除了要验证该公钥是否位认证机构颁发的,还要登录认证机构的网站查看该公钥是否已被认证机构吊销变为无效证书。
2.5.总结
认证机构CA的作用:
- 为企业和用户颁发数字证书,确保这些企业和个人的身份是真实的;
- 发布证书吊销列表,供用户查询收到的证书是否已被机构吊销而无效;
认证机构发挥作用的前提:
- 企业和个人都要信任认证机构。
什么是数字签名?其安全性从何而来?相关推荐
- 复制的数字签名_数字签名的安全性
sha1和MD5算法的区别 sha-1与MD5的最大区别在于其摘要比MD5摘要长32B.对于强行攻击,产生任何一个报文使之摘要等于给定报文摘要的难度:MD5是2128数量级的操作,sha-1是2160 ...
- C#毕业设计——基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码)——数字签名系统
基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于MD5+RSA的数字签名设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告PPT模板及论 ...
- 数字签名和数字证书使用详解
目录 1.数字签名 (1)数字签名的应用场景 (2)数字签名的实现原理 (3)如何进行数字签名和验证 (4)使用数字签名的优点和缺点 2.数字证书 (1)如何对数字证书进行颁发和管理 (2)颁发数字证 ...
- SSL / TLS协议中数字签名与hash算法的联系
今天要为大家介绍的是哈希算法,在介绍SHA之前,只有了解什么是SHA,我们才清楚SSL证书如何使用哈希来形成数字签名.那么什么是哈希呢? HASH算法将任意长度的二进制值映射为较短的固定长度的二进制值 ...
- 散列算法 SHA-1,SHA-2和SHA-256之间的区别
随着SSL证书的普及,以"SHA"开头的算法的知名度也越多越高,但并不是很多人能够完全能分清"SHA"所有的算法,本文将会围绕"SHA"展开 ...
- 格密码学重要概念: 分叉引理Forking lemma
简介:开始是用来证明盲签名的不可伪造性,后面被用来证明通用签名的不可伪造性. 1 为什么使用分叉引理? 证明数字签名方案的安全性常用的一种模型是随机预言模型ROM.在随机预言模型中,数字签名方案使用的 ...
- [Android各版本特性]Android 4.4 Kitkat
[Android各版本特性]专栏目录: 01. Android API 版本对照表 02. Android 4.4以前版本特性 03. 为什么以Android4.4做分界线 04. Android 4 ...
- PDF阅读软件哪个好用?思路提供
PDF是一种被广泛使用的文件格式可读性好等特点,受到了许多人的喜爱.但想要高效使用它,PDF阅读软件是少不了的. 简单好用的PDF编辑软件,用来阅读PDF自然不在话下. 一款PDF阅读软件,支持Win ...
- 深入理解SHA系列加密算法
介绍 SHA是一系列的加密算法,有SHA-1.SHA-2.SHA-3三大类,而SHA-1已经被破解,SHA-3应用较少,目前应用广泛相对安全的是SHA-2算法,这也是本篇文章重点讲述的算法. 算法核心 ...
- 物联网信息安全复习笔记
物联网信息安全 第一章 简述物联网的安全体系结构以及各层的主要安全技术 感知识别层.网络传输层.管理服务层.应用层 ①感知识别层的安全技术主要有密码技术.高速密码芯片.PKI公钥基础设施.信息系统平台 ...
最新文章
- 5G年终盘点:2018,意难平
- Hibernate Criterion
- django 快速实现注册
- CentOS6.2部署qt开发环境
- ALGO-117_蓝桥杯_算法训练_友好数
- PAT1011 A+B 和 C (15 分)
- Couchbase:使用Twitter和Java创建大型数据集
- 白话经典算法系列之六 快速排序 快速搞定
- python处理era5_ERA5数据python批量下载程序
- python使用函数的头文件_Python3.6下在Python中调用C函数
- Control Web Panel 中两个严重漏洞使Linux 服务器易受RCE攻击
- swift python 性能_Swift 性能探索和优化分析
- JDK11无法启动VisualVM
- 异步操作及定时任务框架quzrtz在donet平台的使用
- 浅谈Spring事件监听
- Handler execution resulted in exception: Content type 'application/json;charset=UTF-8' not supported
- 首个智能制造领域5G专网建成:广东联通+格力+华为共同打造!
- Python图像识别-Opencv05 色彩
- ubuntu多屏协同,在电脑上操作手机
- AO采集用友oracle,AO2011系统如何采集用友GRP-R9导出的ASD文件