創宇區塊鏈:傳統安全與IPFS 間的安全性研究

建立在區塊鏈技術之上的Web3 如何通過IPFS 來保證用戶的隱私安全呢?前言

通信技術讓世界具備了更多的連接,我們每個人都在這樣的連接中被影響和受益著。同時這種連接也產生了更多對於監視需求的便利。許多人的隱私或自由可能會在不經意間受到影響,而這也催生了對於隱私保護的需求。通常,由於中心化服務器的存在,我們很難實現完整的隱私保護,而分佈式的存儲等技術,則讓其成為了可能。

無數的開發者加入了Web3 的開發實現中,陸續構建一個又一個偉大的Dapp,他們在普通用戶與區塊鏈底層技術中扮演著重要的中間人角色。與此同時,對於普通人接觸的最多的web-ui 與IPFS, 它們之間的安全也值得被探索。

知道創宇區塊鏈安全實驗室將對此進行詳細解讀。

Web-interface 與IPFS

1. Web-interface 是什麼

在Web3.0 中,分佈式的公鏈技術設施提供了各種接口供給使用者調用,但這些接口無法直接被普通用戶直接去使用。對用戶來說,Web-interface 是用戶和運行在Web 服務器上的軟件之間的橋樑。用戶使用瀏覽器連接Web-interfacce 後進行展示與交互,同時通過錢包進行身份識別。對底層區塊鏈基礎設施來說,Web-interface 是公鏈/智能合約的一層封裝,將其包裝成為友好的頁面可直接可用的功能展示給用戶。其結構功能類似如下的圖片:

2. IPFS 是什麼

星際文件系統(IPFS)是分佈式存儲和共享文件的網絡傳輸協議,它將現有的成功系統分佈式哈希表、版本控制系統Git、BitTorrent、自認證文件系統與區塊鏈相結合。正是這些系統的綜合優勢,給IPFS 帶來了以下顯著特性:

1.永久的、去中心化保存和共享文件

2.點對點超媒體:P2P 保存各種各樣類型的數據

3.版本化:可追溯文件修改歷史

4.內容可尋址:通過文件內容生成獨立哈希值來標識文件,而不是通過文件保存位置來標識

當用戶將文件添加到IPFS 時,該文件會被拆分為更小的塊,經過加密哈希處理並賦予內容標識符CID 作為唯一指紋;當其他節點查找該文件時,節點會詢問對等節點誰存儲了該文件CID 引用的內容,當查看、下載這份文件時,他們將緩存一份副本——同時成為該內容的另一個提供者,直到他們的緩存被清除。

IPFS使用實例

網站https://ipfs.io提供一個帶UI 界面的客戶端,安裝運行後會啟動IPFS 的服務,顯示當前的節點ID、網關和API 地址:

我們導入想上傳的文件,上傳文件成功後會生成該文件的CID 信息,通過QmHash(CID)我們也能查找到指定的文件:

由於IPFS 是分佈式存儲和共享文件的網絡傳輸協議,因此上傳成功的文件被拷貝到其他節點上後,即使我們本地節點主動刪除,依然可以在IPFS 網絡查詢到該文件:

IPFS中的傳統安全問題

根據使用實例,我們知道IPFS 允許上傳任意類型的文件,由於允許Web 訪問下載文件的特性,導致攻擊者可以像傳統安全一樣使用HTML 或SVG 文件實現釣魚:

以https://IPFS.io網關為例,上傳一個Metamask 釣魚網站,由於存儲在受信域名里,受害者訪問該文件很可能攻擊成功:

但由於IPFS 只能通過CID 查詢文件,使得釣魚攻擊的利用面很窄,沒辦法定向的實施攻擊。既然CID 是發起定向攻擊的關鍵,那我們回頭研究下CID。

IPLD 是構建IPFS 的數據層,它定義了默克爾鏈接(Merkle-Links)、默克爾有向無環圖(Merkle-DAG) 和默克爾路徑(Merkle-Paths)三種數據類型,通過IPLD 發送到IPFS 的數據保存在鏈上,使用者會收到一個CID 來訪問該數據。

CID 是一個由Version、Codec和Multihash 三部分組成的字符串,目前分成V0和V1兩個版本。 V0 版採用Base58 編碼生成CID,V1 版包含表明內容的編號种類Codec、哈希算法MhType 和哈希長度MhLength 共同構成:

`CID::=`

我們以go-cid 生成一組CID 測試:

可以看到在生成CID 的過程中,無法實現結果的預測和更換,我們再往上分析上傳文件的部分。將文件上傳到IPFS,通過塊的方式保存到本地blockstore 的過程位於/go-ipfs-master/core/commands/add.go:

把上傳文件信息保存到AddEvent 對像中,再通過/go-ipfs-master/core/coreunix/add.go 裡的addALLAndPin 和fileAdder.AddFile 方法遍歷文件路徑,讀取文件內容,將數據送入塊中:

最後再利用addFile 函數完成文件的上傳:

分析代碼發現,IPFS 在打包文件上傳返回CID 的整個過程,都沒實現劫持的可能,而成功上傳的文件無法實現修改其內容,同樣無法實現篡改:

後記

Web3 建立在區塊鏈技術之上,無需中央機構即可維護。其允許用戶在互聯網上保護他們的數據,並允許網絡平台的去中心化。而IPFS 技術對他來說就如同一台電腦的硬盤,web-ui 就如同主機的顯示器一樣不可或缺,其間亦存在著複雜而多樣的安全風險可能給予不法分子可乘之機,理解其風險並避免發生問題是每一位Web3 從業人員的責任與義務。

展開全文打開碳鏈價值APP 查看更多精彩資訊

Total
0
Shares
Related Posts