密碼套件:密碼,演算法和協商安全設定(一)
阿新 • • 發佈:2022-01-06
如果我們在與SSL / TLS和HTTPS加密的互動時間足夠長,那麼我們將會遇到“密碼套件”這一個片語。聽起來像一個某種服務套餐,但確實密碼套件在我們通過Internet建立的每個HTTPS連線中都起著至關重要的作用。
我們下面可以使用凱撒密碼來解釋一些基本概念,這些基本概念在以後進入現代密碼套件時會非常有用。如今是數字時代,那些原始的未加密資料被稱為純文字,它很容易以原始格式被讀取。在執行加密過程之後,它就成為一段密文,並且在正常情況下,沒有私有金鑰的任何人都無法讀取。
下面我們分析一下每個元件。
在凱撒密碼中,關鍵只是你決定移動字母的空格數。因此,在下面的示例中,關鍵值為3。我們將所有內容向前移動三個空格。
現在讓我們新增模數。模數運算在達到模數(基本上是行的末尾,即數字上限)之後迴繞,但是你需要考慮一下。對於字母,模數顯然為26。有26個字母,因此,如果要向前移動三個空格,則必須環繞並再次從1(或A)開始。因此,在這種情況下,等式為B =(Y + 3)(mod 26)。
HTTPS連線實際上是一個相當複雜的過程。之前,我們幾篇文章有提到TLS握手。在此過程中,客戶端和伺服器就相互支援的密碼套件達成一致,然後使用所選的密碼套件來協商安全連線。
使握手如此複雜的部分原因在於,它利用了幾種不同的加密功能來實現HTTPS連線。在握手期間,客戶端和伺服器將使用:
那麼,什麼是密碼套件?
密碼是一種演算法,密碼演算法是密碼協議的基礎,用於加密和解密的數學函式。更具體地說,密碼演算法是執行密碼功能的一組步驟-可以是加密,解密或數字簽名。 隨著科技的迅猛發展,密碼變得更加複雜,但其背後的邏輯一直保持不變。今天,我們討論SSL / TLS密碼套件,關於它們的各個部分,我們來看TLS 1.2和TLS 1.3之間的變化。密碼套件的背景
我們說密碼實際上只是一種演算法,或者是一組用於執行特定數學功能的步驟:可以是加密、解密或者數字簽名。密碼以數學為基礎,即使是Caesar(凱撒)的原始移位密碼也需要向前計算字母中指定數量的空格以加密某些內容。金鑰與演算法
加密是通過金鑰執行的,金鑰和演算法如何組合在一起很重要。 所使用的演算法或密碼都是這樣,它必須用來加密明文的一系列步驟。 根據密碼系統,演算法中的值或演算法本身得出的值都是金鑰。 我們可以這樣思考:演算法是給定密碼系統使用的一般原理或規則,金鑰是實際執行功能的物件。數學原理
我們回到用凱撒密碼演算法為例加以說明。在凱撒密碼中,實際演算法為:現代密碼和密碼套件
這些數學概念簡直是越發展越複雜,現在就讓我們將對演算法瞭解到的知識應用於SSL / TLS和HTTPS連線之上。- 金鑰交換演算法
- 批量加密演算法
- 數字簽名方案
- 雜湊/ MAC演算法
- 金鑰交換演算法(RSA,DH,ECDH,DHE,ECDHE,PSK)
- 認證/數字簽名演算法(RSA,ECDSA,DSA)
- 批量加密演算法(AES,CHACHA20,Camellia,ARIA)
- 訊息驗證碼演算法(SHA-256,POLY1305)
- 客戶端和伺服器確定相互支援的密碼套件
- 伺服器傳送其證書和公鑰
- 客戶驗證證書和數字簽名
- 執行金鑰交換功能以生成對稱會話金鑰
- 資料開始加密;HMAC用於確保握手不被篡改