SSL和TLS-TLS 介绍

2023-05-16

SSL和TLS-TLS 介绍

  • TLS PRF
  • Generation of Keying Material

TLS协议在结构上与SSL协议相同。是一个客户端/服务器协议,运行在可靠的传输层协议之上,比如TCP。
和SSL一样,也由两层组成:

  • 底层,是TLS record protocol fragments,可选压缩、加密保护高层协议数据。相应的数据结构叫TLSPlaintext、TLSCompressed和TLSCiphertext。和SSL一样,这些数据结构都包含一个字节的type属性,两个字节的version属性,另外两个字节的length属性,和可变长(最大16384)的fragment属性。type、version和length是TLS记录头,fragment是TLS记录的载荷。
  • 高层,TLS协议包含下面四个协议:
    • TLS change cipher spec protocol (20)
    • TLS alert protocol (21)
    • TLS handshake protocol (22)
    • TLS application data protocol (23)
      每个协议由唯一的内容type值标识。TLS record支持扩展新类型,比如,Heartbeat扩展(type值是24)。内容type是写到TLS记录头的type属性的值。每个协议可以携带同一协议的很多消息。

TLS协议也采用session和连接,多个连接可以公用一个session。也同时使用四个连接状态:current写/读和pending写/读状态。这意味着所有的TLS记录在current状态处理,在执行TLS握手协议期间协商和设置pending状态的安全参数和元素。在连接级别,SSL和TLS是不同的:TLS协议区分安全参数和状态元素,而SSL协议不做这种区分只考虑状态元素。

TLS连接的安全参数

参数描述
connection end实体在连接中是客户端还是服务器
bulk encryption algorithm块数据加密算法(包括key大小,key有多secret,块加密还是流加密,如果是块加密还有块大小)
MAC algorithm消息认证算法
compression algorithm数据压缩算法
master secret客户端和服务器共享的48字节的secret
client random客户端提供的32字节值
server random服务器提供的32字节值

TLS连接的状态元素

参数描述
compression state压缩算法的当前状态
cipher state加密算法的当前状态
MAC secret连接的MAC secret,
sequence number特定连接状态下的记录发送的64位的顺序号(初始是0)

SSL和TLS的主要不同是实际生成key材料的的方式。SSL使用ad hoc的方式生成master secret和key block(使用这些生成key材料)。
TLS 1.0使用另一种构造办法,叫TLS PRF。1.0、1.1版本的TLS PRF和1.2、1.3版本的TLS PRF也有一些不同。

TLS PRF

Overview of the TLS PRF

函数的输入是secret、seed和label(有时候叫identifying label),生成任意的长的bit sequence。为了让TLS PRF尽可能安全,TLS PRF组合两种加密hash函数MD5和SHA-1。这样,PRF的结果是安全的,只要底层的两个hash函数有一个还是安全的。TLS版本1.0和1.1组合使用MD5和SHA-1,TLS版本1.2和1.3使用的hash函数是更强大的SHA-256。
TLS PRF基于一个auxiliary数据扩展函数,叫P_hash(secret,seed)。这个函数使用一个加密hash函数,把secret和seed扩展成一个任意长的输出值。函数是这样定义的:

P_hash(secret,seed) = HMAC_hash(secret,A(1) + seed) +
        HMAC_hash(secret,A(2) + seed) +
        HMAC_hash(secret,A(3) + seed) +
        ...

其中,+表示字符串连接,A是一个递归定义的函数(i>0):

A(0) = seed
A(i) = HMAC_hash(secret,A(i-1))

The A-function of the TLS PRF

根据需要的输出位长度,这个扩展函数可以执行任意多次。它是TLS PRF的主要成分。
这样,我们已经解释了TLS 1.0和1.1的TLS PRF。secret被分成两半(S1和S2)。输出按位异或。

PRF(secret,label,seed) =
    P_MD5(S1,label + seed) XOR P_SHA-1(S2,label + seed)

