前言
在《只知道IOT你就out了,BOT瞭解一下》中,我們詳細介紹了物聯網區塊鏈(BoT)在多方參與的物聯網生態中所發揮的作用與價值,其不僅可以在上游廠商與下游企業間促進多方價值協作,讓多個參與方間的合作變得公平和透明,同時還可以打通“資料第一公里”,從源頭採集資料並將其上鍊,能夠有效規避因人為介入而帶來的不可信問題。
但是,從終端上鍊的資料真的是可信的嗎?它是否還存在其他潛在的安全風險呢?這些風險又該如何化解呢?本文將帶大家走進BoT的世界,詳細剖析BoT的工作原理。
“我是誰”——裝置的身份
眾所周知,區塊鏈之所以具有可追溯和可確權的特性,是因為其每一筆交易均由對應的私鑰進行簽名,且其傳送的區塊鏈地址與私鑰間具備一定的聯絡,當一筆交易被一個私鑰所簽名,此時即可認為該筆交易所傳送的內容已經被該私鑰的持有者所認可。因此,在BoT中,若需要保證物聯網終端裝置上報資料的安全可信,則需要保證一個裝置對應一個區塊鏈地址和金鑰,且應當保證金鑰的唯一性和安全性。
然而,若將金鑰直接固化在程式程式碼中,則容易被攻擊者從flash中反彙編得到;若將金鑰以密文的方式直接固化在外部flash中,雖然可以規避前一種情況的發生,但金鑰燒錄的過程卻存在一定的安全風險,且不利於裝置的流水線生產。因此,我們提供兩種整合方式來改造物聯網裝置,使物聯網裝置具備區塊鏈簽名能力,對應的我們提供兩種模式保障裝置金鑰分發過程的安全,使物聯網裝置在兼顧裝置生產效率的同時,其唯一身份不可被盜用和篡改。
硬體整合:區塊鏈安全晶片 + 啟用金鑰模式
區塊鏈安全晶片是一款應用於BoT場景,可以為安防裝置、智慧表計、資料採集裝置等各種嵌入式終端提供區塊鏈賬戶託管、訊息簽名、資料加解密、安全儲存等基礎服務的硬體晶片。其內嵌可信儲存環境和可信執行環境,可保證儲存金鑰無法被竊取,簽名過程無法被篡改,安全性較高。由於安全晶片的內建區塊鏈私鑰在本地生成,且BoT具有鏈級原生裝置管理功能,因此,在裝置初次使用時,需要進行裝置啟用,啟用成功後,裝置即可在其許可權範圍使用相關功能,具體啟用流程如下。
- 1)授權生產工廠在晶片出廠時,會匯出由該授權工廠CA簽發的公鑰證書列表,該列表及對應的批次統一金鑰由賬戶管理員在BoT鏈進行預登記。同時,區塊鏈安全晶片將被髮往裝置廠商,安裝至裝置內;
- 2)裝置首次開機進行啟用時,首先讀取本機的硬體唯一號、批次號、公鑰以及批次統一金鑰,其次將公鑰、硬體唯一號、批次號用批次統一金鑰加密,再次將批次號、加密資訊組成註冊交易送入可信執行環境中進行簽名;
- 3)將帶簽名的註冊交易傳送至BoT鏈;
- 4)BoT鏈首先根據批次號獲得批次金鑰,然後將加密資訊進行解密,驗證批次號是相同、同時用公鑰對簽名信息進行驗籤,若合法,則根據硬體唯一號生成區塊鏈賬戶,對該賬戶開啟生命週期管理,賦予該賬戶相關許可權,啟用成功。若不合法,則跳過上述步驟,啟用失敗。
軟體整合:區塊鏈SDK + 下發金鑰模式
軟體整合方式是一種透過在裝置內整合與BoT相容的區塊鏈軟體開發工具包(Software Development Kit, SDK),使裝置具有與區塊鏈互動能力的裝置改造方式,該方式具有易於操作、整合成本低、開發速度快等特點。該方式與硬體整合方式相比,雖然安全性有所降低,但其配合BoT安全策略,可滿足對安全等級要求不高的物聯網裝置和場景使用。由於不同裝置需要具有不同的區塊鏈金鑰,考慮到裝置生產、金鑰安全等因素,裝置金鑰採用下發的方式進行,故裝置在初次使用時,需要進行裝置啟用,獲取裝置金鑰,啟用成功後,裝置即可在其許可權範圍使用相關功能,具體啟用流程如下。
- 1)授權裝置廠商在生產裝置時,會匯出由該廠商簽名的授權裝置硬體唯一號列表,並在裝置內內建批次統一金鑰。該硬體唯一號列表及對應的批次統一金鑰由賬戶管理員進行預登記;
- 2)裝置首次開機進行啟用時,首先讀取本機的硬體唯一號、批次號以及批次統一金鑰,其次將硬體唯一號、批次號用批次統一金鑰加密,再次將批次號、加密資訊組成註冊交易進行交易簽名;
- 3)將帶簽名的註冊交易傳送至BoT鏈;
- 4)BoT鏈首先根據批次號獲得批次金鑰,然後將加密資訊進行解密,驗證批次號和硬體唯一號是否處於啟用列表內,若驗證透過,則生成公私鑰對,並根據硬體唯一號生成區塊鏈賬戶,對該賬戶開啟生命週期管理,賦予該賬戶相關許可權,同時將公私鑰對透過加密通道返回至裝置進行安全儲存,啟用成功。若驗證失敗,則跳過上述步驟,啟用失敗。
“如何連”——端鏈的互動
連,指的是終端裝置與區塊鏈的互動。由於區塊鏈節點部署在公網或內網環境中,終端裝置必須透過傳送網路請求,才能實現將本地資料上報至區塊鏈側。此外,由於在物聯網場景中,需要做到對終端裝置可管可配可控,因此,在不引入第三方管理平臺的前提下,從區塊鏈側下發命令至裝置,實現對裝置的管理也是基本需求。
而正是這一來一回的通訊過程,卻危機四伏。目前,針對網路通訊過程的攻擊方式有多種,例如,透過會話劫持手段,可以攔截終端裝置與區塊鏈節點間正常的網路通訊資料,篡改裝置上報資料資訊以及下行控制命令,並可透過使用其他有許可權的私鑰進行簽名繞過簽名驗證這一步驟,而這一過程,通訊的雙方卻毫不知情;透過流量監聽手段,可以非法嗅探網路流量報文,繞過聯盟鏈的網路准入機制,實時獲得真實的資料資訊,具有較大的安全隱患。因此,針對通訊過程中的安全隱患,同時結合物聯網裝置流量有限、需要具有上下行通訊通道等特點,我們提供了多種安全通訊協議,保障通訊鏈路的安全與可信。
https協議
https協議是http協議的安全版,它在http協議基礎上實施TLS/SSL加密通道規範,一方面可以實現對資料進行加密,並建立一個資訊保安通道,來保證傳輸過程中的資料安全;同時另一方面也可實現對網站伺服器進行身份認證。https協議適合應用於裝置向區塊鏈單向上傳資料的場景,端側與鏈側的具體互動流程如下。
- 1)裝置向區塊鏈節點發起https請求,其中包括支援的SSL版本、加密元件等資訊;
- 2)區塊鏈節點收到請求後,將用來進行非對稱加密金鑰對的公鑰證書、連線引數等資訊傳送給裝置;
- 3)裝置收到證書之後,會對合法性進行檢查,若驗證透過,則在本地生成一個隨機值,該隨機值作為客戶端金鑰,用於進行對稱加密。否則,則終止此次https傳輸;
- 4)裝置使用區塊鏈節點的公鑰對客戶端金鑰進行加密,併發送至區塊鏈節點,由於該客戶端金鑰在傳輸的過程中是加密的,因此具備安全性;
- 5)區塊鏈節點接收後,使用私鑰進行解密,獲得客戶端金鑰。至此,裝置和區塊鏈節點間都持有了一個僅有雙方可見的對稱金鑰,在未來傳輸的過程中,將使用該對稱金鑰對傳輸資料進行加密,保證傳輸的安全。
mqtt協議
mqtt協議(訊息佇列遙測傳輸協議)是一款為了滿足低電量消耗和低網路頻寬需求而設計網路協議,其基於TCP協議進行設計,採用C/S架構,支援訂閱和釋出兩種模式,支援非同步收發訊息和三種QoS,可以為大量的低功率、工作網路環境不可靠的物聯網裝置提供雙向通訊保障。BoT採用外掛元件的形式,透過mqtt協議將訊息的傳送方和接收方解耦,支援物聯網裝置進行資料上報和指令下發,適合應用於裝置與區塊鏈雙向互動的場景。同時,透過啟用mqtt協議的多重安全設計特性,保障資料和網路的安全。
- 1)支援TLS加密。裝置、區塊鏈節點與mqtt broker建立連線時,可在握手階段建立安全連線,此時,訂閱和釋出的訊息均為密文,保證資料無法被竊聽和篡改;
- 2)支援身份認證。mqtt協議可在傳輸層使用TLS對裝置進行認證,即啟用該功能時,在建立TLS連線階段,broker額外需要對裝置持有的證書進行驗證,僅當雙向認證通過後,才可建立連線。此外,在應用層可使用客戶標識、使用者名稱密碼進行身份認證,以此保證裝置的真實性;
- 3)支援許可權控制。mqtt協議支援透過訪問控制列表(Access Control List, ACL)設定主題的訂閱和釋出許可權。透過ACL功能,可以對各裝置允許讀寫的主題進行授權,將各裝置的通訊通道進行邏輯隔離,保護資料隱私和系統安全。
“怎麼管”——裝置的管理
在BoT場景中,裝置因受到製造成本、研發水平等因素的限制,不同裝置的安全防護等級各不相同,安全防護等級越低,金鑰洩露的可能性越大。而隨著裝置因損壞、被盜等原因無法繼續使用時,在眾多裝置中出現個別金鑰洩露的機率也顯著增高。此時,若沒有及時對該裝置金鑰進行許可權控制和登出,則存在該裝置金鑰因被非法使用而造成損失的風險。此外,對於部分滿足高安全標準的具備高安全等級的裝置而言,對金鑰進行定期更新保證裝置安全是必要的需求。因此,裝置金鑰管理和許可權管理是保障系統安全、保證資料可信必不可少的一環。
針對上述安全風險和需求,我們提供兩種鏈級原生管理技術實現對裝置的許可權和賬戶管理,一方面可以實現對不同安全等級、不同業務需求的裝置賦予不同的鏈上訪問許可權,另一方面可以對裝置賬戶金鑰進行註冊、更新、登出,保證賬戶安全與可靠。
鏈級角色管理
鏈級角色管理指的是對裝置賬戶賦予相應的角色,不同角色具有不同的介面許可權,透過對角色的限制,可以對裝置從介面層面進行管理,將其允許功能限制到最小,防止裝置因金鑰被非法竊取而獲得區塊鏈全量功能許可權的情況發生,提高資料安全性和系統可靠性。角色管理具備建立角色、刪除角色、授予角色、回收角色等基礎功能,其提案由賬戶管理員發起,其他賬戶管理員進行投票,當提案投票通過後即可生效。
賬戶生命週期管理
賬戶生命週期管理指的是對裝置賬戶進行從註冊起到登出止的全過程管理,支援進行裝置賬戶註冊、裝置賬戶登出、裝置賬戶金鑰更新等基礎操作,可有效的對鏈上賬戶進行細粒度分配和管理,降低因過期金鑰洩露、非法賬戶攻擊等不安全因素髮生的可能性,同時可服務於金鑰定期更新等高安全等級需求。以軟體整合模式下裝置賬戶請求金鑰更新為例,其具體流程如下。
- 1)裝置首先讀取本機硬體唯一號和原公鑰,將其組成一筆賬戶更新請求交易,並使用原私鑰進行交易簽名;
- 2)將帶簽名的交易傳送至BoT鏈;
- 3)BoT鏈首先對交易真實性和合法性進行驗證,若驗證透過,則生成新的公私鑰對,並透過賬戶生命週期管理流程根據硬體唯一號更新區塊鏈賬戶,同時將新的公私鑰對透過加密通道返回至裝置進行安全儲存,更新成功。若驗證失敗,則跳過上述步驟,更新失敗。
綜上,金鑰分發流程和裝置管理流程使裝置金鑰成為可信鏈路的可信根,從端側保證了金鑰的安全可信;安全通訊協議使通訊鏈路無法被篡改和偵聽,從鏈路側保證了通訊過程的安全可信;區塊鏈使資料不可被篡改,從雲側提供了資料儲存和處理的安全可信。至此,從端到雲的可信資料鏈路就此搭建完成,從源頭保障裝置上報資料的安全可信。
目前,BoT已經全面適配上述金鑰分發和裝置管理流程,支援上述通訊協議,開發者僅需依據流程和協議進行接入,即可打通資料上鍊“第一公里”,實現資訊從終端採集、資料從源頭上鍊。此外,為了降低開發者的開發難度,我們聯合通訊模組硬體廠商,推出以下幾款適配不同網路環境的區塊鏈專用通訊模組,這些模組將上述流程適配至通訊模組內部,對於開發者而言,只需要適配模組電氣介面,並依據規定的協議呼叫相關指令使用模組,即可實現資料上鍊。
- 區塊鏈專用WIFI模組。該模組利用無線區域網絡,幫助低功耗裝置、移動消費電子裝置、可穿戴裝置等打通物聯網裝置與區塊鏈間的“第一公里”。
- 區塊鏈專用NBIoT模組。該模組利用窄帶物聯網技術,使低功耗廣覆蓋物聯網裝置可以便捷的接入區塊鏈,實現資料可信上鍊。
- 區塊鏈專用4G模組。該模組透過4G CAT1/CAT4網路,使物聯網裝置具備連線區塊鏈的工作能力,適用於智慧表計、智慧手錶、智慧門鎖、DTU等終端產品。
- 區塊鏈專用5G模組。該模組透過5G網路,使物聯網裝置具備連線區塊鏈的工作能力,適用於安防攝像頭、高畫質會議終端等多行業整機產品。
[1] https://en.wikipedia.org/wiki/HTTPS.
[2] https://en.wikipedia.org/wiki/MQTT.
[3] 《區塊鏈技術指南》
馬棟捷
趣鏈科技基礎平臺 IOT 研究小組