Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Безопасность работы с системой Linux

Шифрование с помощью TrueCrypt

Оригинал: Encryption with TrueCrypt
Автор: Ариэль Майорано (Ariel Maiorano)
Дата: август 2009 г.
Перевод: Сергей Супрунов
Дата перевода: 01 сентября 2009 г.

О TrueCrypt

Согласно веб-сайту этой программы, TrueCrypt - это свободное ПО с открытым исходным кодом для шифрования информации на диске, работающее в Windows Vista/XP, Mac OS X и Linux. Его обычное использование заключается в создании виртуального зашифрованного диска внутри файла (называемого файлом-томом или контейнером) и последующем монтировании его как реального диска. Как бы то ни было, он также реализует механизмы, обеспечивающие "правдоподобное отрицание" (plausible deniability) - скрытый том внутри другого и, конечно же, возможность шифровать целый раздел или устройство хранения. Шифрование операционной системы в настоящее время поддерживается только для Windows.

Шифрование выполняется автоматически, в режиме реального времени ("на лету") и прозрачно. Что касается шифрования "на лету", мы читаем в официальной документации:

Шифрование "на лету" означает, что данные шифруются и дешифруются автоматически непосредственно перед тем как будут загружены или сохранены, без какого-либо вмешательства со стороны пользователя. Никакие данные, сохранённые на зашифрованный том, не могут быть прочитаны (дешифрованы) без использования правильного пароля или ключевого файла или правильных ключей шифрования. Шифрованию подвергается вся файловая система (т.е. имена файлов, каталогов, содержимое каждого файла, свободное пространство, метаданные и т.д.)

