跳轉到內容

密碼學/公鑰概述

來自華夏公益教科書,開放的書籍,為開放的世界

我們在本書的前面簡要提到了 非對稱密碼。 在本章和後續章節中,我們將更詳細地描述它們的工作原理。

公鑰密碼學的發現徹底改變了 1970 年代密碼學的實踐。 在公鑰密碼學中,用於加密訊息的金鑰與用於解密訊息的金鑰不同。 這需要非對稱金鑰演算法。

(所有以前的密碼演算法和密碼系統,現在被追溯分類為“對稱金鑰密碼學”或“共享金鑰密碼學”,始終使用相同的金鑰來加密訊息,並在稍後解密該訊息)。

公鑰密碼學是一種密碼學,其中人和人之間的金鑰交換過程不必保密。 私鑰實際上從未交換過。 事實上,人 A 將資訊(可能是關於會話金鑰的資訊)傳送給 B,以便只有 B 能夠理解。 攻擊者無法發現交換的意義,因為 B 擁有攻擊者沒有的資訊。 人 A 也沒有訪問 B 的秘密資訊(私鑰),他只是透過“公鑰”間接訪問了它。 公鑰是透過使用單向函式從私鑰生成的。

公鑰密碼學背後的概念可以用一個簡單的謎題來表達。

愛麗絲想給鮑勃發送一個飾品,而沒有讓入侵者偷走。 每個人都有一個鎖和一把鑰匙。 非公鑰解決方案

  1. 愛麗絲把她的鑰匙放進盒子裡,送到鮑勃那裡。
  2. 鮑勃複製了鑰匙,並把它寄了回來。
  3. 愛麗絲將飾品裝在一個鎖定的盒子裡寄出。
  4. 鮑勃用複製的鑰匙開啟盒子。

雖然這種解決方案是最直觀的,但它有一個主要的問題。 攻擊者可以監控這些盒子並複製傳送的鑰匙。 如果攻擊者擁有愛麗絲的鑰匙,飾品或其他任何東西在運輸途中都會被盜。 對一些人來說,這個謎題似乎不可能,但那些瞭解公鑰密碼學的人很容易解決它。 公鑰解決方案

  1. 愛麗絲將飾品放在一個盒子裡,鎖上並送到鮑勃那裡。
  2. 鮑勃用自己的鎖再次鎖上盒子,然後將盒子寄回來。
  3. 愛麗絲取下她的鎖,寄給鮑勃。
  4. 鮑勃取下最後的鎖,拿走了飾品。

這個謎題的訣竅是給盒子加了兩道鎖。

這種來回的“雙鎖”過程在許多非對稱金鑰演算法中使用,例如 ElGamal 加密和 Diffie-Hellman 金鑰交換,但並非所有演算法都使用。

這就是雙鎖原則,但它不是公鑰密碼學,因為兩個金鑰都是秘密的。 在公鑰密碼學中,一個金鑰是公開的,另一個是秘密的。 任何知道公鑰的人都不能解密用公鑰加密的訊息。 只有秘密金鑰才能解密用公鑰加密的訊息。

公鑰在現實世界中的類比是掛鎖。 掛鎖很容易關上,但反過來就難多了,即開啟。 這並不不可能,但與關上它相比,開啟它需要更多的努力,假設你沒有(私有)鑰匙。 愛麗絲可以將一個開啟的掛鎖透過郵件寄給鮑勃(相當於公鑰)。 然後,鮑勃將一個給愛麗絲的資訊放入一個盒子裡,並用掛鎖鎖上盒子。 現在,鮑勃將鎖定的盒子寄回給愛麗絲,愛麗絲用她的私鑰開啟它。

請注意,這種方法容易受到中間人攻擊。 如果查爾斯攔截了帶有愛麗絲掛鎖的郵件,並用他自己的掛鎖替換了它,鮑勃將用錯誤的掛鎖鎖上盒子,查爾斯將能夠攔截答案。 然後,查爾斯甚至可以用愛麗絲的掛鎖再次鎖上盒子,並將盒子轉發給愛麗絲。 這樣,她將永遠不會注意到資訊被攔截了。 這說明從可信來源獲取公鑰(掛鎖)非常重要。 這正是證書的用途。 它們與公鑰一起提供,基本上會說一些類似“我,微軟,在此確認此掛鎖屬於愛麗絲”的話,並使用安全的數字簽名進行簽名。

因此,如果愛麗絲公開了她的金鑰,有人(鮑勃)就可以安全地向愛麗絲髮送加密資料。

鮑勃能夠證明自己擁有一個秘密金鑰,方法是提供

  • 純文字
  • 用秘密金鑰加密的相同文字
  • 與秘密金鑰相對應的公鑰。

與雙鎖原則類似的是 Merkle 的謎題,它是 Diffie-Hellman 金鑰交換的祖先,而 Diffie-Hellman 金鑰交換本身與 RSA 公鑰系統非常相似。

進一步閱讀

[編輯 | 編輯原始碼]
華夏公益教科書