如何在不泄露 mqtt 细节的情况下在桌面应用程序中实现 mqtt 客户端
How to implement mqtt client in a desktop application without revealing mqtt details
我正在制作一个桌面应用程序 (python),它可以与 android 应用程序通信,两者都使用 mqtt 客户端。我想知道如何对继续查看桌面应用程序的任何人保护或隐藏我的 mqtt 详细信息(用户名、密码、ip、端口)。
目前我在 config.ini 文件中有 mqtt 服务器详细信息(用户名、密码、IP、端口),任何人都可以查看。我考虑过加密配置文件,或者在代码本身中硬编码细节并将代码转换为 exe 或混淆它。但是搜索互联网上的所有信息,似乎如果一个人认真尝试,代码的混淆或打包可以很容易地进行逆向工程并且任何解密都不安全,因为加密密钥也可以从逆向工程代码中获得。
在不同链接中针对不同(但相似)场景建议的一种方法是根本不在客户端包含详细信息,而是将它们保留在服务器端并通过 API 调用获取它们。我也能做到。但我不确定它是否会达到目的,好像有人可以阅读代码,他也可以调用 API 并获取 mqtt 详细信息。
那么如何处理呢?如果可以实现基于 API 的安全保护,那么该怎么做呢?
你从错误的一端接近这个。如果任何人都可以访问桌面应用程序上的文件,您就无法保护桌面应用程序!
您或安全团队中的某个人需要控制 MQTT 代理。 UserIds 和 Passwords 应该是最终用户在启动桌面应用程序时输入的凭据(而不是您分配的凭据)。
最后,您需要使用 SSL/TLS 证书,以便用户凭据在桌面应用程序和 MQTT 代理之间加密流动。
如果您执行上述操作,那么在配置文件中拥有 IP 地址和端口号不是问题,因为您已保护 MQTT 代理并使用 SSL/TLS 加密用户凭据。
你的安全第一方法很好,你只是从错误的一端开始工作。
我正在制作一个桌面应用程序 (python),它可以与 android 应用程序通信,两者都使用 mqtt 客户端。我想知道如何对继续查看桌面应用程序的任何人保护或隐藏我的 mqtt 详细信息(用户名、密码、ip、端口)。
目前我在 config.ini 文件中有 mqtt 服务器详细信息(用户名、密码、IP、端口),任何人都可以查看。我考虑过加密配置文件,或者在代码本身中硬编码细节并将代码转换为 exe 或混淆它。但是搜索互联网上的所有信息,似乎如果一个人认真尝试,代码的混淆或打包可以很容易地进行逆向工程并且任何解密都不安全,因为加密密钥也可以从逆向工程代码中获得。
在不同链接中针对不同(但相似)场景建议的一种方法是根本不在客户端包含详细信息,而是将它们保留在服务器端并通过 API 调用获取它们。我也能做到。但我不确定它是否会达到目的,好像有人可以阅读代码,他也可以调用 API 并获取 mqtt 详细信息。
那么如何处理呢?如果可以实现基于 API 的安全保护,那么该怎么做呢?
你从错误的一端接近这个。如果任何人都可以访问桌面应用程序上的文件,您就无法保护桌面应用程序!
您或安全团队中的某个人需要控制 MQTT 代理。 UserIds 和 Passwords 应该是最终用户在启动桌面应用程序时输入的凭据(而不是您分配的凭据)。
最后,您需要使用 SSL/TLS 证书,以便用户凭据在桌面应用程序和 MQTT 代理之间加密流动。
如果您执行上述操作,那么在配置文件中拥有 IP 地址和端口号不是问题,因为您已保护 MQTT 代理并使用 SSL/TLS 加密用户凭据。
你的安全第一方法很好,你只是从错误的一端开始工作。