HTTPS和密钥协商小结

HTTPS

HTTPS使用的TLS协议,主要版本是TLS1.1和TLS1.2,TLS1.3目前还是草案的形式,具体的标准尚未形成。
HTTP当前版本主要是HTTP1.0 HTTP1.1 HTTP协议的瓶颈以及优化技巧都是基于TCP协议本身的特性的。

HTTP优化的主要目标是带宽和延时,但是带宽现在来说已经不是问题,主要优化目标是延时。

HTTP的延时体现在几个方面:
- 浏览器阻塞(HOL blocking),对于同一个域名,只能有四个连接。
- DNS查询,将域名解析为IP地址,利用DNS缓存减少这个时间。
- HTTP通过TCP建立连接后才能发送请求。
HTTPS协议使用的端口是443,而HTTP协议使用的端口是80

SPDY

SPDY协议是为了提高网站访问效率,GOOGLE使用的SPDY协议底层依旧是依赖于TCP协议的,SPDY协议对HTTP进行了很大的优化。
1. 多路复用 一个TCP会话搭载多路HTTP请求
2. 服务器可以主动向客户端发起通信
3. 强制使用了HTTPS协议
SPDY协议运行在SSL层之上,在HTTP层之下。
后来的HTTP2.0在SPDY基础上改进。GOOGLE QUIC协议替换掉TCP,使用UDP减少时延,这些web协议就是为了更加快速地获取web服务。

密钥协商

问题:对称密钥加密强度已经很高了,但是密钥安全的生成和保管是一个问题。非对称加密算法主要用于密钥协商,密钥协商的主要开销就是非对称加密造成的计算开销。
1. 如果我们每次会话都使用不同的会话密钥,会话密钥都保存在内存中,这样别人也无法窃取密钥了
2. 但是会话重用的问题,密钥应该如何保存和处理
关于密钥的保存的问题,暂时不是特别了解

对于密钥交换的问题主要与RSA算法,DH算法,DHE算法,ECDHE算法这些密钥协商算法有关。PFS(perfect forward security),密钥交换算法前向安全性,本质上是协商的共享密钥被泄露了,只会暴露本次会话,但是之前会话的内容的安全性还是能得到保证的。

密钥交换常用的算法
1. RSA
2. ECDH-RSA 不支持PFS
3. ECDHE-RSA 支持PFS
4. ECDH-ECDSA 不支持PFS
5. ECDHE-ECDSA 支持PFS

非对称加密算法的开销问题

关于密钥交换算法DH和RSA算法,DH算法比RSA算法消耗更多的CPU资源,很简单,因为DH算法首先生成公开的参数,用于传给对方生成共享密钥,对方用该参数计算共享密钥。

  1. 非对称算法的加解密在握手过程中的计算量很大,占据了握手过程中绝大多数的计算量。
  2. 非对称加密算法不能在加密超过自己公钥长度的内容。

  3. RSA协商密钥2个RTT,四次握手,RSA算法主要作用是加密premaster_secret。
    最后由PRF(pseudo-random function)伪随机函数,生成master_secret。

  4. ECDHE密钥协商算法,对于ECDHE密钥协商算法比RSA多一次握手,ECDHE在服务器端发送一个含有ECDH_PARA的参数的握手信息。

身份认证

主要是PKI(公钥基础设施)包含内容比较多,有点麻烦,数字证书,数字证书里包含公钥。

对称加密算法

主要是分组加密,之前常用的分组加密方式是AES-CBC模式,现在常用的分组加密模式是AES-GCM模式,这种模式计算量更大,不适合移动设备和平板的设备。

前向安全的问题

TLS1.3强调前向安全,RSA不支持前向安全,一旦私钥被获取,之前截获的信心将全部被解密,DH算法也不支持前向安全。
保证前向安全的DHE和ECDHE就是各自的一对DH参数不保存,生成一次共享密钥换一对DH参数。
每一对公私钥对,要么用于签名验证,要么用于密钥交换,不能同时用。

TLS协议部署和HTTP协议部署问题

DH, DHE, ECDH, ECDHE这些算法在TLS中实现的问题,还有HTTPS部署的问题,以及HTTPS优化的问题。

你可能感兴趣的:(security)