物聯網操做系統安全性分析

物聯網操做系統安全性分析

 

0x00 前言


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

物聯網操做系統,其實和傳統的windows操做系統大同小異,可是通過一段時間的調研,才發現它不光由本地物聯網設備上的操做系統組成,還包括提供物聯網終端設備支持的雲端架構。因此,咱們的安全研究範圍鎖定在如下3個方面:github

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

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


針對於智能家居等物聯網設備,接入到互聯網進行數據交換,安全風險性就很是大,若是處理很差,可能就會像黑客電影中橋段:經過網絡把你家的智能門鎖打開。web

那麼,物聯網操做系統具體怎麼鏈接互聯網呢?windows

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

  1. 鏈接IoT gateway網關,再經過IoT gateway網關 鏈接家裏的wifi路由器上網。
  2. 物聯網設備直接經過本身的wifi模塊(或者直接集成GPRS/3G/4G鏈接模塊)鏈接家中路由器上網。

這兩種鏈接方式都有現實存在的意思,直連的通常都是大型家電設備,由於節點量比較少,互聯網能夠經過物聯網協議直接控制,wifi模塊信號強。可是像插座、燈泡這種小的終端設備仍是鏈接到IoT gateway網關中轉後再鏈接互聯網。服務器

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

那麼,從商業模式上分析,大公司通常是經過移動端(手機開發SDK)、雲端(創建開源物聯網雲平臺)、設備端(物聯網鏈接硬件和軟件SDK)、而後使開發者經過衆籌方式,開發硬件,可是傳遞到雲端的數據歸物聯網公司平臺擁有。最後經過本身的電商銷售渠道賣給用戶。經過上述流程物聯網生態系統,擁有物聯網大數據,在資本市場上大撈一筆。session

很顯然,若是要研究物聯網通信協議,就必須瞭解作爲展現和輸入輸出設備的手機端物聯網SDK調用,物聯網設備端硬件支持的協議SDK、以及雲端對以上各類協議支持的具體體現。架構

國外市面上有不少開源的協議。函數

  • AllSeen Alliance AllJoyn
  • 開放互聯網聯盟 Open Interconnect Iotivity

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

  • 技術型的華爲LiteOS,重點在嵌入式物聯網設備。(僞開源,到目前爲止github上沒看到上傳的源碼)
  • 業務型的京東智能雲,重點是經過衆籌吸引硬件開發團隊合做。經過本身互聯網商城銷售。
  • 固然還有一些創新型公司

那麼,咱們先分析一下其相關的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) 服務 推送文件到設備端。

  • @param $deviceId 整數,是要被升級的設備的邏輯ID。
  • @param $toVersion 字符串,表示升級的目標版本號,如:2-0-3。
  • @param $OTAHash字符串, 驗證邏輯固件。

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

  • @param $bucket 給定的類別名字。
  • @param $filePath 要被上傳的文件的本地路徑。
  • @param $name 能夠指定文件被上傳後在服務器端的存儲名字。若是未指定,則使用從$filePath在提取到的文件名。

提供存儲服務是爲了進行固件升級。同時,物聯網硬件開發商能夠在本身的私有云中上傳固件,而後存儲到物聯網雲平臺,更新給聯網的物聯網終端設備。

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

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

  • @param $deviceId 要操做的對象的邏輯ID。整數。
  • @param $user ACUser對象,表示該設備的管理員用戶。
  • @param $timeout 生成的分享碼的有效時長。以秒爲單位。

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

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


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

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