Пароль MD5 в Sketch

Я играю с обновлениями Over The Air (OTA) в своем LoLin. Я могу подключиться к своему маршрутизатору, и OTA-обновления работают хорошо.

Мне неудобно хранить SSID и пароль маршрутизатора WiFi в незашифрованном виде в каждом скетче. Могу ли я вместо этого сохранить зашифрованный пароль для использования в WiFi.begin()?

Например, в Linux есть wpa_pasphrase, который генерирует 32-байтовое число, представляющее собой зашифрованную версию пароля, которую можно безопасно хранить в файлах конфигурации в виде открытого текста.

, 👍0

Обсуждение

вы можете позволить esp8266 сохранить пароль. см. библиотеку WiFiManager, @Juraj


4 ответа


Лучший ответ:

2

Могу ли я вместо этого сохранить хэш пароля MD5

Нет. MD5 — это алгоритм «лазейки». Это в одну сторону. Вы можете создать хэш из пароля, но вы не можете создать пароль из хэша.

Вы можете зашифровать его с помощью AES, но вам понадобится ключ AES в вашем скетче, чтобы расшифровать пароль, что просто перенесет проблему в другое место.

Обычно в реальной ситуации в скетче нет ни SSID, ни пароля. Вместо этого вы должны создать систему конфигурации, которая позволит вам устанавливать (и, конечно же, изменять) как SSID, так и пароль во время выполнения, а также где-то хранить данные (например, в EEPROM или в файле в SPIFFS).

Возможно, вы захотите взглянуть на WiFiManager, который автоматизирует этот процесс для вас.

,

Я переформулирую вопрос, чтобы удалить «MD5». На самом деле я надеюсь, что это эквивалент команды Linux wpa_passphrase, которая генерирует 32-байтовое зашифрованное число, которое я могу хранить в файлах конфигурации в виде открытого текста вместо сохранения своего пароля., @KDM

@KDM То же самое применимо - все, что вы делаете, это перемещаете проблему. В этом случае еще хуже, поскольку результатом является фактический ключ, который используется для подключения, а не только исходные данные, которые генерируют его внутри., @Majenko


1

Я приветствую ваше намерение и хочу, чтобы на ESP8266 было хорошее решение для того, что вы пытаетесь сделать.

MD5 — это односторонняя хэш-функция, поэтому вы не сможете просто восстановить исходную строку для использования в WiFi.begin().

MD5 также считается "криптографически взломанным и непригодным для дальнейшего использования" с 2008 года. Поэтому, если вас беспокоит нечто большее, чем просто случайная атака с целью перехвата вашего пароля, MD5 в наши дни не считается подходящим для любых приложений безопасности.

Вам потребуется использовать какую-либо форму обратимого шифрования, но вам все равно нужно где-то хранить ключ. Если вы использовали ESP32, у него есть возможность зашифровать свою флэш-память, но ESP8266 не может этого сделать, поэтому вы всегда будете уязвимы для восстановления ключей или паролей, если они получат достаточный доступ к ЦП.

,

Мне все равно, как пароль зашифрован, но на моем Raspberry Pi я могу загрузить файл конфигурации с хешированным паролем для моего маршрутизатора WiFi, чтобы мой пароль не сохранялся в открытом виде. Таким образом, есть способ добиться того, чего я хочу, даже если он еще не реализован в библиотеке Arduino., @KDM


0

Хотя ВОЗМОЖНО изменить хэш пароля, особенно MD5 (https://md5decrypt.net/en/ ), это ничего не дает вам в плане безопасности, поскольку все остальные также могут отменить их.

Если у вас есть второй LoLin, вы можете настроить его как точку доступа и подключить к нему первое устройство, а не к маршрутизатору. Затем вы можете передавать данные на ПК через USB.

Конечно, это немного неудобно, но это, по крайней мере, означает, что вам не нужно раскрывать пароль вашего маршрутизатора на устройстве, которое кто-то может взять и уйти.

,

Хммм... Хорошо покопавшись на этом веб-сайте, я теперь понимаю, почему MD5 НЕОБРАТИМО и почему его можно вернуть в открытый текст только в том случае, если кто-то уже сохранил исходный открытый текст вместе с его контрольной суммой., @KDM

MD5 (и большинство других хэшей) сами по себе необратимы. Когда вы ограничиваете ввод паролями, он становится обратимым. Обычно с хэшем есть много входных данных, которые могут генерировать один и тот же результат. С хэшем пароля только один из входов обычно будет состоять из 8-20 печатных символов. Зная это, вам просто нужно сослаться на таблицу известных паролей-> хэшей и бум - хешированный пароль перевернут. Добавление соли к хэшу усложняет обращение значения, а использование лучшего хэша, чем MD5, еще больше усложняет задачу. Однако при наличии достаточного количества времени все известные хэши паролей могут быть отменены., @Merkle Groot


3

Я использую Tzapu WiFiManager https://github.com/tzapu/WiFiManager.

Это запускает ваш ESP как точку доступа Wi-Fi (режим AP), которая представляет веб-страницу по адресу http://192.168.4.1, где вы вводите ваш WiFi SSID и пароль. Затем он сохраняет пароль и перезапускает WiFi как станцию (режим STA).

При перезапуске, если пароль уже сохранен, он просто подключается как станция.

Если не удается найти SSID, точка доступа снова запускается.

,