Android. Прикладные программы. Tcplay-VeraCrypt. Создание криптоконтейнера.
Нам понадобится смартфон с root правами.
Устанавливаем Termux, и предоставляем termux доступ к файлам в хранилище.
● Подключаем репозиторий.
pkg install root-repo
● Устанавливаем пакет
pkg install tcplay-veracrypt
● Генерируем ключевой файл.
touch /data/data/com.termux/files/home/key
dd if=/dev/random of=/data/data/com.termux/files/home/key bs=1 count=256
● Подготавливаем файла-контейнер.
touch /data/data/com.termux/files/home/disk01.crypt
dd if=/dev/zero of=/data/data/com.termux/files/home/disk01.crypt bs=1024M count=1
Команда создаст файл ~/disk01.crypt размером 1 Гб (1024 Мб) заполненный нулями.
● Представляем файл-контейнер в виде блочного устройства.
Определяем первое свободное петлевое устройство
losetup -f
У меня loop-устройства не использовались, поэтому команда выдала
/dev/block/loop0
● Подключаем файл-контейнер на свободное петлевое устройство:
sudo losetup /dev/block/loop0 /data/data/com.termux/files/home/disk01.crypt
● Создаём том tcplay-veracrypt
sudo tcplay --create --device=/dev/block/loop0 --cipher=AES-256-XTS --pbkdf-prf=whirlpool --keyfile=/data/data/com.termux/files/home/key –-insecure-erase
Passphrase:
Repeat passphrase:
Summary of actions:
- Completely erase *EVERYTHING* on /dev/block/loop0
- Create volume on /dev/block/loop0
Are you sure you want to proceed? (y/n) y
Securely erasing the volume...
This process may take some time depending on the size of the volume
Creating volume headers...
Depending on your system, this process may take a few minutes as it uses true random data which might take a while to refill
Writing volume headers to disk...
После ввода команды и нажатия Enter, будет предложено ввести парольную фразу и повторить ее. Если кроме ключевого файла необходимо установить еще и пароль, то вводим пароль и подтверждаем его, если указан ключевой файл, а пароль не нужен, нажимаем два раза Enter.
Далее необходимо подтвердить свои действия, если все сделано правильно ввести y. После чего ожидаем пока tcplay не завершит шифрование сообщением
All done!
● Подключение файла-контейнера и подготовка его к работе.
sudo tcplay --map=tomename --device=/dev/block/loop0 --keyfile=/data/data/com.termux/files/home/key
Passphrase:
All ok!
Если все указано верно, то tcplay ответит All ok! и доступ к зашифрованному диску будет открыт.
Hеобходимо создать таблицу разделов и файловую систему.
sudo mkfs -t ext2 /dev/mapper/tomename
mke2fs 1.45.4 (23-Sep-2019)
Creating filesystem with 262080 4k blocks and 65536 inodes
Filesystem UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
Теперь на зашифрованном диске создана файловая система и он готов к работе, необходимо создать точку монтирования
mkdir /data/data/com.termux/files/home/tomename
И смонтировать зашифрованный диск.
sudo mount -t ext2 /dev/mapper/tomename /data/data/com.termux/files/home/tomename
Устанавливаем права на точку монтирования.
sudo chmod 777 /data/data/com.termux/files/home/tomename
Переносим ключевой файл /data/data/com.termux/files/home/key в надёжное место. К примеру в LiveUSB систему запущенную с таймером выключения, после чего уничтожаем ключевой файл на смартфоне.
shred -uz /data/data/com.termux/files/home/key
После выключения или перезагрузки смартфона разблокирование шифрованного контейнера будет невозможно с помощью информации находящейся на устройстве. Для разблокирования шифрованного контейнера необходимо скопировать на смартфон колюч или смонтировать по sftp каталог где он хранится. И ввести команды
sudo losetup /dev/block/loop0 /data/data/com.termux/files/home/disk01.crypt
sudo tcplay --map=tomename --device=/dev/block/loop0 --keyfile=/data/data/com.termux/files/home/key`
sudo mount -t ext2 /dev/mapper/tomename /data/data/com.termux/files/home/tomename
sudo chmod 777 /data/data/com.termux/files/home/tomename
указав вместо /data/data/com.termux/files/home/key путь до ключа, если он изменился.
Для блокировки криптоконтейнера из терминала необходимо
Отмонтировать диск
sudo umount /data/data/com.termux/files/home/tomename
Отключить криптоконтейнер с помощью tcplay
sudo tcplay --unmap=tomename
Освободить петлевое устройство
sudo losetup -d /dev/block/loop0