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:
насколько я знаю, скрытые тома он не поддерживает