王 嘯,許珮瑩
(北京工業大學,北京 100124)
在當前倡導“萬物互聯”的時代,物聯網技術越來越多地應用到人們的日常生活中,物聯網安全也逐漸被大家重視起來。攝像頭有應用范圍廣,數據保密性、完整性要求高等特點,是最值得關注的物聯網應用之一。因此,本文以普通攝像頭為例,基于可信計算技術,設計實現了一個基于可信密碼模塊(Trusted Cryptography Module,TCM)的可信攝像頭。
當下,隨著相應硬件成本的逐步降低,視頻監控系統得到越來越多的應用:交通狀況檢測、室內安全監控、流水線狀況監控、智能家庭攝像頭等。而在整個視頻監控市場中,智能家庭攝像頭的增長速率最為迅速。根據IHS Markit 2017年做出的預測,2017~2022年全球視頻監控市場復合增長率將達到7.5%,2018年網絡攝像機出貨量的增長速度預計將超過30%[1]。可見,基于互聯網的智能家庭攝像頭是視頻監控行業發展的一大趨勢。
但是同時,基于網絡的視頻監控系統也是不法分子盜取信息的主要途徑之一。目前的互聯網攝像頭存在諸多的安全隱患,黑客很容易通過未加密或密鑰較簡單的連接入侵家庭攝像頭,查看家中的情況,對隱私構成了極大威脅。
基于上述現實情況,本文考慮利用可信計算技術保護家用攝像頭,在硬件層面最小化監控視頻泄露的風險。目前可信計算在物聯網方面的實際應用幾乎為空白,國內外有許多關于視頻監控系統隱私及信息保護方面的研究論文,但基本都是針對圖像處理、信號加密及人臉識別等方式進行公共區域視頻監控的加密處理,關于智能家居中所使用的監控攝像頭的數據盜取問題,相關研究少之又少。調查與研究表明,應用可信計算技術,勢必會有效增強智能攝像頭的安全性,并可以由此推至大型監控系統的安全保護中,有著重要的現實意義。
目前市面流行的智能攝像頭多由傳統的工業安防攝像頭演變而來,但是脫離了工業安防攝像頭原有的封閉網絡環境,應用在家庭生活中,使得智能攝像頭面臨更多的來自網絡的安全威脅[2]。智能攝像頭主要存在如下的安全隱患:
(1)未對啟動程序進行保護,不能保證在設備啟動和初始化時是安全狀態,源頭可信無法保障。
(2)在開放的網絡環境中,數據傳輸安全很難得到保障,雖然目前大多數智能攝像頭有一定的數據加密方式,但是大多使用的是弱口令加密或HTTPS協議對請求控制內容進行傳輸加密,加密防線極易被攻破,造成用戶隱私泄露。
(3)大多數智能攝像頭不但安全防御能力薄弱,甚至無法在被攻擊時及時發現并采取有效措施。因此無法及時阻止損失,造成了大量后續隱患。
本文攝像頭的總體設計思路是:用可信支撐安全,用安全支撐應用[3],基于TCM可信密碼機制自底向上來保障系統各節點運行的安全。針對上述主要安全隱患,提出的解決思路是:
(1)在系統啟動前通過底層可信根,逐層度量形成可信鏈,將信任層層擴展到整個系統,保障系統初始化的安全狀態[4]。
(2)通過可信密碼機制和可信鏈,采用安全的密鑰交換和管理策略,提供策略的可信管理和可信協同,對傳輸數據進行流加密,確保數據安全。
(3)采用節點的可信度量,使系統能夠在整個使用周期進行可信監控,及時發現攻擊行為并響應、立即采取措施。
基于上述的框架設計思路,本文提出了基于TCM的可信攝像頭的概念,這一概念主要是利用TCM可信密碼機制,在CUBE架構的基礎上,依托Linux環境,實現安全可信的攝像頭嵌入式系統。
通過在攝像頭系統中部署TCM模塊和可信安全機制,使攝像頭系統具備可信防護功能,提高攝像頭系統的安全性。在具體設計實現過程中,對物聯網原有的分布式監控系統進行了簡化,在滿足攝像頭系統基本應用要求的前提下,采用點對點,即一個客戶端對應一個攝像頭的方式進行設計實現[5]。應用場景概念設計如圖1所示。

