Налаштування шифрування на працюючій системі ubuntu. Шифрування жорсткого диска в Linux

Налаштування шифрування на працюючій системі ubuntu. Шифрування жорсткого диска в Linux

: - Російська

Активна розробка сторінки завершена

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

Шифрування даних у Debian

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

Шифрування за допомогою cryptsetup

Встановимо необхідні компоненти:

# apt-get install cryptsetup

Стандартний синтаксис

/dev/sda2. Введемо команду:

# cryptsetup create sda2_crypt /dev/sda2

Ця команда створить шифроване підключення до диску. В каталозі /dev/mapperз'явиться новий пристрій із запрошеним нами ім'ям: /dev/mapper/sda2_crypt, звертаючись до якого ми використовуємо шифрований доступ до диска. У випадку з LUKS ім'я буде /dev/mapper/sda2_crypt

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

# dd if=/dev/sda2 of=/dev/mapper/sda2_crypt

Якщо ж створюється новий диск на порожньому розділі, можна відформатувати його:

# mkfs.ext3 /dev/mapper/sda2_crypt

Згодом можна буде змонтувати цей диск куди завгодно:

# mount /dev/mapper/sda2_crypt /path/to/mount/point

Перевірити цілісність даних (як зазвичай краще використовувати тільки в розмонтованому стані):

# fsck.ext3 /dev/mapper/sda2_crypt

І навіть розшифрувати назад, якщо ми більше не хочемо використовувати шифрування:

# dd if=/dev/mapper/sda2_crypt of=/dev/sda2

LUKS синтаксис

Вказані вище дії можна виконати відповідно до стандарту LUKS

Ініціалізуємо розділ:

cryptsetup luksFormat /dev/sda2

Підключаємо до системи:

cryptsetup luksOpen /dev/sda2 sda2_crypt

Форматуємо:

mkfs.ext4 -v -L DATA /dev/mapper/sda2_crypt

Монтуємо:

mount /dev/mapper/sda2_crypt /mnt/data

Розділ можна вручну вимкнути про систему

cryptsetup luksClose sda2_crypt

Підключення під час запуску

Для цього використовується файл crypttab.

Для нашого диска пропишемо в нього наступний рядок:

nano /etc/crypttab # ім'я mapper пристрій ключ параметри/опції # При стандартному синтаксисі sda2_crypt /dev/sda2 none aes-cbc-plain:sha256 # та\або під стандартом LUKS sda2_crypt /dev/sda2 none luks

За замовчуванням використовується шифрування по паролю, введеному користувачем. Таким чином кожен раз, коли ви завантажуєте ваш комп'ютер система буде запитувати кожен раз у вас пароль для підключення кожного зашифрованого розділу. Навіть якщо fstab ці розділи не прописані.

Якщо хочемо монтувати вручну, то додаємо опцію noautoу полі "параметри/опції".

Підключення шифрованого розділу вручну за даними /etc/crypttab

cryptdisks_start msda2_crypt

І відключення із заздалегідь відмонтованою фс.

cryptdisks_stop sda2_crypt

Для автоматичного монтування фс на підключеному зашифрованому розділі додаємо рядок у /etc/fstab

/dev/mapper/sda2_crypt /mnt/data ext4 defaults 0 0

Робота з ключами у LUKS

Розділ LUKS підтримує 8 різних ключів, кожен із яких міститься у свій слот.

Дивимося список використовуваних ключів

cryptsetup luksDump /dev/sda2

У LUKS можуть використовуватися 2 види ключів – ключові фрази та файли.

Можна додати ключову фразу

cryptsetup luksAddKey /dev/sda2

Можна додати ключовий файл (2048 bit) та виставити права доступу до нього.

dd if=/dev/urandom of=/root/ext2.key bs=512 count=4 cryptsetup luksAddKey /dev/sda2 /root/ext2.key chmod 400 /root/sda2.key cryptsetup -d /root/sda2.key luksOpen /dev/sda2 sda2_crypt

Для підключення під час запуску по ключу правим /etc/crypttab

nano /etc/crypttab sda2_crypt /dev/sda2 /root/sda2.key luks

Можна видалити ключову фразу або ключ із розділу

cryptsetup luksKillSlot /dev/sda2 1

Аварійне монтування в "чужому" дистрибутиві

Від проблем ніхто не застрахований і іноді потрібно отримати доступ до зашифрованого розділу з аварійного диска LiveCD.

Завантажуємося, підключаємо розділ у систему та монтуємо фс:

cryptsetup luksOpen /dev/sda2 sda2_crypt mount -t ext4 /dev/mapper/sda2_crypt /mnt/backup

Після роботи відмонтуємо фс та відключимо зашифрований розділ від системи

umount /mnt/backup cryptsetup luksClose sda2_crypt

Повідомлення про помилки при вимкненні

Якщо кореневий розділ зашифрований, при вимкненні видаватиметься повідомлення

stopping early crypto disks... failed

Це технічна помилка. При вимиканні насамперед завжди демонтується файлові системи і потім відбувається відключення розділу. У результаті виходить, що утиліта cryptsetup, що знаходиться на кореневому відмонтованому розділі, вже недостуна для запуску, про що нам INIT і повідомляє. Без милиць таку проблему вирішити, т.к. Для цього потрібно розглядати варіанти з перенесенням cryptsetup в диск RAM

Аналогічна ситуація складається і при використанні програмного RAID, що містить кореневий розділ. 8)

Шифрування за допомогою модуля loop-aes

Шифрування розділу вінчестера, флешки за допомогою пароля

В данному howtoописаний метод шифрування AES256Інші методи можна застосовувати аналогічно (замінивши назву методу на відповідне). Нам знадобляться такі пакети:

# apt-get install loop-aes-utils loop-aes-modules-`uname -r`

Примітка: якщо Ви використовуєте ядро ​​для якого в репозитарії немає потрібного loop-aes-modules, Ви можете встановити модулі наступними командами:

# apt-get install module-assistant loop-aes-source # module-assistant a-i loop-aes

Початковий етап

На початковому етапі ми готуємо диск для того, щоб працювати з ним, використовуючи шифрування.

Виберемо розділ диска (або флешки) який ми хочемо зашифрувати, наприклад, це буде /dev/sda2. Введемо команду:

# losetup -e AES256 -T /dev/loop0 /dev/sda2

Після виконання цієї команди, всі звернення до девайсу /dev/loop0будуть шифруватися і в шифрованому вигляді перенаправлятися в девайс /dev/sda2. Тепер ми маємо одночасно шифрований та нешифрований канали до пристрою зберігання даних. Шифруються дані за допомогою пароля, який ви вказали при виконанні losetup.

Тепер ми можемо наприклад відформатувати девайс:

# mkfs.ext3 /dev/loop0

Можемо змонтувати його:

# mount /dev/loop0 /path/to/mount

можемо вимкнути шифрування:

# losetup -d /dev/loop0

і найголовніше, можемо зашифрувати розділ без втрати даних:

# dd if=/dev/sda2 of=/dev/loop0

а так само розшифрувати, якщо вирішуємо, що шифрування не наш метод:

# dd if=/dev/loop0 of=/dev/sda2

Ну і найприємніше, ми можемо робити перевірки файлової системи на цілісність:

# fsck.ext3 /dev/loop0

Ця можливість доступна далеко не у всіх методах шифрування розділів.

Повсякденне використання

Якщо у Вас вже був запис про розділ /dev/sda2у вашому /etc/fstab, то Вам потрібно просто додати опції, а якщо не було прописати приблизно наступне:

/dev/sda2 /path/to/mount ext3 loop,encryption=AES256 0 0

Тепер при завантаженні операційної системи у Вас буде запрошено пароль для монтування.

Якщо Ви не хочете, щоб процес завантаження переривався запитом пароля, можна додати опції noauto,userу запис /etc/fstab:

/dev/sda2 /path/to/mount ext3 loop,encryption=AES256,noauto,user 0 0

Зрозуміло, можна монтувати вручну (або зі скрипту):

# mount /dev/sda2 /path/to/mount -o loop,encryption=AES256

Монтування кількох файлових систем

Іноді хочеться зашифрувати одночасно кілька розділів із даними, але так щоб не вводити море паролів на кожен mount. Наприклад, у Вас є флешка, яку ви тягаєте з дому на роботу, переносний вінчестер тощо. Або ж просто кілька розділів/вінчестерів.

Допустимо ми маємо зашифрований розділ /dev/sda2, який ми при кожному завантаженні монтуємо у каталог /mnt1. З'явився новий вінчестер /dev/sdb1і ми хочемо, щоб він автоматично монтувався в каталог mnt2при монтуванні першого. Можна, звичайно, створити загальну систему на чомусь на зразок LVM, Однак можна і більш простим шляхом піти:

прописуємо в fstabприблизно наступний рядок:

/dev/sda2 /mnt1 ext3 noatime,exec,loop,encryption=AES256 0 0 /dev/sdb1 /mnt2 ext3 noatime,exec,loop,encryption=AES256,cleartextkey=/mnt1/key.txt 0 0

Система при завантаженні монтує точки в тому самому порядку, який описаний в fstab, таким чином, якщо перший розділ не буде змонтований, то ключ для монтування другого розділу залишиться недоступним і другий розділ також не буде змонтований.

Пароль зберігається у вигляді plain/textце, звичайно, не дуже красиво, але він зберігається на зашифрованому розділі (який можна і відмонтувати). Можна замість цього використати gpg-ключ, проте багато безпеки це не додасть (якщо вже зможуть сперети ключ, то великої різниці який цей ключ не буде), варіант шифрування з gpg-ключом описаний в man losetup, тут я лише наведу приклад запису в fstab:

/dev/sda2 /mnt1 ext3 noatime,exec,loop,encryption=AES256 0 0 /dev/sdb1 /mnt2 ext3 noatime,exec,loop,encryption=AES256,gpgkey=/mnt1/key.gpg 0 0

Примітки

Додаткову інформацію про підтримувані алгоритми шифрування дивись у man losetup, там же можна переглянути опис інших опцій програми losetup.

Якщо у Вас виникнуть проблеми при установці модулів AES, то читайте документацію з пакетом loop-aes-source.

GRUB та шифрований кореневий диск

У разі встановлення кореневого розділу на зашифрований диск GRUB може в головному меню показувати кракозябри. Це відбувається через відсутність стандартного шрифту /usr/share/grub/unicode.pf2. Копіюємо шрифт

cp /usr/share/grub/unicode.pf2 /boot/grub/

Вказуємо налаштування

nano /etc/default/grub GRUB_FONT=/boot/grub/unicode.pf2

Застосовуємо налаштування:

update-grub

Семененко В.

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

Створення шифрованого розділу в Ubuntu

Яким чином можна додати можливість шифрування у вже встановленій системі Ubuntu Linux?

На щастя, реалізувати її досить легко. Для цього достатньо виконати три основні кроки:

  • створити шифровану копію вашої домашньої директорії;
  • видалити оригінальну незашифровану домашню директорію;
  • зашифрувати розділ підкачки swap (виконується лише один раз, при установці системи Ubuntu або при покроковому виконанні цього посібника).

Описані в цій статті дії робилися на повністю оновленій системі Ubuntu Precise 12.04.

Підготовка

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

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

Використовуючи звичний менеджер пакетів, встановіть програму encrypt-utils .

Шифрування

У цьому посібнику я використовуватиму логін paddy як ім'я користувача, з даними якого будуть виконуватися дії. Вам необхідно замінити його на ім'я користувача, домашня директорія якого буде шифруватися.

Перезавантажуємо Ubuntu Linux і заходимо в "Режим відновлення" (Recovery Mode). Невелика порада - під час старту завантаження системи натисніть та утримуйте клавішу Shift, щоб відкрилося меню Grub. Зазвичай рядок "Режим відновлення" (Recovery Mode) розташовується другий зверху у списку цього завантажувача.

У меню режиму відновлення виберіть "Drop" для того, щоб з'явилася підказка командного рядка для облікового запису root.

Щоб виправити програмну помилку, про яку йшлося на початку цієї статті, введіть дві наступні команди:

mount --options remount,rw /
mount --all

Тепер можна створити шифровану копію домашньої директорії користувача paddy. Для цього введемо команду, вказану нижче. При цьому постарайтеся згадати ваш власний пароль, оскільки дана утиліта вимагатиме його для виконання операції:

Коли процес шифрування буде завершено, ви побачите кілька попереджень. Можете проігнорувати їх. Але вам необхідно буде запам'ятати шлях до тимчасової папки, створеної командою. Її вигляд буде приблизно наступним: /home/paddy.ChPzzxqD

При цьому вісім останніх символів (після точки) є випадковим набором. Ця директорія вам знадобиться у наступних кроках "Завершення" або "Повернення до вихідного стану", про які буде розказано далі.

Перезавантажте систему Ubuntu Linux. Для цього введіть команду: reboot now

Після введення та запуску команди може пройти кілька секунд, так що наберіться терпіння.

Завершення

Зайдіть у систему Ubuntu звичайним способом, як ви робили щоразу. Перевірте, що все працює як раніше.

Якщо щось не так, можете одразу переходити до пункту "Повернення до вихідного стану".

Якщо все в системі працює нормально, виконав завершальні кроки.

Відкриваємо термінал та вводимо команду видалення тимчасової директорії. Для цього вам знадобиться згадати шлях до тимчасової папки, яка була створена при шифруванні домашньої директорії.

sudo rm -R /home/paddy.ChPzzxqD

Відновіть дані, які були видалені (якщо були) у кроці "Підготовка".

Знову відкрийте термінал і введіть команду для шифрування розділу підкачки swap. Якщо у вас раніше був користувач з налаштованим шифруванням домашньої директорії, можете спокійно пропустити цей крок: sudo ecryptfs-setup-swap

Знову перезавантажтеся.

Повернення до вихідного стану

Якщо процес шифрування виконався з помилками, вам потрібно буде повторити попередні кроки.

Запустіть команди:

mount --options remount,rw /
mount --all
ecryptfs-migrate-home --user paddy

Потім введіть команду, щоб переглянути вміст тимчасової папки, створеної в процесі шифрування. Для цього вам знову ж таки знадобиться згадати шлях до неї. При цьому не повинно виникнути жодних помилок. Якщо ж вони з'явилися, вам знадобиться допомога.

ls -l /home/paddy.ChPzzxqD

Тепер виконайте процес повернення до вихідного стану, виконавши три команди:

cd /home
rm -R paddy .ecryptfs/paddy
mv paddy.ChPzzxqD

Знову перезавантажтеся.

Сподіваюся, ці кроки допомогли вам. Якщо у вас виникли нерозв'язні проблеми, ви можете залишити запит на моїй гілці Ubuntu.

Режим сну при шифруванні

Більшість користувачів часто задаються питанням, чому в операційній системі Ubuntu немає режиму сну (hibernate) після виконання попередніх операцій (описаних раніше в цій статті) і як можна відновити таку можливість. Причина полягає в налаштованому шифруванні. Якщо у вас налаштовано шифрування домашньої директорії, розділ підкачки також шифрується, але за допомогою випадкового ключа. Коли ви переводите систему в режим hibernate, дані оперативної пам'яті зберігаються в розділі підкачки, при цьому вони шифруються випадковим ключем. При відновленні системи з режиму сну той ключ, яким проводилося шифрування розділу swap , вже втрачено безповоротно і система не може прочитати даний розділ. Відповідно, дані не можуть бути вилучені і повернення до попереднього стану неможливе.

Якщо у вашій системі не налаштовано шифрування розділів, то відновити можливість режиму сну в Ubuntu просто. Для цього достатньо виконати команди: ls -l /home/paddy.ChPzzxqD
rm -R paddy .ecryptfs/paddy

Але якщо в системі домашній розділ користувача та розділ підкачки шифруються, необхідно замінити шифрування розділу swap не випадковим ключем, а заздалегідь обраною ключовою фразою.

Однак, зверніть увагу, що для кожного користувача на комп'ютері знадобиться ця ключова фраза в момент завантаження системи.

Мною був випробуваний цей спосіб в обох випадках - як на звичайній системі Ubuntu 12.04, так і на системі Ubuntu, встановленій на віртуальній машині VirtualBox. В останньому випадку були проблеми з відображенням екрана при відновленні зі сплячого режиму. Але на звичайній системі все працювало чудово.

Підготовка

Введіть у терміналі наступну команду: sudo cryptsetup status crypt swap 1

У результаті ви побачите рядок, в якому буде позначено пристрій, який виглядає приблизно так: /dev/sda1

або /dev/sdb5

Цей пристрій є розділом підкачування swap у вашій системі. Запам'ятайте його, оскільки воно буде потрібне вам надалі.

За будь-яких змін у системі я завжди рекомендую виконувати повне резервне копіювання даних. У нашому випадку воно також буде корисним.

Налаштування режиму сну

Введіть такі команди. Переконайтеся, що ви замінили пристрій /dev/sdXN вашим розділом підкачки swap , створеним у пункті "Підготовка". При введенні команд вам слід суворо дотримуватись зазначеної послідовності:

sudo swapoff /dev/mapper/cryptswap1
sudo cryptsetup luksClose /dev/mapper/cryptswap1
sudo cryptsetup luksFormat cipher aes cbc essiv:sha256 verify passphrase key size 256 /dev/sdXN

WARNING!
========
Це буде перезаписувати дані на /dev/sda1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
sudo cryptsetup luksOpen /dev/sdXN cryptswap1

Введіть ключову фразу для пристрою /dev/sda1 (і повторіть її, щоб уникнути помилки):

sudo mk swap/dev/mapper/crypt swap 1
sudo swapon all
swapon s

Остання команда відобразить файлове ім'я пристрою /dev/crypt swap 1 .

Відкрийте у наданому редакторі файл налаштувань /etc/crypttab . Замініть у ньому рядок crypt swap 1 наступного (не забудьте при цьому замінити пристрій /dev/sdXN на пристрій підкачки): cryptswap1 /dev/sdXN none luks

Відредагуйте файл /usr/share/initramfstools/scripts/local-top/cryptroot . У ньому знайдіть рядок (зазвичай він має номер 288, але він може змінитися): message "cryptsetup: unknown error налаштування map device"

