TLS协议分析 (一) 设计目标及历史

解密TLS协议全记录之利用wireshark解密 引言 为什么会突然有使用wireshark学习TLS的想法,主要是为了在nike官网抢限量球鞋,但是发现路子好像走歪了,唯一的价值好像就是多了这么一篇博客,查阅了很多有根据,没根据的博客内容,总结出这篇自以为还算全面,结实的文章。如有问题,欢迎讨论交流。 学习网络协议之前,必须先找对最基本的协议学习网站, rfc协议官网 https://www.rfc-editor.org ietf协议官网 https://www.ietf.org/ 这个网站我经常搜索不出比较理想的文件,标题不直观,杂七杂八的会议记录 阅读详情

最近发现密码学很有意思,刚好还和工作有点关系,就研究了一下,本文是其中一部分笔记和一些思考。

密码学理论艰深,概念繁多,本人知识水平有限,错误难免,如果您发现错误,请务必指出,非常感谢!

本文目标:

  1. 学习鉴赏TLS协议的设计,透彻理解原理和重点细节
  2. 跟进一下密码学应用领域的历史和进展
  3. 整理现代加密通信协议设计的一般思路

本文有门槛,读者需要对现代密码学有清晰而系统的理解,本文最后的参考文献里有一些很不错的学习资料。

目录 :

TLS协议分析 与 现代加密通信协议设计
一 . TLS协议的设计目标:
1. 密码学的方法论
2. TLS的设计目标
3. TLS的历史
二. TLS协议的原理
1. 自顶向下,分层抽象
2. TLS CipherSuite
3. 协议分层
4. record 协议
4.1. SecurityParameters
4.2. record层分段
4.3. record层的密码学保护
4.4. record层的密码学保护--MAC
4.5. record层的密码学保护--stream cipher
4.6. record层的密码学保护-- CBC block cipher
4.7. record层的密码学保护-- AEAD cipher
4.8. record层的密码学保护-- Key扩展
5. handshake 协议
5.1.handshake的总体流程
5.2. handshake 协议外层结构
5.3. handshake -- ClientHello,ServerHello,HelloRequest
5.4. handshake -- Server Certificate
5.5. handshake -- Server Key Exchange
5.6. handshake -- Certificate Request
5.7. handshake -- Server Hello Done
5.8. handshake -- Client Certificate
5.9. handshake -- Client Key Exchange
5.9.1. RSA 加密的 Premaster Secret 消息
5.9.2. 客户端 Diffie-Hellman 公钥
5.9.3 客户端 EC Diffie-Hellman 公钥
5.10. handshake -- Cerificate Verify
5.11. handshake -- Finished
5.12. handshake -- NewSessionTicket
6. ChangeCipherSpec 协议
7. Alert 协议
8. application data协议
9. TLS协议的安全分析
9.1. 认证和密钥交换 的安全性
9.2. 版本回退攻击
9.3. 针对握手过程的攻击
9.4. 针对 Resuming Sessions 的攻击
9.5. 针对应用数据保护的攻击
9.6. 显式 IV的安全性
9.7. 加密和MAC组合模式的安全性
9.8. DOS 攻击下的安全性
9.9.Session Ticket 的安全分析
10. TLS扩展:
11. TLS的配套:PKI体系
11.1. X.509 证书
11.2.现有PKI体系暴露出的问题
11. TLS协议历史上出现过的漏洞,密码学常见陷阱
11.1. TLS的漏洞
12.1. TLS的漏洞
12.2. 密码学常见陷阱
13. 下一代TLS: TLS 1.3
三. TLS协议的代码实现
四. TLS协议的部署与优化
五. 更多的加密通信协议case:QUIC,iMessage,TextSecure, otr, ios HomeKit,libsodium
1. QUIC
2. apple ios iMessage
3. apple ios HomeKit
4. TextSecure
5. otr 协议
6. libsodium/NaCL 等
六. TLS协议给我们的启发 -- 现代加密通信协议设计
七. 附录:密码学基础概念
八. 参考文献:
1. TLS/SSL 相关RFC及标准
2. 协议分析文章
3. 实际部署调优相关
4. 密码学相关
5. 相关开源项目

一 . TLS协议的设计目标:

1. 密码学的方法论

