На главную страницу Написать письмо Добавить в избранное Сделать www.comprog.ru стартовой

Использование CFS, криптографической файловой системы.

Валерий Качуров

Если вы хотите надежно скрыть вашу личную информацию (например, письма или номера телефонов), то можно воспользоваться самым простым способом - поместить свои данные в скрытую директорию под названием ~/.private с правами доступа 0700, чтобы только вы могли прочитать свои файлы. Вы уже смеетесь? Тогда настало время перейти к более надежным способам, основанных на криптографии. Итак - рассмотрим CFS, свободную криптографическую файловую систему от Матта Блейза (Mutt Blaze) для Unix/Linux.

С помощью CFS вы можете надежно хранить вашу информацию в зашифрованном виде внутри обыкновенной директории. Используя ключ (или, если хотите, пароль), вы можете временно расшифровать ваши файлы, и они становятся доступными в течение некоторого времени - пока вы с ними работаете.

CFS делает зашифрованные файлы доступными для вас с помощью локального NFS-монтирования; в документации CFS этот процесс называется <подключение> (). Изменения, вносимые во временно расшифрованные файлы, моментально вносятся и в их зашифрованные версии. Чтобы завершить сеанс CFS, используется процесс <отключения> (), после которого все расшифрованные файлы исчезают - до следующего раза, когда вы будете с ними работать.

В этой статье рассматривается CFS версии 1.4.0beta2, дистрибутив которого вместе с несколькими полезными инструментами прилагается (см. раздел <Ресурсы>).

Другие криптографические системы.

Существуют и другие открытые криптографические системы, среди которых можно выделить OpenSSL, OpenSSH и TCFS ( - прозрачная криптографическая файловая система). Краткое сравнение:

CFS: работает в пространстве обычного пользователя, и для работы не требуется устанавливать патчи на ядро. CFS использует обыкновенный NFS loopback (локальный экспорт NFS с локальным подключением), что может создать некоторые проблемы с безопасностью. Будьте осторожны с экспортом директорий. CFS был разработан на SunOS и BSDI, а потом портирован на Linux и другие подходящие для его работы операционные системы. Поддерживаются несколько алгоритмов шифрования.

TCFS: для работы требуется специфический модуль NFS для Linux или пересборка ядра. Улучшенная совместимость с ядром и расширенные атрибуты файловой системы делают TCFS более защищенной, но менее мобильной.

OpenSSL: работает в пространстве обычного пользователя, и для работы не требуется устанавливать патчи на ядро. OpenSSL поддерживет большое количество методов шифрования, и даже имеет поддержку аппаратных ключей. Существуют версии OpenSSL для Linux, Windows и других сред. Но OpenSSL 3.4 позволяет производить шифрование или расшифровку только одного потока или файла за один раз.

OpenSSH: Его можно использовать вместе с другими инструментами. Главным образом OpenSSH предназначен не для хранения секретных данных, а для безопасного обмена данными.

Loop device mount: входит в комплект дистрибутива Red Hat. В данный момент DES - единственный серьезный метод шифрования из поддерживаемых. Loop device mount требует подготовку файла фиксированного размера или привилегий root'а (или чтобы пользовател имели права на доступ к файлам loop device). Подробнее - в man-страницах mount(8) и losetup(8).

Установка CFS.

В разделе <Ресурсы> есть ссылка на файл cfs-1.4.0.beta2j в формате src.rpm, который, кроме самой программы, включает: - Патч для повышения безопасности Linux. - Два установочных скрипта для Red Hat Linux. - И два удобных скрипта - decrypt и dpw.py. Так же можно скачать все эти скрипты отдельно. Всегда полезно поискать в сети более новые версии CFS и обратить внимание на новые патчи.

NFS - обязательный компонент для использования CFS. Будьте осторожны с экспортом ресурсов и не сделайте случайно все ваши файлы доступными для всего мира. А лучше всего - настроить свой персональный firewall так, чтобы запретить внешний доступ к портам, используемым демонами NFS и RPC. Номера портов - 2049 и 111 (TCP и UDP) соответственно.

Во всех приведенных примерах приглашение <#> означает работу под root'ом, а <$> - работу под обычным пользователем.

Установите пакет с исходниками, как обычно:

# rpm -iv cfs-1.4.0.beta2j-6.2a.src.rpm

Затем соберите и установите CFS:

# cd /usr/src/redhat/SPECS
# rpm -bb cfs.spec
# cd ../RPMS/i386
# rpm -ivv cfs-1.4.0.beta2j.i386.rpm

Если у вас есть трудности c установкой именно этого конкретного пакета - поищите и установите более подходящую для вашего дистрибутива версию. После установки необходимо провести небольшую настройку CFS. Используйте скрипт cfs-setup, поставляющийся вместе с этой статьей, или прочитайте документ Мэтта Блэйза <Установка и использование CFS> (см. раздел <Ресурсы>).

Начинаем работу с CFS.

