Привет криптоанархисты и просто любители побаловаться с шифрами! 😉 Сижу тут на днях разбирал одну классику RSA в дикой природе, а точнее в одном самописном API для мобильного банка.
История классическая 😎 : ребята взяли библиотеку для крипты, вроде бы всё правильно вызвали, ключи 2048 бит, но вот беда каждый раз при перезапуске сервера генерируется новый ключ, а старый нахрен выбрасывается. Ну я такой смотрю и понимаю, что вся их "защита" данных это просто театр, потому что если сервер упал и поднялся всё, предыдущие данные уже не расшифруешь, новый ключ же!
При этом они гордо пишут в документации "используем стойкое шифрование". Ладно, думаю, может хотя бы соль в паролях нормальная? Ан нет, соль одна на всех пользователей, да ещё и хэшируют один раз sha256 без всяких итераций. В общем сижу теперь пишу им разгромный отчёт, потому что это не просто баг, это какое-то криптографическое преступление. Кстати, кто-нибудь сталкивался с подобным когда вроде все нужные слова в коде есть (AES, RSA, хэширование), но реализация просто убивает всю безопасность?
Особенно весело, когда начинаешь объяснять проблему разработчикам, а они такие "но у нас же шифрование, что вам ещё надо". Вот прямо сейчас сижу и думаю может быть это какая-то вселенская закономерность, что чем громче в документации кричат про безопасность, тем более дурацкие ошибки там внутри? Кстати, самый смешной момент они для "повышения безопасности" сами написали свою функцию "улучшенного" рандома, которая на самом деле выдаёт одни и те же числа, если вызвать её в одну и ту же секунду. Ну вы поняли да, к чему это привело? Правильно, ко всем известным проблемам с генерацией ключей.
Ладно, буду закругляться, а то уже ночь, а мне ещё предстоит написать рекомендации, и я чую, что придётся начинать с ликбеза про то, что такое криптографический RNG и чем он отличается от rand() из си. 😀 Кто сталкивался с подобным давайте обсудим, может есть какие-то особенно запоминающиеся примеры криптографического безумия?
