InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

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

Ресурсы.

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. Вы можете прочитать эти статьи с помощью команды . Или поищите notes.ms среди исходных файлов C - например, в /usr/src/redhat/BUILD/cfs*/.

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

www.openssl.org: сайт OpenSSL

www.openssh.com: сайт OpenSSH


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua