什麼是密碼編譯金鑰?

金鑰是一組按特定順序排列的隨機字元。加密通訊協定使用金鑰來更改資料,對資料進行加擾,這樣任何沒有金鑰的人都無法解碼資訊。

學習目標

閱讀本文後,您將能夠:

  • 瞭解密碼學中的「金鑰」是什麼
  • 瞭解在加密中如何使用金鑰來加擾資料
  • 解釋交換公開金鑰如何使 HTTPS 成為可能

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

使用 Cloudflare 的免費 SSL/TLS 提高安全性和信任

密碼編譯金鑰

什麼是密碼編譯金鑰?

在密碼學中,金鑰是加密演算法中用於更改資料而使用的字串,以便使其看起來是隨機的。就像實體鑰匙一樣,它鎖定(加密)資料,以便只有擁有相匹配的鑰匙的人才能解鎖(解密)資料。

密碼編譯金鑰 Hello

原始資料稱為純文字,金鑰加密後的資料稱為加密文字

公式:

純文字
+ 金鑰
= 加密文字

早期加密形式的金鑰

在電腦出現之前,加密文字通常是透過簡單地用純文字中的一個字母替換另一個字母來建立的,這種方法稱為「替換密碼」。例如,假設某人向另一人傳送了一條訊息「Hello」,之後每個字母都被替換為該字母後面的一個字母:「Hello」就變成了「Ifmmp」。

H e l l O
+1 +1 +1 +1 +1
I F M M P

「Ifmmp」看起來像一個毫無意義的字母字串,但是如果有人知道金鑰,他們可以替換正確的字母並將訊息解密為「Hello」。在此範例中,金鑰為(字母)-1,按照字母表將每個字母向前移動一個位置以得到真實的字母。

I F M M P
-1 -1 -1 -1 -1
H e l l O

透過簡單的統計分析,相對容易破解這種密碼,因為在給定的文字中某些字母會比其他字母更頻繁地出現(例如,E是英語中最常見的字母)。為了解決這個問題,密碼學家開發了一種稱為一次性密碼本的系統。

一次性密碼本是只使用一次的金鑰,其所包含的值的個數至少與純文字中字元的數量一樣多。換句話說,每個字母都將被替換成一個新字母,而新字母由原本的純文字字母在字母表中向後移動獨特數量的字母數而得出。

例如,假設某人對訊息「Hello」進行加密,並使用了一次性密碼本,其包含的值為 7, 17, 24, 9, 11。

H e l l O
7 17 24 9 11

在之前,我們只是將每個字母向後推移一個位置(字母 +1),而現在我們將每個字母向後推不同的步數來得到新的字母。我們將第一個字母 H 往後推 7 個;第二個字母後推 17 個;以此類推。如果以此後推超出了字母 Z,我們只需返回到字母表的開頭並繼續後推。

H e l l O
7 17 24 9 11
O v J U Z

從純文字「Hello」開始,我們現在透過金鑰「7, 17, 24, 9, 11」可以得出加密文字「Ovjuz」。

要透過一次性密碼本進行通訊,對話雙方必須為每條單獨的訊息使用相同的金鑰(對稱加密),但每次有新訊息時使用不同的金鑰。儘管對於任何第三方而言,「Ovjuz」看起來都是胡言亂語,但收到加密文字「Ovjuz」的人會知道使用金鑰「7, 17, 24, 9, 11」來對其進行解密(解密則需反向向前推移字母而不是向後):

O v J U Z
7 17 24 9 11
H e l l O

因此,簡單的訊息可以透過隨機資料字串(金鑰)進行更改,以便進行加密或解密。

現代加密中的金鑰

雖然以上早期密碼學的範例說明了如何使用隨機資訊字串將純文字轉換為加密文字,但如今的加密金鑰卻要複雜得多。

例如,網站的公開金鑰可能是這樣的:

04 CE D7 61 49 49 FD 4B 35 8B 1B 86 BC A3 C5 BC D8 20 6E 31 17 2D 92 8A B7 34 F4 DB 11 70 4E 49 16 61 FC AE FA 7F BA 6F 0C 05 53 74 C6 79 7F 81 12 8A F7 E2 5E 6C F5 FA 10 69 6B 67 D9 D5 96 51 B0(2019 年複製於 cloudflare.com SSL 憑證

這比我們上面用來加密「Hello」的「7 17 24 9 11」金鑰要複雜得多。

現代加密不是簡單的後推或前移,而是使用稱為演算法的複雜數學公式。而且,現代金鑰通常會進一步隨機化,而不是使用簡單的隨機數字字串作為金鑰。

這種情況有幾個原因:

  1. 與人類密碼學家相比,電腦能夠在更短的時間內完成更複雜的計算,從而使更加複雜的加密技術不僅成為可能,更是不可或缺。
  2. 電腦可以更改二進位層級的資訊,即由 1 和 0 組成的資料,而不僅僅是單個字母和數位的層級。
  3. 如果加密的資料不夠隨機化,則電腦程序將能夠對其進行解密。真正的隨機性對於真正的安全加密非常重要。

加密金鑰與加密演算法結合使用,可以對文字進行加擾,使其超出人類的識別範圍。

SSL 加密 (HTTPS) 中如何使用金鑰?

加密有兩種:對稱式加密和非對稱加密,後者也稱為公開金鑰加密。在對稱式加密中,對話的雙方都使用相同的金鑰在純文字與加密文字之間進行轉換。

在非對稱或公開金鑰加密中,對話的雙方各自使用不同的金鑰。一個金鑰稱為公開金鑰,另一個稱為私密金鑰,之所以如此命名,是因為其中一方會將其保密,並且永遠不會與任何人分享。當使用公開金鑰加密純文字時,只有私密金鑰可以解密它,而不是使用公開金鑰。

SSL(或如今稱為 TLS)是一種用於保持網際網路通訊安全的加密通訊協定,透過 HTTPS 而不是 HTTP 提供服務的網站使用這種加密。在 TLS/SSL 中,網站或 Web 應用程式將同時擁有公開金鑰和私密金鑰。公開金鑰在網站的 SSL 憑證中公開共用,任何人都可以查看。私密金鑰安裝在來源伺服器上,從不分享。

TLS/SSL 通訊工作階段以 TLS 交握開頭,在此期間,網站和用戶端使用公開金鑰和私密金鑰來產生新金鑰,稱為工作階段金鑰。然後,雙方都可以使用這些工作階段金鑰來回加密它們來回傳遞的訊息。

因此,TLS 從非對稱加密(使用兩個金鑰)開始,然後過渡到對稱式加密(使用一個金鑰)。雙方在通訊工作階段期間使用相同的金鑰,但是當他們開始新的工作階段時,它們將一起產生新的金鑰。