15 mins to know TLS

前言

我们常用的加密方式有对称加密和非对称加密。这两者的优缺点如下。

对称加密

介绍:生成一个密钥、客户端和服务端都用这个密钥解密
优点:简单,加密效率高
缺点:没有一个可靠的密钥传输通道(客户端和服务端都得知道这个密钥,意味着这个密钥需要传输)

非对称加密

介绍:生成一个公钥和一个私钥,两者配套,公钥加密只能私钥解密,私钥加密只能公钥解密。
在实际使用的时候,A把自己的公钥发给B -> B使用A公钥加密数据后发给A -> A使用自己的私钥解密,如图。
非对称加密.PNG
优点:比较安全,私钥是服务端私有的,所以通过公钥加密的数据只有服务端能解开,在传输上,由于只传输公钥,非对称加密不会有对称加密的传输问题。
缺点:加密速度慢,无法支持大量数据加密。无法避免中间人攻击

什么是TLS

TLSTransport Layer Security的缩写,也叫传输层安全协议,定义了传输层数据的加密封装格式,因此,在OSI模型中,它属于传输层上方的会话层。我们也可以从另一个方面解释,会话层是管理会话的,在证书校验不通过的时候,会话会被踢出,所以处于会话层。
TLS的前身是网景公司的SSL,SSL3.0之后就是TLS 1.0,可以认为TLS和SSL是同一个东西,只是版本不一样。
了解完这些再了解一下TLS相关的一系列名词,基本就了解了TLS,分别如下:

CA

Certificate Authority的简写,证书颁发机构,负责发放和管理证书,作为交易中的受信任的第三方机构。
CA签发证书时候,需要对申请者的信息进行多方面确认,在确认申请者可信的情况下再颁发证书,CA签发证书的流程如图。
CA颁发证书.PNG

根证书

CA自己的证书,这个证书由CA自己签发,主要包括以下内容:

  1. CA的名字
  2. CA的公钥
  3. CA使用自己的_私钥_对根证书自签名
中间证书

通过CA根证书或其他中间证书签发的证书,主要包括以下内容:

  1. 中间证书所有者的名字
  2. 中间证书所有者的公钥
  3. 中间证书颁发者的名字
  4. 颁发者的签名
信任链

含义:A证书为了证明自己可信,需要找到颁发者的证书,取其中的颁发者公钥解开自己证书上的签名,如果能够解开则证明A证书的公钥可信,与此同时,如果颁发者的证书不是CA根证书,还需要一级一级往上校验,直到CA根证书为止。这形成了一个链条状的信任关系,又叫信任链,这些中间证书和CA根证书,会最终bundle在一个证书文件中,信任链建立如图。
信任链.PNG
可能大家有个疑问,验证证书的过程中,为了验证D可信,原理上只需要使用证书C验证即可,不需要一直往上验证到根证书,但信任链这个东西就是这么设计的,具体为什么,有想法的朋友欢迎交流。

信任证书

客户端要与服务端建立会话,需要先信任服务端证书。这个信任动作,就是我们平时浏览器弹出的信任此证书安装此证书之类弹窗。一般来说,浏览器会通过预置证书到浏览器中来保障安全性,这个在安装浏览器的时候就打包在安装包里。但是还是避免不了有时候需要手动去安装证书的情况,这就有了一定中间人攻击的不安全性。

TLS的会话建立

TLS建立会话主要分为以下几个步骤:

  1. 客户端发第一个随机数、使用的加密算法ClientHello等给服务端。
  2. 服务端返回第二个随机数、自己的证书SeverHello是否验证客户端证书等给客户端。
  3. 客户端对服务端证书校验后,使用其服务端证书中的公钥加密第三个随机数发送给服务端。如果服务端需要校验客户端证书,客户端需要把自己的客户端证书发过去。
  4. 至此,服务端和客户端都建立了获得了3个随机数和加密算法,生成对称加密密钥之后使用对称加密密钥通讯

如图:
TLS建立会话.PNG

为什么需要TLS

TLS最大的作用是解决中间人攻击,安全性更高。同时,TLS还解决了对称加密没有可靠传输信道的问题。

然而在现实生活中,如果用户信任了一些未知来源的证书,那么还是会有受中间人攻击的可能性,比如这样作死

参考文献

https://support.dnsimple.com/articles/what-is-ssl-certificate-chain/
https://www.jianshu.com/p/fcd0572c4765
https://www.jianshu.com/p/6bf2f9a37feb

你可能感兴趣的:(tls,ca)