當今互聯網世界安全形勢嚴峻,內容篡改、流量劫持、個人隱私信息泄露等事件層出不窮。為讓廣大用戶可以更安全的使用互聯網服務,加密流量的應用越來越廣泛,其地位也日益重要。在互聯網領域,使用多的流量加密技術就是HTTPS。如今互聯網正在經歷從明文(HTTP)到加密(HTTPS)的轉變。
HTTPS使互聯網環境更安全的同時,也帶來了很多額外挑戰,例如:加密運算消耗更多的CPU資源,這意味著服務器端需要增加更多的硬件(一般而言,HTTPS的硬件成本是同性能HTTP服務的3倍以上);而在移動客戶端,如手機、平板電腦等環境中,這則意味著消耗更多電池電量。此外,HTTPS在握手階段引入額外RTT,加上加解密運算的額外時間開銷,增加了HTTP請求的時延,極大的影響了用戶體驗。
為應對上述挑戰,HTTPS尚需功能升級,白山研發團隊率先進行嘗試,新增:TLS1.3協議、RSA多素數支持、ChaCha20算法支持及HTTPS可視化運營等特性,具體如下圖:
TLS 1.3協議依循極簡主義的設計哲學,祛除并修復了舊版本中的壞味道,將密鑰交換、對稱加解密、壓縮等環節中可能存在的安全隱患剔除出該版本,包括:
HTTPS提高網絡安全的同時也增加了額外的性能消耗,如:額外的SSL握手交互過程,數據加解密對CPU的消耗等。TLS 1.3在提高效率方面進行了大量改進,特別是對SSL握手過程重新設計,將握手的交互延時從2-RTT降低為1-RTT甚至是0-RTT。在網絡環境較差或節點距離較遠的情況下,這種優化可節省幾百毫秒的時間。這幾百毫秒就能決定用戶下一步的行為是繼續瀏覽還是關閉。性能提升包括:
為展現更加直觀的效果,白山搭建了支持TLS 1.3協議的服務器。
對應當前主流瀏覽器支持的draft-18的服務器:https://tls13.baishancloud.com/
對應新的draft-21版本的服務器:https://tls13.baishancloud.com:44344
簡單來說,多素數RSA是指在生成RSA密鑰的時候,在計算固定長度(比如2048位或者4096位)的模數(modulus)的時候,選擇多于2個素數并進行相乘得到終期望長度的modulus。也就是說,n = pq 這種標準RSA的計算方式n = pq ,在多素數RSA中,會變成 n = r1r2r3r4r5… 的形式。這也是多素數(multi-prime RSA)這個名字的由來。
這樣做的好處是可以大幅提高RSA私鑰計算性能(降低握手時間,減輕服務器壓力),具體數據見下圖:
| \ | 2素數(標準RSA) | 3素數 | 5素數 | 8素數 | 15素數 |
|---|---|---|---|---|---|
| RSA私鑰計算次數(10秒周期,2048位) | 7979 | 9908 | 18617 | 24878 | 31811 |
| 平均密鑰生成速度(秒,4096位) | 1.237 | 0.467 | 0.237 | 0.098 | 0.080 |
由上可知,多素數RSA具備三個特點:
多素數RSA大優勢在于作為一種不需要使用硬件加速卡的低成本方案,可以在某些安全性要求不高的場景下發揮作用。例如:靜態圖片對安全強度的要求不如動態數據大,可考慮采用多素數RSA方案。
當前OpenSSL對多素數RSA并不支持,白山基于RFC 8017在OpenSSL中實現多素數RSA功能,并將其開源,開源代碼位于:https://github.com/openssl/openssl/pull/4241 目前正向OpenSSL官方合并代碼,有望納入OpenSSL 1.1.1版本的發布。
ChaCha20是Google大力推廣的一種對稱加密算法,用于解決不支持AES硬件加速指令的Android設備的HTTPS性能問題。Google在其Chrome瀏覽器中增加了對這一算法的支持,同時還支持Poly1305摘要算法,形成了ChaCha20-Poly1305組合,并在2015年和2016年將這組算法標準化,形成RFC 7539和RFC 7905兩篇RFC文檔。
在對稱加密領域,自從AES算法從性能上超越并取代3DES算法,成為NIST指定的加密算法后,再未出現其他廣泛使用并且兼顧性能和安全的對稱加密算法。這帶來了以下幾個問題:
而ChaCha20可以較好的解決上述問題。
ChaCha20是一種流加密算法,實現較為簡單,并且比純軟件實現的AES性能更好。
性能對比
上圖是在不使用AES硬件加速的情況下,對AES和ChaCha20進行的性能對比測試。其中ChaCha20性能是GCM模式AES256的5倍左右。
將ChaCha20同已經瀕臨滅絕的RC4算法進行了對比,同為流加密算法,ChaCha20的性能達到了RC4的2倍之多。單位時間內運算次數的提高,表示單次操作所需的指令周期更短,而在移動端設備上這種特點直接影響電池電量的消耗。
雖然在HTTPS的場景中,一次全握手產生的功耗要遠大于對稱加密環節產生的,但是在針對大文件加密、解密操作時,更快的對稱加密算法依然存在實際應用價值。
但如果設備已經支持AES硬件加速指令,例如iPhone和部分Android系統手機或支持AES-NI指令的Intel CPU等,AES的速度依然具有絕對優勢:
由上圖可見,其性能約為ChaCha20的3倍左右,此外GCM模式的AES比CBC模式在有硬件加速的情況下性能提升的更大,這主要是由于GCM模式可以比CBC模式能更好利用硬件流水線進行并發。
HTTPS服務全面支持ChaCha20-Poly1305算法,可以同時采用自動適應客戶端算法列表的處理手段:
目前白山支持的TLS加密套件有:
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_CHACHA20_POLY1305_SHA256 (TLSv1.3用)
結合以上ChaCha20的性能對比,可以認為該算法適合在不支持AES硬件加速的Android平臺中使用。因此作為應用程序,好可以判斷當前運行的平臺是否支持AES指令。如不支持,則將上述TLS加密套件排列在客戶端ClientHello消息中前的位置(根據支持的協議),根據客戶端支持的加密套件列表選擇優算法來和客戶端握手。在支持AES指令的硬件平臺上,推薦優先選擇AES-GCM算法;而CBC模式的RSA和RC4算法在很多情況下并非好選擇,應當盡量避免過多使用。
HTTPS的數字化運營在HTTPS服務的質量監控、服務優化等方面有著舉足輕重的作用。
目前白山數字化運營平臺對主要關注如下幾點:
以下是可視化運營平臺截圖:
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。