标签:消息转发 合法性 内容 连接 security 正是 努力 htm targe
HTTPS也被叫做“基于TLS的HTTP,基于SSL的HTTP,HTTP安全“,它是一个在Internet上广泛使用的计算机网络安全通信协议。
即HTTPS是HTTP的安全版本,在了解HTTPS为何安全之前,那么我们首先应该要知道HTTP为什么不安全。
通过 HTTP 协议传输的信息是明文的。网络包从客户端/浏览器到服务器的这段过程中,需要经过多个网络设备。我们的登录帐号、密码等信息可以轻易被其中任何一个网络设备获取。
如果其中的一个网络设备被黑客控制,除了可以获取我们发送的数据以外,还可以将我们发送的数据进行伪造后再进行发送。
这就是 HTTP 传输所面临的问题之一:中间人攻击,指消息传递的过程中,处在传递路径上的攻击者可以嗅探或者窃听传输数据的内容。
HTTPS针对这个问题,采用了“加密”的方式来解决。
我们最先想到的应该就是对称加密算法了,如果HTTPS使用的是对称加密算法会是怎样的情况呢?
对称加密算法既指加密和解密需要使用的密钥key是一样的。
如果客户端和服务端都有一个相同的密匙key,那么客户端先使用密匙key加密数据之后再发送到服务端,此时中间人获取到的数据是无法解密的。服务端使用key解密后,执行完毕返回同样由该key加密的数据到客户端。
整个过程看起来没有问题,但是忽略了一个点,即密匙key如果是服务端生成的该如何告诉客户端呢?实际上,无论采用什么样的方式告诉客户端,都有可能导致密匙key泄露,一旦密匙泄露,则整个加密的工作都显得没有意义了。
所以实际上HTTPS的加密并不是用的对称加密算法这种方式。
HTTPS使用了另一种聪明的加密算法,非对称加密算法。
非对称加密算法会生成两个密钥(key1 和 key2)。凡是 key1 加密的数据,key1 自身不能解密,需要 key2 才能解密;凡事 key2 加密的数据,key2 自身不能解密,只有 key1 才能解密。
下面我们看看HTTPS中是如何使用RSA的:
这里也许你会有问题,为什么不直接用非对称加密来加密信息,而是加密 AES 的 key 呢?
因为非对称加密和解密的平均消耗时间比较长,为了节省时间提高效率,我们通常只是用它来交换密钥,而非直接传输数据。
我们之前通过加密技术已经解决了消息安全传递的问题了,那么是不是从此就万无一失了呢?答案当然不是。
我们设想一下,如果我们服务端(S)和客户端(C)中间会途经一个黑客服务器,暂且就称为H吧,下面我们看看H如何操作可以破解掉我们的加密防范。
这么看来,我们之前的努力貌似又功亏一篑了。
所以此时我们需要引入一个非常权威的第三方,一个专门用来认证网站合法性的组织,可以叫做 CA(Certificate Authority)。各个网站服务商可以向 CA 申请证书,使得他们在建立安全连接时可以带上 CA 的签名。而 CA 得安全性是由操作系统或者浏览器来认证的。
你的 Windows、Mac、Linux、Chrome、Safari 等会在安装的时候带上一个他们认为安全的 CA 证书列表,只有和你建立安全连接的网站带有这些CA的签名,操作系统和浏览器才会认为这个链接是安全的,否则就有可能遭到中间人攻击。
一旦某个 CA 颁发的证书被用于的非法途径,那么这个 CA 之前颁发过的所有证书都将被视为不安全的,这让所有 CA 在颁发证书时都十分小心,所以 CA 证书在通常情况下是值得信任的。
使 HTTP 后面增加一个S(Security)的技术,正是 对称加密 + 非对称加密 + CA 认证 这三种技术的混合体。当然这个主要是 HTTPS 的基本原理,真正实际中的 HTTPS 的协议是比以上的描述更为复杂一些的,并且其中任何一步稍有闪失,整个流程都将不再安全。
这也是为什么 HTTPS 协议从 SSL 1.0升级到 SSL 3.0,再被 TLS 1.0 现在被 TLS 1.3取代,其背后都是一个个细节上的优化,以防有任何闪失。
TLS 协议相比 SSL 协议增加了传输层的安全保证。
标签:消息转发 合法性 内容 连接 security 正是 努力 htm targe
原文地址:http://www.cnblogs.com/hammerc/p/6905202.html