Перейдіть до наступного порожнього рядка (перед FSTYPE=") і вставте новий рядок (не забувши замінити пристрій /dev/sdXN): /sbin/cryptsetup luksOpen /dev/sdXN crypt swap 1

Відредагуйте файл /etc/acpi/hibetnate.sh. У першому порожньому рядку вставте значення: DEVICE="/dev/mapper/crypt swap 1"

Відредагуйте файл /etc/initramfstools/conf.d/resume. Замініть у ньому існуючий рядок наступного: RESUME=/dev/mapper/crypt swap 1

Потім відредагуйте файл /etc/polkit1/localauthoriyt/50-local.d/com.ubuntu.enable-hibernate.pkla . Файл спочатку не існує, тому потрібно спочатку створити його. Потім додайте до нього рядки:
Identity=unixuser:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

Нарешті відкрийте термінал і введіть у ньому команду: sudo update initramfs u k all

Перезавантажтеся.

Використання режиму сну

При наступному запуску Ubuntu Linux запитає вас про нову ключову фразу розділу підкачки. Введіть її та процес подальшого нормального входу в систему продовжиться.

TrueCrypt більше не підтримується, але dm-crypt та LUKS - відмінний варіант з відкритим вихідним кодом, що дозволяє шифрувати та використовувати шифровані дані.

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

У травні цього року зупинилася розробка програми TrueCrypt, відомого інструментального засобу з відкритим кодом, призначеного для шифрування дисків. Як багато хто з вас знає, це був один з дуже надійних інструментів, призначених для шифрування дисків. Прикро бачити зникнення інструменту такого калібру, але велич світу з відкритим вихідним кодом є такою, що є кілька інших інструментів з відкритим вихідним кодом, які допоможуть вам досягти безпеки за допомогою шифрування дисків, які, до того ж, мають багато конфігураційних налаштувань. Ми розглянемо два з них – dm-crypt та LUKS – як альтернативу TrueCrypt для платформи Linux. Давайте почнемо з короткого розгляду dm-crypt, а потім – LUKS.

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

Ресурси

Крок 01:Розглядаємо Dm-crypt

Назва програми dm-crypt є скороченням від device mapper-crypt (шифрування при відображенні пристрою). Як випливає з назви, вона базується на відображенні пристроїв – фреймворку ядра Linux, призначеному для відображення блокових пристроїв на віртуальні блокові пристрої вищого рівня. При відображенні пристроїв можна користуватися кількома функціями ядра, такими як dm-cache (створює гібридні томи), dm-verity (призначена для перевірки цілісності блоків, є частиною Chrome OS) і дуже популярним Docker. Для криптографічних цілей у dm-crypt застосовується фреймворк ядра Linux Crypto API.

Отже, якщо підбити підсумок, то додаток dm-crypt є підсистемою шифрування лише на рівні ядра, що пропонує прозоре шифрування диска: це означає, що файли доступними відразу після монтування диска - кінцевого користувача немає видимої затримки. Щоб шифрувати з використанням dm-crypt ви можете просто вказати один із симетричних шифрів, режим шифрування, ключ (будь-якого допустимого розміру), режим генерації IV, а потім /dev створити новий блоковий пристрій. Тепер при будь-якому записі на цей пристрій відбуватиметься шифрування, а при читанні – розшифровка. Ви можете як і зазвичай змонтувати на цьому пристрої файлову систему, або можете використовувати пристрій dm-crypt для створення інших конструкцій, таких як RAID або LVM. Таблиця відповідності для dm-crypt задається так:

Тут значення start-sector (початковий сектор), як правило, дорівнює 0, значення size (розмір) дорівнює розміру пристрою, що вказується в секторах, а target name є ім'ям, яке ви хочете присвоїти зашифрованому пристрою. Таблиця цільового відображення target-mapping table складається з наступних розділів:

[<#opt_params> ]

Крок 02:Розглядаємо LUKS

Як ми вже бачили на попередньому кроці, програма dm-crypt може самостійно шифрувати/розшифровувати дані. Але у нього є кілька недоліків - якщо додатком dm-crypt користуватися безпосередньо, то воно не буде створювати метадані на диску, і це може стати серйозною проблемою у випадку, якщо ви хочете забезпечити сумісність між різними дистрибутивами Linux. Крім того, додаток dm-crypt не підтримує використання кількох ключів, тоді як у реальних ситуаціях дуже важливо користуватися кількома ключами.

Саме з цих причин на світ з'явилася методика LUKS (Linux Unified Key Setup – Уніфіковане налаштування ключів у Linux). LUKS є Linux стандартом шифрування жорстких дисків і стандартизація дозволяє забезпечити сумісність різних дистрибутивів. Також підтримується використання кількох ключів та парольних фраз. В рамках такої стандартизації до зашифрованих даних додається заголовок LUKS і в цьому заголовку є вся інформація, необхідна для налаштування. Коли є такий заголовок з даними, користувачі можуть легко перейти на будь-який інший дистрибутив. Зараз у проекті dm-crypt рекомендується використовувати LUKS як кращий спосіб налаштування шифрування диска. Давайте розглянемо, як встановити утиліту cryptsetup і як використовувати для створення томів на основі LUKS.

Крок 03:Встановлення

Функціональні можливості рівня ядра, що застосовуються в dm-crypt, вже є у всіх дистрибутивах Linux; нам потрібно до них лише інтерфейс. Ми будемо користуватися утилітою cryptsetup, за допомогою якої можна створювати томи з використанням dm-crypt, стандарту LUKS, а також старої та доброї програми TrueCrypt. Для того, щоб встановити cryptsetup на дистрибутивах Debian/Ubuntu, ви можете скористатися такими командами:

$ sudo apt-get update $ sudo apt-get install cryptsetup

Перша команда синхронізує індексні файли ракети з вмістом їх репозиторіїв: вона отримує інформацію про останні версії всіх доступних пакетів. Друга команда завантажить та встановить на ваш комп'ютер пакет cryptsetup. Якщо ви використовуєте дистрибутив RHEL/Fedora/CentOS, для установки утиліти cryptsetup ви можете скористатися командою yum.

$ yum install cryptsetup-luks

Крок 04:Створення цільового файлу

Тепер, коли утиліта cryptsetup успішно встановлена, ми повинні створити цільовий файл, в якому зберігатиметься контейнер LUKS. Хоча є багато способів створення такого файлу, при його створенні необхідно виконати низку умов:

  • Файл не повинен складатися з кількох частин, розташованих у різних місцях диска, тобто для нього під час створення слід відразу виділити достатню кількість пам'яті.
  • Весь файл потрібно заповнити випадковими даними для того, щоб ніхто не міг сказати, де будуть розташовані дані, що застосовуються при шифруванні.

У створенні файлу, який буде задовольняти вищезазначеним умовам, нам може допомогти команда dd, хоча вона працюватиме порівняно повільно. Просто використовуйте її разом із файлом спеціального пристрою /dev/random, вказаним як вхідні дані, та цільового файлу, який має бути вказаний як вихідні дані. Приклад команди виглядає так:

$ dd if=/dev/random of=/home/nitish/basefile bs=1M count=128

В результаті в каталозі /home/nitish буде створено файл з ім'ям basefile, що має розмір 128 МБ. Однак, врахуйте, що виконання цієї команди може знадобитися досить великий час; в системі, якою користувався наш експерт, на це знадобилася година часу.

Крок 05:Створюємо dm-crypt LUKS

Після створення цільового файлу в цьому файлі необхідно створити розділ LUKS. Цей розділ служить як основний шар, з урахуванням якого будується все шифрування даних. Крім цього, у заголовку цього розділу (LUKS header) міститься вся інформація, потрібна для сумісності з іншими пристроями. Щоб створити розділ LUKS, застосовується команда cryptsetup:

$ cryptsetup -y luksFormat /home/nitish/basefile

Після того, як ви погодитеся з тим, що дані, що знаходяться всередині файлу basefile, будуть безповоротно видалені, введіть парольну фразу, а потім - її підтвердження буде створено розділ LUKS. Ви можете перевірити це за допомогою наступної команди file:

$ file basefile

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

Крок 06:Створюємо та монтуємо файлову систему

Контейнер LUKS, який ми створили на попередньому етапі, тепер доступний у вигляді файлу. У нашому прикладі це /home/nitish/basefile. Утиліта cryptsetup дозволяє відкривати контейнер LUKS як незалежний пристрій. Щоб це зробити, спочатку відобразіть файл контейнера на ім'я пристрою, а потім змонтуйте пристрій. Команда, що здійснює відображення, виглядає так:

Після того, як ви успішно введете парольну фразу, створену на попередньому кроці, контейнер LUKS буде відображено на ім'я volume1. Фактично відбувається відкриття файлу як локального пристрою типу loopback, так що решта системи тепер може обробляти файл, якби це був реальний пристрій.

Крок 07:Файлова система - продовження

Файл контейнера LUKS тепер доступний у системі як звичайний пристрій. Перш ніж ми зможемо використовувати його для звичайних операцій, ми повинні його відформатувати та створити на ньому файлову систему. Ви можете використовувати будь-яку файлову систему, яка підтримується у вашій системі. У моєму прикладі ми використовували ext4, оскільки це найновіша файлова система для систем Linux.

$ mkfs.ext4 -j /dev/mapper/volume1

Після того, як пристрій буде успішно відформатовано, наступним кроком буде його монтування. Спочатку ви повинні створити точку монтування, переважно /mnt (виходячи зі здорового глузду).

$ mkdir /mnt/files

Тепер виконуємо монтування:

Для перехресної перевірки скористайтеся командою df –h - ви наприкінці списку змонтованих пристроїв побачите пристрій "/dev/mapper/volume1". Видно, що заголовок LUKS вже займає у пристрої деяке місце.

Завдяки цьому кроку ви можете використовувати пристрій LUKS з файловою системою ext4. Просто використовуйте цей пристрій для зберігання файлів - все, що ви записуватимете на цей пристрій, буде шифруватися, а все, що ви читатимете з нього, буде розшифровано і показано вам.

Крок 08:Використання диска, що шифрується.

Ми виконали кілька кроків для того, щоб досягти цього результату, і якщо вам не дуже зрозуміло, як все це працює, ви, швидше за все, заплутаєтеся в тому, що потрібно зробити лише один раз (потрібно для встановлення), і в тому, що Необхідно робити регулярно під час використання шифрування. Давайте розглянемо наступний сценарій: ви успішно виконали всі описані вище кроки, а потім вимкнули комп'ютер. Наступного дня, коли ви запускаєте ваш комп'ютер, ви не в змозі знайти змонтований пристрій – куди він подівся? Щоб з усім цим розібратися, потрібно мати на увазі, що після запуску системи потрібно змонтувати контейнер LUKS, а перед зупинкою комп'ютера розмонтувати.

Щоб отримати доступ до файлу LUKS, кожного разу, коли ви вмикаєте комп'ютер, виконуйте наступні дії, а потім перш ніж вимкнути комп'ютер, безпечно закривайте файл:

Відкрийте файл LUKS (тобто /home/nitish/basefile) та введіть пароль. Команда виглядає так:

$ cryptsetup luksOpen /home/nitish/basefile volume1

Після того, як файл буде відкритий, змонтуйте його (якщо він не вмонтовується автоматично):

$ mount /dev/mapper/volume1 /mnt/files

Тепер ви можете використовувати змонтований пристрій як звичайний диск та читати з нього або записувати на нього дані.

Після того, як все зробите, розмонтуйте пристрій таким чином:

$ umount /mnt/files

Після успішного встановлення, закрийте файл LUKS:

$ cryptsetup luksClose volume1

Крок 09:Резервне копіювання

Більшість втрат даних, що зберігаються в контейнері LUKS, пов'язані з пошкодженням заголовка LUKS або слотів із ключами. Крім того, що навіть через випадковий перезапис у пам'ять заголовка можуть бути пошкоджені заголовки LUKS, в реальних умовах також можливий повний вихід жорсткого диска з ладу. Найкращий спосіб захиститися від таких проблем – це резервне копіювання. Давайте подивимося, які доступні варіанти резервного копіювання.

Щоб створити резервну копію файлу заголовка LUKS, вкажіть у команді параметр luksHeaderBackup:

$ sudo cryptsetup luksHeaderBackup /home/nitish/basefile --header-backup-file /home/nitish/backupfile

Або, якщо ви хочете відновити файл із резервної копії, то вкажіть у команді параметр luksHeaderRestore:

$ sudo cryptsetup luksHeaderRestore /home/ nitish/basefile --header-backup-file /home/nitish/backupfile

Для перевірки файлу заголовка LUKS та перевірки того, що файл, з яким ви маєте справу, відповідає дійсно існуючому пристрою LUKS, ви можете скористатися параметром isLuks.

$ sudo cryptsetup -v isLuks /home/nitish/basefile

Ми вже бачили, як робити резервну копію файлів заголовків LUKS, але резервна копія заголовка LUKS насправді не захистить від повної відмови диска, так що вам за допомогою наступної команди cat необхідно зробити резервну копію всього розділу:

$ cat /home/nitish/basefile > basefile.img

Крок 10:Різні налаштування

Є кілька інших налаштувань, які при використанні шифрування dm-crypt LUKS можуть бути корисними. Давайте їх розглянемо.

Щоб зробити дамп заголовка LUKS, команда cryptsetup має параметр luksDump. Він дозволить вам зробити знімок файлу заголовка LUKS того пристрою, який ви використовуєте. Приклад команди виглядає так:

$ cryptsetup luksDump /home/nitish/basefile

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

$ cryptsetup luksAddKey --Key-slot 1 /home/nitish/basefile

Ця команда додає ключ до слота ключа з номером 1, але тільки після того, як ви введете поточний пароль (ключ, присутній у слоті ключа 0). Усього є вісім слотів ключів, і ви можете розшифровувати дані за допомогою будь-якого ключа. Якщо після того, як додали другий ключ, зробите дамп заголовка, ви побачите, що другий слот ключа зайнятий.

Ви можете видалити слоти з ключами таким чином:

$ cryptsetup luksRemoveKey /home/nitish/basefile

В результаті буде видалено слот з ключем із найбільшим номером слота. Будьте обережні і не видаляйте всі слоти, інакше ваші дані будуть назавжди втрачені.

Боротьба з піратством набирає нових обертів, правовласники та держоргани подвоюють свої зусилля у цій нелегкій справі. Вважаю, кожен з нас подумував про те, щоб захистити особисті файли від зазіхання з боку «несподіваних гостей», та й просто допитливих осіб.

Вступ

Шифрування дисків будемо проводити стандартними засобами Ubuntu, причому ключ шифрування, як і розділ /boot, буде винесений змінний накопичувач. Але навіщо шифрувати кореневий розділ? Адже можна зашифрувати лише /home? На це є кілька причин. Перша - на основі конфігураційних файлів з / etc можна отримати деяку інформацію, нехай навіть вона не відноситься до конфіденційних даних. Друга - якщо раптом вмістом диска зацікавляться, ти завжди зможеш сказати, що все так і було і що диск вже був забитий псевдовипадковими даними. Отже, що для цього знадобиться?

  • Флешка з MBR
  • Ubuntu 12.10
  • Чистий жорсткий диск

Як алгоритм шифрування дисків будемо використовувати AES, оскільки він прийнятий як стандарт і криптостійкий, а як засіб - cryptsetup/LUKS. Щоб мати можливість додати вільне місце поверх зашифрованого тома, задіємо логічні томи (LVM).

Створення шифрованого тому

Завантажившись із LiveCD, необхідно підготувати флешку: створити на ній другий розділ, де буде розміщено /boot та ключ шифрування. Створюючи розділ /boot з ФС ext2 другим, ми вбиваємо двох зайців - перший розділ буде видно у всіх системах, і на ньому можна зберігати дані, а другий з Windows так просто не побачиш, що додає незручності цікавим. Для розбиття я використав gparted, але тобі ніхто не заважає використовувати, наприклад fdisk. Після цього потрібно підмонтувати новий розділ і згенерувати ключовий файл:

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


Розберемо, що робить ця команда. Перший ключ вказує тип хеш-функції, яка використовуватиметься для хешування майстер-ключа. Другий ключ вказує алгоритм та тип шифрування. На цьому я зупинюся трохи докладніше. Що таке CBC? Як відомо, AES - блоковий шифр, який оперує блоками 128, 192 або 256 біт. Але, як правило, шифрують набагато більші обсяги інформації. І виникає проблема – як шифрувати, щоб не було видно невипадкового розподілу, з якого криптоаналітик може отримати інформацію. Розумні люди вирішили її так: у першому блоці знаходиться IV - випадковий набір бітів. І кожен наступний блок відкритих даних XOR'іє з попереднім блоком вже зашифрованих даних. Все начебто добре, але у разі шифрування дисків така схема, зі зрозумілих причин, не застосовна (ти ж не чекатимеш щоразу по 10-20 хвилин, поки система розшифровує потрібну тобі ділянку?). У LUKS для вирішення проблеми довільного доступу до інформації застосовується ESSIV – шифруються відносно невеликі блоки даних (посекторно), а вектор ініціалізації генерується на основі номера сектора та хешу ключа. Така схема також захищає від деяких криптоатак. Зокрема, тому я використовую LUKS. Підтвердивши свої наміри після запуску попередньої команди, створюємо відображення LUKS-пристрою:

# cryptsetup -d=/mnt/boot/key.bin luksOpen /dev/sdd cryptodisk

Перший етап підготовки завершено - тепер у каталозі /dev/mapper з'явився пристрій cryptodisk, з яким можна поводитися, як із звичайним диском.


Створюємо LVM поверх шифрованого тому

В принципі тепер можна на новостворений криптодиск ставити Ubuntu, але, як я вже писав, щоб отримати можливість збільшити місце, поверх нього краще створити том LVM, що ми і зробимо. Проініціалізуємо фізичний том і створимо групу томів:

Тепер можна форматувати їх у файлові системи. Ти вільний вибирати сам, я ж використовував як для кореневого тому, так і для vg-home стару добру ext4 - на мій погляд, ми і так надто накрутили, щоб використовувати нові ФС:

Нам залишилося всього лише встановити Ubuntu на нешифрований розділ/диск і перенести її на шифрований.

Підготовка та перенесення Ubuntu

Тепер ставимо на нешифрований диск Ubuntu - конфігурацію роби на власний смак за винятком розміщення /boot та завантажувача. Їх необхідно помістити на флешці, де ти заздалегідь створив відповідний розділ. Після цього завантажуємося з флешки, щоб перевірити, чи все стало коректно, встановлюємо за допомогою apt-get пакети lvm2 і cryptsetup - вони віддалилися автоматично після установки Ubuntu - і додаємо/змінюємо рядки /etc/fstab. Повинно вийти щось подібне (за винятком рядків із псевдофайловими системами, яких, втім, у сучасних системах немає):

/ etc / fstab UUID = dd7ca139 - 074a - 4b1b - a116 - 3a42feab7459 / boot ext2 defaults 0 2 / dev / mapper / vg - root / ext4 errors = remount - ro 0 1 / dev / mapper / vg 0 1 / dev / mapper / vg - swap none swap sw 0 0

Розділ /boot ми монтуємо по UUID для того, щоб при додаванні нових дисків не виникла плутанина з їхніми іменами. Тепер йдемо у файл /etc/crypttab, він у нас приблизно наступного змісту:

Створимо скрипт для того, щоб зайвий раз не монтувати флешку:

Копіюємо ключ і cryptsetup

cp / boot / key .bin $ ( DESTDIR ) / etc / crypto copy_exec / sbin / cryptsetup / sbin

І власне скрипт для підключення криптодиска (виконується під час завантаження initrd):

/etc/initramfs-tools/scripts/local-top/cryptokeys. . . modprobe - b dm_crypt while! / sbin / cryptsetup - d = / etc / crypto / key .bin luksOpen / dev / disk / by - uuid / c34e4c91 - 1fa1 - 4802 - 88ca - 9c3be5c99097 cryptodisk ; do echo "Try again..." done

Цикл while необхідний, якщо надалі ти додаси розблокування тома за паролем. Обидва скрипти повинні бути виконуваними, інакше наступна команда їх не побачить і створюватиме стандартний образ. Тепер можна давати команду оновлення initrd:

# update initrd -u -k all -v

Ми мало не забули про конфіг завантажувача. Є два шляхи його редагування: один простий але неправильний - пряме редагування файлу /boot/grub/grub.cfg, другий теж простий, але цього разу вірний. Некоректність першого способу в тому, що при кожному оновленні ядра конфіг перезаписується з використанням скриптів /etc/grub.d/. Ми ж підемо іншим шляхом – додамо скрипт, який якраз і генеруватиме правильні рядки у реальному грабовському конфізі. Однак є одне "але" - при оновленні ядра тобі доведеться або змінювати його щоразу, або залишатися на старому (останнє, на мій погляд, краще - див. врізання). Ось так приблизно виглядають його рядки:

/ etc / grub .d / 40_custom menuentry " Ubuntu crypto " ( recordfail = 1 if [ - n $ ( have_grubenv ) ] ) ; then save_env recordfail ; fi set quiet = 1

UUID беремо із заздалегідь записаного файлу

search -- no - floppy -- fs - uuid -- set = root dd7ca139 - 074a - 4b1b - a116 - 3a42feab7459

Розділ /boot для Grub вважається кореневим, тому шляхи до ядра та образу initrd вказуються щодо нього

За бажанням можна вимкнути непотрібні пункти меню. Для цього просто зніми право виконання з усіх непотрібних скриптів /etc/grub.d/. Тепер можна оновити основний конфіг:

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


Додавання/зміна ключів

Допустимо, тобі знадобилося змінити ключ - ти його скомпрометував або просто створив політику зміни і хочеш неухильно дотримуватися її. Що для цього потрібно? Насамперед зробити резервну копію заголовка тому LUKS - якщо все буде нормально, після зміни ключа ти зможеш її знищити. Робимо ми її, зрозуміло, на нешифрований розділ:

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

Існує безліч причин зашифрувати дані на своєму жорсткому диску, але розплатою за безпеку даних буде зниження швидкості роботи системи. Мета цієї статті – порівняти продуктивність при роботі з диском, зашифрованим різними засобами.

Щоб різниця була драматичнішою, ми вибрали не суперсучасну, а середньостатистичну машину. Звичайний механічний хард на 500 Гбайт, двоядерний AMD на 2,2 ГГц, 4 гіга оперативної пам'яті, 64-бітна Windows 7 SP 1. Жодних антивірусів та інших програм під час тесту запущено не буде, щоб ніщо не змогло вплинути на результати.

Для оцінки продуктивності я вибрав CrystalDiskMark. Щодо тестованих засобів шифрування, то я зупинився на такому списку: BitLocker, TrueCrypt, VeraCrypt, CipherShed, Symantec Endpoint Encryption та CyberSafe Top Secret.

BitLocker

Це стандартний засіб шифрування дисків, вбудований у Microsoft Windows. Багато хто просто використовують його, не встановлюючи сторонніх програм. Справді, навіщо, якщо вже всі є в системі? З одного боку, правильно. З іншого боку, код закритий, і немає впевненості, що в ньому не залишили бекдорів для ФБР та інших.

Шифрування диска здійснюється за алгоритмом AES із довжиною ключа 128 або 256 біт. Ключ може зберігатися в Trusted Platform Module, на самому комп'ютері або на флешці.

Якщо використовується TPM, то при завантаженні комп'ютера ключ може бути отриманий з нього або після автентифікації. Авторизуватись можна за допомогою ключа на флешці або ввівши PIN-код з клавіатури. Комбінації цих методів дають безліч варіантів обмеження доступу: просто TPM, TPM і USB, TPM і PIN чи всі три відразу.

BitLocker має дві незаперечні переваги: ​​по-перше, ним можна керувати через групові політики; по-друге, він шифрує томи, а чи не фізичні диски. Це дозволяє зашифрувати масив із кількох дисків, чого не вміють робити деякі інші засоби шифрування. Також BitLocker підтримує GUID Partition Table (GPT), чим не може похвалитися навіть найбільш просунутий форк "Трукрипта" VeraCrypt. Щоб зашифрувати з його допомогою системний GPT-диск, доведеться спочатку конвертувати формат MBR. У випадку з BitLocker це не потрібно.

Загалом, недолік один – закриті вихідники. Якщо ти зберігаєш секрети від домочадців, BitLocker чудово підійде. Якщо ж твій диск забитий документами державної ваги, краще підшукати щось інше.

Чи можна розшифрувати BitLocker та TrueCrypt

Якщо попросити Google, він знайде цікаву програму Elcomsoft Forensic Disk Decryptor, придатну для розшифрування дисків BitLocker, TrueCrypt і PGP. В рамках цієї статті випробовувати її не стану, але поділюся враженнями про іншу утиліту від Elcomsoft, а саме Advanced EFS Data Recovery. Вона чудово розшифровувала EFS-папки, але за умови, що пароль користувача не було встановлено. Якщо задати пароль хоч 1234, програма виявлялася безсилою. У всякому разі, розшифрувати зашифровану EFS-папку, що належить користувачеві з паролем 111, мені не вдалося. Думаю, з продуктом Forensic Disk Decryptor ситуація буде такою самою.

TrueCrypt

Це легендарна програма шифрування дисків, розробку якої було припинено у 2012 році. Історія, яка трапилася з TrueCrypt, досі вкрита мороком, і до ладу ніхто не знає, чому розробник вирішив відмовитися від підтримки свого дітища.

Є лише крихти інформації, що не дозволяють скласти пазл воєдино. Так, у 2013 році розпочалося збирання коштів для проведення незалежного аудиту TrueCrypt. Причиною прослужила отримана від Едварда Сноуден інформація про навмисне ослаблення засобів шифрування TrueCrypt. На аудит було зібрано понад 60 тисяч доларів. На початку квітня 2015 року роботи було завершено, але жодних серйозних помилок, уразливостей чи інших суттєвих недоліків в архітектурі програми виявлено не було.

Як тільки закінчився аудит, TrueCrypt знову опинився у центрі скандалу. Фахівці компанії ESET опублікували звіт про те, що російськомовна версія TrueCrypt 7.1a, завантажена із сайту truecrypt.ru, містила мальвар. Більше того, сам сайт truecrypt.ru використовувався як командний центр – з нього відправлялися команди інфікованим комп'ютерам. Загалом, будь пильний і не завантажуй програми, звідки потрапило.

До переваг TrueCrypt можна віднести відкриті вихідні коди, надійність яких тепер підкріплена незалежним аудитом, і підтримку динамічних томів Windows. Недоліки: програма більше не розвивається і розробники не встигли реалізувати підтримку UEFI/GPT. Але якщо мета - зашифрувати один несистемний диск, це неважливо.

На відміну від BitLocker, де підтримується тільки AES, у TrueCrypt є ще Serpent та Twofish. Для генерації ключів шифрування, солі та ключа заголовка програма дозволяє вибрати одну з трьох хеш-функцій: HMAC-RIPEMD-160, HMAC-Whirlpool, HMAC-SHA-512. Однак про TrueCrypt вже багато чого було написано, тож не будемо повторюватися.

VeraCrypt

Найбільш сучасний клон TrueCrypt. Він має власний формат, хоча є можливість роботи в режимі TrueCrypt, в якому підтримуються зашифровані та віртуальні диски у форматі «Трукрипта». На відміну від CipherShed, VeraCrypt може бути встановлена ​​на той самий комп'ютер одночасно з TrueCrypt.

INFO

Самоусунувшись, TrueCrypt залишив багату спадщину: у нього безліч форків, починаючи з VeraCrypt, CipherShed та DiskCryptor.

У TrueCrypt використовується 1000 ітерацій при генерації ключа, яким буде зашифрований системний розділ, а VeraCrypt використовує 327661 ітерацію. Для стандартних (не системних) розділів VeraCrypt використовує 655331 ітерацію для хеш-функції RIPEMD-160 і 500000 ітерацій для SHA-2 і Whirlpool. Це робить зашифровані розділи суттєво стійкішими до атаки прямим перебором, але значно знижує продуктивність роботи з таким розділом. Наскільки значно ми скоро з'ясуємо.

Серед переваг VeraCrypt – відкритий вихідний код, а також власний та більш захищений у порівнянні з TrueCrypt формат віртуальних та зашифрованих дисків. Недоліки ті ж, що й у випадку з прабатьком, - відсутність підтримки UEFI/GPT. Зашифрувати системний GPT-диск, як і раніше, не можна, але розробники запевняють, що працюють над цією проблемою і скоро таке шифрування буде доступним. Ось тільки працюють вони над цим уже два роки (з 2014-го), і коли буде реліз із підтримкою GPT і чи буде він взагалі, поки що не відомо.

CipherShed

Ще один клон TrueCrypt. На відміну від VeraCrypt, він використовує вихідний формат TrueCrypt, тому очікується, що його продуктивність буде близька до продуктивності TrueCrypt.

Переваги і недоліки все ті ж, хоча до недоліків можна додати неможливість установки TrueCrypt і CipherShed на одному комп'ютері. Мало того, якщо спробувати встановити CipherShed на машину з встановленим TrueCrypt, то інсталятор пропонує видалити попередню програму, але не справляється із завданням.

Symantec Endpoint Encryption

У 2010 році компанія Symantec викупила права на програму PGPdisk. В результаті з'явилися такі продукти як PGP Desktop і, згодом, Endpoint Encryption. Саме її ми розглянемо. Програма, звичайно, пропрієтарна, вихідники закриті, і одна ліцензія коштує 64 євро. Проте тут є підтримка GPT, але тільки починаючи з Windows 8.

Іншими словами, якщо потрібна підтримка GPT і є бажання зашифрувати системний розділ, доведеться вибирати між двома пропрієтарними рішеннями: BitLocker і Endpoint Encryption. Навряд, звичайно, домашній користувач буде встановлювати Endpoint Encryption. Проблема в тому, що для цього потрібно Symantec Drive Encryption, для встановлення якого потрібні агент і сервер керування Symantec Endpoint Encryption (SEE), а сервер хоче поставити ще IIS 6.0. Чи не забагато будь-якого добра для однієї програми для шифрування диска? Ми пройшли через це тільки заради того, щоб заміряти продуктивність.

Момент істини

Отже, приступаємо до найцікавішого, саме до тестування. Насамперед потрібно перевірити продуктивність диска без шифрування. Нашою "жертвою" буде розділ жорсткого диска (звичайного, не SSD) розміром 28 Гбайт, відформатований як NTFS.

Відкриваємо CrystalDiskMark, вибираємо кількість проходів, розмір тимчасового файлу (у всіх тестах будемо використовувати 1 Гбпйт) та сам диск. Варто зазначити, що кількість проходів практично не впливає на результати. На першому скріншоті показані результати виміру продуктивності диска без шифрування з числом проходів 5, на другому - з числом проходів 3. Як бачиш, результати практично ідентичні, тому зупинимося на трьох проходах.


Результати CrystalDiskMark слід трактувати так:

  • Seq Q32T1 - тест послідовного запису/послідовного читання, кількість черг - 32, потоків - 1;
  • 4K Q32T1 - тест випадкового запису/випадкового читання (розмір блоку 4 Кбайт, кількість черг - 32, потоків - 1);
  • Seq - тест послідовного запису/послідовного читання;
  • 4K - тест випадкового запису/випадкового читання (розмір блоку 4 Кбайт);

Почнемо з BitLocker. На шифрування розділу розміром 28 Гбайт було витрачено 19 хвилин.

Продовження статті доступне лише передплатникам

Варіант 1. Оформи передплату на «Хакер», щоб читати всі статті на сайті

Підписка дозволить тобі протягом зазначеного терміну читати ВСІ платні матеріали сайту, включаючи цю статтю. Ми приймаємо оплату банківськими картками, електронними грошима та переказами з рахунків мобільних операторів.

Вимоги до конфіденційності та безпеки комп'ютера повністю визначаються характером даних, що зберігаються на ньому. Одна справа якщо ваш комп'ютер служить розважальною станцією і на ньому крім кількох іграшок і папочки з фотографіями коханого котика нічого немає і зовсім інше - якщо на жорсткому диску є дані, що є комерційною таємницею, що потенційно представляють інтерес для конкурентів.

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


Наступний ступінь захисту – права доступу на рівні файлової системи. Користувач, який не має дозвільних привілеїв, при спробі отримати доступ до файлів отримає помилку.


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

Першим способом, що розглядається сьогодні, буде вбудований криптозахист від Microsoft. Шифрування, назване BitLocker, вперше з'явилося у Windows 8. Убезпечити з його допомогою окрему папку або файл не вийде, доступне лише шифрування всього диска повністю. Із цього зокрема випливає той факт, що шифрувати системний диск не можна (система не зможе завантажитись), зберігати важливі дані в системних бібліотеках типу «Мої документи» також не можна (за умовчанням вони розміщуються на системному розділі).
Щоб увімкнути вбудоване шифрування, виконайте таке:

DiskCryptor

Другою криптографічною утилітою, що розглядається сьогодні, є DiskCryptor - безкоштовне рішення з відкритим вихідним кодом. Щоб використати його, скористайтеся наступною інструкцією:

Безумовним плюсом цієї утиліти, порівняно з механізмом BitLocker, є те, що використовувати її можна на системах, що вийшли до Windows 8 (підтримується навіть знята з підтримки Windows XP). Але DiskCryptor має кілька істотних мінусів:

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

Резюмуючи, можу сказати, що якщо на комп'ютері встановлена ​​ОС починаючи з Windows 8, то краще використовувати вбудований функціонал.

Ця документація переміщена до архіву і не підтримується.

Загальні відомості про шифрування диска BitLocker

Призначення: Windows Server 2008, Windows Server 2008 R2, Windows Vista

Шифрування диска BitLocker - це можливість захисту даних, доступна в Windows Server 2008 R2 і деяких випусках Windows 7. Інтеграція BitLocker в операційну систему протидіє загрозам крадіжки або вразливості даних, захищаючи від втрати, крадіжки або неправильного списання комп'ютерів.

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

Шифрування BitLocker забезпечує максимальний захист під час використання з довіреним платформним модулем (TPM) версії 1.2. Модуль TPM - це апаратний компонент, що встановлюється у багато сучасних комп'ютерів їх виробниками. Він працює разом із шифруванням BitLocker, допомагаючи захистити дані користувача та гарантуючи, що комп'ютер не був підмінений, доки система була вимкнена.

На комп'ютерах без встановленого довіреного платформного модуля версії 1.2 шифрування BitLocker можна використовувати для шифрування диска операційної системи Windows. Але ця реалізація вимагатиме від користувача вставляти USB-ключ запуску, щоб запустити комп'ютер або вивести його з режиму сну, і не забезпечує перевірку цілісності системи перед запуском, що надається шифруванням BitLocker з довіреним платформним модулем.

Крім довіреного платформного модуля, шифрування BitLocker надає можливість блокування звичайного процесу запуску, доки користувач не введе персональний ідентифікаційний номер (ПІН) або не вставить знімний пристрій, наприклад USB-пристрій флеш-пам'яті, що містить ключ запуску. Ці додаткові заходи безпеки забезпечують багатофакторну автентифікацію та гарантію, що комп'ютер не буде запущений або виведений зі сплячого режиму, доки не буде надано правильний PIN або ключ запуску.

Перевірка цілісності системи

Шифрування BitLocker може використовувати довірений модуль платформи для перевірки цілісності компонентів завантаження і даних конфігурації завантаження. Це допомагає гарантувати, що при використанні шифрування BitLocker шифрований диск буде доступний, тільки якщо ці компоненти не були підмінені і шифрований диск встановлений на комп'ютері.

Шифрування BitLocker допомагає гарантувати цілісність процесу запуску за допомогою таких дій.

  • Забезпечення способу перевірки цілісності кореневого файлу та файлів, що використовуються на ранніх етапах завантаження, та гарантування відсутності ворожих змін у цих файлах, які могли бути виконані, наприклад, вірусами завантажувальних секторів або засобами редагування компонентів завантаження.
  • Покращений захист, що протистоїть програмним атакам, коли комп'ютер перебуває поза мережею. Будь-яке альтернативне програмне забезпечення, яке може запустити систему, не отримає доступу до ключів шифрування для дисків операційної системи Windows.
  • Блокування системи під час заміни файлу. Якщо будь-який із контрольованих файлів був замінений, система не запуститься. Це попередить користувача про заміну, оскільки система не зможе бути запущена у звичайному порядку. У разі блокування системи шифрування BitLocker забезпечить простий відновлення.

    Вимоги до обладнання, мікропрограм та програмного забезпечення

    Для використання BitLocker комп'ютер повинен відповідати певним вимогам.

    • Щоб шифрування BitLocker могло використовувати можливість перевірки цілісності системи, що надається довіреним платформним модулем, на комп'ютері має бути встановлений модуль версії 1.2. Якщо на комп'ютері не встановлено довірений платформний модуль, то при увімкненні шифрування BitLocker потрібно зберегти ключ запуску на знімному пристрої, наприклад USB флеш-пам'яті.
    • На комп'ютері з модулем TPM також має бути встановлена ​​BIOS, що відповідає специфікаціям групи Trusted Computing Group (TCG). BIOS створює ланцюжок довіри для дій перед завантаженням операційної системи та має включати підтримку статичного кореневого об'єкта вимірювання рівня довіри, визначеного TCG. Для комп'ютера без модуля TPM відповідність BIOS специфікаціям TCG не потрібна.
    • BIOS системи (для комп'ютерів як з довіреним платформним модулем, так і без нього) повинна підтримувати клас пам'яті USB, включаючи читання невеликих файлів з USB-пристрою флеш-пам'яті в середовищі до запуску операційної системи. Щоб отримати додаткові відомості про USB, див. специфікації USB-накопичувачів та команд USB-накопичувачів на веб-сайті USB (http://go.microsoft.com/fwlink/?LinkId=83120).
    • Жорсткий диск має бути розбитий хоча б на два диски.
      • Диск операційної системи (або завантажувальний диск) містить операційну систему та файли, необхідні для її роботи, він повинен бути відформатований у файловій системі NTFS.
      • Системний диск містить файли, необхідні для завантаження Windows після того, як BIOS завантажить платформу. Для цього диска шифрування BitLocker не вмикається. Для роботи шифрування BitLocker системний диск не повинен бути зашифрований, він не повинен бути томом операційної системи і повинен бути форматований у файловій системі NTFS. Місткість системного диска має бути не менше 1,5 гігабайт (ГБ).

    Встановлення та ініціалізація

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

    У будь-який момент часу після встановлення та початкового налаштування операційної системи адміністратор може використовувати майстер налаштування BitLocker для ініціалізації шифрування BitLocker. Процес ініціалізації складається із двох етапів:

    1. На комп'ютерах з довіреним платформним модулем ініціалізуйте останній, використовуючи майстер установки довіреного платформного модуля, компонент панелі керування Шифрування диска BitLocker, або виконавши сценарій, призначений для ініціалізації модуля.
    2. Налаштуйте шифрування BitLocker. Відкрийте з панелі керування майстер налаштування шифрування BitLocker, який проведе через процес налаштування та надасть можливість налаштувати додаткові параметри автентифікації.

    При ініціалізації шифрування BitLocker локальному адміністратору слід також створити пароль відновлення та ключ відновлення. Без пароля відновлення або ключа відновлення всі дані на шифрованому диску можуть виявитися недоступними у разі проблеми з диском, захищеним шифруванням BitLocker.

    Докладніші відомості про налаштування та розгортання шифрування BitLocker див. у покроковому посібнику з шифрування диска Windows BitLocker (http://go.microsoft.com/fwlink/?LinkID=140225).

    Корпоративна реалізація

    Шифрування BitLocker може використовувати існуючу інфраструктуру доменних служб Active Directory (AD DS) організації для віддаленого зберігання ключів відновлення. Шифрування BitLocker надає майстер для налаштування та керування, а також можливості розширення та керування за допомогою інтерфейсу WMI з підтримкою сценаріїв. Крім того, шифрування BitLocker надає консоль відновлення, вбудовану в процес завантаження, щоб дозволити користувачеві або персоналу служби підтримки відновити доступ до заблокованого комп'ютера.

    Щоб отримати додаткові відомості про написання сценаріїв для шифрування BitLocker, див. Win32_EncryptableVolume (http://go.microsoft.com/fwlink/?LinkId=85983).

    Списання та повторне використання комп'ютера

    Анотація

    Попри усталену думку, пам'ять DRAM, що використовується в більшості сучасних комп'ютерів, зберігає в собі дані навіть після відключення живлення протягом декількох секунд або хвилин, причому це відбувається при кімнатній температурі і навіть у разі вилучення мікросхеми з материнської плати. Цього часу виявляється достатньо для зняття повного дампа оперативної пам'яті. Ми покажемо, що це явище дозволяє зловмиснику, який має фізичний доступ до системи, обійти функції ОС захисту даних про криптографічні ключі. Ми покажемо, як перезавантаження може використовуватися для того, щоб здійснювати успішні атаки на відомі системи шифрування жорстких дисків, не використовуючи спеціалізованих пристроїв або матеріалів. Ми експериментально визначимо ступінь і ймовірність збереження залишкової намагніченості і покажемо, що час, за який можна зняти дані, може бути істотно збільшено за допомогою простих прийомів. Також будуть запропоновані нові методи для пошуку криптографічних ключів у дампах пам'яті та виправлення помилок, пов'язаних із втратою бітів. Буде також розказано кілька способів зменшення даних ризиків, проте простого рішення нам невідомо.

    Вступ

    Більшість експертів походять від того, що дані з оперативної пам'яті комп'ютера стираються практично миттєво після відключення живлення, або вважають, що залишкові дані вкрай складно вилучити без використання спеціального обладнання. Ми покажемо, що ці припущення є некоректними. Звичайна DRAM пам'ять втрачає дані поступово протягом декількох секунд, навіть при звичайних температурах, а якщо навіть мікросхема пам'яті буде вилучена з материнської плати, дані зберігатимуться в ній протягом хвилин або навіть годин за умови зберігання цієї мікросхеми при низьких температурах. Залишкові дані можуть бути відновлені за допомогою простих методів, які потребують короткочасного фізичного доступу до комп'ютера.

    Ми покажемо ряд атак, які, використовуючи ефекти залишкової намагніченості DRAM, дозволять нам відновити ключі шифрування, що зберігаються в пам'яті. Це є реальною загрозою для користувачів ноутбуків, які покладаються на системи шифрування жорсткого диска. Адже якщо зловмисник викраде ноутбук, у той момент, коли зашифрований диск підключений, він зможе провести одну з наших атак для доступу до вмісту, навіть якщо сам ноутбук заблокований або знаходиться в сплячому режимі. Ми це продемонструємо, успішно атакуючи кілька популярних систем шифрування, таких як BitLocker, TrueCrypt та FileVault. Ці атаки мають бути успішними і щодо інших систем шифрування.

    Хоча ми зосередили наші зусилля на системах шифрування жорстких дисків, у разі фізичного доступу до комп'ютера зловмисника, будь-яка важлива інформація, що зберігається в оперативній пам'яті, може стати об'єктом для атаки. Ймовірно, і багато інших систем безпеки вразливі. Наприклад, ми виявили, що Mac OS X залишає паролі від облікових записів у пам'яті, звідки ми змогли їх видобути, так само ми зробили атаки на отримання закритих RSA ключів веб-сервера Apache.

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

    Атаки на зашифровані диски

    Шифрування жорстких дисків – це відомий спосіб захисту проти розкрадання даних. Багато хто вважає, що системи шифрування жорстких дисків дозволять захистити їх дані, навіть у тому випадку, якщо зловмисник отримав фізичний доступ до комп'ютера (власне для цього вони і потрібні, прим. ред.). Закон штату Каліфорнія, прийнятий 2002 року, зобов'язує повідомляти про можливі випадки розкриття персональних даних, лише тому випадку, якщо дані були зашифровані, т.к. вважається, що шифрування даних – це достатній захисний захід. Хоча закон не описує жодних конкретних технічних рішень, багато експертів рекомендують використовувати системи шифрування жорстких дисків або розділів, що вважатиметься достатніми засобами захисту. Результати нашого дослідження показали, що віра у шифрування дисків є необґрунтованою. Атакуючий, далеко не найвищої кваліфікації, може обійти багато широко використовуваних систем шифрування, якщо ноутбук з даними викрадений, в той час коли він був включений або знаходився в сплячому режимі. І дані на ноутбуці можуть бути прочитані навіть у тому випадку, коли вони знаходяться на зашифрованому диску, тому використання систем шифрування жорстких дисків не є достатньою мірою.

    Ми використовували кілька видів атак на відомі системи шифрування жорстких дисків. Найбільше часу зайняла установка зашифрованих дисків та перевірка коректності виявлених ключів шифрування. Отримання образу оперативної пам'яті та пошук ключів займали лише кілька хвилин і були повністю автоматизовані. Є підстави вважати, що більшість систем шифрування жорстких дисків схильні до подібних атак.

    BitLocker

    BitLocker – система, що входить до складу деяких версій Windows Vista. Вона функціонує як драйвер, що працює між файловою системою і драйвером жорсткого диска, шифруючи та розшифровуючи на вимогу вибрані сектори. Ключі, що використовуються для шифрування, знаходяться в оперативній пам'яті до тих пір, поки зашифрований диск підмонтований.

    Для шифрування кожного сектора жорсткого диска BitLocker використовує ту саму пару ключів, створених алгоритмом AES: ключ шифрування сектора і ключ шифрування, що працює в режимі зчеплення зашифрованих блоків (CBC). Ці два ключі, у свою чергу, зашифровані майстер ключем. Щоб зашифрувати сектор, проводиться процедура двійкового додавання відкритого тексту з сеансовим ключем, створеним шифруванням байта зміщення сектора ключем шифрування сектора. Потім, отримані дані обробляються двома функціями, що змішують, які використовують розроблений Microsoft алгоритм Elephant. Ці безключові функції використовуються для збільшення кількості змін усіх бітів шифру і, відповідно, збільшення невизначеності зашифрованих даних сектора. На останньому етапі дані шифруються алгоритмом AES в режимі CBC, з використанням відповідного ключа шифрування. Вектор ініціалізації визначається шляхом шифрування байта усунення сектора ключем шифрування, що використовується в режимі CBC.

    Нами була реалізована повністю автоматизована демонстраційна атака, названа BitUnlocker. При цьому використовується зовнішній USB диск з ОС Linux та модифікованим завантажувачем на основі SYSLINUX та драйвер FUSE, що дозволяє підключити зашифровані BitLocker диски в ОС Linux. На тестовому комп'ютері з працюючою Windows Vista відключалося живлення, підключався USB жорсткий диск, і з нього відбувалося завантаження. Після цього BitUnlocker автоматично робив дамп оперативної пам'яті на зовнішній диск, за допомогою програми keyfind здійснював пошук можливих ключів, випробував усі відповідні варіанти (пари ключа шифрування сектора та ключа режиму CBC), і у разі удачі підключав зашифрований диск. Як тільки диск підключався, з'являлася можливість працювати з ним як з будь-яким іншим диском. На сучасному ноутбуці із 2 гігабайтами оперативної пам'яті процес займав близько 25 хвилин.

    Примітно, що цю атаку стало можливим провести без реверс-інжинірингу будь-якого програмного забезпечення. У документації Microsoft система BitLocker описана достатньою мірою, для розуміння ролі ключа шифрування сектора і ключа режиму CBC і створення своєї програми, що реалізує весь процес.

    Основна відмінність BitLocker від інших програм цього класу – це спосіб зберігання ключів при вимкненому зашифрованому диску. За замовчуванням, в базовому режимі, BitLocker захищає майстер ключ тільки за допомогою модуля TPM, який існує на багатьох сучасних ПК. Даний спосіб, який, мабуть, широко використовується, особливо вразливий до нашої атаки, оскільки він дозволяє отримати ключі шифрування, навіть якщо комп'ютер був вимкнений протягом тривалого часу, оскільки, коли ПК завантажується, ключі автоматично підвантажуються в оперативну пам'ять (до появи вікна входу в систему) без введення будь-яких аутентифікаційних даних.

    Очевидно, фахівці Microsoft знайомі з цією проблемою і тому рекомендують налаштувати BitLocker в покращений режим, де захист ключів здійснюється, не тільки за допомогою TPM, але і паролем або ключем на зовнішньому носії USB . Але, навіть у такому режимі, система вразлива, якщо зловмисник отримає фізичний доступ до ПК в той момент, коли він працює (він навіть може бути заблокований або перебувати в сплячому режимі, (стани - просто вимкнений або hibernate в цьому випадку вважаються не підданими даній атаці).

    FileVault

    Система FileVault від Apple була частково досліджена та проведено реверс-інжиніринг. Mac OS X 10.4 FileVault використовує 128-бітовий ключ AES в режимі CBC. При введенні пароля користувача розшифровується заголовок, що містить ключ AES і другий ключ K2, який використовується для розрахунку векторів ініціалізації. Вектор ініціалізації для першого блоку диска розраховується як HMAC-SHA1 K2(I).

    Ми використовували нашу програму EFI для отримання образів оперативної пам'яті для отримання даних з комп'ютера Макінтош (який базується на процесорі Intel) з підключеним диском, зашифрованим FileVault. Після цього програма keyfind автоматично знаходила AES ключі FileVault.

    Без вектора ініціалізації, але з отриманим ключем AES з'являється можливість розшифрувати 4080 з 4096 байт кожного блоку диска (все крім першого AES блоку). Ми переконалися, що ініціалізаційний вектор також знаходиться у дампі. Припускаючи, що дані не встигли спотворитися, атакуючий може визначити вектор, по черзі пробуючи всі 160-бітові рядки в дампі і перевіряючи, чи можуть вони утворити можливий відкритий текст при їх бінарному додаванні з розшифрованою першою частиною блоку. Разом, використовуючи програми типу vilefault, ключі AES та ініціалізаційний вектор дозволяють повністю розшифровувати зашифрований диск.

    У процесі дослідження FileVault ми виявили, що Mac OS X 10.4 і 10.5 залишають множинні копії пароля користувача в пам'яті, де вони вразливі до цієї атаки. Паролі облікових записів часто використовуються для захисту ключів, які, в свою чергу, можуть використовуватися для захисту ключових фраз зашифрованих FileVault дисків.

    TrueCrypt

    TrueCrypt – популярна система шифрування з відкритим кодом, що працює на Windows, MacOS і Linux. Вона підтримує безліч алгоритмів, включаючи AES, Serpent та Twofish. У 4-ій версії, всі алгоритми працювали як LRW; у поточній 5-ій версії, вони використовують режим XTS. TrueCrypt зберігає ключ шифрування і tweak ключ у заголовку розділу на кожному диску, який зашифрований іншим ключем, що виходить з пароля, що вводиться користувачем.

    Ми тестували TrueCrypt 4.3a та 5.0a, що працюють під ОС Linux. Ми підключили диск, зашифрований за допомогою 256-бітного ключа AES, потім відключили живлення і використовували для завантаження власне ПЗ для дампа пам'яті. В обох випадках, keyfind виявила 256-бітний непошкоджений ключ шифрування. Так само, у випадку TrueCrypt 5.0.a, keyfind змогла відновити tweak ключ режиму XTS.

    Щоб розшифрувати диски створені TrueCrypt 4, необхідний tweak ключ режиму LRW. Ми виявили, що система зберігає його у чотирьох словах перед ключовим розкладом ключа AES. У нашій дампі, LRW ключ не був спотворений. (У разі появи помилок ми все одно змогли б відновити ключ).

    Dm-crypt

    Ядро Linux, починаючи з версії 2.6, включає вбудовану підтримку dm-crypt - підсистеми шифрування дисків. Dm-crypt використовує безліч алгоритмів і режимів, але, за замовчуванням, вона використовує 128-бітний шифр AES в режимі CBC з векторами ініціалізації створюваними не на основі ключової інформації.

    Ми тестували створений dm-crypt розділ, використовуючи LUKS (Linux Unified Key Setup) гілку утиліти cryptsetup та ядро ​​2.6.20. Диск був зашифрований за допомогою AES як CBC. Ми ненадовго відключили живлення та, використовуючи модифікований PXE завантажувач, зробили дамп пам'яті. Програма keyfind виявила коректний 128-бітний ключ AES, який і був відновлений без будь-яких помилок. Після відновлення, зловмисник може розшифрувати і підключити розділ зашифрований dm-crypt, модифікуючи утиліту cryptsetup таким чином, щоб вона сприймала ключі в необхідному форматі.

    Способи захисту та їх обмеження

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

    Перезапис пам'яті

    Насамперед, треба по можливості уникати зберігання ключів у ОЗУ. Необхідно перезаписувати ключову інформацію, якщо вона більше не використовується, і запобігати копіюванню даних у файли підкачування. Пам'ять повинна заздалегідь очищатися засобами ОС або додаткових бібліотек. Природно, ці заходи не захистять ключі, що використовуються в даний момент, оскільки вони повинні зберігатися в пам'яті, наприклад такі ключі як, що використовуються для шифрованих дисків або на захищених веб серверах.

    Також, ОЗУ повинна очищатися в процесі завантаження. Деякі ПК можуть бути налаштовані таким чином, щоб очищати ОЗУ при завантаженні за допомогою очищуючого запиту POST (Power-on Self-Test) до того як завантажувати ОС. Якщо зловмисник не зможе запобігти виконанню цього запиту, то на даному ПК у нього не буде можливості зробити дамп пам'яті з важливою інформацією. Однак, у нього все ще залишається можливість витягнути мікросхеми ОЗУ і вставити їх в інший ПК з необхідними налаштуваннями BIOS.

    Обмеження завантаження з мережі або зі знімних носіїв

    Багато наших атак були реалізовані з використанням завантаження по мережі або зі знімного носія. ПК має бути налаштований так, щоб вимагати пароль адміністратора для завантаження з цих джерел. Але, необхідно відзначити, що навіть якщо система налаштована на завантаження тільки з основного жорсткого диска, атакуючий може змінити сам жорсткий диск, або в багатьох випадках, скинути комп'ютер NVRAM для відкату на початкові налаштування BIOS.

    Безпечний режим сну

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

    У більшості систем шифрування жорстких дисків користувачі можуть захиститися вимкненням ПК. (Система Bitlocker у базовому режимі роботи TPM модуля залишається вразливою, оскільки диск буде підключено автоматично, коли ПК буде увімкнено). Вміст пам'яті може зберігатися протягом короткого періоду після відключення, тому рекомендується спостерігати за своєю робочою станцією протягом декількох хвилин. Незважаючи на свою ефективність, цей захід вкрай незручний у зв'язку з тривалим завантаженням робочих станцій.

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

    Відмова від попередніх обчислень

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

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

    Розширення ключів

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

    На практиці, уявіть, що у нас є 256-розрядний AES ключ K, який в даний момент не використовується, але знадобиться пізніше. Ми не можемо перезаписати його, але хочемо зробити його стійким до спроб відновлення. Один із способів досягти цього – це виділити велику B-бітну область даних, заповнити її випадковими даними R, після чого зберігати в пам'яті результат наступного перетворення K+H(R) (підсумування двійкове, прим. ред.), де H – це хеш функція, наприклад, SHA-256.

    Тепер уявіть, що електрика була вимкнена, це призведе до того, що d біт в даній області буде змінено. Якщо хеш функція стійка, при спробі відновлення ключа K, зловмисник може розраховувати тільки на те, що він зможе вгадати, які біти області B були змінені приблизно з половини, які могли змінитися. Якщо d біти були змінені, зловмиснику доведеться провести пошук області розміром (B/2+d)/d щоб знайти коректні значення R і вже після цього відновити ключ K. Якщо область B велика, такий пошук може бути дуже довгий, навіть якщо d відносно мала.

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

    Фізичний захист

    Деякі з наших атак ґрунтувалися на наявності фізичного доступу до мікросхем пам'яті. Такі атаки можуть запобігти фізичному захисту пам'яті. Наприклад, модулі пам'яті знаходяться в закритому корпусі ПК, або залиті епоксидним клеєм, щоб запобігти спробам їх вилучення або доступу до них. Так само, можна реалізувати затирання пам'яті як реакцію у відповідь на низькі температури або спроби відкрити корпус. Такий спосіб потребує встановлення датчиків із незалежною системою живлення. Багато таких способів пов'язані з апаратурою, захищеною від несанкціонованого втручання (наприклад, співпроцесор IBM 4758) і можуть сильно підвищити вартість робочої станції . З іншого боку, використання пам'яті, припаяної до материнської плати, обійдеться набагато дешевше.

    Зміна архітектури

    Можна змінити архітектуру комп'ютера. Що неможливо для ПК, що вже використовуються, зате дозволить убезпечити нові.

    Перший підхід полягає в тому, щоб спроектувати DRAM модулі таким чином, щоб вони швидше стирали всі дані. Це може бути непросто, оскільки мета якнайшвидшого стирання даних, суперечить іншій меті, щоб дані не пропадали між періодами оновлення пам'яті.

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

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

    Довірені обчислення

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

    Модульи TPM не реалізують повне шифрування. Натомість вони спостерігають за процесом завантаження для прийняття рішення про те, чи безпечно завантажувати ключ у ОЗУ чи ні. Якщо ПЗ необхідно використовувати ключ, то можна реалізувати таку технологію: ключ, в придатній для використання формі не зберігатиметься в ОЗУ, доки процес завантаження не пройде за очікуваним сценарієм. Але, як тільки ключ опиняється в оперативній пам'яті - він одразу ставати мішенню для наших атак. TPM модулі можуть запобігти завантаженню ключа в пам'ять, але вони не запобігають його зчитуванню з пам'яті.

    Висновки

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

    Але й інші види ПЗ також уразливі. Системи керування цифровими правами (DRM) часто використовують симетричні ключі, що зберігаються в пам'яті, і їх можна отримати, використовуючи описані методи. Як ми показали, веб-сервера з підтримкою SSL теж уразливі, оскільки вони зберігають у пам'яті закриті ключі, необхідні для створення SSL сеансів. Наші способи пошуку ключової інформації, швидше за все, будуть ефективними для пошуку паролів, номерів рахунків та будь-якої іншої важливої ​​інформації, що зберігається в ОЗП.

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

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

    У результаті, можливо, доведеться розглядати DRAM пам'ять як не довірену компоненту сучасного ПК і уникати обробки важливої ​​конфіденційної інформації

 

 

Це цікаво: