一个菜鸟的http心得(四)HTTPS-安全的HTTP - what are you living for ? - CSDN博客
Saturday, December 8, 2018
8:46 AM
原
一个菜鸟的http心得(四)HTTPS-安全的HTTP
2018年12月02日 20:42:17 这样挺好了 阅读数:302 标签: HTTPS HTTP SSL 非对称加密 更多
个人分类: http
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_21955179/article/details/84726289
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人都必须要保存密码,只要其中有一个人不小心泄露了密码,整个加密机制就崩溃了。
非对称加密
原文 & 公钥 -> 密文
密文 & 私钥 -> 原文
非对称加密的密钥采用配对方式,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。这样,加密者可以保留私钥,把公钥开放给公众,任何人都可以采用这个公钥加密信息,而只有保存对应私钥的人才能解开这些信息。相比对称加密,非对称加密最大的优势在于解决了密钥传播的问题。
非对称加密除了可以做数据加密之外,还可以用作数字签名等其他方面。
已使用 OneNote 创建。