Хотя TrueCrypt более популярен на системах Windows (см. статистику использования TrueCrypt: http://www.truecrypt.org/statistics), он неплохо работает и в Linux, а его файлы томов полностью кросс-платформенны. Документация по использованию этой программы в основном фокусируется на графическом интерфейсе версии для Windows, но информация о том, как она работает, об алгоритмах шифрования, технические детали и т.п. является очень полной и применима также и к версии для Linux.

Конфликты лицензий

Как уже упоминалось, из официальной документации мы знаем, что TrueCrypt является свободной программой с открытыми исходными кодами. Однако, несмотря на пользовательские запросы, он не может быть включён в репозитории наиболее популярных дистрибутивов Linux из-за некоторых положений коллективной лицензии TrueCrypt [1]. Основные поставщики Linux считают её несвободной; например, в данном сообщении представителя Red Hat поясняется, почему они так думают: даже если Fedora соответствует всем требованиям и/или обязательствам, навязываемым этой лицензией, они по-прежнему не будут защищены от судебных исков со стороны TrueCtypt. С официальной позицией разработчиков Fedora по этому вопросу вы можете ознакомиться здесь, разработчиков Ubuntu - здесь.

Как бы то ни было, если вы планируете распространять TrueCrypt или основанное на нём ПО, вам, вероятно, потребуется помощь юристов. Хотя, безусловно, вы смело можете скачать полное дерево исходного кода этой программы и использовать его в личных целях как вам заблагорассудится.

Алгоритмы

TrueCrypt реализует три симметричных блочных алгоритма шифрования (также именуемых шифрами, например - блочный шифр, шифр с симметричным ключом и т.д.): AES (Advanced Encryption Standard), Twofish и Serpent. Программа также может комбинировать использование этих шифров: например, при выборе используемого алгоритма вы можете увидеть такие опции как Serpent-AES или Twofish-Serpent. Из криптографических хэш-функций в TrueCrypt реализованы и доступны RIPEMD-160, SHA-512 и Whirlpool.

Если вы не знакомы с ними, то вам следует знать, что блочные шифры работают с фрагментами данных фиксированной длины, каждый такой фрагмент называется блоком. Например, AES использует блоки длиной 128 бит. Эти блоки состоят из того, что вы подаёте на вход - того, что вы хотите зашифровать. Обычно это незашифрованный текст (plaintext). Когда блок текста шифруется, на выход выдаётся изменённый блок такой же длины, и это называется блоком шифрованного текста (ciphertext). Шифрование выполняется с использованием ключа, также подаваемого на вход процесса шифрования, который тоже имеет фиксированную длину (например, для Twofish он может составлять до 256 бит).

Другой аспект, который следует иметь в виду, - то, что может потребоваться дополнительный шаг, если вы собираетесь зашифровать некоторый текст, превышающий размер блока. В таких случаях выбирается так называемый режим работы (это не является частью самого алгоритма). Предыдущий зашифрованный блок может объединяться с текущим блоком текста, который вы собираетесь шифровать. Режим, в котором вы используете тот или иной алгоритм, определяет, в какой последовательности происходит обработка блоков, если эта обработка вообще выполняется. Для первого блока, когда используется режим создания цепочки (Cipher Block Chaining, CBC), у вас, конечно же, ещё нет предыдущего вывода, так что вы используете то, что называется вектором инициализации (initialization vector, IV), который обычно формируется из случайных данных и должен быть общедоступным, наряду с другими блоками шифрованного текста.

Ключ - это не тот массив ASCII-символов, который формирует ваш пароль (по крайней мере, в последних криптографических реализациях), поскольку выход криптографической хэш-функции определяется паролем и так называемой "солью" (salt).

Криптографические хэш-функции могут принимать блок данных произвольного размера и возвращать блок фиксированного размера (например, 128 бит для MD5). Полученный результат называется значением хэш-функции и иногда на него ссылаются как на дайджест (профиль) сообщения (того сообщения, которое было подано на вход), или просто дайджест. Любое изменение на входе порождает существенно отличающееся значение хэш-функции.

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

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

Что касается общей теории криптографии, то вы можете обратиться к онлайн-версии книги "Handbook of Applied Cryptography". Ниже будет приведено очень поверхностное описание каждого алгоритма, за дальнейшей информацией и более глубоким обсуждением каждого из них обращайтесь к справочной литературе, а в части их реализации в TrueCrypt - к технической документации к программе. Также помните, что блочные шифры могут использоваться в различных режимах работы. Эти режимы определяют способ объединения блоков в случае, когда входное значение больше, чем размер блока. В последней версии TrueCrypt используется режим XTS (стандарт IEEE 1619).

  • Симметричные шифры, доступные в TrueCrypt:
    • AES: расширенный стандарт шифрования. Первоначально (в 1998 году) был опубликован под названием Rijndael (по именам авторов - Джоан Дэймен (Joan Daemen) и Винсента Риджмена (Vincent Rijmen)). Этот алгоритм в 2001-м году стал победителем конкурса AES, проводимого Национальным институтом стандартизации и технологий США (National Institute of Standards and Technology, NIST) и был одобрен как стандарт FIPS-197 (Federal Information Processing Standard, федеральный стандарт обработки информации), что позволяло использовать его в государственных учреждениях США для защиты секретной информации. Он имеет размер блока 128 бит с размером ключа 128, 192 или 256 бит. Rijndael поддерживает и другие размеры блока и ключа, но только вышеупомянутые были выбраны для AES. Стоит также упомянуть, что он был всесторонне проанализирован и широко используется по всему миру. [2]
    • Serpent: этот алгоритм попал в финал конкурса AES и занял второе место, сразу после Rijndael. Его авторы: Росс Андерсон (Ross Anderson), Эли Байэм (Eli Biham) и Ларс Кнудсен (Lars Knudsen). Реализован размер блока 128 бит. Размер ключа может составлять 128, 192 или 256 бит. Впервые опубликован в 1998 году.
    • Twofish: Ещё один финалист конкурса AES. Авторы: Брюс Шнайер (Bruce Schneier), Джон Келси (John Kelsey), Дуг Вайтинг (Doug Whiting), Дэвид Вагнер (David Wanger), Крис Холл (Chris Hall) и Нильс Фергюсон (Niels Ferguson). Имеет размер блока 128 бит и переменную длину ключа: минимум 8 бит, максимум - 256, значение должно быть кратно 8 битам. Также опубликован в 1998 году.
  • Доступные криптографические хэш-функции:
    • RIPEMD-160: название расшифровывается как RACE Integrity Primitives Evaluation Message Digest. Авторы: Хэнс Доббертин (Hans Dobbertin), Антон Босселаерс (Antoon Bosselaers) и Барт Пренил (Bart Preneel). Эта функция производит 160-битные значения, но есть и другие версии этого алгоритма (RIPEMD-128, RIPEMD-256, RIPEMD-320). Впервые был опубликован в 1996 году.
    • SHA-512: Secure Hash Algorithm. Данный алгоритм принадлежит семейству SHA-2. Эти функции спроектированы NSA (National Security Agency, Национальное агентство безопасности США) и опубликованы NIST как стандарт FIPS в 2001 году. Как вы могли уже догадаться, SHA-512 формирует хэш размером 512 бит.
    • Whirlpool: Создан одним из авторов Rijndael - Винсентом Риджменом (Vincent Rijmen) и Паоло Баррето (Paulo S. L. M. Barreto). Опубликован в 2000-м году. Формирует хэш-значения длиной 512 бит.

Установка

Мы установим последнюю версию TrueCrypt из исходных кодов (на момент написания статьи последней версией была 6.2a, выпущенная 15 июня 2009 г.). Вы также можете скачать пакеты .deb и .rpm с сайта TrueCrypt, соответственно для Ubuntu и OpenSUSE. Безусловно, вы можете пойти этим путём, если у вас один из этих двух поддерживаемых Linux-дистрибутивов. Если нет, или если вы используете один из этих дистрибутивов, но предпочитаете сами компилировать ПО, которое будете использовать в своей системе, вам нужно загрузить исходный код для Linux/MacOS и следовать далее рекомендациям этого раздела. Замечание: содержимое пакетов .zip различается; если вы обнаружите файл .sln (Microsoft Visual Studio solution) вместо Makefile, значит, вы скачали версию для Windows.

Как следует из документации, наша система для успешной сборки этой программы должна соответствовать следующим требованиям:

  • GNU Make
  • Компилятор GNU C++ 4.0 или совместимый
  • pkg-config
  • Библиотека wxWidgets 2.8 с заголовочными файлами или исходные коды wxWidgets 2.8 (доступны на http://www.wxwidgets.org/)
  • Библиотека FUSE с заголовочными файлами (http://fuse.sourceforge.net/ и http://code.google.com/p/macfuse)
  • Заголовочные файлы RSA Security Inc. PKCS #11 Cryptographic Token Interface (Cryptoki) 2.20 (ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20), размещённые по стандартному пути поиска или в каталоге, определённом в переменой окружения PKCS11_INC.

В зависимости от вашего дистрибутива Linux, часть этих требований уже может быть удовлетворена (хотя, боюсь, далеко не всё из этого списка будет в вашем дистрибутиве по умолчанию). Установку недостающего вы можете выполнять как из пакетов вашего дистрибутива, так и из исходников - как вам больше нравится. Наиболее вероятно, что у вас не окажется заголовочных файлов FUSE и RSA. А также wxWidgets, если они не были нужны вам раньше. Ниже дано несколько подсказок и замечаний, прежде чем мы приступим к пошаговой процедуре установки:

  1. Скачивая пакеты FUSE, не забудьте, что вам нужны "fuse" или "libfuse", а также "libfuse-devel".
  2. Также учтите, что вам понадобятся исходные коды ядра, если вы будете компилировать FUSE; в большинстве дистрибутивов нужный пакет называется "kernel-devel".
  3. Основной заголовочный файл RSA (pkcs11.h) включает комментарии, указывающие, что нужно некоторый код раскомментировать перед использованием; не делайте этого, поскольку в этом нет необходимости. В файле Common/SecurityToken.h в исходном коде TrueCrypt все нужные строки #define уже есть.
  4. Если вы собираете NOGUI-версию TrueCrypt (без графической оболочки), как мы будем делать в этой статье-примере, имейте в виду, что вам всё равно потребуется исходный код библиотеки wxWidgets. Однако устанавливать её не обязательно.

Далее следуют пошаговые инструкции. Единственное сделанное предположение - что файлы "TrueCrypt 6.2a Source.tar.gz" и "wxX11-2.8.10.tar.gz" находятся в каталоге /tmp. Веб-сайт TrueCrypt, похоже, не предоставляет прямую ссылку для загрузки, а исходный код библиотеки wx размещается на Sourceforge.net, так что вам придётся сначала загрузить эти файлы с помощью веб-браузера. PKCS #11 включает файлы, которые будут загружены утилитой wget. Наконец, не все команды требуют прав суперпользователя, но в примерах ниже я все операции буду выполнять от имени root.

[root@w2 ~]# 
[root@w2 ~]# cd /tmp
[root@w2 tmp]# mkdir pkcs11
[root@w2 tmp]# cd pkcs11
[root@w2 pkcs11]# wget ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20/pkcs11.h
[root@w2 pkcs11]# wget ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20/pkcs11f.h
[root@w2 pkcs11]# wget ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20/pkcs11t.h
[root@w2 pkcs11]# cd ..
[root@w2 tmp]# tar xvfz wxX11-2.8.10.tar.gz
[root@w2 tmp]# tar xvfz "TrueCrypt 6.2a Source.tar.gz"
[root@w2 tmp]# cd truecrypt-6.2a-source/
[root@w2 truecrypt-6.2a-source]# export PKCS11_INC=/tmp/pkcs11
[root@w2 truecrypt-6.2a-source]# make NOGUI=1 WX_ROOT=/tmp/wxX11-2.8.10 wxbuild
[root@w2 truecrypt-6.2a-source]# make NOGUI=1 WXSTATIC=1
[root@w2 truecrypt-6.2a-source]# cd Main
[root@w2 Main]# ./truecrypt --test
[root@w2 Main]# cp truecrypt /usr/local/bin/

Замечание: после запуска truecrypt с опцией --test, вы должны увидеть сообщение "Self-tests of all algorithms passed". Скомпилированный двоичный файл TrueCrypt приходится копировать в системный каталог вручную, поскольку Makefile не предоставляет цель "install". [3].

Прежде чем начать...

Теперь, опять-таки согласно документации, нужно проверить, чтобы ваша система Linux соответствовала ряду требований для запуска TrueCrypt:

Как упоминалось выше, многое из этого уже может быть установлено в вашей "современной" системе Linux. Например, FUSE уже должна бы быть инсталлирована в процессе компиляции ядра. Примите в расчёт и то, что последние ядра Linux уже содержат FUSE. Если в вашей системе некоторых компонентов недостаёт, следуйте ссылкам в официальной документации или поищите соответствующие пакеты для вашего дистрибутива в интернете.

Когда закончите, проверьте, что модуль ядра FUSE загружается - если всё сделано правильно, проблем возникнуть не должно:

[root@w2 tmp]# modprobe fuse

Опции командной строки

Раздел официальной документации, посвящённый опциям командной строки, применим только к версии TrueCrypt для Windows. Так что, прежде чем приступать к примерам использования этого ПО, я привёл здесь вывод того, что документация рекомендует выполнить, если мы хотим узнать, как выполнять TrueCrypt, и работаем в Linux или MacOS; то есть, нам нужно использовать опцию "-h". Кроме того, это довольно неплохой способ узнать, на что способна программа. [Здесь и далее описания опций и другой поясняющий текст я даю в переводе; у вас вывод утилиты, очевидно, будет на английском. При желании лицезреть оригинал вы всегда можете обратиться к исходной статье, ссылка на которую даётся в самом верху. - прим.перев.]

[root@w2 tmp]# truecrypt -h
Usage: truecrypt [--auto-mount <str>] [--backup-headers] [--background-task] [-C] [-c]
[--create-keyfile] [--delete-token-keyfiles] [-d] [--encryption <str>] [--explore]
[--filesystem <str>] [-f] [--fs-options <str>] [--hash <str>] [-h] [--import-token-keyfiles]
[-k <str>] [-l] [--list-token-keyfiles] [--load-preferences] [--mount] [-m <str>]
[--new-keyfiles <str>] [--new-password <str>] [--non-interactive] [-p <str>]
[--protect-hidden <str>] [--protection-keyfiles <str>] [--protection-password <str>]
[--random-source <str>] [--restore-headers] [--quick] [--size <str>] [--slot <str>]
[--test] [-t] [--token-lib <str>] [-v] [--version] [--volume-properties]
[--volume-type <str>] [Путь к тому] [Точка монтирования]
  --auto-mount=<str>            Автомонтирование томов
  --backup-headers              Резервное копирование заголовков тома
  --background-task             Запустить фоновую задачу
  -C, --change                  Изменить пароль или ключевые файлы
  -c, --create                  Создать новый том
  --create-keyfile              Создать новый ключевой файл
  --delete-token-keyfiles       Удалить токен безопасности ключевых файлов
  -d, --dismount                Размонтировать том
  --encryption=<str>            Алгоритм шифрования
  --explore                     Открыть окно проводника для смонтированного тома
  --filesystem=<str>            Тип файловой системы
  -f, --force                   Форсировать монтирование/размонтирование/перезапись
  --fs-options=<str>            Опции монтирования файловой системы
  --hash=<str>                  Алгоритм хэш-функции
  -h, --help                    Вывести подробную справку по опциям командной строки
  --import-token-keyfiles       Импортировать ключевой файл в токен безопасности
  -k, --keyfiles=<str>          Ключевые файлы
  -l, --list                    Список смонтированных томов
  --list-token-keyfiles         Список ключевых файлов токена безопасности
  --load-preferences            Загрузить настройки пользователя
  --mount                       Смонтировать том интерактивно
  -m, --mount-options=<str>     Опции монтирования тома TrueCrypt
  --new-keyfiles=<str>          Новые ключевые файлы
  --new-password=<str>          Новый пароль
  --non-interactive             Не задавать вопросов
  -p, --password=<str>          Пароль
  --protect-hidden=<str>        Защитить скрытый том
  --protection-keyfiles=<str>   Ключевые файлы для защиты скрытого тома
  --protection-password=<str>   Пароль для защиты скрытого тома
  --random-source=<str>         Использовать файл как источник случайных данных
  --restore-headers             Восстановить заголовки тома
  --quick                       Разрешить "быстрое" форматирование
  --size=<str>                  Размер в байтах
  --slot=<str>                  Номер слота тома
  --test                        Протестировать внутренние алгоритмы
  -t, --text                    Использовать текстовый пользовательский интерфейс
  --token-lib=<str>             Библиотека токенов безопасности
  -v, --verbose                 Включить вывод подробных сообщений
  --version                     Вывести информацию о версии
  --volume-properties           Вывести параметры тома
  --volume-type=<str>           Тип тома

Также выводятся детали использования опций и некоторые простые примеры, согласно этому списку опций командной строки. Я включил в следующий раздел пару стандартных примеров вместе с тем, что они выводят, так что вы можете увидеть, как они работают.

Шифрование

Итак, создадим для примера файлы томов и смонтируем их. Эти файлы, будучи смонтированы, будут шифроваться и дешифроваться "на лету". Вы можете рассматривать их как iso-файлы, доступные на чтение и запись, но только вам не нужно будет использовать команду mount; вместо этого используйте двоичный файл TrueCrypt. Когда вы будете работать внутри смонтированного "раздела", шифрование (и, конечно, дешифрование) будут выполняться автоматически.

Первое, что нам нужно сделать - создать стандартный файл тома размером 5 МБ. Заметьте, что мы используем опции "-t", которая означает "Использовать текстовый интерфейс", и "-c" - "Создать новый том". Теперь у нас запросят информацию, необходимую для создания тома. Понятно, что мы могли бы использовать другие опции для определения некоторых данных прямо в командной строке, но мне кажется, что интерактивный режим понятнее.

[root@w2 tmp]#
[root@w2 tmp]# mkdir tests
[root@w2 tmp]# cd tests/
[root@w2 tests]#
[root@w2 tests]# truecrypt -t -c
Тип тома:
 1) Обычный
 2) Скрытый
Выбрать [1]: 1

Введите путь к тому: /tmp/tests/file.tc

Введите размер тома (sizeK/size[M]/sizeG): 5M

Алгоритм шифрования:
 1) AES
 2) Serpent
 3) Twofish
 4) AES-Twofish
 5) AES-Twofish-Serpent
 6) Serpent-AES
 7) Serpent-Twofish-AES
 8) Twofish-Serpent
