Mesalink v1.0.0 發布,正式支持 TLS 1.3 和 IPv6,支持CMake編譯...

2020-12-11 開源中國

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 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時代的安全生態建設。

相關焦點

  • 前端框架 Angular 11.0.0 正式發布,不再支持 IE 9 、10
    前端框架 Angular 11.0.0 正式發布。
  • Linux Lab 發布 v0.4 rc3,新增 ARM64 Uboot 支持
    快來看看:如果您想學習 Linux 0.11 內核和 Linux X86 彙編語言,也可以訪問另外兩套 Lab,即 Linux 0.11 Lab 和 CS630 Qemu Lab。這兩套實驗代碼也可以直接下載到 Linux Lab 中開展實驗。
  • JPress v3.0 alpha.1 發布
    Press v3.0 alpha.1 發布了, v3.0 比 v2.0 主要是增加了支付的能力,感謝大家的關注,讓 JPress
  • Apache MXNet 發布 v0.11.0版,支持蘋果Core ML和Keras v1.2
    本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。近日,孵化於 Apache 軟體基金會 Apache MXNet 發布了 v0.11.0 最終測試版本,它不僅具有一個 Core ML 模型轉換器,同時還支持 Keras v1.2。
  • MPlayer 1.3 發布,現已支持 FFmpeg 3.0
    發布MPlayer 1.2才三周,該項目開發團隊又於今日放出了MPlayer 1.3,並且令人驚奇地帶來了對FFmpeg 3.0
  • aelf Enterprise 1.0.0 Preview 1 版正式發布
    3月27日,aelf Enterprise 1.0.0 Preview 1 版正式發布。aelf Enterprise 1.0.0 preview 1 版是一個整體的區塊鏈商業化解決方案,包含完備的區塊鏈系統、開發套件、開發文檔、以及配套的基礎應用和基礎服務。
  • MongoDB 4.0 正式發布,支持多文檔事務
    MongoDB 4.0 已正式發布,MongoDB 是一個開源文檔資料庫,提供高性能、高可用性和自動擴展。在 4.0 正式發布之前,我們已經報導了其相關更新信息,此次正式發布版本中我們可以看到一些特性得以保留,包括多文檔事務和聚合類型轉換等:下邊是此次更新涉及到的一些內容:Multi-Document
  • Node v0.11.3 (Unstable) 發布
    2013.06.26, Version 0.11.3 (Unstable)uv: Upgrade to v0.11.5c-ares: upgrade to 1.10.0
  • NumPy 1.20.0 版本發布,支持Python 3.7+
    新版本支持 Python 3.7-3.9,但不支持 Python 3.6。;對即將到來的 Cython 3.0 提供初步支持。新發布的 NumPy 1.20.0 版本包括以下三大新函數:(1)random.Generator 類有一個新函數 permuted。新函數與 shuffle 和 permutation 不同,給定軸索引的子數組會被換算。例如,現在可以對一個二維數組的行或列進行換算;(2)sliding_window_view 為 numpy 數組提供了一個滑動窗口視圖。
  • DRYCC Workflow v1.3.0 版本發布
    DRYCC工作流是一個開源的平臺即服務(PaaS),它為任何kubernetes集群添加了一個開發人員友好的層,使應用程式的部署和管理變得容易。DRYCC工作流包括通過git push從原始碼構建和部署的功能、簡單的應用程式配置、創建和回滾發布、管理域名和SSL證書、提供無縫邊緣路由、聚合日誌以及與團隊共享應用程式。
  • Rust SGX SDK v1.0.4 | 基於 Remote Attestation 的 TLS
    Rust SGX SDK對於數據隱私和雲安全都有著非常重要的意義,能夠很好的支持各種需要隱私保護的雲上數據業務。從去年4月Rust SGX SDK第一個開源版本發布以來,我們獲得了社區很多反饋和支持,也看到了學術界和工業界都在積極的應用Rust SGX SDK。
  • smart-doc 1.9.0 發布,新增 Open Api 3.0+ 支持
    支持Callable,Future,CompletableFuture等異步接口返回的推導。 支持JavaBean上的JSR303參數校驗規範,支持分組驗證。 對json請求參數的接口能夠自動生成模擬json參數。 對一些常用欄位定義能夠生成有效的模擬值。 支持生成json返回值示例。 支持從項目外部加載原始碼來生成欄位注釋(包括標準規範發布的jar包)。
  • 資源| TensorFlow版本號升至1.0,正式版即將到來
    選自github機器之心編譯參與:吳攀2015 年 11 月份,谷歌宣布開源了深度學習框架 TensorFlow,一年之後,TensorFlow 就已經成長為了 GitHub 上最受歡迎的深度學習框架(參見機器之心文章《深度 | TensorFlow 開源一周年:這可能是一份最完整的盤點》),儘管那時候 TensorFlow 的版本號還是 v0.11。
  • TeaWeb v0.1.5 發布,支持 HTTPS 證書申請、HTTP 隧道功能
    完整的變更列表:* 代理     * 提供一個在線工具幫助申請免費的HTTPS證書     * 實現一個基礎的HTTP隧道功能(其實是HTTP over TCP),可以通過代理功能,將你本機的Web服務發布到公網
  • Taro 3.1 beta 發布:開放式架構新增 4 端支持
    作者:凹凸曼-JJ自 7 月初我們正式發布了 Taro 3,至今半年時間已然略去。期間我們不斷地修復著問題,同時也在構想著下一個 minor 版本。面對小程序平臺越來越多的大環境,Taro 是選擇偏安一隅,只支持部分的主流小程序,還是成為所有小程序平臺開發、多端轉換的基礎設施,我們在 v3.1 給出了答案:開放式架構。
  • PyTorch 1.0 正式版發布了!
    同時放出了 PyTorch 1.0 預覽版。近日,在 NeurIPS 2018 大會上,Facebook 官方宣布 PyTorch 1.0 正式版發布了。GitHub 地址:https://github.com/pytorch/pytorch/releases/tag/v1.0.0PyTorch 1.0 同時面向產品化 AI 和突破性研究的發展
  • Linux編譯安裝PaddlePaddle
    # 編譯GPU版本的PaddlePaddlecmake ..解決方法: 使用如下命令重新開啟支持GPU運行的docker容器:export CUDA_SO="$(\ls /usr/lib64/libcuda* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}')"export DEVICES=$(\ls /dev/nvidia
  • Rainbond 5.0 正式發布,支持對接管理已有 Kubernetes 集群
    很高興向大家宣布Rainbond v5.0正式發布!
  • Jsonnet-PHP v1.2.0 發布, PHP 支持 Jsonnet 擴展
    Jsonnet-PHP v1.2.0發布了,JsonNet-PHP是Google Jsonnet對PHP的支持擴展,該版本使用最新版本至v0.9.5的LibJsonnet。
  • V (Vlang) 首個主要版本 0.2 發布,安全快速可編譯的靜態語言
    V (Vlang) 0.2 發布了,作者宣布這是首個主要版本,更新重點是提升穩定性和優化編譯時(compile-time)內存管理