mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-24 00:00:19 +03:00
54 lines
2.2 KiB
ReStructuredText
54 lines
2.2 KiB
ReStructuredText
|
|
|||
|
Encryption
|
|||
|
~~~~~~~~~~
|
|||
|
|
|||
|
bcachefs supports authenticated (AEAD style) encryption -
|
|||
|
ChaCha20/Poly1305. When encryption is enabled, the poly1305 MAC replaces
|
|||
|
the normal data and metadata checksums. This style of encryption is
|
|||
|
superior to typical block layer or filesystem level encryption (usually
|
|||
|
AES-XTS), which only operates on blocks and doesn’t have a way to store
|
|||
|
nonces or MACs. In contrast, we store a nonce and cryptographic MAC
|
|||
|
alongside data pointers - meaning we have a chain of trust up to the
|
|||
|
superblock (or journal, in the case of unclean shutdowns) and can
|
|||
|
definitely tell if metadata has been modified, dropped, or replaced with
|
|||
|
an earlier version - replay attacks are not possible.
|
|||
|
|
|||
|
Encryption can only be specified for the entire filesystem, not per file
|
|||
|
or directory - this is because metadata blocks do not belong to a
|
|||
|
particular file. All metadata except for the superblock is encrypted.
|
|||
|
|
|||
|
In the future we’ll probably add AES-GCM for platforms that have
|
|||
|
hardware acceleration for AES, but in the meantime software
|
|||
|
implementations of ChaCha20 are also quite fast on most platforms.
|
|||
|
|
|||
|
``scrypt`` is used for the key derivation function - for converting the
|
|||
|
user supplied passphrase to an encryption key.
|
|||
|
|
|||
|
To format a filesystem with encryption, use
|
|||
|
|
|||
|
::
|
|||
|
|
|||
|
bcachefs format --encrypted /dev/sda1
|
|||
|
|
|||
|
You will be prompted for a passphrase. Then, to use an encrypted
|
|||
|
filesystem use the command
|
|||
|
|
|||
|
::
|
|||
|
|
|||
|
bcachefs unlock /dev/sda1
|
|||
|
|
|||
|
You will be prompted for the passphrase and the encryption key will be
|
|||
|
added to your in-kernel keyring; mount, fsck and other commands will
|
|||
|
then work as usual.
|
|||
|
|
|||
|
The passphrase on an existing encrypted filesystem can be changed with
|
|||
|
the ``bcachefs set-passphrase`` command. To permanently unlock an
|
|||
|
encrypted filesystem, use the ``bcachefs remove-passphrase`` command -
|
|||
|
this can be useful when dumping filesystem metadata for debugging by the
|
|||
|
developers.
|
|||
|
|
|||
|
There is a ``wide_macs`` option which controls the size of the
|
|||
|
cryptographic MACs stored on disk. By default, only 80 bits are stored,
|
|||
|
which should be sufficient security for most applications. With the
|
|||
|
``wide_macs`` option enabled we store the full 128 bit MAC, at the cost
|
|||
|
of making extents 8 bytes bigger.
|