密碼學是學習區(qū)塊鏈技術(shù)最重要的課程之一雀鹃。
因為區(qū)塊鏈技術(shù)幻工,包括比特幣,它們之所以這么安全黎茎,最重要的基石就是密碼囊颅,包括非對稱加密、哈希、數(shù)字簽名這些技術(shù)踢代。
如果不理解密碼盲憎,就不能理解之后的簽名、地址胳挎、驗證等問題饼疙。
對非專業(yè)研究算法的我們來說,密碼學的原理并不復雜串远,關(guān)鍵掌握以下要點:
一宏多、進制&存儲單位
1、進制是一種計數(shù)方法
(注:上圖“2進制”與“10進制”寫反了)
2澡罚、存儲單位
(注:上圖“BG”應為“GB”,“TG”應為“PG”)
比特幣挖礦算力8359PH/s肾请,指比特幣每秒鐘的算力達到8359PG的哈希量留搔。
二、加密解密
1铛铁、對稱加密
對稱加密中隔显,密鑰只有一個,一旦密鑰丟失或被盜饵逐,任何得到密鑰的人都能解密信息括眠。這也正是對稱加密的缺點,傳遞過程中無法確保密鑰的絕對安全倍权。
對稱加密中的密鑰就類似于我們在諜戰(zhàn)劇中看到的密碼本掷豺,任何得到密碼本的人都可以根據(jù)密碼本破譯出原文,所以密碼本的安全傳遞就非常重要薄声。
那怎樣才能更安全的傳遞信息呢当船?
這就需要非對稱加密。
2默辨、非對稱加密
非對稱加密由公鑰和私鑰進行加密德频。
私鑰是本機電腦上自動生成的。公鑰是私鑰根據(jù)算法生成的缩幸。
傳遞的只是公鑰壹置。私鑰由個人保存,用于解密表谊。
發(fā)送方將信息用接收方的公鑰進行加密(公鑰可以公開)钞护,隨機生成一段密文,接收方接到密文后铃肯,用自己的私鑰進行解密患亿,還原信息。
整個過程解決了安全問題,但沒有解決“接收方如何驗證信息是由指定的發(fā)送方發(fā)送”的問題步藕。
就好比我收到了一個信息惦界,我還原了這個信息,我如何知道這個信息是你發(fā)給我的而不是別的人發(fā)給我的咙冗?
這就需要數(shù)字簽名沾歪。
在談數(shù)字簽名之前,我們先談談另一個重要的概念:哈希雾消。
三灾搏、哈希-Hash
哈希是將一段任意長度的數(shù)據(jù),轉(zhuǎn)換為一段定長的數(shù)據(jù)立润。
我們可以根據(jù)原數(shù)據(jù)生成哈希值狂窑,但無法通過哈希倒推出原數(shù)據(jù)。這個過程是不可逆的桑腮。
(公鑰加密后生成的密文是隨機的泉哈,但都能用對應的私鑰進行解密。
而同一數(shù)據(jù)生成的哈希值是確定的破讨,因此哈希值可以用來驗證數(shù)據(jù)丛晦。)
下圖為哈希運算界面
你可以將任意長度的數(shù)據(jù),無論是幾K或是幾G的文件輸入提陶,點擊“Hash”烫沙,就會生成很多格式的哈希值。以前比較常用的有MD5隙笆,但是隨著計算機算力的增強現(xiàn)在它的安全性受到了挑戰(zhàn)⌒啃睿現(xiàn)在比特幣的哈希值采用的是“SHA-256”格式,今后也許會采用“SHA-384”或其它長的格式仲器。
哈厦郝剩可以用于很多方面。比如財務軟件安全下載乏冀。
如果你要下載一款炒股的軟件蝶糯,下載界面就會出現(xiàn)它的哈希結(jié)果:MD5……
當你下載完成以后,你想驗證你所下載的這個軟件是不是安全的辆沦,你就可以對這個下載的文件進行哈希:
然后生成的哈希結(jié)果與原下載界面的哈希結(jié)果進行比對驗證昼捍,如果一致,證明這個軟件是安全的肢扯,沒有被篡改過妒茬。
哈希還可以用于用戶密碼的存儲:
現(xiàn)在很多服務器都不直接存儲用戶密碼的明文,那樣一旦被攻擊蔚晨,或者發(fā)生數(shù)據(jù)庫管理員監(jiān)守自盜乍钻,所有的信息直接暴露肛循。
因為哈希的不可逆性,哈希值可以用來驗證用戶密碼银择,卻不能倒推出用戶密碼多糠,所以現(xiàn)在大多服務器存儲的都是哈希。
但是哈希存儲可以用“彩虹表攻擊”的方法浩考,就是先大量的輸入猜測的密碼夹孔,用生成的哈希值與服務器存儲的哈希值作比對,一旦一致就可以倒推出用戶密碼析孽。
針對“彩虹表攻擊”搭伤,現(xiàn)在很多服務器采取的是“鹽+哈希”存儲的方式袜瞬,就是在原密碼的基礎(chǔ)上怜俐,引入一個隨機數(shù),比如時間吞滞,當做“鹽”佑菩,生成一個新的哈希,這樣就使得彩虹表失效裁赠。
四、簽名
發(fā)送方將信息用接收方的公鑰進行加密赴精,生成一個隨機的密文佩捞,發(fā)送給接收方。
接受方接到密文后蕾哟,用自己的密鑰進行解密一忱,得到一個信息。
接收方如何確認這個信息是指定的發(fā)送方所發(fā)送的呢谭确?
這就需要數(shù)字簽名帘营。
發(fā)送方先將信息進行哈希,生成的摘要用自己的私鑰進行簽名逐哈,然后發(fā)送給接收方芬迄。
接收方接收后,用發(fā)送方的公鑰進行解密昂秃,生成一個摘要禀梳。
然后接收方再把之前收到的信息進行哈希,生成一個摘要肠骆。兩個摘要做比對算途,如果一致,就證明是確定的發(fā)送方發(fā)送的蚀腿。
在實際應用中嘴瓤,由證書授權(quán)重心CA來證明“我確實是我”。
五、結(jié)語
相信學完這一課廓脆,你對公鑰筛谚、私鑰、哈希狞贱、簽名等都有了新的認識刻获。
公鑰加密,私鑰解密瞎嬉。
私鑰簽名蝎毡,公鑰解密。
區(qū)塊鏈的世界氧枣,切記要保護好自己的私鑰沐兵。
(本文根據(jù)新大區(qū)塊鏈課程整理,授課人:周兵便监,圖片來源:課程PPT)