各位好,上次我與 @antonsteemit探討了:
相信大家現在對於區塊鏈上的手續費是用來做什麼以及來自哪裡,都有了更清楚的瞭解了吧!
此一系列以「DA-ChainTalk」的名稱開頭,您亦可從 #da-chaintalk來追蹤我們的文章。謝謝!
Image Source: https://pixabay.com/en
加密與加密貨幣
一路上研究區塊鏈的過程中,常常被問到到底為什麼比特幣被稱為「加密貨幣」、「虛擬貨幣」、「數位貨幣」這麼多種名字,而這個「加密貨幣」到底又是在搞什麼鬼。如果你也有過一樣的疑問,那們今天就一起來看看到底何謂加密、還有密碼學如何帶領這些「虛擬貨幣」更上一層樓。
Image Source: https://pixabay.com
數位貨幣 、虛擬貨幣、 加密貨幣
其實Crypto這個字的來源就是Cryptography,也就是密碼學,因此Cryptocurrency最正確的翻譯應該是「加密貨幣」。但可能是這個名字感覺太虛幻了,加上以前比特幣第一波泡沫時這種「不是真實存在」的形象,讓我們很自然而然的就以原本拿來形容虛擬世界代幣的虛擬貨幣來代稱Crypto。加上他也符合數位貨幣(Digital Currency)以電子數字為基礎存在的特性,因此普遍大家都懶的特別使用一個新的詞「加密貨幣」來稱Cryptocurrency。
但其實虛擬貨幣這個詞跟數位貨幣一樣,應該涵蓋更大的範圍,其實以此一更廣泛的這些名詞來代表Crypto有點說不過去,不過語言的使用本來就是有其隨機與歷史路徑的因素,因此我們也不需要太計較,基本上能溝通就好。不過今天我們一起來討論一下所謂的「密碼學」究竟如何創造了Cryptocurrency。
密碼學 (Cryptography)
密碼學是個歷史悠久的學科了,早在很久很久以前,大家就會透過不同規則將明文(plain text),「加密(Encrypt)」成為密文(cipher text),讓這些內容只有知道解碼規律的人能夠讀取。大名鼎鼎的「凱撒加密(Caesar cipher)」就是最廣為人之的加密技術:透過把每個字母按照順序「偏移」後(全部的A變成B、B變成C…),就可以成為一段看似亂碼的密文。這對我們一般人平常傳傳紙條已經很夠用了,但是密碼學當然遠不只如此。
對稱式加密
所有加密方式種有另一種好理解的加密方式就是「對稱式加密」,簡單的說就是要有一組「密碼」來解開密文。雖然聽起來很簡單,後面的數學卻是不得了的難。但基本上對稱式加密的核心就在於使用「一把鑰匙」來加密解密,若是A要傳祕密訊息給B,A要擁有這把鑰匙來加密,B也要擁有同樣的鑰匙來解密。
經過聰明的數學家證明,這種加密不可能被有效率的破解,也就是說大家只能使用「暴力法」一個密碼一個密碼試,而要試到一個成功的密碼幾乎是不可能的。這已經算是人類世界一大福音,從此大家的機密檔案都可以成為真的機密了,有名的對稱式加密方法有AES (Advanced Encryption Standard)等,有興趣的人可以去了解一下背後的數學原理()。建議大家還是算了吧
如前面所說,對稱式加密最大的特點就在於「加解密使用的是同一把鑰匙」,但這個特點也給予了它很大的限制。在網路的世界裡,幾乎所有的「封包」都是可以被所有人攔截的,如果今天我想要與一個特定用戶建立連線,並且透過密碼學加密我們之間的訊息的話,只使用非對稱加密一定就要先共同決定出一把鑰匙。但這造成了一個矛盾,假若我們要先溝通決定或傳遞鑰匙的話,那鑰匙不是也被其他人看光光了嗎?也就是說在一個純靠網路通訊的世界裡,無法透過對稱式加密來同時「傳送密碼」和「只傳送密碼給他」。
非對稱加密 (公鑰加密)
正是因為這樣的特性,所以「非對稱式加密」的出現造成了巨大的變革。非對稱式加密又稱為公鑰加密,也就使用public key跟private key解密加密的手法。沒錯,這裡的public key跟private key就跟我們使用任何「加密貨幣時」一樣,被要求公開的「公鑰」以及絕對要保管好的「私鑰」。
先來說說非對稱加密的特性:簡單的說,每個人都有一組公鑰+私鑰,我們可以輕易的由私鑰推算出公鑰,但不可能透過公鑰推算出私鑰;再來,若是我們將一個「明文」透過某些數學公式,透過私鑰加密成為密文,則可以用公鑰解開;反之,若是使用公鑰加密,也可以使用私鑰解開。最有名的非對稱是加密就是「橢圓曲線加密」。
通訊
因此在回到我們剛剛網路通訊的例子中,我們希望我們傳送給對方的文字只有對方能解開,因此我們可以使用他們公開告訴大家的「公鑰」來進行加密、在對方收到密文之後,只要拿出自己藏好的「私鑰」就可以解開訊息。在這過程中,任何人攔截了訊息都沒辦法解開,也不需要有傳遞鑰匙的過程,因此非常的安全。
Image Source: https://commons.wikimedia.org/wiki/File
加密貨幣
接著我們再來看看這樣的技術如何運用在區塊鏈之中。還記得我們剛剛的例子是利用「接收者」的公鑰加密,讓接收者成為唯一可以解密的人,這可以視為「我們想要確定接收者的身份」。不過在區塊鏈的世界中則有點不同,大家要做任何事情前,都要「證明我就是我說的本人」,例如我們要發起一份交易,把自己的比特幣發出去時,一定要透過這個被稱為「簽名」(Sign)的動作來「證明自己是這筆錢的所有者」。而這個簽名的動作其實就是透過私鑰加密,因為私鑰只有我一個人擁有,而且所有人都可以用我的公鑰來解密,如果別人成功利用我們的公鑰解密,就能證明我確實是我聲稱的人,也就是這對鑰匙的所有者。
數位簽章
我們可以發現,相較於加密文字背面被人偷看,區塊鏈中是使用非對稱式加密來「確認身份」。這個動作被稱為「數位簽章」,其實在網路時代就已經有了,這與區塊鏈中的使用情境差不多,就是要驗證「來者的身份」。區塊鏈中,我們乾脆使用「公鑰」當作一個「錢包地址」,而區塊鏈上所有人都可以看到所有帳戶的餘額,唯一的區別只在於誰可以花哪些錢。
因此,所有的節點在判斷一個交易是否有效時,其實只要試試看交易發起人「簽署過」的這筆交易,是不是真的能用它的公鑰解開,就可以判斷他是不是這個地址的擁有者。這就是我們常說的「驗證」一筆交易時的一個環節。
加密貨幣?
所以稍微整理一下,加密貨幣中到底哪裡用了加密呢?就是每個地址的擁有者,其實就是擁有該地址私鑰的人。擁有私鑰的人才能夠透過這筆私鑰「簽署發起」一筆交易,因此他就成為了全世界唯一有權力動用該帳戶下財產的人。其實仔細想想,比特幣就是一個奇怪的系統,上面記滿了每個公鑰下有多少錢,而只有擁有該組帳戶私鑰的人可以將錢轉給其他人。
結語
所以,以後看到大家說要「Sign一個Transaction」、「簽署一筆交易」、「私鑰簽名」的時候,要知道其實沒這麼難懂的,就只是丟到一個規定好的算式裡面算算數學而已。密碼學雖然背後的數學很難懂,但是我們要知道他們都是偉大的天才數學家們證明過安全的,只要我們好好保管私鑰,就絕對不會出事的。要知道,從比特幣問世以來沒有任何竊盜盜領事件是破解了「密碼學」,所有的駭客事件等等,都是透過其他人的疏失來直接獲得某人或是某交易所的「私鑰」,因此得以控制那些資金。站在駭客角度想,相較於破解那些以被天才證明不可能破解的數學,來寫些詐騙釣魚網站騙騙我們普通老百姓簡單多了,是不是呀!無論如何:
私鑰絕對要藏好呀!
#da-chaintalk
This page is synchronized from the post: ‘DA-ChainTalk #11 — 加密貨幣的加密是什麼?’