Как реализовать клиент mqtt в настольном приложении, не раскрывая подробности mqtt - PullRequest
0 голосов
/ 21 января 2019

Я делаю настольное приложение (python), которое может взаимодействовать с приложением для Android, используя оба клиента mqtt. Я хочу знать, как защитить или скрыть мои данные mqtt (имя пользователя, пароль, ip, порт) от всех, кто продолжает искать приложение для настольного компьютера.

В настоящее время у меня есть данные сервера mqtt (имя пользователя, пароль, IP, порт) в файле config.ini, который доступен всем, кто хочет посмотреть. Я подумал о шифровании конфигурационного файла или о жестком кодировании деталей в самом коде и преобразовании кода в exe или его запутывание. Но, просматривая всю информацию в Интернете, кажется, что если кто-то серьезно пытается, обфускацию или упаковку кода можно легко реконструировать, и любое шифрование небезопасно, так как опять же, ключ шифрования может быть получен и из кода, созданного обратным способом.

Способ, который был предложен в разных ссылках для другого (но похожего) сценария, заключался в том, чтобы вообще не включать подробности на стороне клиента, а сохранять их на стороне сервера и извлекать их с помощью вызова API. Я тоже могу это сделать. Но я не уверен, что это послужит цели, так как если кто-то может прочитать код, он также может вызвать этот API и получить подробности mqtt.

Так как с этим справиться? Если можно обеспечить защиту на основе API, то как это сделать?

1 Ответ

0 голосов
/ 21 января 2019

Вы подходите к этому не с того конца. Вы не можете защитить настольное приложение, если кто-то может получить к нему доступ к файлам!

Вы или кто-либо из сотрудников службы безопасности должны контролировать брокера MQTT. Идентификаторы пользователя и пароли должны быть учетными данными конечного пользователя, которые они вводят при запуске настольного приложения (а не теми, которые были выделены вами).

Наконец, вам необходимо использовать сертификат SSL / TLS, чтобы учетные данные пользователя передавались в зашифрованном виде между настольным приложением и брокером MQTT.

Если вы выполните вышеизложенное, то наличие IP-адреса и номера порта в файле конфигурации не будет проблемой, поскольку вы защитили брокер MQTT и используете SSL / TLS для шифрования учетных данных пользователя.

Ваш подход к безопасности в первую очередь хорош, вы просто работаете не с того конца.

...