Quick Walkthrough of Cryptsetup

Just a quick guide on how to use "cryptsetup" for creating LUKS containers and encrypted devices

Creating a container: You need a file that you can use as a container. I just use fallocate -l $SIZE $OUTPUT (change $SIZE to the size you wish to use, such as 10G for 10gb and $OUTPUT to the output file name you wish). Then, cryptsetup luksFormat $OUTPUT. If you wish to use a keyfile, you can do cryptsetup luksAddKey $OUTPUT $KEYFILE ($KEYFILE being the keyfile you wish to use [1]) after you have created your LUKS container

Opening a container: In order to mount the container, you have to format it with a file system (only once, then you can just mount the file), which I will use BTRFS right now. cryptsetup open $OUTPUT $TEMP ($TEMP being a temporary name, does not matter what you use), then mkfs.btrfs /dev/mapper/$TEMP. Then you can sudo mount /dev/mapper/$TEMP /path/to/mountpoint (mountpoint should be empty, just create a directory with mkdir mountpoint). If you get errors saying permission denied when you interact with it, sudo chown -R $USER:$GROUP /path/to/mountpoint ($USER and $GROUP are usually the same, which would be your username)

Closing a container: sudo umount /path/to/mountpoint and then sudo cryptsetup close $TEMP.

Full Disk Encryption on Devices

To encrypt a device, it is the same as above but instead of generating a file with fallocate, your file will be in /dev/. You can do lsblk (if it shows as "sda", your device file will be in /dev/sda and so on) to see which one is the one you wish to encrypt. Make sure to use another file system if you wish.

Is this it?

No. Cryptsetup is much more flexible than that, but this is all you would probably need if you wish to get started

PS: This post will be updated later on


[1] A secure way to generate a keyfile would be with dd if=/dev/urandom of=$KEYFILE bs=32 count=1, which will generate a 32 byte keyfile with random data which provides you 256 bits of security, but you can increase the block size (bs) or the count if you wish to have longer keyfiles with more bits for better security.