#security
#Безопасность
Вопрос:
Мне было интересно, существует ли известный безопасный способ безопасного хранения имени пользователя и пароля для настольного приложения.
Например, KeyPass с открытым исходным кодом
Допустим, я получаю доступ к локальному компьютеру пользователя, беру все файлы конфигурации его KeyPass и просматриваю исходный код KeyPass, могу ли я изменить имя пользователя и пароль после этого?
Ответ №1:
Нет.
Существует концепция односторонней функции. То есть, если у нас есть взаимосвязь
y = f(x)
И мы знаем, y
и f
что для их поиска все равно может потребоваться много времени и усилий x
.
Примером односторонних функций (насколько нам известно, по крайней мере …) являются алгоритмы SHA.
Комментарии:
1. Хэшируется только главный пароль — все остальное симметрично зашифровано.
Ответ №2:
KeePass хранит все данные в симметричном шифровании в локальном хранилище через AES, поэтому, если вы не получите мастер-пароль, ваши шансы на расшифровку довольно незначительны. Сам мастер-пароль хранится в виде хэша SHA-256 (я предполагаю, соленого), что означает, что до тех пор, пока он изначально обладает хорошей энтропией, ваши шансы заполучить его примерно такие же, как взломать шифрование.
Итак, да, это очень безопасный способ хранения учетных данных. Не так надежно, но примерно так же хорошо, как вы практически получаете.
Ответ №3:
Вы можете безопасно хранить пароль, используя, скажем, хорошо известный алгоритм надежного шифрования, такой как AES.
ОДНАКО вы не можете обеспечить 100%-ную безопасность процедуры, зависящей от пароля. Поскольку фактическая функциональность настольного приложения находится прямо внутри кода приложения, у злоумышленника всегда найдется способ получить к нему доступ, даже не требуя знать ваш пароль. Даже использование полиморфного самоизменяющегося кода на основе зашифрованного ключа по-прежнему поддается взлому (на самом деле это защита, которую CuteFTP использовал в прошлом, но все еще просто восстанавливал пароли ftp пользователя для их «безопасного» хранения).
Учитывая это, шифрование действительно усложняет задачу, и, по крайней мере, даже если пользователи взломают приложение, они не смогут восстановить ваш первоначальный пароль.