Выбрать [1]: 1

Алгоритм хэш-функции:
 1) RIPEMD-160
 2) SHA-512
 3) Whirlpool
Выбрать [1]: 1

Файловая система:
 1) FAT
 2) None
Выбрать [1]: 1

Введите пароль:
ПРЕДУПРЕЖДЕНИЕ: Короткие пароли легко взламываются методом прямого перебора!

Мы рекомендуем выбирать пароль, содержащий не менее 20 символов. Вы уверены, что хотите использовать короткий пароль? (y=Yes/n=No) [No]: y

Введите пароль ещё раз:

Введите путь к ключевому файлу [none]:

Введите не менее 320 случайно выбранных символов и затем нажмите Enter:
Осталось символов: 247
Осталось символов: 57

Готово: 100,000%  Скорость:  782 KB/s  Осталось: 0 s

Том TrueCrypt успешно создан.
[root@w2 tests]#

Можно проверить, что файл указанного размера создан. (Программа добавляет заголовок, но он сравнительно небольшой.)

[root@w2 tests]# ls -la
total 5208
drwxr-xr-x  2 root root    4096 jul  4 21:03 .
drwxrwxrwt  9 root root   65536 jul  4 21:01 ..
-rw-------  1 root root 5242880 jul  4 21:04 file.tc
[root@w2 tests]#

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

