http协议(十一)http与https

1、http的缺点web

以前有介绍过http协议相关的一些知识,http是至关优秀和方便的,但它也有缺点,主要不足表如今以下几个方面:算法

△ 通讯使用明文(不加密),内容可能会被窃听浏览器

△ 不验证通讯方的身份,所以可能遭遇假装安全

△ 没法证实报文的完整性,因此有可能已被篡改服务器

其余未加密的协议也存在这类问题网络

△ 某些特定web服务器和特定web浏览器存在安全漏洞优化

 

一、通讯使用明文可能被窃听加密

http自己不具备加密功能,没法作到对通讯总体(使用http协议通讯的请求和响应内容)进行加密,即:http报文使用明文(未经加密的报文)方式传送spa

TCP/IP协议族的通讯机制:通讯内容在全部通讯线路上均可能被窥视对象

应对措施:对通讯进行加密处理防止被窃听

加密对象:

①.通讯的加密

http协议没有加密机制,能够经过SSL(Secure Socket Layer:安全套接层)或TLS(Transport Layer Security:安全层传输协议)组合使用,

加密http的通讯内容,这就是常说的https(超文本传输安全协议)

②.内容的加密

http协议没有加密机制,对传输的内容自己进行加密,即报文实体主体部分;客户端对请求报文加密处理后传输,但前提是客户端和服务器都具备加密和解密机制,

主要应用于WEB服务中(但仍然有被篡改的风险)

 

二、不验证通讯方身份,可能遭遇假装

http协议中请求和响应不会对通讯方进行确认,即存在“服务器是不是发送请求中URI真正指定的主机。返回的响应是否真的返回到实际提出请求的客户端”等相似问题

任何人均可以发起请求,服务器只要接收到请求,无论对方是谁都会返回一个响应(仅限于发送端IP和端口号没有被WEB服务器设定限制访问的前提下)

http协议的隐患有如下几点:

①.没法肯定请求发送至目标的web服务器是不是按真实意图返回响应的服务器;有多是已假装的服务器

②.没法肯定响应返回到的客户端是不是按真实意图接受响应的那个客户端;有多是已假装的客户端

③.没法肯定正在通讯的对方是否具有访问权限;由于某些web服务器保存有重要信息,只发给特定用户通讯的权限

④.没法判断请求来自何方

⑤.即便时无心义的请求也会接收,没法阻止海量请求下的D0S攻击(Denial of Service:拒绝服务攻击)

 

三、没法证实报文完整性,可能已遭篡改

完整性:指信息的准确度,若没法证实其完整性,意味着没法判断信息是否正确

http协议没法证实通讯的报文完整性,所以,请求或者响应在传输过程当中,若是遭到篡改,是没法知道的;相似这种请求或响应传输中被攻击者拦截篡改的攻击

称为中间人攻击(Man-in-the-Middle attack,MITM)

防止篡改:经常使用的方法有MD5和SHA-1等散列值校验的方法,以及来确认文件的数字签名方法

 

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

一、一般把添加了加密和身份认证机制的http协议称为https(HTTP Secure);证书可证实服务器或者客户端的身份

 

二、https至关于身披SSL外壳的http

https并不是应用层的一种新协议,而是在http通讯接口部分用SSL(Secure Socket Layer:安全套接字层)和TLS(Transport Layer Security:安全层传输协议)协议代替

一般,http和TCP直接通讯,当使用SSL时,先由http和SSL通讯,再由SSL和TCP通讯

 

SSL是独立于http的协议,其余应用层的如SMTP何Telnet等协议均可以配合SSL进行使用

 

三、加密技术

SSL采用公开密钥加密(Public-key cryptography)的加密处理方式,加密方法中加密算法是公开的,但密钥是保密的,以保持加密方法的安全性(密钥用来对已经加密的内容进行解密)

加密和解密通用一个密钥的方式称为共享密钥加密(Common key crypto system),也称为对称密钥加密

公开密钥加密方式:

公开密钥加密使用一对非对称密钥,一把叫作私有密钥(private key),一把叫作公开密钥(public key)

过程:发送密文的一方使用对方公开的密钥进行加密,对方收到被加密信息后,使用本身的私有密钥进行解密(要想根据密文和公开密钥解密,理论上能够,但实际操做起来,很是困难)

HTTPS采用混合加密机制

https采用共享密钥加密和公开密钥加密二者并用的混合加密机制。若密钥可实现安全交换,则可能仅使用公开密钥加密(公开密钥加密相比共享密钥加密,速度较慢)

实际运用中应该合理运用两种加密机制的优点,组合起来进行通讯(交换密钥环节利用公开密钥加密方式,创建通讯交换报文阶段使用共享加密机制)

 

四、证书

由数字证书认证机构(CA:Certificate Authority)和其余相关机关颁发的公开密钥证书

处于客户端和服务器双方均可信赖的第三方机构立场,对经过申请的服务器公开密钥作数字签名,分配该公开密钥,将其与共钥证书绑定,而后服务器传给客户端,以进行公开密钥加密方式通讯;

收到证书的客户端使用数字证书认证机构的公开密钥,对服务器证书的数字签名进行认证,而后明确2点:

①.认证服务器的公开密钥是真实有效的数字证书认证机构

②.服务器的公开密钥是指的信赖的

做用:

①.证实通讯方的服务器是否规范

②.确认对方服务器背后运营的企业是否真实存在(拥有该功能的证书就是EV SSL证书:Extended Validation SSL Cetificate );特色:浏览器背景色是绿色的

 

五、HTTPS安全通讯机制

HTTPS通讯过程:

①.客户端发送Client Hello报文开始通讯,报文中包含客户端支持的SSL指定版本、加密组件、列表等

②.服务器接收到请求报文时,在响应报文中包含SSL版本以及加密组件发送Server Hello(加密组件内容从接收到的客户端加密组件中筛选出来)

   而后服务器发送Certificate报文,其中包含公开密钥证书

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

③.第一次握手结束,客户端Client Key Exchange报文回应,报文中包含通讯加密中使用的一种名为Pre-master sercet的随机密码串(该报文已用上一步骤的公开密钥进行加密)

   接着客户端你继续发送Change Cipher Spec报文,该报文提示服务器,在此报文以后的通讯采用Pre-master sercet密钥加密

   最后客户端发送Finished报文;该报文包含通讯链接至今所有报文的总体校验值(此次握手可否成功,以服务器是否能够正确解密报文为判断标准)

④.服务器一样发送Change Cipher Spec报文

   服务器一样发送Finisher报文

⑤.服务器和客户端Finished报文交换完成后,SSL链接完成,通讯收到SSL保护,

⑥.应用层协议开始通讯,即HTTP请求

⑦.最后由客户端断开链接;断开链接时,发送close_notify报文,而后发送TCP FIN报文关闭与TCP的通讯

上面的通讯过程当中,应用层发送数据时会附加MAC(Message Authentication Code)报文摘要,MAC可查询报文是否遭受篡改,保护报文完整性

通讯流程图(服务器公开密钥证书创建HTTPS的过程)

HTTPS使用SSL(Secure Socket Layer:安全套接字层)和TLS(Transport Layer Security:安全层传输协议)这两种协议

△ :使用SSL时,处理速度回变慢

①.通讯慢:通讯时候大量消耗CPU及内存资源,相比较HTTP而已,网络负载可能变慢2-100倍(通讯量增长)

②.加密处理:在服务器和客户端都要进行加密和解密,更多的消耗了服务器和客户端硬件资源,致使负载加强

改善方案:使用SSL加速器(专用服务器),为SSL通讯专硬件,能够提升数倍SSL计算你速度,仅在SSL通讯处理时发挥做用,以分担负载。

扩展阅读:美图HTTPS优化探索与实践

相关文章
相关标签/搜索