圖1 應用場景概念圖
在該場景下,攝像頭實現感知外部環境(即獲取視頻)與處理視頻文件的功能;客戶端實現獲取視頻文件和觀看視頻的功能。攝像頭和客戶端都部署了TCM芯片[6](本設計中應用TCM模擬器實現)。
在攝像頭系統初始化階段,首先對未啟動的視頻處理程序OpenCV[7]進行可信度量,當度量結果驗證成功,即證明程序未遭到篡改后,啟動OpenCV程序,捕獲外部視頻。攝像頭獲取到的視頻將生成一個視頻幀數據文件,存儲在本地。當客戶端的用戶完成了用戶身份注冊,并成功登錄后,客戶端生成TCM密鑰對,并將公鑰發送給攝像頭,在攝像頭端的TCM中進行存儲管理。當客戶端向攝像頭發出獲取視頻的請求時,攝像頭端會對客戶端用戶進行身份認證,驗證通過后,用客戶端發送來的公鑰對文件進行加密,之后再發送給對應的客戶端。客戶端收到加密的文件后,用自己的私鑰解密,就可以觀看視頻或對視頻進行其他操作。
針對以上應用場景,分析其中的安全功能需求后,得到如下所述的應用安全需求:
(1)確保攝像頭安全。由于感知端節點資源有限,但其環境和執行程序相對固定,因此適宜采取類似白名單機制這種不太復雜的機制進行保護。
(2)確保攝像頭的視頻處理程序在初始化時必須是安全、未被篡改的,否則應在啟動時就采取安全防護措施,如對用戶提出警告信息、終止運行等。
(3)成功登錄的已注冊用戶不一定是合法的用戶,不排除身份盜用的可能,因此在用戶向攝像頭發出請求后,攝像頭還應該再次對用戶身份進行認證,確認用戶身份的合法性。
(4)視頻在攝像頭到客戶端的傳輸過程是不安全的,會暴露在一個公開的環境中,有被竊聽或篡改的威脅,需要使用密碼機制對其進行加密保護,這樣即使攻擊者截獲了加密文件,也無法獲取其中的信息。
(5)由于全系統除了涉及軟件層面的加密,還涉及硬件層面的加密,因此對于加密算法的加密速度、復雜度都有更高的要求。所以本設計中采用了性能優秀的國密算法作為加密算法[8]。
在總體架構設計上,本設計采取橫縱分層的方式,其解讀如下:橫向基于真實流程來劃分,包括攝像頭、傳輸協議以及客戶端,映射了感知端、傳輸端以及應用端,描述了物聯網的通用過程;縱向分為應用層、平臺可信層與TCM層,其中TCM層是可信的根源,是保障攝像頭系統可信的核心[9]。總體設計框架如圖2所示。

