Опубліковано Shufflecake, інструментарій для створення прихованих шифрованих розділів на диску

Компанія Kudelski Security, що спеціалізується на проведенні аудиту безпеки, опублікувала інструментарій Shufflecake, який дозволяє створювати приховані файлові системи, розмазані наявним вільним простором в існуючих розділах і не відрізняються від випадкових залишкових даних. Розділи створюються таким чином, що не знаючи ключ доступу, існування їх проблематично довести навіть при проведенні криміналістичного аналізу. Код утиліт (shufflecake-userland) і модуля ядра Linux (dm-sflc) написаний мовою Сі і поширюється під ліцензією GPLv3, що унеможливлює включення опублікованого модуля ядра до основного складу ядра Linux через несумісність з ліцензією GPLv2, під якою поставляється .

Проект позиціонується як більш досконале, ніж Truecrypt і Veracrypt, рішення для приховування даних, що вимагають захисту, яке має рідну підтримку платформи Linux і дозволяє розміщувати до 15 прихованих розділів на пристрої, вкладених один в одного для заплутування аналізу їх існування. Якщо саме застосування Shufflecake не є таємницею, про що можна судити, наприклад, за наявністю в системі відповідних утиліт, то загальну кількість створених прихованих розділів визначити неможливо. Приховані розділи, що створюються, на розсуд користувача можуть форматуватися для розміщення будь-яких ФС, наприклад, ext4, xfs або btrfs. Кожен розділ обробляється як окремий віртуальний блоковий пристрій зі своїм ключем розблокування.

Для заплутування слідів пропонується використовувати модель поведінки «правдоподібне заперечення» (plausible deniability), суть якого в тому, що дані, що представляють цінність, приховуються як додаткові шари в шифрованих розділах з менш цінними даними, утворюючи своєрідну приховану ієрархію розділів. У разі тиску власник пристрою може розкрити ключ до шифрованого розділу, але в цьому розділі можуть ховатися інші розділи (до 15 вкладених рівнів), а визначити їх наявність та довести існування проблематично.

Приховування забезпечується завдяки формуванню кожного розділу як набору шифрованих слайсів, що розміщуються у випадкових позиціях пристрою зберігання. Кожен слайс створюється динамічно в момент, коли в розділі потрібен додатковий простір для зберігання. Для утруднення аналізу слайси різних розділів чергуються, тобто. Розділи Shufflecake не пов'язуються з безперервними областями і слайси всіх розділів змішуються. Інформація про використовувані та вільні слайси зберігається у прив'язаній до кожного розділу карті розташування, на яку посилається зашифрований заголовок. Карти та заголовок зашифровані і без знання ключа доступу не відрізняються від випадкових даних.

Заголовок поділено на слоти, кожен з яких визначає свій розділ і пов'язані з ним слайси. Слоти в заголовку розміщені в стековому порядку і рекурсивно пов'язані — поточний слот містить ключ для розшифрування параметрів попереднього розділу в ієрархії (менш прихованого), що дозволяє використовувати один пароль для розшифровування всіх менш прихованих розділів, пов'язаних із вибраним розділом. Кожен менш прихований розділ розглядає слайси вкладених розділів як вільні.

За замовчуванням усі вкладені розділи Shufflecake мають той самий видимий розмір, що й розділ верхнього рівня. Наприклад, якщо на пристрої, розміром 1 ГБ задіяно три розділи, кожен з них буде видно для системи як розділ з розміром 1 ГБ і спільний доступний дисковий простір спільно використовуватиметься у всіх розділах — якщо в сумі розмір збережених даних перевищить фактичний розмір пристрою, почне видаватиметься помилка введення/виводу.

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

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

Реалізація Shufflecake має досить високу продуктивність, але через наявність накладних витрат приблизно вдвічі відстає за пропускною здатністю порівняно із шифруванням дисків на базі підсистеми LUKS. Застосування Shufflecake також призводить до додаткових витрат оперативної пам'яті та місця зберігання службових даних на диску. Витрати пам'яті оцінюється в 60 МБ за кожен розділ, а місця на диску — 1% від загального розміру. Для порівняння, аналогічна за призначенням техніка WORAM призводить до уповільнення від 5 до 200 разів із 75% втратою корисного місця на диску.

Інструментарій та модуль ядра протестовані лише під час роботи в Debian та Ubuntu з ядрами 5.13 та 5.15 (підтримується робота в Ubuntu 22.04). Зазначається, що проект поки що варто розглядати як робочий прототип, який не варто використовувати для зберігання важливих даних. У майбутньому планується провести додаткову оптимізацію продуктивності, надійності та безпеки, а також забезпечити можливість завантаження з розділів Shufflecake.

Джерело: opennet.ru

Додати коментар або відгук