簡單讀懂密碼學的核心問題_拜占庭容錯
藍狐筆記/作者:Demiroxa0Massessi/翻譯:Dyna/張詠晴編譯
2019-04-17 14:39

 

拜占庭容錯是區塊鏈領域的常見術語,它也是密碼學的核心問題。本文適合初學者閱讀。

 

本文簡化了「拜占庭將軍問題」中可能出現的多種數學模型,簡要指出拜占庭問題解決的核心是「儘管有破壞者存在,擁有最多算力的鏈即可認定為主鏈,因為做叛徒(發佈虛假區塊)的成本和競爭難度非常大,以至於幾乎不可能。」由於區塊鏈的去中心化和自治屬性,如何在容許一定差錯的情況下讓眾多參與的節點達成共識並傳遞訊息,這是一個核心問題,中本聰第一個做到了。

 

當你開始深入瞭解區塊鏈時,會經常聽到一個術語:拜占庭容錯(BFT)。如果你想弄清楚它,一個聽起來非常奇怪和神秘的術語,我們可以用一個故事來解釋。

 

1982年,一個叫做拜占庭將軍問題的數學問題被提出來。這裡不詳細描述它背後的數學原理,本質上,拜占庭將軍問題是一個關於兩個帝國之間一場戰爭的故事。

 

騎士精神:中世紀的戰爭

 

一個帝國置身於堅實的城牆裡,另一個帝國的數位將軍包圍了這座城市,每個將軍都帶領著軍隊等候進攻。兩個帝國勢均力敵。

 

如果所有的將軍達成一致同時進攻,他們就有足夠的力量戰勝城牆裡的帝國,從而贏得戰爭。

 

但是,不管出於什麼原因,如果他們不能協調好同時發動進攻,哪怕只有一個將軍錯過了訊息,他們的圍攻計劃將會失敗並輸掉這場戰爭。

 

拜占庭將軍問題探討了密碼學的一個關鍵領域,事實上,這是密碼學的核心,本質是如何在一個某些人可能會「叛變」的環境中交換訊息。

 

現在, 這些將軍們唯一的溝通方式就是派一個偽裝的信使,穿過城市為其他將軍傳遞訊息。這裡將會一直存在一個風險。如果你是其中一個將軍,你將從其中的一位信使那裡得到一個消息,那麼你怎麼知道,或者你怎麼能夠比隨機決定有更大把握,相信你得到的訊息是可靠且沒有被篡改過的?

 

這也是1982年提出的一個假設,直到2008年才得以解決。那一年匿名的中本聰(Satoshi Nakamoto)提出了一個解決辦法,這使得比特幣成為可能。

 

本質上,解決方案是讓所有的將軍都盡可能擁有更多的數學家。

 

「當我們談論拜占庭容錯時,我們談論的是將軍們比城牆內的帝國擁有更多的權限,更多的數學家,或更多的算力。」

 

所以,如果我能雇更多的數學家,那就意味著我可以越來越複雜地加密我透過城裡傳遞的訊息;但如果城外將軍們的權力平衡局面變得非常有利,且他們可以使用的加密方法是如此複雜,以至於城裡的任何一位數學家真的沒有機會或非常小的機會,能夠在將軍們幾乎注意不到的足夠快的時間裡,攔截消息,然後解密、改變內容並重新加密。

 

這就是拜占庭容錯。

 

這也是現在我們看到的,大多數公共區塊鏈解決方案中使用的容錯機制,包括我之前提到的比特幣和以太坊,儘管以太坊正在過渡到權益證明系統(Proof of Stake)。

 

因此,說到區塊鏈,當你聽到拜占庭容錯時,它表示的含義就是如果區塊鏈上的算力和哈希能力比鏈外的更強大,它就會變得安全。

 

比特幣是目前最大的區塊鏈網路,擁有超過30,000個節點,Ethereum有超過16,000個節點,它為我們提供了高度的安全性和不可變性。這些網路上的算力非常強大,以至於真的沒有多少機會,讓一個對手可以控制盡可能多的算力來攻擊該區塊鏈上的數據。

 

如果有人要這樣做,其背後的經濟機會很可能是,他們將花費更多的錢來同時利用所有的算力,這可能是他們無法承受的。

 

關於這個問題,你會聽到很多關於51%攻擊的問題。最後,我們可以說,拜占庭容錯是密碼學的根源,它只是單純研究我們如何在有「敵對方和惡意行為者」的時候能夠安全地來回傳遞訊息,它是存在於區塊鏈中所有安全性和不可變性的基礎。

 

本文為巴比特資訊授權刊登,原文標題為簡單讀懂拜佔庭容錯