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),以及後續的實際的數據讀寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章