密码学和软件开发不同,软件开发是工程,是手艺,造轮子是写代码的一大乐趣。软件开发中常常有各种权衡,一般难有明确的对错,一般还用建筑来比拟软件的结构,设计的优雅被高度重视。

密码学就不一样了。[密码学是科学,不是工程] 见 http://www.daemonology.net/blog/2013-06-17-crypto-science-not-engineering.html ,有严格的技术规范,严禁没有经过学术训练者随意创造。要求严谨的理论建模,严密的数学证明。很少有需要权衡的地方,正确就是正确,错误就是错误。又由于密码学过去在军事上的重要价值,各国政府一直投入大量人力物力财力,不断深入强化己方的算法,破解对手的算法,所以密码学就是一种残酷的军备竞赛。

  • 密码学有很多的陷阱(下文会介绍几个),设计使用密码学的协议或者软件,是极其容易出错,高风险的专业活动,单纯的码农背景是做不了的。本着不作死就不会死 的伟大理念,首先推荐读者尽可能使用 TLS 这种标准化,开源,广泛使用,久经考验,高性能的协议。本文也只是整理一点粗浅的科普常识,读完这篇文章,并不能使读者具有设计足够安全的密码学协议的能力。

  • 密码学经过几十年的军备竞赛式发展,已经发展出大量巧妙而狡猾的攻击方法,我们使用的算法,都是在所有已知的攻击方法下都无法攻破的,由于我们大多数码农并没有精力去了解最前沿的攻击方法,所以我们其实并没有能力去评价一个加密算法,更没有能力自己发明算法。所以最好跟着业界的主流技术走,肯定不会有大错。

  • 现代密码学近20年进展迅猛,现在搞现代密码学研究的主要都是数学家,在这个领域里面以一个码农的知识背景,已经很难理解最前沿的东西,连正确使用加密算法都是要谨慎谨慎再谨慎的。一个码农,能了解密码学基本概念,跟进密码学的最新应用趋势,并正确配置部署TLS这种协议,就很不错了。

  • 密码学算法很难被正确地使用,各种细节非常容易出错。

    例如:

    • 1.大多数码农都听说过aes,可是大多数都不了解细节,比如:aes应该用哪种模式?应该用哪种padding?IV/nonce应该取多少bit?IV/nonce应该怎么生成? key size应该选多大?key应该怎么生成?应不应该加MAC?MAC算法的选择?MAC和加密应该怎么组合?
    • 2.大多数知道RSA的码农分不清 RSASSA-PKCS1-v1_5 ,RSAES-OAEP 和 RSASSA-PSS
    • 3.更多错误参见 [这个stackoverflow问答,强烈推荐仔细阅读] 见http://security.stackexchange.com/questions/2202/lessons-learned-and-misconceptions-regarding-encryption-and-cryptology
  • 密码学算法很难被正确地实现(代码实现过程中会引入很多漏洞,比如HeartBleed,比如各种随机数生成器的bug,时间侧通道攻击漏洞)

  • 不能一知半解,绝对不能在一知半解的情况下就动手设计密码学协议。犹如“盲人骑瞎马,夜班临深池”。

  • 不能闭门造车,密码学相关协议和代码一定要开源,采用大集市式的开发,接受peer review,被越多的人review,出漏洞的可能越小(所以应该尽可能使用开源组件)

2. TLS的设计目标

TLS的设计目标是构建一个安全传输层(Transport Layer Security ),在基于连接的传输层(如tcp)之上提供:

  1. 密码学安全
    (1). 保密, message privacy (保密通过加密encryption实现,所有信息都加密传输,第三方无法窃听 )
    (2). 完整性, message integrity( 通过MAC校验机制,一旦被篡改,通信双方会立刻发现 )
    (3). 认证, mutual authentication (双方认证,双方都可以配备证书,防止身份被冒充 )
  2. 互操作,通用性 ( 根据公开的rfc,任何符合rfc的软件实现都可以互操作,不受限于任何专利技术)
  3. 可扩展性 ( 通过扩展机制 tls_ext可以添加功能,有大量的新功能,都是通过扩展添加的)
  4. 高效率 (通过session cache,恰当部署cache之后,tls的效率很高)

请认准这几个目标,在后文中,会逐一实现。

