Cryptsetup is a utility used to conveniently set up disk encryption based on the DMCrypt kernel module.
These include plain dm-crypt volumes, LUKS volumes, loop-AES, TrueCrypt (including VeraCrypt extension) and BitLocker formats.
The project also includes a veritysetup utility used to conveniently setup DMVerity block integrity checking kernel module and integritysetup to setup DMIntegrity block integrity kernel module.
LUKS is the standard for Linux hard disk encryption. By providing a standard on-disk-format, it does not
only facilitate compatibility among distributions, but also provides secure management of multiple user passwords.
LUKS stores all necessary setup information in the partition header, enabling to transport or migrate data seamlessly.
Last version of the LUKS2 format specification is available here.
Last version of the LUKS1 format specification is available here.
- compatibility via standardization,
- secure against low entropy attacks,
- support for multiple keys,
- effective passphrase revocation,
- free.
All release tarballs and release notes are hosted on kernel.org.
The latest stable cryptsetup version is 2.4.3
- cryptsetup-2.4.3.tar.xz
- Signature cryptsetup-2.4.3.tar.sign (You need to decompress file first to check signature.)
- Cryptsetup 2.4.3 Release Notes.
Previous versions
For development version code, please refer to source page, mirror on kernel.org or GitHub.
For libcryptsetup documentation see libcryptsetup API page.
The libcryptsetup API/ABI changes are tracked in compatibility report.
NLS PO files are maintained by TranslationProject.
All distributions provide cryptsetup as distro package. If you need to compile cryptsetup yourself, some packages are required for compilation. Please always prefer distro specific build tools to manually configuring cryptsetup.
For available compile options, check configure --help
for more info. If you are using a git snapshot, you need to generate a configure script with autogen.sh
script.
Here is the list of packages needed for the compilation of project for particular distributions:
-
For Fedora:
git gcc make autoconf automake gettext-devel pkgconfig openssl-devel popt-devel device-mapper-devel libuuid-devel json-c-devel libblkid-devel findutils libtool libssh-devel tar
. Optionallylibargon2-devel libpwquality-devel
. To run the internal testsuite you also need to installsharutils device-mapper jq vim-common expect keyutils netcat shadow-utils openssh-clients openssh sshpass
. -
For Debian and Ubuntu:
git gcc make autoconf automake autopoint pkg-config libtool gettext libssl-dev libdevmapper-dev libpopt-dev uuid-dev libsepol1-dev libjson-c-dev libssh-dev libblkid-dev tar
. Optionallylibargon2-0-dev libpwquality-dev
. To run the internal testsuite you also need to installsharutils dmsetup jq xxd expect keyutils netcat passwd openssh-client sshpass
Note that the list could change as the distributions evolve.
Please read the following documentation before posting questions in the mailing list. You will be able to ask better questions and better understand the answers.
- FAQ
- LUKS Specifications
- manuals (aka man page, man pages, man-page)
The FAQ is online and in the source code for the project. The Specifications are referenced above in this document. The man pages are in source and should be available after installation using standard man commands. e.g. man cryptsetup
For cryptsetup and LUKS related questions, please use the cryptsetup mailing list cryptsetup@lists.linux.dev, hosted at kernel.org subspace. To subscribe send an empty mail to cryptsetup+subscribe@lists.linux.dev.
You can also browse and/or search the mailing list archive. News (NNTP), Atom feed and git access to public inbox is available through lore.kernel.org service.
The former dm-crypt list archive is also available.