The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Использование TRESOR для хранения ключей шифрования AES не в ОЗУ, а в регистрах CPU
При использовании зашифрованного раздела с конфиденциальной информацией,
злоумышленник, имеющий физический доступ к компьютеру, может воспользоваться
методом холодной перезагрузки
(http://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

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, ss, 15:54, 04/09/2011 [ответить] [смотреть все]
  • +/
    vostorg!
     
  • 1.2, Урсадон, 20:05, 04/09/2011 [ответить] [смотреть все]
  • +/
    ... специально для параноиков 70го уровня.
     
     
  • 2.3, funt, 20:43, 04/09/2011 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    не ниже 85лвл)
     
     
  • 3.5, x0r, 13:02, 05/09/2011 [^] [ответить] [смотреть все]
  • +/
    не доверяю я этому AES blowfish лично проверял еще одноразовый блокнот хор... весь текст скрыт [показать]
     
     
  • 4.7, Аноним, 15:22, 05/09/2011 [^] [ответить] [смотреть все]  
  • +/
    > не доверяю я этому AES...

    Особенно аппаратной реализации от интела.

     
     
  • 5.8, AdVv, 17:20, 05/09/2011 [^] [ответить] [смотреть все]  
  • +/
    Вы бы уже создали закрытый форум, и там бы сидели и никому не доверяли все вмест... весь текст скрыт [показать]
     
  • 5.9, Андрей, 20:07, 05/09/2011 [^] [ответить] [смотреть все]  
  • +/
    Ещё месяц-другой подождать и с амд шным бульдозером можно будет попробовать Или... весь текст скрыт [показать]
     
  • 2.12, Px, 01:07, 07/09/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Если у вас паранойя, то это совсем не значит, что за вами не следят...
     
  • 1.4, AHAHAC, 03:14, 05/09/2011 [ответить] [смотреть все]  
  • +/
    Патч похож на троян Что за цифры, хрен знает отписался автору, пущай рас... весь текст скрыт [показать]
     
     
  • 2.6, AHAHAC, 13:43, 05/09/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ответил - What mean this digits - This table is only part of the tresor-2 6 36... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.10, Щекн Итрч, 21:36, 05/09/2011 [^] [ответить] [смотреть все]  
  • +/
    В общеи, ЧТО ЭТО, он не раскрыл.
     
     
  • 4.11, AHAHAC, 04:49, 06/09/2011 [^] [ответить] [смотреть все]  
  • +/
    Это вот это - http en wikipedia org wiki Rijndael_S-box Inverse_S-box Только т... весь текст скрыт [показать]
     
     
  • 5.16, Щекн Итрч, 09:47, 12/09/2011 [^] [ответить] [смотреть все]  
  • +/
    > Это вот это - http://en.wikipedia.org/wiki/Rijndael_S-box#Inverse_S-box
    > Только тут не чистый S-box, а уже дальнейшие преобразования, промежуточные константы.
    > В процах с поддержкой AESNI используют команду aeskeygenassist rcon,r1,rhelp
    > Без - обратный S-Box и 4 команды сложения по модулю.

    Пусть аффтар поднапряжётся и предоставит сырец в более удобочитаемом виде.


     
  • 4.13, fuufuu, 09:57, 08/09/2011 [^] [ответить] [смотреть все]  
  • +/
    > В общеи, ЧТО ЭТО, он не раскрыл.

    это опенсорц. пиши свое или ешь что дают. и да, отладочные р-ры используются довольно часто


     
     
  • 5.14, AHAHAC, 02:44, 09/09/2011 [^] [ответить] [смотреть все]  
  • +/
    Теперь давай объясняй смысл сего высера?!
    А то, чёй-то моск крушиться в попытке связать ассемблерный код и отладочные регистры.


     
  • 5.15, Щекн Итрч, 09:46, 12/09/2011 [^] [ответить] [смотреть все]  
  • +/
    >> В общеи, ЧТО ЭТО, он не раскрыл.
    > это опенсорц. пиши свое или ешь что дают.

    Сначала сырцы анализатором прогоню?


     
  • 1.17, nagual, 23:11, 16/09/2011 [ответить] [смотреть все]  
  • +/
    Когда процес юзает эти долбанные возможности процессора (AES) ядро видит что процес делает AES а когда процес колдует свой самописный алгоритм шифрования то поди догадайся что то шифрование или просто кто то забыл мысор в исходниках подчистить :-)) так что эти встроенные аглоритмы это минимум идентификация ... даже если оно все действительно без бэкдоров ;-)
     
     
  • 2.19, учицца нада, 23:47, 16/09/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > Когда процес юзает эти долбанные возможности процессора (AES) ядро видит что процес
    > делает AES а когда процес колдует свой самописный алгоритм шифрования то
    > поди догадайся что то шифрование или просто кто то забыл мысор
    > в исходниках подчистить :-)) так что эти встроенные аглоритмы это минимум
    > идентификация ... даже если оно все действительно без бэкдоров ;-)

    у 90% в процах нет аппаратного AES пока - поэтому нужно как-то выкручиваться. И лет 10-15 этот код ещё будет актуален. Посмотри вокруг себя - и 100% где-то найдешь используемый ПК 10-летней давности. А с учетом избыточности сегодняшних мощностей - наверняка лет через 10-15 ещё будут живы коре2...

     
     
  • 3.22, asdf, 12:18, 21/09/2011 [^] [ответить] [смотреть все]  
  • +/
    Может и будут живые коре 2 у единиц. Но большинство будет использовать компьютер которые в 10-20 раз занимает меньше места.
     
  • 1.23, funny_falcon, 12:32, 22/09/2011 [ответить] [смотреть все]  
  • +/
    Проблема в том, что при переключении контекста (т.е. на другое приложение) все регистры сохраняются в памяти, так что это полная туфта (как мне кажется).
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor