数字签名,数字证书,CA认证等概念理解

本文将介绍数字签名,数字证书以及CA相关知识。

加密相关知识可见我的上一篇博文:http://watchmen.blog.51cto.com/6091957/1923426

本文参考文献引用链接:

1、https://www.zhihu.com/question/25912483

2、https://blog.jorisvisscher.com/2015/07/22/create-a-simple-https-server-with-openssl-s_server/

3、https://zh.m.wikipedia.org/zh-hans/%E6%95%B0%E5%AD%97%E8%AF%81%E4%B9%A6%E8%AE%A4%E8%AF%81%E6%9C%BA%E6%9E%84

4、http://blog.csdn.net/until_v/article/details/40889565【推荐必看】

5、http://www.youdzone.com/signature.html【经典,推荐必看】

6、http://blog.csdn.net/sszgg2006/article/details/8199175【推荐必看】

7、http://www.tuicool.com/articles/7buueeQ【经典,推荐必看】



前言:

我们知道常用的RSA(非对称加密算法中常用的一种,还有其他算法)公钥与私钥主要用于不对称加密/解密,另外一种用法我们一般称之为数字签名(Digital Signature)与认证(Authentication),也即在这里私钥加密=数字签名,解密=用公钥认证,接下来就将展现签名与认证相关知识

注:本文中的加密算法默认指的就是RSA,摘要算法主要有 MD5 和 SHA1

所谓信息摘要,其实就是某种 HASH 算法。将信息明文转化为固定长度的字符,它具有如下特点:

① 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的 ;

② 用相同的 摘要算法对相同的消息求两次摘要,其结果必然相同;

③ 一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也 几乎不可能相同;

④ 消息摘要函数是单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息;

⑤ 好的摘要算法,没有人能从中找到 “ 碰撞 ” ,虽然 “ 碰撞 ” 是肯定存在的。即对于给定的一个摘要,不可能找到一条信息使其摘要正好是给定的。或者说,无法找到两条消息,是它们的摘要相同。



什么是认证?

认证是安全通信的前提,如果认证出问题,A不是和A想要聊天的人B在聊天,而是和一个C(假冒B)在聊天,则接下来所有的安全措施都是白搭。以目前常用的数字证书(Digital Certificate)认证为例。

好,接下来我们详细讲解CA认证相关知识



CA(数字证书认证机构,Certificate Authority,CA是缩写),也可以称之为电子商务认证中心或者电子商务认证授权机构。CA是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。【有点抽象,我们接着往下看】

CA的主要工作:CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。数字证书中的CA数字签名(用CA的私钥对用户申请摘要信息进行加密)使得攻击者不能伪造和篡改证书。

总结:因此CA主要功能是发放、认证、管理数字证书。

CA本身也会有一个证书,因为为了让网络用户信任CA,任何人都可以使用这个证书验证CA签发的证书(CA的数字签名),默认这个证书在系统预装的时候就会携带。

 数字证书申请:用户想得到一份属于自己的证书,需要向CA提出申请(申请资料包括用户的公钥及用户信息),在CA判别申请者的身份后,将该公钥与申请者的身份信息绑定在一起,对这2个信息做一个hash处理,得出一个hash值,CA用私钥对这个hash进行加密,也就是CA的数字签名,签名之后,便会形成证书(证书内容是公钥和申请者身份信息,以及CA的数字签名,签名加密的内容是这2个信息的摘要hash值)。

即:数字证书=公钥(CA分配)+申请者身份信息+CA的数字签名



实际案例1:

  • 数字签名:

小丽已经事先拿到老王的公钥,老王要给小丽写信,为了安全,决定使用数字签名的方式

1、老王把信写好

2、老王得出这封信的摘要信息:信的摘要digest(通过对信做hash运算得出摘要)

3、老王对信的摘要digest,使用私钥进行加密得出数字签名(signature)

4、老王将:信+数字签名  发送给小丽

5、小丽收到老王发送过来的 信+数字签名

6、小丽对信使用hash得出摘要digest-2

7、小丽对数字签名 进行解密得出摘要digest-3【在这里其实就是digest】

8、小丽对比digest-2 和digest-3,如果相同,则表示这封信确实是由老王所发。

这8个步骤解释了什么是数字签名

总结:数字签名=发送者用自己的私钥对所要发送的信息的摘要信息进行加密,得出的值我们可以称之为数字签名

  • 数字证书:

突然有一天,有人潜入了小丽的电脑,把老王的公钥换成老张的公钥,时间一久,小丽觉得不对劲,发现老王的信不像是老王写的。于是就告诉老王为公钥做一个认证

于是老王找到CA认证中心(Certificate Authority),申请为公钥做认证。

CA拿到老王的公钥以及申请信息之后,使用自己的私钥对这2个信息的摘要信息进行加密,生成数字证书(Digital Certificate)【其实在这里,CA做的是数字签名操作】

总结:数字证书=老王的公钥+老王的申请信息+CA的数字签名

老王拿到这个数字证书之后,以后再给小丽写信的时候,就是下面这种

1、老王把信写好

2、老王得出这封信的摘要信息:信的摘要digest(通过对信做hash运算得出摘要)

3、老王对信的摘要digest,使用私钥进行加密得出数字签名(signature)

4、老王将:信+数字签名+数字证书  发送给小丽

5、小丽收到老王发送过来的 信+数字签名 +数字证书

6、小丽对信使用hash得出摘要digest-2

7、小丽对数字签名signature 进行解密得出摘要digest-3【在这里其实就是digest】

8、小丽对比digest-2 和digest-3,如果相同,则表示这封信确实是由老王所发。

那么这个老王是不是真的老王而不是老张呢?于是就有下面的额外几个步骤

9、小丽用CA的公钥(CA的公钥已事先对外公布)对数字证书中的CA的数字签名进行解密,得出值A,

然后对证书中的老王的公钥和老王的申请信息做一个摘要再做一个hash,得出值A2,如果A2=A,则证明这个证书的公钥是老王的。




实际案例2:


我们来用一个国人最常见的HTTPS访问做案例:

百度公司已经事先找CA认证过,因此拥有数字证书(内容是公钥+申请信息+CA的数字签名)

我们在客户端输入https://www.baidu.com,这就意味着本机的客户端向这个域名对应的服务器发送加密的访问web请求,请求的东西是一个html页面。

web服务器接受到请求之后,将页面+这个页面的数字签名+百度的数字证书返回给客户端

客户端收到之后,使用CA的公钥(本机自带的CA数字证书,一般是系统预装含有,或者是后期安装)验证百度的数字证书,然后得出:百度的公钥和申请信息的摘要信息的hash值,然后再和CA的数字签名内容进行计算比对。

一般来说,这个申请信息中就包含有这些网址域名信息,如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器发出警告,也就是说如果这个www.baidu.com域名不在这个申请信息里面,那么就会有下面这种提示:【浏览器无法上传图片,先以图片内文字代替】

此网站的安全证书有问题

此网站出具的安全证书是为其他网站地址颁发的

单击此处关闭网页

继续浏览此网站(不推荐)

如果这张数字证书不是由受信任的机构颁发的,也就是不被信任的CA颁发的,浏览器会发出另外一种警告。【浏览器无法上传图片,先以图片内文字代替】

您与该站点交换的信息不会被其他人查看或更改,但该站点的安全证书有问题。

该安全证书由您没有选定信任的公司颁发,可以查看证书以便确认您是否信任该验证机构

...

是否继续

如果证明数字证书是可靠的,那么就意味着证书中的baidu的服务器的公钥是可靠的,那么接下来的数据传输,客户端将会使用这个公钥来对数据进行加密。通过这个公钥就可以加密我们在实际通信中使用的对称密钥(非对称算法时间成本太大,因此使用非对称算法传递对称密钥,之后再使用对称密钥)

注意:我们在实际数据传输的时候,使用的是对称加密,并不是非对称加密,主要原因是因为非对称加密的时间成本太大,具体的区别本文暂时没有记录,近期将更新。

更多内容,请自行搜索:数字证书和数字签名

时间: 2024-10-07 00:05:12

数字签名,数字证书,CA认证等概念理解的相关文章

数字签名 数字证书

数字签名原理简介(附数字证书) 首先要了解什么叫对称加密和非对称加密,消息摘要这些知识. 1. 非对称加密 在通信双方,如果使用非对称加密,一般遵从这样的原则:公钥加密,私钥解密.同时,一般一个密钥加密,另一个密钥就可以解密. 因为公钥是公开的,如果用来解密,那么就很容易被不必要的人解密消息.因此,私钥也可以认为是个人身份的证明. 如果通信双方需要互发消息,那么应该建立两套非对称加密的机制(即两对公私钥密钥对),发消息的一方使用对方的公钥进行加密,接收消息的一方使用自己的私钥解密. 2.消息摘要

数字证书及其认证过程[转载]

众所周知,公钥密码学通过使用公钥和私钥这一密钥对,使数字签名和加密通讯等密钥服务变得容易起来.公钥技术之所以能得到广泛的应用,原因就在于对那些使用密钥对中的公钥来获得安全服务的实体,他们能很方便地取得公钥,即密钥分发与管理比起对称密钥的分发与管理变得简单了.所以有人称,非对称密码算法是计算机安全通讯的一次技术革命. 当然,公钥的分发也需要数据完整性保护措施,即需要数据完整性服务来保障公钥不被篡改,并保证公钥一定要有与其声明持有者的身份相对应绑定的机制,最终目的是能提供一种简单安全识别的机制,其一

Java的安全学习(包括加密,数字签名,证书和认证)

(1)消息摘要: 消息摘要(Message Digest)又称为数字摘要(Digital Digest).它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生.如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了.因此消息摘要保证了消息的完整性.       消息摘要采用单向Hash 函数将需加密的明文"摘要"成一串128bit的密文,这一串密文亦称为数字指纹(Finger Print),它有固定的长

公钥 私钥 数字签名 数字证书

经常会听到公钥和私钥的概念,今天来讨论一下我对公钥和私钥的理解. 公钥和私钥是非对称加密的一种,有别于对称加密中,双方都持有相同的密钥,非对称加密,加解密双方持有不同的密钥,公开给对方的密钥被称为公钥,自己保留的密钥 被称为私钥.由公钥加密的内容只有私钥能解开,反之,由私钥加密的内容只能被公钥解开. 那么,公钥和私钥的用处在哪里呢.首先来了解一下对称加密,对称加密双方都持有相同的密钥,只要得不到密钥就解不开密文,但这是建立在双方都互相信任的基础上, 如果两边都可能存在不信任,那么随便把密钥交给对

实现HTTPS系列第四弹之【TLS ,SSL等概念理解】

博文说明[前言]: 本文将通过个人口吻介绍TLS ,SSL,PKI等相关知识,在目前时间点[2017年5月21号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 1.第一弹:实现HTTPS系列第一弹之[http,https,www,web等概念简介] 博文链接:http://watchmen.blog.51cto.com/6091957/1922919 2.第二弹:实现HTTPS系列

https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL

转自:https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL 因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料, 这里做一个总结. 1. 首先推荐几个文章: 数字证书: http://www.cnblogs.com/hyddd/archive/2009/01/07/1371292.html 数字证书和SSL: http://www.2cto.com/Article/201203/121534.html 数字签名: http://www.

通俗理解数字签名,数字证书和https

前言 最近在开发关于PDF合同文档电子签章的功能,大概意思就是在一份PDF合同上签名,盖章,使其具有法律效应.签章有法律效应必须满足两个条件: 能够证明签名,盖章者是谁,无法抵赖 PDF合同在签章后不能被更改 在纸质合同中,由于签名字迹的不可复制性,盖章的唯一性以及纸质合同对涂改的防范措施(比如金额用大写)可以保证上述两点,从而具备法律效应,那么PDF合同如何保障呢?两个重要的概念就是数字签名和数字证书.这项技术广泛运用于文件认证,数据传输等. 为了弄懂这些,我花了2天时间从加密算法开始,到数字

CA与数字证书的自结

1.CA CA(Certificate Authority)是数字证书认证中心的简称,是指发放数字证书.管理数字证书.废除数字证书的权威机构. 2.数字证书 假设向CA申请数字证书的单位为A,则他申请的数字证书中含有的内容为: a)A的公钥数据 b)相应私钥拥有者(也就是A)的身份信息 c)CA机构对数字证书进行了数字签名 d)包含了CA的名称,以便于依赖方找到CA的公钥.验证证书上的数字签名 Remarks:在第c)条中,当某个用户得到某个单位的数字证书时,要该数字证书进行认证,就是看看是不是

数字签名与数字证书

数字签名: 将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要.在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符.这样就保证了报文的不可更改性. 将该报文摘要值用发送者的私人密钥加密,然后连同原报文一起发送给接收者,而产生的报文即称数字签名 数字证书: 数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证.它是由一个由权威机构-----CA机构,又称为证书