В комментариях к моему
постингу про (предполагаемый) взлом облачного сервиса хранения паролей LastPass, были вопросы о том, насколько можно доверять паролям, сохраняемым локально в браузере.
Я бы не рекомендовала сохранять в браузерах какие-либо ценные пароли, так как если злоумышленники получат доступ к файловой системе компьютера, то они могут достаточно просто преодолеть весьма примитивный механизм защиты БД сохраненных учетных данных.
Да что там злоумышленники, я до сих пор знаю людей, которые пользуются одним и тем же ноутбуком с одной учеткой для всех членов семьи (иногда - с отдельной учеткой для детей).
В открытом доступе имеются в наличии python-скрипты, позволяющие расшифровать БД паролей для Firefox и Chrome:
https://github.com/ohyicong/decrypt-chrome-passwordshttps://github.com/unode/firefox_decryptЕще больше программ есть на сайте SecurityXploded, но там они выложены без исходных кодов, что менее интересно, если вы хотите разобраться с темой.
Механизм действия большинства программ основан на том, что ключ шифрования паролей хранится браузерами на том же компьютере, что и сама БД с паролями.
Важно отметить еще и то, что Firefox
шифрует сохраненные пароли алгоритмом 3DES/CBC, в то время как мастер-пароль, если вы таковой применяете для защиты базы паролей от offline-атак*,
использует более слабый алгоритм SHA-1, который считается скомпрометированным.
*Offline-атака - это попытка восстановить пароли не на том же компьютере, на котором они изначально были созданы/сохранены. Например, если вы сделали бэкап и загрузили его в облако, а злоумышленники получили доступ к этому хранилищу и скопировали оттуда ваши файлы.
Что касается локального хранилища KeePass, то там для шифрования паролей используется
считающийся надежным алгоритм AES-256, с дополнительной защитой от атак по словарю.
Однажды из бэкапа украли .kdbx файл, принадлежавший нашим разработчикам. Ради интереса, я на несколько часов запустила
John the Ripper на компьютере с достаточно мощным GPU и потом еще
hashcat (со словарем
cracklib-words) - безрезультатно. С другой стороны, я не была достаточно заинтересована в результате. Вот если бы пароль был взломан в пределах часа, было бы, во что _эффектно_ ткнуть их носом... Разрабы, в итоге, перешли на self-hosted Bitwarden, так как им было легче синхронизировать пароли внутри группы.
Но как бы не был надежен KeePass, я все равно рекомендую использовать 2FA на всех важных для вас сервисах, если таковой функционал доступен. Оптимальны по цене-качеству - бесплатные программы-аутентификаторы от Google или Microsoft или опенсорсные проекты типа andOTP/Aegis/FreeOTP. Гораздо менее надежны OTP (one time password) в смс.