如何在不公开mqtt详细信息的情况下在桌面应用程序中实现mqtt客户端

时间:2019-01-21 16:17:10

标签: security client mqtt

我正在制作一个可以同时使用mqtt客户端与Android应用程序进行通信的桌面应用程序(python)。我想知道如何保护或隐藏任何继续查看桌面应用程序的人的mqtt详细信息(用户名,密码,ip,端口)。

当前,我在config.ini文件中包含mqtt服务器详细信息(用户名,密码,IP,端口),任何想看的人都可以看到。我考虑过加密配置文件,或在代码本身中对细节进行硬编码,然后将代码转换为exe或对其进行混淆。但是,在Internet上搜索所有信息之后,似乎如果一个人认真尝试,代码的混淆或打包就可以轻松地进行逆向工程,而且任何加密都不是安全的,加密密钥也可以从逆向工程代码中获得。 / p>

在针对不同(但相似)场景的不同链接中建议的一种方法是完全不包含客户端详细信息,而将其保留在服务器端并通过API调用获取它们。我也可以但是我不确定这是否会达到目的,就像有人可以阅读代码一样,他也可以调用该API并获取mqtt详细信息。

那么如何处理呢?如果可以完成基于API的安全保护,那么该怎么做?

1 个答案:

答案 0 :(得分:0)

您正在从错误的方向接近这个目标。如果任何人都可以访问桌面应用程序,则不能保证其安全!

您或安全团队中的某人需要控制MQTT代理。用户名和密码应该是他们在启动桌面应用程序时输入的最终用户的凭据(而不是您分配的凭据)。

最后,您需要使用SSL / TLS证书,以便用户凭据在桌面应用程序和MQTT代理之间进行加密。

如果执行上述操作,则配置文件中的IP地址和端口号不是问题,因为您已保护MQTT代理并使用SSL / TLS加密用户凭据。

您首先采用的安全方法是好的,您只是从错误的角度进行工作。