TLS加密通信,

开始使用协商的秘钥进行加密通信

1、服务器也可以要求验证客户端,即实现双向的验证,

2、会话缓存握手过程,为了建立握手的速度,减少协议带来的性能方面的降低和资源方面的消耗,TLS协议有两类会话缓存机制,分别是会话session ID 和会话记录session titcket 。

Session ID有服务器端支持,协议中的标准字段,因此基本的所有服务都支持,服务区段保存会话 ID 以及协商的通信信息, Nginx中的IM内存约保存4000个session ID机器相关的信息,占服务器资源较多。 另一种就是Session ticket需要服务器和客户端都支持,术语一个扩展字段,将协商的通信信息加密之后发送给客户端保存,秘钥只有服务器知道,占用服务器的资源最少。这两者对比,主要是保存协商信息位置的不同,类似http中session与从cookie。二者都存在的情况下,(nginx实现)优先使用session_ticket

握手过程如下:

(1)会话标识SessionID

如果客户端和服务器之间之前建立了连接,服务器会在握手成功之后返回SessionID ,并且保存默认的参数在服务器中

如果客户端再次需要和该服务器建立连接,则在Client_hello中 session_id中携带记录信息,发送给服务器。

服务器根据收到的session Id 检索缓存的记录,如果没有检索到缓存过期,则按照正常的握手进程进行。

如果检索到对应点缓存激励,则返回change_cipher_spec与 encrypted_handshake_message信息,两个信息作用类似,encrypted_handshack_messag是到当前通信参数与 master_sercet的hash值。但是如果客户能够验证通过服务器加密数据,则客户端同样发送change_spec和encrypted_handshake_message信息。服务器验证数据通过,则握手建立连接成功,开始进行征程的数据加密通信。

(2)会话记录session_ticket

如果客户端和服务器支架之前建立可连接,服务器会在new_session_ticket数据中携带加密的session_ticket信息,客户端保存。

如果客户端再次需要和服务器建立连接,则在client_hello 中扩展字段session_ticket中携带加密信息,一起发送给服务器,服务器解密session_ticket数据,如果解密失败按照正常的握手进行。

如果解密成功,session-ticket则返回 change_cipher_spec和encrypted_handshake_message信息,两个信息作用于session Id中类似。

如果客户端能工验证通过服务器加密数据,则客户端同样发送change_cipher_spec和encrypted_handshake_message信息。

服务器验证数据通过,则我哦手建立成功,开始进行正常的数据加密通信。

3、重新连接

重新建立连接,就是放弃之前建立的连接,(TLS连接) 从新进行身份认证和秘钥写上个的过程,特点是不需要断开当前的数据传输就可以重新身份认证,更新秘钥和算法,因此服务端存储和缓存的信息都可以保存,

服务器端重新建立一般情况是客户端访问受保护的数据发生,基本过程如下:

客户端和服务端建立了有效TLS连接 ,并开始通信。

客户端访问受保护的信息

服务器端返回helo-request信息

客户端收到hello_request 信息之后发送client-helo 信息,开始建立连接

(4)秘钥计算

涉及的参数 random client   random_server  Pre_master  Master sercet  key material 计算秘钥时,服务器和客户端都具体有这些基本的信息 ,计算流程如下:

客户端使用RSA或者Diffe-Hellman等加密算法生成Pre-Master

Pre-Master结合Random sercet 和Random-server 两个随机数进行迭代生成 ker material 下面是详细的内容解释:

PreMaster sercet 前面两个字节是TLS的版本号,这是一个比较重要的用来核对握手数据的版本号,因为在 Client hello 阶段,客户端会发送一份加密套件列表和当前支持的TLS协议的版本号给服务端  ,而且使用的是明文传输,如果握手数据包被破解之后,攻击者很可能篡改数据包,选择一个安全性较低的加密套件和版本给服务端,从而对数据进行破解,所以服务端要对密文中解密出来的对 PerMaster 版本号跟之前的Client hello阶段版本号进行对比, 如果版本号变低,则说明数据被篡改,则立即日内至发送任何消息。

不管是客户端还是服务器端都要使用随机数,这样生成的随机秘钥每次都会不一样,对于RAS秘钥来说,pre-master-key 本身就是一个随机数,再加上helo消息中的随随机数三个随机数通过一个秘钥导出器最终生成一个对称秘钥。一个伪随机可能不完全是伪随机,但是三个伪随机加起来可能十分接近伪随机数,

