Серьезная безопасность: MD5 считается вредным — на сумму 600,000 XNUMX долларов США PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Серьезная безопасность: MD5 считается вредным — на сумму 600,000 XNUMX долларов.

В увлекательном судебном разбирательстве, проведенном французским регулятором защиты данных CNIL (Национальная комиссия по вычислениям и свободам), энергетическая компания Électricité de France, сокращенно EDF. оштрафован на 600,000 XNUMX евро (около $ 600,000).

Юридическая декларация, на манер таких вещей, довольно длинная и (по крайней мере, для неюристов) лингвистически малопонятная, а это означает, что вам нужно разумное знание французского языка, чтобы понять все тонкости дела, но общий случай сводится к четырем нарушениям.

Первые три связаны с общими взаимодействиями с клиентами, связанными с данными, и охватывают:

  • Отправка коммерческих маркетинговых писем без надлежащего согласия.
  • Сбор данных без уточнения что и почему.
  • Ненадежная обработка запросов когда клиенты просили просмотреть свои данные или удалить их.

Но нас заинтересовала последняя жалоба: Sur le manquement à l'obligation d'assurer la sécurité des données.

На английский это примерно переводится как неспособность безопасно хранить данные, и очень конкретно относится к небезопасной обработке паролей.

MD5 считается вредным

Регулятор отметил, среди прочего, что, несмотря на заявления о том, что пароли солялись, а затем хэшировались с использованием принятого алгоритма хеширования, EDF по-прежнему имела пароли более 25,000 5 пользователей, «защищенные» с помощью одного хэша MD2022 еще в июле XNUMX года.

Как вы много раз слышали о Naked Security, хранение криптографический хэш пароля означает, что вы можете проверить пароль, когда он представлен, просто пересчитав его хэш и сравнив его с хэшем первоначально выбранного пароля.

Если хэши совпадают, вы можете с уверенностью сделать вывод, что пароли совпадают, даже не сохраняя фактический пароль.

Когда пароль представлен, его нужно только временно хранить в памяти, и его можно сбросить, как только будет рассчитан его хэш.

Пока алгоритм хеширования считается криптографически безопасным, его нельзя «запустить в обратном порядке», поэтому вы не можете работать в обратном направлении от хэша, чтобы раскрыть что-либо о самом пароле. (Хэш такого рода известен на жаргоне как односторонняя функция.)

Точно так же приличный алгоритм хеширования не позволяет вам начать с известного хэша и разработать какое-то входное значение — любое входное значение, не обязательно исходный пароль — которое дает желаемый хэш.

Вам нужно будет пробовать ввод за вводом, пока вам не повезет, что для хэшей даже из 128 бит займет слишком много времени, чтобы быть осуществимой атакой. (Говорят, что хэш с мерой предосторожности, не позволяющей вычислить несколько входов с одним и тем же выходом, называется стойкий к столкновениям.)

Но у MD5, как вы, наверное, знаете, есть существенные проблемы с коллизиями, как и у его непосредственный преемник SHA-1 (оба этих хэша вышли в начале 1990-х).

В наши дни ни один из алгоритмов не рекомендуется для использования где-либо, кем-либо и для каких-либо целей, учитывая, что существуют аналогичные, но все еще безопасные альтернативы, которые можно легко заменить, такие как SHA-256 и SHA-512:

Хэши MD5 имеют длину 128 бит или 16 байт. SHA-256 и SHA-512 в 2 и 4 раза длиннее соответственно. Но не только эта дополнительная длина хеша делает их более подходящими. Их основное преимущество перед MD5 заключается в том, что они не имеют каких-либо конкретных известных проблем с коллизиями, поэтому в результате их криптографическая безопасность не считается сомнительной.

Соление и растяжка

Короче говоря, вы не ожидаете, что какая-либо компания, не говоря уже о таком гиганте энергетического сектора, как EDF, вообще будет использовать MD5 для каких-либо криптографических целей, не говоря уже о защите паролей.

Но еще хуже было отсутствие соление, где фрагмент данных, выбранный случайным образом для каждого пользователя, смешивается с паролем перед вычислением его хэша.

Причина использования соли проста: она гарантирует, что хэш-значения потенциальных паролей не могут быть рассчитаны заранее, а затем использованы для помощи в атаке.

Без соления, каждый раз, когда любой пользователь выбирает пароль 123456, мошенники заранее знают, каким будет его хэш.

Даже если пользователь выберет более подходящий пароль, например 34DF6467!Lqa9, можно заранее сказать, что его хеш MD5 будет 7063a00e 41866d47 f6226e60 67986e91.

Если у вас есть достаточно длинный список предварительно вычисленных паролей или частично вычисленных паролей (известных на жаргоне как радужный стол), вы можете восстановить пароль с помощью таблицы, а не перебирать триллионы комбинаций паролей, пока вам не повезет.

Соление означает, что вам понадобится полная, предварительно вычисленная радужная таблица. для каждого пользователя (таблица определяется комбинацией соль + пароль), и вы не сможете вычислить каждую радужную таблицу — задача, которая может занять несколько недель и занять терабайты дискового пространства — пока вы все равно не восстановите соли,

Но есть еще кое-что, что вам нужно сделать.

Даже если вы включите соль, чтобы нельзя было использовать предварительно вычисленные «хеш-словари», и вы используете надежный криптографический алгоритм, такой как SHA-512, одно вычисление хеш-функции достаточно быстро, чтобы злоумышленники, получившие базу данных хэшей, могли по-прежнему перебирают миллиарды возможных паролей в секунду, а то и больше.

Поэтому вы должны использовать то, что называется растягивание а также, когда вы не только солируете первоначальный пароль, но затем пропускаете ввод через алгоритм хеширования тысячи или более раз в цикле, что делает атаки значительно более трудоемкими для любых мошенников, которые хотят попробовать.

В отличие от многократного сложения, где вы можете использовать одно умножение в качестве сокращения, скажем, вычисления 5+5+5+5+5+5 на 6×5, для повторяющихся хэшей сокращения нет. Для хеширования входных данных 1000 раз требуется 1000 «поворотов» дескриптора криптографических вычислений.

Проблема не только в MD5

По иронии судьбы, кажется, что, хотя EDF хешировала только 25,800 5 паролей с помощью MD512 и утверждала в свою защиту, что вместо этого в основном использовала SHA-XNUMX, она все же не всегда солола или растягивала сохраненные хэши.

Регулятор сообщает, что 11,200,000 2,400,000 5 паролей были правильно обработаны солью и хэшем, но, тем не менее, 512 XNUMX XNUMX паролей были просто хэшированы напрямую один раз, будь то с помощью MDXNUMX или SHA-XNUMX.

Судя по всему, EDF полностью восстановила хранилище паролей, но компания все равно была оштрафована на 600,000 XNUMX евро, и в течение следующих двух лет она останется публично зарегистрированной в Интернете на «непослушном шаге» CNIL.

Мы не можем быть уверены, какой штраф был бы наложен, если бы решение касалось только плохого хеширования, и EDF также не пришлось бы отвечать за три других нарушения защиты данных, перечисленных в начале…

…но это показывает, что неправильный выбор криптографии может стоить вам денег по многим причинам!

Что делать?

Храните пароли ваших клиентов безопасно!

Дополнительные вычислительные затраты на добавление и растяжение могут быть выбраны таким образом, чтобы отдельные пользователи не испытывали неудобств при входе в систему, но скорость атаки потенциальных злоумышленников увеличилась на несколько порядков.

Атака восстановления пароля, которая может занять неделю, чтобы извлечь 10% паролей, хранящихся в виде простых одноразовых хэшей, теоретически займет 200 лет (10,000 10,000 недель), если вы должны сделать стоимость вычисления каждого пробного пароля в XNUMX XNUMX раз выше. .

Прочитайте наш информационный раздел отличная объяснительная статья именно на эту тему:

Одним словом, мы рекомендуем PBKDF2 алгоритм «растягивания» с SHA-256 в качестве основного хэша со случайным salt of 16 bytes (128 бит) или больше.

Это соответствует рекомендациям последнего судебного решения CNIL.

CNIL не дает рекомендаций по количеству итераций PBKDF2, но, как вы увидите в нашей статье, наш совет (октябрь 2022 г.) заключается в использовании 200,000 or more. (Вы можете регулярно увеличивать количество циклов, чтобы не отставать от увеличения вычислительной мощности.)

Если вы не хотите использовать PBKDF2, рекомендуем ознакомиться с алгоритмами bcrypt, scrypt и Argon2 чтобы помочь вам сделать мудрый выбор.

Не попадитесь на сомнительный криптографический шаг!


Отметка времени:

Больше от Голая Безопасность