数字签名,数字证书和HTTPS

2018-02-26  本文已影响122人  伊凡的一天

数字签名是为了确保信件信息未被篡改,数字证书是为了确保获得的公钥合法。

数字签名

数字签名的目的是保证收件人能够确定此信件的来源正确并且未被篡改过。

数字签名的流程如下:

数字签名的流程中,有一步存在风险。那就是收件人获得的公钥未必正确。为了确保收件人持有的公钥是正确的,因此引入了数字证书的概念。

数字证书

数字证书是证书中心(CA,certificate authority)为公钥颁发的凭证。证书中心(CA)用自己的私钥,对发件人的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。

数字证书的流程如下:

数字证书和HTTPS

HTTPS实际上就是HTTP协议和SSL/TSL协议的组合,可以把HTTPS大致理解为“HTTP over SSL”或“HTTP over TSL”。关于它们的相关介绍,可以参考这篇文章。对于HTTPS我们应该有以下几个认知:

1)使用HTTPS传输数据是安全的,因为数据都是被加密传输的;

2)使用HTTPS需要在服务器端配置密钥对;

3)使用HTTPS需要花钱找专业的权威机构进行CA证书的签发。

那么使用HTTPS与网站服务器进行交互的流程和原理到底是怎样的呢?让我们先以逆向思考的方式来进行说明:

现在我们再来以正常的顺序描述一下使用HTTPS与网站服务器进行交互的过程:

1)浏览器A与网站服务器B通过三次握手后建立网络连接。

2)浏览器A告诉网站服务器B:我想跟你通过HTTPS协议进行秘密交流。

3)网站服务器B把包含自己公钥信息的CA证书下发给浏览器A,并告诉浏览器A这个CA证书里有我的公钥信息,你决定一个对称加密使用的秘钥串,然后通过这个公钥加密后发送给我。

4) 浏览器A接收到网站服务器B下发的CA证书后,对这个CA证书的及其包含的公钥信息的合法性表示怀疑。于是根据CA证书中包含的证书签发机构的标识找到自身内置的该签发机构的公钥对CA证书中公钥的数据指纹进行解密,然后再自己计算一下CA证书中公钥的数据指纹,对了一下这两个数据指纹是一致的。浏览器A放心了,知道这个CA证书是合法的,CA证书中的公钥也没有被篡改过。

5)然后浏览器A通过通过密钥协商技术产生了一个随机的字符串作为与网站服务器B进行秘密通信的密钥,并把这个密钥通过CA证书中包含的公钥进行加密后发送给网站服务器B。

6)网站服务器B接收到密文格式的密钥后,通过自己的私钥进行解密得到密钥的明文内容。

7)浏览器A和网站服务器B开始了秘密交流。

参考文章

数字签名是什么? - 阮一峰的网络日志

https://www.cnblogs.com/yyds/p/6992125.html

上一篇 下一篇

猜你喜欢

热点阅读