Друзья,пишу сейчас небольшую утилиту для хранения паролей в зашифрованном виде. Хранить просто в хеш в самом скрипте дело не благодарное, получив доступ к скрипту увидим хеш,а на его основе можно вычислить и пароль.
Придумал такую схему: у нас есть некий токен который мы храним в голове. Он довольно не большой, допустим 5-6 букв, является обычным словом. При запросе утилитой этого токена, мы его вводим + добавляем соль, на его основе вычисляется первый хеш, который будет паролем. Далее этот хеш мы еще раз хешируем, и уже второй хеш и храним в скрипте утилиты.
В криптографии не силен вообще. Подскажите будет ли такая схема безопасной?Или есть другие хорошие методы безопасного хранения паролей в зашифрованном виде? Готовые решения не особо устраивают. Юзал Folder Lock но у него 2 огромных проблемы:
1)При удалении, он спросил меня сохранить ли ему расшифрованную копию в какое нибудь место, и пределов удивлению не было, когда он просто взял и сохранил папку с файлом пароля на другой диск.
2)Он не мобилен. Скрипт можно взять с собой на флешке куда угодно, и он будет работать на любых системах, а FL создает виртуальных хард и шифрует его, + его нет под Linux, а на ноуте именно он.
Роман Мирр, да понятное дело, что более уязвимы. Но тут важная деталь именно в кросплатформенности. На крайний случай думаю посмотреть в сторону платных web или облачных сервисов.
sim3x, вот этот сервис быстро сгенерирует нам хеш из слова,пароля.В данном случае я выбрал слово kitty(получаем хеш от слова kitty - SHA256: 67731FF58137EB39713AE30EBA33C54C8C1D5418E081428CA815E4E733D64F6D) Этот сервис может(не всегда,да я даже сказал бы редко когда, но все же может)
Сами попробуйте,мое слово китти по данному мной хешу ввести на crackstation.Он выдал мне мне из хеша исходное слово.С большими словами врятли он справится, но до 10 букв,вполне себе.
UPD: таблицы поиска как я понял данный метод называется
UPD2 Попробовал пару проверок, данный сервис довольно плохо справляется с комбинацией цифробуков, но в моей идее использовать простое слово ввиде токена для генерации хеша,тот же kitty он ломает легко.Kitty228 например он не сломал.
In [1]: from hashlib import md5
In [2]: md5(b'!tJMwYLPl%h%gEE~pAcW^$L!49L&xQqS1R&3m+xazHJsioec?&3rYJ$@zyg@B%c#ncz+h5Ibrv%XW#??????????').hexdigest()
Out[2]: 'ce92c344cd52e86e16b76f30dddd8719'
Верните из данного хеша полную строку
Такой метод назвается Радужные таблицы
Он не работает с нормальными хешами (мд5, sha1 - плохие хеши) с солью
Для мастер пароля сейчас рекоммендуются пароли от 12 символов, желательны пароли из фраз, 5+ слабо связанных слов
Почитайте теорию по криптографии и узнайте что такое хеш и односторонние функции
А как тогда сервисы разные хранят пароли пользователей?Они же хешируют пароль,а при вводе сравнивают вычисленный хеш введенного пароля,с хешем в базе.Или я не прав?
DollyPapper, всё так. Важная деталь именно длина пароля, которая усложняет или упрощает простой перебор. Ну и схема и алгоритм хэширования-перехэширования. В неудачном варианте может получиться схема наоборот, упрощающая подбор.