hello,大家好,我們第二期的區塊鍊技術分享來啦,本期是 candy 分享公鑰加密,也就是非對稱加密。
提到加解密,密碼學這些詞彙,很多人都退避三舍,如臨大敵,覺得晦澀難懂,自己不想懂也不必懂。
但是,其實不然。你每天都在接觸密碼學,你的上網安全與密碼學息息相關。如果你經常上網,可以發現網址的連結有兩種,分别是https開頭和http開頭的:
candy用的是Chrome浏覽器,不知道大家有沒有發現,http那張圖,浏覽器提醒:不安全。那我可以告訴你,不是不安全,是相當不安全!
那下面我們就慢慢分析為什麼http開頭的網址上網不安全?
1 http之那些年誤點的釣魚網站
很多吃過虧的人可能至今都想不明白,自己明明是網上沖浪多年的老手了,為什麼自己的通路行為和隐私資料會被人知道,為什麼域名沒輸錯,結果卻跑到了一個釣魚網站上? 你肯定也聽過,電子郵件被竊聽,家庭路由器被黑等等……
随着網際網路的發展,資料洩露、資料篡改、流量劫持、釣魚攻擊等安全事件頻發。
這一切都是由網際網路開始之初面向自由互聯開放的http傳輸協定導緻的。
http協定之是以引起這麼多安全問題,最大的缺點在于:http協定傳輸的資料都是明文。再說的直白一點,就是你的資料在網絡中裸奔~~
想想少不更事的那些年,點過的小黃文網站,小視訊網站……
那我們不禁問,為什麼一開始設計的時候,不考慮安全的問題呢?原因有兩個:
- 第一,設計者的初衷是先有,跟所有事物發展的規律相似:先有再優。
- 第二,不得不說到網際網路的起源,網際網路始于1969年美國的阿帕網,首先用于軍事連接配接,後将美國西南部的加利福尼亞大學洛杉矶分校、斯坦福大學研究學院、UCSB(加利福尼亞大學)和猶他州大學的四台主要的計算機連接配接起來。主要的應用在高校,人們天性使然,相信所有的參與者都是誠信的。
随着網際網路的發展,所有的人都可以連到網際網路上,上面的方式就土崩瓦解。各種網絡安全問題接踵而來……
發現問題,解決問題。既然http協定是明文傳輸的,那我們加密不就好了。想的很對,那我們不禁問用什麼加密?怎麼加密呢?
2 https中令人煩惱的密鑰配送問題
我們再回顧一下,http協定存在的問題:用戶端和伺服器之間的通信消息完全明文在鍊路上傳輸。
這個時候,我們就想通過給消息加密的方式,這樣的話,就算消息被截獲拿到的也是加密過的資訊,是沒有辦法解密的,思路完全正确。
我們可以将用戶端和伺服器之間的通信,抽象成兩個人Alice和Bob,那麼在分析之前,我們先講密碼學兩類加密方法:對稱密碼和公鑰密碼(非對稱密碼)。
● 對稱密碼:加密和解密使用同一種密鑰。
如何了解呢?Alice想跟Bob這周天約會,但又不想被别人知道,是以Alice跟Bob協商用對稱密碼對資訊進行了加密。
通過圖中可以看到,Alice用密鑰對明文加密,保證消息在傳送過程中是加密的,同時Bob收到密文之後,用相同的密鑰解密,得到明文。Alice和Bob就可以開心地約會啦~~
● 公鑰密碼:加密和解密時使用不同密鑰的方式。
如何了解呢?Alice想跟Bob這周天約會,但又不想被别人知道,是以Alice跟Bob協商用公鑰密碼對資訊進行了加密。
通過圖中可以看到,Alice用加密密鑰對明文加密,保證消息在傳送過程中是加密的,同時Bob收到密文之後,用不同的密鑰解密,得到明文。Alice和Bob又開心地約會啦~~
那麼在https通信的時候,到底使用的是哪種加密方式對明文加密?答案是:對稱加密。理由是對稱加密适合對大量内容進行加密,公鑰加密由于涉及複雜的運算,如果被加密的明文過長,那麼運算速度将會很慢。
但這個時候問題來了,Alice怎麼将密鑰203514758963585告訴Bob,讓Bob用這個密鑰解密她發的資訊呢?也就是密鑰配送的問題。
這個時候必須再解釋公鑰密碼。公鑰密碼是什麼意思?Bob有兩把鑰匙,一把叫公鑰,一把叫私鑰。顧名思義,公鑰就是可以公開的,私鑰就是自己要偷偷藏起來的。
所有想給Bob發消息的人,都可以用Bob的公鑰加密,Bob收到之後,用自己的私鑰解密。就像公鑰加密圖中Alice和Bob通信的方式。
那麼Alice跟Bob傳遞消息和傳遞密鑰的整個過程如下:
但可能有人會好奇,如果第③步的資訊被攻擊者劫持了,那後面加密的密鑰不就洩露了?其實沒關系的,就算第③步資訊被劫持了,劫持者也無法解密,因為Bob的公鑰加密的資訊,隻有Bob的私鑰能解密,但Bob的私鑰隻有Bob有。
Alice和Bob終于可以安心約會了~~
其實上面的過程就是https通信的過程,Alice就是用戶端,Bob就是伺服器。
HTTPS:是以安全為目标的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,是以加密的詳細内容就需要SSL。
當然SSL除了對通信内容加密之外,還有确認網站的可靠性,也就是我們常常聽到的CA。這又是另外一個話題了,今天就先不講啦。
是以,https中即用到了對稱密碼,又用到了公鑰密碼,https中涉及到的公鑰密碼是RSA算法。是以,可以看出密碼學是一門很有用的基礎學科,不僅在資訊安全領域有應用,而且在區塊鍊領域也有應用。
不知道大家有沒有好奇,我本來是想分享區塊鍊中的公鑰加密的,為什麼要說https和http?因為要講公鑰加密,對稱加密是沒有辦法避免的,而https又是二者最好的結合。
下面言歸正傳,聚焦區塊鍊中的密碼學應用。
3 區塊鍊裡面的那些公鑰、私鑰和位址
公鑰密碼,兩把成對出現的密鑰:公鑰和私鑰。公鑰就是可以公開的,私鑰自己儲存,不能被洩露。
是以公鑰密碼有兩個用途,加密和簽名。公鑰加密,私鑰解密;私鑰簽名,公鑰驗簽。
公鑰加密,私鑰解密
因為Bob的公鑰是可以公開的,是以任何想給Bob發資訊的人都可以用Bob的公鑰加密,那麼Bob收到之後,就可以用自己的私鑰解密。
私鑰簽名,公鑰驗簽
又因為Bob的私鑰隻有Bob自己有(就像Bob的指紋),那麼Bob如果為了證明這個東西是自己寫的,就可以在消息上簽名(就像我們簽合同按指紋一樣),消息的接收者收到之後,就可以用Bob的公鑰驗證,如果成功那麼就證明消息真的是Bob發出的。
位址呢?是公鑰推導出來的。這些推導過程是單向不可逆的。這塊的知識參考上期分享 你的密碼安全嗎? | 區塊鍊技術之哈希
https://blog.csdn.net/koudan567/article/details/120091236
公私鑰對奠定了區塊鍊的賬戶體系及資産(Token等)的所有權,區塊鍊的資産是鎖定在公鑰上的,公鑰代表身份,私鑰用來解鎖該資産然後才能使用。
比如說我要轉讓資産給你,就是我用我的私鑰簽名了一筆我轉讓資産給你的交易(含資産,數量等等)送出到區塊鍊網絡裡,節點會驗證該簽名,正确則從我的公鑰上解鎖資産鎖定到你的公鑰上。
今天分享的比較多,又有資訊安全的内容,又有區塊鍊的内容,但其實根本還是密碼學的問題。需要區分一下,https中用到的是RSA加密算法,區塊鍊中用到的是橢圓曲線加密算法。用到了不同的公鑰加密算法。
至此,區塊鍊中涉及到的公鑰、私鑰、哈希就分享完了,希望大家能有所收獲,這個專題也會繼續下去,請持續關注哦。
如果你也對區塊鍊感興趣,可以關注微信公衆号“Candy鍊上筆記”,我們一起前行~~