【问题标题】:How to uniquely identify a network?如何唯一标识一个网络?
【发布时间】:2011-03-22 20:31:05
【问题描述】:

假设我想创建一个应用程序,其中存储的数据被加密,因此只有我的应用程序能够读取它。

但我希望仅当用户在特定网络上时才能访问应用程序。 例如,该应用程序是一个处理医院病历的 Android 应用程序。 如何确保设备连接到医院的网络?这个想法是,在这个网络之外,应用程序将无法运行。

该问题与无线网络、无线设备或 Android 无关,这与编程和网络识别有关。

证书可以做到吗?我是新手。 网络“标识符”是否可以伪造?例如,我很确定 WiFi SSID 很容易伪造。

干杯。

更多详情: 让我们假设本地数据的点不是为了“离线模式”,而是为了避免网络延迟。在这种情况下,只有连接到特定网络时,数据才需要保持可访问性,以防设备被盗。

但是,如果无法确定网络的身份……那么可以回答“嘿,我在正确的网络上吗?”问题的服务器呢?如果没有回应,我知道我不是正确的吗? (或者服务器只是没有响应......)但是,如果应用程序被黑客入侵,那也可能是伪造的。

【问题讨论】:

  • 是的,谢谢@blowdart,对此感到抱歉。

标签: security networking network-programming identity


【解决方案1】:

有趣的问题。

一般来说,在本地存储数据的目的是为了在“离线”时可以访问它。

但是,我认为这里可能存在一些潜在的误解。据推测,您想要这样做的唯一原因是试图防止被盗设备泄露其秘密。事实是,你不能。如果设备不再处于您的物理控制之下,那么它被黑客入侵只是时间问题。

如果我们谈论的是敏感数据,则不应将其存储在设备上。相反,设备应在需要时从您的服务器检索所需的数据,并在不再需要时在本地将其删除。

您希望设备仅在连接到本地网络时才能工作这一事实意味着您可以实现此目标。

附带说明,这就是存在诸如“远程擦除”之类的东西的原因。这也是为什么每次设备连接到您的网络时都需要测试其身份验证和授权的原因。关键是如果有人报告设备丢失或被盗,那么您需要能够从您的网络中禁止它,并且如果设备支持此功能,请远程禁用它。

请记住,完全有可能从网络中拉出设备并因此禁用远程擦除执行。


除此之外,您绝对无法确保设备位于给定的网络上。所有这些都是可以伪造的。设置一个给定名称的路由器并将其 MAC 更改为伪装成任何东西,并为其分配特定的 IP 地址,这有点微不足道。出于所有意图和目的,它可以看起来与您拥有的接入点完全一样......这只是您可以在当地计算机商店购买的普通无线路由器。

【讨论】:

  • 同意误解的事实。如果本地数据的重点是离线也可以访问,那么尝试识别网络是没有意义的……
  • 感谢“远程擦除”,我也去看看。
【解决方案2】:

您可以编写程序,以便将解密数据的密钥存储在医院网络上的服务器上。如果您的程序从不存储密钥,它会使某人更难(尽管并非不可能)在网络之外访问设备的数据。

正如 Chris 指出的那样,远程擦除肯定是可取的。您可以输入逻辑,以便如果设备在未连接到网络时尝试读取数据,它会擦除​​数据(这可能会导致意外擦除)。黑名单也很好,因此如果设备尝试重新连接到网络,您基本上可以将其变砖。一件非常糟糕的事情是,如果您的网络中断,并且您的所有设备都被意外擦除了。

【讨论】:

  • 第一段有正确的想法 - 安全地做到这一点的唯一方法是确保在技术上需要读取数据的东西只能在正确的网络上使用。您应该使用多个密钥(例如,每条记录一个),并让应用程序在使用后立即忘记密钥。
  • +1。出于谨慎起见,我希望在网络中断的情况下意外擦除设备。
  • 但是当从服务器检索密钥时,我会受到中间人攻击。对吧?
  • 我绝对不是安全专家,但您可以使用安全的密钥传输方法 (SSL)。即使有人可以嗅探到密钥,他们也需要访问设备和您的解密方法程序才能获取数据。
【解决方案3】:

任何网络都可以复制另一个网络的 SSID,因此这是不可靠的。您可以开始使用 SSID 和已知路由器的 MAC 地址的组合,但 MAC 地址可以重复(尽管不在同一个网络上),所以这也不起作用。

坦率地说,除非有问题的无线网络正在使用证书来识别设备,否则您将没有可靠的方法来做到这一点,即使这样,这也假设您在应用程序中有一种方法来获取使用 wifi 网络的证书在网络身份验证期间返回。

【讨论】:

    【解决方案4】:

    也许您可以使用 IPSec 隧道。许多路由器和防火墙都支持 IPSec。我的想法是这样的:

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

    为受信任网络提供访问权限的网关路由器/防火墙在其与您的应用程序之间配置了一条 IPSec 隧道。在路由器和您的应用程序服务器上,隧道看起来就像另一个网络接口。路由器上的路由将应用程序的流量引导到隧道接口。可以在路由器上使用过滤器来确保流量仅在到达接口A(即受信任的网络)时才被转发到隧道。到达接口B 并发往您的应用程序的流量可以被路由器上的过滤器丢弃,因为它显然走错了路。

    如果您的应用程序仅将其侦听套接字绑定到隧道接口,您将知道您只接受通过隧道接收的连接。

    您可以使用任何加密和身份验证机制的组合来确保流量安全。大多数 IPSec 实现几乎都支持您想要的任何东西。

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 2017-01-02
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 2017-12-06
      相关资源
      最近更新 更多