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

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

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

本文目标:

学习鉴赏TLS协议的设计,透彻理解原理和重点细节

跟进一下密码学应用领域的历史和进展

整理现代加密通信协议设计的一般思路

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

目录 :

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). 保密, message privacy (保密通过加密encryption实现,所有信息都加密传输,第三方无法窃听 )(2). 完整性, message integrity( 通过MAC校验机制,一旦被篡改,通信双方会立刻发现 )(3). 认证, mutual authentication (双方认证,双方都可以配备证书,防止身份被冒充 )

互操作,通用性 ( 根据公开的rfc,任何符合rfc的软件实现都可以互操作,不受限于任何专利技术)

可扩展性 ( 通过扩展机制 tls_ext可以添加功能,有大量的新功能,都是通过扩展添加的)

高效率 (通过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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容