圖2 總體框架圖
2.3.1 縱向框架設計
縱向框架基于三層,分別為TCM層、平臺可信層以及應用層。
TCM層是可信的根源,在攝像頭端和客戶端分別部署TCM芯片(本設計使用TCM模擬器模擬),保證其從根源達到可信,并在TCM內部對密鑰進行存儲和管理,實現密鑰交換和雙向身份認證功能,保證點對點傳輸過程中的安全、可信。
平臺可信層使用了Linux系統,并在其中部署了平臺完整性認證機制,攝像頭啟動時對于開啟攝像頭的軟件OpenCV及各種策略進行度量,并將度量結果與存儲在本地的基準值庫中的度量值進行比較,判斷該程序是否遭到篡改以及可信鏈是否遭到破壞。
應用層的主要功能是將攝像頭采集到的周圍環境的影像進行壓縮、加密,并根據客戶的需求將視頻文件傳輸給客戶端。客戶端接收視頻后傳給平臺可信層,根據TCM中存儲的密鑰進行解密解壓,之后傳回客戶端,用戶可以對其觀看或進行其他操作。
2.3.2 橫向框架設計
橫向框架基于三層,分別為攝像頭、傳輸協議以及客戶端。
攝像頭感知外界環境,采集影像并存儲。因為感知端節點資源有限,所以不適宜采取復雜的保護機制;但感知端節點環境和執行程序相對固定,因此適宜采取白名單機制進行保護。
傳輸協議實現了攝像頭與客戶端之間的交互,基于傳輸協議,實現視頻文件的傳輸、平臺完整性認證、雙向身份認證和密鑰交換等功能。
客戶端是最后觀看視頻或對視頻進行操作的區域。監控系統都應具有一個或多個可以觀看視頻并且操作視頻(查、刪、存等)的客戶端。客戶端可以是應用程序、網頁或手機應用程序等,本設計采用了易于實現的網頁界面來模擬客戶端。
在初始化階段,攝像頭系統捕獲即將啟動的視頻處理程序,對其進行靜態的可信度量,并將度量值與視頻處理程序的基準值進行比較。若度量值與基準值一致,則程序將正常啟動運行;否則,系統發出警告信息,提示用戶該程序存在風險。可信度量機制驗證了應用程序初始化時的安全性,能夠及時攔截被篡改的程序,實現系統的主動免疫功能。
客戶端在向攝像頭端發送獲取視頻數據的請求前需要先在服務器端進行注冊并完成登錄。
客戶端在完成新用戶注冊的同時,會通過可信第三方為該合法用戶生成唯一的用戶身份密鑰(Platform Identity Key,PIK)以及PIK證書,供用戶進行身份認證使用。
客戶端在TCM中生成TCM密鑰對,并將自己的公鑰發送至攝像頭端進行存儲和管理。
在客戶端的用戶完成登錄后,客戶端將該用戶的PIK公鑰及證書發送至攝像頭端,攝像頭端通過驗證PIK及證書實現對用戶的身份認證,確保客戶端用戶身份的合法性。用戶身份認證完成后,攝像頭端使用發出請求的客戶端的TCM公鑰對視頻處理程序生成的視頻文件采用SM4算法進行加密,再將加密后的視頻文件發送給客戶端。客戶端用TCM中存儲的私鑰對視頻數據進行解密,即可觀看視頻。
2.4.1 可信度量
本設計使用OpenCV對視頻文件進行捕獲,為保證其安全可信,使用可信度量機制。
在可信的環境下對OpenCV的可執行程序及各種策略、文件進行度量,借助TCM中的SM3算法計算此可執行程序和各種策略、文件的摘要值,并作為基準值將其儲存在本地,形成白名單。計算此白名單的摘要值,并將其寫入平臺配置寄存器(Platform Configuration Register,PCR)中,防止白名單被篡改而導致的信息泄露。將此白名單分別發送給邊設備和客戶端,作為衡量該環境是否可信的標準。
在使用過程中(此環境一般為不可信環境),每次啟動OpenCV時,使用SM3對本地的白名單計算摘要值,并與PCR中的值進行比較,判斷其是否一致。若不一致,則證明白名單被篡改,提示用戶繼續運行有信息泄露的風險;若一致,則對OpenCV的可執行程序和各種策略、文件進行度量,將摘要值與白名單中值進行比較,判斷其是否相同,若相同,則可以繼續后序操作,若不相同,則提示用戶程序被篡改,建議終止運行。可信度量原理如圖3所示。

圖3 度量過程原理圖
2.4.2 用戶身份認證
在用戶登錄過程中,本設計采用可信認證機制,借助于PIK和配套的PIK證書,向服務器證明用戶身份的合法性。在生成PIK證書的過程中,需要可信第三方(Certificate Authority,CA)的介入。CA中存有一個密鑰對,同時向用戶提供CA公鑰,在獲取到用戶的PIK證書申請后,將用戶PIK公鑰摘要、用戶身份信息和TCM綁定的設備信息寫入PIK證書中,并用CA私鑰簽名生成證書激活包,發送給申請的用戶。用戶在接收到PIK證書激活包并完成激活過程后,即可得到有效的PIK證書。每次在用戶登錄的同時,用戶將PIK公鑰及證書發送至攝像頭端,攝像頭端對證書和PIK公鑰進行驗證,從而認證用戶身份的合法性。用戶身份認證原理如圖4所示。

