https认证过程(TLS认证过程)

最近在准备春招,刚好看到https,网上搜了一圈没看到满意的,于是打算自己整理一下,以下内容来源于《计算机网络(第8版)(谢希仁)》加上了一些自己的拙见

目前的HTTPS是使用http+tls的,所以直接了解tls的认证过程即可

曾经广泛使用的运输层安全协议有两个

(1)安全套接字层 SSL (Secure Socket Laver)。

(2)运输层安全 TLS (Transport Layer Security)。

​ SSL是TLS的前身,TLS在SSL基础上改进了很多,但是现在还经常能够看到把SSL/TLS视为TLS的同义词。而现在旧协议SSL被更新为新协议TLS。

在这里插入图片描述

​ 应用层使用协议TLS最多的就是HTTP,但并非仅限于HTTP。因为协议TLS是对TCP加密,因此任何在TCP之上运行的应用程序都可以使用协议TLS。例如,用于IMAP邮件存取的鉴别和数据加密也可以使用TLS。TLS提供了一个简单的带有套接字的应用程序接口API,这和TCP的API是相似的。

协议 TLS 具有双向鉴别的功能。但大多数情况下使用的是单向鉴别,即客户端(浏览器)需要鉴別服务器。也就是说,浏览器 A 要确信即将访问的网站服务器 B 是安全和可信的。这必领要有两个前提。首先,服务器 B 必须能够证明本身是安全和可信的。因此服务器B 需要有一个证书来证明自己。现在我们假定服务器 B 已经持有了有效的 CA(Certificate Authority) 证书。这正是运输层安全协议 TLS 的基石。其次,浏览器 A 应具有一些手段来证明服务器 B 是安全和可信的。下面就来讨论这一点。

​ 生产电脑操作系统的厂商为了方便用户,把当前获得公众信任的许多主流认证中心CA的根证书,都已内置在其操作系统中。这些根证书上都有认证中心 CA 的公钥PKca,而且根证书都用 CA 的私钥SKca进行了自签名(防止伪造)。用户为了验证要访问的服务器是否安全和可信,只要打开电脑中的浏览器(操作系统自带的或用户自己装上的),就可查到操作系统收藏的某个根认证中心的根 CA 证书,并可以利用证书上的公钥PKca对B的证书进行验证。若服务器 B 的证书是证书链上的某个中间 CA 签发的,那么浏览器 A 也可用类似方法验证B的证书的真实性。

​ 由于浏览器与服务器的通信方式就是以前讲过的 “客户-服务器方式”,因此下面就用客户代表浏览器。

​ 如图 7-21 所示,在客户与服务器双方己经建立了TCP 连接后,就可开始执行协议 TLS。根据 RFC 8446,这里主要有两个阶段,即握手阶段会话阶段。在握手阶段,TLS 使用其中的握手协议,而在会话阶段,TLS 使用其中的记录协议。下面讨论协议TLS 的要点。

在这里插入图片描述

​ 我们先介绍协议TLS 的握手阶段。握手阶段要验证服务器是安全可信的,同时生成在后面的会话阶段所需的共享密钥,以保证双方交换的数据的私密性和完整性。这里要提醒读者,在刚开始执行协议 TLS时,通信双方的信道是不安全的。因此要弄清:(1)双方怎样通过不安全的信道得到会话时所需的共享密钥。这里没有采用密钥分发中心KDC来分配密钥,而是采用自己生成共享密钥的方法。(2) 用什么方法保证所传送数据的机密性与完整性

(PS:以下加粗的数字代表上图的步骤数)

​ (1)协商加密算法 1客户 A 向服务器B发送自己选定的加密算法(包括密钥交换算法)。2服务器 B从中确认自己所支持的算法,同时把自己的 CA 数字证书发送给 A。这里要说明一下,从TLS 1.0更新到 1.1和1.2版本时,每一次更新都增加了当时认为是更加安全可靠的加密算法。为了协议的向后兼容,对老版本中的不太安全的数十种算法也都保留下来了。这就造成协商过程非常耗时,需要花费2倍RTT 的时间(通常记为 2-RTT)。因此最新的 TLS 1.3 版本把陈旧的很多种算法统统取消(例如 MDS, SHA-1,DES, 3DES 等),只留下几种最安全的算法。客户不是把自己所有的加密算法都告诉服务器,供服务器来挑选,而是猜测服务器可能愿意使用什么加密算法,把自己选定的加密算法直接发送给服务器,让服务器来确认。这就把 “协商”时间缩短为 1-RTT

​ (2)服务器鉴别 3客户A用数字证书中CA 的公钥对数字证书进行验证鉴别。

以下两步涉及非对称加密

​ (3)生成主密钥 4 客户 A 按照双方确定的密钥交换算法生成主密钥 MS (Master Secret)。5客户A用B的公钥PKB对主密钥 MS加密,得出加密的主密钥PKB(MS),发送给服务器B。请注意,在有关TLS 的文档中,密钥一词使用的是Secret,而不是Key。

​ (4)服务器B用自己的私钥把主密钥解密出来:SKB(PKa(MS))=MS。这样,客户A和服务器B都拥有了为后面的数据传输使用的共同的主密钥 MS。

以上步骤鉴别了服务器B的身份并且使得A和B获得了安全通信所使用的密钥(A和B所持有的通信密钥是一样的,只不过A使用非对称加密算法将密钥安全传输给了B,注意区分用来加密通信密钥的非对称密钥和通信密钥)

(5)为了使双方的通信更加安全,客户A和服务器B最好使用不同的密钥。于是主密钥被分割成4个不同的密钥,这就是图 7-21 中的78:生成会话密钥。在这以后,每一方都拥有这样4个密钥(请注意,这些都是对称密钥,即加密和解密用的是同一个密钥):

  • 客户A发送数据时使用的会话密钥KA
  • 客户A发送数据时使用的 MAC 密钥 MA
  • 服务器B发送数据时使用的会话密钥KB
  • 服务器B发送数据时使用的 MAC 密钥 MB

会话密钥不使用非对称密钥,因为对称密钥的运行速度快得多(相差了3个数量级)。

下面就可以利用生成的通信密钥进行通信了,具体细节不再阐述,可以参考《计算机网络 第八版》

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值