比特幣數學原理與潛在安全問題

2022-01-10 培傑國際數學文化
數學

今年初我偶然跟一個朋友討論到比特幣這個話題,這個朋友沒有接觸過密碼學也沒有任何技術背景,所以認為比特幣的製造跟隨便印錢一樣可以超發,仿佛會無中生有,其實大部分人平常所接觸的虛擬貨幣類似Q幣之類的,由某個運營商或平臺髮型作為交換服務的憑證,而該虛擬貨幣的發行完全就被該公司控制,現實世界中由政府發行的貨幣實際上跟這些傳統虛擬貨幣一樣,超發與否、價值漲跌完全由該平臺運行者或政府完全控制。現在我們通過各種解讀知道了比特幣並不會無緣無故地超發,那麼到底是什麼保證了它與「普通」虛擬貨幣不同的特性呢?

答案就是——數學。

散列

首先從散列講起,散列又叫「雜湊」,國內也有根據其英文(Hashing)譯為哈希,其實從名字的「零散地列出來」、「雜亂地湊起來」來看就知道,這是一種信息摘要算法,而摘要的意思和小學語文的把一段文章的中心大意提取出來類似。在計算機中,散列通常是經過某些特定的手段(例如經過一系列複雜的位運算)提取出某段數據的特徵、該特徵用來校驗(比如驗證從網絡上下載的一個很大的文件的正確性)。語文課上的概括中心大意是根據概括的內容,你能還原出這段講的內容是什麼,而密碼學級別的散列則恰恰相反,它使得你提取出來的表示數據特徵的代碼絕不能還原(或輕易還原)為原來的數據。

舉例,現在流行的一種散列函數叫SHA-1,當你提交一個字符串: 「The quick brown fox jumps over the lazy dog」

作為SHA-1的參數時,得到如下摘要信息: 2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12

但是哪怕你修改了一個字符: 「The quick brown fox jumps over the lazy cog」

得到的結果也會發生翻天覆地的變化: de9f2c7f d25e1b3a fad3e85a 0bd17d9b 100db4b3

散列函數的這些特性保證了它不會輕易地通過小的修改和獲得摘要的差別分析出算法的漏洞,以保證原始數據的安全。

那麼散列函數該怎麼用呢?它通常以「證明」的工具用。比如說Alice有一個字符串: 「The quick brown fox jumps over the lazy dog」

Bob說我也有那麼一個字符串和 Alice 一樣,但是Bob並不信任 Alice,萬一Alice是偽裝那就會把自己真實的字符串洩漏給假 Alice;同時Alice也不信任Bob,因為如果Bob是冒牌的自己一樣會把真實的字符串洩漏給假Bob;更可怕的是旁邊站著一個間諜Eve時刻監聽著Alice和Bob進行字符串交換的過程並且獲得該字符串。那麼如何讓Alice和Bob兩人互相相信對方不是冒牌貨呢?簡單的方法是兩人將自己的字符串進行散列運算,然後比對即可。這樣就算有人監聽或者對方是冒牌貨也不會洩漏原始數據。

這些類似SHA-1的散列函數是怎麼來的呢?是經過美國國家安全局 (NSA) 設計美國國家標準技術研究院 (NIST) 發布的。而一個著名的散列標準(包括其他的加密標準)公開招標的過程是完全公開的,所有提交的算法和標準都會經過來自全世界無數頂級的密碼學家的檢驗,所以可以基本認為「同時期」流行的散列算法(包括其他加密算法)是安全的。

從以上討論可以看出散列的過程是不可逆的,所以具備證明原始數據同時保護原始數據的能力。最近很多網站爆出明文密碼讓眾人譁然,因為對密碼進行不可逆的散列運算是保證用戶信息安全的最最基本的措施之一,而這些網站竟然都沒有做該措施(想像一下明文密碼洩漏後被人利用會用來嘗試登錄受害者的郵箱等其他帳號)。

工作證明

