码迷,mamicode.com
首页 > Web开发 > 详细

HTTPS

时间:2016-05-06 00:32:28      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

一.HTTP协议
HTTP的缺点:
  • 通信使用明文(不加密),内容可能被窃听;
  • 不验证通信方的身份,有可能遭遇伪装;
  • 无法证明报文的完整性,有可能被篡改。
 
1.通信使用明文可能会被窃听
TCP/IP是可能被窃听的网络
 
加密处理防止被窃听
1)通信的加密
http协议和SSL或TLS组合使用,即HTTPS,用SSL建立安全通信线路,再进行HTTPS通信。
2)内容的加密
对报文主题加密,通信本身是不加密的。客户端和服务器同时具备加密和解密机制。通信线路不安全,内容仍有u被篡改的风险。
 
2.不验证通信方的身份可能遭遇伪装
任何人都可发起请求
 
查明对方的证书
SSL不仅提供加密处理,而且还用证书验证对方。客户端通信之前先确认服务器的证书,验证通过才会继续通信。证书由值得信赖的第三方机构颁发。
 
3.无法证明报文的完整性,可能已被篡改
接收到的内容可能有误。
请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击称为中间人攻击(MITM)。
 
http协议如何防止被篡改
常用的是MD5和SHA-1散列值校验的方法,以及用确认文件的数字签名方法(例如用PGP(完美隐私)创建的数字签名)。但是这些方法无法保证结果的正确,因为PGP和MD5本身被改写是很难被用户察觉的。
此时,有必要使用HTTPS,SSL提供认证和加密处理及摘要功能。
 
二.HTTP+加密+认证+完整性保护=HTTPS
1.HTTP加上加密处理和认证以及完整性保护后就是HTTPS
 
2.HTTPS是带有SSL外壳的HTTP
HTTPS只是HTTP通信接口部分用SSL和TLS协议代替而已。通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。SSL协议是在HTTP协议和TCP中间的一层协议。
 
学习SSL之间,先来学习加密方法。
3.相互交换密钥的公开密钥加密技术(公钥加密)
1)共享密钥加密的困境:
加密和解密用同一个密钥的方式称为共享密钥加密,也称为对称密钥加密。用对称密钥加密时必须将密钥也发送给对方。发送密钥的过程容易被窃听,从而丢失密钥。
2)使用两把密钥的公开密钥加密
使用一对非对称的密钥,私有密钥和公开密钥。发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私钥进行解密。存在密钥的传送,所以是安全的。
3)HTTPS采用混合加密机制速度慢。所以应充分利用各自的优势,在交换密钥环节使用公钥加密,之后的建立通信交换报文阶段使用共享密钥加密。
 
4.证明公开密钥正确性的证书
公开密钥加密的问题:无法验证公开密钥本身就是真实的公开密钥。为了解决这个问题,可以使用由数字证书认证机构(CA)和其相关的机关颁发的公开密钥证书。服务器会将这份数字证书认证机构颁发的公钥证书发给客户端,以进行公开密钥加密通信。
 
5.HTTPS的安全通信机制
技术分享
 
技术分享

步骤1: _客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。

步骤2: _服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。

步骤3: _之后服务器发送Certificate报文。报文中包含公开密钥证书。

步骤4:  最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。

步骤5:  SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用步骤3中的公开密钥进行加密。

步骤6:  接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。

步骤7:  客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。

步骤8:  服务器同样发送Change Cipher Spec报文。

步骤9: 服务器同样发送Finished报文。

步骤10:  服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求。

步骤11: 应用层协议通信,即发送HTTP响应。

步骤12: 最后由客户端断开连接。断开连接时,发送close_notify报文。上图做了一些省略,这步之后再发送TCP FIN报文来关闭与TCP的通信。

在以上流程中,应用层发送数据时会附加一种叫做MAC(Message Authentication Code)的报文摘要。MAC能够查知报文是否遭到篡改,从而保护报文的完整性。

 

 
HTTPS在使用SSL协议时,它的处理速度会变慢。一种是指通信过程变慢,另一种是指由于大量消耗CPU和内存等资源,导致处理速度变慢。因为HTTPS需要做服务器、客户端双方加密和解密处理,因此会消耗CPU和内存等硬件资源。和HTTP通信相比,SSL通信部分消耗网络资源。而SSL通信部分又因为要对通信进行处理,所以时间上有延长了。
因此,如果是非敏感信息则使用HTTP通信,只有在包含个人敏感信息时才利用HTTPS加密通信。
 
 
 
 
 

HTTPS

标签:

原文地址:http://www.cnblogs.com/xujiming/p/5463593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!