作者:
bt0sea
·
2015/09/10 20:49
0x00 前言
物聯網目前是繼移動網際網路之後的又一個未來IT發展的藍海。智慧裝置的不斷湧現已經在不知不覺中佔領我們的生活,顛覆我們的原有的思維模式,記得前幾年我還帶著一塊天梭的機械手錶,近段時間地鐵好多人都佩戴iWatch等智慧手錶。還有智慧手環、智慧燈等在不斷的改變我們的生活方式。那麼這些智慧裝置具體的IT架構是什麼?他們的安全性設計如何?對於資訊保安工作者,有必要研究一下。
物聯網作業系統,其實和傳統的windows作業系統大同小異,但是經過一段時間的調研,才發現它不光由本地物聯網裝置上的作業系統組成,還包括提供物聯網終端裝置支援的雲端架構。所以,我們的安全研究範圍鎖定在以下3個方面:
- IoT終端和雲端通訊協議的安全
- 物聯網終端安全
- 雲端IT架構的安全性
0x01 物聯網雲協議安全性分析
針對於智慧家居等物聯網裝置,接入到網際網路進行資料交換,安全風險性就非常大,如果處理不好,可能就會像駭客電影中橋段:透過網路把你家的智慧門鎖開啟。
那麼,物聯網作業系統具體怎麼連線網際網路呢?
其中物聯網終端(例如:燈泡)有兩種連線方式,
- 連線IoT gateway閘道器,再透過IoT gateway閘道器 連線家裡的wifi路由器上網。
- 物聯網裝置直接透過自己的wifi模組(或者直接整合GPRS/3G/4G連線模組)連線家中路由器上網。
這兩種連線方式都有現實存在的意思,直連的一般都是大型家電裝置,因為節點量比較少,網際網路可以透過物聯網協議直接控制,wifi模組訊號強。但是像插座、燈泡這種小的終端裝置還是連線到IoT gateway閘道器中轉後再連線網際網路。
那麼物聯網協議都有哪些呢?
那麼,從商業模式上分析,大公司一般是透過移動端(手機開發SDK)、雲端(建立開源物聯網雲平臺)、裝置端(物聯網連線硬體和軟體SDK)、然後使開發者透過眾籌方式,開發硬體,但是傳遞到雲端的資料歸物聯網公司平臺擁有。最後透過自己的電商銷售渠道賣給使用者。透過上述流程物聯網生態系統,擁有物聯網大資料,在資本市場上大撈一筆。
很顯然,如果要研究物聯網通訊協議,就必須瞭解做為展示和輸入輸出裝置的手機端物聯網SDK呼叫,物聯網裝置端硬體支援的協議SDK、以及雲端對以上各種協議支援的具體體現。
國外市面上有很多開源的協議。
- AllSeen Alliance AllJoyn
- 開放網際網路聯盟 Open Interconnect Iotivity
國內在這些開源協議之上有建立了一層物聯網作業系統。
- 技術型的華為LiteOS,重點在嵌入式物聯網裝置。(偽開源,到目前為止github上沒看到上傳的原始碼)
- 業務型的京東智慧雲,重點是透過眾籌吸引硬體開發團隊合作。透過自己網際網路商城銷售。
- 當然還有一些創新型公司
那麼,我們先分析一下其相關的SDK,是怎麼處理資料的:
(一)物聯網終端設計
安全層可以看出一般在協MQTT等議棧中實現,如果協議棧中沒有實現,那隻能在Application SDK API中實現。
在終端實現其安全特性還有幾個問題要考慮:
- 物聯網終端的記憶體和硬碟都很有限。
- 物聯網終端電源有限,很多安全設計,例如:心跳檢測時間不能太近等。
一般和雲通訊會有Cloud key 和自己裝置本身的private key。透過SSL隧道交換秘鑰。
和雲端通訊函式。
同時,檢視了iOS手機端控制部分,由於是部分開源,dot m實現函式已經遮蔽,無法瞭解其內部邏輯。
小結:由於某雲廠商相應的硬體端原始碼開發不完全,只能看到這些,同時、強烈鄙視這種偽開源的行為。
可以看出使用非對稱秘鑰加密傳輸資料到雲端。同時,發現設定開發測試模式和生產環境的雲端連線域名。當然,證書驗證等沒看到。
(二)物聯網雲端設計
雲端設計、一般要有幾個模組要考慮:
- 賬號處理模組:主要是和使用者互交。
- 裝置管理模組:繫結使用者和裝置的關係。
- OTA模組:升級韌體功能
- 定時執行模組:定期執行相關任務
- 大資料分析模組:這個要看具體的應用了,比如說:全國路由器訊號排行榜,以及你打敗了多少人的路由器。等
當然,還有很多功能,就不一一講解。先舉例說明一下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 物聯網作業系統安全建議
目前,物聯網還在發展之中,把通訊協議直接裸奔在韌體上也無可厚非。但是還是有幾條提醒各位物聯網玩家。
- 當物聯網裝置無網路連線時、雲端立刻通知。
- OTA升級、出現重大安全漏洞要廠商直接推送更新韌體。
- 設定強密碼Policy 要求12位以上,同時使用數字、特殊符號和字母的組合。如果條件允許儘量使用雙因素方式認證(Two-factor authentication)
- 使用SSL/TLS連線雲端傳輸資料(HTTPS+ AES 128bit encryption),儘量不要在物聯網終端裝置上儲存資料,以免被黑。如果必須在本地儲存請加密,同時加密備份到雲端一份。如果再安全一點可以使用TPM處理,把秘鑰儲存到類似隨身碟的裝置當中做認證。
- 如果使用SSL,檢查兩端(伺服器和客戶端)的證書,不允許使用自簽名證書。
- 雲端處理好多租戶問題,儘量做到作業系統層面、資料層面的隔離。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!