确保web安全的https
一、http的缺点
①通信使用明文(不加密),内容可能会被窃听;
②不验证通信方的身份,因此有可能遭遇伪装;
③无法证明报文的完整性,所以有可能已遭篡改;
1.1通信使用明文可能会被窃听
由于http本身不具备加密的功能,所以也无法做到对通信整体进行加密;
1.2不验证身份可能遭遇伪装
在http协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求。另外服务器只要接收到请求,不管对方是谁,都会返回一个响应。
1.3无法证明报文完整性
二、http+加密+认证+完整性保护=https
2.1https是身披SSL外壳的http
https并非应用层的一种新协议。只是http通信接口部分用SSL和TLS协议替代而已。简而言之,https是身披SSL外壳的http。
2.2相互交换密钥的公开密钥加密技术
2.2.1共享密钥加密的困境
加密和解密同用一个密钥的方式称为共享密钥,也被称为对称密钥加密。
以共享密钥方式加密时必须将密钥也发给对方。在互联网上转发密钥时,如果通信被监听那么密钥也就会落入攻击者之手,同时也就失去了加密的意义。另外还得设法安全地保管接收到的密钥。
2.2.2使用两把密钥的公开密钥加密
公开密钥加密方式,很好的解决了共享密钥加密的困难。
公开密钥加密使用一对非对称的密钥。一把叫私有密钥,另一把叫公开密钥。
使用公开密钥加密的方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,在使用自己的私有密钥进行加密。利用这种方式,不需要发送解密的私钥,也不用担心公钥被攻击者窃听而盗走。
2.2.3https采用混合加密机制
https采用共享密钥加密和公开密钥加密两者并用的混合加密机制。
2.3证明公开密钥的正确性的证书
公开密钥加密的方式还是存在一些问题的。那就是无法证明公开密钥本身就是货真价实的公开密钥。比如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的密钥就是预想的那台服务器发行的公开密钥。
为了解决上述问题,可以使用由数字证书认证机构和相关机关颁发的公开密钥证书。
介绍一下数字证书认证机构的业务流程:
首先,服务器的运营人员向数字证书认证机构提出公开密钥的申请。数字证书认证机构在判明提出申请者的身份之后,会对申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。
服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式的通信。
接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:一、认证服务器的公开密钥是真实有效的数字证书认证机构;二、服务器的公开密钥是值得信赖的。
用以确认客户端的证书:https还可以使用客户端证书。以客户端证书进行客户端认证,证明服务器正在通信的对方始终是预料之内的客户端,其作用跟服务器证书如出一辙。
2.4https的问题
https比http要慢2到100倍;
SSL的慢分两种。一种是指通信慢,另一种是指由于大量消耗CPU及内存等资源,导致处理速度变慢。另一点是SSL必须进行加密处理,在服务器和客户端都需要进行加密和解密的运算。因此从结果上讲,比起http会更多地消耗服务器和客户端地硬件资源。