内容简介:在第一篇 和第二篇 中我们学到了 使用对称加密加密信息,非对称加密配送密钥,使用散列确认文件没有被篡改,使用消息认证码确保知晓密码的才能发送消息,使用数字签名来证明消息的发送者。那么,如果我们在互联网上访问一个网站进行通信的时候,使用非对称加密进行密钥配送时,怎么确保对方就是对方呢?也就是说,怎么确认我们收到的所谓的答案是,对公钥使用数字签名。
在第一篇 和第二篇 中我们学到了 使用对称加密加密信息,非对称加密配送密钥,使用散列确认文件没有被篡改,使用消息认证码确保知晓密码的才能发送消息,使用数字签名来证明消息的发送者。
那么,如果我们在互联网上访问一个网站进行通信的时候,使用非对称加密进行密钥配送时,怎么确保对方就是对方呢?也就是说,怎么确认我们收到的所谓的 Alice
的公钥就真的是 Alice
的公钥呢?
答案是,对公钥使用数字签名。
证书
因为大家都有公钥,于是世界上各大商家就形成了一个组织,这个组织负责对公钥进行签名。只要是这个组织签名过的公钥我们都信任。这个组织就叫 CA(Certification Authority)
。
举个例子,如果 Alice
要向 Bob
发送密文,那么首先 Bob
将它的证书发送给 Alice
。
首先证书有两部分组成:
-
Bob的公钥 -
CA使用CA的私钥生成的数字签名
Alice
接收到证书之后,首先使用 CA
的公钥对数字签名进行确认,如果发现没有问题,确实
是 CA
签发的证书,那么接下来,就是用 Bob
的公钥对消息进行加密,然后发送给 Bob
。 Bob
再使用自己的私钥进行解密,就可以得到 Alice
发出的明文。
如果全世界只有一个 CA
,由它来签发所有的证书,那么它肯定忙不过来,而且也会由于处于垄断地位而搞各种幺蛾子,因此, CA
组织一般都是树状结构,是分层的,而最顶层的 CA
就叫 根证书(Root CA)。
TLS
TLS 就是我们之前学到的几种密码 工具 的组合,举个例子,我们日常所使用的HTTP协议,他是明文协议,HTTP请求大概长这样:
GET / HTTP/1.1 Host: www.example.com
而响应大概长这样:
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World, this is a very simple HTML document.</p>
</body>
</html>
可以看到,他们其实就是人类可读的字符,所以对HTTP协议进行中间人攻击,就可以获取所传输的一切,因此我们 需要一种能够兼容HTTP协议(HTTP应用这么广,不可能一下子把它废掉),但是又能进行加密的技术,它就是TLS。
TLS详细可以参考这里: https://en.wikipedia.org/wiki/Transport_Layer_Security
TLS的工作流程是:
ClientHello ServerHello
可以发现
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Machine Learning
Kevin Murphy / The MIT Press / 2012-9-18 / USD 90.00
Today's Web-enabled deluge of electronic data calls for automated methods of data analysis. Machine learning provides these, developing methods that can automatically detect patterns in data and then ......一起来看看 《Machine Learning》 这本书的介绍吧!
Markdown 在线编辑器
Markdown 在线编辑器
HEX HSV 转换工具
HEX HSV 互换工具