Шифрование разделов linux. Подробно изучаем TrueCrypt и украшаем систему шифрования СryptSetup-ом.

Возникла потребность на Ubuntu сервере создать шифрованную партицию. Да не просто шифрованную, а со скрытой областью доступной по второму секретному ключу. Для шифрования воспользуемся кроссплатформенной утилитой TrueCrypt.

Установка TrueCrypt.

Качаем с сайта http://www.truecrypt.org/downloads.php

Распаковываем:

$  tar xfz truecrypt-6.1a-ubuntu-x86.tar.gz

Устанавливаем:

# ./truecrypt-6.1a-setup-ubuntu-x86
TrueCrypt 6.1a Setup
____________________
Installation options:
1) Install truecrypt_6.1a-0_i386.deb
2) Extract package file truecrypt_6.1a-0_i386.deb and place it to /tmp
To select, enter 1 or 2: 1
Before you can use, extract, or install TrueCrypt, you must accept the terms of
the TrueCrypt License.
Press Enter to display the license terms...
......Читаем лицензионное соглашение.........
Do you accept and agree to be bound by the license terms? (yes/no): yes
Running package installer...
(Чтение базы данных... на данный момент установлено 20033 файлов и каталогов.)
Подготовка к замене пакета truecrypt 6.1a-0 (используется файл /tmp/truecrypt_6.1a-0_i386.deb)...
Распаковывается замена для пакета truecrypt ...
dpkg: зависимости пакетов не позволяют настроить пакет truecrypt:
truecrypt зависит от dmsetup, однако:
Пакет dmsetup не установлен.
truecrypt зависит от libsm6, однако:
Пакет libsm6 не установлен.
truecrypt зависит от libgtk2.0-0, однако:
Пакет libgtk2.0-0 не установлен.
dpkg: не удалось обработать параметр truecrypt (--install):
проблемы зависимостей -- оставляем не настроенным
При обработке следующих пакетов произошли ошибки:
truecrypt
Error: TrueCrypt installation failed

Мда… ошибки… Пробуем удовлетворить зависимости:

