Shufflecake — це інструмент для Linux, який дозволяє створювати кілька прихованих томів на запам’ятовуючому пристрої таким чином, що довести існування таких томів дуже важко навіть під час судової експертизи.
Фірма з аудиту безпеки Kudelski Security випустила набір інструментів Shufflecake , який дозволяє створювати приховані файлові системи, розподілені по доступному вільному простору на існуючих розділах, невідрізнимі від випадкових залишкових даних. Ці розділи створюються таким чином, що без знання ключа доступу довести їх існування проблематично, навіть під час судово-медичного аналізу.
Проект позиціонує себе як більш просунуте рішення для приховування конфіденційних даних, ніж Truecrypt та Veracrypt, пропонуючи вбудовану підтримку платформи Linux та дозволяючи розміщувати на пристрої до 15 прихованих розділів, вкладених один в одного, щоб приховати аналіз їх існування.
Приховані розділи , створені на розсуд користувача, можна відформатувати відповідно до будь-якої файлової системи, наприклад, ext4, xfs або btrfs. Кожен розділ розглядається як незалежний віртуальний блочний пристрій із власним ключем розблокування.
Для приховування слідів пропонується поведінкова модель «правдоподібного заперечення». По суті, цінні дані приховані як додаткові шари всередині зашифрованих розділів, що містять менш цінні дані, утворюючи своєрідну приховану ієрархію розділів. Під тиском власник пристрою може розкрити ключ до зашифрованого розділу, але інші розділи (до 15 вкладених рівнів) можуть бути приховані всередині нього, що ускладнює визначення їхньої присутності та доведення їхнього існування.
Shufflecake та модуль ядра були протестовані лише на Debian та Ubuntu з ядрами 5.13 та 5.15 (підтримується Ubuntu 22.04). Слід зазначити, що проєкт все ще слід вважати робочим прототипом і не повинен використовуватися для зберігання конфіденційних даних.
У майбутньому ми плануємо додатково оптимізувати продуктивність, надійність і безпеку, а також надати можливість завантажуватися з розділів Shufflecake.
Про Shufflecake
Приховування досягається шляхом формування кожного розділу як набору зашифрованих сегментів, розміщених у випадкових позиціях на пристрої зберігання даних. Кожен сегмент створюється динамічно, коли розділу потрібен додатковий простір для зберігання. Для ускладнення аналізу зрізи з різних секцій чергуються.
Розділи Shufflecake не пов’язані з суміжними регіонами, а порції з усіх розділів змішуються разом. Інформація про використані та безкоштовні порції зберігається на карті розташування, що додається до кожного розділу, на яку посилається зашифрований заголовок. Картки та заголовок зашифровані, і без знання ключа доступу їх неможливо відрізнити від випадкових даних.
Заголовок розділений на слоти , кожен з яких визначає власний розділ та пов'язані з ним сектори. Слоти в заголовку складені та рекурсивно пов'язані: поточний слот містить ключ для розшифрування параметрів попереднього (менш прихованого) розділу в ієрархії, що дозволяє одному паролю розшифрувати всі менш приховані розділи, пов'язані з вибраним елементом. Кожен менш прихований розділ розглядає частини вкладених розділів як вільні.
За замовчуванням усі вкладені розділи Shufflecake мають такий самий видимий розмір, як і розділ верхнього рівня. Наприклад, якщо на пристрої розміром 1 ГБ використовується три розділи, кожен з них буде видимим для системи як розділ розміром 1 ГБ, а загальний доступний дисковий простір буде розподілено між усіма розділами. Якщо загальний обсяг збережених даних перевищує фактичний розмір пристрою, почнуть виникати помилки вводу/виводу.
Невідкриті вкладені розділи не беруть участі у розподілі простору; тобто спроба заповнити розділ вищого рівня перезапише дані у вкладених розділах, але не виявить їхню присутність шляхом аналізу розміру даних , які можна розмістити в розділі, перш ніж буде сформовано помилку (передбачається, що розділи вищого рівня містять незмінні дані). Дані використовуються не випадково і ніколи окремо, а регулярна робота завжди виконується з найновішим вкладеним розділом; сама схема передбачає, що головне — зберегти існування даних у таємниці, навіть ціною їх втрати.
Реалізація Shufflecake пропонує відносно високу продуктивність, але через накладні витрати вона виконує приблизно вдвічі краще шифрування диска на основі підсистеми LUKS. Використання Shufflecake також тягне за собою додаткові витрати на оперативну пам'ять та дисковий простір для зберігання службових даних. Витрати на пам'ять оцінюються в 60 МБ на розділ , а використання дискового простору оцінюється в 1% від загального розміру розділу. Для порівняння, аналогічна техніка WORAM призводить до уповільнення від 5 до 200 разів із втратою 75% корисного дискового простору.
Код утиліт (shufflecake-userland) і модуля ядра Linux (dm-sflc) написаний на C і випущений під ліцензією GPLv3, що унеможливлює включення опублікованого модуля ядра в основне ядро Linux через несумісність. за ліцензією GPLv2, під якою постачається ядро.
Якщо ви зацікавлені дізнатися більше, ви можете знайти деталі за наступним посиланням.