2011-03-22 190 views
3

假設我想創建一個應用程序,其中存儲的數據被加密,所以只有我的應用程序能夠讀取它。如何唯一標識一個網絡?

但我希望僅當用戶在特定網絡上時才能訪問應用程序。 例如,該應用程序是一款處理醫院醫療記錄的Android應用程序。 如何確保設備連接到醫院的網絡?這個想法是,在這個網絡之外,應用程序將無法工作。

這個問題與無線網絡,無線設備或Android沒有特別的關係,這是一般的編程和網絡識別。

證書可以這樣做嗎?我對此很陌生。 網絡「標識符」是否可能是僞造的?例如,我很確定WiFi SSID很容易僞造。

乾杯。

更多詳細信息: 我們假設本地數據的點不是用於「離線模式」,而是爲了避免網絡延遲。在這種情況下,只有當連接到特定網絡時,數據才能保持可訪問,以防設備被盜。

但是,如果沒有辦法確定網絡的身份......那麼服務器如何回答這個問題:「我是在正確的網絡上的Heya?」如果沒有反應出來,我知道我不是在正確的? (或者說服務器沒有迴應...)但是,如果應用程序被黑客攻擊,那也可能是假的。

+0

是啊感謝@blowdart,並對此表示歉意。 – Arnaud 2011-03-22 20:37:16

回答

4

有趣的問題。

一般來說,本地存儲數據的目的是爲了在「脫機」時可以訪問它。

但是,我認爲這裏可能存在一些根本的誤解。想必這樣做的唯一原因可能是試圖阻止被盜設備放棄它的祕密。事實是,你不能。如果設備不再處於您的物理控制之下,那麼在它可以被黑客入侵之前只是時間問題。

如果我們正在談論敏感數據,它不應該存儲在設備上。相反,設備應在需要時從服務器檢索所需的數據,並在不再需要時在本地刪除它。

您希望設備僅在連接到本地網絡時才工作,這意味着您可以實現此目標。

作爲一個方面說明,這就是爲什麼諸如「遠程擦拭」存在的原因。這也是爲什麼每當設備連接到您的網絡時,都需要測試其身份驗證和授權。要點是,如果有人報告設備丟失或被盜,那麼你需要能夠禁止它從你的網絡,如果設備支持這一點,遠程禁用它。

請記住,完全可以從網絡中拉出設備並因此禁用遠程擦除執行。


因爲這樣,絕對沒有辦法確保設備在給定的網絡上。所有這些都可以僞造。設置給定名稱的路由器並將其更改爲MAC以僞裝成任何名稱併爲其分配特定IP地址是很簡單的。對於所有的意圖和目的,它可以看起來完全像一個接入點,你可以......這是正常運行的無線路由器,你可以在本地電腦商店購買。

+0

同意誤解的事實。如果本地數據的要點是它可以在離線狀態下訪問,試圖識別網絡是毫無意義的... – Arnaud 2011-03-22 20:50:47

+0

感謝您的「遠程擦拭」,我也會關注一下。 – Arnaud 2011-03-22 21:07:52

1

任何網絡都可以複製另一個的SSID,因此不可靠。您可以開始使用SSID和已知路由器的MAC地址的組合,但可以複製MAC地址(儘管不在同一網絡中),因此也不起作用。

坦率地說,除非有問題的無線網絡正在使用證書來識別設備,否則您將沒有可靠的方式來做到這一點,即使這樣,假設您在應用程序中獲得使用wifi的證書網絡在網絡認證期間返回。

1

也許你可以使用IPSec隧道。許多路由器和防火牆都支持IPSec。我在想什麼是這樣的:

       ----------------------------------- 
          /   IPSec tunnel   \ 
         +---------+        \ 
        A | IPSec | B  Untrusted    \ 
trusted network -------| capable |------- Networks ----------- Your application 
         | router |  Internet, etc. 
         +---------+ 

網關路由器/防火牆提供了可信網絡接入具有本身和應用程序之間配置IPSec隧道。在路由器和應用服務器上,隧道看起來像另一個網絡接口。路由器上的路由將您的應用程序的流量導向通道接口。只有當到達接口A(即可信網絡)時,才能在路由器上使用過濾器來確保將流量轉發到隧道。到達接口B的流量只能通過路由器上的過濾器丟棄,因爲它顯然是錯誤的。

如果您的應用程序將其偵聽套接字綁定到通道接口,您將知道您只接受通過通道接收的連接。

您可以使用任何想要加密和認證機制的組合來確保流量安全。大多數IPSec實現都支持你想要的任何東西。

+0

+1爲繪圖:) – Andy 2012-11-10 17:22:32

3

您可以編寫程序,以便解密數據的密鑰存儲在醫院網絡上的服務器上。如果你的程序從不存儲密鑰,它會讓別人在網絡外訪問設備數據變得更加困難(雖然不是不可能)。

正如克里斯指出的遠程擦拭絕對是可取的。您可以放入邏輯,以便如果設備在未連接到網絡時嘗試讀取數據,則會擦除數據(這可能會導致意外擦除)。列入黑名單也很好,所以如果設備嘗試重新連接到網絡,則基本上可以將其刷新。有一件事情會非常糟糕,如果你的網絡出現故障,並且你的設備意外地被擦掉了。

+0

第一段有正確的想法 - 安全地做到這一點的唯一方法是確保技術上讀取數據所需的東西只能在正確的網絡上使用。你應該使用許多密鑰 - 每個記錄一個 - 然後讓應用程序在使用它之後立即忘記密鑰。 – caf 2011-03-23 01:09:16

+0

+1。由於出於謹慎的考慮,我希望在發生網絡中斷時意外擦除設備。 – NotMe 2011-03-23 14:14:13

+0

但是,當從服務器檢索到密鑰時,我會受到中間人攻擊。對 ? – Arnaud 2011-03-25 18:45:39