1. 程式人生 > >Linux核心追蹤[4.13] Linux Kernel TLS

Linux核心追蹤[4.13] Linux Kernel TLS

       核心的4.13版本實現了一個TLS功能(根據 RFC 5288),google員工Dave Watson受到FreeBSD的Netflix的專案啟發(FreeBSD網路很強大啊),實現這個功能的初衷是為了優化tls應用協議的效能(略微有一些,作者實測是2-7%)。據他說,google內部的網路協議80%是通過tls加密的。有了這個功能之後,http在使用者態不需要加密,只需要純的http,在核心態封裝為https。         從設計上,加密是基於128-bit advanced encryption standard (AES)的Galois counter mode (GCM) ,即gcm(aes)。GCM是核心crypto的元件,因此介面設計上,也是類似標準的crypto子系統的介面一樣,通過建立一個AF_ALG family的socket來使用。
        具體地,通訊兩端各建立兩個socket,一個是AF_AGL family的crypto socket,另一個是常規的TCP socket。TCP socket負責握手以及keys的傳遞(使用者態通過set_socketopt給核心)。然後一個真正幹活的socket被建立(crypto socket執行accept之後),它會負責設定initialization vectors (IVs,通過sendmsg()) 、建立control messages(通過CMSG),以及後續的實際的資料讀寫。
參考: 
https://lwn.net/Articles/666509/