Зовнішні диски WD серії My Passport і My Book рекламуються як надійний сейф для даних, оскільки виконують наскрізне шифрування за алгоритмом AES. Дослідники з Рурського університету в Бохумі (Німеччина) вивчили їх модель безпеки і визнали її неспроможною. Витоку пам'яті, слабкий RNG і інші фундаментальні помилки реалізації криптозахисту привели до того, що файли з цих накопичувачів можуть бути розшифровані стороннім і незалежно від складності пароля. Сам же зовнішній диск може бути перетворений в знаряддя зловмисника, приховано працює проти свого власника.
Апаратне шифрування часто підноситься як найбільш досконалий метод криптографічного захисту даних. Спеціалізований чіп забезпечує більш ефективне шифрування на льоту за рахунок архітектурних відмінностей від процесора загального призначення. Будь-яка програма забирає машинні ресурси, а криптографічний чіп самодостатній. Зазвичай він також має власний генератор (псевдо) випадкових чисел і менше залежить від вразливостей зовнішніх компонентів. Але він часто криється в деталях. Як уже неодноразово було показано, для досягнення високого рівня безпеки мало взяти кращий алгоритм шифрування і втілити його в залозі. Непродуманість загальної криптографічного схеми може звести нанівець весь захист, перетворивши зашифрований диск в сейф без задньої стінки.
Компанія Western Digital випускає безліч зовнішніх дисків, що підключаються по USB 2.0 / 3.0, FireWire або Thunderbolt. Всі вони побудовані на базі HDD з інтерфейсом SATA, а підключення до різних портів досягається за рахунок використання моста - окремої плати з контролером, який виконує перетворення даних і при необхідності розшифровує їх на льоту.
Навіть диски однієї серії можуть комплектуватися мостами з різними чіпами, але загальний принцип роботи у всіх однаковий. Це підвищує сумісність, спрощує їх виробництво, ремонт і ... злом. Німецька команда дослідників відібрала для експерименту шість різних накопичувачів WD з чіпами JMicron (JMS538S і JMS569), Symwave (SW6316), PLX Technology (OXUF943SE), а також Initio (INIC-1607E і INIC-3608).
Три з них були побудовані на базі архітектури Intel 8051. В інших використовувалася архітектура Motorola M68k, ARC 600 і ARM v7. Зовнішній інтерфейс не впливає на рівень захисту, тому для зручності розглядалися моделі з підключенням по USB. Зазвичай чіп моста SATA-USB використовує специфічні для вендора команди SCSI (VSC) і безпосередньо виконує процедуру аутентифікації. Працювати з VSC можна, наприклад, за допомогою лінуксових утиліти sg_raw, що входить в пакет sg3.
root @ linux: / WD # sg_raw -r 1k / dev / sdb [VSC as hex]
В останніх моделях зовнішніх дисків WD міст спростили. Тепер він просто перенаправляє всі дані SATA-контролера, використовуючи для розблокування доступу загальну команду SECURITY UNLOCK (F2h). Забігаючи вперед, відзначу, що для будь-якого виду був виявлений свій набір вразливостей, що доповнює загальний сценарій атаки на зовнішні накопичувачі WD.
Як призначені для користувача, так і службові дані на зовнішніх дисках WD з підтримкою AES завжди зберігаються в зашифрованому вигляді. Залежно від моделі шифрування виконується ключем з довжиною 128 або 256 біт. Він заданий спочатку і називається DEK (Data Encryption Key). Цей ключ теж не зберігається у відкритому вигляді, а шифрується за допомогою іншого - KEK (Key Encryption Key). Він являє собою хеш SHA256, який обчислюється на основі введеного користувачем пароля і додаткового набору даних (сіль) після тисячі ітерацій.
Теоретично рандомізованих сіль потрібна для захисту від атак на хеш за допомогою райдужних таблиць, а тисяча ітерацій створює достатню затримку в обчисленнях, щоб зробити вичерпний перебір неефективним. Проблема дисків WD в тому, що існують обхідні шляхи отримання DEK. Тому ні комплексний пароль, ні сіль, ні безліч ітерацій при обчисленні KEK не забезпечують його належного захисту.
Дані на самому диску завжди зашифровані ключем DEK (зображення: Gunnar Alendal et al.).
Фізично зашифрований DEK зберігається в EEPROM (зазвичай це чіп U8 або U14 на окремій платі у дисків WD). У нових моделях він буває записаний в прихованому секторі або службової області диска. У будь-якому випадку, його видає низька ентропія, і він завжди починається з певної записи. Її вигляд залежить від контролера - наприклад, для JMS538S зашифрований ключ виглядає як «WDv1xxx ... x». Розшифрований DEK завжди починається з «DEK1».
Поки пароль не заданий, на диску використовується встановлене і не завжди коректно обробляється значення KEK. При аналізі фабричних налаштувань автори з'ясували, що в багатьох моделях накопичувачів ці значення хеш-функцій були згенеровані всього лише на основі дати виробництва, а «сіль» являє собою не псевдовипадковий набір даних, а банальну абревіатуру «WDC». Більш того, через програмної помилки деякі диски продовжують використовувати початкове значення KEK замість того, щоб згенерувати нове на основі пароля. Заміна KEK у них відбувається тільки при другій зміні пароля - досить рідкісна ситуація в реальному сценарії.
При підключенні будь-якого накопичувача WD з підтримкою AES його контролер намагається змонтувати дисковий розділ. Для цього він пробує розшифрувати його за допомогою DEK. Спочатку йому потрібно розшифрувати сам ключ, для чого він використовує заданий за замовчуванням KEK. Якщо пароль не було наведено, то криптографічний чіп отримує розшифрований DEK без втручання користувача і дешифрує вміст диска на льоту.
Схема шифрування даних в дисках WD з використанням двох ключів (зображення: Gunnar Alendal et al.).
Якщо ж розшифрувати диск не вдається, то контролер вважає сам DEK зашифрованим з допомогою пароля користувача, після чого запускає інтерактивну процедуру генерування KEK. Для цього замість томи з даними він монтує з флеш-пам'яті або службової області віртуальний диск. На ньому записані програми з графічним інтерфейсом для введення пароля, і це ще один потенційний вектор атаки. Вміст віртуального диска зберігається у вигляді образу ISO без цифрового підпису. Він легко може бути підмінений довільним кодом, який буде згодую на автозапуск за сценарієм атаки badUSB. Якщо на Mac він виконується з правами звичайного користувача, то в середовищі Windows запускається з правами адміністратора.
В окремих моделях були виявлені додаткові уразливості на рівні контролера, генератора випадкових чисел і обробки мостом службових команд. Механізм їх реалізації дозволяє зібрати частину матеріалу для генерування ключів і на порядки скоротити час злому. Найслабшим з точки зору криптографії виявився контролер INIC-3608. Він не прискорює обчислення AES і виконує примітивну авторизацію лише порівнюючи ключі. При цьому копія KEK зберігається у відкритому вигляді.
За час експериментів авторам вдалося розшифрувати DEK і дані на всіх моделях зовнішніх накопичувачів різними методами. Докладний звіт обсягом 36 сторінок розміщений ними у вільному доступі.