LinuxForum.Fans
Тема

Шифрование данных (cryptoloop)

Автор: forkostya 4 сообщений 8340 просмотров
#1446

Автор: Кузнецов Константин

Шифрование данных (cryptoloop)

План:
1. Введение
2. Шифрование физического раздела
3. Шифрование образа раздела
4. Используемая и рекомендуемая литература

---------------------------------------------------------------------------------------------------

1. Введение

Хотелось бы рассказать о том, как можно легко и непринужденно шифровать конфиденциальные данные.
Итак, сначала обрисуем задачу: необходимо сделать так, чтобы каша байтов на попавшем в посторонние руки носителе не принесла им никакой пользы, а владельцу информации - вреда.
Что имеем:
1. Линукс на компьютере, к которому подсоединен носитель (подразумевается, что это будет либо Ubuntu 8.хх-9.хх либо любой другой дистрибутив свежей версии)
2. Носитель (жесткий диск, флешка, а еще в этой роли может выступать зашифрованный файл на незашифрованном диске, но об этом позже)
3. Информация, которую необходимо скрыть от посторонних глаз (ну с этим-то все просто: потренероваться можно на всяком мусоре или видео)

Погулял по просторам интернета и заметил, что все настойчиво советуют шифровать ТОЛЬКО РАЗДЕЛЫ С ДАННЫМИ (т.е. /home, /var, /tmp и swap). Корневой раздел, где находится сама ОС шифровать не рекомендуют. Это связано в первую очередь с производительностью, во вторую - с бессмысленностью

---------------------------------------------------------------------------------------------------

2. Шифрование раздела

Поехали:
1. Устанавливаем пакет loop-aes-utils.

text
apt-get install loop-aes-utils

После чего необходимо проверить наличие модуля cryptoloop

text
sudo depmod -a
sudo modprobe cryptoloop

2. Пароль: для теста можно ввести 12345678901234567890, но лучше что-нибудь страшное x4gWD25Gga4590aD01kf . А еще можно создать файл с одной очень длинной строчкой из всяких произвольных символов.
3. Порядок действий при использовании программы такой:
3.1. Связываем устройство с петлей с использованием шифрования

text
losetup -e aes /dev/loop0 /dev/sda1

-e aes - указываем программе, чтобы использовалось шифрование. AES пришел на замену DES и является в наши дни (2009 год) довольно устойчивым к взлому методом.
/dev/loop0 - если совсем не понятно, что такое петля, то можно провести аналогию с виртуальными дисками CD-rom в программе Deamon-tools. Тут их сразу идет 8 (от /dev/loop0 до /dev/loop7). Можно использовать любой из них. Можно добавить еще несколько

text
mknod /dev/loop8 c 7 8
mknod /dev/loop9 c 7 9

и так далее, но думаю восьми должно вполне хватить
/dev/sda1 - это тот раздел, который хочется зашифровать. Может быть это будет /dev/sdc5 или вообще файл /home/user/crypt.iso - все зависит от Вашего желания.
3.2. После этой команды программа попросит ввести пароль (шифрование симметричное, т.е. пароль на зашифрование и на расшифрование один и тот же) из 20 символов.
Если пароль у нас хранится в файле, то тогда нам необходимо делать так:

text
cat file | losetup -e aes /dev/loop1 /dev/sda1 -p0

3.3. Далее необходимо понять своим нутром, что больше работать с устройством через /dev/sda1 (/dev/sdc5 и т.д.) мы не будем ни... ко... гда...
3.4. А работать мы будем именно с петлевым устройством, на которое замкнули - /dev/loop0. Причем не обязательно каждый раз замыкать на одно и то же устройство. Сегодня это /dev/loop0, а завтра он будет занят - возьмем /dev/loop7, в этом ничего страшного нет.
3.5. После того, как мы связали устройство в петлей необходимо отформатировать раздел, например так:

text
mkfs.ext3 /dev/loop0

Пояснение: когда мы привязываем отформатированный раздел к петле с шифрованием получается зашифрованная связь между этими устройствами, то есть если на одно устройство (любое из них) записываешь файл, то на втором мешанина байтов становится еще большей мешаниной. Нам необходимо сделать мешанину на /dev/sda1, а на loop0 скрываемый раздел. Когда мы привязали, мешанина у нас на loop, и мы его даже примонтировать не сможем - там якобы раздела нет, там каша. А чтобы сделать наоборот, мы его единовременно форматируем и там будет раздел для наших скрываемых файлов. В это время наш /dev/sda1 превратился в кашу. По-этому данные на разделе /dev/sda1 необходимо ЗАРАНЕЕ куда-нибудь скопировать, а потом записать их в примонтированный отформатированный loop.
Форматировать можно в любую удобную файловую систему, мы будем использовать ext3.

3.6. Далее работаем с петлей как с обычным разделом: монтируем, пишем в него, прописываем в /etc/fstab, если хочется и пр.

text
mkdir /mnt/mydisk
mount /dev/loop0 /mnt/mydisk
cp -R /home/forkostya/myfiles/ /mnt/mydisk/
umount /dev/loop0

3.7. После этого отвязываем устройство от петли

text
losetup -d /dev/loop0

Кстати, просмотреть список завязаных (задействованных) петель можно командой

text
losetup -a

3.8. Отвязали. Теперь к данным на разделе можно получить доступ только опять привязав к петле и введя 20-значный пароль

text
losetup -e aes /dev/loop0 /dev/sda1

Теперь мы имеем раздел /dev/sda1 , который невозможно примонтировать (компьютер не видит на нем файловой системы), а если смотреть чем-либо, например hex-редактором, то увидим кашу, как и хотели. Но мы-то с вами знаем, что на нем хранятся важные данные.

---------------------------------------------------------------------------------------------------

3. Шифрование образа раздела

Помимо раздела, можно зашифровать еще и отдельно созданный файл определенного размера, который монтируем как раздел и работаем с его содержимым, как с разделом. Файл можно назвать как-нибудь pak0.pk3 и положить в папку /home/forkostya/quake3/ (в этом есть что-то стеганографическое, не правда ли?), тогда никакие подозрения не упадут на него, в отличие от зашифрованной файловой системы. Для этого сначала создаем файл с помощью утилиты dd. Размер задается параметрами, в данном случае 1к*100 = 100 килобайт.

text
dd if=/dev/zero of=/home/forkostya/quake3/pak0.pk3 bs=1k count=100
losetup -e aes /dev/loop0 /home/forkostya/quake3/pak0.pak
mkfs.ext3 /dev/loop0
mount /dev/loop0 /mnt/disk/

---------------------------------------------------------------------------------------------------

4. Используемая и рекомендуемая литература

Продвинутый способ шифрования разделов в Linux, или мной овладела паранойя.

#115370

Подскажите какую строчку надо добавить, в fstab, чтобы при загрузке не надо было вводить пароль, пароль допустим лежит /boot/key.txt, чтобы не вводить пароль каждый раз, а после старта сервера флешку вытащил и с концами.
На флешке лежит загрузчик /boot
основной винт разбит 1 разделом / и зашифрован loopaes
Вопрос как смонтировать ось без ввода пароля? вот пример, что делал смотрел пример тут http://wiki.debian.org/DebianRussian/Crypt

/dev/sdb1 / ext3 noatime,exec,loop,encryption=AES256,cleartextkey=/boot/key.txt 0 0
не хочет так грузится стопорится на вводе пароля, ткните носом в чем ошибка

#115391

stalkerua, так надо же подмонтировать правильный /boot. Когда система уже запущена и монтирует ФС, то файл ищет руководствуясь подмонтированным корнем, а на флешку не смотрит.

#199424

у себя нп компе я нашел /dev/loop0: [0811]:34 (/cdrom/casper/filesystem.squashfs) /dev/loop1: [0811]:40 (/cdrom/casper-rw)
но я нечего не шифровал-- как мне это все удалить? не подскажите.

Войдите или зарегистрируйтесь, чтобы ответить.