Краткое описание

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

Необходимые файлы

  • Скачать необходимые файлы для установки можно на http://www.truecrypt.org/downloads. Эта инструкция написана для console-версии. В архиве не исходники, это инсталлятор, нужно его рапаковать и запустить.
  • 28 мая 2014 проект был закрыт, разработка свёрнута. Все старые версии удалены, репозиторий очищен. Обстоятельства закрытия проекта вызвали множество догадок и обсуждений в ИТ сообществе.
  • Версия 7.2 вышла 28 мая 2014 года. Финальный релиз, возможно только дешифрование, возможность шифрования данных была удалена.
  • Предыдущие версии являются рабочими и не скомпрометированными. Поэтому можно рекомендовать версию 7.1a.
  • Версия 7.1a для Linux 64bit на сайте https://truecrypt.ch/downloads/ соответствуют той, что ранее была доступна на http://www.truecrypt.org/downloads (проверялось через diff - файлы софпадают)

Предисловие

Для начала нужно будет создать так называемый контейнер, в котором будут содержаться файлопапки, предназначенные для шифрования. Контейнером будет служить файл с произвольным названием или даже целый раздел диска (что довольно заманчиво). Для доступа к контейнеру обязательно нужно будет указать пароль (придумываете сами), а также можно сделать файл ключа (необязательная опция), с помощью которого будет шифроваться информация. Учтите сразу, что размер контейнера не резиновый, так что придётся подумать над его размером. И последнее: есть GUI для Truecrypt'а, но здесь весь процесс будет описан для работы в терминале. При работе в графическом режиме есть встроенная помощь на английском языке Help > User`s Guide. Написано для Виндовс, однако работа в Линукс практически не отличается. В сети можно найти User`s Guide переведенный на русский язык, действующая на момент публикации ссылка дана в соответствующем месте - смотри внизу страницы.

Создание зашифрованных разделов/файлов

  • Создаём файл ключа:
truecrypt --create-keyfile /home/user/test/file

, где file - название файла - ключа. Учтите, что директория /home/user/test должна существовать.

  • Создаём контейнер, в моём случае раздел:
sudo truecrypt -k /home/user/test/file -c /dev/sda9
Вместо раздела /dev/sda9 вполне можно указать и файл, например /home/user/test/cryptofile, но в этом случае нужно будет указать его размер, это делается параметром --size=5G до параметра -c. В указанном примере создастся файл cryptofile размером 5 ГигаБайт.
Иногда (FIXME всегда?) truecrypt принимает размер только в байтах, для 5 Гбайт можно или высчитать значение заранее и указать --size=5368709120, или добавить немножко терминальной магии вот так: --size=`echo 1024^3*5 | bc`.
Для «любителей» информатики: 1 ГБ = 1024 МБ, 1 МБ = 1024 кБ, 1 кБ = 1024 Байт.
Для шифрования будет использоваться сделанный уже файл - ключ.
  • Вам предложат выбрать тип контейнера (нормальный / скрытый) - выберете, также - файловую систему (FAT, ext2/3/4 или без ФС), мы выберем «без ФС», можно создать её и позже. Также вам предложат выбрать алгоритм шифрования (например, AES), а так же hash-алгоритм (например, SHA-1) для шифрования потоков данных.
Truecrypt может создавать в одной контейнере два: внешний (он же нормальный), котрый позволяет создать ФС на весь объем контейнера. А внутри внешнего (на месте неиспользуемого файловой системой пространства) можно создать скрытый. Монтируются и скрытый, и внешний одинаково, а какой контейнер откроется зависит от того, какой пароль/файл - ключ вы введете/укажите - пароль/файл - ключ от внешнего или пароль/файл - ключ от внутреннего.
Если во внешний контейнер записать информации больше чем остается места в нем с учетом скрытого, то без единой ошибки скрытый контейнер будет перезаписан (и его уже не удастся открыть).
Truecrypt используется для шифрования данных налету, то есть вы можете, подмонтировав контейнер, работать с находящимися в нём файлами как обычно (открывать/редактировать/закрывать/создавать/удалять), что очень удобно, просто это, естественно, будет медленнее, чем обычно.
  • Шифрованный раздел/файл создали. Теперь, если нужно его внутреннюю файловую систему (далее ФС) отформатировать под нужную, делаем следующее. Цепляем его Truecrypt'ом:
truecrypt -k /home/user/test/file /dev/sda9
По умолчанию будет задействован созданный Truecrypt'ом девайс /dev/mapper/truecrypt0, можно поменять девайс на другой (читайте man truecrypt).
  • По обращению к этому девайсу, можно менять например ФС в шифрованном контейнере. В нашем примере это нужно сделать. Делаем:
sudo mkfs.ext3 -v /dev/mapper/truecrypt0

Этим самым мы сделали ФС ext3 внутри нашего шифрованного контейнера.

  • Далее, т.к. наш контейнер уже «прикреплён» к девайсу /dev/mapper/truecrypt0, то осталось его просто примонтировать к какой-нибудь директории. Эта директория для монтирования должна уже существовать в системе. Монтируем:
sudo mount /dev/mapper/truecrypt0 /mnt/crypto

, где /mnt/crypto - директория, к которой примонтировали нифрованный контейнер.

  • Далее, чтобы что-то зашифровать, нужно теперь просто кинуть информацию в папку /mnt/crypto. А чтобы скрыть шифрованную информацию от чужих глаз, выполняем команду размонтирования, но с помощью Truecrypt'а:
truecrypt -d


Вот и всё, теперь без знания файла-ключа и пароля никто не сможет прочесть спрятанную информацию.

Проверка работы

  • Чтобы проверить акт размонтирования, наберём:
truecrypt -v -l

Нам покажут примонтированные Truecrypt'ом контейнеры, если такие (примонтированные) имеются.

  • Чтобы снова получить доступ к информации, подключим контейнер:
truecrypt -k /home/user/test/file /dev/sda9 /mnt/crypto
  • Для проверки снова наберём:
truecrypt -v -l

Эта команда выведет что-то вроде:

/dev/mapper/truecrypt0:
Volume: /dev/sda9
Type: Normal
Size: 22709965312 bytes
Encryption algorithm: AES
Mode of operation: LRW
Read-only: No
Hidden volume protected: No
  • Далее работаем с файлами в контейнере, обращаясь к ним как обычно.
  • Отключаем контейнер командой:
truecrypt -d
  • После этого команда
truecrypt -v -l

выведет:

No volumes mapped

Возможные проблемы и их решение

К сожалению, Truecrypt поддерживает в своих контейнерах в полной мере только файловую систему fat. Поэтому иногда не монтируются контейнеры с ФС ext3, например.

  • Подключаем контейнер командой:
truecrypt -k /home/user/test/file /dev/sda9
  • Проверяем ФС:
sudo fsck -t ext3 /dev/mapper/truecrypt0
  • Затем уже монтируем его для работы:
sudo mount /dev/mapper/truecrypt0 /mnt/crypto

При запуске в Ubuntu программы TrueCrypt выдаёт ошибку: TrueCrypt is already running причиной может быть некий файл блокировки располагающийся в домашнем каталоге. Проверяем

ls -a ~ | grep True

Удаляем файл блокировки:

rm ~/.TrueCrypt-lock-USERNAME

где USERNAME — ваше имя пользователя.



TrueCrypt обладает достаточно удобным графическим интерфейсом, но, к сожалению, разработчики жестко зашили в код интеграцию с файловым менеджером Nautilus. Это однако не значит, что если у вас стоит, к примеру, Xubuntu, то вам необходимо ставить Nautilus1). Можно обмануть TrueCrypt и пусть он думает, что вызывает Nautilus, а мы будем открывать в своем файловом менеджере (например в Thunar).

Для этого:
1. Открываем терминал, в нем выполняем:

sudo nano /usr/bin/nautilus

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

#!/bin/bash
/usr/bin/thunar $3
exit 0

3. Сохраняем и закрываем редактор: CTRL+X Y <Enter>

Этим мы создаем bash-скрипт, который возьмет третий аргумент - путь к смонтированному truecrypt-тому (первые два - служебные, для Nautilus) и передаст его в Thunar (можно вписать в скрипт и другой файловый менеджер).

Можно создать скрипт и другим редактором2).

4. Выдаем нашему скрипту права на исполнение:

sudo chmod a+x /usr/bin/nautilus 

Все. Теперь открывая том из TrueCrypt вы откроете каталог, куда смонтирован том через Thunar.

FIXME Возможно, разработчики это уже исправили.

Ссылки

Источники

Обсуждение

1)
«В Xubuntu это и не рекомендуется делать т.к. нынешний Nautilus - не просто файловый менеджер, он еще берет на себя организацию рабочего пространства, и в этом возможны различные неприятные накладки с менеджером рабочего пространства от Xubuntu.
2)
Здесь мы предложили использовать nano т.к. он есть во всех дистрибутивах семейства Ubuntu