有意思的加密通信

互聯網就是個公開演講的廣場。意思是任何人說任何話,其實別人都是能聽見的。這個認為是互聯網的天性了,那么在這個前提下如果我和我一個朋友說點機密的事情,同時不想讓別人偷聽到,這個就成了一個有點挑戰(zhàn)性的技術問題,也就是今天我們要討論的加密通信。

對稱加密

幾千年來,我們人類都在用一種“對稱性加密“的形式來進行秘密信息的傳遞,”對稱“指的是加密用一個密碼,那解密是用的還是這個密碼。但是“對稱性加密”為啥不能用在互聯網上的加密通信中呢?說說這個過程,我有一個文件,用一定的加密方式來進行加密(比如用一些文件壓縮程序),然后可以把加密后的這個包,傳遞給我的朋友,到目前為止一切都好。但是接下來的問題是,我朋友如何才能解密我給他的文件呢,顯然我必須安全的把我加密時輸入的密碼安全的傳遞給他,這樣才能完成這個加密通信過程。所以這就有了一個雞和蛋的問題。最終我可能就不得不借助互聯網以外的工具,例如打電話,來把密碼給我朋友了。所以,對稱性加密是不適合用于互聯網上的加密通信的。

非對稱加密的原理

那我們就可以想一下,是不是有一種“非對稱加密”的方法能解決雞和蛋的問題呢?恭喜你,答對了!非對稱加密用一句話來描述就是,加密是用一個密碼 key,而解密則會用另外一個密碼 key。安裝好相應地程序之后,任何人都可以在自己的計算機上來生產這一對密碼。其中用于加密的這個叫公鑰,是可以公開給別人的,所以叫”密碼“這個不嚴密,還是英文好,就叫 key。另外一個是絕對自己要保密好的,叫”私鑰“,這個是用來解密的,真的是”密碼“。

這兩個 key 是一對,意思是他們在數學角度是有著聯系的,但是如果想要從公鑰計算出私鑰也是不可能的。加密通信的過程是這樣的,收信人,比如說我,先生成這一對 key,然后我想跟我的朋友秘密通話,那我就把我的公鑰傳給他,這個反正有人得到也沒關系。我朋友拿到公鑰之后,就把他想要跟我說的話進行加密,然后把加密后的信息通過互聯網傳給我,整個互聯網上,即使有其他人得到了這些加密數據也沒用,因為只有我擁有跟那個公鑰配對的這個私鑰,所以也就只有我,才可以解密這個信息。

非對稱加密的類比和應用

我們再來打個比方。我家門口有個信箱,那么凡是知道我家地址的人就可以給我發(fā)信了,所以我家的地址就相當于公鑰,但是由于只有我自己有信箱的鑰匙,所以也只有我能看到信。那這個信箱的鑰匙當然就相當于私鑰了。

打另一個比方。我和朋友要秘密的通信。首先朋友寄給我一把她的打開的鎖,這樣我把信放到一個盒子里,鎖上,給她寄過去。拿到盒子之后,朋友拿出自己的鑰匙就可以打開箱子了。反過來,如果我想從她那里得到回信,那我就給她寄我的鎖就行了。這種通信方式的好處是,任何一把鎖的鑰匙都沒有郵寄過。

最后說實際的一個應用。我在北京,如果我有一臺服務器在美國,那么我如何讓信息從我的服務器上安全的傳遞到我這里呢?首先,我先生成一對 key,然后我就把公鑰傳到我的服務器上。這樣,我的服務器就可以把信息加密,然后傳遞給我了,聽起來可能比較麻煩,但是實際中有 ssh 這樣的程序幫忙,其實加密和解密過程都是自動完成的。 下面是生產秘鑰的具體操作過程:

$> ssh-keygen
Generating public/private rsa key pair.
$> ls .ssh/
id_rsa id_rsa.pub

好,加密通信就說這么多,以后有機會我們會談一個相關的話題:數字簽名。

參考資料:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容