11

據我所知,通過SSL,瀏覽器獲取安全網站的公鑰,並通過公鑰加密rsa算法,這兩個建立會話密鑰,然後通過一些對稱算法繼續通信,因爲對稱密鑰加密/解密速度更快。 SSL使用哪種對稱密鑰算法? DES? AES?或者是其他東西?SSL使用哪種對稱密鑰算法?

+0

http://en.wikipedia.org/wiki/Secure_Sockets_Layer#TLS_handshake_in_detail – 2011-05-22 14:38:48

+0

總結其他人所說的話:有幾種選擇;連接中使用的內容取決於特定的客戶端和服務器。 – Jumbogram 2011-05-23 01:09:54

回答

19

當客戶端連接到服務器時,它協商所謂的密碼組(加密組合,密鑰交換,認證算法)來使用。每個SSL客戶端或服務器都有一個允許的密碼套件列表,並且在握手過程中,客戶端和服務器協商使用哪種密碼套件。有時可能發生,沒有共同的分母(密碼套件不相交),並且無法建立連接。支持SSL的對稱算法有DES,3DES,ARCFOUR,AES,Camellia,RC2,IDEA,SEED,NULL(無加密)。

+0

你忘了ARIA:http://tools.ietf.org/html/rfc6209 – Jumbogram 2011-05-23 01:00:33

+0

@jumbogram感謝你指點這個RFC,我不知何故錯過了它。但是,我應該指出,嚴格來說這不是TLS的一部分。 RFC是「信息性的」而不是Sstandards Track,它具有非常本地化的用途(一個國家)。我還可以提到在前蘇聯很受歡迎的GOST,但它並沒有在其他地方使用過。 – 2011-05-23 06:18:06

5

在連接建立(「握手」)期間,客戶端和服務器決定使用「密碼套件」。密碼套件陳述使用的算法(非對稱密鑰協議,對稱加密和完整性檢查)。詳細地說,客戶端發送它支持的密碼套件的列表,並且服務器選擇其中的一個,它也支持它。通常,服務器在客戶端發送的客戶端中選擇它支持的第一個套件(換句話說,客戶端消息中的套件的排序是它的「優先順序」,服務器通常會尊重客戶端的首選項)。

例如,密碼套件TLS_RSA_WITH_3DES_EDE_CBC_SHA意味着會話密鑰將使用RSA(非對稱加密,使用來自服務器證書的RSA公鑰)傳輸,數據將使用3DES進行對稱加密,並且完整性檢查將會使用SHA-1散列函數。有關標準密碼套件的列表,請參閱TLS specification(其他套件稍後添加,特別是一些帶有AES的套件)。