图解HTTP读书笔记-(七 确保安全的HTTPS)

七 确保安全的HTTPS

7.1 HTTP的缺点:

通信使用明文可能被窃听:

加密可以防止窃听,http通过和SSLTLS的组合使用,加密HTTP的通信内容。

不验证通信方的身份可能遭遇伪装:

查明对手的证书:

SSL不仅提供了加密手段,还使用了证书,证书有值得信赖的第三方机构颁发,用以证明服务端和客户端是实际存在的。伪造证书技术困难,所以只要确认通信方(服务端或者客户端)有证书,可判断通信方的真实意图。

无法验证报文的完整性,可能被篡改:

典型的攻击方式中间人攻击(MITM

7.2 HTTP+加密+认证+完整性保护=HTTPS

 HTTPS是身披SSL外壳的HTTP

HTTPS非全新的协议,是HTTP通信接口部分用SSLTLS协议替代而已。通常HTTP直接和TCP通信,当使用SSL时,则变成先跟SSL通信,再由SSLTCP通信。

 

补充下背景知识:SSL “Secure Sockets Layer”的缩写,中文叫做安全套接层,也是网景公司设计的。1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在1999年把 SSL 标准化。标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做传输层安全协议常见都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段

相互交换密钥的公开加密技术

所谓加密,解密:加密的过程,就是把明文变成密文的过程;反之,解密的过程,就是把密文变为明文。在这两个过程中,都需要密钥来参与数学运算。

对称加密加密解密使用【相同的】密钥

优点:速度快

缺点:存在传输密钥的问题。

非对称加密:简单理解就是公开密钥,私有密钥。

优点:因为解密就是对离散对数求值,非常复杂,所以安全性很高。

缺点:处理速度慢。

HTTPS采用混合加密的方式:

在交换密钥环节采取非对称加密方式,之后的建立通信交换报文采用对称加密方式。

证明公开密钥正确性的证书

CACertificate Authority的缩写,也叫证书授权中心。证书洋文也叫“digital certificate”

证书有信任链。

 

这里图比较清晰的介绍了验证关系。

客户端认证证书

证书的获取及发布。证书是收费的,仅用于特殊用途。

自签名证书:

无法消除伪装的可能性,不排除和正在伪装的假服务器保持通信。

值得信赖的三方机构介入,才能让以植入浏览器的认证机构颁布的公开密钥发挥作用,并借此认证服务器的真实性。

HTTPS安全通信机制:

 

1.客户端通过发送报文hello给服务器开始SSL通信,报文包含客户端支持的一套加密规则SSL指定版本,加密组件发送给网站。
2服务器可进行SSL通信时,会响应报文server hello ,报文中包含SSL版本及加密组件(加密组件是从接收到客户端加密组件内筛选出来的)。之后服务端将自己的身份信息以证书的形式发回给客户端。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

3 最后服务端发送server hello done通知客户端,最初阶段的SSL握手协商阶段结束。

SSL第一次握手结束
4.获得服务端证书之后客户端要做以下工作:
a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
b) 如果证书受信任,或者是用户接受了不受信的证书,客户端会生成一串随机数的密码pre-master secret,并用证书中提供的公钥加密,以报文client-key-exchange
c) 客户端继续发送change cipher Spec报文用来告诉服务端,此报文之后的通信会采用pre-master secret进行加密。

d)客户端发送finish报文,报文包含链接至今全部报文的整体校验值这次握手协商是否能够成功,一服务器是否能够正确解密该报文作为判断标准。

5.服务端接收客户端发来的数据之后要做以下的操作:
a) 使用自己的私钥将信息解密取出密码,使用密码解密客户端发来的握手消息,并验证HASH是否与客户端发来的一致。
b) Certificate Verify:如果服务器请求验证客户端,则这消息允许服务器完成验证过程。

6 服务端发送Change cipher spec报文

服务器要求客户端在后续的通信中使用加密模式

7 服务端发送finish报文。

服务器告诉客户端它已经准备好安全通信了。SSL握手完成的标志
之后所有的通信数据将由之前客户端生成的随机密码并利用对称加密算法进行加密。

也就是开始应用层通信,即发送HTTP请求。
这里客户端服务器互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试。在上述流程中,应用层发送数据时会附加一个叫做MAC的报文摘要,MAC能够检查报文是否遭到篡改,从而保证报文的完整性。
其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。由于客户端生成的密码是整个数据加密的关键,因此在传输的时候使用了非对称加密算法对其加密。非对称加密算法会生成公钥和私钥,公钥只能用于加密数据,因此可以随意传输,而服务器的私钥用于对数据进行解密,所以服务器都会非常小心的保管自己的私钥,防止泄漏。
TLS握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。
整理完这里,对于HTTPS的理论算是有个理解,还需要深入结合代码去看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值