用信鴿解釋https

ylzsmallsun發表於2018-09-25

原文地址:medium.freecodecamp.org/https-expla…

用信鴿解釋https

密碼學是一門很難理解的學科。它充滿了數學證明。但是對我們來說,其中大部分的複雜性,是沒有必要去理解其在高層次到底發生了什麼。

如果你點開這篇文章,希望建立下一代HTTPS協議,那非常抱歉僅有鴿子是不夠的。不過可以先煮杯咖啡,然後慢慢享受這篇文章。

Alice, Bob and … pigeons?

你通過網路做的任何事情(讀該篇文章,在亞馬遜上買東西,上傳貓的照片)都可歸結為傳送資訊給伺服器並從伺服器獲取資訊。

這可能有點抽象。讓我們想象一下這些資訊是通過信鴿傳遞的。我知道這看起來可能有點隨意,但是請相信我https就是用相同的方式工作的,雖然它在速度上快很多。

同理,我們不討論客戶端,伺服器和黑客。我們將談論Alice, Bob 和 Mallory.如果你不是第一次嘗試理解密碼學的概念,這幾個名字你應該不陌生,因為它們經常出現在技術文獻裡。

第一次天真的通訊

如果Alice想給Bob傳送一條訊息,她把訊息綁在信鴿的腿上然後傳送給Bob。Bob收到訊息,然後讀訊息,一切看起來都很好。

但如果Mallory在空中劫持了Alice的信鴿並換掉了訊息會怎麼樣呢?Bob將沒有辦法知道Alice傳送的訊息在運送途中被更改了。

這就是http工作的方式。非常可怕是不是?我不會在HTTP上傳送我的銀行證書,你應該也不會這麼做。

密碼

現在如果Alice和Bob都很狡猾。他們同意使用密碼來寫他們的訊息。他們將每個字元在字母表中的位置移動三個位置。如:D → A, E → B, F → C。明文資訊“secret message”將變成“pbzobq jbppxdb”。

現在如果Mallory劫持信鴿,她將不能把資訊改成一些有意義的,也不能理解訊息裡說了些什麼。因為她不知道密碼是什麼。但是Bob可以輕鬆地反向應用密碼然後解密訊息(A → D, B → E, C → F)。然後密文“pbzobq jbppxdb”可解密成“secret message”。

成功!

這就是所謂的對稱金鑰加密。因為如果你知道怎麼加密資訊你也就知道如何解密。

上面描述的編碼通常稱為凱撒密碼。在現實生活中,我們使用更加複雜的編碼,但是主要的思想還是一樣的。

我們怎麼決定祕鑰?

對稱祕鑰加密在除了傳送方和接收方,沒有其他人知道使用了什麼祕鑰時是安全的。在凱撒密碼中,祕鑰就是一個偏移量即每個字母移動的偏移數。在我們的例子中我們使用的偏移量是3,但也可以是4或者12。

問題在於如果Alice和Bob在利用信鴿傳送訊息之前沒有見過面,他們沒有辦法安全地建立一個祕鑰。如果他們在訊息中同時傳送祕鑰,那Mallory可以劫持訊息並發現祕鑰。這就允許Mallory讀取或者修改訊息。

這就是屬於中間人攻擊的一個經典例子。並且唯一的避免方式就是一起改變加密系統。

攜帶盒子的鴿子

所以Alice和Bob想出了一個更好的系統。當Bob想給Alice傳送一條訊息時,他遵循以下的流程:

  • Bob給Alice傳送一隻不含訊息的鴿子
  • Alice傳送回一隻攜帶一個盒子的鴿子,盒子上有一把開啟的鎖,但自己保留鑰匙。
  • Bob把訊息放進盒子裡,關上鎖,並把盒子傳送給Alice.
  • Alice接受盒子,用鑰匙開啟它然後讀取訊息。

這種方式Mallory無法通過劫持資訊篡改訊息,因為她沒有祕鑰。相同的流程用同樣應用於Alice給Bob傳送訊息。

Alice和Bob就是應用了俗稱的非對稱祕鑰加密。它被叫做非對稱是因為你可以加密訊息(鎖上盒子)但是不能解密訊息(開啟關上的盒子)。在技術文獻中這個盒子被稱為公鑰,開啟它的鑰匙被稱為私鑰。

如何信任盒子

如果你仔細思考你可能會發現我們還存在一個問題。當Bob接收到開啟的盒子後如何確定它是來自Alice的並且Mallory沒有攔截鴿子並替換成Mallory自己有祕鑰的盒子呢。

Alice決定她將給盒子簽名,通過這種方式當Bob接受到盒子時他檢查簽名然後知道它是Alice傳送過來的盒子。

你們可能會想,Bob第一次怎麼辨別Alice的簽名呢?這是一個好問題。Alice和Bob也有這個問題,所以,他們決定讓Ted給盒子簽名,而不是Alice。

誰是Ted? Ted就是著名的,值得信耐的朋友。Ted將他的簽名給每一個人,每個人也相信他將只會給合法的人簽名盒子。

只要當Ted確認請求籤名的人是Alice時,他才會對盒子簽名Alice。因此Mallory無法從Ted那獲取Alice的簽名來假冒Alice,Bob也會知道那個信盒是假冒的。因為Ted只在鑑定完請求者的身份後才會給他們的信盒簽名。

Ted在技術上常被稱作為證書頒發中心,你正在閱讀這篇文章的瀏覽器就附帶了各式各樣的證書頒發中心。

所以當你第一次訪問一個站點,你信任它的盒子。因為你信任Ted,並且Ted告訴你那個盒子時合法的。

盒子很重

Alice和Bob現在有一個可信耐的系統去通訊,但是他們發現攜帶盒子的鴿子比僅僅攜帶訊息的鴿子更慢。

他們決定他們將僅使用盒子方法(非對稱加密)選取一個祕鑰,使用對稱加密來加密訊息(還記得凱撒密碼嗎)

這種方式結合了兩者的優勢。非對稱加密的可靠性以及對稱加密的效率。

在現實世界中沒有慢的鴿子,但是無論如何使用對稱加密總是比使用對稱加密慢,因此我們僅使用它用於交換祕鑰。

現在你知道HTTPS是如何工作的,你的咖啡也應該好了,去享受咖啡吧。

翻譯若有不正之處,歡迎指出!

相關文章