# apt-get install dmsetup
Чтение списков пакетов... Готово
Построение дерева зависимостей
Reading state information... Готово
Возможно, для исправления этих ошибок вы захотите воспользоваться `apt-get -f install':
Пакеты, имеющие неудовлетворённые зависимости:
truecrypt: Зависит: libsm6 но он не будет установлен
Зависит: libgtk2.0-0 но он не будет установлен
E: Неудовлетворённые зависимости. Попытайтесь выполнить 'apt-get -f install',
не указывая имени пакета, (или найдите другое решение).

Так и делаем:

# apt-get -f install

Все, процесс инсталляции закончен. Начинаем эксперименты.

Создание стандартного TrueCrypt тома.

Для начала поэкспериментируем с контейнером в файле. И так, создадим ключевой файл, для этого перейдем в папку для экспериментов и выполним следующую команду:

$ truecrypt --random-source=/dev/urandom --create-keyfile ./testkeyfile
Keyfile has been successfully created.

Теперь создадим файл контейнер (cryptofile, причем имя может быть любым) используя только что созданный ключ (testkeyfile):

$ truecrypt -k ./testkeyfile -c ./cryptofile
[В место файла можно использовать устройство партиции диска, например /dev/sda3, все остальное неизменно]
Volume type:
 1) Normal (Обычный контейнер)
 2) Hidden (Скрытый, находящийся в контейнере Normal)
Select [1]: 1 (Так как у нас нет еще не какого контейнера создадим обычный)

Enter volume size (sizeK/size[M]/sizeG): 50M (Для экспириментов хватит и 50М)

Encryption algorithm:
[Алгоритмы шифрования все алгоритмы в TrueCrypt используют 256 бит размер ключа и 128 бит размер блока]
 1) AES [читать тут]
 2) Serpent [читать тут]
 3) Twofish [читать тут]
 4) AES-Twofish [Каскадное шифрование (для эстетов и параноиков) AES-Twofish]
 5) AES-Twofish-Serpent [Каскадное шифрование AES-Twofish-Serpent]
 6) Serpent-AES [Каскадное шифрование Serpent-AES]
 7) Serpent-Twofish-AES [Каскадное шифрование Serpent-Twofish-AES]
 8) Twofish-Serpent [Каскадное шифрование Twofish-Serpent]
Select [1]: 1 (Пока нас не интересует ни защещенность ни быстродействие, используем по умолчанию)

Hash algorithm: [хэш-функции для генерации ключей шифрования, соли и ключа заголовка]
 1) RIPEMD-160
 2) SHA-512
 3) Whirlpool
Select [1]: 1 (Аналогично предыдущему пункту)

Filesystem:
 1) FAT
 2) None
Select [1]: 1 (Пусть будет FAT, хотя можно выбрать 2 None и потом отформатировать как нравится)

Enter password:
WARNING: Short passwords are easy to crack using brute force techniques!
(Ругается что я взял короткий пароль, но нам все равно и мы говорим что нам пойдет "y")

We recommend choosing a password consisting of more than 20 characters.
Are you sure you want to use a short password? (y=Yes/n=No) [No]: y

Re-enter password:

Please type at least 320 randomly chosen characters and then press Enter:
Сюда пишем минимум 320 любых символов вот например: если не хватит он попросит добавить
так что не скупимся на Enter-ы, все это случайный текст :) 982fh98hfuehf9uh978
rhf9uh-e9f8haw84thiegnifn-0g8wj358tjirengou3hq9-38h-89h-8h98-(*_(*&#Y($
IUG)*&309r7r-9ufu -98 93-q98-49c834urt9834-89q43nv-9834y-98rxy9
-438ryf9uefg 978fy948yr9qhouidgf-q38u-q8rhjok;kj-zs8u-8y-927qy4
7y51070guigd-078y-98Y_(~*(*(^[[Z(&&A&&~)@(*&y(37Y-92834YR9-8Y9UASDH-98Y-98
-8-88--8ц478шгашрзцщкер=284рщфшер08ве02й984г50=4г3ещшоу=0е9г8=049ге0шуцщхшопа=ц
й09г=04958г=0й9г=09егщшводжлфывоа089г4=09ге=09й4г=0е9г=049егывоапхщзфш=0909u=094u095u=09wqeu

Done: 100,000%  Speed:   12 MB/s  Left: 0 s

The TrueCrypt volume has been successfully created.

Контейнер создан. Начинаем эксперименты с созданным контейнером.
Для начала примонтируем контейнер:

# truecrypt ./cryptofile
Enter mount directory [default]: /home/rom/test   [Указываем папку куда монтировать диск]
Enter password for /home/rom/testing/cryptofile:
[Вводим пороль который указали при создании cryptofile]
Enter keyfile [none]: testkeyfile  [Указываем ключевой файл]
Enter keyfile [finish]: 
[Т.к. у нас только один ключевой файл то жмем Enter иначе указали следующий файл и т.д. ]
Protect hidden volume? (y=Yes/n=No) [No]: n  
[Защещать ли скрытый диск, т.к. у нас его нет, то жмем n]
Incorrect password or not a TrueCrypt volume.  [Вот тебе и раз! ошибся при вводе пароля]
Enter password for /home/rom/testing/cryptofile:  [Указываем правильный пароль]
Protect hidden volume? (y=Yes/n=No) [No]: n

Вот примонтировали, смотрим что получилось:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  948M   17G   6% /
varrun               1009M  184K 1009M   1% /var/run
varlock              1009M     0 1009M   0% /var/lock
udev                 1009M   40K 1009M   1% /dev
devshm               1009M     0 1009M   0% /dev/shm
/dev/mapper/truecrypt1
50M     0   50M   0% /home/rom/test

Видим диск примонтировался. Кинем туда файлов и отмонтируем:

# truecrypt -d     #(я не уверен, но может быть в начале было бы правильно отмонтировать диск через umount)

Создание скрытого TrueCrypt тома.

Создадим скрытый том внутри созданного нами только что. Но для начала разберемся, как в основном размещается срытый раздел.

hidden-volumehidden-volume

И так видим, что с начало нам требуется создать  стандартный TrueCrypt том, заполнить фиктивными «скрытыми» данными, затем в нем создаем скрытый TrueCrypt том. На рисунке видно структуру:

  • зеленая полоска — это заголовок (header) стандартного TrueCrypt тома
  • фиолетовая область — это область занятая данными  стандартного TrueCrypt тома
  • серая область — незаполненная данными область тома
  • голубая полоска — это заголовок (header) стандартного скрытого TrueCrypt тома
  • синяя область — это область занятая данными  скрытого TrueCrypt тома
$ truecrypt -k ./testkeyfile1 -c ./cryptofile
Volume type:
 1) Normal
 2) Hidden
Select [1]: 2
IMPORTANT: Inexperienced users should use the graphical user interface to create
a hidden volume. When using the text interface, the procedure described in
the command line help must be followed to create a hidden volume.
Enter hidden volume size (sizeK/size[M]/sizeG): 40M
Encryption algorithm:
 1) AES
 2) Serpent
 3) Twofish
 4) AES-Twofish
 5) AES-Twofish-Serpent
 6) Serpent-AES
 7) Serpent-Twofish-AES
 8) Twofish-Serpent
Select [1]:
Hash algorithm:
 1) RIPEMD-160
 2) SHA-512
 3) Whirlpool
Select [1]:
Filesystem:
 1) FAT
 2) None
Select [1]: 2 [В в этот раз отформатируем не FAT-ом]
Enter password:
WARNING: Short passwords are easy to crack using brute force techniques!
We recommend choosing a password consisting of more than 20 characters.
Are you sure you want to use a short password? (y=Yes/n=No) [No]: y
Re-enter password:
Please type at least 320 randomly chosen characters and then press Enter:
Опять вводим 320 случайных символов :)
г209834872-834508ущшкр-9й8гк-0823г0-8г^_89г-08оащцшу0а89г2=09г09u039u09ij
[piuj0-982u0rih[0i)*(_)*Y_#$(*HORHO(IUH)*HOFUIHE()*y-0823085708roiashdf[o
i2-9038urt0893uirhaweoh-98c2-5897-345873048957-n089475-n894375-083475-v5
7-438dn75-403875c-n4039875-n38475-0n3489750c83475-08934c5n-089347-58c73-
49857nc-398475-9384c75n-394875-nc394875-n34987c5n-348
Done: 100,000%  Speed:   28 MB/s  Left: 0 s
The hidden TrueCrypt volume has been successfully created and is ready for use.
If all the instructions have been followed and if precautions mentioned in
the section "Security Precautions Pertaining to Hidden Volumes" in the TrueCrypt
User's Guide are followed, it will be impossible to prove that the hidden volume
exists, even when the outer volume is mounted.
WARNING: IF YOU DO NOT PROTECT THE HIDDEN VOLUME (FOR INFORMATION ON HOW TO DO SO,
REFER TO THE SECTION "PROTECTION OF HIDDEN VOLUMES AGAINST DAMAGE" IN THE TRUECRYPT
USER'S GUIDE), DO NOT WRITE TO THE OUTER VOLUME. OTHERWISE, YOU MAY OVERWRITE
AND DAMAGE THE HIDDEN VOLUME!

Как видим все аналогично. Теперь отформатируем вновь созданный скрытый раздел.
Для начала подцепим срытый раздел. Надо учесть, что сначала TrueCrypt пытается дешифровать введённым паролем заголовок стандартного тома, а если это не получается, то дешифрует заголовок скрытого тома. Поэтому пароли (и ключевые файлы) должны разлечатся. Такой метод сделан для того, что по словам создателей невозможно опроеделить есть ли скрытый том или нет.

# truecrypt --filesystem=none -k ./testkeyfile ./cryptofile
Enter password for /home/rom/testing/cryptofile:
Protect hidden volume? (y=Yes/n=No) [No]:
# ls /dev/mapper/
control  truecrypt1   [как видим появилось устройсво truecrypt1]

Отформатируем раздел

# mkfs.ext3 -v /dev/mapper/truecrypt1

Теперь можно примонтировать как обычный диск, либо отключить через truecrypt -d а потом опять примонтировать через truecrypt.

Сохранение заголовка тома TrueCrypt.

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

И так приступим:

# truecrypt --backup-headers ./cryptofile
For security reasons, you will have to enter the correct password
(and/or supply the correct keyfiles) for the volume.
Note: If the volume contains a hidden volume, you will have to enter
the correct password (and/or supply the correct keyfiles) for the outer
volume first. Afterwards, if you choose to back up the header
of the hidden volume, you will have to enter the correct password
(and/or supply the correct keyfiles) for the hidden volume.
Enter password for the normal/outer volume: [Вводим пароль стандартног тома]
Enter keyfile [none]: ./testkeyfile [Указываем ключевой файл стандартного тома]
Enter keyfile [finish]:
Does the volume contain a hidden volume? (y=Yes/n=No) [No]: y [Говорим, что у нас есть скрытый том]
Enter password for the hidden volume: [Вводим пароль cскрытого тома]
Enter keyfile [none]: ./testkeyfile1 [Указываем ключевой файл скрытого тома]
Enter keyfile [finish]:
Are you sure you want to create volume header backup for /home/rom/testing/cryptofile?
After you click Yes, you will prompted for a filename for the header backup.
Note: Both the standard and the hidden volume headers will be re-encrypted using
a new salt and stored in the backup file. If there is no hidden volume within
this volume, the area reserved for the hidden volume header in the backup file
will be filled with random data (to preserve plausible deniability).
When restoring a volume header from the backup file, you will need to enter
the correct password (and/or to supply the correct keyfiles) that was/were
valid when the volume header backup was created. The password (and/or keyfiles)
will also automatically determine the type of the volume header to restore,
i.e. standard or hidden (note that TrueCrypt determines the type through
the process of trial and error).
 (y=Yes/n=No) [Yes]: y
Enter filename: testheshbackup [Имя файла в который мы сохраним заголовок]
Volume header backup has been successfully created.
IMPORTANT: Restoring the volume header using this backup will also restore
the current volume password. Moreover, if keyfile(s) are/is necessary to
mount the volume, the same keyfile(s) will be necessary to mount the volume
again when the volume header is restored.
WARNING: This volume header backup may be used to restore the header ONLY
of this particular volume. If you use this header backup to restore a header
of a different volume, you will be able to mount the volume, but you will
NOT be able to decrypt any data stored in the volume (because you will change its master key).

Вот, мы и сокранили копию в файле testheshbackup.

Примонтируем стсндартный том (как мы умеем) и создадим какиенибудь данные, затем отмонтируем.
Примонтируем скрытый том и опять создадим данные, затем отмонтируем.

Смена пароля тома TrueCrypt.

Попробуем сменить пароль и ключевой файл.

# truecrypt -C ./cryptofile
Enter password: [Вводим пароль тома]
Enter keyfile [none]: ./testkeyfile [Вводим имя ключевого файла]
Enter keyfile [finish]:
Enter new password:   [Вводим новый парль]
WARNING: Short passwords are easy to crack using brute force techniques!
We recommend choosing a password consisting of more than 20 characters.
Are you sure you want to use a short password? (y=Yes/n=No) [No]: y 
[Соглашаемся с тем что пароль короткий :)]
Re-enter password: [Повтаряем новый пароль]
Keep current keyfiles? (y=Yes/n=No) [Yes]: no [Говорим, что не будем сохранять ключевой файл]
Enter new keyfile [none]: ./testkeyfile2 [Указываем файл который будет новым ключевым файлом]
Enter new keyfile [finish]:
Password and/or keyfile(s) successfully changed.
IMPORTANT: Please make sure you have read the section
'Changing Passwords and Keyfiles' in the chapter 'Security Precautions'
in the TrueCrypt User Guide.

Аналогично сменим пароль скрытого тома, на этот раз ключевой файл менять не будем:

# truecrypt -C ./cryptofile
Enter password:
Enter keyfile [none]: ./testkeyfile1
Enter keyfile [finish]:
Enter new password:
WARNING: Short passwords are easy to crack using brute force techniques!
We recommend choosing a password consisting of more than 20 characters.
Are you sure you want to use a short password? (y=Yes/n=No) [No]: yes
Re-enter password:
Keep current keyfiles? (y=Yes/n=No) [Yes]:
Password and/or keyfile(s) successfully changed.
IMPORTANT: Please make sure you have read the section 'Changing Passwords and Keyfiles'
in the chapter 'Security Precautions' in the TrueCrypt User Guide.

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

Восстановление заголовка тома TrueCrypt.

И так начнем восстановление  со стандартного тома:

# truecrypt --restore-headers ./cryptofile
Please select the type of volume header backup you want to use:
1) Restore the volume header from the backup embedded in the volume
[Восстановление заголовока тома из резервной копии встроенной в том]
2) Restore the volume header from an external backup file
[Восстановление заголовока тома из внешнего файла]
Select: 2 [У нас внешний файл]
Are you sure you want to restore volume header of /home/rom/testing/cryptofile?
WARNING: Restoring a volume header also restores the volume password that was valid
when the backup was created. Moreover, if keyfile(s) were/was necessary to mount
the volume when the backup was created, the same keyfile(s) will be necessary to mount
the volume again after the volume header is restored.
After you click Yes, you will select the header backup file. (y=Yes/n=No) [Yes]: y
Enter filename: ./testheshbackup [имя файла содержащий копию заголовка тома]
Enter password for the header stored in backup file: 
[введем первоначальный пароль для сохранненнго заголовка]
Enter keyfile [none]: testkeyfile [введем имя исходного ключевого файла]
Enter keyfile [finish]:
The volume header has been successfully restored.
IMPORTANT: Please note that an old password may have been restored as well.
Moreover, if keyfile(s) were/was necessary to mount the volume when
the backup was created, the same keyfile(s) are now necessary to mount the volume again.

Теперь аналогично восстановим заголовок скрытого тома:

# truecrypt --restore-headers ./cryptofile
Please select the type of volume header backup you want to use:
1) Restore the volume header from the backup embedded in the volume
2) Restore the volume header from an external backup file
Select: 2
Are you sure you want to restore volume header of /home/rom/testing/cryptofile?
WARNING: Restoring a volume header also restores the volume password that was
valid when the backup was created. Moreover, if keyfile(s) were/was necessary
to mount the volume when the backup was created, the same keyfile(s) will be necessary
 to mount the volume again after the volume header is restored.
After you click Yes, you will select the header backup file. (y=Yes/n=No) [Yes]: y
Enter filename: ./testheshbackup
Enter password for the header stored in backup file:
Enter keyfile [none]: ./testkeyfile1
Enter keyfile [finish]:
The volume header has been successfully restored.
IMPORTANT: Please note that an old password may have been restored as well.
Moreover, if keyfile(s) were/was necessary to mount the volume when
the backup was created, the same keyfile(s) are now necessary to mount the volume again.

И вновь проверим данные. Мда… Скрытый том восстановился и все файлы в нем сохнанены и пароль старый. А вот стандартный том, что то не монтируется. Может быть ошибся с паролем, попробуем востановить снова. Ну вот, после второй попытки все встало на свои места. Мы выяснили, что если мы напутаем с паролем, то восстановить заголовок удастся, а вот расшифровать не получится, но это поправимо 🙂

Восстановление тома после не корректного отключения питания.

# truecrypt —filesystem=none ./cryptofile
Enter password for ./cryptofile:
Enter keyfile [none]:
Protect hidden volume? (y=Yes/n=No) [No]:

# fsck -p -t ffs /dev/mapper/truecrypt1
fsck 1.40.8 (13-Mar-2008)
/dev/mapper/truecrypt1: recovering journal
/dev/mapper/truecrypt1 has been mounted 50 times without being checked, check forced.
/dev/mapper/truecrypt1: 5824/28835840 files (17.8% non-contiguous), 74875618/115343328 blocks

Скорость работы разных методов шифрования TrueCrypt.

Я думаю, что не стоит проверять, что каскадное шифрование медленнее. Если вы эстет или параноик, либо это требуется для конкретной задачи, то можете провести опыты самостоятельно.
Описание опыта. Создаем три одинаковых тома размером 100Mb каждый и проведем 4 эксперимента, по 10 опытов в каждом:

  1. Копирование большого файла на шифрованный диск (90Mb контейнер TrueCrypt)
  2. Копирование большого файла с шифрованного диска
  3. Копирование группы мелких файлов на шифрованный диск (10000 ключевых файлов)
  4. Копирование группы мелких файлов с шифрованного диска

Сразу же оговорюсь, что это не идеальный эксперимент, так как:

  1. Число экспериментов мало
  2. На одном комппе (колво памяти, процессоров)
  3. Копирование будет на одном винчестере (было бы не плохо качать с другого более быстродейстующего источника).
  4. Экспериметн будет проводится только со стандартным томом и в качестве контейнера будет только файл.
  5. Размер контейнера будет не изменный
  6. Хэш алгоритм будет одним и тем же  SHA-512 (хотя я думаю на скорость это не влияет)
  7. Будет использоваться только файловая система FAT
  8. и т.д. и т.п.

Описание компа:

  • Плата Intel D945GCLF2 945GC/ICH7+Atom330(1.6Gh 2x512Kb)
  • 2G DDR2-667
  • HDD Samsung HD502IJ

Для измерения времени копирования будем использовать команду time.

Файлы для тестирования:

  • ./cryptofile0 — файл размером 90М заполненный случайными данными
  • ./testkeyfile — файл размером 64b заполненный случайными данными

Эксперимент 1.1. Алгоритм AES. Запись на шифрованный диск TrueCrypt файла 90Mb.

Создадим скрипт while100.sh который 100 раз копирует файл ./cryptofile0 в директорию /home/rom/test в которую мы примонтируем шифрованный том и 100 раз удаляет этот файл после копирования:

#!/bin/sh
min_num=1
max_num=100
i=$min_num
while [ $i -le $max_num ]; do
 cp ./cryptofile0 /home/rom/test/
 rm  /home/rom/test/cryptofile0
 i=`expr $i + 1`
done

теперь примонтируем шифрованный диск TrueCrypt, шифрованный алгоритмом AES к папке /home/rom/test и запустим скрипт while100.sh сдедующим образом:

$ (time sh while100.sh )&& cp ./cryptofile0 /home/rom/test/

И так скрипт проработал real    9m12.131s

Экспиримент 2.1. Алгоритм AES. Чтение с шифрованного диска TrueCrypt файла 90Мb.

Немно померняем предыдущий скрипт, теперь он наоборот бкдет копировать с шифрованного диска тот же файл:

#!/bin/sh
min_num=1
max_num=100
i=$min_num
while [ $i -le $max_num ]; do
 cp /home/rom/test/cryptofile0 ./
 rm ./cryptofile0
 i=`expr $i + 1`
done

Запустим скрипт аналогичным способом:

$ (time sh while100.sh )&& cp /home/rom/test/cryptofile0 ./

Время работы real    1m14.392s

Эксперименты 3.1, 4.1, 5.1, 6.1.

Аналогичные первому и второму эксперименты:

Алгоритм Serpent 90Мb*100 запись: 8m18.001s
Алгоритм Serpent 90Мb*100 чтение: 1m17.042s

Алгоритм Twofish 90Мb*100 запись: 7m10.816s
Алгоритм Twofish 90Мb*100 чтение: 1m13.138s

Эксперимент 1.2, 2.2, 3.2, 4.2, 5.2, 6.2. Запись на шифрованный диск TrueCrypt 10000 файлов по 64b каждый.

Для начала создадим 10000 файлов из ключевого файла. Для этого скопируем ключевой файл в отдельную папку. Затем создадим там скрипт:

#!/bin/sh
min_num=1
max_num=10000
i=$min_num
mkdir t
while [ $i -le $max_num ]; do
 cp testkeyfile t/testkeyfile$i
 i=`expr $i + 1`
]
done

Затем будем заливать файлы на шифрованный диск. Получилось 40Mb мелких файлов. Выполним команды:

$ time (cp -r /home/rom/t /home/rom/test/) #для проверки записи
$ rm -r  /home/rom/t && time (cp -r /home/rom/test/t /home/rom/)

Алгоритм AES 10000 файлов запись: 2m23.424s
Алгоритм AES 10000 файлов чтение: 1m29.314s

Алгоритм Serpent 10000 файлов запись: 2m20.157s
Алгоритм Serpent 10000 файлов чтение: 1m28.919s

Алгоритм Twofish 10000 файлов запись: 2m20.051s
Алгоритм Twofish 10000 файлов чтение: 1m29.280s

Как видим на мелких файлах разница в скорости работы не заметна.

Резюме по скорости работы криптования.

Как видим самый медленный AES, немного быстрее Serpent и фоварит теста Twofish.

Шифрование SWAP с помощью СryptSetup.

Инсталируем cryptsetup для шифрации SWAP-a:

#apt-get install cryptsetup

Добавляем загружаемые модули:

#echo aes >> /etc/modules
#echo dm_mod   >> /etc/modules
#echo dm_crypt >> /etc/modules

Запускаем cfdisk

#cfdisk

И смотрим какой раздел у нас SWAP, у меня это /dev/sda2

mkswap /dev/hde2

Перезагружаемся

#shutdown -r now

Добавляем строку создания шифрованного диска для swap

#echo "cryptoswap /dev/sda2 /dev/random swap" >> /etc/crypttab

Отключаем SWAP

#swapoff -a

Забиваем случайными числами партицию swap-а:

#dd if=/dev/urandom of=/dev/sda2 count=100

Запускаем cryptdisks

#/etc/init.d/cryptdisks start

Заменяем строку swap-а в файле /etc/fstab:

  /dev/mapper/cryptoswap none  swap  sw  0  0

Подключаем SWAP:

#swapon -a

Размещение раздела /tmp в памяти.

Для того что бы важные данные не остались на диске в случае экстренного выключения питания, поместим  директорию /tmp в память, для этого в файл /etc/fstab следующую строку:

     tmpfs   /tmp   tmpfs   defaults,nosuid,mode=1777,size=200M   0 0

Теперь при каждой загрузке в памяти будет создаватся диск и туда помещать директорию /tmp

Locate.

Что нас может еще выдать, так это locate.

Первый путь (не наш путь) либо удалить файл /etc/cron.daily/mlocate, либо в начале его поставить exit 0. А при необходимости запускать скрипт в ручную, при отмонтированном диске.

Второй путь (наш путь), это отредактировать файл /etc/updatedb.conf, добавив в него исключения (что может нас выдать), либо монтируя шифрованный раздел в стандартные исключения, либо использовать файловые системы с исключениями. Вот оригенальный файл /etc/updatedb.conf:

PRUNE_BIND_MOUNTS=»yes»
PRUNEPATHS=»/tmp /var/spool /media»
PRUNEFS=»NFS nfs nfs4 afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf rpc_pipefs»

отсюда видно, что например можно безбоязненно монтировать в /tmp,  /var/spool и  /media. Мы так же в безопастности если шифрованные партиции унас имеют одну из файловых систем параметра PRUNEFS.

Послесловие.

Помните, какой бы совершенной ни была бы ваша система шифрования, все пароли всрвыаются в течении одной минуты с помощью термоанального криптосканирования 🙂

One Response to “Шифрование разделов linux. Подробно изучаем TrueCrypt и украшаем систему шифрования СryptSetup-ом.”

  1. Вот тут ошиПка:

    /dev/mapper/cryptoswap none swap sw 0 0

Leave a Reply