[root@w2 tests]# mkdir mount_point
[root@w2 tests]# truecrypt -t file.tc /tmp/tests/mount_point

Здесь вы можете столкнуться со следующим предупреждением:

Предупреждение: Ваша система использует устаревшую версию ядра Linux.

Из-за ошибки в ядре Linux ваша система может зависнуть в процессе
записи данных в том TrueCrypt. Эта проблема может быть решена
обновлением ядра до версии 2.6.24 или выше.

Если FUSE и все требуемые компоненты вы установили правильно, можно смело его проигнорировать, и в дальнейшем процесс монтирования должен пройти без каких бы то ни было неприятностей.

Введите пароль для /tmp/tests/file.tc:
Введите ключевой файл [none]:
Защитить скрытый том (если есть)? (y=Yes/n=No) [No]:
[root@w2 tests]#

Теперь давайте создадим тестовый файл, и затем размонтируем том. Опция "-d" размонтирует все смонтированные в текущий момент файловые системы TrueCrypt.

[root@w2 tests]# ls
file.tc  mount_point
[root@w2 tests]# cd mount_point/
[root@w2 mount_point]# ls -la
total 20
drwx------  2 root root 16384 ene  1  1970 .
drwxr-xr-x  3 root root  4096 jul  4 22:32 ..
[root@w2 mount_point]# cat > secret.txt
This is a secret test.
[root@w2 mount_point]# cat secret.txt
This is a secret test.
[root@w2 mount_point]# cd ..
[root@w2 tests]# truecrypt -d
[root@w2 tests]# ls mount_point
[root@w2 tests]#

