LINUX.ORG.RU

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


0

0

Я прочитал в Security FAQ об этом и решил сделать примерно так-же. Я немного модифицировал метод: у меня есть флэшка, я в fdisk-е создал на ней 2 раздела, первый как FAT32 на 7999 блоков, а второй - Empty на 1 блок - это 16 KB. И когда мне надо примонтировать зашифрованный раздел, сначала монтируется /dev/sda2 и я ввожу пароль. После этого расшифрованный /dev/sda2 используется как пароль для монтирования зашифрованного раздела, т.е. для доступа надо знать не только пароль но и иметь флэшку. Да и взломать будет тяжелее.
У меня такие вопросы:
1. Является ли мой метод действительно надёжным, или все эти финты ничего не дают? На первый взгляд мне кажется, что всё нормально, но я в криптографии не очень силён и поэтому могу ошибаться.
2. Как я понял, на флэшке реально используется только несколько десятков первых байтов, потомму что например при dd if=/dev/random of=/dev/sda2 bs=1 count=1 seek=128 всё по прежнему монтировалось нормально. Но если seek=31 например, то уже ничего не работало. Видимо это из-за того, что в aes используется 256-битный ключ. Но опять же я могу ошибаться.

Для автоматизации я написал такие скрипты:
edo - открытие устройства:
#!/bin/sh

cryptsetup -c aes -h sha512 -s 256 create key /dev/sda2 || exit -1
cryptsetup -c aes -h sha512 -s 256 -d /dev/mapper/key create ed /dev/hda6 || \
{ cryptsetup remove key; exit -1; }
cryptsetup remove key || { cryptsetup remove ed; exit -1; }
mkdir /mnt/ed || { cryptsetup remove ed; exit -1; }
mount /dev/mapper/ed /mnt/ed || { rm -rf /mnt/ed; cryptsetup remove ed; exit -1; }
echo "System ready"

edc - закрытие
#!/bin/sh

result=0
umount /dev/mapper/ed || result=1
rm -rf /mnt/ed || result=1
cryptsetup remove ed || result=1

(($result)) || echo "System ready"

edr - если злые дяди стучатся в дверь (правда ещё надо купить ИБП, но это уже технические проблемы :-))
#!/bin/sh

read -s pass
echo -n $pass | md5sum > /tmp/ed
cmp /etc/ed /tmp/ed >/dev/null 2>&1
result=$?
shred -uz /tmp/ed
(($result)) && exit -1
echo "success"
edc >/dev/null 2>&1
shred -uz /usr/sbin/edo
shred -uz /usr/sbin/edc
shred -uz /etc/ed
shred -z /dev/hda6
shred -z /dev/sda2
shred -uz /usr/sbin/edr

install - собственно установка
#!/bin/sh

install -m 100 edo edc edr /usr/sbin || exit -1
echo -n "Enter password for removing: "
read -s rpass
echo
echo -n "Enter password for removing: "
read -s rpass2
echo
[ "$rpass" != "$rpass2" ] && { echo "Different passwords"; exit -1; }
echo -n $rpass | md5sum > /etc/ed || exit -1
chmod 400 /etc/ed || exit -1
echo "Enter main password"
cryptsetup -c aes -h sha512 -s 256 -y create key /dev/sda2 || exit -1
dd if=/dev/random of=/dev/mapper/key bs=1 count=256 || exit -1
cryptsetup -c aes -h sha512 -s 256 -d /dev/mapper/key create ed /dev/hda6 || exit -1
cryptsetup remove key || exit -1
mkfs -t ext2 /dev/mapper/ed || exit -1
cryptsetup remove ed || exit -1
echo "System ready"


Буду рад, если они кому-то пригодятся, и ещё больше буду рад, если кто-нибудь найдёт здесь ошибки, потому что мой опыт bash-кодирования меньше месяца.

И ещё, я во всех этих методах шифрования и хэширования не разбираюсь, вроде aes - стандарт шифрования в США а SHA512 просто в FAQ-е был написан, скажите, если я их выбрал неудачно.

★★★★★
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.