圖4 用戶身份認證流程圖
2.4.3 視頻加/解密
為了保證視頻數據在傳輸過程中的安全,本設計采用將攝像頭捕獲到的視頻數據文件,經過加密后傳輸給客戶端的合法用戶。TCM中包含SM2非對稱加密、SM4對稱加密和SM3度量值計算算法,客戶端生成一對與用戶綁定的對稱密鑰,其中,私鑰存儲在TCM中,公鑰經過非對稱密鑰加密后發送給攝像頭端,攝像頭端接收到公鑰后在TCM中對其進行可信存儲和管理[10]。在用戶申請獲取視頻數據時,攝像頭端先根據用戶信息查找其公鑰,再用該公鑰對視頻文件進行加密,并將加密后的視頻文件傳輸給客戶端,客戶端會用存儲在TCM中的私鑰對文件進行解密。
在攝像頭端,接收到的視頻文件傳輸給文件處理模塊,再通過此模塊發送給加密模塊進行加密處理,加密后的視頻文件傳輸回文件處理模塊,經過此模塊傳輸給對應的客戶端中的文件處理模塊。
在客戶端中,文件處理模塊接收到從服務器端傳輸過來的加密后的視頻文件,并將其傳輸給解密模塊,經過解密后傳輸回位于客戶端TCM中的文件處理模塊,得到原始視頻文件供用戶觀看。
在傳輸過程中,由于該文件的密鑰是在TCM中管理、分配的,即使攻擊者截獲了視頻文件也無法獲得密鑰解密觀看,保護了用戶的隱私安全[11]。視頻的加解密原理如圖5所示。

圖5 視頻加/解密流程圖
本設計中,采用可信度量模塊在攝像頭啟動之前,先采集系統中需要運行的視頻生成軟件和策略、文件的度量值,再將采集到的度量值與存儲在本地的白名單中的基準值進行比對,如果比對結果一致,說明該軟件的完整性和安全性未遭到破壞,程序將正常啟動;否則,說明軟件被篡改,給予用戶提示。
完整的可信度量模塊由實體度量值采集和實體度量值比對兩個部分組成。實體度量值采集部分根據輸入的實體描述消息進行本地軟件的度量,生成對應的實體度量值消息,并將度量值存儲在本地,形成白名單。實體度量值比對部分在收到實體度量值消息后,會將度量值與白名單中的基準值進行比對,生成比對結果消息。可信度量的大致流程如圖6所示。

圖6 可信度量流程圖
可信度量模塊integrity_collect根據輸入的實體描述信息,在本地執行度量操作,生成對應的度量結果并作為消息發送。integrity_collect的輸入輸出如表1所示。

表1 integrity_collect的輸入輸出
本設計中在攝像頭端和客戶端分別部署login_test和login_client模塊,實現用戶注冊、登錄、遠程密鑰發送和視頻文件傳輸申請的功能。在完成用戶注冊、登錄和文件傳輸后,需要返回用戶的注冊、登錄和文件傳輸結果。注冊登錄模塊的大致流程如圖7所示。

圖7 注冊/登錄流程圖
用戶注冊數據記錄格式主要是記錄用戶向本模塊提供的注冊信息;用戶登錄數據記錄格式主要是記錄用戶向本模塊提供的登錄信息;本地用戶狀態數據記錄格式主要是記錄用戶對應的狀態信息。
在用戶注冊過程中,本模塊的輸入為用戶的注冊信息,輸出為用戶注冊結果;在用戶登錄過程中,本模塊的輸入為用戶的登錄信息,輸出為用戶的登錄結果。該模塊的輸入輸出如表2所示。

表2 用戶登錄輸入輸出
本設計中通過pik_client、pik_casign、pikcert_verify和pikcert_store四個模塊實現用戶身份認證的功能。該模塊大致流程如圖8所示。該過程主要用到了三種數據項記錄格式,如表3~表5所示。

