Mesalink v1.0.0 发布,正式支持 TLS 1.3 和 IPv6,支持CMake编译,支持Windows,实现生产环境可用...

MesaLink TLS是百度安全实验室研发的下一代传输层安全(Transport Layer Security, TLS)库。2018年4月2日我们发布了MesaLink的第一个公开版本0.6.0。在过去的一年里,我们陆续发布了七个版本,并在百度的智能电视、智能音箱、智能车载等生产环境项目中得到了广泛的测试和部署,月活跃用户数量于2018年末突破1000万。在MesaLink满周岁的今天,我们正式发布MesaLink的1.0.0版本,此次发布标志着MesaLink经受住了实战的考验,实现生产环境可用。我们期待MesaLink能够赋能更多智能终端设备,也欢迎更多合作伙伴加入,共同建设安全生态。

首先我们简要回顾一下MesaLink项目的历史。MesaLink于2017年由百度安全实验室硅谷团队立项,其初衷是为了消除OpenSSL中诸如"心脏出血"等威胁通信安全的内存安全漏洞,并在多个场景透明替换OpenSSL。

"心脏出血"是一个典型的由于C/C++语言的内存安全缺陷而引入的漏洞,安全专家戴维·惠勒(David Wheeler)曾撰文阐述使用C/C++这样的内存不安全语言开发OpenSSL是造成"心脏出血"危险因素之一。 尽管如此,OpenSSL、GnuTLS等流行TLS实现依然在使用C/C++语言,而OpenSSL自"心脏出血"之后又不断有新的内存安全漏洞被发现,例如CVE-2017-2800、CVE-2017-3735等。

于是我们跨越了C/C++,转而使用一门新兴的语言:Rust。Rust是一个内存安全的语言,近年来获得工业界和学术界的广泛关注。得益于其独特的所有权、生命周期、和零开销抽象等机制,Rust能够在接近C++性能的前提下提供强内存安全保证。虽然并不是用了Rust世界就安全了,但是有了Rust可以让开发者更专注于TLS协议本身实现的正确性和安全性。同时还有一个很大的挑战在于,如何使用Rust语言实现C语言的API,这关系到能不能让用户不用改代码,零成本用MesaLink透明替换OpenSSL。

百度安全实验室硅谷团队作为使用Rust语言研发安全系统的先行者,在百度首席安全科学家韦韬“混合代码内存安全架构三原则”理念指导下进行了很多尝试。团队在Rust SGX SDK、MesaLink、 MesaLock Linux等项目中积累了大量宝贵经验,成功打通了Rust与C语言的“任督二脉”,实现了安全可靠的Rust/C FFI交互接口,为MesaLink的部署和开源奠定了基础。

2018年4月2日,MesaLink发布首个公开版本0.6.0。次日即登上美国科技新闻网站HackerNews新闻热度榜第二名,并进入GitHub流行项目榜,位列Rust语言分榜第一名。这一年里承蒙社区的支持,MesaLink项目在GitHub上已经积累了900多颗星并还在不断增长中,MesaLink也得到了来自CloudFlare和Google的同行的关注和支持,我们有幸能够为全球互联网基础设施建设贡献自己的一份中国力量。

MesaLink项目时间表:

  • 2017年8月:混合代码内存安全架构三原则确立,MesaLink项目立项;

  • 2017年12月:MesaLink 0.1.0版本开始内测;

  • 2018年4月2日:第一个公开版本0.6.0发布,MesaLink进入OASES智能终端安全生态联盟;

  • 2018年7月:百度深圳用户产品团队倾力支援,为MesaLink加入安卓支持,从而在安卓系统中实现透明替换OpenSSL/BoringSSL;

  • 2018年8月:0.7.0版本发布,支持TLS 1.3 Draft 28,兼容cURL;

  • 2018年8月:集成了MesaLink的百度电视助手上线,酷开电视和视九TV系统集成MesaLink,MesaLink月活跃用户突破百万;

  • 2018年11月:MesaLink的工作发表在Rust社区核心会议RustFest上,获得了会议主办方与全球参会者的高度评价;

  • 2018年12月:在CVTE、TCL、康佳、暴风等合作厂商落地,MesaLink月活跃用户突破千万;

  • 2019年1月:0.8.0版本发布,支持百度BRPC框架,支持Intel SGX Enclave远程认证;

  • 2019年4月2日:1.0.0版本发布,正式支持TLS 1.3和IPv6,支持CMake编译,支持Windows。MesaLink实现生产环境可用。

1.0.0 新特性

MesaLink 1.0是一个重视性能的版本,对BRPC的服务器端做了性能优化。我们使用基于SwissTable的散列表实现了MesaLink的TLS会话缓存,所有的互斥锁和读写锁均使用了来自parking_lot项目的高性能实现,此外用户可以选择开启Rust的jemalloc内存分配器。

我们在一台运行Ubuntu 16.04的Intel Core i7-8086K工作站上,使用BRPC项目的SSL测试集测试了MesaLink和OpenSSL最新版的性能,双方均使用TLS 1.2和ECDHE-RSA-WITH-AES-256-GCM-SHA384,结果如下表所示。

 

Mesalink v1.0.0 发布,正式支持 TLS 1.3 和 IPv6,支持CMake编译,支持Windows,实现生产环境可用..._第1张图片

MesaLink 1.0开始支持Autotools + CMake双构建系统。CMake的跨平台特性使得我们可以更灵活的在多个平台上编译运行MesaLink,包括Windows和Visual Studio。安装我们发布的MesaLink for Windows安装包后,用户可以在Visual Studio中链接使用MesaLink;我们也准备了对应的样例代码,参见examples/client/client_win.c文件。

最后,欢迎大家访问改版后的新主页:https://mesalink.io。百度安全实验室公众号和其他平台发布的MesaLink中英文文章会统一同步到网站的博客下。

结语

MesaLink是百度AIoT安全解决方案的重要组成部分,也是百度下一代AI安全技术栈的核心技术之一。从新一代安全技术的研发与开源,到为行业提供一体化安全解决方案,再到促进学术、企业、机构间多层面协作,百度安全实验室正在升级打造AI时代的安全生态,打破产业隔阂,避免生态碎片化,以此推动AI时代的安全生态建设。

你可能感兴趣的:(rust,c/c++,安全架构)