區塊鏈 16 | Blockchain 整合ipfs進行文件驗證 (一)
什麼是IPFS
什麼是IPFS
星際文件系統(InterPlanetary File System,縮寫IPFS)是一個網路傳輸協定,為了建立持久且分散式儲存和共享的檔案,它是一種點對點(P2P)的分佈式文件系統。
什麼叫做分佈式文件系統?分佈式文件系統的文件全部都不在同一台電腦,而是分散在多台電腦上。所以多個分散的小文件系統組合在一起,形成一個完整的文件系統。簡單來說,就是把操作系統分佈在不同的電腦里,由這些電腦來共同管理,而不是只依賴一台電腦。
雖然說它是文件系統,但其實是一種用來儲存資料的技術,更確切的說,IPFS是一種傳輸協定。對於IPFS的資料儲存的理解,它能夠極大的降低資料儲存的成本,提升資料下載速度。需要優化資料儲存的地方幾乎都可以使用IPFS來提升效率。
在這個IPFS協議中,文件在系統中如何儲存、索引和傳輸都定義好了,也就是將上傳好的文件轉換成專門的資料格式進行儲存,同時IPFS會將文件進行雜湊運算,確定其地址的唯一性。所以無論在任何設備或者任意地點,相同的文件都會指向相同的地址。通過一個文件系統將網絡中所有的設備連接起來,讓儲存在IPFS系統上的文件,在世界上任何一個地方都可以快速獲取,且不受防火牆的影響。所以從根本上說,IPFS能改變WEB內容的分發機制,完成了整個去中心化。
IPFS 的運作流程
- John 想上傳一個 PDF 檔案到 IPFS。
- John將他的 PDF 檔案放在他的工作目錄下。
- John使用 IPFS 的命令添加這個檔案,同時會得到了一個以 Qm 開頭的 Hash值。
- John的檔案已經在 IPFS 網絡上並可以被訪問了。
接下來(圖二),John 想將這個檔案分享給他的同事 Mary,他只需要將上述第3步得到的 Hash 值告訴 Mary ,Mary 即可透過這個 Hash 值,從 IPFS 下載這個 PDF 檔案。
以上這個就是簡單的 IPFS 上傳和下載過程。
一般而言,直接上傳到 IPFS 網絡上的檔案,只要知道這個地址或者是這個檔案的hash值的使用者都能夠下載。
這樣不會有安全性問題嗎?
如果使用者要將敏感檔案上傳至 IPFS 時,就必須先對這些檔案進行加密處理。只要透過一些現成的加解密工具,就能夠很好地解決檔案赤裸地曝露的問題,同時又能利用到 IPFS的特性。
可以使用非對稱加密技術對檔案預先進行加密,然後才放到 IPFS 上。使用檔案接收方的公鑰加密檔案,然後接收方從 IPFS 網絡上下載了這個檔案,再用自己的私鑰解密。這樣就算檔案被其他人下載下來,沒有接收方的私鑰,也無法打開。
下面說明加密和解密的過程:
- John 想上傳一個 PDF 檔案到 IPFS,但只想讓 Mary 訪問。
- John將他的 PDF 檔案放在他的工作目錄下並使用 Mary 的公鑰進行加密。
- John將加密的PDF 檔案上傳至 IPFS,會得到了一個以 Qm 開頭的 Hash值。
- John的檔案已經在 IPFS 網絡上並且可以被訪問了。
- Mary 下載這個檔案,透過相應的私鑰解密,就可以查看這個檔案。
- 其他知道這個hash值的人下載後,因為沒有私鑰,所以無法對檔案解密,也就無法正常訪問了。