區塊鏈、分散式帳本和可信賴第三方 -
為何 IoT 感測器製造者應該注意?
還有,區塊鏈到底是什麼?
區塊鏈是一種「開放的分散式帳本,以可審計的永久方式有效地記錄雙方之間的交易。」[1] 區塊鏈技術於十年前2009年1月3日開發出來。在第一個原始區塊之後,一個區塊(資料紀錄)由所謂的礦工 [2] 使用加密雜湊與下一個區塊綁定。如果不更新後續區塊,則不能在鏈的所有副本中修改、交換或刪除前面的區塊。系統中的每個節點都有一個鏈的副本。這套機制確保每個節點都讓系統變得更加可靠,因為寫入區塊中的資料無法再更改(或偽造)。今日,區塊鏈(紀錄鏈)及其最著名的應用「比特幣」已成為全球現象。寫入這些區塊中的資料是雙方之間的「金融」交易,最終是電子帳本。正因如此,區塊鏈有時稱為分散式帳本。
區塊鏈案例:比特幣
由於每個節點都獨立於其他節點運作,而且全都擁有該區塊鏈 (或帳本) 的複製版本;沒有任何個人負責維護一個集中認證版本,所有人手上的都是真正的區塊鏈。因此無需信賴第三方 (TTP) 的存在。比特幣又稱為加密貨幣,是因為其架構確保沒有人可以自行「印鈔」或產生比特幣,導致幣價下跌。一般貨幣是由國家的中央銀行發行,這可能成為故障點。去中心化貨幣比特幣則獨立於任何「國家壓力」之外。比特幣無需信賴第三方,但也無法以服務阻斷 (Denial of Service, DoS) 技術加以攻擊;維持實際運作也不需要任何費用。
Visa 在信用交易方面具有相同的功能。但因其並未採用分散式技術,因此每年都需投入巨額資金來保護其集中化主從式架構,以免於 DoS 攻擊。全球數百萬個客戶端 (刷卡終端機) 都連上其主伺服器。Visa 確保其系統與資安的效能表現;他們和信賴第三方都收取可觀費用,以做為其投入的補償。
所有資料的去向是?
未來的 IoT 世界中,顯然會有幾十億個感測器;這麼多資料都去哪了?即使有人能夠建置出高效率、可對抗 DoS 攻擊的集中化主從式網路,我們想讓單一公司來控制全球所有的感測器資料嗎?感測器資料可以直接存在帳本中,個別客戶可以與特定感測器連線,自行取得其資料,不需要信賴第三方當做中介者,而且安全又便宜。
智慧合約的觀念和挑戰
智慧合約是以電腦程式語言寫成,在區塊鏈的各個節點上執行。預先定義的輸入,會帶來預先定義的輸出 (理想上就和法律文件一樣)。這些智慧合約的「決定」值得信賴,是因為其執行於所有節點上,且其結果以透明、可驗證、具永久性的方式記錄在區塊鏈上。
智慧合約在虛擬機器中執行,而虛擬機器和其運作其上的硬體無關,因為合約必須能在所有可能的節點上運作,因此無法存取任何硬體或感測器資訊。另一個主要的技術困難在於:智慧合約係在所有節點上運作,但如果只有某個感測器提供某項資訊,當然不能讓多達數百萬個節點,在同一時間向同一個感測器索取同一份資訊。
比特幣的競爭者以太坊是首先實作智慧合約的區塊鏈,他們已開始研究一種解決方案:預測機 (oracles)。
可能的解決方案:預測機 (oracles)
預測機是一種網路中的特殊節點,用以對智慧合約提供資訊。硬體感測器提供其資訊給預測機,再傳播到整條區塊鏈。預測機的運作有如資料代理。
信賴問題
然而,這裡再次出現信賴的問題。測試機所在的位置,可以在感測機的資料送達區塊鏈之前加以變更。過去在區塊鏈中,無需第三方信賴者,交易的資料也值得信賴,但預測機提供者必須可信賴。預測機提供者必須由集中化認證系統來認證完成。然而這就表示仍然需要第三方信賴者 (只是形式不同而已),而且還是集中化的 (就像可信賴的網頁需要 Verisign 一樣)。對認證提供者或預測機發動簡單的服務阻斷攻擊,就足以讓整個 IoT 系統停擺。
其中一種方式是把資料提供給多個不同的預測機,並運用冗餘。然而對多數組織來說,要設定足夠的預測機,成本太過昂貴。可通用代管的開源預測機伺服器,或許能作為資料伺服解決方案之用,但無法解決信賴問題。
憑證只能確保預測機節點的「可信度」。但提供資訊的感測器可能遭到攻擊,而預測機無法得知此事;更糟的是,預測機也不在乎。預測機生產者只負責對區塊鏈提供資訊服務,無法實際查核所有感測器提供者。
當然感測器提供者也可以自行通過認證,並表示其硬體/韌體無法駭入且值得信賴。但這又會帶來信賴第三方問題、造成顧客鎖定,提高你的系統成本。
當需要這類信賴第三方介入時,使用去中心化信賴區塊鏈,就可能帶來問題。因為一個「標準」的資料庫集中網路能帶來相同的功能和效率,以及同樣的缺點。
理想的解決方案:值得信賴的相機感光元件
理想的解決方案可能是感測器生成的資料,可以由終端用戶來驗證 (透過智慧合約),來查看從感測器送出後是否遭到竄改。
舉相機感光元件為例,第一步是將影像進行雜湊運算,並儲存該雜湊值。畫面送到終端用戶時,用戶可以將收到的雜湊值來和自己運算出的雜湊值進行比對。如果兩者不相符,就表示影像已經遭到竄改。額外資訊也可以和影像資料一同加進雜湊中,例如韌體。這樣可讓該影像專屬於某個特定相機和韌體。其他系統中的本機感測器,也可將其資料送到相機模組中以進行雜湊運算,之後再送到區塊鏈。該影像可以由終端用戶用以檢查其感光元件資料是否遭到竄改。
這只是信賴相機感光元件的一個範例 [3]。對其他感測器來說還有多種可能性。
總結
當代點對點區塊鏈網路,運作時無需集中化信賴第三方介入。這可帶來更好的擴展性,並且免除對付費信賴第三方的需求。不幸的是,感測器資料要傳送到鏈上智慧合約,需經過資料代理伺服器。為避免這些預測機伺服器為資料的壟斷,導入獨立演算法,讓相機感光元件產生的資料可以自我驗證。希望有更多感測器生產者採用這種方式,提供完全去中心化、免信賴第三方的網路。
參閱
[1] M. Iansiti, K.R.Lakhani "The Truth about Blockchain", Harvard Business Review, January 2017.
[2] D. Drescher, “Blockchain Basics”, mitp, Chapter 14, 2017.
[3] Patent Pending, B16000DE / FK, em 18-009.