陳洋:小米 IoT 安全思考與實踐
隨著18世紀60年代開始的第一次工業革命,人類在技術發展史上創造了一次又一次的奇蹟,之後的電力革命、計算機資訊科技革命,直到我們正經歷的第四次全新技術革命。這個科技爆發的歷程印證了全人類不斷髮展新技術,追求並創造全新生活方式的探索精神。
AI 與 IoT 作為第四次工業革命的基礎支撐,從誕生之日就伴隨著嚴峻的安全挑戰,但不可否認的是它依然是改變未來的「金鑰匙」。小米就是這樣一家決心創造未來的企業,我們已經建立了目前全球規模最大的消費類 IoT 平臺,連線超過1.32億臺智慧裝置,AI語音服務累計喚醒50億次。
那麼小米是如何保障如此龐大且複雜的 IoT 生態平臺的呢?從今天開始,本公眾號會陸續為大家揭祕 2018 小米 IoT 安全峰會的諸多亮點,敬請關注。
今天第一個重磅內容來自 小米首席安全官陳洋(cy07) 的分享—— 《小米 IoT 安全思考與實踐》 。
小米自家與其生態鏈下的 IoT 裝置五花八門,有牙刷、有電動玩具、對講機、攝像頭甚至是守護家裡大門的智慧門鎖等,覆蓋我們生活的方方面面。面對如此複雜龐大的產品品類,小米是如何保障它們安全的呢?相信這也是大家心裡的疑問。
我們要考慮不同裝置的攻擊面,比如指紋鎖有自學習功能,這個容易被貼片攻擊;藍芽通訊是否可以被劫持,篡改;NB-iot通訊也可以被偽基站劫持,發一些虛假訊息和控制指令;GPS協議自身也存在安全缺陷,容易被偽造。以及硬體裝置自身又會存在很多除錯介面,在一定場景下會暴露許可權。如果說每款裝置都要解決這些問題的話,那工作量是相當巨大的。
面對這個問題,小米的方案很乾練,那就是減少裝置的攻擊面。這裡主要分為六個層面:
-
認證層面 保證每臺裝置預製不同金鑰,使用者繫結產生唯一關聯性的token,利用金鑰與token的關係防止越權操作問題。
-
通訊層面 要做流量加密與資料簽名。
-
硬體層面 儘可能的把除錯介面關掉,並且引入安全晶片,安全儲存金鑰資訊。
-
韌體層面 防止韌體被篡改,所以驗籤與防降級的保護是基本要求。
-
系統層面 禁止開啟任何處miio外的通訊或管理功能服務埠,區域網是不可信的環境。
-
應用層面 向開發者提供成熟可靠的SDK,減少額外開發帶來新的安全風險。
這樣去看,即使再複雜的裝置,再複雜的攻擊手段,利用這樣的 MioT 裝置架構去實施,就會把安全風險控制到最低的程度。在利用定製化的硬體模組,比如Wi-Fi模組,把通訊協議進行安全封裝提供給開發者,提供對應的SDK進行開發。這樣的好處不言而喻,即使開發者疏忽安全,那開發出的產品也會有一個最基礎的安全保障。但即使這樣,也不能掉以輕心,小米針對生態行業的開發者們提供了《小米IoT產品安全規範》,從八個層面提出一些詳細的安全要求以及實現手段,協助生態企業的開發能力也進入到一個比較高的安全標準。
以上努力讓裝置有了較為基礎的安全保障,看起來似乎不錯,但仍然不能大意。多年的安全經驗告訴我們人總是會犯錯的。那麼小米要如何用有限的人力來覆蓋大量的產品生產呢?這裡就需要引入一些自動化的測試手段。
比如之前提到的禁止裝置開放埠問題,我們會將每款裝置放到 IoT 測試環境中,自動掃描開放的埠以及對應的服務,以及這些服務潛在的安全隱患,這跟傳統的主機安全掃描相似。並且還會自動化的對流量進行劫持攻擊,檢查證書的校驗情況,同時自動化的把OTA行為進行劫持,替換惡意的韌體。另外小米還有一個特有的優勢,我們可以利用除錯版的韌體向裝置自動植入根證書,將SSL通訊解密,對資料進行分析是否涉及隱私上傳,以上都是可以通過自動化手段來實現的。
在經過了這黑盒與白盒的自動化分析後,並不能達到理想的安全效果。所以我們依然要從攻擊者視角去思考,人為角度去攻擊裝置。
人為分析角度首先要進行風險建模,如果一個黑客拿到了裝置,那麼他最感興趣的是什麼?怎樣的攻擊最能獲取成就感?如果要達到這個目標需要什麼條件,這樣的思路去尋找整個攻防的關鍵點。然後我們會拆解每一款產品,分析硬體設計的風險,模擬一些攻擊場景。
以上是我們內部最大化發現問題的種種思路與手段,這些還不夠,我們還提出了一種防禦鏈的概念。因為防禦是不同層面的問題,並不是某一個層面的防禦能夠解決所有問題,必須一層一層立體佈防。比如大家熟悉的GPS定位是可以偽造的,如果附近有偽造的訊號發射源,那GPS晶片獲取的座標可能就是假的,在這個層面上進行攻防成本非常高,還不一定能解決。再比如一些裝置通過GSM進行聯網,也可以被吸附到偽基站上進行攻擊,如果我們在這一層跟他死磕到底,未必是明智的方法。所以我們要構建一條防禦鏈,這一層可能失控,我們通過其他技術手段去彌補。以定位為例,GPS不可信的話我們用Wi-Fi等其他手段輔助定位,看整體資料是否一致。這個就是 IoT 風控,我們要看資料是否互恰,意思就是一款裝置會跟雲端通訊,會有很多維度的資訊,一般的攻擊者攻破了某個點並不是不可能,但是很難讓所有資料成對出現,流程中一旦出現不合理的資料流程,我們會認為這臺裝置的請求都存在風險。
風控的另一個方面就是賬號服務,裝置都是一個使用者在用,必然會繫結在這個使用者賬號上。如果裝置沒有安全問題,但使用者的賬號丟失,控制權也會丟掉。一個賬號下有攝像頭的使用者和只有空氣淨化器的使用者賬號風控等級是不一樣的,所以要對賬號風控進行詳細分級對待,並保證使用者體驗。
IoT 現階段又有了更高的安全挑戰——2B。曾經我們認為裝置安全做好之後,物理接觸是個可接受的範圍內。但有了2B場景,這條安全邊界被打破了。比如說酒店裡面用一個智慧音箱去控制所有的裝置,如果說入住的客人往裡面寫入一個後門韌體,那這個房間的隱私就得不到保障。還有像共享汽車,如果說把後門寫進去,有可能會造成車禍。
所以說第一它要防拆,不一定保證裝置的完好,但是拆了之後要知道。還有就是要有一定的自我感知的能力,如果裝置被人動過手腳,不管成功沒成功都需要有一定的感知能力,這樣的話可以知情並進行檢查。甚至說做成類似於以前PC時代的還原卡的方式,它具有一定的還原能力,發生故障、發生一些不可預期的情況的情況下,能夠把一些程式進行還原。
那麼問題又來了,做好了這些就足夠保障IoT的安全了嗎?這些我們只做到了產品層,或者說我們自己可控的方面,但現在IoT行業是一個產業鏈。比如說我們任何一款產品都會有很多很多的元器件,來自於世界各地,這每一個元器件裡面,它是不是足夠安全,這些模組裡面自帶的程式碼、自帶的SDK是否足夠安全。一旦這些元器件、模組或者晶片有問題,後期修復的成本是很高的,運氣好的一些可能能夠通過程式碼貢獻分析的方式,有些可能還只能通過硬體迭代的方式才能夠去修復。
所以,我們對引入的第三方的程式碼、核心的元器件,在使用之前一定要對它本身攻擊面、本身的安全性進行比較深入的評估,以及說可能會引入第三方的雲服務、CDN等等。我們是不是足夠信任,如果說不是足夠信任,那麼我們就完全不信任它,就是把它作為一個通路,通過它的資料都進行加密與校驗,儲存在雲服務商的資料,這個磁碟本身也需要加密。裝置最後一定要進入售賣環節,要通過電商去售賣,電商要把產品賣給使用者,肯定需要使用者的收貨地址,使用者的手機號,才能夠把產品送給使用者,儲存在倉儲、物流、經銷商這個階段裡面,他們是否可行?
資訊的洩露往往並非企業自身問題所致,而是整條行業鏈中的諸多環節相互協調出現紕漏,但不論哪個環節出現問題,都會給使用者造成嚴重的經濟損失風險。所以小米最近搞了一個叫做隱私號碼的東西,隱私號碼大家應該不陌生,因為滴滴早就用了,比如說滴滴打車的時候,跟司機聯絡的時候,那個號碼其實是一箇中間的隱私號碼。這個過程比較簡單,就是下單的時候給他分配一個臨時的手機號,這個手機號碼是在商場、倉儲、物流、快遞看到的號碼,在這個快遞結束之後它就無效了。即使出現不可控的資訊洩露風險,最終騙子也難以對應到實際的使用者實施詐騙攻擊。
再說說隱私問題,產品經理都有各種各樣的需求,希望獲取使用者更多的資訊,為什麼呢?因為只有更瞭解客戶,才能做更多的產品。面對這樣的業務需求,我們怎麼樣去保護使用者隱私?首先我們迴歸初心,把自己當成使用者去看,這個資訊是否必要,使用者如果知道了,他是否高興。如果你是使用者,你還會這麼做嗎?其次小米內部成立了安全與隱私委員會,涉及使用者隱私的產品都要經過委員會的評估,全部表決通過才可以。最後今年GDPR開始實施,我們花了十個月的時間,600多人蔘與按照GDPR的要求對產品進行評估。
再來講一些更常見的問題,我們手機上很多APP開啟之後它會提示我要取你的IMEI。一些敏感的使用者會點選拒絕,但很多應用如果使用者不給許可權,它就不讓你用。面對這樣一個兩難的選擇怎麼辦?可能有些使用者沒辦法,只能允許了。所以基於這個頭疼的問題,我們在手機上做了一個叫做隱私模式的東西。開啟隱私模式之後,即使使用者授權應用獲取IMEI,那它拿到的也是一個假的號碼,這樣就避免了那些應用要求使用者必須授權,使用者又不想授權,就沒法用這個應用。這個已經在MIUI系統的體驗版上上線了。
去年我們釋出了一個智慧生活的安全守護計劃,最高獎金上限是50萬元。但如果大大小小的裝置,有的複雜有的簡單,如果全部都按照50萬去,好像也不是很合理。所以,我特地去申請把這個獎勵的額度上限提高到了100萬,也希望大家去幫助我們共同來做更多的安全測試。
也是去年這個會上,雷總提出“把朋友搞的多多的,把敵人搞的少少的”,其實我們做安全也是這樣的。安全是一個生態,需要每個人共同去維護,需要產業鏈的上上下下各個環節一起去打造,不是說某一家企業能夠獨自去完成的。很多使用者最初是報著挑剔的目光去看,這樣很好,我們會多聆聽使用者的聲音,讓大家加入一起把控產品安全質量環節,哪裡有問題,我們就積極的改善哪裡,最終為所有人打磨出完美的產品。
PPT下載連結: ofollow,noindex" target="_blank">https://cnbj1.fds.api.xiaomi.com/src/xiaomi-IoT-security-conference/27%E6%97%A5IoT%E5%AE%89%E5%85%A8%E6%80%9D%E8%80%83%E4%B8%8E%E5%AE%9E%E8%B7%B5-%E9%99%88%E6%B4%8B.pdf