MD5的输出是16位的,SHA-1的输出是20位的,所以,扩展函数迭代次数不一样。比如,要生成80位长的输出,P_MD5执行5次,P_SHA-1执行4次。
TLS 1.2和1.3版本的TLS PRF采用相同的扩展函数,而hash函数是SHA-256。
The internal structure of the TLS PRF (as used for TLS 1.0 and TLS 1.1)

Generation of Keying Material

使用TLS PRF生成一个TLS连接需要的key材料。首先,使用一个变长的pre master secret,它是key交换算法的输出(和TLS session状态的一部分),生成一个48字节的master secret(然后用它代表TLS连接状态)。是这样构造的:

master_secret =
        PRF(pre_master_secret,"master secret",
                client_random + server_random)

其中,pre_master_secret是secret,client_random和server_random是seed,"master secret"是label。
生成了master secret,就把它当作生成TLS连接所需的各个key的熵源。这些key取自适当大小的key block,它的构造如下:

key_block =
        PRF(master_secret,"key expansion",
                server_random + client_random)

其中,master_secret是secret,client_random和server_random是seed,"key expansion"是label。
key block以适当的大小被分成下面的值:client_write_MAC_secret、server_write_MAC_secret、client_write_key、server_write_key、client_write_IV、server_write_IV。
key block里的其他材料被丢弃。比如,使用CBC模式下的3DES和SHA-1的cipher suite,需要2 · 192 = 384位的两个3DES keys,2 · 64 = 128位的两个IVs,2 · 160 = 320位的两个MAC keys。总共832位。
不同的cipher suites,需要的key block的长度是不一样的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSL和TLS-TLS 介绍 的相关文章

