iT邦幫忙

0

物聯網應用如何驗證連線來源?

假設現在一個情境
物聯網裝置為Arduino+wifi模組+溫度感測器,
透過http存資料到資料庫。
請問從物聯網裝置到http這段,如何安全傳輸?
例如對以下網址進行HTTP GET,由addData.php存資料

http://example.com/addData.php?temp=15.3

請問如何對來源做驗證?如何判斷是公司出去的產品,是像web應用一樣檢查token嗎?這樣是否在物聯網裝置內要時不時地去要token?
我知道web的session、Authentication。但這些都是有"人為"操作時會有的,例如登入動作。
但物聯網裝置應該是寫在程式內自動設定處理這些問題,所以不會有"人為"的操作,若寫死取得token的方法在物聯網裝置內,相當於原碼流出就GG了?
以上的都是自己想像的世界,懇請有經驗的各位教導相關知識。

harrytsai iT邦新手 3 級 ‧ 2020-10-16 00:09:34 檢舉
目前大多數的應用,都是將每批網卡資料匯入後台去做管理,而前端只會傳特定參數回來,要考慮的並不是資料的安全傳輸,而是別人是否知道你的參數定義
2
通靈亡
iT邦研究生 4 級 ‧ 2020-10-15 09:37:30
最佳解答

你可以參考這篇論文
內容是關於IOT的認證機制
裡面第七頁到第八頁有講到不同層的驗證架構與方式,可以慢慢研究
https://www.mdpi.com/1424-8220/19/5/1141/pdf

wrxue iT邦新手 2 級 ‧ 2020-10-15 09:47:04 檢舉

感謝大大不藏私,2019的論文還蠻新的,有空會拜讀的!

QQBoxy iT邦新手 5 級 ‧ 2020-10-15 09:49:29 檢舉

看起來是一篇 Review Paper 感覺很不錯,這次鐵人賽的內容還沒來得及寫到這個,也許之後有機會還可以再來寫,謝謝分享。

0
浩瀚星空
iT邦超人 1 級 ‧ 2020-10-15 09:09:59

基本會先檢查一下來源的標頭檔是否有存在可供辨識的參數。
在無可供辨識變數的情況下。

就只剩下ip判斷了。

提供給你參考。

wrxue iT邦新手 2 級 ‧ 2020-10-15 09:25:03 檢舉

若判斷IP是否在清單內,感覺有困難,很難追蹤實際產品到底裝到哪個IP上,除非請客戶設定IP...但使用過的物聯網裝置好像都沒這麼麻煩

用ip當然是下下策了。因為這樣就如你說的。得要先判斷ip位置在哪下去設定。且如果碰上dhcp分配式的就很麻煩了。

但一般來說,連線裝置都會有其對應的裝置值才對。
能找到該裝置值(如token)是最佳的方式。

用ip是最後不得已的辦法。

其實是還有一招啦,可以拿網卡mac值來處理。

以前曾經網咖系統有這樣搞過。

0
QQBoxy
iT邦新手 5 級 ‧ 2020-10-15 09:20:51

有些產品會生成 Token 但也不是都有,
像是小米石頭掃地機器人就有 Token
如果擔心 Token 被攔截也可以加上 SSL 連線,
其實我也想知道物聯網這個部分還有什麼方法可以防範,
但目前看起來 DIYGeek 們好像也只有在區網跑,
所以大多都沒有做特別的防護。

看更多先前的回應...收起先前的回應...
wrxue iT邦新手 2 級 ‧ 2020-10-15 09:26:10 檢舉

加上SSL連線防攔截是沒問題,但若真的有心人士(且很高端)逆向出程式碼,Token的產生函數可能就會流出?

通靈亡 iT邦研究生 4 級 ‧ 2020-10-15 09:33:39 檢舉

讓Token有時效性,過一段時間後IOT從Server那邊重新取得
就算拿掉Token產生的函數也沒用,只有在Server端紀錄有效的Token才能存取資料

QQBoxy iT邦新手 5 級 ‧ 2020-10-15 09:36:46 檢舉

我覺得很高端的問題應該可以忽略,只要能夠防護住大部分就算成功了,硬體只要賣出去都會遇到這個問題,就像 Dongle 還沒有看過完美不被破解的。

wrxue iT邦新手 2 級 ‧ 2020-10-15 09:46:20 檢舉

通靈亡:
拿到Token產生的函數(跟server拿token的步驟與所需資訊)後,不是就可以偽造成IOT裝置的角色,去跟server拿token了嗎?這樣拿到的token應該也是有效的?
QQBoxy:
你說的情況我可以理解。

通靈亡 iT邦研究生 4 級 ‧ 2020-10-15 09:53:24 檢舉

所以,不能每個人都可以跟Server拿Token
可以使用OpenID或其他OAuth的驗證機制達成

QQBoxy iT邦新手 5 級 ‧ 2020-10-15 12:02:34 檢舉

直接採用 MQTT 這類的協定,是不是會比較容易些? 至少有 username、password 再加上 TLS 來把關:
https://www.ibm.com/support/knowledgecenter/zh-tw/SSFKSJ_7.5.0/com.ibm.mm.tc.doc/tc00150_.htm

0
japhenchen
iT邦高手 1 級 ‧ 2020-10-15 09:58:06

可以在設備呼叫API時傳入預存或可自行識別的設備碼上的TOKEN並加鹽加密,一起POST回伺服器,就不用擔心是否是其他人偷送或爬蟲所為

我要發表回答

立即登入回答