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