Інформація про дані Платона.
Вертикальний пошук і штучний інтелект.

Серйозна безпека: 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 року EDF усе ще мав понад 5 2022 паролів користувачів, «захищених» одним хешем MDXNUMX.

Як ви вже багато разів чули на Naked Security, зберігання криптографічний хеш пароля означає, що ви можете підтвердити пароль, коли він представлений, просто повторно обчисливши його хеш і порівнявши його з хешем пароля, який було вибрано спочатку.

Якщо хеші збігаються, ви можете сміливо зробити висновок, що паролі збігаються, без необхідності зберігати справжній пароль.

У разі введення пароля потрібно лише тимчасово зберігати його в пам’яті, і його можна скинути, щойно буде обчислено його хеш.

Поки алгоритм хешування вважається криптографічно захищеним, його неможливо «запустити у зворотному напрямку», тому ви не можете працювати в зворотному напрямку від хешу, щоб розкрити щось про сам пароль. (Такий хеш відомий на жаргоні як a одностороння функція.)

Подібним чином хороший алгоритм хешування запобігає вам починати з відомого хешу та створювати якесь вхідне значення – будь-яке введення, не обов’язково вихідний пароль – яке дає бажаний хеш.

Вам потрібно було б спробувати введення за введенням, поки вам не пощастить, що для хешів навіть із 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.

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

Salting означає, що вам знадобиться повна, попередньо обчислена райдужна таблиця для кожного користувача (таблиця визначається комбінацією сіль + пароль), і ви не зможете обчислити кожну райдужну таблицю – завдання, яке може тривати кілька тижнів і займати терабайти дискового простору – доки ви все одно не відновите солі,

Але вам потрібно зробити ще більше.

Навіть якщо ви включите сіль, щоб не можна було використовувати попередньо обчислені «словники хешів», і ви використовуєте надійний криптографічний алгоритм, такий як 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 щоб допомогти вам зробити мудрий вибір.

Не попадіться на криптографічний пустотливий крок!


spot_img

Остання розвідка

spot_img