security - 如何唯一标识一个网络?

标签 security networking network-programming identity

假设我想制作一个存储数据加密的应用程序,以便只有我的应用程序能够读取它。

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

问题不是特别涉及无线网络、无线设备或Android,这是编程和网络识别的通用问题。

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

干杯。

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

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

最佳答案

有趣的问题。

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

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

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

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

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

请记住,完全有可能从网络中拉出设备,从而禁止执行远程删除。

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

关于security - 如何唯一标识一个网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5397467/

相关文章:

android - 保护应用程序数据

language-agnostic - 阻止对给定地理位置的访问

c# - GetHostAddresses 不同的错误代码

sockets - 同时使用 accept() 和 select() ?

c# - TcpClient 已建立,但 TcpClient.getStream() 失败

javascript - 网站脚本注入(inject)扫描

java - 安全存储用户名和密码

api - 保护未经身份验证的 REST API 的安全

Python 和奇怪的套接字行为

azure - 将 VNET 移至新的 RG,但 AKS 仍指向旧的 RG