下圖是 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%左右。