「嗨,我是你最好的朋友,我是聖誕老人。」這是一則發生在一個8歲小女孩身上的新聞,房間攝像頭主動「打招呼」,常常存在於電影中的橋段在現實生活中卻發生了。本著「安全」之名,卻給黑客行了「窺探」之便。
事實上,黑客入侵家居攝像頭事件頻頻見諸報端,不僅是家居攝像頭、智能門鎖、智能音箱等家居設備智能化之後,都面臨的「安全」這把達摩克利斯之劍的「審判」。科技紅利的背後,從智能設備安全到物聯網安全、乃至人身安全,都應如何考量?
近年來,隨著科技創新與應用,IoT設備市場也進入了高速發展期。放眼未來全球IoT市場,根據 Statistics 的調研報告,預計2025年IoT設備數量將超過750億。科技成果普及也意味著攻擊面的擴大,IoT設備在方便人們生活的同時,也打破了用戶設備間的信息安全邊界,導致設備可能存在各種安全隱患。
萬物互聯時代潛藏著未知風險物聯網相較於傳統領域,多出了邊緣感知層也就是設備端側的安全風險,設備廠商很難保證遍布全球的每一臺智能設備自身以及所處環境的安全性。舉例來說,物理環境和設備自身的安全性,在傳統安全領域裡,設備在一個相對安全的物理或邏輯環境中進行保護,但是,物聯網設備所處的物理環境相對來說更不可控,比如酒店中的智能音箱、智能門鈴的外部攝像頭部分。
此外,物聯網設備由於存儲空間或算力的限制,很多傳統安全領域的防禦手段如防火牆、防病毒軟體在物聯網設備上無法實施,導致設備可能被惡意拆卸注入惡意代碼或軟體,所以設備需要具備防篡改、防物理破壞或防丟失的機制;另一個風險是數據洩露,物聯網設備獲取了更多的個人數據,暫且不談雲端防護不當導致的信息洩露,就目前諸多的IoT通信協議也給個人數據的安全性帶來了很大的挑戰。
綜上所述,IoT的雲管端架構可能存在各種類型的安全風險,甚至與人們的生命安全、財產安全息息相關;並且在可預見的將來,IoT設備市場將會持續高速擴張,不斷滲透進人們的生活,這使得設備的攻擊面急劇擴大。物聯網企業如何預防安全風險,如何從技術角度發力,構建安全可信的IoT設備,讓用戶、監管和合作夥伴放心,成了企業亟待解決的問題。
一款IoT產品,需要考慮哪些安全風險,安全團隊在什麼階段開始介入,如何去解決?企業面對這些問題時,如果沒有一個開放、便捷、落地的知識體系,讓企業在設計和開發消費級物聯網終端產品時就無從下手。
安全基線指南直擊企業痛點小米在「手機×AIoT」戰略驅動下,智能物聯網設備迅速發展,聯網設備累計超2.89億,擁有5件及以上IoT設備用戶數達510萬。近期小米發布的《消費級物聯網安全基線》提供了IoT產品安全設計和開發的方案,基線涵蓋物聯網設備強相關的硬體安全、通信協議安全、系統安全、應用安全、編碼安全、業務邏輯安全及數據安全等13個安全控制域,細化為共77項安全技術層面的要求點,覆蓋了主流IoT設備從設計、開發、生產各階段需要注意的安全問題。
該基線在小米AIoT安全實驗室豐富的安全測試經驗的基礎上進行了深入的歸納和提煉,對於行業產研人員進行產品研發的各階段都有著較強的參考意義。IoT設備種類繁多,基線在通信安全、系統安全、編碼安全等控制域將各類設備的通用安全要求進行了歸納整合,同時對一些重點類型的設備安全要求進行了著重單獨的介紹。
基線在對不同控制域提出對應安全要求的同時,也給出了相應的解決方案,幫助物聯網終端產研人員理解相關安全要求及落地方案思路。例如對於防重放,基線通過圖文的方式簡明地解釋了防重放的基本原理,同時列舉了行業內對幾種常用通訊類型設備的防重放成熟解決方案以供參考,方便行業產研人員理解的同時也易於快速落地實現;在很多細節性較強的安全要求點裡,基線結合實際操作或實現方式,提供了方法函數及參數級的詳細實現指導,很大程度上降低了企業開發人員將相關安全特性在代碼中實現的難度。以下截取了部分基線內容進行介紹。
第一章硬體安全入手,基線中重點介紹了接口安全,安全啟動,安全晶片和本地數據安全性。
硬體的調試接口的確是很多攻擊者的著力點,刪除不必要的接口標識,在產測或內部測試後未關閉相關接口的確是很多企業常常忽略的點,或者的確需要開啟一些調試接口以備後續維修或其他的一些正當的業務訴求,但需要注意開啟的調試接口,需要有相應的鑑權機制來提升攻擊門檻。比如攻擊者在物理接觸到設備後,但因為刪除了接口的標識,他必然需要一定的時間來找出對應的JIAG或UART等接口的準確位置。費了很大力氣找到了對應的接口,但發現已經被封禁了就又是徒勞,如果剛好接口是開放的,設備設置的鑑權機制這個時候就發揮重要作用了,比如接口需要打開專用的調試平臺,在輸入對應的調試帳號和密碼,或者設備接口在三次的錯誤嘗試後就自動關閉,那攻擊者仍然是無法通過這個風險點侵入的。
隨著設備品類和功能的不斷豐富,IoT設備需要處理的各種敏感信息也越來越多,如門鎖可能需要處理和存儲指紋、秘鑰、證書等信息。普通晶片的安全防禦功能薄弱,為防止敏感信息洩露,此時就需要安全晶片為設備提供可信的硬體平臺和安全載體。
安全晶片的主要作用有三點,安全存儲加密、可信執行環境和安全認證。
第一是敏感信息(如用證書、密鑰)的安全存儲加密,安全晶片內部設有獨立的存儲空間,外部無法訪問,因此存儲在安全晶片內的敏感信息是安全的。如果因為安全晶片內部存儲空間不足需要將敏感信息存儲在外部,安全晶片也能起到關鍵作用,基本思路是使用安全晶片具有的自主生成密鑰的能力,並且密鑰僅保存在安全晶片內部存儲,通過安全晶片對敏感信息進行加密,再存儲到安全晶片外部,這樣外部無法獲取秘鑰便無法解密,即可實現敏感信息的安全加密。
第二是可信執行環境,以指紋識別為例,可將用戶指紋模板存儲在安全晶片內部,驗證時將待識別指數據紋傳入安全晶片運行指紋識別算法,再對外傳輸驗證結果。
第三是安全晶片提供了安全認證服務,為設備提供了可信根,用來完成物聯網設備和雲端、以及和其它設備之間的雙向認證。同時,加載安全晶片的設備可以和其它的控制應用及生態系統內的設備進行雙向認證。
物聯網設備所處的物理環境複雜,很多都需要在公共場所或一些環境惡劣的地方,被惡意人員接觸的概率大大加大。如何確保設備在公開環境中不被惡意篡改就尤為重要了。要解決這個問題,就需要引入安全啟動流程。安全啟動需要設備採用的晶片支持secure boot,可選擇支持此功能的MCU或選擇植入安全晶片輔助執行。其核心思想是在系統啟動時從boot ROM到bootloader到kernel再到rootfs的多層鏈式校驗機制(如下圖所示),而最底層的boot ROM則是在產線燒錄在晶片中,出廠後不可修改的。這樣從可信的底層逐級向上驗籤,最終只有未經篡改的可信固件才能夠通過驗證啟動成功的,從而保證了系統能夠安全地啟動。
圖-安全啟動
第二到六章詳細闡述了通信安全。IoT設備種類繁多,基線將各類設備共性的通信安全要求歸納整合為通用通信安全,然後對一些重點類型設備的特殊安全要求或具體實現方案在第三到第六章進行了著重單獨的介紹。以下簡要介紹通用通信安全歸納的一些通用性強而且比較基礎的設備安全要求。
在產線測試階段經常使用的工廠OTA接口,這類特權功能接口通常可以跳過鑑權直接執行功能,能在研發測試階段提高批量操作效率,但如果出廠後仍保留此類接口,則可能被惡意攻擊者利用。因此應在設備出廠固件上仔細檢查並關閉此類特權功能接口,如售後或工廠有明確合理的原因需要保留,則應當在保留接口上使用鑑權機制,防止非授權人員使用特權接口造成攻擊隱患。
設備通信秘鑰用於數據傳輸或身份鑑權,此通信秘鑰一旦洩露將導致設備與服務端通信內容可被竊取,洩露敏感信息,甚至可能導致攻擊者偽造設備與IoT平臺進行通信,危害IoT平臺安全。而部分開發者為圖簡便,將相同的設備通信秘鑰直接硬編碼在設備程序代碼中,導致大批相同型號的設備使用相同的通信秘鑰,這無疑極大地危害了設備及平臺的安全性。因此,本基線要求用於傳輸加密或身份鑑權的秘鑰不應硬編碼在程序代碼中,應滿足一機一密的要求,如通過每臺設備出廠時寫入的根密鑰進行派生並導出設備通信密鑰。
另外,重放攻擊在IoT領域的安全事件層出不窮,如某電動汽車電子鑰匙信號被重放,成功打開車門等。重放的基本流程是先監聽捕獲到合法用戶向受控設備發出的控制指令,再將該控制指令重新發給受控設備,以達到欺騙認證系統的目的。基於重放攻擊的原理,也就不難理解防重放的思路了。防重放主要通過在控制指令包加一個計數器,受控設備收到指令時先驗證指令包的計數器是否有效,僅執行有效的控制指令。
圖-重放攻擊和防重放
第七到九章描述了系統安全的相關要求,這裡簡要介紹一下通用系統安全的內容。IoT設備與傳統設備很大的一個區別在於,IoT設備具備通過聯網升級(OTA)的方式很方便地進行功能迭代,目前絕大多數IoT設備都支持OTA功能下載最新的固件鏡像並本地升級。但是OTA功能會引入一個新的問題,設備聯網下載的固件包如果被惡意篡改,那麼設備升級後很可能出現信息洩露、工作異常,甚至導致用戶人身安全威脅和財產損失。
如何防止設備升級到被篡改的固件呢?這就需要通過固件籤名來實現。如下圖所示,服務端先對固件鏡像加籤,即先對固件鏡像哈希得到服務端摘要,再用服務端私鑰加密摘要得到籤名,把籤名連同固件鏡像一起下發給設備。設備端下載固件包後,將固件鏡像使用相同的哈希算法得到設備端摘要,再用服務端公鑰將固件包內的籤名解密得到服務端摘要。設備端這時就可以將服務端摘要和設備端摘要比對校驗,如果兩者完全一致,即可證明此固件鏡像來源可信並且內容未經篡改。
圖-固件升級包合法性與完整性校驗
第十二章描述了業務邏輯層面的通用安全要求。設備綁定時需注意的問題很多,如設備未綁定時會發出信號供控制應用掃描綁定,如果用戶一直未綁定而該信號始終存在,可能導致設備被他人惡意綁定進行查看和控制,因此需要設定一個安全與用戶體驗平衡的時間限制(如30分鐘),超過此時間即關閉待綁定狀態,待設備重新上電啟動後再次進入待綁定狀態。
另外,室外設備和高安全等級設備由於其可能會遭遇暴力拆除或會處理敏感信息,應對其在雲端進行設備與用戶的強關聯綁定。即如果原先綁定的用戶沒有主動解綁,那麼即使設備被他人拆除後恢復出廠設置,在綁定時也會在雲端查詢此前設備已綁定的帳號並與當前帳號比對,如果是不同帳號則拒絕綁定。這樣能保證設備只可被一人綁定,防止設備失竊後的數據洩露。
圖-強綁定
以「攝像頭」產品為例,擊破威脅風險接下來以較受用戶喜愛的攝像頭設備為例,介紹小米如何在產品設計、開發、生產各階段利用基線指南落實設備安全性。
首先,小米會對所有的AIoT產品進行一個產品安全等級的劃分。根據產品的C (Confidentiality) I (Integrity) A (Availability) 安全屬性遭到破壞後對用戶產生的影響,將小米AIoT產品劃分為高,中,低三個安全等級。由於攝像頭具有安防和錄像功能,並且部分攝像頭支持人臉識別功能,會涉及到用戶的人身財產安全及敏感個人信息,屬於高安全等級設備。
其次,根據不同的安全等級,匹配相應等級的安全基線要求。這裡的基線要求在需求評估和安全測試過程中都是相匹配的。光有要求還是不行,需要驗證提出的要求是否正確的實現。小米AIoT產品的整個開發生命周期中嵌入了安全因素,在產品方案預研和需求階段就引入安全人員,明確安全需求和設計,儘量早的提出安全要求。
產品在需求和功能設計階段,產品經理需要在內部流程中提交需求評估申請,AIoT安全實驗室接收到此申請單,審查當前的需求文檔,方案設計文檔以及相關技術架構,並給出對應的安全評估意見。如攝像頭類高安全等級設備,硬體安全方面會評估是否支持安全啟動,是否需要集成安全晶片,室外設備防拆除的防護或預警機制如何實現,以及調試接口相關的注意事項等。
通信安全方面,根據攝像頭具體型號的通信方式,會覆蓋乙太網和藍牙通信安全章節的各安全要求;系統安全和編碼安全方面,由於攝像頭通常採用Linux作業系統,所以除了通用系統和編碼安全外,還需滿足Linux系統章節的特殊要求;同時還需滿足業務邏輯和數據安全這兩個通用安全要求。
產品和研發人員根據評估意見修改對應的產品方案,進行研發,在功能開發完成後,業務需同時提交功能測試和安全測試。
再次,在產品測試階段需要經過安全測試,驗證相應的安全需求是否得以實現,將測試結果結合到產品上線流程中。
安全測試由小米AIoT安全實驗室進行,測試中將使用到實驗室自研AIoT安全測試平臺,輔助工程師完成固件中常見漏洞和三方組件安全問題的掃描,同時進行人工滲透,對產品硬體安全,作業系統安全,業務邏輯安全,編碼安全,通信安全,數據安全等多個方面進行技術驗證,同時也驗證需求評估階段提出的安全需求點的實現是否完整,安全。
測試完成後,AIoT安全實驗室將測試結果整理為最終的結果報告提交小米IoT內部驗收團隊進行驗收檢查。
智能攝像頭只是目前家居安防監控物聯網(IoT)設備的一種產品形態,消費物聯網遠不止安防一個領域,其產品品類繁多、功能各異。因此,安全性在產品設計研發之初,更應該被重視。回想「聖誕老人問候小女孩」這個事件,乍一聽是個奇聞趣事,卻讓人細思極恐,在攝像頭的背後,一雙眼睛正在她無知覺的情況下,通過攝像頭肆意窺探著她房間裡的一切,竊取她的隱私。這份基線指南帶來的不僅僅是企業產品安全的防護指導,更是人們隱私安全的守護。