之前所有的加密方法都是對稱加密,說的直白一點就是加密和解密都是同樣的密碼。
比如你用銀行賬號對應(yīng)的密碼可以取出現(xiàn)金,別人拿著這張卡你給他說了密碼也能取出現(xiàn)金;比如你的email登錄密碼,比如微信、支付寶登錄密碼等等,這些都是對稱密碼的應(yīng)用。
只要是同一把鑰匙在開一個鎖,都是對稱密碼。
可是對稱密碼有一個問題是很難解決的,就是秘鑰的傳輸。
之前講的量子通訊也是鑰匙傳輸?shù)哪壳耙阎淖钕冗M(jìn)安全的鑰匙分發(fā)方式,但是一般情況下,普通用戶是很難使用的。想象下面一個場景,你媳婦兒給你電話,說他在網(wǎng)上購物,需要你的信用卡密碼,你給她說了,他就購物,如果這個時候,有人也在監(jiān)聽你的電話,他也在購物就等這個密碼呢,他也去刷卡,這時候怎么辦?
問題都在秘鑰的傳輸方面。
環(huán)節(jié)越多,出錯越容易,能不能砍掉這個秘鑰傳輸?shù)沫h(huán)節(jié)?
可以。用公鑰加密,也就是用一對兒鑰匙。
兩把鑰匙?用把鑰匙開一個鎖,這個鎖不就是爛鎖了嗎?并非如此。
現(xiàn)在有兩把秘鑰:公鑰和私鑰。
公鑰,就是公共的鑰匙,這把鑰匙誰都可以知道;私鑰是本地的,私人的鑰匙,只有自己知道,私鑰就不發(fā)送不傳輸了,因為不傳輸也就沒有了傳輸?shù)膯栴}。
比如說,你要發(fā)一封email文件給你家人,這個是非常機密的東西,你家人在網(wǎng)上生成了鑰匙對兒,也就是公鑰和私鑰,然后把公鑰給你發(fā)過來,私鑰自己記錄好,不要放在網(wǎng)上。
你收到公鑰后,用公鑰對自己要發(fā)出的信息加密,然后發(fā)給家人,家人收到后,拿著私鑰進(jìn)行解密,就看到了你的重要信息了。
這里面有幾個點,公鑰,也是家人發(fā)給你的,如果被別人截獲了怎么辦?
沒關(guān)系,公鑰即使很多人知道沒關(guān)系的,因為公鑰只能加密,而解密的是公鑰對應(yīng)的私鑰,也就是說別人知道你的公鑰,只是方便他們給你發(fā)信息。他們加完密,自己都解不開。
這就是非對稱加密的工作原理,因為出現(xiàn)了公鑰,這個之前歷史上沒有的東西,所以,非對稱加密也被稱為公鑰加密。
生成私鑰公鑰的方法,網(wǎng)上一搜就有了,不必在此贅述。
總結(jié)下公鑰加密的特點:
1,公鑰和私鑰必須成對出現(xiàn),不能分別單獨生成,
2,公鑰任何人都可以知道,私鑰只有接收信息的人知道;
3,A發(fā)給B信息的過程是:A拿著B的公鑰對一段要發(fā)出的信息加密,B收到后,拿著自己也就是B的私鑰進(jìn)行解密。
公鑰加密有什么用?
比特幣的加密方式就是公鑰加密。所以你才有什么私鑰公鑰和地址,公鑰可以推出地址,地址推不出公鑰,即使推出來也沒關(guān)系,因為本來公鑰就是公共的鑰匙,誰想知道都可以。本質(zhì)上所謂生成比特幣的賬戶,就是生成一個秘鑰對兒,有了公鑰和私鑰,然后公鑰再推出個地址,一個比特幣的賬戶就生成了。這個生成賬戶的方法,比傳統(tǒng)金融里去銀行開戶,方便和安全很多,當(dāng)然,傳統(tǒng)銀行也很安全,中心化會對你的賬戶保護(hù),比特幣是人類歷史上第一次用技術(shù)解決了安全問題。
我們很快會專門去講比特幣的加密原理,今天就簡單說一下。
RSA是什么?為什么好多人都會講到RSA?
RSA是非對稱加密法里面用的最廣泛的一種加密方法,當(dāng)然,還有別的,比如比特幣里還有一個神奇的橢圓曲線加密,就是一種非對稱加密法,但不是RSA。曾經(jīng),這個橢圓曲線加密的方法選擇,受到以太坊發(fā)起人vitalik的稱贊,他說中本聰可能是蒙的,選的這么好。
RSA加密因為創(chuàng)始人名字的首字母分別是R、S和A所以叫RSA加密,他們發(fā)文章的時候用Alice和Bob兩人的名字代表A和B,所以密碼學(xué)里面就形成通用管理,“Alice發(fā)一個比特幣(或一段信息)給Bob”,這樣的句式開始出現(xiàn)。竊聽者總被被叫做Eve。
好了,看了上面的內(nèi)容,其實今天已經(jīng)明白了非對稱加密的主要知識,下面的內(nèi)容比較困難,各位讀者可以選擇性閱讀。
RSA大概是什么方法?為什么總有專家提到什么“大數(shù)的質(zhì)因數(shù)分解”?“大數(shù)的質(zhì)因數(shù)分解”和RSA非對稱加密有什么關(guān)系?
加密過程就是明文的E次方然后mod N。mod代表的是乘法求余數(shù)的運算符號。
E和N的組合就是公鑰,D和N的組合就是私鑰。E取自單詞encryption加密,D取自單詞DecrypTIon解密,N取自單詞number數(shù)字。
N=p * q,p和q是質(zhì)數(shù),很大的質(zhì)數(shù),所以難以破解,如果是很簡單的質(zhì)數(shù)比如2和3,那就太簡單了,當(dāng)然真正運算的時候都是二進(jìn)制,動輒512bit的質(zhì)數(shù)相乘,這也就是為什么破解私鑰很難的原因之一,因為人類暫時沒有發(fā)現(xiàn)對大整數(shù)進(jìn)行質(zhì)因數(shù)分解的高效方法,所以,RSA比較安全?,F(xiàn)在的銀行系統(tǒng)的安全也是RSA加密的,N要求大于300位,如果要分解這樣一個數(shù),需要的時間單位數(shù)量級是億年,億萬年的時光去破解一個密碼,假設(shè)科技按照現(xiàn)在的水平?jīng)]有突破的話。
為什么加上mod N這樣的東西?因為沒有這個就是個對數(shù)問題,很容易求解,如果有了mod N求明文就成了求離散對數(shù)的問題,同樣的,人類目前沒有找到求離散對數(shù)的高效方法。
鑒于之前的文章出現(xiàn)了很多數(shù)學(xué)公式,今天關(guān)于RSA的講解控制在500字內(nèi),這是一個引子,如果你對RSA感興趣,可以私信溝通也可以去網(wǎng)上搜索更多的資料,但是,對于區(qū)塊鏈從業(yè)或者是數(shù)字貨幣投資者來說,只需要理解本文的重點部分即可。畢竟,看到離散對數(shù)的時候,很多讀者已經(jīng)看不下去了。沒關(guān)系的,掌握關(guān)鍵,吸收精華即可。
明白非對稱加密(公鑰加密)對理解比特幣的公鑰私鑰以及錢包和工作原理非常重要,所以今天講解下非對稱加密技術(shù)。
試問如果我發(fā)出去的是錢,而不是一封信,公鑰加密給你,你用私鑰打開后可以用,是不是就是比特幣?或者反過來問,我發(fā)給你一個賬本信息,你能打開這個賬本信息,于是這個賬本信息最后一條寫著,我給你轉(zhuǎn)了10個比特幣,是不是這條信息就成了你有10個比特幣的證明,也就是說這個賬本信息本身就證明了你有比特幣了?信息就變成了錢,順著這個思路去思考去理解比特幣吧。后面會仔細(xì)講的。
這個世界的大門慢慢在打開,感謝能從隱藏法、移位替換法、維吉尼亞加密法、恩尼格瑪機一直同行到現(xiàn)在,比特幣和區(qū)塊鏈的核心很快就要觸碰到了。
來源: 加密二鍋頭