[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
s2n:亚马逊的 TLS 之道
by Chen Jie of TinyLab.org 2015/7/12
使用最广泛的 TLS 解决方案 OpenSSL,近日再次爆出高危漏洞。
巧的是,在更早的几天前,亚马逊开源了一个新的 TLS 实现 – s2n。s2n 是一个轻量级的 TLS 实现,大约仅有 6,000 行代码,实现了亚马逊用到的 TLS 特性。
与之相对的,OpenSSL 是一个 TLS 事实上的参考实现,包含超过 500,000 行代码。
s2n 现已经发布在 github:awslabs/s2n
笔者按:对于一个严格的开发计划而言,作为其基石的软件组件,对进度有着重要影响。软件组件的未预料异常行为,以及突发漏洞,往往让计划延迟,甚至要重大更改。
软件都有其舒适区,当软件应用于一个名义上支持,但实际上少有实践的领域时,需谨慎对待 —— 哪怕一小步,也不能轻视。
另一方面,需不断了解软件的舒适区,从而明白什么样的使用,会有什么样的风险。开源软件组件目前被广泛地关注和应用,而对于一个大型的企业而言,企业内部可能有许多部门去围绕开源软件组件进行开发。在此情形下,成立企业内部的开源技术中心,便是一个自然的选择:
- 汇总常用开源组件的解决方案:不断深入了解常用开源软件的舒适区。
- 富集各部门对开源组件的需求:更广视角看待问题,从而架构层面得以保持和演进。
- 集中改进:将成果分享于全公司。
- 反馈社区:超越公司的分享。普遍地分享,才能普遍得到别人的分享;才能让软件框架越来越进化;最终让软件的舒适区越来越大。
除此以外,软件工程的手段,也同时加以应用。例如:
- 依据特定情况做减法:减少维护的体量。例如 s2n 就是这样一个思路。“轻量级”总是受欢迎的。
- 提高复用度,从而集中维护的力量。复用意味着组件的“通用”,更广义而言,就是“相似性”。一个软件栈各层次呈现的“相似性”便透出一种优雅。
- 各阶段都要考虑可测试性和可调式性。有助于问题的及早发现,以及发现后的尽快处理。
- 语言和工具的力量:例如目前正兴起的、内存安全的编译语言:rust 和 swift;基于计算理论的静态代码检查工具;动态代码检查工具(模拟器)。这部分力量若能很好发挥,便属于黑科技范畴。
最后是 YY 环节,在『大开脑洞,做一个比表屏大,比 phone 便携的移动设备』一文中,YY 了一个手机 OS,现来进一步 YY 其基础软件栈:
- 通过类似 VDSO 将内核的 C 库、例程、系统调用接口封装来导出给用户态,就像『Linux 片面报告:从 4.0 到 4.2』提到那样。复用内核代码,不仅性能更好,更有利于集中维护。
- Systemd 及其提供的基本服务。systemd 基于 C 库做了薄薄的一层封装 – libsystemd。其代码严谨,并非常轻量。systemd 核心提供了非常动态的服务管理,可以按需来启动最小的服务集。同时,systemd 还基于 libsystemd,不断重构传统的系统服务,使之复用代码和框架,提高了操作系统的整体性。
- Swift 语言环境。在 WWDC 2015,苹果宣布将逐步开源 Swift 2.0,包含各平台的编译器和标准库支持。使用内存安全编译型语言,来实现用户态软件栈中代码体量最大的部分。借助先进语言,来提高生产效率与代码质量。
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |