2015-10-23 62 views
1

所以基本上我想要做的是,讓我的應用程序不斷髮送包/接收包,所以我知道我遇到過哪些人。發送數據很簡單:我只需要一個uuid來識別這是我的應用程序,以及一個數字或字符串來表示它代表的用戶。現在的問題是,我該如何確保安全?比方說,如果有人能夠檢測到它,那麼他可以嘲笑一個完全相同的包併發送出去,如果他站在我旁邊,我的應用程序會相信即使他不是(他嘲笑)他也是用戶。我如何保護數據燈塔/燈箱發送?

iBeacon絕對不符合這個要求,因爲它的uuid/major/minor很容易被檢測到。我能想到的一種方式是使用BLE而不是iBeacon將加密數據寫入服務中,那麼問題是任何人都可以輕鬆地用他檢測到的數據來模擬服務?

+0

這是一個比信標問題更多的加密問題。您需要使用共享的密鑰加密實際標識符和時間戳。 – davidgyoung

回答

0

典型的解決方案是將真實標識符與時間戳結合起來,並使用密鑰對該對進行加密。這產生了一個加密的標識符,不斷變化,除非你能解碼它,否則它是毫無價值的。一旦解碼,時間戳就可以防止重放攻擊 - 它必須在距當前時間很短的時間間隔內才能被認爲是有效的解密標識符。

顯然,這種解決方案需要發送器和接收器上的同步時鐘。

實現的細節更多的是一個加密問題,而不是一個信標問題。魔鬼在細節中。

+0

是的,您是對的。看起來像交換數據需要你的設備與應用程序連接你得到的信號,它最多隻能連接7個。而且,我只是看到有人發佈了一個答案,你的應用程序不應該與其他設備連接,如果你希望你的應用既是外設又是核心?我的情況是,當我去街上時,我需要不斷地發送和獲取數據,並且一次又一次地與人見面,這是不可能連接到每個設備的權利?(讓我們假設他們都安裝了這個應用程序)。 – lemondeer

+0

是否有解決方案,我可以讓這個應用程序發送/接收包在同一時間,而不需要連接時,當我檢測到他們?我想要的就像一個過濾器,保持過濾數據並保存用戶ID,同時保持標識符/ user_id的安全。謝謝大衛! – lemondeer

+0

您不需要建立連接來執行此操作。加密標識符可以由信標設備以僅傳輸模式發送。您也可以以明文形式發送時間戳(除了用於創建加密標識符外),因此信標不需要有實時時鐘。這樣,接收設備(例如電話)簡單地解密加密的標識符,並且驗證該加密的有效載荷內的時間戳在以明文形式發送的時間戳的適當時間段內。如果是這樣,您可以信任加密的有效負載內的實際標識符。 – davidgyoung