随机推荐

  • Week12-必做题2(BFS搜索三维迷宫)

    问题描述 zjm被困在一个三维的空间中 现在要寻找最短路径逃生 xff01 空间由立方体单位构成 zjm每次向上下前后左右移动一个单位需要一分钟 xff0c 且zjm不能对角线移动 空间的四周封闭 zjm的目标是走到空间的出口 是否存在逃出
  • TT的奖励(动态规划)

    问题描述 在大家不辞辛劳的帮助下 xff0c TT 顺利地完成了所有的神秘任务 神秘人很高兴 xff0c 决定给 TT 一个奖励 xff0c 即白日做梦之捡猫咪游戏 捡猫咪游戏是这样的 xff0c 猫咪从天上往下掉 xff0c 且只会掉在
  • Q老师与十字叉

    问题描述 Q老师 得到一张 n 行 m 列的网格图 xff0c 上面每一个格子要么是白色的要么是黑色的 Q老师认为失去了 十字叉 的网格图莫得灵魂 一个十字叉可以用一个数对 x 和 y 来表示 其中 1 x n 并且 1 y m 满足在第
  • Q老师的考验(矩阵快速幂)

    问题描述 Q老师 对数列有一种非同一般的热爱 xff0c 尤其是优美的斐波那契数列 这一天 xff0c Q老师 为了增强大家对于斐波那契数列的理解 xff0c 决定在斐波那契的基础上创建一个新的数列 f x 来考一考大家 数列 f x 定义
  • ZJM 与纸条(KMP算法)

    问题描述 ZJM 的女朋友是一个书法家 xff0c 喜欢写一些好看的英文书法 有一天 ZJM 拿到了她写的纸条 xff0c 纸条上的字暗示了 ZJM 的女朋友 想给 ZJM 送生日礼物 ZJM 想知道自己收到的礼物是不是就是她送的 xff0
  • TT数鸭子

    问题描述 这一天 xff0c TT因为疫情在家憋得难受 xff0c 在云吸猫一小时后 xff0c TT决定去附近自家的山头游玩 TT来到一个小湖边 xff0c 看到了许多在湖边嬉戏的鸭子 xff0c TT顿生羡慕 此时他发现每一只鸭子都不一
  • Safari下载东西太慢怎么办?

    因为latex环境出了一点问题 xff0c 找半天都没找到解决方案 xff0c 所以决定卸载重装 打开MaxTex官网后 xff0c 下载 xff1a 这个时候 xff0c 我们需要打开safari的偏好设置 选择最下面的 xff1a 在菜
  • 为什么等价无穷小不能在加减法中使用

    无论是课堂上还是教科书中 xff0c 都会告诉我们 xff0c 等价无穷小替换只能在乘除法中使用 xff0c 不能在加减法中使用 但是大家会发现 xff0c 有的时候在加减法中使用等价无穷小是可以得到正确结果的 xff0c 那是否在加减法中
  • B Spline(B样条曲线)

    文章目录 说明B样条曲线代码 说明 在阅读此博客前 xff0c 请访问2018级山东大学计算机学院图形学实验汇总 原笔记通过latex编写 xff0c csdn只支持latex部分功能 xff0c 所以下面主要是将pdf截屏上传 部分内容参
  • 从几何意义上理解逆矩阵与伴随矩阵的特征值与特征向量

    文章目录 矩阵 行列式 逆矩阵 伴随矩阵的几何意义矩阵逆矩阵行列式伴随矩阵 特征值与特征向量的几何意义逆矩阵与伴随矩阵的特征值和特征向量后记 矩阵 行列式 逆矩阵 伴随矩阵的几何意义 矩阵 首先要理解矩阵的作用 xff0c 矩阵是一种空间变
  • 树莓派——win10远程登录以及蓝屏问题(转载)

    https blog csdn net yolanda salvatore article details 106439903
  • 从数学上推导伴随矩阵特征值

    矩阵A的特征值非0的情况 设矩阵A的特征值为 lambda xff0c 则有 A x 61
  • [leetcode] 863二叉树中所有距离为K的结点

    问题描述 给定一个二叉树 xff08 具有根结点 root xff09 xff0c 一个目标结点 target xff0c 和一个整数值 K 返回到目标结点 target 距离为 K 的所有结点的值的列表 答案可以以任何顺序返回 示例 输入
  • “操作无法完成,因为其中的文件或文件夹一再另一程序打开”解决方法

    windows系统中 xff0c 有时时候我们想要修改某个文件 xff0c 就出现出现如下提示 xff1a 操作无法完成 xff0c 因为其中的文件或文件夹已在另一程序打开 请关闭该文件或文件夹 xff0c 然后重试 出现这个上面提示的原因
  • 谷歌浏览器的本地收藏夹在什么位置?

    谷歌浏览器的本地收藏夹在什么位置 xff1f 为什么写这个文章呢 xff1f 主要是因为自己平常学习的时候会将很多自己想要保存的网页或者课程网址放到自己谷歌浏览器的收藏夹下 但是怕以后要重装系统的时候将之前的本地谷歌收藏夹删除 所以自己特意
  • Android Studio 出现 attribute android:layout_width is not allowed here等问题

    这种问题一般是Gradle的问题 xff0c 因为被墙所以同步失败 xff0c 完美解决方案就是科学上网 xff0c 之后在File Settings Appearance amp Behavior System Settings HTTP
  • 关于在Linux上创建快捷方式时.desktop文件无图标且双击无法启动程序的解决办法

    如果你没有执行以下操作 xff0c 你会发现你打开的只是文本编辑器 右键 desktop文件 xff0c 选择Allow Launching Then the problem is solved
  • error: Failed dependencies libcrypto.so.10()(64bit) is needed, libssl.so.10()(64bit) is needed解决办法

    前提 xff1a 我在CentOS 8上安装Percona Server for MySQL 8 0 bundle中的percona server shared compat 8 0 23 14 1 el8 x86 64 rpm包时 出现问
  • Django使用prefech_related结合rest_framework的serializers实现序列化嵌套

    Django使用prefech related结合rest framework的serializers实现序列化嵌套 前言ModelsSerializersViews数据库结果 前言 由于没有使用Django的templates xff0c
  • SSL和TLS-TLS 介绍

    SSL和TLS TLS 介绍 TLS PRFGeneration of Keying Material TLS协议在结构上与SSL协议相同 是一个客户端 服务器协议 xff0c 运行在可靠的传输层协议之上 xff0c 比如TCP 和SSL一