3. TLS的历史

  • 1995: SSL 2.0, 由Netscape提出,这个版本由于设计缺陷,并不安全,很快被发现有严重漏洞,已经废弃。
  • 1996: SSL 3.0. 写成RFC,开始流行。目前(2015年)已经不安全,必须禁用。
  • 1999: TLS 1.0. 互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版.
  • 2006: TLS 1.1. 作为 RFC 4346 发布。主要fix了CBC模式相关的如BEAST攻击等漏洞
  • 2008: TLS 1.2. 作为RFC 5246 发布 。增进安全性。目前(2015年)应该主要部署的版本,请确保你使用的是这个版本
  • 2015之后: TLS 1.3,还在制订中,支持0-rtt,大幅增进安全性,砍掉了aead之外的加密方式

由于SSL的2个版本都已经退出历史舞台了,所以本文后面只用TLS这个名字。
读者应该明白,一般所说的SSL就是TLS。

余下内容请见后续文章。

​ 本文转自微信后台团队,如有侵犯,请联系我们立即删除

OpenIMgithub开源地址:

https://github.com/OpenIMSDK/Open-IM-Server

OpenIM官网 : https://www.rentsoft.cn

**OpenIM官方论坛: **https://forum.rentsoft.cn/

更多技术文章:

开源OpenIM:高性能、可伸缩、易扩展的即时通讯架构
https://forum.rentsoft.cn/thread/3

【OpenIM原创】简单轻松入门 一文讲解WebRTC实现1对1音视频通信原理
https://forum.rentsoft.cn/thread/4

【OpenIM原创】开源OpenIM:轻量、高效、实时、可靠、低成本的消息模型
https://forum.rentsoft.cn/thread/1

TLS协议分析------ TLS协议分析 2015-09-06 本文目标: 学习鉴赏TLS协议的设计,透彻理解原理和重点细节 跟进一下密码学应用领域的历史和进展 整理现代加密通信协议设计的一般思路 本文有门槛,读者需要对现代密码学有清晰而系统的理解,建议花精力补足背景知识再读。本文最后的参考文献里有一些很不错的学习资料。 目录 : 1 2 3 4 5 6 7 阅读详情

相关推荐

TLS握手流程分析

客户端发送:用于初始化会话消息,该消息主要包含如下信息:: 客户端发送它所支持的最高 SSL/TLS 版本;:一个 32 字节的客户端随机数,该随机数被服务端生成通信用的对称密钥(master secret);:session ID 被客户端用于恢复之前的会话: 客户端发送它所支持的加密套件列表服务端发送:服务端发送双方所支持的最高的 SSL/TLS 版本;:一个 32 字节的服务端随机数,被客户端用于生成通信用的对称密钥(master secret);:用于会话恢复;

weixin_43894455的博客 4341

TLS/SSL(十) session缓存、ticket 票据、TLS 1.3的0-RTT

0-RTT 面临的重放攻击。session 缓存。

wzj_110的博客 1706

HTTP协议27丨更好更快的握手:TLS1.3特性解析

上一讲中我讲了 TLS1.2 的握手过程,你是不是已经完全掌握了呢?不过 TLS1.2 已经是 10 年前(2008 年)的“老”协议了,虽然历经考验,但毕竟“岁月不饶人”,在安全、性能等方面已经跟不上如今的互联网了。于是经过四年、近 30 个草案的反复打磨,TLS1.3 终于在去年(2018 年)“粉墨登场”,再次确立了信息安全领域的新标准。。

qq_53280238的博客 1220

计算机网络基础知识(七)—— 什么是HTTPS协议?你听我“瞎掰”

计算机网络基础小白入门必看文章(七),主要记录了计算机网络基础知识中的HTTPS协议的基本概念,工作原理,工作流程,SSL/TLS协议,以及加密算法等。如果对你有所帮助的话,请给我一个三连哦,谢谢各位大佬的观看

再努力一点点就好了 4273

SolidWorks软件安装管理程序在创建该注册表项时遇到错误: UNKNOWN\Components的解决方案

SolidWorks软件安装管理程序在创建该注册表项时遇到错误: UNKNOWN\Components的解决方案

Q82556499的博客 4167

从零构建锂电池主动均衡系统:Simulink仿真中的Buck-Boost拓扑实战指南

本文详细介绍了如何在Simulink中从零构建基于Buck-Boost拓扑的锂电池主动均衡系统。通过仿真环境搭建、参数优化、控制策略设计和性能评估,为工程师提供了完整的实战指南,帮助快速验证和优化均衡算法,提升电池组一致性与寿命。

