密碼學(xué)可能是一個難以理解的主題。它充滿了數(shù)學(xué)證明。除非你真的需要開發(fā)密碼系統(tǒng),否則,如果你只想從宏觀的角度了解密碼學(xué),你并不需要理解這些復(fù)雜的內(nèi)容。
如果你抱著能夠創(chuàng)建下一個 HTTPS 協(xié)議的期望打開這篇文章,我不得不遺憾地表示只有信鴿是不夠的。否則,煮一些咖啡,享受這篇文章吧。
Alice,Bob 和信鴿?
你在互聯(lián)網(wǎng)上的任何活動(閱讀這篇文章,在亞馬遜上買東西,上傳貓咪的圖片)都?xì)w結(jié)為向服務(wù)器發(fā)送消息和從服務(wù)器接收消息。
這么講聽起來可能有點(diǎn)抽象,因此,我們不妨假設(shè)這些信息是通過信鴿傳遞的。我明白這么假設(shè)顯得很隨意,但請相信我:HTTPS 的工作原理就是這樣的,只是快得多。
本文中我們并不會使用,服務(wù)器,客戶端和黑客這樣的術(shù)語,取而代之的是,我們會依次使用人名 Alice、 Bob 和 Mallory來代替它們。如果你不是第一次嘗試?yán)斫饷艽a概念,你可以認(rèn)出這些名字,因?yàn)樗鼈儽粡V泛用于技術(shù)文獻(xiàn)中。
一次簡單的通訊
如果 Alice 想要給 Bob 傳遞一條信息,她將信息綁在信鴿的腿上,然后讓信鴿傳給 Bob。Bob 收到信息,讀取信息。一切都正常。
但要是 Mallory 途中攔截了 Alice 的信鴿,并且改變了信息的內(nèi)容?Bob 無法知道 Alice 發(fā)送的信息在傳遞途中被修改了。
這就是HTTP的工作原理。挺可怕的,對吧?我不會通過 HTTP 協(xié)議來發(fā)送我的銀行憑證,你也不應(yīng)該這么做。
一個密令
那如果 Alice 和 Bob 都很機(jī)靈呢。他們同意將使用密令來寫信息。他們將字母表中的每個字母偏移 3 個位置。比如:D -> A, E -> B, F -> C。明文“secret message”將轉(zhuǎn)換成“pbzobq jbppxdb”。
現(xiàn)在,如果 Mallory 攔截了信鴿,她既不能把信息改變成一些有意義的信息,也不能明白信息里說的內(nèi)容,因?yàn)樗恢烂芰?。但是Bob可以簡單地反向應(yīng)用密令(A -> D, B -> E, C -> F)將信息解密。密文“pbzobq jbppxdb”將被解密回“secret message”。
大功告成!
這被稱為對稱密鑰密碼術(shù),因?yàn)楫?dāng)你知道如何加密一條信息,你也知道如何給信息解密。
我在上面介紹的密令通常被稱為凱撒密碼。在現(xiàn)實(shí)生活中,我們使用更高級和復(fù)雜的密令,但是主要思路是相同的。
我們?nèi)绾螞Q定密鑰是什么?
如果只有發(fā)送方和接收方知道密鑰,對稱密鑰密碼術(shù)是很安全的。在凱撒密碼中,密鑰是一個偏移值,這個偏移值決定每個字母應(yīng)該偏移多少。在我們的例子中,我們使用的偏移值是 3,但是也能是 4 或者 12。
不過這么設(shè)計會有個問題:在用信鴿傳遞信息之前,如果 Alice 和 Bob 之前從沒見過,他們沒有安全的方式創(chuàng)建一個密鑰。如果他們將密鑰包含在信息之中,Mallory 將攔截信息并且發(fā)現(xiàn)密鑰。后果就是:無論 Alice 和 Bob 發(fā)送的信息是否加密,Mallory 都能讀取或者改變攔截到的信息。
這是一個典型的中間人攻擊例子。避免它的唯一方法是改變之前的密碼系統(tǒng)。
攜帶盒子的信鴿
所以 Alice 和 Bob 想出了一個更好的系統(tǒng)。當(dāng) Bob 想要發(fā)送信息給 Alice 時,Alice 將遵照下面的流程:
Bob 向 Alice 傳送一只信鴿,信鴿不攜帶任何信息。
Alice 將這只信鴿傳回給 Bob,信鴿攜帶一只開著鎖的盒子以及密鑰。
Bob 把信息放到盒子里,將鎖鎖上,將盒子傳送給 Alice。
Alice 收到盒子,使用密鑰打開盒子,讀取信息。
通過這種方式傳遞信息,Mallory 不可能通過攔截信鴿的方式來改變信息,因?yàn)樗龥]有密鑰。當(dāng) Alice 想要向 Bob 發(fā)送信息時,遵循相同的流程。
Alice 和 Bob 剛剛使用了通常所說的非對稱密鑰密碼術(shù)。之所以稱它為非對稱,是因?yàn)榧词鼓憧梢约用芤粭l信息(鎖上盒子)但你也不能將它解密(打開鎖住的盒子)。
我怎么信任這個盒子?
如果你夠仔細(xì)的話,你可能已經(jīng)意識到我們?nèi)匀挥幸粋€問題。當(dāng) Bob 收到那個開著的盒子時,他如何確信這是來自 Alice 的盒子,而不是 Mallory 攔截信鴿后,將來自于 Alice 的盒子替換成 Mallory 自己設(shè)置了密鑰后的盒子。
Alice 決定對盒子進(jìn)行數(shù)字簽名,通過這種方式,當(dāng) Bob 收到盒子,他通過核對簽名的一致性來確定盒子是否來自 Alice。
有些人可能就會想 Bob 如何識別 Alice 的簽名?不錯的問題。Alice 和 Bob 也有同樣的疑問。因此他們決定讓 Ted 對盒子進(jìn)行數(shù)字簽名,而不是 Alice。
Ted 是誰?Ted 是一個著名且值得信賴的人。每個人都可以從Ted 那里獲得簽名,每個人都相信Ted 只會為合法的人提供盒子的數(shù)字簽名服務(wù)。
只有當(dāng)Ted 確信正在請求簽名的人是 Alice,Ted 才會為 Alice 提供盒子數(shù)字簽名的服務(wù)。因此 Mallory 不能再像之前那樣攔截 Alice 的盒子、替換盒子后傳送給 Bob 了,因?yàn)?Bob 會發(fā)現(xiàn)這個盒子在 Ted 那進(jìn)行數(shù)字簽名的是 Mallory,而不是 Alice。
Ted 在技術(shù)術(shù)語中通常被稱為證書頒發(fā)機(jī)構(gòu),你閱讀這篇文章所使用的瀏覽器安裝著各種證書頒發(fā)機(jī)構(gòu)的簽名。
因此當(dāng)你第一次連接到一個網(wǎng)站,你信任它的盒子,因?yàn)槟阈湃?Ted,而 Ted 告訴你這個盒子是合法的。
盒子太重了
Alice 和 Bob 現(xiàn)在有了一個可靠的通信系統(tǒng),但是他們意識到和僅僅攜帶信息的信鴿相比,攜帶盒子的信鴿太慢了。
他們決定只在傳遞密鑰的時候使用盒子的方法(非對稱密碼術(shù)),加密信息使用對稱密碼術(shù)(記得之前提到的凱撒密碼?)。
這樣的話可謂兩全其美:非對稱密碼術(shù)的可靠性和對稱密碼術(shù)的效率都有了。
在現(xiàn)實(shí)世界中,“信鴿”的傳送速度都很快,但盡管這么講,使用非對稱密碼技術(shù)加密消息比使用對稱密碼技術(shù)慢,所以我們只使用它來交換加密密鑰。
現(xiàn)在你知道了HTTPS的工作原理,你的咖啡也該煮好了。去喝吧,這是你應(yīng)得的。
-
互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
54文章
11192瀏覽量
103969 -
通信系統(tǒng)
+關(guān)注
關(guān)注
6文章
1205瀏覽量
53498 -
HTTP
+關(guān)注
關(guān)注
0文章
511瀏覽量
31572
原文標(biāo)題:通過信鴿來解釋 HTTPS
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
使用騰訊信鴿做消息推送
請問VNF和NSF是什么關(guān)系?看到VNF解釋說是在SIMCOP中的,有什么意義?
請問USB D+和D-線的speed設(shè)置和USB協(xié)議圖有什么關(guān)系?
光點(diǎn)“信鴿”復(fù)合翼無人機(jī),組裝快捷
220V電和380V電有什么區(qū)別和有什么關(guān)系
LED的亮度與PWM有什么關(guān)系詳細(xì)代碼說明
![LED的亮度與PWM<b class='flag-5'>有</b><b class='flag-5'>什么關(guān)系</b>詳細(xì)代碼說明](https://file.elecfans.com/web1/M00/9F/8E/pIYBAF1CnR6AWFtVAACKIWWLsQM305.png)
評論