Криптография и хеши: на что реально обратить внимание при настройке
В теме с криптографией и расшифровкой хешей подводных камней хватает. Часто сталкивался с тем, что люди просто берут алгоритм и бросаются его использовать, не подумав про соль, длину хеша и алгоритмы обновлений. Чтобы не накосячить, рекомендую проверять сразу несколько моментов:
- Используется ли соль и насколько она случайна? Без нее хеш становится сильно уязвимым.
- Какой алгоритм выбран? MD5 и SHA-1 уже не считаются подходящими для защищённых операций. Лучше смотреть в сторону SHA-256 или ещё круче — bcrypt, scrypt, Argon2.
- Где и как хранятся хеши? Иногда проще промахнуться не в алгоритмах, а в неправильной работе с базой, например, кеширование старых значений.
- Есть ли контроль качества входных данных? Например, универсальный ввод паролей может загубить всю схему, если не следить за кодировкой и спецсимволами.
- Как работают с обновлениями алгоритмов? Иногда приходится менять стратегию, чтобы пользователям сразу не пришлось перехешировать все пароли.
Если муторно с нуля, можно взять готовые библиотеки, но не забывать проверить их на актуальность и настройку. Кто сталкивался с подобным, на что чаще всего забивают внимание?