Архивы: по дате | по разделам | по авторам

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

АрхивЛинуксоид (архив)
автор : Валерий Качуров   03.12.2002

Руководство по установке и использованию CFS. Преимущества и недостатки различных криптографических систем.

Перевод статьи Джерри Суита

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

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

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

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

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

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

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

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

Самый простой – запустите скрипт «decrypt»:

$ 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.» > 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». Вы можете прочитать их с помощью команды «nroff -ms /usr/doc/cfs*/notes.ms». Одна из самых интересных возможностей, описанных в этих документах – это ускорение работы CFS с помощью изменения параметров «rsize» и «wsize» команды mount.

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

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, чтобы можно было работать с ним на мультизагрузочных компьютерах.

Ресурсы.

ftp://ftp.ssc.com/pub/lj/listings/Web/6381.tar.gz
Все файлы, упомянутые в этой статье, включая исходники cfs-1.4.0.beta2j и файлы decrypt, dpw.py, cfs-setup и README.

ftp://speakeasy.rpmfind.net/linux/rhcontrib/SRPMS/cfs-1.4.0.beta2-6.2.src.rpm
Исходники cfs-1.4.0.beta2j.

Мэтт Блэйз, «Установка и использование CFS», 1997 и «Криптографическая файловая система для Unix», 1993. Вы можете прочитать эти статьи с помощью команды «nroff -ms /usr/doc/cfs*/notes.ms». Или поищите notes.ms среди исходных файлов C - например, в /usr/src/redhat/BUILD/cfs*/.

Mauriello, Ermelindo. «TCFS: Transparent Cryptographic Filesystem», 1997. Доступно на сайте Linux Journal: http://www.linuxjournal.com/article.php?sid=2174.

www.openssl.org: сайт OpenSSL

www.openssh.com: сайт OpenSSH

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.