基石:比特幣背后好玩的密碼學(xué)

Deepcoin研究院
在一個沒有中心權(quán)威機(jī)構(gòu)的情況下,怎樣建立賬號,同時又要在不給任何人透露密碼的情況下,能夠證明某個賬號的歸屬權(quán)。因此采取了非對稱加密機(jī)制,對稱加密只有一個密碼,雙方都必須知道,所以傳輸?shù)臅r候容易泄漏。
          比特幣網(wǎng)絡(luò)的基本思想,就是為每一個比特幣建立完整公開的歷史交易記錄,來解決重復(fù)支付的問題,也叫雙花問題,整個比特幣網(wǎng)絡(luò)都是圍繞這么一個核心問題展開。它到底是怎么實(shí)現(xiàn)的,先重點(diǎn)說說賬號密碼體系,順便了解到什么是非對稱加密?
 
          比特幣肯定也得有賬號密碼,不然沒法明確產(chǎn)權(quán)到底是誰的,轉(zhuǎn)賬的時候跟銀行一樣輸入賬號密碼,轉(zhuǎn)給誰,轉(zhuǎn)多少。
 
          說到賬號密碼,過去我們見到的傳統(tǒng)模式大概都是這樣,比如你去某個網(wǎng)站注冊個賬號,先選個賬戶名,系統(tǒng)判斷只要不重名就可以注冊,然后設(shè)置密碼。以后每次登陸的時候,網(wǎng)站就判斷你輸入的和他們之前存儲的用戶數(shù)據(jù)能不能匹配。銀行等等這些,也是一樣的機(jī)制。這就是傳統(tǒng)的中心化方式,有個權(quán)威的第三方中心來管理用戶的賬號和密碼。
 
          但是比特幣是去中心化網(wǎng)絡(luò),由網(wǎng)絡(luò)中的所有節(jié)點(diǎn)平等的共同維護(hù)整個系統(tǒng)。所以它并沒有一個類似銀行的第三方權(quán)威,來去管理和核實(shí)這些。但是礦工在打包區(qū)塊的時候,它又得先確認(rèn)每一筆交易是不是一個有效賬號的主人所發(fā)起的。顯然你也不能把密碼發(fā)給礦工,因為他無非就是個最近十分鐘解出了數(shù)學(xué)題的幸運(yùn)用戶,你給他的話,回頭錢就被他取走了。
 
 
          所以在一個沒有中心權(quán)威的情況下,到底怎樣注冊賬號,又怎樣讓大家在不知道你的密碼的情況下,還能知道你輸?shù)拿艽a是對的呢?
 
          這就要說到比特幣的非對稱加密機(jī)制,可以完美的解決上面說的賬號和密碼的問題。在理解非對稱加密之前,首先我們要了解下什么是對稱加密。對稱不對稱這兩個字有點(diǎn)抽象,其實(shí)可以簡單理解成一個是單密碼,一個是雙密碼。
 
          對稱加密就是平時常用的單密碼,加密和解密用的是同一個密碼,它很像暗號,比如黃天蓋地虎,寶塔鎮(zhèn)河妖。像很多年輕人喜歡用疊詞,比如嗯,和嗯嗯就是不一樣的含義。雙方都知道暗號的規(guī)則,用的是同一個密碼解密,這個就叫對稱。
 
          這種對稱加密最大的風(fēng)險,在于雙方都得知道密碼,所以在傳輸密碼或者密碼規(guī)則的時候就會有很大的泄漏風(fēng)險。電影《模仿游戲》里面,演的就是當(dāng)年阿蘭圖靈發(fā)明計算機(jī),破解了德軍的密碼規(guī)則,從而讓二戰(zhàn)至少提前了兩年結(jié)束。
 
          人類歷史上幾千年以來基本上都在用著這種對稱加密方式,直到1977年,三個美國MIT的教授才發(fā)明了新的非對稱加密方式,叫做RSA,R、S、A分別是這三個人的名字的首字母。
 
          怎么個非對稱呢,非對稱加密就是有兩個密碼,一個是不公開的,叫私鑰,只有你自己保管;還有一個公開了也沒關(guān)系的密碼,叫公鑰。他的機(jī)制是,私鑰加密的東西,不能用私鑰解密,而只能用公鑰解密。反過來也是,公鑰加密的東西,不能用公鑰解密,而只能用私鑰解密。每一個公鑰只有唯一的一個私鑰跟他對應(yīng),由標(biāo)準(zhǔn)公開的加密算法自動生成。實(shí)際情況是先用隨機(jī)程序生成私鑰,然后用私鑰生成公鑰,每一個私鑰都可以生成多個公鑰。
 
 
          基于這種機(jī)制,比特幣就把那個公開的密碼直接當(dāng)作了賬號,通常也叫地址。所以非對稱加密你可以理解成,就是原本密碼是密碼,賬號是賬號?,F(xiàn)在呢,不但密碼是密碼,賬號也具備密碼的功能。
 
          當(dāng)你發(fā)起轉(zhuǎn)賬的時候,你只要用私鑰加密一段信息,任何人拿到以后,都可以用你公開的公鑰,去解密一下,看看解出來的是不是和你說的一樣就行了。
 
          舉個例子,為了證明我是某個公開賬戶的所有者,我就用私鑰加密一段話,比如“比特幣就是數(shù)字黃金”這么一句話,我把這句話和加密后的那段亂碼兩個都發(fā)布出去,任何收到這個信息的人,不需要知道我的私鑰,他們就可以用公開的賬戶,也就是公鑰,解密下那段亂碼,發(fā)現(xiàn)解出來的真的是“比特幣就是數(shù)字黃金”這句話,就可以相信我是這個賬戶的真正所有者。比特幣就是基于這么一種巧妙的密碼學(xué)原理,同時解決了賬號的建立和密碼的保密問題。
 
          這樣一套體系安不安全呢?
 
          這個就要說到非對稱加密背后的數(shù)學(xué)原理,那就是大數(shù)分解難題。
 
          我們知道,有的數(shù)字可以被除了1和自己的兩個數(shù)字相乘得到,比如6可以分解為2*3,有些就不可以,比如3、5、7、11.,后面這種叫質(zhì)數(shù),關(guān)于質(zhì)數(shù)有很多著名的難題,隨便哪個如果能解決的話,都可以讓你永垂不朽,是的沒聽錯,永垂不朽。
 
          大數(shù)分解難題,指的就是給你一個超級大的數(shù)字,找不到捷徑把他拆成兩個質(zhì)數(shù)相乘。我們知道,計算機(jī)把兩個很大的數(shù)字相乘很容易,但是如果要把一個很大的數(shù)字反拆回來是極其困難的。比如把手機(jī)通訊錄里面隨便挑200個手機(jī)號碼連在一起成一個220位的數(shù)字,你想想如果要把它拆成兩個質(zhì)數(shù)相乘,除了窮舉一個個試沒有更好的辦法,而這個運(yùn)算量是及其巨大的。
 
          非對稱加密,就是把兩個很大的幾百位的質(zhì)數(shù)相乘,然后把這個乘出來的結(jié)果當(dāng)作公鑰,公開給大家,然后把那相乘的數(shù)字做一些加工變成私鑰。誰也沒有辦法通過公鑰猜出私鑰,但是要驗證是否匹配卻很容易。
 
          其實(shí)如果允許一個個試上個幾百億年,也是可以試出來的,偶爾不小心撞上也是有可能的,但是概率低到好多個億分之一,那本質(zhì)上其實(shí)就已經(jīng)等于無解了。我們就認(rèn)定為是解不出來的,就像每天出門不會擔(dān)心突然被天上掉下的隕石砸死一樣。
 
          有人可能會問,量子計算出來了會怎樣,量子可以同時存在不同的空間,可以支持并行計算,所以它可以幾秒種就解出這種數(shù)學(xué)難題。
 
          那怎么辦?首先這東西還早著呢,其次就算實(shí)現(xiàn)了,也輪不到攻擊比特幣,為什么這么說。因為其實(shí)非對稱加密并不是比特幣首創(chuàng),目前全世界幾乎所有的金融和通信等重要的系統(tǒng)都在用非對稱加密。比如我們都知道蘋果是封閉系統(tǒng),只有蘋果審核通過的應(yīng)用才能安裝在蘋果手機(jī)上,那他是怎么做到的呢,就是通過非對稱加密,每個手機(jī)上已經(jīng)就有公鑰,蘋果保管那個私鑰,一個app只有被蘋果那個私鑰加密過,才能被手機(jī)上的公鑰識別出來。包括網(wǎng)銀用的那個u盾,用的時候不是要安裝證書嗎,其實(shí)就是給你裝一個公鑰,這樣才能保證你發(fā)送的賬戶信息在發(fā)送過程中,即使被截獲也沒關(guān)系,因為只有銀行服務(wù)器的私鑰才能解的出來。
 
          如果量子計算出來的話,攻擊其他金融和通信系統(tǒng)的利益,那可比攻擊比特幣來得大的多了。況且,隨著量子計算的臨近,大家也會重新升級新的標(biāo)準(zhǔn)來適應(yīng)量子時代。
 
          簡單來說,非對稱加密它其實(shí)就是找到了一個除了窮舉就沒有更好辦法,而且解題代價極大的數(shù)學(xué)題作為密碼安全的基礎(chǔ)。
 
          所以,可以放心大膽的把公鑰告訴所有人,當(dāng)你用私鑰發(fā)起一筆交易的時候,任何人都可以用你公開的那個公鑰,去驗證你私鑰加密的信息是否正確,從而證明你是不是發(fā)起這筆交易的合法主人。
 
          在一個沒有中心權(quán)威機(jī)構(gòu)的情況下,怎樣建立賬號,同時又要在不給任何人透露密碼的情況下,能夠證明某個賬號的歸屬權(quán)。因此采取了非對稱加密機(jī)制,對稱加密只有一個密碼,雙方都必須知道,所以傳輸?shù)臅r候容易泄漏。而非對稱加密有兩個密碼,一個是自己保管的叫私鑰,一個是公開的叫公鑰,私鑰加密的信息只能用公鑰解密,公鑰加密的信息只能用唯一的私鑰解密。比特幣網(wǎng)絡(luò)將公鑰當(dāng)成賬號來使用,向所有人公開,礦工只要能夠用公鑰,正確解密私鑰加密的信息,就證明發(fā)起交易的人就是賬號的主人。
 
          非對稱加密是基于大數(shù)分解困難這個難題建立的,其實(shí)比特幣用的并不是標(biāo)準(zhǔn)的rsa算法,而是橢圓曲線加密算法,這個講起來太復(fù)雜了,有興趣的可以自己去了解。本質(zhì)上跟rsa的原理一樣,他的基礎(chǔ)就是一道非常難解的數(shù)學(xué)難題。這個是比特幣網(wǎng)絡(luò)唯一用到的兩個數(shù)學(xué)原理之一。除了幾百億年的窮舉一個個嘗試,沒有更好的捷徑解出來,所以可以認(rèn)為就是沒法破解。這種機(jī)制已經(jīng)廣泛應(yīng)用在各種重要的銀行、通信等等系統(tǒng)當(dāng)中,所以即使量子計算出現(xiàn),要攻擊也輪不到比特幣。所以不管從數(shù)學(xué)的角度還是從市場博弈的角度來講,比特幣的賬號密碼體系都是非常安全的。
THEEND

最新評論(評論僅代表用戶觀點(diǎn))

更多
暫無評論