2011-03-22 185 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