Cloudflare發布了BoringTun專案,這是一個以程式語言Rust撰寫的WireGuard協定使用者空間實作,而WireGuard則是一個新發展的VPN公用程式與協定。Cloudflare提到,Rust具有C++的執行速度,而且具備高度記憶體安全,甚至比Go還安全,是跨平臺應用程式的好選擇。

WireGuard是一個很新的通用VPN開源專案,能夠建立安全的點對點網路連接通道,原本只是整合在Linux核心中的功能,現在被發展成跨平臺的VPN解決方案,其目標是取代IPsec以及OpenVPN這類基於TLS的VPN技術。相對於傳統VPN來說,WireGuard使用較新且更簡單快速的技術,以雜訊協定框架(Noise Protocol Framework )建構,並採用一系列現代加密演算法,在公鑰操作使用X25519,在授權認證加密使用ChaCha20-Poly1305,而在訊息認證則採用Blake2。

Cloudflare尋求符合自家需求的WireGuard實作,他們需要WireGuard實作在使用者空間運作,執行速度快,且能跨平臺在Linux、Windows、macOS、iOS和Android上執行。雖然目前存在數種WireGuard實作方式,但不是與特定平臺綁定,就是不在使用者空間執行,跟Cloudflare需求最相近的則是wireguard-go專案,但是經過他們進行的基準測試,wireguard-go的效能遠低於在Linux核心運作的WireGuard核心模組,Cloudflare提到,Go適合用來撰寫伺服器,但是卻不適合用來處理原始封包,而這項工作卻是VPN的本質。

在語言選擇上,雖然C和C++的執行效能都很好,但是Cloudflare提到,經證明這兩個語言的記憶體模型在現代加密與安全導向的專案太過脆弱,而wireguard-go專案也顯示出Go的缺點,Rust則是現代且安全的程式語言,能提供跟C++一樣的執行效率,不只提供高度記憶體安全性,還具備更安全的並行規則,整體來說比Go更安全,同時還提供大量的平臺選擇,可以簡單地發布跨平臺應用程式。

WireGuard有另一個Rust的實作wireguard-rs,但是Cloudflare表示,該專案還相當不成熟,因此決定自行打造。Cloudflare表示,WireGuard專案是所以名為BoringTun,是對Google的BoringSSL致敬,BoringSSL消除了OpenSSL的複雜性,他們認為,WireGuard很有機會對傳統VPN協定做出相同的貢獻,成為未來類VPN技術的標準。

目前BoringTun仍在Cloudflare內部的安全審查階段,還不適合用於關鍵工作,但是使用者可以在GitHub中取得程式碼,該專案以BSD 3-Clause授權開源。


Advertisement

更多 iThome相關內容