Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何唯一地标识网络?_Security_Networking_Network Programming_Identity - Fatal编程技术网

Security 如何唯一地标识网络?

Security 如何唯一地标识网络?,security,networking,network-programming,identity,Security,Networking,Network Programming,Identity,假设我想制作一个应用程序,其中存储的数据是加密的,因此只有我的应用程序才能读取数据 但是,我希望仅当用户位于特定网络上时才能访问该应用程序。 例如,该应用程序是一个Android应用程序,用于处理医院的病历。 如何确保设备已连接到医院网络?这个想法是,在这个网络之外,这个应用程序将无法工作 这个问题与无线网络、无线设备或Android没有特别的关系,这是编程和网络识别的一般问题 证书能做到这一点吗?我是新来的。 网络“标识符”是否可以伪造?例如,我很确定WiFi SSID很容易伪造 干杯 更多详

假设我想制作一个应用程序,其中存储的数据是加密的,因此只有我的应用程序才能读取数据

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

这个问题与无线网络、无线设备或Android没有特别的关系,这是编程和网络识别的一般问题

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

干杯

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


但是如果无法确定网络的身份。。。如果一台服务器能回答“嘿,我在正确的网络上吗?”的问题,如果没有回答,我知道我在错误的网络上,那该怎么办?(或者服务器没有响应…)但是,同样,如果应用程序被黑客攻击,也可能是伪造的。

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

坦率地说,除非所讨论的无线网络使用证书来识别设备,否则您将没有可靠的方法来识别设备,即使这样,这也假设您在应用程序中有方法获得使用的证书,wifi网络在网络身份验证期间返回。

有趣的问题

一般来说,本地存储数据的目的是在“脱机”时访问数据

然而,我认为这里可能有一些潜在的误解。你这么做的唯一原因大概是为了防止被盗设备泄露其秘密。事实是,你不能。如果设备不再受你的物理控制,那么它被黑客入侵只是时间问题

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

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

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

请记住,完全可以从网络中拉出设备,从而禁用远程擦除执行



这样一来,您就完全无法确保设备位于给定的网络上。所有这些都是假的。设置一个给定名称的路由器,并将其MAC更改为伪装成任何名称,并为其分配特定的IP地址,这有点琐碎。出于所有的意图和目的,它可以看起来像一个接入点,你有。。。这只是普通的无线路由器,你可以在当地的电脑商店买到。

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

                             ----------------------------------- 
                            /            IPSec tunnel           \
                       +---------+                               \
                     A |  IPSec  | B      Untrusted               \
trusted network -------| capable |-------  Networks  ----------- Your application
                       | router  |      Internet, etc.
                       +---------+
为受信任网络提供访问的网关路由器/防火墙在其自身和应用程序之间配置了IPSec隧道。在路由器和应用服务器上,隧道看起来像另一个网络接口。路由器上的路由将应用程序的流量定向到隧道接口。路由器上可以使用过滤器,以确保只有当流量到达接口
A
(即受信任网络)时,才将流量转发到隧道。到达接口
B
并发送到应用程序的流量可能会被路由器上的过滤器丢弃,因为它显然走错了方向

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


您可以使用加密和身份验证机制的任何组合来确保通信安全。大多数IPSec实现都支持您想要的任何内容。

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


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

是的,谢谢@blowdart,对此表示抱歉。同意这个误解事实。如果本地数据的要点是可以在脱机时访问,那么尝试识别网络是毫无意义的……多亏了“远程擦除”,我也会看一看。第一段有一个正确的想法——安全地做到这一点的唯一方法是确保技术上需要的东西可以重新访问