<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/wireless/8338

            0x00 前言


            物聯網目前是繼移動互聯網之后的又一個未來IT發展的藍海。智能設備的不斷涌現已經在不知不覺中占領我們的生活,顛覆我們的原有的思維模式,記得前幾年我還帶著一塊天梭的機械手表,近段時間地鐵好多人都佩戴iWatch等智能手表。還有智能手環、智能燈等在不斷的改變我們的生活方式。那么這些智能設備具體的IT架構是什么?他們的安全性設計如何?對于信息安全工作者,有必要研究一下。

            物聯網操作系統,其實和傳統的windows操作系統大同小異,但是經過一段時間的調研,才發現它不光由本地物聯網設備上的操作系統組成,還包括提供物聯網終端設備支持的云端架構。所以,我們的安全研究范圍鎖定在以下3個方面:

            1. IoT終端和云端通訊協議的安全
            2. 物聯網終端安全
            3. 云端IT架構的安全性

            0x01 物聯網云協議安全性分析


            針對于智能家居等物聯網設備,接入到互聯網進行數據交換,安全風險性就非常大,如果處理不好,可能就會像黑客電影中橋段:通過網絡把你家的智能門鎖打開。

            那么,物聯網操作系統具體怎么連接互聯網呢?

            其中物聯網終端(例如:燈泡)有兩種連接方式,

            1. 連接IoT gateway網關,再通過IoT gateway網關 連接家里的wifi路由器上網。
            2. 物聯網設備直接通過自己的wifi模塊(或者直接集成GPRS/3G/4G連接模塊)連接家中路由器上網。

            這兩種連接方式都有現實存在的意思,直連的一般都是大型家電設備,因為節點量比較少,互聯網可以通過物聯網協議直接控制,wifi模塊信號強。但是像插座、燈泡這種小的終端設備還是連接到IoT gateway網關中轉后再連接互聯網。

            那么物聯網協議都有哪些呢?

            那么,從商業模式上分析,大公司一般是通過移動端(手機開發SDK)、云端(建立開源物聯網云平臺)、設備端(物聯網連接硬件和軟件SDK)、然后使開發者通過眾籌方式,開發硬件,但是傳遞到云端的數據歸物聯網公司平臺擁有。最后通過自己的電商銷售渠道賣給用戶。通過上述流程物聯網生態系統,擁有物聯網大數據,在資本市場上大撈一筆。

            很顯然,如果要研究物聯網通訊協議,就必須了解做為展示和輸入輸出設備的手機端物聯網SDK調用,物聯網設備端硬件支持的協議SDK、以及云端對以上各種協議支持的具體體現。

            國外市面上有很多開源的協議。

            國內在這些開源協議之上有建立了一層物聯網操作系統。

            那么,我們先分析一下其相關的SDK,是怎么處理數據的:

            (一)物聯網終端設計

            安全層可以看出一般在協MQTT等議棧中實現,如果協議棧中沒有實現,那只能在Application SDK API中實現。

            在終端實現其安全特性還有幾個問題要考慮:

            1. 物聯網終端的內存和硬盤都很有限。
            2. 物聯網終端電源有限,很多安全設計,例如:心跳檢測時間不能太近等。

            一般和云通訊會有Cloud key 和自己設備本身的private key。通過SSL隧道交換秘鑰。

            和云端通訊函數。

            同時,查看了iOS手機端控制部分,由于是部分開源,dot m實現函數已經屏蔽,無法了解其內部邏輯。

            小結:由于某云廠商相應的硬件端源碼開發不完全,只能看到這些,同時、強烈鄙視這種偽開源的行為。

            可以看出使用非對稱秘鑰加密傳輸數據到云端。同時,發現設置開發測試模式和生產環境的云端連接域名。當然,證書驗證等沒看到。

            (二)物聯網云端設計

            云端設計、一般要有幾個模塊要考慮:

            1. 賬號處理模塊:主要是和用戶互交。
            2. 設備管理模塊:綁定用戶和設備的關系。
            3. OTA模塊:升級固件功能
            4. 定時執行模塊:定期執行相關任務
            5. 大數據分析模塊:這個要看具體的應用了,比如說:全國路由器信號排行榜,以及你打敗了多少人的路由器。等

            當然,還有很多功能,就不一一講解。先舉例說明一下OTA模塊

            No.1 OTA(Over The Air) 服務 推送文件到設備端。

            文件存儲服務。向BlobStore服務上傳文件。

            提供存儲服務是為了進行固件升級。同時,物聯網硬件開發商可以在自己的私有云中上傳固件,然后存儲到物聯網云平臺,更新給聯網的物聯網終端設備。

            No.2 設備管理模塊:這里面設計一個帶時間限制分享碼(其實就是web服務中的session的意思)

            設計設備的管理員用戶獲取設備的分享碼。

            小結:云端對多租戶的設計,主要體現在不同DNS域名隔離不同的企業物聯網應用。服務器端么法發現使用HTTPS的通訊協議,難道是云服務商為了節省成本?設備分享碼的設計確實很前衛。

            0x02 物聯網操作系統安全建議


            目前,物聯網還在發展之中,把通訊協議直接裸奔在固件上也無可厚非。但是還是有幾條提醒各位物聯網玩家。

            1. 當物聯網設備無網絡連接時、云端立刻通知。
            2. OTA升級、出現重大安全漏洞要廠商直接推送更新固件。
            3. 設置強密碼Policy 要求12位以上,同時使用數字、特殊符號和字母的組合。如果條件允許盡量使用雙因素方式認證(Two-factor authentication)
            4. 使用SSL/TLS連接云端傳輸數據(HTTPS+ AES 128bit encryption),盡量不要在物聯網終端設備上存儲數據,以免被黑。如果必須在本地存儲請加密,同時加密備份到云端一份。如果再安全一點可以使用TPM處理,把秘鑰存儲到類似U盤的設備當中做認證。
            5. 如果使用SSL,檢查兩端(服務器和客戶端)的證書,不允許使用自簽名證書。
            6. 云端處理好多租戶問題,盡量做到操作系統層面、數據層面的隔離。

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线