Это вторая статья, посвященная криптографическим файловым системам. Первая статья этой серии описывала процесс шифрования, основные концепции и некоторые механизмы этих систем. Эта статья посвящена использованию криптографических файловых систем Microsoft's EFS under Windows 2000 и Linux CryptoAPI.
TECKLORD, по
материалам SecurityFocus
Это вторая статья, посвященная криптографическим файловым системам. Первая
статья этой серии описывала процесс шифрования, основные концепции и некоторые
механизмы этих систем. Эта статья посвящена использованию криптографических
файловых систем Microsoft's EFS under Windows 2000 и Linux CryptoAPI.
Напомним, что в первой статье речь шла о том, что Microsoft's EFS не поддерживает симметричный алгоритм, основанный на пароле, так как такие схемы уязвимы к атакам по словарю. В EFS для шифрования и дешифрования информации используются открытые ключи. Данные зашифровываются с помощью симметричного алгоритма с применением ключа шифрования файла (File Encryption Key, FEK), FEK - это сгенерированный случайным образом ключ, имеющий определенную длину. Для дешифрования FEK, требуется использование пароля, и хотя вход, основанный на нем, полностью запрещен, чаще всего для аутентификации используется пароль пользователя домена.
Microsoft Windows 2000 EFS
Поскольку некоторое время использовалось альтернативное программное обеспечение для шифрования информации других производителей, было принято решение интегрировать EFS в Windows 2000. Microsoft Windows 2000 EFS поддерживает лишь алгоритм DESX, в то время как Windows XP включает уже как алгоритм шифрования 3DES, так и алгоритм AES (Advanced Encryption Standard).
Общее
Использовать EFS очень легко. Windows 2000 поддерживает два метода шифрования файлов: командная строка и графический интерфейс. Вся хитрость шифрования проявляется тогда, когда зашифрованные файлы переносятся на другой компьютер, поскольку, для того, чтобы расшифровать файл, сертификат и частные ключи пользователя должны быть сохранены вместе с файлом на том же компьютере.
Шифрование/Дешифрование Файла: графический метод
Чтобы зашифровать файл следует правой кнопкой мыши нажать на файл и выбрать меню Свойства(Properties), как показано на следующем рисунке.
Затем нажмите на кнопку Дополнительно(Advanced) справа внизу. В самом низу нового окна проставьте галочку возле Зашифровать(Encrypt Contents to secure data), и нажмите ОК.
Когда закроется окно дополнительных атрибутов, нажмите Применить и ОК (Apply и OK). После этого появится диалоговое окно с предложением зашифровать только данный файл, или папку, в которой находится этот файл. Затем снова нажмите ОК. Если файл находится в корневом каталоге, диалогового окна не будет.
После того, как файл был зашифрован, он доступен, как и любой другой файл. Для просмотра, его не нужно расшифровывать вручную, так как весь процесс шифрования/дешифрования является автоматическим и прозрачным. Чтобы полностью дешифровать файл, просто откройте меню Свойства с помощью правой клавиши мыши. Нажмите на кнопку Дополнительно и снимите галочку возле Зашифровать. Затем примените свойства к файлу, и он будет доступен также другим пользователям (конечно, в зависимости от атрибутов файла).
Шифровать и дешифровать данные, пользуясь командной строкой еще проще. Программа cipher.exe служит для шифрования и дешифрования файла, папки и их содержимого. Пример использования командной строки для этих целей приведен ниже.
cipher /e "D:\crypto\file.txt"
Чтобы расшифровать папку и все вложенные папки:
cipher /e /s "D:\crypto"
Чтобы просто расшифровать, смените атрибут /e на /d:
cipher /d /s "D:\crypto"
Запомните, чтобы просто дешифровать файл не нужно использовать атрибут /S.
Чтобы получить дополнительную справку по атрибутам введите в командной строке
cipher /?
Трудности возникают при переносе зашифрованный данных с одного компьютера на другой. Чтобы пользоваться этой возможностью, пользователям необходимо импортировать свои ключи с одной машины на другую, используя MMC (Microsoft Management Console). Можно воспользоваться мастером подсказок Майкрософт по импорту и экспорту FEK. Он доступен здесь.
Принцип использования криптографической файловой системы в Linux так же прост, как и в Windows 2000. Для использования CryptoAPI вам понадобятся три (может 4 – в зависимости от выбранной вами дистрибуции) компонента: исходный код ядра, исходный код CryptoAPI и cryptoloop. Два последние нужно скачать, проверить их подписи, и затем распаковать. Версия CryptoAPI должна соответствовать версии ядра операционной системы.
[root@charybdis cryptoapi-0.1.0]# bzip2 -dc /opt/software/kernel/linux-2.4.20.tar.bz2 | tar -xvf -
[root@charybdis cryptoapi-0.1.0]# bzip2 -dc cryptoapi-0.1.0.tar.bz2 | tar -xvf -
[root@charybdis cryptoapi-0.1.0]# bzip2 -dc cryptoloop-0.0.1-pre1.tar.bz2 | tar -xvf -
Вместе с исходным кодом CryptoAPI поставляются два патча для файловой системы на устройстве обратной петли. Первый патч – loopiv (iv означает вектор инициализации - initialization vector) – обеспечивает минимальную поддержку для CryptoAPI, и второй патч - loop-jari, также обеспечивает работу CryptoAPI и содержит несколько исправлений для багов.
После того, как ядро и исходники CryptoAPI будут распакованы, следует сконфигурировать ядро перед установкой патчей CryptoAPI. Этот процесс можно осуществить, используя текущие конфигурации ядра. Ниже следует описание собрания нового ядра с CryptoAPI. После того, как ядро будет сконфигурировано, следует применить патчи CryptoAPI следующим образом:
[root@charybdis cryptoapi-0.1.0]# make patch-kernel KDIR=< kernel dir > LOOP= < iv|jari >
[root@charybdis cryptoloop-0.0.1-pre1]# make patch-kernel KDIR=< kernel dir > LOOP= < iv|jari>
После этого перейдите к директории с исходным кодом, скомпилируйте ядро и установите его. Рекомендуем перезагрузить машину перед установкой модулей CryptoAPI. Установка модулей:
[root@charybdis cyrptoapi-0.1.0]# make modules KDIR=< kernel dir >
После компиляции модулей, их нужно установить:
[root@charybdis cyrptoapi-0.1.0]# make modules_install
Последний кусочек пазла – патч для losetup. В зависимости от дистрибуции, это программа может требовать отдельного патча, который должен сообщать ядру о шифре и ключе, которые используются для зашифрованных устройств. Этот патч доступен на SourceForge. В некоторых последних релизах Linux этот патч входит в состав дистрибутива.
После установки, необходимо решить, какая файловая система будет использоваться: физическая или виртуальная файловая система. Физическая файловая система требует создания кодированной файловой системы на физическом носителе. Виртуальная файловая система – это большой пустой файл, смонтированный на устройстве обратной петли. Ниже описан второй метод. Создание пустого файла требует наличие пространства внутри физической файловой системы.
[root@charybdis cyrptoapi-0.1.0]# dd if=/dev/zero if=/oracle/testfs bs=1M count=50
Можно также использовать /dev/urandom для заполнения пустого файла случайными данными. После этого нужно загрузить cryptoapi, cryptoloop, и модули шифрования ядра.
[root@charybdis cyrptoapi-0.1.0]# modprobe cryptoloop
[root@charybdis cyrptoapi-0.1.0]# modprobe cryptoapi
[root@charybdis cyrptoapi-0.1.0]# modprobe cipher-des
И, наконец, можно смонтировать устройство обратной петли:
[root@charybdis cyrptoapi-0.1.0]# losetup -e des /dev/loop0 /oracle/testfs
Password:
Init (up to 16 hex digits):
После монтирования следует создать на устройстве обратной петли файловую систему:
[root@charybdis cyrptoapi-0.1.0]# mkfs -t ext3 /dev/loop0
А теперь файловая система готова к монтированию:
[root@charybdis cyrptoapi-0.1.0]# mount -t ext3 /dev/loop0 /mnt/testfs
Все файлы, размешенные в этой файловой системе, будут зашифрованы. Не рекомендуется делать слишком большую файловою систему, из-за возможного сбоя в работе системы. С помощью CryptoAPI можно создавать кодированные файловые системы, которые будут невидимы пользователям.
Вывод
Главное преимущество использования шифрованных файловых систем – это возможность защиты важной информации среди обычных файлов в системе. Дополнительная безопасность зависит не только от сложности алгоритма кодирования, но и от аккуратного обращения с данными пользователей и администраторов. Кодированная файловая система бесполезна, если пользователь или администратор не умеют обращаться в достаточной мере с ключами, используемыми для шифрования информации в файловой системе.
Никаких овечек — только отборные научные факты