第6章确保Web安全的HTTPS
一、 HTTP的缺点
通信使用明文(不加密),内容可能被窃听(SSL提供报文加密机制)
不验证通信方的身份,因此有可能遭遇伪装(SSL的证书机制,需要客户端和服务端拥有相同的公钥证书)
无法验证报文的完整性,所以有可能已遭篡改(SSL数字签名机制)
https本质上是将http通信接口部分使用ssl和tls协议替代,即原本http和tcp层直接通信,现在变为http先和ssl层通信,然后ssl和tcp层通信。
1、通信使用明文(不加密),可能被窃听
HTTP本身不具备加密功能,所以无法做到对通信整体(使用HTTP协议通信的请求和响应的内容)进行加密,也就是说HTTP报文使用明文方式发送
.TCP/IP是可能被窃听的网络
.加密处理防止被窃听
(1)通信加密
HTTP协议没有加密机制,但可以通过和SSL(安全套接层)或TLS(安全层传输协议)的组合使用,加密HTTP的通信内容。
用SSL建立安全通信线路后,就可以在这条线路上进行HTTP通信了。
(2)内容加密 (报文主体)
客户端和服务端 对称加密
2、不验证通信方的身份就可能遭遇伪装
HTTP协议中的请求和响应不会对通信方进行确认,存在“服务器是否就是发送请求中URI真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等问题。
隐患如下
(1)伪装Web服务器
(2)伪装客户端
(3)无法确定正在通信的对方是否具备访问权限。因此某些Web服务器上保存着重要的信息,只想发个特定用户通信的权限。
(4) 无法判定请求来自何方、出自谁手
(5) 即使是无意义的请求也会照单全收。无法阻止海量请求下的Dos攻击(拒绝服务攻击)
查明对手的证书
SSL不仅提供加密处理,而且还使用了一种被称为证书的手段。
3、无法验证报文的完整性,可能已遭篡改
二、 HTTP+加密+认证+完整性保护=HTTPS
1、HTTPS是身披SSL外壳的HTTP
2、互相交换**的公开**加密技术
对称加密(共享**加密)
非对称加密(公开**加密)
HTTPS 使用混合加密机制
HTTPS采用共享**加密和公开**加密两者并用的混合加密机制。充分利用两者各自的优势,在交换**环节使用公开**加密方式,之后建立通信交换报文阶段则使用共享**加密方式。
3、证明公开**正确性的证书
4、HTTPS的安全通信机制
步骤1 客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件列表(所使用的加密算法及**长度等)。
步骤2 服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本和组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
步骤3 之后服务器发送Certificate报文,报文中包含公开**证书
步骤4 最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束
步骤5 SSL第一次握手结束之后,客户端以Client Key Exchange 报文作为会应。报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用步骤3中的公开**进行加密
步骤6