密碼套件:密碼,算法和協商安全設置(一)

如果我們在與SSL / TLS和HTTPS加密的交互時間足夠長,那麼我們將會遇到“密碼套件”這一個詞組。聽起來像一個某種服務套餐,但確實密碼套件在我們通過Internet建立的每個HTTPS連接中都起着至關重要的作用。

那麼,什麼是密碼套件?

密碼是一種算法,密碼算法是密碼協議的基礎,用於加密和解密的數學函數。更具體地說,密碼算法是執行密碼功能的一組步驟-可以是加密,解密或數字簽名。
隨着科技的迅猛發展,密碼變得更加複雜,但其背後的邏輯一直保持不變。今天,我們討論SSL / TLS密碼套件,關於它們的各個部分,我們來看TLS 1.2和TLS 1.3之間的變化。

密碼套件的背景

我們說密碼實際上只是一種算法,或者是一組用於執行特定數學功能的步驟:可以是加密、解密或者數字簽名。密碼以數學爲基礎,即使是Caesar(凱撒)的原始移位密碼也需要向前計算字母中指定數量的空格以加密某些內容。
我們下面可以使用凱撒密碼來解釋一些基本概念,這些基本概念在以後進入現代密碼套件時會非常有用。如今是數字時代,那些原始的未加密數據被稱爲純文本,它很容易以原始格式被讀取。在執行加密過程之後,它就成爲一段密文,並且在正常情況下,沒有私有密鑰的任何人都無法讀取。

密鑰與算法

 
加密是通過密鑰執行的,密鑰和算法如何組合在一起很重要。
所使用的算法或密碼都是這樣,它必須用來加密明文的一系列步驟。
根據密碼系統,算法中的值或算法本身得出的值都是密鑰。
我們可以這樣思考:算法是給定密碼系統使用的一般原理或規則,密鑰是實際執行功能的對象。

數學原理

我們回到用凱撒密碼算法爲例加以說明。在凱撒密碼中,實際算法爲:
 
下面我們分析一下每個組件。
 
在凱撒密碼中,關鍵只是你決定移動字母的空格數。因此,在下面的示例中,關鍵值爲3。我們將所有內容向前移動三個空格。
 
現在讓我們添加模數。模數運算在達到模數(基本上是行的末尾,即數字上限)之後迴繞,但是你需要考慮一下。對於字母,模數顯然爲26。有26個字母,因此,如果要向前移動三個空格,則必須環繞並再次從1(或A)開始。因此,在這種情況下,等式爲B =(Y + 3)(mod 26)。
 

現代密碼和密碼套件

這些數學概念簡直是越發展越複雜,現在就讓我們將對算法瞭解到的知識應用於SSL / TLS和HTTPS連接之上。
HTTPS連接實際上是一個相當複雜的過程。之前,我們幾篇文章有提到TLS握手。在此過程中,客戶端和服務器就相互支持的密碼套件達成一致,然後使用所選的密碼套件來協商安全連接。
使握手如此複雜的部分原因在於,它利用了幾種不同的加密功能來實現HTTPS連接。在握手期間,客戶端和服務器將使用:
  • 密鑰交換算法
  • 批量加密算法
  • 數字簽名方案
  • 散列/ MAC算法
這些密碼在不同的地方都可以協同工作,以執行身份驗證,密鑰生成和交換以及校驗和確保完整性。
爲了確定使用哪種特定算法,客戶端和服務器首先確定要使用的密碼套件。密碼套件是這些算法的集合,可以一起使用以執行握手和隨後的加密/解密。在連接開始時,雙方共享受支持密碼套件的列表,然後確定最安全,相互支持的套件。
現在,數學變得更復雜了……但是基本概念仍然相同。
有37個TLS 1.2密碼和5個TLS 1.3密碼。理解它們的不同部分是理解HTTPS連接和SSL / TLS本身的關鍵。讓我們從TLS 1.2(該協議的更常見的版本)的概述開始,然後我們將討論TLS 1.3的改進之處。
什麼是TLS 1.2密碼套件?
正如我們在上一節中所述,密碼套件是用於在SSL / TLS握手期間協商安全設置的算法的組合。客戶端在發送ClientHello消息時,將其支持的密碼套件的優列表發送給服務端。然後,服務器從客戶端支持的列表中選擇的自己支持的密碼套件在ServerHello中進行響應。
密碼套件的命名組合爲:
  • 密鑰交換算法(RSA,DH,ECDH,DHE,ECDHE,PSK)
  • 認證/數字簽名算法(RSA,ECDSA,DSA)
  • 批量加密算法(AES,CHACHA20,Camellia,ARIA)
  • 消息驗證碼算法(SHA-256,POLY1305)
例如以下一個密碼套件的示例:
 
 
我們爲它塗上顏色,以便幫助你區分密碼。
TLS是協議。從ECDHE開始,我們可以看到在握手期間,密鑰將通過臨時的橢圓曲線Diffie Hellman(ECDHE)進行交換。RSA是認證算法。AES_128_GCM是批量加密算法:AES以128位密鑰大小運行Galois計數器模式。最後,SHA-256是散列算法。
在TLS 1.2握手期間,它將像這樣進行:
  1. 客戶端和服務器確定相互支持的密碼套件
  2. 服務器發送其證書和公鑰
  3. 客戶驗證證書和數字簽名
  4. 執行密鑰交換功能以生成對稱會話密鑰
  5. 數據開始加密;HMAC用於確保握手不被篡改
TLS 1.2有37種不同的密碼套件可供選擇,而且並不是所有的密碼套件都被認爲是安全的。我們可能想知道如何使用近40種不同的密碼套件。有兩個方面。一方面,TLS 1.2已經存在大約10年了,這意味着出現了許多新算法,而且舊算法已經被淘汰了。碰巧的是,由於需要四種不同的算法,並且存在無數種可能性,因此,負責管理所有這些工作的組織IANA(互聯網數字分配機構)必須繼續創建新的密碼組合(即新的密碼套件)。
當然,並非所有算法都可以這樣很好地配合使用,但是目前使用了37個已批准的TLS 1.2密碼套件已經足夠使用。
下期接着深入地研究TLS 1.2密碼套件的四個不同組件。
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章