Дискът се доставя с етикет, обещаващ хардуерно криптиране. Включвате го, задавате парола и се доверявате на чипа вътре да се погрижи за останалото. Милиони лаптопи и работни станции работят по този начин, разчитайки на SSD дискове, изградени по стандарта TCG Opal2.
Милан Брож (Milan Brož) и трима негови колеги купуват 38 такива диска и ги подлагат на тестове. Брож поддържа cryptsetup — инструмента, който конфигурира криптирането на дискове в повечето Linux системи. Дисковете са от Samsung, Western Digital, Micron, Kioxia и други производители, като съставляват смес от нови наличности и употребявани устройства, свалени от лаптопи. Екипът се отнася към всяко от тях като към „черна кутия“ и изпраща само командите, дефинирани в документацията на Opal2.
Няколко диска се провалят по основни показатели.
Два OEM диска на Lenovo криптират всеки сектор с една и съща стойност за настройка (tweak value). AES-XTS разчита на тази стойност, за да направи идентичните данни да изглеждат различно в зависимост от това къде се намират на диска. При една и съща стойност за целия диск, идентично съдържание, записано на две различни места, генерира идентичен шифриран текст (ciphertext). Така определени шаблони във вашите файлове остават видими и в криптираните данни.
Същите два диска разполагат с генератор на случайни числа, който връща предсказуема последователност при всяко извикване. SATA диск на SanDisk пък се отклонява към една и съща байтова стойност (0x8B), като я генерира приблизително двойно по-често от очакваното. Opal2 изисква всеки диск да разкрива такъв генератор, но оставя качеството му без конкретни изисквания.
Дефектът при стойността за настройка разкрива остатъчна информация за шаблоните на данните, която смяната на ключа е трябвало да заличи, малко от изследователите оценяват реалната възможност за експлоатация като много ограничена. Слаб генератор има значение за софтуер, който извлича ключове от него, но екипът търси продукт, който прави това, и не открива такъв. Самият ключ за криптиране се намира на диска и остава там.
Токените за нулиране имат свой собствен проблем. Всеки Opal2 диск носи PSID — код, отпечатан върху етикета, който връща диска към фабричното му състояние. Една партида дискове SanDisk генерира тези кодове последователно, споделяйки общ префикс и суфикс. Възстановяването на PSID на един диск ви дава този на съседните чрез обикновено броене. Други шест диска приемат каквито и да е произволни символи, добавени към валиден PSID, и ги третират като верни.
Производителите купуват хардуерно криптиране, но никой не го проверява
Компаниите внедряват Opal2 дискове, за да удовлетворят изискванията за защита на съхраняваните данни (data-at-rest). Служителят по обществени поръчки вижда „хардуерно криптиране“ в спецификацията и отбелязва отметката. Разликата между този етикет и реалното поведение на чипа с години не е била измервана от никоя независима страна.
Това е първото сигурностно сравнение на Opal2 дискове между различни производители. Последният голям публичен труд върху самокриптиращи се SSD дискове бе публикуван през 2019 г. Отклонението в генератора на Samsung е останало незабелязано при диск, който изследователите вече са били подлагали на обратен инженеринг. Методът, който извади всичко това наяве: купуване на използвани SSD дискове и стартиране на скрипт.
Маркетингът обърква нещата още повече. Екипът започва с повече от петдесет диска и заделя дузина, които поддържат само Pyrite2 — свързан стандарт, който проверява парола, но оставя данните в незашифрован вид (plaintext). Търговците продават тези дискове, рекламирайки хардуерно криптиране в описанието си.
Брож и екипът му съобщават за всеки проблем със сигурността на засегнатите производители. Micron издава актуализация на фърмуера за грешка с размера на секторите при Crucial T500. Всеки друг доклад се връща с отговор, че проблемът е вече известен и незакърпен, че поддръжката е изтекла, или бива посрещнат с мълчание. Някои производители отговарят на компрометирания фърмуер за криптиране, като просто маркират функцията като неактивна и насочват клиентите към софтуерно криптиране.
Инсталирането на корекции за сигурност на фърмуера остава трудно. Много от тях изискват специален инструмент на производителя само за Windows или стартиращо (bootable) изображение. Услугата Linux Vendor Firmware Service покрива малка част от OEM дисковете, а останалите зависят от това кой сайт за поддръжка все още съществува.
Проектът вече предостави и съответния код. Поддръжката за Opal2 бе включена в cryptsetup. Режимът за единичен потребител (single-user mode) е подготвен за предстояща версия, заедно с необходимите промени в ядрото на Linux. Екипът пусна и инструмента Opal Test Suite, така че всеки да може да извърши същите проверки на собствените си дискове.
Три от тестваните устройства се оказват неизползваеми за реално криптиране на диска. Режимът за единичен потребител — функцията, която пречи на администратора на диска да отключи данните на потребителя — показва подобна картина. Двадесет и четири диска я рекламират, но само четиринадесет я поддържат достатъчно добре, за да бъде използвана.
Сега cryptsetup проверява фърмуера на диска за поддръжка на режим за единичен потребител, преди да му се довери, и преминава към по-безопасна конфигурация, ако проверката се провали. Практическите препоръки са точно противоположни на първоначалните търговски обещания: добавете софтуерно криптиране над това на диска и оставете хардуера да служи просто като втора защитна стена.
Диск, който твърди, че криптира вашите данни, заслужава същия строг контрол, както всяка друга мерка за сигурност. Инструментите за прилагане на този контрол вече са с отворен код, а първото им преминаване откри компрометиран фърмуер на работещи машини, съхраняващи реални данни.