Использование ключевых файлов может существенно повысить безопасность. Они будут объединяться с паролем в процессе шифрования и дешифрования. Просто в порядке тестирования, мы будем использовать обычный сжатый файл; документация рекомендует такой тип файлов (например, mp3), а также файлы, генерируемые случайным образом. Вы можете рассматривать его как приватный ключ. Конечно, вы можете использовать и общедоступный файл, но этот секрет вы должны доверять только тем, кому доверяете и пароль. Этот файл будет служить своего рода источником случайных данных.

[root@w2 tests]# truecrypt -t -c
Тип тома:
 1) Обычный
 2) Скрытый
Выбрать [1]: 1

Введите путь к тому: volume2.tc

Введите размер тома (sizeK/size[M]/sizeG): 1M

Алгоритм шифрования:
 1) AES
 2) Serpent
 3) Twofish
 4) AES-Twofish
 5) AES-Twofish-Serpent
 6) Serpent-AES
 7) Serpent-Twofish-AES
 8) Twofish-Serpent
Выбрать [1]: 1

Алгоритм хэш-функции:
 1) RIPEMD-160
 2) SHA-512
 3) Whirlpool
Выбрать [1]: 2

Файловая система:
 1) FAT
 2) None
Выбрать [1]: 1

Введите пароль:
ПРЕДУПРЕЖДЕНИЕ: Короткие пароли легко взламываются методом прямого перебора!

