如何評價 Chrome Android 不再選用 ChaCha20 作為首選演算法?

下圖是 Chrome 51 在 Android 上對於 Cipher Suites 的選擇。之前 Google 強勢推廣的 ChaCha20 已經降到了 AES 之後,反而在 PC 上依然是 ChaCha20 優先。

ChaCha20 發布時以 ARM 上的超快速度作為亮點,而 Google 為推廣演算法在有 AES 指令集加成的 PC 上也強行使用了 ChaCha20,為何突然在移動平台上放棄?


Chrome Android是根據CPU特性選擇演算法。

如果CPU支持aes,則優先選擇aes-gcm,其次是chacha20

否則chacha20優先於aes-gcm

原因是:

無論是ARM還是x86-64,CPU有aes指令的情況下,aes-gcm的速度均大幅優於chacha20

在x86-64 with aes(沒有avx)上,aes-gcm的速度至少是chacha20的10倍以上

OpenSSL 1.1.0支持chacha20,在avx2的CPU上性能大約能達到aes-gcm的70%左右。

對於新技術,從硬體(比如aes,avx,avx2指令),到基礎組件(openssl,boringssl),再到上層應用(瀏覽器,web server),這麼多東西綜合起來情況就多變了。

相比chacha20,aes的各種環境都成熟很多。

總體來說,支持aes的ARM,優先aes-gcm對終端和服務端都是更好的選擇。

PS: TLS v1.3草案18僅支持chacha20、aes-gcm和aes-ccm。

修改記錄:

5月2號更正OpenSSL 1.1.0對chacha20支持的錯誤。


這個要分處理器,因為在ARM v8之後加入了AES指令,所以在這些平台上的設備使用AES方式是比Chacha20更快的,同時使用AES也發揮了伺服器的性能優勢。

谷歌也沒有取消使用Chacha20,只是開啟了ssl_prefer_server_ciphers ,讓終端檢測是否支持AES指令,如果支持AES就是首選,不支持Chacha20就是首選。


PC上的Chrome ChaCha20-Poly1305也是排在AES-GCM之後的啊。

[1] Qualys SSL Labs: Chrome 51/Win 7

[2] Qualys SSL Labs: Chrome 43/OS X

Chrome 52 on Windows 10 Anniversary Update:

其實瀏覽器的cipher suites排序不是很重要。絕大多數伺服器都忽略客戶端的排序,而用伺服器最喜歡的cipher suite。


我覺得應該是chacha20的在後台的性能不如AES


推薦閱讀:

大致介紹下SSL?
如何防止用戶身份被偽造?
https能防止大家都有公鑰情況下的信息竊取嗎?能防止中間人攻擊嗎?
https 頁面上如何嵌入像優酷這樣的非 https 的外部資源?
網站從http轉到https需要多久?

TAG:GoogleChrome | SSL | HTTPS | 密碼學 |