2015-07-10 41 views
1

目前我正在嘗試使用NFC標籤來確定客戶端是否已到達指定位置。NFC與寫入服務器的URL和信息

我現在的解決方案很簡單,很容易上當。 NFC標籤有一個帶有GET信息的URL(service.domain/index.php?location = 1)。只需手工輸入正確的URL,即可輕鬆複製。

所以我在想什麼是我需要一些方法使NFC標籤保留唯一和「不那麼容易訪問」鍵,當所述網址在瀏覽器中打開該得到真實提交給服務器。與頁面上的表單如何生成POST數據類似,對用戶不可見。

目前關於此類文件的文檔在網上很少,所以我希望有人能提供一個解決方案。只要堅持通過用戶互聯網瀏覽器工作的原則,當他將他的設備(NFC閱讀器,電話等)與NFC標籤對齊時,它實際上可以是任何類型的解決方案。

+0

因此,在某個位置識別的想法是通過在設備上划動手機,並使用NFC,您可以傳輸某些憑據來識別用戶? –

回答

2

這看起來像是一個數字簽名工作。

而是寫的:

service.domain/index.php?location=1 

到你的標籤,你可以寫這樣的事情:

service.domain/index.php?location=1&nonce=some-number&sig=some-base64-string 

的想法是,你追加一個acending隨機數號碼的URL。隨機數不應重複使用和上升。您通過此URL構建數字簽名並添加它。

只有您有私鑰才能生成有效簽名。然而,每個閱讀器位置可能具有用於檢查簽名有效性的公共密鑰。這使URL防篡改,例如沒有人可以通過修改位置來構建有效的網址。

攻擊者仍然可以複製該URL並將其寫入不同的標記。但是,他不能改變亂碼,簽名或位置。如果您記錄了隨機數值並在使用後對其進行驗證(通過用新的隨機數和新簽名重寫標籤),您可以檢測到用系統副本欺騙系統的企圖。

您也可以將UID添加到簽名計算中。這使攻擊變得更加困難,因爲如果攻擊者想要製作副本,他還需要克隆UID(可能,但需要相當多的技術訣竅)。

這不是非常安全,但要破解這個系統需要相當多的犯罪精力和努力。

如果使用這樣的系統我建議使用橢圓曲線數字簽名,因爲他們的簽名是相當小的,甚至應該適合於小標籤。

+0

這是一個好的開始,但最大的問題可能是'重寫標籤'部分以在其上放置新的URL。因爲我有很多位置和標籤。 UID除了生成簽名之外肯定是最好的選擇。而且我最終可能會結合使用2,所以即使攻擊者重複複製,他也必須在幾天內重新開始,當我完成了常規標記重寫。 –