Приведенные инструкции подходят для Red Hat Linux 6.2, 7.1, 7.2, и 7.3. Чтобы они работали в вашем дистрибутиве, могут понадобиться некоторые изменения.

Убедитесь, что NFS запущена:

# ps auxww | grep rpc.mountd

Если rpc.mountd не присутствует в списке процессов, запустите NFS:

# /etc/rc.d/init.d/nfs start

Затем запустите демона CFS:

# /etc/rc.d/init.d/cfsd start

Теперь создайте под своим пользователем директорию с приватной информацией (например, ) и подключите ее. Два способа:

Самый простой - запустите скрипт :

$ decrypt -init
Key: (наберите здесь ваш ключ, чтобы создавать личную директорию, и запомните его)
Again: (наберите ваш ключ еще раз)
Key: (и в третий раз наберите ваш ключ, чтобы произвести подключение)

Другой способ создания личной директории - использование стандартных команд CFS (cmkdir и cattach):

$ mkdir ~/cdata
$ cd ~/cdata
$ cmkdir notes
Key: (наберите здесь ваш ключ, чтобы создавать личную директорию, и запомните его)
Again: (наберите ваш ключ еще раз)
$ cattach notes $LOGNAME-notes
Key: (наберите ваш ключ, чтобы произвести подключение)

(В примере, приведенном выше, встроенная переменная среды $LOGNAME содержит ваше имя входа. Это используется для того, чтобы избежать конфликта между различными пользователями - вы можете использовать более простое название.)

В обоих случаях может потребоваться 1-2 минуты для того, чтобы демон CFS cоздал директорию для временно расшифрованных файлов с именем $LOGNAME-notes.

Теперь создайте тестовый файл во временной директории:

$ pushd /mnt/crypt/$LOGNAME-notes
$ echo > test.txt
$ popd

Завершите ваш сеанс CFS и посмотрите, что появилось в директориях:

$ cdetach $LOGNAME-notes
$ ls /mnt/crypt
$ ls -R ~/cdata

Листинг ~/cdata должен показывать зашифрованное имя вашего файла test.txt - например, 03fa2aa5242d5a741866a6605de1ae3b.

Подключите вашу директорию снова, чтобы убедиться, что ваш тестовый файл - все еще там. Опять же, есть два способа:

Легкий способ - использование decrypt:

$ decrypt
Key: (наберите ваш ключ)

Нормальный способ - использование cattach:

$ cd ~/cdata
$ cattach notes $LOGNAME-notes
Key: (наберите ваш ключ)

Теперь проверьте, что ваш тестовый файл все еще там:

$ cat /mnt/crypt/$LOGNAME-notes/test.txt

Переходим к поиску документации для CFS, которая включает в себя man-страницы для команд cmkdir, cattach, cdetach, cpasswd и еще некоторых. Основы CFS хорошо описаны в статьях <Установка и использование CFS> и <Криптографическая файловая система для Unix>. Вы можете прочитать их с помощью команды . Одна из самых интересных возможностей, описанных в этих документах - это ускорение работы CFS с помощью изменения параметров и команды mount.

Рассмотрим скрипты decrypt и dwp.py. упрощает управление вашими личными директориями в CFS. Всю информацию по этому скрипту можно получить с помощью команды .

Dpw.py обеспечивает графический интерфейс, и для работы этого скрипта требуется стандартный модуль Python под названием Tkinter.

Преимущества и недостатки CFS:

Сильные стороны CFS включают в себя различные способы уменьшения и предотвращения ошибок:

- После изменения временно расшифрованных файлов CFS не требует выполнения отдельной процедуры шифрования, и таким образом можно избежать проблемы шифрования с неправильным ключом.

- CFS поддерживает тайм-аут после определенного периода неактивности, поэтому временно расшифрованный файл не может случайно оказаться свободно доступным в течении долгого периода времени. Не забудьте использовать опцию тайм-аута (-I) с командой cattach.

Уязвимые места CFS и некоторых других криптографических систем:

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

- Более привилегированные пользователи (злоумышленники или нет) могут получить доступ к временно расшифрованным файлам.

- Ваши временно расшифрованные файлы могут быть различными способами перехвачены при их передаче через сеть. OpenSSH может помочь в какой-то мере, но лучше всего ограничить ваше использование CFS и OpenSSL только вашим личным компьютером, а так же хранить зашифрованные и временные данные только в локальной файловой системе.

- Сохраняйте различные файлы в различных частных директориях.

В документах Матта Блейза по CFS можно найти более подробное обьяснение различных вопросов безопасности CFS.

Вывод.

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

Мобильный компьютер с установленным Linux - вероятно, идеальное место для применения CFS, если применены другие практические меры предосторожности (настроен firewall и отключены необязательные сетевые сервисы). Даже если ваш лаптоп украдут, закодированные с помощью CFS секретные файлы останутся невидимыми. Не забывайте делать резервные копии.

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

  Поиск по сайту
  
Яндекс цитирования