2019 SDC 議題回顧 | IoT中的SE晶片安全

Editor發表於2019-07-29


​隨著物聯網的發展,IoT裝置自身的安全性越來越重要,如何在使用物聯網的過程做到資訊化和安全化的平衡至關重要,要做到端對端加密,SE晶片是最基礎的一個環境。


下面就讓我們來回顧看雪2019安全開發者峰會上《IoT中的SE晶片安全》的精彩內容。



編輯按


crownless:在IoT裝置中使用SE晶片可以帶來更多的安全性。然而,SE晶片也不完全是安全的,可能受到側通道攻擊、錯誤注入攻擊,導致洩漏加密金鑰等等。


更讓人擔憂的是,很多裝置如智慧門鎖根本就沒有用到SE晶片。試問這樣的裝置你還敢用嗎?其實,這個問題存在的原因是生產過程中的草草了事。所以,不僅要選購帶有SE功能的IoT裝置,還要提前瞭解心儀裝置的安全風評哦!



嘉賓介紹


2019 SDC 議題回顧 | IoT中的SE晶片安全


潘少華,江蘇知道創宇負責人、物聯網安全研究團隊負責人,中國區塊鏈應用研究中心理事,中國網際網路站狀況及其安全報告編委會指導委員。


很多人選購IoT產品時,都會看到是“晶片級加密”、“晶片級通訊”等等,那麼實際如何?大會上講師從SE晶片特性及SE晶片在IoT裝置中提供的功能及加密引擎方面進行安全性的分析,來剖析如何透過恰當的使用SE晶片來實現更安全有效的IoT安全環境,帶給大家很多新的啟迪與思考。



演講具體內容


以下為速記全文:


大家下午好!去年我們團隊在這裡分享了智慧硬體錢包的破解,講了韌體的提取、分析、挖掘和發現。


今天和大家分享一下我們最近做的IoT中的安全問題,剛才主持人問大家有5件以上智慧硬體的,我沒想到這麼多人舉手。


這個題目也是給自己挖了個坑,3月份報題目時讓我們講講智慧家居、智慧硬體的問題,直接講鎖太具體了,說講講SE晶片問題,但沒想到把自己裝進去了。為什麼?我們今年測了前前後後100款智慧雲鎖,最後發現能夠在鎖裡接觸到SE晶片的機會實在是太低了。


根據統計2025年750億智慧硬體終端,那麼有多少在公網上,這的確是超乎想象了。在我們認知裡,攝像頭、路由器不應該都是隱蔽的,在公網上探測不到。但是根據ZoomEye結果發現,今年暴露的物聯網裝置就有超過6000萬臺。


這兩年基於物聯網裝置、智慧終端的一些安全事件,像導致2016年美國斷網的攻擊是來自於很多物聯網裝置,包括上個月我們也剛跟騰訊一起新發現了利用臺灣AVTECH攝像頭漏洞的蠕蟲網路。


2019 SDC 議題回顧 | IoT中的SE晶片安全


這裡很關鍵的問題是,這麼多裝置放在野外,有可能在家裡,有可能在辦公網路,有可能是室外部署的,它跟我們個人電腦、伺服器不一樣,伺服器中病毒了我們可以很快定位找到問題。


攝像頭,不說別的問題,光說機站,運營商機站的地址跟我們實際找到東西根本不在同一個地方,無論是市政施工還是其他因素,甚至是登記時錯了,有各種各樣的的偏差。


去年CCTV4和中央2臺連續報導兩期智慧家居問題,比如鎖突然開了,窗簾被拉開了等等,有些近場通訊無線訊號劫持,有些是APP漏洞。這是6月份的一個報導,透過這個案件發現,第一,物聯網終端是不是我們廠商發出去的終端?裡面的東西是不是跑我們的指令碼?第二,物聯網裝置跟伺服器通訊時是不是連線的真正伺服器,下載的韌體是不是已經被動過手腳了?


尤其從DDoS的情況來看,跟10年前、8年前DDoS完全不一樣,動不動就上百臺裝置組成殭屍網路,動不動就T。這裡比較核心的一個問題是,身份認證和加密出了問題?因為很多時候透過漏洞攻擊進去是源自身份鑑權方面的問題。


根據2016年的paper的分享,講到IoT的攻擊面,這裡有嵌入式的,可能是硬體層的,也可能是網路層的、服務層的、第三方API的,裡面最核心的問題是身份鑑權的問題。


到具體的智慧家居,比如門鎖,以前鎖是揣在自己兜裡的,丟了之後我自己是知道的,雖然我知道有物理開鎖,但現在隨著我上網之後,我的鎖連網了,誰還對我這個鎖有管控權,這個問題就比較深了,智慧門鎖系統本質上是金鑰管理系統,就涉及到金鑰分發、涉及到雙向認證、涉及到ID標識。


除了鎖之外,比如物聯網的表,水錶、電錶都存在相似的wen體。比如嵌入式系統給我的金鑰也本身容易被駭客攻擊,那麼接下來如何透過安全的技術手段來保證核心的信任根的安全?


今年12月1號物聯網等保2.0將正式實施,其中一項是有關於物聯網安全的擴充套件要求,裡面提到等保三級一定實現可信計算,要有可信任根,要有安全硬體的保障。那要所有的電錶、水錶、上網裝置都達到等保三級,相關的投入好像有點大。成本和功耗怎麼平衡,用什麼級別的可信計算?硬體方面是不是用了安全晶片就安全了?


安全元件一般簡稱SE(Secure Element),包含兩部分,一個是硬體部分,一個是軟體部分,硬體可以理解成單獨的嵌入式電腦,它可能包含一個CPU等等在裡面。


最核心的,第一,要支援加密演算法,比如一種是AES進行加密和解密的,第二就是身份認證,比如橢圓曲線用來非對稱性加密。還有一個比較重要的事情,唯一的ID,包括隨機數的生成。今天來了很多搞硬體的朋友、搞區塊鏈的朋友,對隨機數的重要性非常清楚。


2019 SDC 議題回顧 | IoT中的SE晶片安全


從3月份到現在,我們測了100多個門鎖相關的APP、30多個門鎖實體,最後發現很鬱悶的一個點是什麼?我列出來的這30多個鎖基本上沒有SE晶片。在此基礎上,這麼多APP和門鎖硬體,統計下來的數字平均高危漏洞數量有這麼多個,有些洞比較多,拖後腿比較厲害,當然也有個別的APP做得相對比較安全的。


最常見的是邏輯漏洞,可以充值任意使用者的密碼、使用任意手機後來註冊,直接進入管理後臺等等。還有一些透過韌體進而分析它的協議、雲服務介面。


我們發現絕大多數APP是明文傳輸的,只要把韌體扒下來,甚至明文金鑰都沒有,就是直接明文通訊、直接是IP地址,這是大多數門鎖的情況。少數進行了通訊加密也基本是固定金鑰,在通訊協議裡。這種情況下如果是WiFi的鎖,我只要劫持WiFI做解鎖就非常容易。


還有一些鎖是NB網路,透過4G機站的方式把NB訊號進行劫持,門鎖本身的加密通訊破解就根本不是問題了。這些門鎖、水電錶、煤氣表,如果能夠正確的使用SE晶片,就沒有那麼容易被中間人劫持、破解協議。


SE晶片本身的應用場景有很多種,其中通訊金鑰的安全加密儲存就非常重要。實際上很多智慧IoT裝置用的最常見的是MCU,很多裝置是基於MCU來儲存韌體和金鑰。


做好PCB和晶片層面的安全防護,防止韌體被匯出分析,防止記憶體被讀取,也是一個辦法。類似的PC上比較常見的是TPM,很多電腦上已經有這個晶片了。像TEE晶片更多在手機上應用比較多,TEE不僅是金鑰加密儲存,還有其他的授信和一部分可執行程式碼。


2019 SDC 議題回顧 | IoT中的SE晶片安全


最常見的是SE晶片是這個結構,一般包括一個Flash,包含一個SRAM,包含相關的計算單元。以這個智慧表的發展為例,最開始我們的表都是每隔1個月或者3個月抄表的人過來敲門,再過幾年前是智慧卡,營業廳衝了費用後,拿這個卡刷一下就行。這兩年都開始推廣使用NB表或者其他聯網的方式進行遠端傳輸,避免了人力上門抄表。


正常用SE系統時一般包含這幾部分,首先,在MCU嵌入式裡有相關的調入介面,最後是在雲端系統的匹配,如果涉及第三方業務,還要有第三方業務的對接。最核心的是密管系統,因為類似於KPI體系裡的根證書機構,要確保金鑰的初始化和分發都是安全的。


我們發現難得個別智慧門鎖用了SE晶片,但是還是沒辦法做就端到端的安全通訊,為什麼?在產業鏈情況下,比如我做鎖的並不代表我也會做APP,能做APP的平臺也只是根據廠商需求來定製開發。目前平臺和硬體部分很難把這個事情協調好,這是實際存在的一個困難,也沒有懂安全的專業團隊來落實安全需求。


順便提一下很多鎖的PCB做工非常好,比如JTAG、UART除錯介面在哪裡,哪個地方跳線了,都標得一清二楚,這樣帶來的問題就是攻擊者就很方便了,看一眼就可以直接著手硬體破解。


以智慧門鎖這種智慧家居為例,一般有這幾種SE使用場景。第一種,把SE晶片加入到主控板上,主控板在需要時去調隨機數生成,去調加密介面,或者調簽名和其他功能。第二種常見的是比較簡單的方式,尤其是NB模組,在通訊模組裡單獨加這樣一個安全晶片。


為什麼?因為在實際的工業應用中、生產使用中,比如鎖廠的主控板都已經定好了,你讓我突然加個安全晶片,我真的做不到,因為我要找供應商解決這個問題,我的核心部件都得跟著改,韌體得重新開發。所以通訊模組直接加這個安全晶片。


為什麼?比如我傳到NB模組時是明文通訊的,在NB模組裡自動去調這樣一個加密晶片的協議,然後去進行加密傳輸到雲端,雲端自動做解密。因為雲端改動相對好一些、隨時可以升級。這裡大家能想到一些問題,比如把我的安全模組加到通訊模組裡,主控板不用動。系統層面在主控板MCU里載入相應的函式,去相應的工作就可以了。


隨著網路安全法和等保2.0馬上正式實施,我們也請教了相關專家。可以說,智慧門鎖廠商不做等保三級備案,不能保護好使用者資料是屬於“違法”的。等保2.0三級要求物聯網系統要有態勢感知平臺,要化被動防禦變主動防禦,就是要知道有沒有人在嘗試入侵,要知道所有通訊的是不是都是可控終端、都是可信任的。這些都是SE晶片能夠發揮作用的。


另外,SE晶片本身又存在哪些問題呢,以及在使用SE的時候會有哪些坑?

最基本的針對SE的攻擊手段,比如一種SDMA溢位攻擊,透過CH0、CH1去設定通訊長度,透過把這個長度調整之後就可以發出這樣的溢位攻擊,這是一種攻擊模式。二是針對時鐘系統構建干擾訊號,產生故障。像錯誤注入攻擊在我們測試時,包括在汽車,都可以用這樣的手段,透過這個方式繞過一些安全機制。


2019 SDC 議題回顧 | IoT中的SE晶片安全


像側通道攻擊,我們這幾個月工作裡側通道攻擊其實都用不上,透過韌體提取已經把MCU裡的金鑰拿出來了。但是假如做好了MCU相關的保護,那麼側通道攻擊就有意義了。


比如針對目標門鎖,首先去抓它的PCB板子上電壓變化的訊號,然後再進行分析,這個可能調到AES加密那一段,然後透過這個功能就可以把金鑰分析出來了。整個執行過程比較簡單,網上有現成教程,github上也能找到。載入過後就可以開始自動去跑了。我們自己跑過幾個門鎖的測試,都有幾十秒時間都能完成128位AES的金鑰提取。


2019 SDC 議題回顧 | IoT中的SE晶片安全