gitlab7runner的博客 896

细读HTTPS -- SSL/TLS历史,密码学

文章目录细读HTTPS -- SSL,TLS,密码学SSL/TLS协议历史 细读HTTPS – SSL,TLS,密码学 SSL/TLS协议历史 SSL协议由Netscape公司开发,历史可以追溯到Netscape Navigator浏览器统治互联网的时代。 第一个版本从未发布过 第二版即SSL2则于1994年11月发布。SSL2的开发基本上没有与Netscape以外的安全专家进行过商讨,所以有严...

猿来如此yXy 1290

GenomeSurvyIndex设计--随笔017

摘要: GenomeSurvyIndex是一款自动化多倍体基因组调查工具,整合FastK、Smudgeplot和GenomeScope2.0三大核心组件。该工具通过k-mer频谱特征自动识别基因组倍性类型,包括二倍体(1:2:4)和同源四倍体(1:2:3:4),并采用3a1b>2a2b算法判定同源/异源多倍体。工具提供完整的conda环境配置方案,封装为Python脚本实现全流程自动化分析,包含k-mer计数、倍性判定、基因组特征计算等功能,最终输出标准化报告和可视化图表。该方案可直接部署使用,适用于

weixin_44874487的博客 474

TLS握手中的RTT

TLS 1.2 握手通常需要2 RTT 才能完成。TLS1.3 在 0-RTT 握手过程中,客户端可以`在握手开始时就发送应用数据`,从而实现 0 个 RTT 的数据传输延迟。

qq_62311779的博客 1961

Apollo MPC横纵向耦合控制学习笔记

Apollo MPC横纵向控制原理学习笔记

weixin_39199083的博客 1万+

动力学约束下的运动规划算法——状态栅格规划器(State Lattice Planner)

A*、RRT等算法建立的用于路径搜索的图模型是不考虑机器人的动力学约束的,其构建的图模型的两个相邻节点之间的路径可能是不可行的,或者很难被机器人跟踪的,现在我们想要使得图中相邻两个节点间的连接是一种满足动力学约束的可行的连接,那么如何构建一个这样的图呢? 构建这样的图通常有两种方法:第一种是基于控制空间的采样(正向方法)

慕羽★的博客 3104

TLS协议分析 与 现代加密通信协议设计

本文目标: 学习鉴赏TLS协议的设计,透彻理解原理和重点细节 跟进一下密码学应用领域的历史和进展 整理现代加密通信协议设计的一般思路 本文有门槛,读者需要对现代密码学有清晰而系统的理解,建议花精力补足背景知识再读。本文最后的参考文献里有一些很不错的学习资料。 目录 : TLS协议分析 与 现代加密通信协议设计 一. TLS协议的设计目标: 1.1 密码学的方法论 1....

yetugeng的专栏 7438

详解FreeRTOS:低功耗Tickless模式(高级篇—7)

FreeRTOS提供了一个叫做Tickless的低功耗模式,本篇博文我们就来学习一下如何使用这个Tickless模式。

不脱发的程序猿 1897

实验六 TLS协议报文解析

一、实验目的 1.访问一个https://....的网站,捕TLS包并分析报文序列。 2.分析连接建立的完整过程,如:TCP三次握手、SSL安全连接,使用TLS协议连接、协商过程,加密传送的状态、TCP挥手等。 3.分析包中handshake握手、协商过程,说明完成了什么功能。 二、实验准备 1.笔记本电脑一台,安装wireshark软件。 2.实验参考了几篇csdn博客:https://w...

weixin_30823227的博客 1961

嵌入式内存管理之“LittleFS文件系统”开发(附LittleFS项目源码)

本文介绍了如何在嵌入式系统中实现 LittleFS 文件系统,并结合 Flash 存储进行数据管理。通过详细的代码示例,展示了如何配置、挂载 LittleFS 文件系统,并进行文件操作,如读取、写入和更新数据。特别地,博客通过实际应用演示了如何实现启动计数功能,以及如何处理文件系统的格式化和挂载过程。该示例帮助读者掌握在资源受限的嵌入式环境中实现高效文件存储管理的关键技术。

Bit_Dong的博客 3184

视频理解与处理——OpenClaw视频能力深度解析(2026视频版)