圖8 用戶身份認證流程圖

表3 (TCM_PIK_DESC,USERINFO)記錄項的格式

表4 (TCM_PIK_DESC,CADATA)記錄項的格式

表5 (TCM_PIK_DESC,PIKCERT)記錄項的格式
使用create_key模塊完成TCM密鑰對的創建。create_key模塊收到輸入消息后,在TCM中完成目標密鑰對的生成,并將密鑰信息按照定義的數據結構填充完整,最后輸出完整的生成私鑰的消息,具體的公鑰和私鑰的實際值存儲在TCM的內置數據庫中,其中公鑰可以導出,私鑰不可導出。create_key模塊的大致流程如圖9所示。

圖9 密鑰生成流程圖
為了方便密鑰生成后對密鑰的管理和存儲,本文為密鑰對象定義記錄類型TCM_KEY_MANAGE,同時為了區分公鑰和私鑰,還需定義PRIVATE_KEY和PUBLIC_KEY兩種子類型,(TCM_KEY_MANAGE,PRIVATE_KEY)在本地存儲私鑰與用戶的關聯關系,(TCM_KEY_MANAGE,PUBLIC_KEY)在本地和遠程TCM中存儲公鑰與用戶的關聯關系。
本設計從攝像頭使用的安全需求出發,把可信計算技術應用于物聯網中,實現了基于TCM的可信攝像頭,增強了攝像頭的安全性、實用性,使攝像頭的使用更加放心可靠。本設計具有如下的創新性:
(1)在傳統的視頻數據流加密的基礎上,加入了基于安全芯片TCM的加密機制(本設計中使用TCM模擬器模擬)。基于TCM實現了密鑰創建和密鑰的管理,以此用于視頻傳輸以及用戶身份認證,保證了密鑰存儲的安全,增加了加密的安全性。TCM彌補了攝像頭系統的安全缺陷,從連接環節、度量環節、自身安全環節等多方面進行了安全性增強,并通過應用軟件統一管理的方式提高整個業務使用過程中的安全性。
(2)采用了國密算法系列,應用于攝像頭系統的加密。其中SM2算法簽名速度與秘鑰生成速度都快于RSA;SM3算法壓縮函數的每一輪都使用2個消息字;SM4算法在計算過程中增加非線性變換。國密算法系列相比于國際算法,在復雜度、加密速度等方面都有大幅提升,更能保障系統的安全性。
(3)將可信計算技術推廣到物聯網上。本設計的模式兼顧了一般物聯網設備與可信計算的特點,通過可信鏈為物聯網過程進行層層安全防護,預計可以推廣到大多數符合感知-傳輸-應用過程的物聯網設備上。
本設計嘗試了將可信計算技術應用于物聯網系統中,研究了基于TCM的可信攝像頭。本設計除了參考傳統的密碼加密、訪問控制等安全手段,更是通過可信機制構建的可信鏈來確保攝像頭全生命過程的安全;同時通過合理的架構促進“橫縱三層”的互動協作,保障了可信過程的實施。
本設計還需要進一步的改進和完善。首先,物聯網終端有型號多、接口復雜、硬件要求不同等特點,本應使用更多不同型號的真實設備來進行驗證。而此次只對單一攝像頭,配以單一客戶端做了簡單的模擬。第二,在真實的物聯網流程中,傳輸層與客戶端之間還應添加一個物聯網中心(注:物聯網中心在此處指為感知數據提供海量存儲、信息分揀、重要數據備份等功能的一個處理中心),用來進行數據分揀與備份等操作。本設計跳過了這一區域,但實際上如何實現物聯網中心的安全也是非常值得關注的問題,因為有海量數據蘊含其中,一旦被攻破后果十分嚴重。最后,只實現了可信計算中的可信度量、可信存儲等功能。
可信計算是一門博大精深的技術,有更多的技術知識等待被發掘。繼續探索出更安全、精巧的可信攝像頭機制和其他可信物聯網應用是下一步的研究方向。