iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
Web 3

Web 3:一場關係所有人的網路變革系列 第 3

Day 3 - 去中心化的基石 (上):P2P 與 密碼學

  • 分享至 

  • xImage
  •  

整體並不只是個體之總和。
The whole is greater than the sum of its parts.


Figure 1-1. Types of networks (Oreilly)

「去中心化」是區塊鏈與web3最常提到的特色,上圖提供明確的對比,而區塊鏈能達成去中心化的三個要素:點對點傳輸、密碼學、共識算法。今天我們先聊聊前兩個部分:點對點傳輸與密碼學

區塊鏈技術並不是2008年中本聰白皮書橫空出世,而是堆疊在過往的技術之上,點對點(Peer-to-Peer, P2P)檔案共享即是重要的技術之一,而這也是法律與科技的第一場衝突。

1. P2P

P2P軟體在21世紀初期造成的風風雨雨,包括國內成大MP3事件、美國大學生 Shawn Fanning 創造了一個名為 Napster 的音樂共享服務在2001年因美國唱片業的訴訟而被關閉。進化版的點對點傳輸BitTorrent接續上場。 BitTorrent由程序員 Bram Cohen 在2001年創建,並迅速獲得了廣泛的應用。BitTorrent 允許用戶從多個來源(或稱「peers」)同時下載文件,從而分散了網絡流量。然而,由於 BitTorrent 也常用於分發受版權保護的材料,這導致了一系列的法律和版權問題。

P2P檔案共享有個關鍵技術——Hash 函數,又稱雜湊函數或哈希函數、散列函數。
Hash函數是一種將任意長度的資訊映射到固定長度資訊的算法函數。
為了在數以兆計的檔案中,找到茫茫人海的片子而不要載到騙子,我們不能只依靠檔名來識別,而是需要透過雜湊函數生成文件的唯一識別碼、驗證文件的完整性、索引文件的不同片段、加速搜索和確保加密 P2P 網絡的安全性。如BitTorrent中,散列用於索引文件的不同片段。這使得用戶可以從多個來源同時下載文件的不同部分,然後再根據散列值將它們重新組合成完整的文件。

應用在區塊鏈中,hash函數主要用於以下兩個目的:

(1) 生成區塊的唯一標識符
每個區塊都有一個唯一的標識符,稱為區塊哈希。區塊哈希是使用hash函數計算的,它由區塊中包含的所有資訊組成。
(2) 驗證交易的完整性
區塊鏈中的每筆交易都有一個哈希值。當交易被驗證時,將使用hash函數重新計算交易的哈希值。如果計算出的哈希值與存儲的哈希值不匹配,則表示交易已被修改或損壞。

2. 密碼學

對稱加密在區塊鏈中的應用: Merkle Tree

所謂對稱加密,是指加密與解密使用同一把鑰匙。在區塊鏈中,對稱加密主要用於節點間的安全傳輸和數據儲存。由於對稱加密通常比非對稱加密更快,所以它適用於需要高速處理的場景,例如在節點間快速交換資訊。然而,對稱加密的主要挑戰在於密鑰管理。因為加密和解密用的是同一把密鑰,所以這把密鑰必須在所有授權的節點之間安全地共享和儲存。如果密鑰遭到泄露,那麼加密的所有數據都會處於風險之中。

因此,由於公有區塊鏈開放和去中心化的特性,對稱加密通常不是主要的加密方式,主要是因為密鑰管理和分發在這種環境中特別複雜。公開區塊鏈更傾向於使用非對稱加密,例如使用數字簽名來確認交易的來源,或使用公鑰加密來保護數據。

Merkle Tree

在區塊鏈中對稱加密的應用之一是Merkle Tree。結合上一段提到的Hash函數,可以用於驗證區塊鏈數據的完整性。即區塊鏈中,每個區塊都包含其前一個區塊的哈希值。如果區塊數據被篡改,則 Merkle Root 將發生變化。因此,可以通過驗證 Merkle Root 來驗證區塊數據的完整性。

非對稱加密在區塊鏈中的應用: RSA & ECC

非對稱加密使用一對公鑰和私鑰來進行加密和解密。在區塊鏈中,這種方法常用於身份驗證和數據保密。每個參與者都有一個公開的公鑰和一個只有自己知道的私鑰。

RSA

RSA 粗略的解釋是使用兩個大質數 p 和 q 來生成公鑰和私鑰。公鑰由 n(p 和 q 的乘積)和 e 組成,而私鑰則由 n 和 d 組成。d 是 e 的模逆,也就是說 de ≡ 1 mod n。

Elliptic Curve Cryptography (ECC)

ECC 算法使用一條橢圓曲線和一個基點 G 來生成公鑰和私鑰。公鑰由 Q(G 的倍點)組成,而私鑰則由 d(Q 的離散對數)組成。

要使用 ECC 加密訊息,可以使用公鑰 Q 對資訊進行加密。要解密加密資訊,可以使用私鑰 d 對加密資訊進行解密。

如果想深入瞭解RSA與ECC,可以參閱:https://ithelp.ithome.com.tw/articles/10250721 及 https://ithelp.ithome.com.tw/articles/10251031 這兩篇鐵人的文章

RSA 和 ECC 的比較

(1) 密鑰大小:RSA 需要較大的密鑰來達到與 ECC 相同的安全級別。
(2) 效率:ECC 在計算和網絡傳輸上通常比 RSA 更高效,因為它使用更小的密鑰。
(3) 成熟度與驗證:RSA 是更加成熟和經過廣泛驗證的算法。不過,ECC 也得到了越來越多的應用和審查,尤其是在移動和嵌入式裝置上。
(4) 在區塊鏈中的應用: RSA:在某些區塊鏈應用中,RSA 用於數字簽名和加密。但由於其計算需求較大,它在區塊鏈中的應用相對較少。ECC:在多數區塊鏈(包括 Bitcoin 和 Ethereum)中,ECC 是生成數字簽名和公鑰/私鑰對的主要算法。它由於效率高和密鑰小而被廣泛使用。

3. 結語

雖然這是一場關於所有人的變革,但並不是所有人都是工程師、密碼學家。但就像不需要每個人都是電學家才可以用電、需要知道流體力學才可以搭飛機,我們是需要具備一些底層邏輯的知識,去理解哪些主張是騙人的永動機、是不折不扣的鬼扯與胡說八道,哪一些又是可能的願景。


上一篇
Day 2 - 一切你聽過web3的願景可能都是假的
下一篇
Day 4 - 去中心化的基石 (下):共識演算法
系列文
Web 3:一場關係所有人的網路變革7
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言