ssl?tls?有关于网络安全

395 阅读5分钟

上上期讲到当我们的服务器被第三方劫持时,由于客户端获取到的公钥已经被第三方替换成它的公钥导致无法保证访问的安全性。本期我们会从CA认证作为开头,介绍ssl或者说tsl的基本知识。

SSL 1.0、2.0和3.0 
Netscape开发了原始的SSL协议,Netscape Communications的首席科学家Taher Elgamal从1995年至1998年被称为“ SSL之父”。 SSLVersion 1.0从未公开发布,因为该协议存在严重的安全漏洞。1995年2月发布的2.0版包含许多安全漏洞,因此必须设计3.0版。SSL版本3.0于1996年发布,代表了Paul Kocher产生的协议的完全重新设计。与Netscape工程师Phil Karlton和Alan Freier合作,以及Consensus Development的Christopher Allen和Tim Dierks的参考实现。较新的SSL / TLS版本基于SSL 3.0。IETF于1996年将SSL 3.0草案作为历史文档发布在RFC 6101中。  

TLS 1.0 
TLS 1.0最初是在1999年1月的RFC 2246中定义为SSL 3.0版的升级版,由共识开发的Christopher Allen和Tim Dierks编写。如RFC中所述,“此协议与SSL 3.0之间的区别并不明显,但它们之间的差异足以阻止TLS 1.0与SSL 3.0之间的互操作性”。TLS 1.0确实包含TLS实施可将连接降级到SSL 3.0的方法,从而削弱了安全性。

在PCI委员会建议机构迁移从TLS 1.0到TLS 1.1或更高版本2018年6月30日前 在2018年10月,苹果,谷歌,微软和Mozilla的共同宣布,他们将弃用TLS 1.0和1.1

以上摘自维基百科https://en.wikipedia.org/wiki/Transport_Layer_Security

那么到底什么是SSL呢,大家知道TCP/IP的四层模型吧? 应用层(HTTP,TELNET)、传输层(TCP)、网络层(IP)、网络接口层(ARP),而ssl在传统的应用层和传输层之间,作为安全层存在。

其实溯其根本,我们上期讲了那么多东西,它本质上要解决的事情只有一件:保证密钥的分发过程能够足够的安全,能够防御中间人的攻击。于是在TSL中我们加入了一个权威的第三方CA。

CA认证

之前我们说到,由于公钥和私钥所有人都可以签发,导致我们服务器与客户端通信时非对称加密有被劫持可能性。所以后续人们引入了一个CA(Certificate Authority)的概念,顾名思义就是证书颁发机构。它在服务器与客户端的通信中,作为一个可信任的第三方存在(有点像公安局)。 当使用时,需要服务端先将自己的公钥提供给CA。CA使用自己的私钥加密服务端的公钥签发一张CA证书提供给服务端。

证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名。

于是客户端跟服务端在通信时就有了以下交互:

  1. 客户端:告诉服务端自己的对称加密方式及密钥
  2. 服务端:提供CA证书给客户端(原提供公钥流程)
  3. 客户端:收到CA证书后,使用自己的根证书库(主流的浏览器都会内置一个根证书库)中的根证书对CA证书进行验证。验证过程中客户端会使用根证书对CA证书进行解密,然后比对相关的摘要信息,当这些数据一致时,表示该证书合法,然后就会继续验证证书中的域名信息以及有效期等一系列信息的合法性。当验证通过时,表示该CA证书确实由合法服务器提供。
  4. 客户端:当验证通过后,客户端会生成一组随机密钥,然后使用证书中的公钥加密,提供给服务端。
  5. 服务端:获取到报文后,使用自己的私钥进行解密,获取到随机密钥。会使用私钥加密一段握手信息返回给客户端
  6. 客户端:解密并比对握手信息。如果通过,则开始真正开始数据传输。后续通信都使用随机密钥进行对称性加密来提高通信效率。

证书类型

  • CA机构证书(根证书,中间证书)
  • 服务证书

证书一共分为两中类型,CA机构证书,和服务证书。其中CA机构证书表示颁发机构所持有用于签发的证书,而服务证书则是我们实际服务与客户端之间通信的证书。

而CA机构证书又由于顶级的CA机构又只有有限的几个无法受理所有组织的证书申请。所以他们又会对一些其他的第三方机构授权,作为中间CA机构存在。而中间CA机构还可以像顶级的CA机构一样对下级的机构进行再一次的授权。 所以在这里就产生了一个证书链的概念。

证书链

这里以浏览器作为客户端为例

  1. 当浏览器接收到服务端传过来的证书时,首先就可以根据证书回溯它的上级证书,直到找到根证书。
  2. 在找到根证书后则使用它的公钥对它的下级证书的签名进行解密,当解密成功后,比对摘要信息,当摘要信息合法性验证通过,就可以使用这一级的公钥对下一级的证书进行验证。以此类推,当验证到最后的服务证书合法后。表示当次会话,整个CA证书的合法性校验就成功了。

本期的内容就讲到这里了,我是 IHAP亚楠小萌新,更多精彩内容,尽在 ihap 技术黑洞。