TLS详解的更多相关文章

  1. SSL/TLS 原理详解

    本文大部分整理自网络,相关文章请见文后参考. SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰.正文开始. 1. SSL/TLS概览 1 ...

  2. HTTPS 传输优化详解之动态 TLS Record Size

    笔者在过去分析了诸多可以减少 HTTPS 传输延迟的方法,如分布式 Session 的复用: 启用 HSTS,客户端默认开启 HTTPS 跳转:采用 HTTP/2 传输协议:使用 ChaCha20-P ...

  3. SSL/TLS 握手过程详解

    在现代社会,互联网已经渗透到人们日常生活的方方面面,娱乐.经济.社会关系等都离不开互联网的帮助.在这个背景下,互联网安全就显得十分重要,没有提供足够的安全保障,人们是不会如此依赖它的.幸运的是,在大牛 ...

  4. [No0000126]SSL/TLS原理详解与WCF中的WS-Security

    SSL/TLS作为一种互联网安全加密技术 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket La ...

  5. HTTPS详解二:SSL / TLS 工作原理和详细握手过程

    HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...

  6. 开源项目SMSS发开指南(五)——SSL/TLS加密通信详解(下)

    继上一篇介绍如何在多种语言之间使用SSL加密通信,今天我们关注Java端的证书创建以及支持SSL的NioSocket服务端开发.完整源码 一.创建keystore文件 网上大多数是通过jdk命令创建秘 ...

  7. SSL/TLS协议详解(下)——TLS握手协议

    本文转载自SSL/TLS协议详解(下)--TLS握手协议 导语 在博客系列的第2部分中,对证书颁发机构进行了深入的讨论.在这篇文章中,将会探索整个SSL/TLS握手过程,在此之前,先简述下最后这块内容 ...

  8. SSL/TLS协议详解(中)——证书颁发机构

    本文转载自SSL/TLS协议详解(中)--证书颁发机构 导语 上一篇中,我们讨论了关于Diffie Hellman算法的SSL/TLS密钥交换.我们最终认为需要第三方来验证服务器的真实性,并提出了证书 ...

  9. SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法

    本文转载自SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法 导语 作为一名安全爱好者,我一向很喜欢SSL(目前是TLS)的运作原理.理解这个复杂协议的基本原理花了我好几天的时间,但只要 ...

随机推荐

  1. Jenkins+Git+Maven搭建自动化构建平台

    http://blog.csdn.net/xlgen157387/article/details/50353317

  2. 分别使用POI和JXL导出数据到Excel

    1.使用POI 引入jar包 <!-- poi HSSF is our port of the Microsoft Excel 97(-2007) file format (BIFF8) to ...

  3. Flask 构建微电影视频网站(六)

    会员模块实现 会员注册 class RegistForm(FlaskForm): name = StringField( label="昵称", validators=[ Data ...

  4. MySql自动备份shell

    MySql黑屏备份是每个运维工程师必备的技能,以下是MySQL自动备份脚本: #/bin/bash#This is mysql backup shell on 2019/4/28 BAKUP_DIR= ...

  5. Outlook 2013 日历/任务本地备份与还原

    1.日历: 备份日历:切换到日历项,按如下步骤备份.文件 --> 保存日历 --> 其它选项: 日期范围:指定日期(开始日期:2018/1/1,结束日期:2018/12/31) 详细信息: ...

  6. [SDOI2017]遗忘的集合

    [SDOI2017]遗忘的集合 综合了很多套路的题 一看就是完全背包 生成函数! 转化为连乘积形式 Pi....=F 求Ln! 降次才可以解方程 发现方程是: f[i]=∑t|i : bool(t)* ...

  7. 【洛谷P4555】最长双回文串

    题目大意:给定一个长度为 N 的字符串 S,求 S 的最长双回文子串的长度,双回文子串定义为是 S 的一个子串,可以分成两个互不相交的回文子串. 题解:利用回文自动机 len 数组的性质,即:len ...

  8. MFC:定时器

    1. 定时器设置 API:CWnd::SetTimer()     函数原型:UINT SetTimer(UINT nIDEvent, UINT nElapse, void (CALLBACK EXP ...

  9. iOS开发,这样写简历才能让大厂面试官看重你!

    前言: 对于职场来说,简历就如同门面.若是没想好,出了差错,耽误些时日倒不打紧,便是这简历入不了HR的眼,费力伤神还不能觅得好去处,这数年来勤学苦练的大好光阴,岂不辜负? 简历,简而有力.是对一个人工 ...

  10. textCNN原理

    一.TextCnn的结构 1. 嵌入层(embedding layer) textcnn使用预先训练好的词向量作embedding layer.对于数据集里的所有词,因为每个词都可以表征成一个向量,因 ...