[an error occurred while processing this directive]

Использование TRESOR для хранения ключей шифрования AES не в ОЗУ, а в регистрах CPU
При использовании зашифрованного раздела с конфиденциальной информацией,
злоумышленник, имеющий физический доступ к компьютеру, может воспользоваться
методом холодной перезагрузки
(https://www.opennet.ru/opennews/art.shtml?num=17035) для получения ключей
шифрования. Метод основан на способности оперативной памяти (DRAM) какое-то
время сохранять информацию после отключения питания и отсутствия импульсов
регенерации ее содержимого (при температуре -50 градусов данные сохраняются
более 10 минут). После холодной перезагрузки или переключении чипа памяти на
другое устройство память не обнуляется и данные старой рабочей сессии можно
проанализировать. Особенно актуальная проблема для ноутбуков, которые часто не
выключаются и лишь переводятся в ждущий режим, при котором ОЗУ не
обесточивается. В простейшем случае, восстановить ключ из памяти можно
используя утилиту msramdmp (http://www.mcgrewsecurity.com/tools/msramdmp/),
перезагрузившись в LiveCD (например, можно использовать msramdmp_cd.iso).

В рамках проекта TRESOR (http://www1.informatik.uni-erlangen.de/tresor)
подготовлены патчи для ядра Linux с реализацией модуля шифрования AES, который
сохраняет ключи в отладочных регистрах процессора и обрабатывает все операции
шифрования непосредственно в CPU, без копирования ключей в ОЗУ. TRESOR  может
использоваться на любых процессорах с поддержкой SSE2. При использовании
64-разрядных CPU с поддержкой набора инструкций AES-NI,  например, Intel Core
i5 или Core-i7, поддерживается работа с ключами AES 128, 192 и 256 без потери
производительности. При запуске на 32-разрядных CPU с поддержкой инструкций
SSE2, скорость выполнения шифрования примерно в 6 раз ниже, чем базовая
реализация AES для ядра Linux. При этом можно использовать только ключи длиной
128 бит.

Собираем ядро с патчем TRESOR.

Загружаем ядро 2.6.36 с http://kernel.org и распаковываем его в директорию /usr/src/linux-2.6.36.

Применяем патч (http://www1.informatik.uni-erlangen.de/tresor):

   cd /usr/src/
   patch --directory /usr/src/linux-2.6.36 -p1 < tresor-patch-2.6.36

Запускаем menuconfig и настраиваем параметры ядра, не забыв включить TRESOR
(Cryptographic API -> AES cipher algorithms (TRESOR)).

Собираем ядро. Ниже пример сборки и установки пакета для Debian GNU/Linux:

   cd /usr/src/linux-2.6.36
   make-kpkg kernel_image --initrd --revision tresor1
   cd /usr/src
   dpkg -i linux-image-2.6.36-tresor1.deb
   update-initramfs -c -k 2.6.36


Запускаем систему

Перезагружаемся, выбрав ядро с патчами TRESOR.

В ответ на приглашение TRESOR "Enter password" вводим пароль и подтверждаем валидность хэша:

   Enter password > ******** 
   Confirm key hash > 51 b7 fd ... 58 ac Correct (yes/no) > yes

Пароль может содержать от 8 до 53 символов. Возможности поменять пароль после
загрузки нет, поэтому к вводу пароля нужно отнестись внимательно иначе
потребуется лишний раз перезагружать систему. Выводимый хэш не является ключом
шифрования, а просто выводится для того чтобы можно было дополнительно
проверить правильность задания пароля.

После того как система загрузится можно попытаться перевести её в ждущий режим
и проверить работу TRESOR:

   echo mem > /sys/power/state

После возвращения из спящего режима должно быть выведено приглашение для ввода
пароля, такое же как после загрузки системы. Для проверки, что повторно
введенный пароль верен в памяти сохраняется необратимый проверочный хэш,
который позволяет удостовериться в правильности ввода, но не дает возможности
восстановить содержимое пароля и ключа шифрования. Проверка пароля необходима,
так как неправильно введенный пароль может привести к повреждению данных в уже
примонтированном зашифрованном разделе. Так как пароль вводится в консоли при
активном графическом режиме возможно потребуется ввести пароль вслепую.


Настройка шифрования

Устанавливаем утилиты для работы с dm-crypt:

   apt-get install cryptsetup

Если ядро собрано с поддержкой LKM, убедимся, что загружен модуль ядра dm_mod:

   modprobe dm_mod

В качестве демонстрации настроим два варианта шифрования: отдельного раздела на
USB-накопителе и виртуального шифрованного раздела внутри файла.


Настройка зашифрованного дискового раздела

Зашифруем раздел /dev/sdb1: 

   cryptsetup create tresor /dev/sdb1 --cipher tresor --key-size 128

   > Enter passphrase: указываем произвольный пароль

Размер ключа для 64-разрядных процессоров с поддержкой AES-NI может быть 128,
192 и 256. Для остальных CPU - только 128.

Форматируем созданный шифрованный раздел:

   mkfs.ext2 /dev/mapper/tresor

Монтируем раздел:

   mount /dev/mapper/tresor /media/tresor

все операции записи и чтения в /media/tresor производятся с использованием шифрования.

Отмонтируем раздел и выгружаем шифрованное устройство:

   umount /media/tresor
   cryptsetup remove tresor

Настройка зашифрованного контейнера (шифрованный раздел внутри файла)

Создаем пустой файл-контейнер container.img, размером 1 Гб:

   dd if=/dev/zero bs=1M count=1024 of=container.img

Прикрепляем контейнер к псевдоустройству через loop-интерфейс:

   losetup /dev/loop0 container.img

Повторяем действия, описанные выше для шифрованных дисковых разделов, но
используя в качестве имени устройства /dev/loop0

При отмонтировании, для отсоединения контейнера от loop-устройства дополнительно выполняем:

   losetup -d /dev/loop0 
 
04.09.2011 , Источник: http://www1.informatik.uni-erlangen...
Ключи: tresor, aes, crypt, cpu, cryptsetup, dm-crypt / Лицензия: CC-BY
Раздел:    Корень / Безопасность / Шифрование, PGP

[an error occurred while processing this directive]

[an error occurred while processing this directive]