Мы рекомендуем выбирать пароль, содержащий не менее 20 символов. Вы уверены, что хотите использовать короткий пароль? (y=Yes/n=No) [No]: y

Введите пароль ещё раз:

Введите путь к ключевому файлу [none]: ../fuse-2.7.4.tar.gz
Введите путь к ключевому файлу [закончить]:

Введите не менее 320 случайно выбранных символов и затем нажмите Enter:
Осталось символов: 40

Готово: 100,000%  Скорость:  267 KB/s  Осталось: 0 s

Том TrueCrypt успешно создан.
[root@w2 tests]#

Монтирование также выполняется ожидаемым образом. Сперва я не буду определять ключевой файл, чтобы показать реакцию программы на это. Обратите внимание, что пароль был правильный.

[root@w2 tests]# mkdir mount_point2
[root@w2 tests]# truecrypt -t volume2.tc mount_point2
Введите пароль для /tmp/tests/volume2.tc:
Введите ключевой файл [none]:
Защитить скрытый том (если есть)? (y=Yes/n=No) [No]:
Неправильный пароль или том не поддерживается TrueCrypt.

Введите пароль для /tmp/tests/volume2.tc:
Защитить скрытый том (если есть)? (y=Yes/n=No) [No]:
Неправильный пароль или том не поддерживается TrueCrypt.

