HTTP本身不具备加密的功能,所以无法做到对通信整体数据的加密处理。
TCP/IP协议簇的工作机制在所有连通链路上都有可能遭到窃听。
HTTP协议实现本身非常简单,无论是谁发送过来的请求都会响应,因此不确认通信双方的身份就有隐患。
HTTPS = HTTP+加密+认证+完整性保护。HTTPS并不是应用层一种全新的协议,只是HTTP通信接口部分SSL和TLS协议替代而已。
SSL是独立于HTTP协议的,其它应用层协议如SMTP、Telnet也可结合SSL使用,SSL已经成为目前网络应用最为广泛的安全技术之一。
如果加密和解密使用同一个秘钥,那么这种加密方式称之为共享秘钥加密
或对称加密
,这种加密手段实现简单,但是并不安全。
SSL采用的就是非对称加密
算法,也叫公开秘钥加密
,这种算法加密算法是公开的,秘钥是保密的。非对称加密算法有两把秘钥,一把叫私钥
,另一把叫公钥
;公钥公开,私钥不能公开。
发送端使用对方的公钥进行加密,接收方收到数据后通过自己的私钥进行解密,这种方式无需担心窃听。
**要根据密文和公钥恢复到信息原文对于现代计算机来说还是比较困难,因为解密过程是一个非常大的整数做因式分解,就目前计算机能力来说,暴力破解难度仍然很高。**
- 1
HTTPS采用对称加密和非对称加密两者结合的方式进行安全控制。在交换秘钥缓解使用非对称加密,简历通信后则使用对称加密方式。
HTTPS在使用非对称加密阶段进行交换对称加密的秘钥的时候,是无法保证对方公开的公钥是正确完整的为了解决这个伪装问题,数字证书认证机构 CA
应运而生。
数字证书认证机构
:是处于客户端和服务器双方都十分信赖的第三方权威机构,例如威瑞信
机构。
首先,服务器的运营人员向数字证书认证机构踢出公钥的申请,CA机构在判明申请者身份后,会对这份申请的公钥进行签名,然后将这个签了名的公钥放入公钥证书后绑定在一起。
客户端可用收到的公钥证书向数字证书认证机构进行签名验证,一旦通过,客户端便可知道服务器的公钥是否真实。
一般浏览器开发商发布新的浏览器版本时,会事先将一些常用的认证机的公钥植入到了浏览器。
HTTPS使用SSL和TLS两个协议, SSL最初由网景公司率先倡导,开发到SSL3.0时,后来将SSL主导权交给了IETF,IETF以SSL3.0版本为基础,指定了TLS1.0、TLS1.1、TLS1.2,TLS是以SSL为基础开发的协议,有时也会统一称TLS为SSL,现在主流版本SSL是SSL3.0和TLS1.0
HSTS 是 HTTP 严格传输安全(HTTP Strict Transport Security) 的缩写。 这是一种网站用来声明他们只能使用安全连接(HTTPS)访问的方法。 如果一个网站声明了 HSTS 策略,浏览器必须拒绝所有的 HTTP 连接并阻止用户接受不安全的 SSL 证书。 目前大多数主流浏览器都支持 HSTS (只有一些移动浏览器无法使用它)。