密碼學(xué)可以說是比特幣最為核心的一項技術(shù)。
普通人對密碼學(xué)都比較陌生,說起密碼學(xué)大家都覺得很高大上。其實密碼學(xué)關(guān)注的事情主要是兩點:
一是加密解密的數(shù)學(xué)算法本身。
二是如何在現(xiàn)有算法基礎(chǔ)上實現(xiàn)安全需求。
所以我們可以看到:密碼學(xué)不僅研究加密解密的數(shù)學(xué)算法,還有一點同樣重要,就是保護信息安全的策略,這就是本文重點論述的非對稱加密技術(shù)。
讓我們來看一個真實生活中的場景:
北京的小明發(fā)了一個快遞到廣州的愛斯,途中經(jīng)過了上海,上??爝f中心出現(xiàn)了一個黑客X,他偷偷打開了小明給愛斯的快遞,然后悄悄把里邊的東西替換掉,再按照原樣包裝好發(fā)往廣州,可以看到對于這樣簡單包裝的傳輸在中途是可以偷偷修改里邊的東西。
互聯(lián)網(wǎng)中HTTP的數(shù)據(jù)包是明文傳輸,也就是如果中途某個黑客嗅探到這個HTTP包,他可以偷偷修改里邊包的內(nèi)容,至于小明跟愛斯是互相不知道這個動作的,因此我們必須要有一個方案來防止這種不安全的篡改行為,這個方法就是加密!
再回到上面的例子,這一次,小明將衣服放到一個保險箱里邊鎖起來,他打了個電話告訴愛斯保險箱開柜密碼是1234,而黑客X不知道密碼,所以他看不到保險箱里邊的東西,愛斯收到快遞后用預(yù)先溝通好的密碼就可以打開保險箱了。
這里保護的手段就是小明對物品進行加密,同時告訴了愛斯解密的方法!
但如果是絕密情報的特工,面對的可能是國家機器,所有的網(wǎng)絡(luò)和通信都處在被監(jiān)聽的狀態(tài),采用上述的加密辦法,依然會造成信息泄漏。
因此人們提出了一個方案:
在上面的例子中,要求小明的密碼只能通過快遞傳給愛斯。但這里還有一個技術(shù)問題待解決:如果小明直接傳密碼給愛斯,黑客X如果嗅探到這個快遞,那X也知道密碼了,這就無法保護快遞的安全性了。因此還需要有個方案,讓小明能夠告訴愛斯密碼的同時,黑客X又無法查看到小明跟愛斯通信的數(shù)據(jù)。
解決的方法就是采用非對稱加密:小明擁有兩把鑰匙,一把叫做公鑰,一把叫做私鑰。公鑰是公開讓全社會都知道,小明告訴所有人,你們要傳遞數(shù)據(jù)給我的時候請先用這個密鑰(公鑰)去加密一下你們的數(shù)據(jù),加密后的數(shù)據(jù)只能通過小明私自藏著的私鑰才能解密。
回到剛剛例子,小明先發(fā)給保險柜(小明公鑰)給愛斯,接著愛斯把自己的保險柜(愛斯公鑰)放到小明的保險柜(即使用小明的公鑰加密愛斯的公鑰)里,送還給小明,接著小明拿到愛斯的數(shù)據(jù)包后,用自己的私鑰解開了外層保險柜(小明的公鑰),拿到了里邊愛斯保險柜(愛斯的公鑰)。此時愛斯跟小明都有了各自的公鑰(并且都有他們自己的私鑰),接著只要保證每次互相傳遞數(shù)據(jù)的時候,把數(shù)據(jù)放在對方的保險柜里邊即可(即每次都用對方的公鑰加密數(shù)據(jù)),這樣無論如何,黑客X都無法解開保險柜(因為只有各自的私鑰才能解開各自的保險柜)。
這個技術(shù)猜想雖然早就提出,但直到1977年才被美國麻省理工學(xué)院的研究小組 [ 成員:李維斯特(Rivest)、沙米爾(Shamir)、艾德曼 (Adleman) ]提出的。該算法用他們?nèi)齻€人的名字命名,叫做RSA算法。一直到現(xiàn)在,RSA算法仍然是應(yīng)用最廣泛的非對稱加密算法。
最后,我們再來總結(jié)一下這一非對稱加密算法的流程:
B生成兩把密鑰(公鑰和私鑰)。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。
A獲取B的公鑰,然后用它對信息進行加密,將信息傳輸給B。
B得到加密信息后,用私鑰解密。
由于公鑰加密的信息只有私鑰才能解開,因此只要私鑰不泄露,通信過程就是安全的。
所以,在比特幣乃至區(qū)塊鏈的世界中,私鑰都是極其重要的!
請區(qū)塊鏈玩家們保護好自己的私鑰!
請區(qū)塊鏈玩家們保護好自己的私鑰!
請區(qū)塊鏈玩家們保護好自己的私鑰!
重要的事情說三遍?。?!