一个菜鸟的http心得

  • A+
所属分类:其他

一个菜鸟的http心得(四)HTTPS-安全的HTTP

HTTP哪里不安全
HTTP通信使用明文(未加密),内容可能被窃听
HTTP通信时,不用验证通信方的身份,因此有可能遭遇伪装
使用HTTP接收的报文无法证明其完整性,有可能遭遇篡改
HTTPS=HTTP over SSL
SSL在网络分层的位置
在这里插入图片描述

SSL协议的三个特性
① 保密:在握手协议中定义了会话密钥后,所有的消息都被加密。
② 鉴别:可选的客户端认证,和强制的服务器端认证。
③ 完整性:传送的消息包括消息完整性检查(使用MAC)。

HTTPS工作流程
工作流程中涉及到的几个主体:

客户端。通常是浏览器(Chrome、IE、FireFox等),也可以自己编写的各种语言的客户端程序。
服务端。一般指支持Https的网站,比如github、支付宝。
CA(Certificate Authorities)机构。Https证书签发和管理机构,比如Symantec、Comodo、GoDaddy、GlobalSign。(Https证书的作用就是通过CA机构的信用证明服务器公钥的可信任性。)
在这里插入图片描述
Https的工作流程:
在这里插入图片描述
可以看到工作流程,基本分为三个阶段:

认证服务器。
浏览器内置一个受信任的CA机构列表,并保存了这些CA机构的证书。第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构,存在于浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程。否则,浏览器将提示用户,根据用户的选择,决定是否继续。当然,我们可以管理这个受信任CA机构列表,添加我们想要信任的CA机构,或者移除我们不信任的CA机构。

协商会话密钥。客户端在认证完服务器,获得服务器的公钥之后,利用该公钥与服务器进行加密通信,协商出两个会话密钥,分别是用于加密客户端往服务端发送数据的客户端会话密钥,用于加密服务端往客户端发送数据的服务端会话密钥。在已有服务器公钥,可以加密通讯的前提下,还要协商两个对称密钥的原因,是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资源。另外,会话密钥是随机生成,每次协商都会有不一样的结果,所以安全性也比较高。一言以蔽之,通过非对称加密来传递客户端会话秘钥、服务器端会话秘钥,发送HTTP报文的时候用会话秘钥来加密,这样即保证了对称加密的会话秘钥的安全传输,又保证了加密的效率。

加密通讯。此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的所有Http数据,都通过会话密钥加密。这样网路上的其它用户,将很难窃取和篡改客户端和服务端之间传输的数据,从而保证了数据的私密性和完整性。

附:加密方式
对称加密
原文 & 密码 -> 密文

对称加密双向可逆:即知道原文和密码就可以获得密文;获得密文和密码也可以获得原文。所以对于对称加密,密码必须严格控制,不能公开。设想下有一个1000个人的部门需要信息加密,那么所有1000人都必须要保存密码,只要其中有一个人不小心泄露了密码,整个加密机制就崩溃了。

非对称加密
原文 & 公钥 -> 密文
密文 & 私钥 -> 原文

非对称加密的密钥采用配对方式,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。这样,加密者可以保留私钥,把公钥开放给公众,任何人都可以采用这个公钥加密信息,而只有保存对应私钥的人才能解开这些信息。相比对称加密,非对称加密最大的优势在于解决了密钥传播的问题。
非对称加密除了可以做数据加密之外,还可以用作数字签名等其他方面。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: