一、昨天乙個做共享汽車的朋友向我諮詢關於藍芽開車門的安全方案(因為最近他們公司的伺服器被黑客攻擊,所以所有研發專案都要考慮安全性了)。(2023年12月8日)
**過程:
1、根據 ble的特點,需要相容舊裝置的話資料報就不能超過20位元組,並且現在需要的是安全方案,那就要用到aes128,所以資料報定在16位元組內是必須的。
2、為避免資料被直接copy,這樣就必須包含乙個變化的引數(隨機碼、時間戳、流水號等)。然而手機終端每次都可能不一樣的,又怎樣知道對方的隨機碼呢?(這裡當然是可以通過網路來同步了,但是車輛和手機都是無線裝置,是否有訊號、網路的實時性、伺服器癱瘓等都是致命硬傷,所以不得考慮走網路通道)此時想到可以用rtc時間(手機utc), 其中手機時間誤差是比較小的, 而ble模組可以設定一定的誤差範圍就可以了,只要在每次合法連線後都同步時間,那時間就不會造成累積誤差了。可是這樣在短時間內還是有可能被直接copy資料進行同樣的操作(因為有時間誤差)。這樣就必須有流水號來區分了。
3、以上所述:要用到流水號,若有流水號了,那時間戳就不一定必須的了,並且流水號又應該怎樣同步呢?問題似乎又回到了原點。
怎樣同步流水號?怎樣同步流水號?怎樣同步流水號?......
4、還有一些小問題。
停車場裡面有多輛共享汽車怎麼辦?廣播裡面包含車牌號不就得了。
這全部的80位元組的資料該怎麼傳輸?這關係到協議的操作流程問題。按照合理的思路,整個流程應該要有「確權」的概念。就是連線上以後,要經過1-3次的握手,確定對方的合法性,確權後在連線斷開前的所有操作都是合法的。這樣,確權後這80位元組的資料想怎麼傳就怎麼傳了(當然也要經過aes128加密了)。
到此,基本上整個流程都是完整的、安全的了,除非aes被破解或者key洩露,否則無人能破了。
現在梳理一些整個流程:
1、車載ble模組廣播加密後的車牌和流水號資訊
2、手機終端通過廣播的車牌資訊連線到目標車輛,然後通過廣播的流水號「確權」,然後進行正常的通訊、操作。
3、連線斷開後ble模組更新「流水號」再開啟新的廣播。
Accordion控制項動態資料繫結案例
accordion屬性介紹 selectedindex 已伸展開的accordionpane控制項的索引號。headercssclass 作用於標題的css類名。它也可以指定給accordion 控制項的headercssclass屬性以此作為所有accordionpanes控制項的預設屬性,或者直...
167 傳輸協議 傳輸層
tcp基於tcp協議可以建立穩定連線的點對點的通訊。這種通訊方式實時 快速 安全性高,但是很占用系統的資源。tcp transfer control protocol 是面向連線的,所謂面向連線,就是當計算機雙方通訊時必需經過先建立連線,然後傳送資料,最後拆除連線三個過程。tcp在建立連線時又分三步...
網路傳輸協議
transmission control protocol 傳輸控制協議 amf action message format 是flash與服務端通訊的一種常見的二進位制編碼模式,其傳輸效率高,可以在http層面上傳輸。現在很多flash webgame都採用這樣的訊息格式。amf協議是基於http...