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實現生產環境可用。
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 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時代的安全生態建設。