Answers:
[免责声明:我是一名安全/加密专家,每天都会处理此类安全架构问题。
您偶然发现了存储凭据的问题,即无人参与的进程可以访问凭据,但攻击者无法访问凭据。这是一个众所周知且非常困难的问题。
如果您的IoT设备在主板上内置了硬件密钥库(例如某些TPM),或者等效于Android硬件支持的密钥库或Apple Secure Enclave,则可以使用它。
在传统服务器上,您可以使用HSM或智能卡,但据我所知,唯一的完整软件解决方案是通过结合所有硬件设备的序列号构建的某种“硬件指纹”派生AES密钥。然后使用该AES密钥加密凭据。在同一服务器上运行的进程可以重建AES密钥并解密凭据,但是一旦从服务器中提取文件,该文件基本上是不可解密的。
物联网对此产生了影响,原因有二:
硬件序列号唯一的假设可能不成立,并且
与服务器不同,攻击者可以对设备进行物理访问,因此攻击者可能可以在设备上安装外壳来运行解密程序。
硬件加密(TPM)和“硬件指纹”加密都充其量是混淆的,因为从根本上说,如果本地进程可以解密数据,那么能够运行该本地进程的攻击者也可以解密数据。
因此,标准技巧似乎在这里不起作用。您需要问自己的第一个问题是:
Secure <--> Convenient
?这个项目在规模上位于什么位置?最终,我认为您要么需要确定security > convenience
并在每次启动后让人员输入凭据(使用类似@BenceKaulics的答案),要么您就可以决定security < convenience
并仅将凭据放在设备上,如果您愿意,可以使用一些混淆方法感觉有所不同。
物联网设备的性质使这一难题变得更加棘手。
为了完整起见,针对此问题的成熟的工业解决方案是:
这样,破坏设备的攻击者就可以打开会话,但永远无法直接访问凭据。
威胁是真实存在的,但幸运的是,您不是第一个或只有一个拥有此类安全隐患的人。
您需要的是ESP WiFi Manager。
使用此库,没有保存的会话的ESP将切换到AP模式并将托管一个Web门户。如果您使用PC或智能手机连接到此AP,则可以通过网页配置WiFi凭据。
您不必对关键信息进行硬编码,并且可以在所需的任何WiFi网络上使用设备,而无需刷新它。
怎么运行的
当您的ESP启动时,它将它设置为“站”模式并尝试连接到以前保存的访问点
如果不成功(或没有保存以前的网络),它将把ESP移至接入点模式并启动DNS和WebServer(默认IP 192.168.4.1)
使用具有浏览器功能的任何支持wifi的设备(计算机,电话,平板电脑)连接到新创建的访问点
由于使用了强制门户和DNS服务器,您将获得“加入网络”类型的弹出窗口,或者将您尝试访问的任何域重定向到配置门户
选择扫描的接入点之一,输入密码,然后单击保存
ESP将尝试连接。如果成功,它将控制权交还给您的应用。如果不是,请重新连接到AP并重新配置。
(ESP WiFi Manager文档)
是的,如果您将密码保留为纯文本,他们可以访问您的密码。
好处是许多wifi连接接口都接受哈希密码。虽然我使用的那些接受了md5散列并且md5并不是超级安全,但对于普通joe来说仍然是一个非常艰巨的挑战。根据您的配置文件,您可以声明哈希算法的名称,然后输入密码,或者使用wifi接口使用的默认值。
简单的答案-是的。可以办到。您至少必须执行某种混淆处理以提供最小的保护。