除了在硬體層面,在韌體和APP層面也有很多問題,比如加密引擎,有SE晶片,但是根本沒有正確使用呼叫這個介面。相關保護機制是有的,但我沒有去呼叫。


有一個智慧門鎖也是這樣的情況,它已經注重安全、使用了ATECC508A的加密晶片,是第一款支援橢圓曲線加密認證的晶片,但是它有一個問題是晶片的IIC通訊沒有進行加密,直接取得IIC的通訊訊號就可以讀取出來了。這種情況就是要更換SE。可以理解,開發人員去找了個安全晶片就覺得很安全了,但實際上安全晶片有什麼特性什麼適用場景,比如它的功耗、它的工作環境,一般的開發人員不會在安全上想得這麼全面。


再比如這是我們去年分享的數字錢包破解案例。它本身用了SE晶片,也用了MCU,但是比特幣的價值非常高,我針對它攻擊時可以花更多精力去做這個事情。


駭客拿到錢包後根本不用折騰安全晶片,直接在MCU部件層面做手腳。這種情況下我們透過JTAG把它的韌體讀取出來,改完之後再傳上去。這樣我還是正常呼叫SE,但是在錢包交易時可能就被做了手腳,攻擊者的目的就已經達成了。


2019 SDC 議題回顧 | IoT中的SE晶片安全


說到SE,TEE是可信計算的一個主要方向,國內現在主要推的。但是在IoT方面,TEE有它的問題,第一,它的東西太多了,其實想得非常不錯,一部分在系統裡做相關的功能,一部分功能是放到TEE中被保護起來的。


但是在實踐過程中最大的問題是,一般的開發人員來自己的MCU都做不好,要再把一段程式碼摳出來放在TEE裡,太複雜了反而是不可控的因素。第二,TEE的功耗問題,一個智慧門鎖可能16節5號乾電池,一年半,但如果是TEE就變成半年不到,這對使用者使用來講是非常大的影響。所以TEE在手機或者有其他穩定供電的地方會比較適用。


TEE還有個問題是它的可信計算實在太大了,一層層套起來,從系統載入的每個環節都要算。另外,介面定得比較死一些。最大的問題歸根到底還是依賴上層MCU的工作,把這個事情做完之後再去調這部分TEE的程式碼,本身是在MCU的保護層。


針對TEE也有相應的攻擊手段,比如載體攻擊,把東西匯出來。韌體回滾攻擊等攻擊手段等等。每個安全產品都有它自身的特點和帶來的新特性,怎麼用好這個特性,就需要我們關注。


2019 SDC 議題回顧 | IoT中的SE晶片安全


最後剛才丟擲了一個像這種智慧門鎖的安全架構存在什麼問題?一個城市裡幾萬個撒出去了,以前沒有加密通訊,傳統的IDS等裝置還能發現一些安全攻擊事件。現在我們強調要主動防禦,主動防禦的過程中,比如前面布探針,後面做好流量監控。


但是在現實架構下,我把那個通訊的模組里加上SE,這樣能保證端到端加密了,這有什麼問題?假如我是攻擊者,去路上隨便把拆個裝置,直接呼叫加密模組去發起攻擊,過程中所有的攻擊請求在旁路都沒法發現,直到核心業務系統之後才發現這可能是個異常請求。


反而是其他安全裝置沒有辦法使用,沒有辦法檢測到終端到底是不是我們真正的自己門鎖在用、水錶在用,還是給拆下來接上別的東西了,冒充可信的接入者來幹些其他的事情。


所以說,要解決好智慧IoT的安全問題還是需要豐富的安全經驗,需要解決很多單點安全問題、更需要通盤考慮,硬體特性、軟體特性,從底層硬體到後面的專業安全產品和服務都是需要了解的。



2019 SDC 議題回顧 | IoT中的SE晶片安全




2019 SDC 議題回顧 | IoT中的SE晶片安全






2019 SDC 議題回顧 | IoT中的SE晶片安全

公眾號ID:ikanxue

官方微博:看雪安全

商務合作:wsc@kanxue.com



相關文章