当前位置: 首页 > news >正文

【学习笔记】TLS/SSL握手之Records

  • TLS / SSL会话是由记录(Records)所组成,有4种records
    • Handshake
    • Alert
    • Change Cipher Spec
    • Application Data
  • Handshake和Alert Records被分为子类型(Subtypes):
    • Handshake:Client Hello
    • Handshake:Server Hello
    • Alert:Handshake Failure
    • 还有许多其他子类型...本篇不一一赘述
  • SSL会话举例
    • 下图即TLS会话 -- 一连串不同记录的交换
      • 我们知道,TLS会话的前2个消息是Client Hello和Server Hello;Client Hello是一个握手协议记录,子类型是Client Hello
      • 这些记录的目的:防止TLS会话受限于IP数据大小
      • 有时,一条记录通过单个数据包发送
      • 有时,多条记录也会通过单个数据包发送
      • 也有些时候,一条记录会通过多个数据包发送
      • 记录不受 IP 数据包(datagram)长度的限制
  • 每个记录都以记录头(Record Header)开始
    • 分为4个部分:Record Type;SSLTLS Version;Record Length;Record Payload
    • Record Type
      • Change Cipher Spec
        • 表明发送者已准备好安全通话所需的一切
          • 密码套件和会话密钥
        • 由Client和Server独立发送
          • CCS之后发送的所有内容都是加密的
        • Record Payload是二进制的0000 0001
          • Length:1 byte
      • Alert - 一方发送给另一方的信息通知
        • 内容包含2部分:
          • Severity(严重程度)
            • 01 - Waring - 会话继续
            • 02 - Fatal(致命的) - 会话终止
          • Description
            • 通知详细信息(描述是什么导致了警告)
        • Sent unencrypted
          • 除非是在Change Cipher Spec之后发送(因为每个在CCS之后发送的都是加密的)
      • Handshake
        • TLS/SSL协议信息
        • 归类为子类型(Sub-Types)
        • Sent unencrypted
          • 除了特定领域的特定子类型
      • Application Data
        • 由 SSL/TLS 保护的批量数据
          • Confidentiality → Symmetric Encryption
          • Integrity,Authentication → M.A.C
        • TLS计算出下面两者的M.A.C
          • Record Header,记录头
          • Plaintext Data,明文数据
        • TLS加密
          • Plaintext Data
          • MAC Digest
          • Padding
        • 发生的顺序非常重要,TLS执行MAC-then-Encrypt,先计算MAC,再加密
          • 解密后才能检测到密文的修改
          • No Integrity on Padding(因为Padding不包含在MAC内,意味着别人可以修改数据包里的Padding,而接收方检测不到)
          • 产生不良后果
            • Solution:Use AEAD Ciphers(其好处是同时做MAC和加密)
        • AEAD (Authentication Encryption with Associated Data)do MAC-and-Encrypt
          • AE = Integrity + Encryption
          • AD = Integrity Only
        • TLS 1.3 - all ciphers are AEAD
        • TLS 1.2 - AES-GCM,ChaCha20-Ploy1305
        • AEAD是未来

参考文献

1、网站:Practical Networking.net:Practical TLS

相关文章:

  • 智能新宠:BabyAlpha A2开启家庭机器人新时代
  • 【JAVA】synchronized 关键字的底层实现涉及得三个队列
  • Python知识点:如何使用Python进行物联网数据处理
  • JavaScript的条件语句
  • hive分区详细教程
  • 基于flask常见trick——unicode进制编码绕过
  • 【rabbitmq-server】安装使用介绍
  • Mac写入U盘文件如何跨平台使用 Mac电脑怎么把U盘文件传送到电脑 mac怎么用u盘拷贝文件
  • MMD模型一键完美导入UE5-VRM4U插件方案(一)
  • 国产sql工具何时才能出头?
  • 搜维尔科技:使用Xsens动作捕捉系统和ai训练人形机器人模仿人类运动,执行复杂任务
  • Redis:事务
  • C语言进阶【6】---结构体【1】(结构体的本质你不想了解吗?)
  • Windows电脑使用VNC远程桌面本地局域网内无公网IP树莓派5
  • Redis 性能优化的高频面试题及答案
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • CSS居中完全指南——构建CSS居中决策树
  • docker-consul
  • Fundebug计费标准解释:事件数是如何定义的?
  • in typeof instanceof ===这些运算符有什么作用
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Koa2 之文件上传下载
  • linux学习笔记
  • python3 使用 asyncio 代替线程
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Terraform入门 - 3. 变更基础设施
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue 配置sass、scss全局变量
  • 初识 webpack
  • 订阅Forge Viewer所有的事件
  • 番外篇1:在Windows环境下安装JDK
  • 力扣(LeetCode)56
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 算法-插入排序
  • ​浅谈 Linux 中的 core dump 分析方法
  • #pragma data_seg 共享数据区(转)
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C++17) optional的使用
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (void) (_x == _y)的作用
  • (分布式缓存)Redis分片集群
  • (六)软件测试分工
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (强烈推荐)移动端音视频从零到上手(上)
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 事件模型教程(二)
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET文档生成工具ADB使用图文教程
  • @hook扩展分析
  • [ C++ ] 继承
  • [1204 寻找子串位置] 解题报告
  • [20150904]exp slow.txt