本文介绍了OpenClaw视频理解与处理的核心技术,重点分析了视频预处理流程。通过VideoProcessor类实现视频加载、帧采样、尺寸调整和归一化等基础处理功能,支持本地和在线视频源处理,为后续视频分析任务提供标准化输入。预处理模块采用均匀采样和标准化方法优化视频数据,确保动作识别、场景分析等高级应用的准确性,展现了OpenClaw强大的视频处理能力。

一键难忘的博客 464

TLS协议分析

TLS协议分析 2015-09-06 本文目标: 学习鉴赏TLS协议的设计,透彻理解原理和重点细节 跟进一下密码学应用领域的历史和进展 整理现代加密通信协议设计的一般思路 本文有门槛,读者需要对现代密码学有清晰而系统的理解,建议花精力补足背景知识再读。本文最后的参考文献里有一些很不错的学习资料。 目录 : 1 2 3 4 5 6 7

周自信的技术博客 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SSL/TLS加密协议全面解析

SSL/TLS协议是保障网络通信安全的核心技术,它通过加密、身份验证和数据完整性保护三大功能,确保传输数据的安全。从SSL 2.0到TLS 1.3,协议不断演进,目前主流使用TLS 1.2和更安全的TLS 1.3版本。TLS协议采用分层设计,底层记录协议负责对称加密和完整性保护,上层包含握手、警报等子协议。作为应用层与传输层之间的安全层,TLS为HTTP等应用协议提供透明的安全传输服务,是防范数据窃听、篡改和身份冒充的关键防线。

脱发是不可能的博客 2818

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

TLS/SSL 实例分析

TLS/SSL 示例分析 简介 TLS/SSL 协议并且 在 kali linux 下用 wireshark抓取 curl https://www.baidu.com 的数据 详细分析这个会话的数据,一节协议格式

指甲的专栏 1565

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

TLS协议分析 (七) 安全性分析

9. TLS协议的安全分析 安全分析,重中之重,也是大家最关心的。 安全分析的第一步是建立攻击模型,TLS的攻击模式是: 攻击者有充足的计算资源 攻击者无法得到私钥,无法得到客户端和服务器内存里面的密钥等保密信息 攻击者可以抓包,修改包,删除包,重放包,篡改包。 这个模型其实就是密码学里面一般假定的攻击模型。 好了,在这个模型下,TLS的安全性分析如下: 9.1. 认证和密钥交换 的安全性 TLS有三种认证模式:双方认证,服务器认证,无认证。 只要包含了有服务器端认证,就可以免疫 man-in-the-

OpenIM的博客 2487

传输层安全协议TLS——协议解析

上回书说到,密码学是作为TLS的基础,为协议的运作提供了牢固的理论体系,而本次我们就正式揭开TLS的面纱,像素级的观察这个神秘协议的运行机理。我们采用理论结合实践的方法来介绍协议细节。正所谓:大牛养成之路,关键不在“学”,而在“干”——实践出真知。 TLS版本演进时间线 知历史知兴替,先来了解下TLS的前世今生(答应我,这之后就别再问SSL和TLS是啥关系了好吗?)。 TLS前身是网景(Netscape)公司开发的SSL规范,后来在协议维护移交给IETF之后,将其更名为TLS,正.

怿星科技的博客 2793

SSL/TLS协议

SSL/TLS(安全套接字层/传输层安全)是一种密码协议,旨在在互联网上提供安全的通信。它确保数据在传输过程中被加密,防止窃听,同时验证通信双方的身份,防止伪装。研究表明,这对保护在线交易和隐私至关重要。SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)是密码协议,旨在为互联网通信提供安全性和数据完整性保障。保密性:通过加密防止数据被窃听。完整性:通过校验机制确保数据未被篡改。身份认证:通过数字证书验证通信双方的身份,防止伪装。

likuoelie的博客 1330

TLS1.2协议设计原理

参考链接:https://www.cnblogs.com/Jack-Blog/p/13170728.html 前言为什么需要TLS协议发展历史协议设计目标记录协议握手步骤握手协议Hello RequestClient HelloServer HelloCertificateServer Key ExchangeCertificate RequestServer Hello DoneClient CertificateClient Key ExchangeCertificate VerifyFinished改

lida776537387的博客 1748
上一篇: 100亿次的挑战:如何实现一个“有把握”的春晚摇一摇系统
下一篇: TLS协议分析 (二) 架构总览
OpenIM
博客等级 码龄5年 295粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值