Tue 29 May 2007
Шифрование (K)Ubuntu для домашнего и бизнес применения
Posted by Alrond | Tags: TrueCrypt : Ubuntu :
Данные в компьютерах обычно хранятся в открытом виде, как в Windows, так и в Linux, что дает доступ к любой информации практически любому, на нее покушающемуся (!) или так "случайному прохожему" или даже неслучайному.
Если вы хотите что-то скрыть от посторонних глаз, то эта статья для вас - умеренных параноиков и пользователей (K)Ubuntu. Особенно это касается владельцев ноутбуков (про массовые кражи все читали).
Взялся за это дело шифровальное, посмотрел, что народ пишет. Нашел немного грамотных статей, для линукса тем более, пришлось самому колесо изобретать. Может, кому тоже пригодится.
Я зашифровал не все разделы, а только пользовательские данные. Это нисколько не меньшая безопасность, чем шифровать весь корневой раздел со всеми пакетами и библиотеками!

Итак, что требует шифрования:
Доя шифрования swap можно довериться средствам линукса
Там много бла-бла, оттуда детально и коротко:
Дальше больше. Размещение в tmpfs
Теперь помещаем в криптоконтейнер каталоги из /var
Затем перезагрузиться и удалить каталоги /ttmp, /var/ttmp
Следующим этапом идет собственно шифрование раздела /home Я воспользовался руководством от MasterGnome, при этом переделав некоторые моменты, касающиеся инсталляции и форматирования.
Для Ubuntu Feisty инсталляция несколько проще:
Устанавливаем пакет Automatix2, если его у вас еще нет. Через Automatix устанавливаем TrueCrypt.
Тестируем TC:
Truecrypt позволяет шифровать с использованием алгоритмов AES, Twofish, Serpent.
Все три алгоритма очень надежны, и сейчас не существует даже теоретического способа взлома, кроме метода полного перебора.
AES - выбран как правительственный стандарт в США
Twofish - на процессоре AMD64 (linux kernel i386 2.6.20-16) самый быстрый. Опережающий AES в среднем на 20%
Serpent - существенно медленнее остальных
Заметил, что Twofish быстрее на AMD, а AES на Intel, причем на Intel Mobile оба алгоритма примерно равны. Вы можете выбрать любой из них, но я советую сначала протестировать на скорость на вашем компьютере.
Используются хешовые функции RIPEMD-160,SHA-1 и Whirlpool.
SHA-1 - появилась теоретическая возможность взлома, и хотя это скорее относится к письмам и цифровым подписям, не рекомендуется к применению.
RIPEMD-160 - стоит по умолчанию. Для этого алгоритма даже теоретически взлом пока не возможен. Но вот его предшественник RIPEMD уже себя дискредитировал. Whirlpool - теоретически самая медленная, некоторые источники утверждают, что медленнее в 2-3 раза, чем остальные. Хотя мои тесты показали, что в TrueCrypt это не так. Как в Linux, так и в Windows XP отставание не более 5% от предыдущих. На сегодняшний момент самый стойкий алгоритм. И самый молодой.
Можно использовать Whirlpool или RIPEMD-160.
В TC есть возможность использовать каскады алгоритмов. Связка AES-Twofish вместе с Whirlpool и скрытый контейнер - это для суперсекретных данных ;)
Прежде чем продолжить, сохраните где-нибудь папку /home. После этого, если у вас home расположен на отдельном разделе (пр. sda3), то его надо размонтировать:
Truecrypt несомненно хорош и тем, что внутри зашифрованного контейнера можно спрятать еще один. Хотя в документации сказано, что внешний контейнер должен быть как FAT отформатирован, он прекрасно работает и с ext2. Но при превышении границы между контейнерами с ключом -P система не говорит об окончании места как в Windows, просто данные эти теряются.
Журнал файловой системы автоматически размещается в криптоконтейнере.
Теперь надо в загрузку вставить скрипт (спасибо тому же MasterGnome), который спрашивает пароль и монтирует:
Теперь скопировать
"Небольшая проблемка" только в том, что при вводе пароля он показывается. Что не есть хорошо, то есть не работает "stty -echo" при загрузке...Может, кто подскажет...
Взялся за это дело шифровальное, посмотрел, что народ пишет. Нашел немного грамотных статей, для линукса тем более, пришлось самому колесо изобретать. Может, кому тоже пригодится.
Я зашифровал не все разделы, а только пользовательские данные. Это нисколько не меньшая безопасность, чем шифровать весь корневой раздел со всеми пакетами и библиотеками!

Итак, что требует шифрования:
- swap
- /home - поместить в контейнер tc (можно в виде файла, или в раздел)
- /tmp - эти данные нужны только для одного сеанса, поэтому смело помещаем в tmpfs
- /var/tmp - то же самое
- /var/spool - здесь хранятся пользовательские задачи cron, задачи для принтера, лучше поместить в контейнер вместе с домашней папкой
- /var/mail - в контейнер
- /var/lib/slocate - в контейнер
- /var/log - в контейнер. хотя кое-что на этапе загрузки не попадет сюда, но это не относится к пользовательским логам
Доя шифрования swap можно довериться средствам линукса
Там много бла-бла, оттуда детально и коротко:
sudo -i apt-get install cryptsetup echo aes >> /etc/modules echo dm_mod >> /etc/modules echo dm_crypt >> /etc/modules [ перезапустить компьютер ] sudo -i swapoff -a cryptsetup -d /dev/urandom create cryptoswap /dev/sda2 mkswap /dev/mapper/cryptoswap -L accessisdenied -v1 echo 'cryptoswap /dev/sda2 /dev/urandom swap' >> /etc/crypttab в fstab заменить ваш swap на: /dev/mapper/cryptoswap none swap sw 0 0 dd if=/dev/urandom of=/dev/sda2 count=100 swapon -a
Дальше больше. Размещение в tmpfs
mv /tmp /ttmp mkdir tmp chmod 777 tmp в /etc/fstab добавить: echo 'tmpfs /tmp tmpfs rw,nosuid,nodev,mode=0777' >> /etc/fstab mv /var/tmp /var/ttmp ln -s /tmp /var/tmp
Теперь помещаем в криптоконтейнер каталоги из /var
mkdir /home/.var chmod 755 /home/.var mv /var/spool/ /home/.var/spool ln -s /home/.var/spool /var/spool mv /var/mail /home/.var/mail ln -s /home/.var/mail /var/mail mkdir /home/.var/lib chmod 755 /home/.var/lib mv /var/lib/slocate /home/.var/lib/slocate ln -s /home/.var/lib/slocate /var/lib/slocate mv /var/log home/.var/log ln -s /home/.var/log /var/logИндексацию зашифрованных разделов нужно отключать, в файле /etc/updatedb.conf, в PRUNEPATHS добавить /home
Затем перезагрузиться и удалить каталоги /ttmp, /var/ttmp
Следующим этапом идет собственно шифрование раздела /home Я воспользовался руководством от MasterGnome, при этом переделав некоторые моменты, касающиеся инсталляции и форматирования.
Для Ubuntu Feisty инсталляция несколько проще:
Устанавливаем пакет Automatix2, если его у вас еще нет. Через Automatix устанавливаем TrueCrypt.
Тестируем TC:
if truecrypt --test &> /dev/null; then echo "Ok"; else echo "Error"; fiTrueCrypt позволяет создавать криптоконтейнеры как в разделах, так и в файлах, которые потом подключаются как разделы. Для замены одного другим в командах, достаточно поменять раздел (например /dev/sda3) на название файла (например home.tc).
Truecrypt позволяет шифровать с использованием алгоритмов AES, Twofish, Serpent.
Все три алгоритма очень надежны, и сейчас не существует даже теоретического способа взлома, кроме метода полного перебора.
AES - выбран как правительственный стандарт в США
Twofish - на процессоре AMD64 (linux kernel i386 2.6.20-16) самый быстрый. Опережающий AES в среднем на 20%
Serpent - существенно медленнее остальных
Заметил, что Twofish быстрее на AMD, а AES на Intel, причем на Intel Mobile оба алгоритма примерно равны. Вы можете выбрать любой из них, но я советую сначала протестировать на скорость на вашем компьютере.
Используются хешовые функции RIPEMD-160,SHA-1 и Whirlpool.
SHA-1 - появилась теоретическая возможность взлома, и хотя это скорее относится к письмам и цифровым подписям, не рекомендуется к применению.
RIPEMD-160 - стоит по умолчанию. Для этого алгоритма даже теоретически взлом пока не возможен. Но вот его предшественник RIPEMD уже себя дискредитировал. Whirlpool - теоретически самая медленная, некоторые источники утверждают, что медленнее в 2-3 раза, чем остальные. Хотя мои тесты показали, что в TrueCrypt это не так. Как в Linux, так и в Windows XP отставание не более 5% от предыдущих. На сегодняшний момент самый стойкий алгоритм. И самый молодой.
Можно использовать Whirlpool или RIPEMD-160.
В TC есть возможность использовать каскады алгоритмов. Связка AES-Twofish вместе с Whirlpool и скрытый контейнер - это для суперсекретных данных ;)
Прежде чем продолжить, сохраните где-нибудь папку /home. После этого, если у вас home расположен на отдельном разделе (пр. sda3), то его надо размонтировать:
umount /homeДля директории /home создадим внешний криптоконтейнер:
truecrypt --encryption AES --type normal -c /dev/sda3файловую систему как None, любой алгоритм хэша, и два раза пароль. Потом:
truecrypt /dev/sda3Теперь форматирование контейнера:
mkfs.ext2 -v /dev/mapper/truecrypt0
mount /dev/mapper/truecrypt0 /homeпереписать туда сохраненный /home со всеми вашими данными. Не забудьте про .var из сохраненного /home и удалите там все файлы
umount /home truecrypt -dВместо ext2 вы можете использовать и другую файловую систему: ext3, ReiserFS
Truecrypt несомненно хорош и тем, что внутри зашифрованного контейнера можно спрятать еще один. Хотя в документации сказано, что внешний контейнер должен быть как FAT отформатирован, он прекрасно работает и с ext2. Но при превышении границы между контейнерами с ключом -P система не говорит об окончании места как в Windows, просто данные эти теряются.
Журнал файловой системы автоматически размещается в криптоконтейнере.
Теперь надо в загрузку вставить скрипт (спасибо тому же MasterGnome), который спрашивает пароль и монтирует:
cd /usr wget http://privat.heinzelzwerg.de/howtos/debian -->> -->> /truecrypt/tcbootscreen.tar.bz2 tar -xvjf tcbootscreen.tar.bz2 chown root:root /usr/tcbootscreen/* chmod ugo+x /usr/tcbootscreen/* chmod ugo-x /usr/tcbootscreen/tcscreen.tmp chmod ugo-x /usr/tcbootscreen/main.logи изменить во всех скриптах вместо #!/bin/sh надо везде #!/bin/bash, иначе в Ubuntu выдается ошибка с declare
Теперь скопировать
mv /usr/tcbootscreen/tcbootscreen /etc/init.d/tcbootscreen update-rc.d tcbootscreen defaultsВ файле /usr/tcbootscreen/decrypt подставить свои значения для device и mountpoint
"Небольшая проблемка" только в том, что при вводе пароля он показывается. Что не есть хорошо, то есть не работает "stty -echo" при загрузке...Может, кто подскажет...
English
Русский

