HTTPS
HTTP的缺点
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所有有可能已遭篡改
这些问题不仅在HTTP上出现,其他未加密的协议也会存在这类问题
通信使用明文可能会被窃听
由于HTTP本身不具备加密的功能,所以无法做到对通信整体进行加密
- TCP/IP是可能被窃听的网络
- 加密处理防止被窃听
-
通信的加密
HTTP协议中没有加密机制,但可以通过和SSL或TLS的组合使用,建立一条安全通信线路以实现HTTP的加密
与SSL组合使用的HTTP被称为HTTPS
-
内容的加密
-
SSL: Secure Socket Layer,安全套接层
TSL: Transport Layer Security,安全层传输协议
不验证通信方的身份就可能遭遇伪装
-
任何人都可发起请求
查明对手的证书
虽然使用HTTP协议无法确定通信方,但如果使用欧冠SSL则可以。SSL不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定对方
证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的
客户端持有证书既可以完成个人身份的确认,也可用于对Web网站的认证环节
无法证明报文完整性,可能已遭篡改
接收到的内容可能有误
HTTP协议无法证明通信的报文完整性,在请求或响应送出之后到对方接收之前的这段时间,即使请求或响应的内容遭到篡改,也没有办法获悉。换句话说,没有任何办法确认,发出的请求和接收到的响应是前后相同的
请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击称为中间人攻击(MITM)如何防止篡改
虽然有使用HTTP协议确定报文完整性的方法,但事实上并不便捷可靠。其中最常用的是MD5和SHA-1等散列值校验的方法,以及用来确认文件的数字签名方法
PGP和MD5也没法百分百保证确认结果正确,因为PGP和MD5本身被改写的话,用户是没有办法意识到的
为了有效防止这些弊端,有必要使用HTTPS,SSL提供认证加密处理及摘要功能
HTTP+加密+认证+完整性保护=HTTPS
HTTPS是身披SSL外壳的HTTP
HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL和TLS协议代替而已,如图所示:
在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护的这些功能
SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和telnet等协议均可配合SSL协议使用。可以说SSL是当今世界上应用最为广泛的网络安全技术
相互交换密钥的公开密钥加密技术
先了解一下加密方法,SSL采用一种叫做公开密钥加密的加密处理方式
-
共享密钥加密的困境
加密和解密同用一个密钥的方式称为共享密钥加密,共享密钥在传输过程中有被窃取的风险
-
使用两把密钥的公开密钥加密
公开密钥加密使用一对非对称的密钥,一把叫做私有密钥,另一把叫做公开密钥,公开密钥可以随意发布,任何人都可以获得使用公开密钥加密方式,发送密文的一方使用对方发送的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不用发送私有密钥,也不必担心密钥被攻击者窃听而盗走
HTTPS采用混合加密机制
HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。公开密钥加密与共享密钥加密相比,其处理速度要慢,实际应用中可以组合起来使用
证明公开密钥正确性的证书
然而,公开密钥加密方式还是存在一些问题的,那就是无法证明公开密钥本身就是货真价实的公开密钥。
为了解决上述问题,可以使用由数字证书认证机构(CA)和其他相关机关颁发的公开密钥证书,以此来证明公开密钥是值得信赖的
可证明组织真实性的EV SSL证书
证书的一个作用是用来证明作为通信一方的服务器是否规范,另外一个作用是可确认对方服务器背后运营的企业是真实存在,拥有该特性的正式就是EV SSL证书
用以确认客户端的客户端证书
客户端一般用在银行的网上银行
由自认证机构颁发的证书称为自签名证书
使用OpenSSL这套开源程序,可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书,其称为自认证机构
浏览器访问该服务器时,会显示一些警告信息
HTTPS的安全通信机制
SSL和TLS
当前主流的版本是SSL3.0和TLS1.0,TSL是以SSL为原型开发的协议,有时会统一称该协议为SSL
HTTPS也存在一些问题,那就是当使用SSL时,它的处理速度会变慢
- 和HTTP通信相比,SSL通信部分消耗网络资源,对其的处理会延长通信时间
- 由于HTTPS还需要做服务器、客户端双方的加密及解密处理,因此会消耗硬件资源
- 和使用HTTP相比,网络负载可能会变慢2-100倍
可以使用SSL加速器这种硬件来改善此问题
为什么不一直使用HTTPS
与纯文本通信相比,加密通信会消耗更多的硬件资源,因此一般个人信息等敏感数据才利用HTTPS加密通信
除此之外,想要节约购买证书的开销也是原因之一