2014.04.14 15:00

比特幣的架構、演算與經濟,為什麼AMD比NVIDIA還好挖?安全有什麼漏洞

ADVERTISEMENT

話說大約在23年前,水電工的朋友圈中開始有人提到比特幣(Bitcoin,簡稱BTC)這種新玩意。近年來在網際網路上,許多公司不斷嘗試提供所謂的金流以及虛擬貨幣的服務。好比水電工本人就曾在某些網遊公司打工,虛擬貨幣的發行、遊戲中寶物的發行和維護,其實都是類似的東西。當然礙於法律規定,遊戲公司是不可能花錢回收代幣及寶物的,但是這些虛寶在實體世界中仍會有同好不斷地轉手收售。

章節目錄:

第一章:

第二章:

第三章:

ADVERTISEMENT

第四章:

第五章:

起於密碼學大師

在美國更有某些快速線上付款服務,可讓您先購買點數後再去特約商店消費,凡舉這類型的服務,都算金流的一部分,因此從點數的發行到維護等,都是需要投資成本,同時也需要大量的網路安全及系統架構相關知識。否則一旦駭客入侵,即可能讓虛寶的公信力驟失,甚至讓使用者蒙受大量的損失。

ADVERTISEMENT

比特幣則比上述的各種金流服務更趨近無政府主義者的理想,能不能有種貨幣,在沒有中央發行單位的管理下,由使用者自行運作且擁有更高的公信力,進而可能取代現有的各種貨幣?由化名中本聰(Satoshi Nakamoto)的某位密碼學大師的某篇論文中,提到某種方法來達成這個目標,在本文中我們要來看這種方法的好處及問題。

運作首重安全性

比特幣使用許多方式來試圖達成安全性及不可否認性,首先,比特幣並沒有實體的貨幣,甚至就算是深入比特幣資料庫中去看,也完全沒有密碼或編碼本文可以代表某個比特幣,因而沒有人可以拷貝、偽造出比特幣。所謂的比特幣,是利用雙金鑰密碼安全系統進行數位簽名的一連串交易紀錄。嚴格說來,就水電工自己認為,比特幣與其說是種電子貨幣,還不如說大家更為熟悉的P2P(peer-to-peer,點對點)服務。只要使用者將交易記錄利用私密金鑰加簽,並且發佈到網路上,原則上就算是交易成立了。

虛擬交易的驗證方式

由圖A我們可以看到中本聰對於交易的設計是這樣,由第一位所有者,發布1個交易訊息到網路上,這個訊息的意義通常是「使用者1要轉移n個比特幣給使用者2」這類的訊息,這個交易訊息並不是單純的交易本文,而是包括了利用使用者1的私密金鑰所加密過的電子簽章,不知道使用者1私密金鑰是無法偽造這個訊息的。而且任何一個知道使用者1的公開金鑰的人,都能可以用公開金鑰來檢驗這個訊息的真假。

ADVERTISEMENT

 

雙金鑰密碼系統

世上有許多型式密碼系統,而雙金鑰型的是應用層面最廣的類型。這種密碼系統的最大特色,就是使用者擁有2把密碼金鑰。每把密碼金鑰就是極長的數字,好比1024bit的超長整數,由於金鑰的位元數極長,要靠瞎猜來猜到使用者的密碼機率趨近於零。2把金鑰之中,其中一把是公開的金鑰(Public Key),可以發佈到網路上,另一把則是絕對不能給第三者知道的私密金鑰(Private Key)。

這個系統的好玩之處在於,任何人的公開金鑰都能發布讓所有人知道,而私密金鑰則是拿來進行電子簽章或拿來解密文件,也就是這2把鑰匙必需是成對的。假設A要發布電子簽章,就利用A的私密金鑰來加簽某段本文,任何人只要擁有A的公開金鑰,都可以利用這個公開金鑰確定這個本文和簽章的確是由A本人產生。

ADVERTISEMENT

若是A要傳送密文給B,就要用B的公開金鑰套進加密演算法中把本文加密,加密後的密文,只有用B的私密金鑰才能解開。由於這樣方便的特性,使得PKI成為目前商業交易最常使用的密碼系統,大名鼎鼎的RSA和Elliptic Curve(ECC)演算法就是用來實做這個雙金鑰系統的。

光是如此並沒有辦法防止假造的交易,好比若是使用者1是個邪惡的駭客,他帳戶裡明明只有10個比特幣,卻對網路上公開發表說他要送1000個比特幣給使用者2;或者是他同時送了使用者2、3、4各10個比特幣,這時要怎麼辦呢?

中本聰在設計這個系統時,便讓它成為P2P的系統,每個參與這個系統的人,都可以且必需得到過去到現在的所有交易紀錄,每個人經過掃瞄歷史交易資料之後都可以確認使用者1到底有幾個比特幣可以發送,若是發現亂來的,就會將這個交易資料刪除。由於沒有實體的中央控制的伺服器,因此在這麼多使用者間維持交易資料的一致性和真實性就成了重要的課題。在比特幣網路中,使用者的交易資料會被照發生的時間集結成資料塊(Block),並且發送到每位參與者的電腦上,由於不見得每個人都隨時上線,因此只要有6個節點承認收到了這個資料就算發布成功了。

下一頁:如何防止比特幣的歷史資料被偽造

ADVERTISEMENT