舉個例子:在一萬億台,每秒可以嘗試十億個密鑰的計算機上,要超過二十億年才能破解出一個AES-128密鑰。
128位的都如此了,256的可想而知。
除非密鑰長度非常短,否則暴力破解不存在可行性。
B. 關於TLS經驗小結(下)
上期我們說到對稱加密演算法
AES DES
目前使用的幾乎都是AES-GCM(DES安全性太差基本處於廢棄狀態)
那除了這兩種還有其他的嗎?
答案是有的
ChaCha20
那這種演算法與AES-GCM相比有什麼特別之處呢?
上圖展示的是CHACHA20-Poly1305 與 AES-GCM 兩種對稱加密演算法的加密效率。
從這張圖中我們可以看到 ChaCha20的加密速度比AES快了差不多3倍左右。那為什麼現在的網站打開都基本上AES-GCM呢?
仔細看圖我們可以看到,這是基於ARM架構的移動端CPU的加密速度。CHACHA20雖然在移動端CPU架構上加解密速度非常快,但是在傳統>的x86架構上卻比AES慢。再加上支持CHACHA20的證書比較難申請的到。所以導致了現在的網站打開都基本上AES-GCM。
不過如果業務主要針對是移動端並且服務端硬體配置比較好且申請到了支持CHACHA20的證書。由於該演算法在移動端加解密速度非常快。
所以能夠得到較好的用戶體驗。(雖然從運維的角度來說應該盡量降低伺服器的負載,將負載轉移到用戶端比較好。主要還是看如何取
舍)
首先我們了解下正常的https請求的流程:
從圖片中我們可以看到http的延遲時間大概在56ms
而https因為是在http協議上額外增加了tls協議所以延遲時間大概需要168ms(http+tls)
由此可以看出使用https確實會給網站的打開速度產生影響,最直接的就是用戶打開網站速度變慢。而且當用戶不小心斷開之後又要重>新走完這整一套的步驟。那有什麼辦法可以規避這種辦法呢?
session id是一種用戶斷線重連之後能快速建立連接的一種方法。原理非常簡單,當用戶與伺服器第一次成功完成握手之後,伺服器>端生成一個session id 自身保存一份,另外一份發送給客戶端。當客戶端斷線重連之後客戶端像服務端發送session id 如果服務端發
現這個id存在。則免去繁瑣的tls握手步驟 直接連接。從圖中我們也看到採用這樣的方式延遲時間降低了50%左右
但是方法不適合分布式架構的業務,原因在於session id 是在每一台伺服器中生成的。所以當客戶端重連後連接到伺服器的另外一台
後端業務伺服器就會因為沒有id 而重新進行一次完整握手。
session ticket的原理與session id 相同只不過session ticket 不是生成id 而是根據伺服器上的ticket key 加密一個數據blob發>送給客戶端,然後客戶端重連時發送blob給伺服器,伺服器解密這個blob來判斷是否是重連用戶從而免去繁瑣的tls握手步驟。採取這>樣的方式的好處就是我們可以將session key 存儲在所有的分布式後端業務伺服器上。這樣不管用戶重連到哪一台伺服器都可以通過session key來解密判斷是否為重連用戶。
那我們有更簡單方便的方法嗎?
有的,那就是tls1.3!
如上圖:
tls1.3是最新的tls協議版本。
廢棄了很多年老安全性差的演算法並且採用了更優秀的握手機制。
tls1.3 移除了RSA握手機制,採用了(EC)HDE 握手機制(RSA與DH的優缺點在(對稱加密模式在 關於TLS經驗小結(上) 中有介紹)
移除CBC對稱加密模式,採用AEAD模式(對稱加密模式在 關於TLS經驗小結(中) 中有介紹)
以及其他的特性。 具體詳見
其中最矚目的莫過於新的握手協商機制
TLS1.3
TLS1.2
如上圖tls1.3協議將之前tls1.2需要的步驟整合在一起,然後集中傳輸。減少了握手次數,從而大幅減少了延遲時間。加快了網站訪問
速度,使我們再也不用去糾結不上https不安全,上了https訪問速度慢的歷史性問題。
從之前講的演算法到握手機制。使大家對整個tls協議有了一個大概的認識。從生產環境角度來說,採用ECDH
+ECDSA+AES-GCM的 ECC證書是目前在安全性和性能上都相對平衡的一種證書種類。本站的證書就是採用了ECC證書。
關於ECC證書可以查看
在此感謝峰哥的一次知識分享讓我了解到了相關的知識(文章中的一些示例圖也源於峰哥的ppt)
想具體了解大佬可以訪問以下博客更深入的了解
TLS 1.3 如何用性能為 HTTPS 正名
圖解SSL/TLS協議
分組密碼工作模式
完
C. AES加密可以破解的嗎
沒有破解不了的密碼,但要看值不值得花費精力去做,AES加密演算法目前來說比較安全,真的要去解密的話至少要10幾年
D. 有關AesGCM演算法的一些總結
AesGCM是微信底層通信協議中使用的一種最為重要的加解密演算法,在嘗試使用OpenSSL庫實現這套演算法的過程中,遇到了以下幾個值得注意的點:
在ECB/CCB模式下,補位信息是演算法實現必須考慮的一個維度。但在GCM模式下,補位信息是完全不需要考慮的,明文與密文有著相同的長度。
在普通的Aes加解密演算法中,需要從key/iv/padding/mode這四個維度來考慮演算法的實現。而AesGcm演算法中卻需要從下面這幾個維度來實現演算法:
微信底層通信協議中,服務端下發的密文數據總是比明文數據長了16個位元組,導致這種現象的主要原因是微信實現時將加密使用的tag信息拼接到了密文數據中,客戶端使用JAVA介面解密時,在介面的內部能夠自動的截取tag信息後再解密出明文數據。我並不能確認這種方式是BouncyCastle的固有實現還是微信自己的獨有實現。關於拼接這塊的邏輯,可以參見 這里 。
當使用OpenSSL實現解密微信下發的密文數據時,如果不知道拼接tag這層邏輯時,是不可能成功解密出明文數據的。
E. SSL證書演算法優缺點
第一種演算法就是AES-GCM,AES-GCM是目前很常用的一種分組加密演算法,但是這種演算法會產生一個缺點:那就是計算量會很大,這一缺點會導致性能和電量開銷比較大。因此為了解決這個問題,Intel 推出了名為 AES NI的 x86 指令拓展集,這個拓展集可以從硬體上提供對 AES 的支持,而對於支持AES NI指令的設備來說,使用AES-GCM毫無無疑是最好的選擇。
而移動端所需要的ssl證書也是不一樣的,針對移動端,谷歌開發的ChaCha20-Poly1305是最好的選擇,這也就是我們要講的第二種演算法,Chacha20-Poly1305 是由 Google 專門針對移動端 CPU 優化而採用的一種新式的流式加密演算法,它的性能相比普通演算法要提高3倍,在 CPU 為精簡指令集的 ARM 平台上尤為顯著,其中在ARM v8前效果較明顯。因此對於移動端的ssl證書,通過使用這種演算法,可以大大減少加密解密所產生的數據量,進而可以改善用戶體驗,減少等待的時間,很好地節省電池壽命等,也由於其演算法精簡、安全性強、兼容性強等特點,目前 Google致力於全面將其在移動端推廣。
F. AES安全性能比TKIP好嗎
一、安全性能不同
TKIP本質上是一個WEP補丁,解決了攻擊者通過獲得少量的路由器流量解析出路由器密鑰的問題。TKIP還提供了一個較為完善的安全升級,但是對於保護網路不受黑客攻擊上不夠全面。
AES是一個完全獨立的加密演算法,遠遠優於任何TKIP提供的演算法,該演算法有128位,192位或256位的分組密碼。所以AES安全性能比TKIP好。
二、速度不同
TKIP是一種過時的加密方法,而且除了安全問題,它還會減緩系統運行速度,速度會減慢至54Mbps。
支持WPA2-AES加密的802.11ac理想條件下最大速度為3.46Gbps。所以AES的運行速度相較於TKIP要快。
三、密鑰長度不同
TKIP中密碼使用的密鑰長度為128位,這就解決了WEP密碼使用的密鑰長度過短的問題。
AES 是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192 和 256 位密鑰,並且用 128 位(16位元組)分組加密和解密數據。
G. SSL 證書的演算法有哪些
根據密鑰類型不同將現代密碼技術分為兩類:對稱加密演算法(秘密鑰匙加密)和非對稱加密演算法(公開密鑰加密)。
對稱鑰匙加密系統是加密和解密均採用同一把秘密鑰匙,而且通信雙方都必須獲得這把鑰匙,並保持鑰匙的秘密。非對稱密鑰加密系統採用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的。
對稱加密演算法用來對敏感數據等信息進行加密,常用的演算法包括:
DES(Data Encryption Standard):數據加密標准,速度較快,適用於加密大量數據的場合。
3DES(Triple DES):是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard):高級加密標准,是下一代的加密演算法標准,速度快,安全級別高;
常見的非對稱加密演算法如下:
RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件塊的長度也是可變的;
DSA(Digital Signature Algorithm):數字簽名演算法,是一種標準的 DSS(數字簽名標准);
ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。
H. AES加密演算法原理
一般的加密通常都是塊加密,如果要加密超過塊大小的數據,就需要涉及填充和鏈加密模式,本文對對稱加密和分組加密中的幾種種模式進行一一分析(ECB、CBC、CFB、OFB,CTR)
這種模式是將整個明文分成若干段相同的小段,然後對每一小段進行加密。
優點:
這種模式是先將明文切分成若干小段,然後每一小段與初始塊或者上一段的密文段進行異或運算後,再與密鑰進行加密。
優點:
計算器模式不常見,在CTR模式中, 有一個自增的運算元,這個運算元用密鑰加密之後的輸出和明文異或的結果得到密文,相當於一次一密。這種加密方式簡單快速,安全可靠,而且可以並行加密,但是 在計算器不能維持很長的情況下,密鑰只能使用一次 。CTR的示意圖如下所示:
優點:
優點:
優點:
I. aes-ecb安全嗎
aes-ecb安全
AES演算法作為DES演算法和MD5演算法的替代產品,10輪循環到目前為止還沒有被破解。
J. WPA2 AES加密方式的安全性如何
WPA2與WPA最大的不同在於WPA2支持AES加密演算法,AES能夠為信息提供128位加密能力。目前很多服務商都在自己的設備中加入了WPA2支持,而且微軟也在Windows XP系統的補丁SP2中集成了對WPA2的支持。然而AES加密演算法更像是一柄雙刃劍,應用了AES的WPA2失去了WPA的一項重要優點,那就是加密演算法的變更使得與舊有設備的兼容變得極其困難。目前大部分設備的處理能力都無法進行128位的加密和解密操作,所以必須進行升級才能支持WPA2標准。 就是說,BT3能破解WEP加密方式,一個原因就是密碼比較簡單,數據流加密容易用枚舉法得到密碼 而WPA2 AES加密方式採用128位的加密和解密操作,用枚舉法不現實,也無法通過演算法直接解析密碼,目前唯一的可能辦法就是用「密碼字典」,這是一種另類的枚舉法。 所以「假如你設定的密碼在字典裡面找不到」,這的確意味著你的安全性有保障