[CTRL-C]

[root@w2 tests]#
[root@w2 tests]# truecrypt -t volume2.tc mount_point2
Введите пароль для /tmp/tests/volume2.tc:
Введите ключевой файл [none]: ../fuse-2.7.4.tar.gz
Введите ключевой файл [завершить]:
Защитить скрытый том (если есть)? (y=Yes/n=No) [No]:
[root@w2 tests]#

Заключение

Как вы могли увидеть из этого примера, режим командной строки TrueCrypt вовсе не сложен. Это мощный инструмент для быстрого шифрования файлов, использующий сильную криптографию, и легко перемещаемый. (Файл тома, к примеру, можно скопировать на флешку и затем смонтировать в Windows.) Он работает в Linux, хорошо документирован, бесплатен, и у вас есть доступ к его исходному коду. С точки зрения криптографии, реализация сильных, современных и хорошо известных алгоритмов, долгое существование программы и её популярность могут добавить вам уверенности.

Ссылки

[1] Комментарий Рика Моена (Rick Moen): Внимательное чтение текущей лицензии TrueCrypt версии 2.7 наводит на мысль, по моему мнению человека, помешанного на лицензиях, что в TrueCrypt Foundation на данный момент сумели исправить все проблемы, на которые ссылались юристы Red Hat, сборщики пакетов Ubuntu, разработчики Debian и разработчики Gentoo.

Процитированная страница Fedora wiki всё ещё заявляет, что эта лицензия до сих пор проприетарная, однако этот приговор, насколько я могу предположить, относится к одной из предыдущих версий лицензии, вероятно, к 2.5.

Лицензия TrueCrypt остаётся не одобренной OSI (поскольку это "ещё одна заслуживающая сожаления узконаправленная лицензия", которые больше не принимаются на сертификацию), но несмотря на это в своей последней версии она представляется полностью совместимой с Open Source Definition.

[2] Комментарий Рика Моена: Это тестирование - один из главных аргументов в пользу AES/Rijndael, и причины этого следует конкретизировать. В других областях программирования принято считать, что чем алгоритм новее, тем лучше, и по этой логике новые шифры должны, в общем и целом, заслуживать большего доверия. Но в криптографии применяется другой подход. Новые шифры, хотя и могут впечатлять своими спецификациями и дизайном, воспринимаются осторожно, и предпочтение отдаётся хорошо протестированным альтернативам - чем старше, тем лучше. Поэтому в состязании, которое привело Rijndael к выбору в качестве стандарта AES, алгоритм Twofish Брюса Шнайера, на первый взгляд, должен был иметь преимущество перед его более ранним шифром Blowfish. Но, фактически, Blowfish более протестирован из этих двух, и он выдержал гораздо, гораздо больше различных и более длительных атак экспертов-криптографов, но так и не был взломан.

[3] Комментарий Рене Пфайфера (Rene Pfeiffer): Это хорошая практика - загружать, распаковывать и компилировать всё от имени пользователя, отличного от root. Привилегии суперпользователя нужны вам только для установки программы. На каждой системе у меня заведён пользователь build, root используется только для инсталляции. Имейте в виду, что многие файлы Makefile и скрипты configure состоят из кода, который исполняется на вашей машине. Никто не совершенен, и если в этих скриптах обнаружится ошибка, последствия будут гораздо меньше, если вы используете для сборки выделенного пользователя, не имеющего никаких привилегий.


Об авторе

Ариэль Майорано работает ИТ-консультантом в Аргентине, в студии m-sistemas. Он имеет учёную степень по информатике и принимает активное участие в разработке решений в области защиты информации и веб-технологий. Его первым дистрибутивом Linux был Slackware, с которым он начал работать почти пятнадцать лет назад.