June 2nd, 2007 at 7:56 a.m.
А как шифрованный своп подружить с suspend-to-disk ?
June 2nd, 2007 at 1:55 p.m.
Это основная проблема при любом шифровании. Если не шифровать своп, то данные все в чистом виде пишутся на диск, если шифровать, то невозможно восстановить при спячке.
Я не знаю решения этой проблемы. Тут каждый выбирает для себя, безопасность или возможность засыпания.
June 2nd, 2007 at 2:16 p.m.
Еще стоит написать про то где и как можно хранить ключи.
June 2nd, 2007 at 2:17 p.m.
там есть скрипт, запускаемый при старте с убунтой, так вот у него есть возможность автоподмонтирования USB-флешки, и после проверки ключа и пароля, авторазмонтирование
June 2nd, 2007 at 2:18 p.m.
В вашем случае, чтобы не плодить контейнеры, проще было бы зашифровать корневой раздел целиком. На ноутбуке для этого лучше использовать loop-aes, т.к. c он поддерживает soft suspend. Я бы так же добавил ключ с flash брелка.
Если немного поиграться с алгоритмами шифрования и хэширования, можно увеличить скорость работы swap/tmp. Нет смылса защищать временные данный сильным и медленным алгоритмом.
Единственный плюс в иcпользовании truecrypt в linux - возможность использовать криптоконтейнер из windows. Полезность plausible deniability при шифровании целых файловых систем сомнительность.
На десктопе /var/log обычно тоже можно поместить на tmpfs.
June 2nd, 2007 at 2:19 p.m.
я обхожусь одним контейнером, в котором только /home, естественно, что весь диск не надо размещать одновременно в внешнем и скрытом контейнерах, а вот для домашней папки я думаю - в самый раз. И алиби-данные, и свои - все в одном месте.
сначала я так и сделал c /var/log, но потом обнаружил, что например CUPS ругается. Хотя это не принципиально, можно немножко подкрутить ;)
June 2nd, 2007 at 2:21 p.m.
Пользуюсь TrueCrypt'ом уже полгода, доволен полностью: бесплатный, кросплатформенный. Там есть чудная функция "Traveller Disk Setup" - создает свой автозапуск на флешке, удобно - воткнул флешку, ввел пароль и твой секретный диск уже тут.
June 15th, 2007 at 10:57 a.m.
А зачем TrueCrypt, если есть штатные cryptsetup, dm-crypt, LUKS? И _большинство_ дистрибутивов имеют в своем составе не только их поддержку, но и средства для работы с зашифрованными дисками в KDE, Gnome, etc? И, что характерно, это совместимо (с использованием FreeOTFE) с Windows. В том числе - portable.
Так что пример - неудачный...
June 16th, 2007 at 1:16 p.m.
2ABATAPA:
Все очень просто...а есть ли во всех этих средствах реализация скрытого контейнера внутри зашифрованного?
April 3rd, 2008 at 11:32 a.m.
в debian юзаю cryptsetup (в 2.6 стандарт как бы)
на http://linuxgazette.mirrors.org.ua/14... можно прочесть что к чему
April 3rd, 2008 at 6:04 p.m.
2slav0nic:
насколько я знаю, скрытые тома он не поддерживает
January 5th, 2009 at 7:24 a.m.
Некропост конечно, но скрытые тома нужны только тем, кого будут пытать фашисты. Тем более по некоторым причинам лицензирования truecrypt исключен из некоторых дистрибутивов.
May 13th, 2009 at 9:30 p.m.
Привет,
Посмотрите пожалуйста данный топик http://forums.truecrypt.org/viewtopic... и если у Вас есть эта проблема, отпишите пожалуйста.
Спасибо.
May 20th, 2009 at 11:35 p.m.
да есть такая проблема с новыми версиями, но мне она не мешает, потому как одномоментно работает только один пользователь с ноутбуком
August 11th, 2009 at 8:14 p.m.
После update-rc.d tcbootscreen defaults
при следующей загрузке отваливается сеть, приглашение к вводу пароля не выводится и соответственно ничего не монтируется. Если запускать tcbootscreen уже из системы все монтируется нормально.
August 17th, 2009 at 5:42 a.m.
У меня работало, хотя я уже пару лет использую свой маленький скрипт вместо tcbootscreen (там просто спрашивание пароля и монтирование). Также он грузится не по дефаултс, а с другими значениями (чтобы загружалось раньше всего и выгружалось позже)
Вот скрипт:
#!/bin/sh
export MKE2FS_SYNC=10
if [ -e /dev/mapper/truecrypt1 ]; then
echo "unmount...";
truecrypt -d
exit 0;
fi
echo "enter password:"
stty -echo
read password
stty echo
truecrypt -t -k '' --password=$password --protect-hidden=no --non-interactive /var/home.tc /home &> /dev/null
if [ -e /dev/mapper/truecrypt1 ]; then
echo "truecrypt ok";
fi
exit 0
Запуск (может отличаться, просто для представления):
/etc/init.d/truecrypt
/etc/rc0.d/K98truecrypt
/etc/rc1.d/S16truecrypt
/etc/rc2.d/S13truecrypt
/etc/rc3.d/S13truecrypt
/etc/rc4.d/S13truecrypt
/etc/rc5.d/S13truecrypt
/etc/rc6.d/K98truecrypt
August 23rd, 2009 at 8:13 p.m.
Удалось все таки заставить tcbootscreen загружаться, дописав в начале скрипта:
### BEGIN INIT INFO
# Provides: tcbootscreen
# Required-Start: $local_fs $remote_fs $network $named $time
# Required-Stop: $local_fs $remote_fs $network $named $time
# Should-Start: $syslog
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: tcbootscreen
# Description: tcbootscreen
### END INIT INFO
#---- configuration ----#
Следующим этапом пришлось править decrypt -
строка с запуском truecrupt (добавил --non-interactive):
/usr/bin/truecrypt $device $mountpoint --non-interactive -p "$1" &> /dev/null; then
После этого диск монтировался в папку, но с правами записи-чтения-выполнения только для root, соответственно пользователь, под которым я работал, писать и читать ничего не мог!
Проишлось дописать в строку запуска (добавил --fs-options=umask=0000):
/usr/bin/truecrypt $device $mountpoint --non-interactive --fs-options=umask=0000 -p "$1" &> /dev/null
Теперь папка папка имела права чтение-запись-выполнение для всех. Однако после ввода логина и пароля пользователя появлялся фон рабочего стола и все висло (((
На этом пока остановился и не знаю что делать дальше. Все файлы в примонтированной папке обладают этими правами, и владелец их root. Думаю что все дело в этом. У вас нет такой проблемы?
August 24th, 2009 at 4:47 p.m.
Труекрипт довольно прозрачная система.
Я например использую линуксовые разделы как во внешнем контейнере, так и в секретном (например для флешек), что не совсем обычно для труекрипта, но реализуемо.
Поэтому и работа со всем этим хозяйством веду исключительно обычными средствами.
umask не использую, а просто сделал (уже после монтирования!) пользователя владельцем папки и всех файлов внутри. Truecrypt монтируется как /home
права папки(это уже в примонтированном состоянии)
drwxr-xr-x 5 root root 1024 2009-01-06 12:49 home
права домашней папки в /home
drwxr-xr-x 87 myuser myuser 20480 2009-08-24 14:27 myuser
August 25th, 2009 at 3:36 p.m.
Так в том то и дело, что изменить права после монтирования не получается! Команда проходит успешно, но права не меняются (((. То же и с пользователем. Единственное что пришло в голову, это разрешить всем - все (при помощи umask при монтировании), но это не проходит, что в общем то логично ((
August 30th, 2009 at 8:47 p.m.
Какой командой вы меняете права и владельца?
August 31st, 2009 at 12:53 p.m.
Если в форме контакта сверху сайта скините email или скайп - будет быстрее :)
права меняю через mc, да и обычный chmod подойдет
мне кажется у вас где-то в другом проблема, а это всё лишь следствия. скиньте команду запуска, затерев пароль иксами.
August 12th, 2010 at 6:15 p.m.
Забыли сказать, что при описанной реализации, пароль вводимый для расшифровки перед загрузкой, светится в ps.