1. 程式人生 > >「萬雲科普」如何向非極客解釋非對稱加密

「萬雲科普」如何向非極客解釋非對稱加密

from:https://mp.weixin.qq.com/s/E-i4a5sEKWRRq3f0zzXekQ

解釋的通俗易懂,mark 一下。

非對稱加密其實並不如它聽起來的那麼複雜,我們只需要換個方式解釋它,就能讓不是極客的你也秒懂。


為什麼我想用一種通俗易懂的方式來解釋深奧的非對稱加密?是因為我正在研究一種會大量使用加密的產品,我自己最近不止一次向朋友解釋非對稱加密,而令我驚訝的是,網上所搜尋到的任何相關資訊都讓它看起來更加複雜,但事實並非如此。


下面進入正題。


首先,讓我們先了解下“對稱”加密是如何工作的


老王有一個帶鎖的盒子,同時老王也有一把屬於自己的鑰匙可以開關這個盒子。當老王想要儲存某些重要物品在盒子中,他會將其上鎖;只有他或其擁有備份鑰匙的人才能開啟盒子。


這就是對稱加密:你有一把鑰匙,你用它來關鎖(加密)和開鎖(解密)你的盒子(資料)。


對稱加密很好懂對不對,現在讓我們在此基礎上來看看非對稱密碼學是如何工作的


小明也有一個盒子,這個盒子比老王的更高階一點,因為這是一個帶有特殊鎖的盒子。

它特殊在何處呢?

直接看圖▼


                         

從上圖可以看出小明的盒子上的鎖有三種狀態:A(鎖定),B(解鎖)和C(鎖定),一定要記住這三個字母分別代表的狀態。


同時,小明的盒子配有兩把不同的鑰匙。


第一個把鑰匙只能順時針轉動,從A轉到B轉到C,第二把鑰匙只能逆時針轉動,從C轉到B轉到A。


小明從這兩把鑰匙中挑選第一把鑰匙歸自己所有,這就是小明的私鑰,只有小明配擁有它,為了保護好盒子,小明一般都把私鑰藏到別人找不到的地方。


小明盒子的第二把鑰匙是 “公開”鑰匙:他把第二把鑰匙複製了一百把(也可以更多),給了他的朋友和家人,在辦公室的桌上也留下了一把,甚至直接掛了一把在辦公室門外。


現在,我們整理一下思路,小明的私鑰,可以從A轉到B到C,只歸他個人所有;小明的公鑰,可以從C轉到B到A,其他人只要想要都可以獲得。(不明白的老鐵可以再看下上文的圖)


小明的盒子特殊之處我們搞清楚了,那小明可以利用這個盒子做什麼羞羞的(正經的)的事情呢?


直接來舉個例子!

你想傳送一個鏈圈大佬的大八卦給小明,但是又不想讓別人知道。如何是好呢?

你想起小明有個特殊的盒子!


於是你將這個八卦放在小明的盒子中,並用小明的公鑰副本將盒子上的鎖從C轉到B轉到A,這時候檔案就被鎖在了盒子裡(A的狀態是鎖定)。是的,你清楚地記得:小明的公鑰只能逆時針旋轉,所以你把它轉到位置A,現在這個八卦就被鎖定了。


然後??????


小明回來了,他用他的私鑰把盒子上的鎖從A轉到B,B的狀態是解鎖,盒子打開了!小明看到了八卦,沒想到他崇拜的鏈圈大佬居然做出這種事???


所以到底是什麼大八卦???通過這個盒子來傳遞資訊,只有小明和你知道。

因為,這個盒子唯一可以順時針從A轉到B的鑰匙是小明的私鑰


是不是豁然開朗! 這就是我們所說的公鑰加密,也就是非對稱加密:每個擁有小明公鑰的人(很容易找到它的一個副本,他到處都放了,記得嗎?)可以將文件放在他的盒子中,從C轉到B轉到A,形成鎖定狀態;而最終能解鎖的人只有小明,因為小明的私鑰是從A開始轉,轉到B就解鎖了。所以就算有人想知道你到底發了什麼八卦給小明,也無法獲取哦!


知道這個原理的你,八卦之心碎了一地。


那,小明這個特殊的盒子還能做什麼呢?


再來舉個例子!

假設小明在盒子中放置了一個檔案並用他的私人鑰匙將鎖轉到位置C來鎖定。

可是小明為什麼要這樣做?????畢竟,任何擁有公鑰的人都可以從C轉到B,然後解鎖它!

等等!一定有什麼我沒發現的重要線索!


果然,有人送給我一個盒子,他說這是小明的,但是我並不能確認這個盒子就是小明的,為了驗證它,我從儲存各種好朋友公鑰的抽屜裡挑選小明的公鑰,然後嘗試我右轉,盒子一動不動;然後我嘗試左轉,砰!箱子開啟!於是我驗證了這個盒子確實是屬於小明的。


小明通過私鑰加密這個方式證明是他自己而不是其他任何人把檔案放在箱子裡。我們把這個證明方式稱之為“數字簽名”


好了,今天的例子就到這裡,我們言歸正傳。


在數字世界中,“鑰匙(keys)”其實就是數字,有長有短。您可以將您的私鑰,其實就是一串數字儲存在文字檔案或特殊應用程式中。 你可以把你的公鑰,也是一個很長的數字,放在你的電子郵件簽名中,你的網站等等公開的地方。而且不需要特殊的盒子,你只需用一個應用程式和你的鑰匙來“鎖定”和“解鎖”檔案(或資料)。


如果任何人,即使是你,用你的公鑰加密(鎖定),也就逆時針轉到鎖定狀態A,只有你可以用你的私鑰解密(解鎖),因此別人通過公鑰傳送給你的加密檔案,只有你能夠解密,相信第一個例子已經解釋得很清楚了。


如果你用你的私鑰加密(鎖定),也就是轉到鎖定狀態C,任何人都可以解密(解鎖),這可以作為你對它加密的證據:它就是你的“數字簽名”。


還有許多更為複雜的場景:我們可以使用我們的私鑰來簽名檔案,然後使用其他人的公鑰對其進行加密,以便只有他可以讀取它。 一個使用者或一個組織可以對其他使用者的金鑰進行數字簽名,以驗證其真實性等等。但是,所有這些實際上都是使用一個或另一個金鑰並將其放入其他盒子中,不屬於這篇文章的討論範圍。


今天萬雲的技術科普就到這,關於密碼學還有任何你想了解的,都可以通過後臺留言小編。