Шифруем флешку или паранойя продолжается

pechat
Ровно 11 месяцев назад «заболел» безопасностью данных. Начитался мануалов, историй, форумов и в итоге сформировалось небольшое представление о безопасности информации.

Сегодня расскажу как зашифровать флешку.
Для чего это нужно каждый решит сам).

Итааак, что нам нужно: Linux\Unix (я использую Calculate Linux и проверил на Debian 7), флешка (у меня microSD SanDisk Ultra 8Gb)

Подготавливаем флешку.

Вставляем флешку, проверяем как она определилась fdisk -l (у меня определилась как sdb).

calculate dazmalab # fdisk -l

Disk /dev/sda: 55.9 GiB, 60022480896 bytes, 117231408 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: BBE50E3A-EAAC-4B27-BF7E-BAF6B30DFFC4

Устр-во          Start   Конец   Size Тип
/dev/sda1         2048      2099199     1G Linux swap
/dev/sda2      2099200    117210894  54.9G Linux filesystem
/dev/sda3    117211136    117231374   9.9M BIOS boot partition

Disk /dev/sdb: 7.4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Забиваем флешку случайными данными, это скроет на каких секторах находятся данные и сколько места занимают

Вводим команду dd if=/dev/urandom of=/dev/sdb , где sdb — моя флешка, и ждем оканчания, процесс довольно долгий (8Гб у меня «забивалась» примерно час).

calculate dazmalab # dd if=/dev/urandom of=/dev/sdb
dd: запись в «/dev/sdb»: На устройстве не осталось свободного места
15523841+0 записей получено
15523840+0 записей отправлено
 скопировано 7948206080 байт (7.9 GB), 6619.34 c, 1.2 MB/c

Далее флешку нужно зашифровать, для этого используем LUKS

Нам понадобится пакет cryptsetup, если его нет, то доустанавливаем.

calculate dazmalab # eix cryptsetup
* sys-fs/cryptsetup
     Available versions:  1.0.6-r2 1.1.3-r3 ~1.2.0-r1 1.4.3 ~1.5.1 1.6.2 ~1.6.3 ~1.6.4 ~1.6.5 {dynamic +gcrypt kernel nettle nls openssl python reencrypt selinux (+)static static-libs udev urandom PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7"}
     Homepage:            http://code.google.com/p/cryptsetup/
     Description:         Tool to setup encrypted devices with dm-crypt

 

calculate dazmalab # emerge -av sys-fs/cryptsetup

После успешной установки, необходимо подгрузить модули

calculate dazmalab # modprobe dm-crypt
calculate dazmalab # modprobe sha256

Далее шифруем флешку

calculate dazmalab # cryptsetup -h=sha256 -c=aes-cbc-essiv:sha256 -s=256 luksFormat /dev/sdb

WARNING!
========
This will overwrite data on /dev/sdb irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
calculate dazmalab #

На приглашение Are you sure? (Type uppercase yes): вводим YES большими буквами

Если ошибок после выполнении команды нет, то значит флешка зашифрована.

Теперь подключаем нашу флешку

calculate dazmalab # cryptsetup luksOpen /dev/sdb flash_cr
Enter passphrase for /dev/sdb: **********
calculate dazmalab #

После этого с ней можно работать,
Создадим на ней раздел (Будет много выводов, не пугайтесь, все просто):

Запускаем fdisk

calculate dazmalab # fdisk /dev/mapper/flash_cr

Welcome to fdisk (util-linux 2.24.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.

Created a new DOS disklabel with disk identifier 0xe3533d34.

Команда (m для справки):

Команды, которые мы будем использовать:

p — для печати таблицы раздела
n — для создания нового раздела
w — для сохранения изменений и выхода

Посмотрим таблицу разделов

Команда (m для справки): p
Disk /dev/mapper/flash_cr: 7.4 GiB, 7946108928 bytes, 15519744 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe3533d34

Команда (m для справки):

Создадим новый раздел

Команда (m для справки): n

Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Номер раздела (1-4, default 1): 1
First sector (2048-15519743, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-15519743, default 15519743):

Created a new partition 1 of type 'Linux' and of size 7.4 GiB.

Команда (m для справки):

Опять используя команду «p», посмотрим новую таблицу раздела:

Команда (m для справки): p
Disk /dev/mapper/flash_cr: 7.4 GiB, 7946108928 bytes, 15519744 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe3533d34

Устр-во               Загрузочный Start Конец  Blocks  Id System
/dev/mapper/flash_cr1              2048  15519743 7758848  83 Linux

Команда (m для справки):

Запишем раздел на флешку используя команду «w»

Команда (m для справки): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Недопустимый аргумент

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

Теперь перечитаем таблицу раздела используя команду «partprobe»:

calculate dazmalab # partprobe
calculate dazmalab #

Форматируем раздел:

calculate dazmalab # mkfs.ext4dev /dev/mapper/flash_cr1
mke2fs 1.42.7 (21-Jan-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
485760 inodes, 1939712 blocks
96985 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1988100096
60 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

calculate dazmalab #

Осталось примонтировать раздел и работать с ним как с флешкой
(Правда только от root пользователя, но меня это не смущает)

монтируем

mount /dev/mapper/flash_cr1 /mnt/

отмонтируем

umount /dev/mapper/flash_cr1

Теперь кратко как с ней работать:
1.  Вставить флешку
2.  Расшифровать (cryptsetup luksOpen /dev/sdb flash_cr)
3.  Перечитать разделы (partprobe)
4.  Примонтировать (mount /dev/mapper/flash_cr1 /mnt/)
5.  Сделать дело
6.  Отмонтировать (umount /dev/mapper/flash_cr1)
7.  Отключить шифрованный контейнер (cryptsetup luksClose flash_cr)

Добавить комментарий