AWS宣布全新的轻量级TLS实现——s2n

2015 年 7 月 07 日

作为网络通信领域重要的安全协议, SSL 协议(Secure Sockets Layer,安全套接字层)及其升级版 TLS 协议(Transport Layer Security,传输层安全协议)一直为保证网络安全和数据完整性发挥着重要作用。这些协议位于可靠的面向连接的网络层协议和应用层协议之间,利用数据加密技术来保障互联网上数据传输的安全。然而,谷歌在 2014 年发现的 POODLE 漏洞(Padding Oracle On Downloaded Legacy Encryption vulnerability),暴露了 SSL/TLS 在安全方面的重大缺陷。由此,所有与 SSL 或 TLS 协议相关的服务都迫切需要修改安全协议,防范网络中利用该漏洞进行的攻击。近日,亚马逊 AWS 就推出了新的开源加密库 s2n ,来保证 AWS 云服务的安全。接下来,本文就对 s2n 的相关细节进行简要介绍。

TLS 协议之前为保证亚马逊 AWS 相关服务的强安全特性作出了重大贡献。所有 AWS 的 API 以及面向客户的弹性负载均衡(ELB) AWS Elastic Beanstalk Amazon CloudFront Amazon S3 Amazon RDS Amazon SES 等服务都在使用 TLS 协议。TLS 协议的重大安全漏洞给 AWS 的安全性带来了很大的威胁。在震惊之余,AWS 的安全团队开始不遗余力的进行漏洞的修补工作。该工作所面临的一个重大挑战就在于 TLS 协议本身及其可选的扩展已经变得十分复杂。以 OpenSSL 为例,其 50 万行代码中至少 7 万行代码与 TLS 相关。如果每一行代码都可能存在风险,那么针对如此大规模代码的代码审计、安全审核等将十分具有挑战性。为了简化 TLS 实现并保证强加密特性,ASW 实现了一种新的开源 TLS 协议——s2n。

s2n 为“Signal to noise”的简写,其寓意在于就是把有意义的信号变成看起来像是随机噪声的加密过程。在设计之初,s2n 项目充分吸取了之前的教训,以简单化作为优先追求的目标。因此,s2n 避免了很少使用的选项和插件的实现,仅用 6000 行左右代码就完成了协议的编写工作,实现了小巧、快速库的目标。审阅 s2n 由此也变得简单了很多。目前,AWS 已经完成了 3 次额外的安全评估和渗透测试。s2n 项目也已经开源,并放置在 GitHub 中。

在接下来数月,AWS 将开始把 s2n 集成到若干 AWS 服务中。由于 s2n 已经实现了之前 TLS 中用户所使用的所有功能,修改后的 ASW 服务并不需要用户应用程序的任何改变,而且修改前后具有互操作性。此外,在 s2n 与 OpenSSL 的关系方面。OpenSSL 包含了两个库——“libssl”实现了 TLS;“libcrypto”则是一个通用的密码库。S2n 只能算和其中之一的“libssl”库类似。因此,s2n 并不会替代 OpenSSL,且 AWS 也会继续为 OpenSSL 提供支持。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

立即免费注册 AWS 账号,获得 12 个月免费套餐:点击注册

有云计算问题?立刻联系 AWS 云计算专家:立即联系

2015 年 7 月 07 日 09:25 1589
用户头像

发布了 256 篇内容,共 39 次阅读,收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

全球移动服务生态的暗涌与新机

脑极体

C++ 赋值运算符‘=‘的重载(浅拷贝、深拷贝)

小林coding

c++ 编程 浅拷贝和深拷贝

Java-技术专题-final关键字

李博@Alex

第二次推荐笔记:wolai

申屠鹏会

国内首家 ABM 营销技术服务商火眼云完成5000万元A轮融资

人称T客

C++ 深入浅出工厂模式(初识篇)

小林coding

c++ 设计模式 工厂模式

超超超全递归技巧讲解,这次带你拿下递归

多选参数

数据结构 算法 递归 数据结构与算法

「C++ 篇」答应我,别再 if else 走天下了可以吗

小林coding

c++ 编程 设计模式 编程习惯 编程风格

修改系统时间,导致 sem_timedwait 一直阻塞的问题解决和分析

小林coding

Linux 编程 问题处理

大数据技术发展(一):大数据技术的起源

抖码课堂

大数据 hadoop 大数据处理 大数据技术

C++ this指针的理解和作用

小林coding

c c++ 指针

C++ 流插入和流提取运算符的重载

小林coding

c++ 编程

Linux 平均负载高了怎么办?

小林coding

Linux 问题处理 linux命令

2020大厂web前端面试常见问题总结

华为云开发者社区

CSS 响应式 浏览器 面试题 web前端

C++ 深入浅出工厂模式(进阶篇)

小林coding

c++ 设计模式 工厂模式

C++ 一篇搞懂多态的实现原理

小林coding

c++ 编程 封装、继承、多态

C++ static 与 const 的认识

小林coding

c++ 编程 static关键字

C++ 自增、自减运算符的重载和性能分析

小林coding

c++ 编程 运算符

HTTP协议-进阶

Jaykey

HTTP 前端进阶训练营

HTTP协议-基础

Jaykey

HTTP 前端进阶训练营

让类/进程/脚本「单身」的方法

小林coding

c c++ Shell 设计模式 单例模式

Go语言专家测试,80%的人第一题就挂了!

博文视点Broadview

go 云原生 评测

音画同步体验有多好,来看看即构的自研互动白板就知道啦

ZEGO即构

在线教育 SVG canvas

字节跳动想招什么样的技术人?

池建强

C++ 运算符重载的基本概念

小林coding

c++ 编程

C++ 手把手教你实现可变长的数组

小林coding

c++ 编程 数组

SpringCloud(Netflix)-技术专题-Ribbon的基本使用

李博@Alex

Java 技术 SpringCloud

为什么直播系统不用RTP协议

soolaugust

WebRTC 直播 RTMP rtp

SpreadJS 纯前端表格控件应用案例:铭天预算执行系统

Geek_Willie

SpreadJS 预算执行系统

C++ 模板常见特性(函数模板、类模板)

小林coding

c++ 编程 模板方法

C++ 一篇搞懂继承的常见特性

小林coding

c++ 编程 继承

跨越计算鸿沟:如何靠软硬件协同突破算力瓶颈?

跨越计算鸿沟:如何靠软硬件协同突破算力瓶颈?

AWS宣布全新的轻量级TLS实现——s2n-InfoQ