赞
踩
HTTP报文使用明文方式发送
【TCP/IP是可能被窃听的网络】
按TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。
即使经过加密处理的通信,也会被窥视到通信内容,但是无法破解报文信息的含义。
窃听相同段上的通信,只需要收集在互联网上流动的数据报就行了。
对于收集来的数据包的解析工作,可交给抓包工具。
【加密处理防止被窃听】
加密的对象
【通信加密】
HTTP可以通过和SSL(安全套接层)或TLS(安全层传输协议)的组合使用,加密HTTP的通信内容。
用SSL建立安全通信线路后,就可以在这条线路上进行HTTP通信。与SSL组合使用的HTTP称为HTTPS
无法证明报文的完整性,所以有可能已遭篡改
【内容加密】
由于HTTP协议中没有加密机制,那么就对HTTP协议传输的内容本身加密。
即把HTTP报文例所含的内容加密处理。
要求客户端和服务器同时具备加密和解密机制。主要应用在Web服务中。
HTTP协议中的请求和响应不会对通信方进行确认。
也就是说存在“服务器是否就是发送请求中URI真正指定的注解,返回的响应是否真的返回到实际提出请求的客户端”等类似问题。
【任何人都可发送请求】
在HTTP协议通信时,由于不存在确认通信方的处理步骤,任何人都以发送请求。
另外,服务器只要接受到请求,不管对方是谁都会返回一个响应
【HTTP隐患】
(1)无法确定请求发送至目标的Web服务器是否是按真实意图返回相应的那台服务器
(2)无法确定响应返回到的客户端是否是按真实意图接受响应的客户端
(3)无法确定正在通信的对方是否具备访问权限
(4)无法判定请求是来自何方,出自谁手
(5)即使是无意义的请求也会全收。无法组织海量请求下的Dos攻击。
【查明对手的证书】
SSL不仅提供加密处理,而且使用了一种被称为证书的手段,可以用于确定方。
证书是由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。
另外,伪造证书是很困难的。所以只要能够确认通信方持有的证书,即可判断通信方的真实意图。
另外,客户端持有证书即可完成个人身份的确认,也可用于对Web网站的认证环节。
由于HTTP协议无法证明通信报文完整性。没有办法确认,发送的请求和接受到的请求/响应是前后相同的。
【中间人攻击】请求或响应在传输涂中,遭攻击者拦截并篡改内容的攻击
【如何防止篡改】
常用:MD5、SHA-1散列值校验、数字签名方法
提供文件下载服务的web网站也会提供相应的以PGP创建的数字签名及MD5算法生成的散列值。
PGP是用来证明创建文件的数字签名,MD5是由单向函数生成的散列值。
(1)不论使用哪一种方法,都需要操作客户端的用户本人亲自检查验证。浏览器无法自动帮用户检查。
(2)但是PGP和MD5本省被改写的话,用户是没有办法意识到的。
为了有效防止这些弊端,有必要使用HTTPS。
经常会在web登录页面和购物结算界面等使用HTTPS通信。使用HTTPS通信时,不再用http://,而是用https://。
另外,当浏览器访问HTTPS通信有效的web网站时,浏览器的地址栏会出现一个带锁的标记
HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL和TLS协议代替了而已。
通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再有SSL和TCP通信。
所以HTTPS就是身披SSL协议这层外壳的HTTP。
在采用SSL后,HTTP就拥有了HTTPS加密、证书和完整性保护等功能。
SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telent等协议均可配合SSL协议使用。
SSL是当今世界上应用最为广泛的网络安全技术。
【共享秘钥加密】
加密和解密用同一个秘钥,又叫对称秘钥加密
【公开秘钥加密方法】
公开秘钥加密使用一对非对称秘钥。一把叫做私有秘钥,另一把叫做公开秘钥。
私有秘钥不能让其他任何人知道,而公开秘钥可以随意发布,任何人都可以获得。
使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有秘钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。
另外,要想根据密文和公开秘钥,恢复到信息原文是异常困难的。
【HTTPS采用混合加密机制】
HTTPS采用共享秘钥加密和公开秘钥加密两者并用的混合加密机制。
在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。
【证明公开秘钥正确性的证书】
公开密钥加密方式存在的问题:无法证明公开密钥本身是真的公开密钥。
公开密钥传输途中,可能被攻击者替换掉了。
为了解决上述问题,可以使用由数字证书认证机构和其他相关机构颁发的公开密钥证书。
HTTPS通信步骤:
当使用SSL时,它的处理速度会变慢。
(1)使用HTTPS网络负载可能会慢2到100倍。处理和TCP连接、发送HTTP请求和相应以外,还必须进行SSL通信,因此整体上处理通信量不可避免会增加。
(2)SSL必须进行加密处理。在服务器和客户端都需要进行加密和解密的运算处理。因此从结果上讲,会比HTTP消耗更多服务器和客户端的硬件资源,导致负载增强。
针对速度变慢这一问题,并没有根本性的解决方案,会使用SSL加速器这种硬件来改善问题。该硬件为SSL通信专用硬件,相对软件讲,能够提高数倍SSL计算速度。
【为什么不一直使用HTTPS】
(1)加密通信会消耗更多的CPU。
(2)购买证书需要开销。
所以,只有对敏感信息才会使用加密。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。