|
- <section xmlns="http://docbook.org/ns/docbook"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:xi="http://www.w3.org/2001/XInclude"
- version="5.0"
- xml:id="sec-luks-file-systems">
- <title>LUKS-Encrypted File Systems</title>
-
- <para>
- NixOS supports file systems that are encrypted using
- <emphasis>LUKS</emphasis> (Linux Unified Key Setup). For example, here is how
- you create an encrypted Ext4 file system on the device
- <filename>/dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d</filename>:
- <screen>
- # cryptsetup luksFormat /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d
-
- WARNING!
- ========
- This will overwrite data on /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d irrevocably.
-
- Are you sure? (Type uppercase yes): YES
- Enter LUKS passphrase: ***
- Verify passphrase: ***
-
- # cryptsetup luksOpen /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d crypted
- Enter passphrase for /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d: ***
-
- # mkfs.ext4 /dev/mapper/crypted
- </screen>
- To ensure that this file system is automatically mounted at boot time as
- <filename>/</filename>, add the following to
- <filename>configuration.nix</filename>:
- <programlisting>
- <link linkend="opt-boot.initrd.luks.devices._name__.device">boot.initrd.luks.devices.crypted.device</link> = "/dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d";
- <xref linkend="opt-fileSystems"/>."/".device = "/dev/mapper/crypted";
- </programlisting>
- Should grub be used as bootloader, and <filename>/boot</filename> is located
- on an encrypted partition, it is necessary to add the following grub option:
- <programlisting><xref linkend="opt-boot.loader.grub.enableCryptodisk"/> = true;</programlisting>
- </para>
- <section xml:id="sec-luks-file-systems-fido2">
- <title>FIDO2</title>
-
- <para>
- NixOS also supports unlocking your LUKS-Encrypted file system using a FIDO2 compatible token. In the following example, we will create a new FIDO2 credential
- and add it as a new key to our existing device <filename>/dev/sda2</filename>:
-
- <screen>
- # export FIDO2_LABEL="/dev/sda2 @ $HOSTNAME"
- # fido2luks credential "$FIDO2_LABEL"
- f1d00200108b9d6e849a8b388da457688e3dd653b4e53770012d8f28e5d3b269865038c346802f36f3da7278b13ad6a3bb6a1452e24ebeeaa24ba40eef559b1b287d2a2f80b7
-
- # fido2luks -i add-key /dev/sda2 f1d00200108b9d6e849a8b388da457688e3dd653b4e53770012d8f28e5d3b269865038c346802f36f3da7278b13ad6a3bb6a1452e24ebeeaa24ba40eef559b1b287d2a2f80b7
- Password:
- Password (again):
- Old password:
- Old password (again):
- Added to key to device /dev/sda2, slot: 2
- </screen>
-
- To ensure that this file system is decrypted using the FIDO2 compatible key, add the following to <filename>configuration.nix</filename>:
- <programlisting>
- <link linkend="opt-boot.initrd.luks.fido2Support">boot.initrd.luks.fido2Support</link> = true;
- <link linkend="opt-boot.initrd.luks.devices._name__.fido2.credential">boot.initrd.luks.devices."/dev/sda2".fido2.credential</link> = "f1d00200108b9d6e849a8b388da457688e3dd653b4e53770012d8f28e5d3b269865038c346802f36f3da7278b13ad6a3bb6a1452e24ebeeaa24ba40eef559b1b287d2a2f80b7";
- </programlisting>
-
- You can also use the FIDO2 passwordless setup, but for security reasons, you might want to enable it only when your device is PIN protected, such as <link xlink:href="https://trezor.io/">Trezor</link>.
-
- <programlisting>
- <link linkend="opt-boot.initrd.luks.devices._name__.fido2.passwordLess">boot.initrd.luks.devices."/dev/sda2".fido2.passwordLess</link> = true;
- </programlisting>
- </para>
- </section>
-
- </section>
|