那麼比特幣從哪來呢?就從這些散列函數的運算結果來。想像一下我們計算這麼一道題,到底輸入什麼樣的字符串,會得到一個散列結果開頭是0?有人說我把該函數反向推導得到一個反函數不就可以獲得原始結果嗎?那可不行,因為這些散列函數是非常嚴密的經過無數數學家檢驗的,具有「密碼學」級別安全度的,絕非輕易推導就能推導出來的,獲得一個未知的原始結果的方法只能是窮舉,換一句話說就是猜,把所有可能的結果一個個代入散列函數進行嘗試,如果你恰好獲得了開頭為0的結果,恭喜你,你解出了該「數學題」,獎勵比特幣若干,該解題的過程就叫做挖礦(Mining)。剛開始這樣的工作是非常簡單的,一道題只需要普通個人電腦的 CPU 就能快速解出最初的幾道題,隨著挖礦的人數增加題目會越變越難同時獲得的收益會越來越低,因為同樣的時間內只會產生一定數量的比特幣,而分配的過程只會根據按而解出題目的個數。為了獲得更多的比特幣,有的人把解題的過程編制為顯卡的GPU程序,因為顯卡的特點大家都知道,就是有很多流處理器可以短時間內做大量運算。買了高性能的顯卡的人越來越多,用顯卡挖礦的收益越來越少,於是一些人則乾脆自己設計硬體,用專用的集成電路(ASIC)進行該解題過程,這類擁有大量專用挖礦集成電路的機器就叫做「礦機」。

分布式

那麼有人說,假如自己反覆給自己出一些自己早就找到答案的「數學題」然後自己快速解答,豈不是能隨意獲得比特幣?當然不行。比特幣設計精妙的地方、同時也是區別於其他傳統貨幣的地方就在這裡。「數學題」的產生並非自己說了算,而是所有人一同採礦並且每個人都存儲著一份採礦獲得的結果—比特幣的交易記錄,自己製造的假的結果不算數,還得必須得到全網的其他人的認可。這麼設計的結果就是,一個人不能隨意偽造自己的財富,而自己已有的財富則會得到全網所有人的證明而不會被輕易剝奪。

證明力?

這些密碼學支撐的虛擬貨幣到底安全嗎?「

從技術的角度來說,通常來說(下文會詳細解釋)」是安全的,實際上我們日常上網、銀行、軍事等活動中都是靠密碼學來支撐,現在已經無法想像沒有這一系列密碼學保障,我們平常的生活會變得怎麼樣,而密碼學歸根結底就是數學。 這裡我們看到,實際上數學已經完全作為一種自然元素而非人造的產品支撐著各種基於密碼學的貨幣,它的證明力甚至強於黃金(也許人類的能力有一天可以強大到模擬黃金產生的過程,比如類似大爆炸的物理活動,但是所有的物理活動也無法違反數學的規律)。

而單單有數學的保證還不行,還得從社會的角度得到證明,也就是足夠多的人相信比特幣能改變他們的生活,能提供一種便攜的支付手段,甚至僅僅相信它能作為炒作的工具而使用,這些經過大量散列運算得到的數據塊就是有價值的。

安全性

對於安全性方面我們還需要進一步討論。首先說明,安全並不是一個數學公式、或一個算法的採用,更不可能是一個所謂的「安全產品」能保證的,安全是一系列正確實施的過程的組合。

舉例,某公司為了保證自己產品的設計圖紙或者原始碼的安全,給公司每臺機器安裝了殺毒軟體,公司部署了最好的防火牆,進門出門需要驗證指紋,同時每個人不能攜帶存儲設備出入也不能連接Internet。最後該公司的設計圖紙和原始碼還是被對手公司的間諜獲取了,獲取的方法很簡單,該間諜賄賂了公司主管,讓該主管複製了一份設計圖紙和原始碼帶出公司交給間諜……

比特幣也是一樣,你說不能簡單用安全或者不安全來概括,而應該考慮與比特幣相關的所有環節,同時每個環節的安全措施都要做到位才能減少損失。

下面我根據發生的概率從高到低把一些可能威脅到比特幣安全的事件列出來:

交易平臺

毫無疑問交易平臺是最脆弱的環節之一,你將各種虛擬貨幣保存在交易平臺(或者說託管在交易平臺)那麼你對該貨幣安全性的唯一措施幾乎就剩下登錄和交易密碼的保護了。交易平臺被攻擊或被入侵的時間層出不窮,而損失也是慘重的,舉幾個例子:

10月23日,web比特幣錢包Inputs.io被入侵,價值120萬美元比特幣被盜竊; 10月26日,比特幣交易平臺GBL攜客戶存款跑路; 4月三日,交易所 Mt.Gox被DDOS攻擊,比特幣價格大幅下跌; ……

確保交易平臺的安全性的方法除了制定良好的登錄和交易密碼之外,最好的方法是把一部分比特幣轉移到自己私有的錢包,自己的安全性由自己保證,這樣不管交易平臺是跑路還是被攻擊也不至於損失全部。

本地錢包的安全

錢包文件記錄著證明自己對該錢包所有的私鑰等重要信息,所以本地錢包一定要安全保管並且妥善備份。保護本地錢包同時意味著必須保證自己的電腦上有足夠的安全措施,包括作業系統(尤其是Windows這樣的大眾作業系統)必須及時更新(包括升級到較新的版本,比如2013年來說應該升級到 Windows 7 或 Windows 8 ),使用自帶的更新功能(比如 Windows Update )打上最新的補丁,如果有必要的話裝一些安全軟體,例如防火牆和殺毒軟體也是不錯的選擇。

山寨幣上位

隨著比特幣的流行,無數的山寨幣也被強勢推出,據說創造一個新的山寨幣只需要1個比特幣。這些山寨幣中抱著撈一把就走,改改比特幣客戶端參數的大有人在,但是其中一些也提出了一定的改進(比如性能、交易時間等),這些改進中不乏有價值的改進。可以遇見一旦一個新的山寨幣提供了足夠吸引人的特性或者解決了比特幣面臨的一些嚴重的問題,將會迅速上位並且壓過比特幣的先發優勢。

密碼學級別的破解

比特幣使用的算法遭到破解,雖然說起來好像天方夜譚但是不是沒有可能發生,比如歷史上曾經流行過的對稱加密算法DES因為密鑰過短早就推薦不使用,而轉為用3DES、AES以及Blowfish等替代;曾經流行的流加密算法RC4因為強度不夠也遭到各種有效的攻擊;而流行的散列算法MD5在2004年被山東大學數學系教授王小雲發現了快速碰撞的方法把產生碰撞的步數從之前的2的80次方先後降低到2的69次方和2的63次方(這個降低的級別在計算機的角度是驚人的)。

我們可以看看一些著名的加密算法提出的時間以及到被不推薦使用甚至廢棄(遭到非常有效的攻擊)的時間:

MD5(1992-2004),12年;

SHA-1(1995-2013),18年;

DES(1976-1999),23年;

現在的產品中MD5和SHA-1還在大量使用,微軟官方博客就宣布在2016年之前廢棄SHA-1和RC4了。

比特幣設計比較領先,2009年產生時已經使用了當時已經確立標準的最新的[SHA-256](http://en.wikipedia.org/wiki/SHA-2)以及RIPEMD-160散列算法,同時還選擇了非常先進的採用secp256k1曲線的橢圓曲線公鑰算法。這些密碼學的基礎措施在目前(2013年)看來依然十分安全,但是隨著密碼學家進一步的研究配合更加高性能的機器的暴力破解,這些算法會變得越來越脆弱,此時無論是遷移到新算法還是加強現有算法都會變得非常困難。

大運算力的暴力破解

有人計算過,一個比特幣私鑰的長度是256 bits,要窮舉所有的可能來破解該私鑰需要:

pow(2,128) / (15 * pow(2,40)) / 3600 / 24 / 365.25 / 1e9 / 1e9 = 0.6537992112229596

也就是650000000000000000年。看上去好像比特幣絕對安全了,但是如果考慮摩爾定律,每18個月計算機的性能提高一倍,兩個十八個月就變成了原先的四倍,這樣的增長實際上是非常驚人的。計算下來的結果就是只要59年後,計算機就能夠在有意義的時間(比如1.13年內)破解一個私鑰,也就是破解了某人的錢包,這是非常危險的。

你可能會說59年也足夠長了,且慢,你還沒考慮到專門針對破解用的硬體。顯卡和專用集成電路製造的礦機能用來挖礦,為什麼不能用來破解?

政府的政策

雖然比特幣等基於密碼學的貨幣的一個功能就是抗來自政府的通脹,但是千萬別以為政府的措施會很有限,如果需要剿滅(或者在某一地區剿滅)比特幣,只需要在比特幣賴以生存的介質–網絡上下手即可。在比特幣找到更加難以封鎖的介質之前,來自政府的態度也是不容忽視的。

點擊「閱讀原文」進入「哈工大出版社—微店」了解編輯室所有圖書

 點擊題目下方的培傑國際數學文化,即可關注

加微信公眾號「培傑國際數學文化」,更多精彩內容看不完。

感謝您的一路陪伴和認可!
小編微信:zhy0593

 培傑國際數學文化QQ群:261842453

我們歡迎數學愛好者投稿

本平臺免費為您展示、分享。

相關焦點

  • 三分鐘帶你了解比特幣的數學原理!
    三分鐘帶你了解比特幣的數學原理!而比特幣卻顛覆了這兩點:比特幣系統不需要信任機構作為中心;比特幣系統具有不可追蹤性,無法從帳戶地址推斷所有者。這種數字貨幣系統是基於如下的兩個理性假設:首先,比特幣網絡上「好人」永遠多於「壞人」;其次,基於橢圓曲線的加密算法是安全的,無法被輕易破解。
  • 比特幣背後的原理
    導語:比特幣背後的原理,數學是如何應用在虛擬貨幣的設計上的?本文來自3Blue1Brown《想知道比特幣(和其他加密貨幣)的原理嗎?》視頻: https://space.bilibili.com/88461692本文根據視頻內容整理文字版,視頻如下。「擁有」一枚比特幣究竟意味著什麼?
  • 比特幣的挖礦原理(比特幣是如何產生的?)
    在上一篇文章《什麼是區塊鏈》結尾我也遺留下了一些問題和思考。這篇文章,我們繼續從底層原理出發,來揭開這些神秘的面紗(如果你沒看過之前的文章,強烈建議你先看下)。比特幣是什麼呢?比特幣是一種積分。積分的作用是幹嘛呢?大家知道:同理,在比特幣網絡裡,挖礦就可以獲得比特幣。
  • 光知道掙錢 卻不知比特幣的原理與運作機制?
    【PConline 雜談】眾所周知,比特幣依靠特定算法並通過大量的計算產生。然而,由於P2P的去中心化特性與算法本身,也將比特幣的總數量永久限制在了2100萬個。正因如此,比特幣才具有極強的稀缺性,這意味著其背後蘊藏著巨大的升值空間。But!本期我們不講發家致富,而是要向各位科普一下比特幣的原理與運作機制。
  • 思緒漫步 | 比特幣與 SHA256 的數字原理:從社交資本連起
    發現比特幣的概念居然可以運用在社交上,於是想切實了解比特幣。26 日通過 B 站簡單了解了比特幣的技術原理,為之中的 SHA256 算法感到神奇。1.  對興趣話題的持續關注與深究2.  基本的搜索與溯源技能3.  不同領域內容的關聯4.  多信源的協調間這次實驗性的實踐了下把 YouTube 當成信源。
  • 比特幣的原理及運作機制
    在這篇文章中我會給出一個虛擬的村莊叫「比特村」,整個文章會以講故事的方式,逐步告訴大家比特幣提出的動機、解決了什麼問題以及一些關鍵組件的目標和設計方案。問題的提出我們先從比特幣產生的動機開始。以物易物的比特村話說在這個世界上,有一個叫比特村的小村莊,村莊共有幾百戶人家。
  • 比特幣中的密碼學:哈希函數五大特性和挖礦原理
    比特幣是世界上第一種成功的加密貨幣,之前的嘗試都沒有像比特幣這樣有效解決有關貨幣的各種問題。
  • 一年瘋漲500%的比特幣,背後是什麼原理?
    雖然有時候「複製」會觸碰到法律問題或者公平問題,但僅僅一首歌、一部電影的複製卻並不太可能帶來摧毀整個經濟的影響。 但是想想看,如果錢也能複製呢? 如果我要給你一美元,那麼我肯定不能像發電影一樣自己也留下一個複製。通過發郵件不斷複製生產出無限量的數字貨幣——這麼個想法乍一看的確很是誘人,但如果每個人都學會了複製貨幣呢?
  • 如何安全使用比特幣紙錢包?
    近一段時間以來比特幣價格飆升持續大熱,吸引很多新人加入了投資比特幣的行列。但新來的酗伴們對如何使用五花八門的比特幣錢包不甚了解。今天,編者以最簡單的比特幣紙錢包為例,帶新手們來了解一下如何安全的使用比特幣紙錢包。
  • 990量化雲揭秘:什麼是比特幣的量化交易?比特幣量化交易靠譜嗎?
    量化交易,有時候也稱自動化交易,是指以先進的數學模型替代人為的主觀判斷,極大地減少投資者情緒波動的影響,避免在市場極度狂熱或悲觀的情況下做出非理性的投資決策,量化交易有很多種,包括跨平臺搬磚、趨勢交易、對衝套利、三角套利、跨期套利、ETF輪動套利等。1)比特幣適合量化交易嗎?
  • 通俗講解比特幣的原理及運作機制
    在這篇文章中我會給出一個虛擬的村莊叫「比特村」,整個文章會以講故事的方式,逐步告訴大家比特幣提出的動機、解決了什麼問題以及一些關鍵組件的目標和設計方案。問題的提出我們先從比特幣產生的動機開始。工作機制分析雖然上面闡述了比特幣的基本運作規則,但是村民們還是有不少疑問。所以中本聰同學專門開了個答疑會,解答常見問題。下面總結一下村民最集中關心的問題。
  • [故事] 詳解比特幣的原理及運作機制
    這是一篇定位為科普的文章,作者以一個通俗的故事,採用用類比的方法將比特幣的基本原理講出來。這篇文章不會涉及算法和協議中比較細節的部分。      在這篇文章中我會給出一個虛擬的村莊叫「比特村」,整個文章會以講故事的方式,逐步告訴大家比特幣提出的動機、解決了什麼問題以及一些關鍵組件的目標和設計方案。問題的提出      我們先從比特幣產生的動機開始。
  • 為什麼我對比特幣減半憤世嫉俗
    在過去的幾個月中,區塊鏈社區一直在關注5月即將到來的比特幣(BTC)減半。在疫情泛濫情況下,比特幣一直表現得非常出色,特別是與傳統上被用來抵禦市場波動的安全避險的石油或黃金等商品相比。推動比特幣價格上漲的部分因素是「減半」。距離減半還有兩個星期,這到底是什麼?為什麼投資者要注意它的存在?
  • 夢想「深山挖礦」致富,是比特幣不靠譜的明證
    要解釋清楚什麼是「挖礦」,就必須理解什麼是比特幣,以及比特幣運作的有關原理。但自2009年比特幣誕生以來,理解比特幣就需要相當的門檻,這裡儘量嘗試通俗解釋。大體來說,比特幣是一種電子「加密貨幣」,是密碼學的產物。
  • 比特幣有哪些優勢?幣信錢包安全、好用、無門檻
    目前,流通中的比特幣有1850萬枚,佔總發行量的近90%。據估計,要達到2100萬比特幣的上限,還需要120年的時間來「挖掘」剩下的10%的比特幣。很多人認為:獲得比特幣的機會將會減少,或者比特幣將掌握在特定的少數人手中。只要我囤著幣,作為收藏,它的價值會升高,以後我也可能是百萬富翁、千萬富豪。人們與日俱增的囤幣熱情,也是比特幣需求回升的原因之一。
  • 比特幣是什麼?什麼是挖礦?為什麼比特幣這麼值錢?
    挖礦不是真的挖礦石,是算力是試錯,是安全。比特幣價值的來源?泡沫會不會破?關鍵詞:記帳,區塊,算題,價值,共識,信任,泡沫。第一,虛無縹緲,天才想法,創新記帳到底什麼是比特幣呢?就是一個叫中本聰的人,當然這個人到底是誰,現在也不知道。是一個人還是一群人也不知道。他搞了一個想法出來,一種是全新的創意。
  • 比特幣錢包原理及JS實現實例
    我們可以通過多種不同的方式生成比特幣錢包,使用比特幣核心客戶端或使用在線錢包服務或從硬體錢包製造商處獲取等。比特幣錢包的組成?它包含兩個密鑰私鑰,公鑰和公共地址。私鑰用於硬幣的支付(即籤署交易),而公鑰用於驗證交易的籤名。
  • 比特幣是什麼?新手如何購買比特幣
    但彼得·希夫在《小島經濟學》中用了一個很小的模型,便說清了美國經濟發展的脈絡和原理。藉此邏輯,大林用一個巨大的水池,也能將比特幣的原理講清楚。話說十年前,有一個對未來經濟充滿擔憂的漁夫,往一個巨大的池塘裡投放了2100條魚,這些魚雖然種類不一樣,但是每條魚的價格是一樣的,沒有性別、膚色甚至大小歧視。
  • 比特幣已突破2.4萬美元 比特幣上漲的邏輯在哪
    就在12月,作為世界上最有價值的虛擬貨幣,比特幣的價格一度超過24000美元,創下歷史新高。對於任何投資比特幣、甚至只是關注比特幣的人來說,2020年都是驚心動魄的一年。儘管比特幣的價格波動很大,但總體呈現上升趨勢。對於一種只有10年交易歷史的貨幣來說,2020年是收穫頗豐的一年。
  • 拆解比特幣的社會契約
    ,我們應該持懷疑態度,在相信它具有任何經濟價值之前,儘可能多地提出困難和緊迫的問題。中本聰試圖通過兩種方式打破這一惡性循環:首先,比特幣不是從強大的中央政黨(如政府)那裡獲得安全的,而是為自己創造了一個自由競爭的市場。它把安全變成一種商品,把安全提供者(礦工)變成商品生產者。其次,中本聰找到了一種方法,讓這些相互競爭的安全提供商在任何時候都能就誰擁有什麼達成共識。