Https的理解
http 协议的缺点
-
通信使用明文,内容可能会被窃听
- TCP/IP是可能被窃听的网络。
不验证对方的身份,隐藏有可能遭遇伪装
无法验证报文的完整性,所以有可能已经被修改
通信上的加密
- 一种方式就是通信加密。HTTP协议中没有加密机制。但是可以通过和SSL(Secure Socket Layer)安全套接层或者TLS(安全传输层协议)的组合使用,加密HTTP的通信内容。 用SSL建立安全通信线路后,就可以在这条线路上进行HTTP通信了。与SSL组合使用的HTTP被称作HTTPS。 就是先在服务器和客户端之间建立安全的通信线路之后开始通信。
- 对内容进行加密。对报文主题的内容进行加密。为了做到有效的内容加密,前提是要求客户端和服务端同事具备加密和解密机制。改方式不同于SSL和TLS将整个通信线路加密处理。所以内容仍有被篡改的风险。
不验证通信方身份就可能遭遇到伪装。任何人都可以发起请求。不确认对方的身份,因此存在各种隐患
- 无法确定请求发送至目标的Web服务器是否是真实意图的Web服务器,可能是伪装的Web服务器
- 无法确定相应返回的客户端是否是按照真实意图接收相应的那个客户端。有可能是伪装的客户端。
- 无法确定正在通讯的对方是否具备访问权限。因为某些Web服务器上保存着某些重要的信息。只想发送给某些用户通讯的权限
- 无意义的请求也会照单全收,无法阻止海量请求下的DoS攻击
- 无法判断请求出自何手
无法验证报文的完整性,可能遭到篡改
由于HTTP协议无法证明通信的报文完整性,因此请求和相应发出之后知道对方接收的这段时间,即使请求或者响应遭到篡改,我们也无法获知。
Http+加密(防止内容被窃听)+ 认证(防止伪装)+完整性保护(防止被中间人篡改)
Https并非是应用层的一种新协议。只是Http通讯接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议替代而已。通常Http直接和TCP通讯。当使用SSL时,变成先和SSL通讯,再有SSL和TCP通讯。所谓HTTPS ,无非是身披SSL协议外壳的HTTP,采用了SSL之后,HTTP就拥有了HTTPS的加密、证书、完整性保护这些功能。SSL是独立于HTTP的协议,所以不光HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。可以说SSL是世界上应用最广泛的网络安全语言。
共享密钥加密的困境。加密和解密同用一个密钥叫做共享密钥加密。也称为对称密钥加密。
相互交换密钥的公开密钥加密技术。公开密钥加密方式很好解决了共享密钥的困难。使用公开密钥加密的方式,发送密文的一方使用对方的公开密钥进行加密,对方收到加密信息之后,再使用自己的私有密钥进行解密。利用这种方式不需要来发送来解密的私有密钥,也不用担心密钥被攻击者窃听而盗走。
SSL采用一种公开密钥加密的加密处理方式。近代加密方法中的加密算法是公开的。而密钥是保密的。通过这种方法可以保持加密方法的安全性。
使用两把密钥的公开密钥加密
公开密钥加密的方式很好解决了共享密钥加密的困境。通过公开密钥加密。通过私有密钥解密。HTTPS采用了共享密钥加密和公开密钥加密两者共用的混合加密机制。如果密钥能够安全交换,就有可能实现共享密钥加密的手段。
数字证书下发的完整过程。
- 服务器把自己的公开密钥登录到数字证书认证机构。
- 数字证书认证机构验证申请者身份后,会对申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将公开密钥放入到公钥证书绑定子一起。
- 服务端把公钥发送给客户端。客户端拿到服务端发送过来的公钥证书后,使用数字证书验证机构公开密钥,向数字认证结构验证公钥证书上的数字签名,以保证服务端公开密钥的真实性。
- 使用公开密钥对报文加密后发送
- 服务器对私有密钥进行解密。
SSL速度慢吗
由于HTTPS还需要做服务器、客户端双方加密及解密处理。因此会消耗较多的CPU和内存等硬件资源。 和HTTP通讯部分相比,SSL通信部分消耗网络资源。而SSL通信部分。又因为要对通信进行处理,所以时间延长了。
为什么不用HTTPS
- 因为和纯文本相比,加密通信会消耗更多的CPU及内存资源,如果每次请求都要进行加密。会消耗更多的资源。
- 成本考虑。 申请携带公钥的加密证书需要收费