如何高效安全地实现 TLS 自动机?

2021-02-22 15:43:11 +08:00
 hxndg

0 前言

这篇文章是介绍 TLS 自动机设计和实现理念的,是我写在博客上的文章,转过来发一下,博客上的 CVE 的分析就比这里的多几句话,看这个就对一般协议实现者够用了。 这里的 TLS 自动机设计和总结不会设计加到线程安全,因为那个纯属于实现级别。

1 TLS 自动机设计理念

1.1 理念

设计时,我们的理念就三种:

这三条理念说起来都很短的,但是实际上的理念是高度集成的,我们一条一条分开说:

1.1.1 简单

简单的概念包含三种:

1.1.2 分层

相比较简单而言,分层的概念简单多了,就两种:

1.1.3 安全

TLS 状态机设计里面实际上安全是最难实现的,安全的原则说简单也简单,说难也难,抽象起来就两种:

2 TLS 自动机实现时候的困难和问题

下面针对性的给出我们做自动机的时候遇到的困难和问题,并简单描述我们给出的解决方案。这里需要注意的是里面一部分问题是理念导致的,一部分是实现导致的,在写代码的时候要区分开抽象和具体的区别。

2.1 简单理念

2.2 分层理念

分层理念带来了逻辑的简单,但也带来了一些比较麻烦的问题。

2.3 安全理念

3 不遵守三种理念导致的问题

下面我会列出一些 CVE,这些 CVE 就是由于不遵守相应的理念导致的问题,作为一个安全协议的实现人员(分析人员),一定不要忽视小小的问题。有一点需要注意,我并不只列出 OPENSSL 的 cve,其他软件也会有,不过基本都是我修过 /探究过的。除此之外,我写过很多好玩的东西,比方说假 SNI 做代理,但这些都不属于标准行为,不具备任何参考价值。

4 针对三种理念做的优化

这里的优化并不是单纯针对三种理念的,是一种杂糅的优化策略,有的优化访问速度,有的优化安全性能。

结尾的闲言碎语

厂商大多不关心安全,只关心效益,是目光短浅吗? 写到这里差不多就可以结束了,就不多说了。TLS 这块还有啥不明白的直接告诉我就成了

1095 次点击
所在节点    程序员
3 条回复
iloveayu
2022-07-28 15:28:19 +08:00
感谢分享,OCSP STAPLING 搜过来的。
hxndg
2022-08-28 19:57:57 +08:00
@iloveayu
Nmmmm ,没想到会有人看这个,不过说起来可以问问你是做啥的 /为啥会搜索 ocsp ?还有就是安全开发现在咋样呢?最近觉得做持续集成太无聊了。。。。
iloveayu
2022-08-30 22:59:10 +08:00
@hxndg infra 运维、devops 都做过,目前转开发写业务代码,当时在对比不同浏览器对 ocsp 这块的实现处理是不是有区别,Google 过来的。
哈哈,啥方向做时间长了都会无聊,说明该换换口味了 ; )

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/755125

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX