Commit Graph

28 Commits

Author SHA1 Message Date
Peter Kjellerstedt acbe748798 cryptsetup: Add support for building without SSH tokens
Cryptsetup SSH tokens is the only feature that has a dependency on
libssh. Add a packageconfig to control this dependency.

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
2022-08-09 09:51:57 -07:00
wangmy 9f4d806758 cryptsetup: upgrade 2.4.2 -> 2.4.3
Changelog:
=========
Stable security bug-fix release that fixes CVE-2021-4122.

All users of cryptsetup 2.4.x must upgrade to this version.

Changes since version 2.4.2
~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Fix possible attacks against data confidentiality through LUKS2 online
  reencryption extension crash recovery (CVE-2021-4122).

  An attacker can modify on-disk metadata to simulate decryption in
  progress with crashed (unfinished) reencryption step and persistently
  decrypt part of the LUKS device.

  This attack requires repeated physical access to the LUKS device but
  no knowledge of user passphrases.

  The decryption step is performed after a valid user activates
  the device with a correct passphrase and modified metadata.
  There are no visible warnings for the user that such recovery happened
  (except using the luksDump command). The attack can also be reversed
  afterward (simulating crashed encryption from a plaintext) with
  possible modification of revealed plaintext.

  The size of possible decrypted data depends on configured LUKS2 header
  size (metadata size is configurable for LUKS2).
  With the default parameters (16 MiB LUKS2 header) and only one
  allocated keyslot (512 bit key for AES-XTS), simulated decryption with
  checksum resilience SHA1 (20 bytes checksum for 4096-byte blocks),
  the maximal decrypted size can be over 3GiB.

  The attack is not applicable to LUKS1 format, but the attacker can
  update metadata in place to LUKS2 format as an additional step.
  For such a converted LUKS2 header, the keyslot area is limited to
  decrypted size (with SHA1 checksums) over 300 MiB.

  The issue is present in all cryptsetup releases since 2.2.0.
  Versions 1.x, 2.0.x, and 2.1.x are not affected, as these do not
  contain LUKS2 reencryption extension.

  The problem was caused by reusing a mechanism designed for actual
  reencryption operation without reassessing the security impact for new
  encryption and decryption operations. While the reencryption requires
  calculating and verifying both key digests, no digest was needed to
  initiate decryption recovery if the destination is plaintext (no
  encryption key). Also, some metadata (like encryption cipher) is not
  protected, and an attacker could change it. Note that LUKS2 protects
  visible metadata only when a random change occurs. It does not protect
  against intentional modification but such modification must not cause
  a violation of data confidentiality.

  The fix introduces additional digest protection of reencryption
  metadata. The digest is calculated from known keys and critical
  reencryption metadata. Now an attacker cannot create correct metadata
  digest without knowledge of a passphrase for used keyslots.
  For more details, see LUKS2 On-Disk Format Specification version 1.1.0.

  The former reencryption operation (without the additional digest) is no
  longer supported (reencryption with the digest is not backward
  compatible). You need to finish in-progress reencryption before
  updating to new packages. The alternative approach is to perform
  a repair command from the updated package to recalculate reencryption
  digest and fix metadata.
  The reencryption repair operation always require a user passphrase.

  WARNING: Devices with older reencryption in progress can be no longer
  activated without performing the action mentioned above.

  Encryption in progress can be detected by running the luksDump command
  (output includes reencrypt keyslot with reencryption parameters). Also,
  during the active reencryption, no keyslot operations are available
  (change of passphrases, etc.).

  The issue was found by Milan Broz as cryptsetup maintainer.

Other changes
~~~~~~~~~~~~~
* Add configure option --disable-luks2-reencryption to completely disable
  LUKS2 reencryption code.

  When used, the libcryptsetup library can read metadata with
  reencryption code, but all reencryption API calls and cryptsetup
  reencrypt commands are disabled.

  Devices with online reencryption in progress cannot be activated.
  This option can cause some incompatibilities. Please use with care.

* Improve internal metadata validation code for reencryption metadata.

* Add updated documentation for LUKS2 On-Disk Format Specification
  version 1.1.0 (with reencryption extension description and updated
  metadata description). See docs/on-disk-format-luks2.pdf or online
  version in https://gitlab.com/cryptsetup/LUKS2-docs repository.

* Fix support for bitlk (BitLocker compatible) startup key with new
  metadata entry introduced in Windows 11.

* Fix space restriction for LUKS2 reencryption with data shift.
  The code required more space than was needed.

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-01-19 09:01:04 -08:00
wangmy 830666b54d cryptsetup: upgrade 2.4.1 -> 2.4.2
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-11-22 10:15:00 -08:00
wangmy 6e9d281889 cryptsetup: upgrade 2.3.6 -> 2.4.1
Cryptsetup 2.4.1 Release Notes
==============================
Stable bug-fix release with minor extensions.

All users of cryptsetup 2.4.0 should upgrade to this version.

Changes since version 2.4.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Fix compilation for libc implementations without dlvsym().

  Some alternative libc implementations (like musl) do not provide
  versioned symbols dlvsym function. Code now fallbacks to dlsym
  operation for dynamic LUKS2 token load.
  It is up to maintainers to ensure that LUKS2 token plugins are
  compiled for the supported version.

* Fix compilation and tests on systems with non-standard libraries
  (standalone argp library, external gettext library, BusyBox
  implementations of standard tools).

* Try to workaround some issues on systems without udev support.
  NOTE: non-udev systems cannot provide all functionality for kernel
  device-mapper, and some operations can fail.

* Fixes for OpenSSL3 crypto backend (including FIPS mode).
  Because cryptsetup still requires some hash functions implemented
  in OpenSSL3 legacy provider, crypto backend now uses its library
  context and tries to load both default and legacy OpenSSL3 providers.

  If FIPS mode is detected, no library context is used, and it is up
  to the OpenSSL system-wide policy to load proper providers.

  NOTE: We still use some deprecated API in the OpenSSL3 backend,
  and there are some known problems in OpenSSL 3.0.0.

* Print error message when assigning a token to an inactive keyslot.

* Fix offset bug in LUKS2 encryption code if --offset option was used.

* Do not allow LUKS2 decryption for devices with data offset.
  Such devices cannot be used after decryption.

* Fix LUKS1 cryptsetup repair command for some specific problems.
  Repair code can now fix wrongly used initialization vector
  specification in ECB mode (that is insecure anyway!) and repair
  the upper-case hash specification in the LUKS1 header.

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-10-25 10:40:50 -07:00
Kristian Klausen 9b02aa1220 cryptsetup: Add runtime dependency on lvm2-udevrules for udev
Without the udevrules cryptsetup luksOpen will be hanging with "Udev
cookie 0xd4de0f6 (semid 5) waiting for zero".

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-09-07 10:03:49 -07:00
Martin Jansa c61dc077bb Convert to new override syntax
This is the result of automated script (0.9.1) conversion:

oe-core/scripts/contrib/convert-overrides.py .

converting the metadata to use ":" as the override character instead of "_".

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-08-03 10:21:25 -07:00
Peter Kjellerstedt 497602b484 cryptsetup: Only recommend kernel modules when building for target
Otherwise cryptsetup-native depends on the target kernel and thus the
target compiler, as can be seen by:

  $ bitbake -g cryptsetup-native
  $ grep 'cryptsetup.*linux-yocto' task-depends.dot
  "cryptsetup-native.do_build" -> "linux-yocto.do_deploy"
  "cryptsetup-native.do_build" -> "linux-yocto.do_package_write_rpm"
  "cryptsetup-native.do_populate_sysroot" -> "linux-yocto.do_populate_sysroot"
  $ grep 'linux-yocto.*gcc-cross' task-depends.dot
  "linux-yocto.do_kernel_configme" -> "gcc-cross-x86_64.do_populate_sysroot"
  "linux-yocto.do_prepare_recipe_sysroot" -> "gcc-cross-x86_64.do_populate_sysroot"

This also moves the runtime dependencies to near the end of the recipe,
which is more customary.

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-06-28 09:03:34 -07:00
zangrc 056d0892f0 cryptsetup: upgrade 2.3.5 -> 2.3.6
Signed-off-by: Zang Ruochen <zangrc.fnst@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-06-10 20:43:44 -07:00
Khem Raj 6e99122ed8 cryptsetup: DEPEND on renamed util-linux-libuuid
OE-core recipe is called util-linux-libuuid now

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Luca Boccassi <luca.boccassi@microsoft.com>
2021-03-26 10:34:21 -07:00
zhengruoqin a8d0838fa7 cryptsetup: upgrade 2.3.4 -> 2.3.5
Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-03-19 01:19:14 -07:00
Luca Boccassi 2266a8a194 cryptsetup: depend on new util-linux-uuid to break cycle
The util-linux recipe in Poky has been split, and libuuid is separate now:

http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=d42487bf52310d095178e480b7ddec2666471009

This allows to build util-linux with cryptsetup, for native dm-verity
support.
The main cryptsetup build needs libuuid and not the full util-linux, so
switch the build-dependency over, thus allowing users to enable the
cryptsetup util-linux's PACKAGECONFIG.
The libblkid dependency is handled individually by the crypsetup's
PACKAGECONFIG option.

Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-03-12 15:55:07 -08:00
Zang Ruochen 7a548bace1 cryptsetup: upgrade 2.3.3 -> 2.3.4
Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-09-10 21:20:23 -07:00
Zang Ruochen b2dfc24fde cryptsetup: upgrade 2.3.2 -> 2.3.3
Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-06-10 20:57:01 -07:00
Wang Mingyu 4dacdef41c cryptsetup: upgrade 2.3.1 -> 2.3.2
Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-05-22 09:03:04 -07:00
Pierre-Jean Texier a76744d8ba cryptsetup: upgrade 2.3.0 -> 2.3.1
This is a bug-fix release, see full changelog:

 - https://mirrors.edge.kernel.org/pub/linux/utils/cryptsetup/v2.3/v2.3.1-ReleaseNotes

Signed-off-by: Pierre-Jean Texier <pjtexier@koncepto.io>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-03-12 16:49:59 -07:00
Wang Mingyu 59ceb3f122 cryptsetup: upgrade 2.2.2 -> 2.3.0
Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-02-14 17:11:40 -08:00
Zheng Ruoqin dc9caf5d1d cryptsetup: upgrade 2.2.1 -> 2.2.2
Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2019-11-06 19:58:01 -08:00
Yuan Chao 4f29ebd4ea cryptsetup: upgrade 2.2.0 -> 2.2.1
Signed-off-by: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2019-09-19 00:09:43 -07:00
Hongxu Jia 6a5d6bc9ad cryptsetup: add libdevmapper to RDEPENDS
Since commit [libdevmapper/lvm2: force recipe libdevmapper to populate
sysroot only] applied, if recipe DEPENDS on libdevmapper, we have to
add it to packages RDEPENDS to fix [file-rdeps] QA issue

Set PREFERRED_RPROVIDER_libdevmapper = "lvm2" in layer.conf to explicit
RDEPENDS on libdevmapper in cryptsetup

Suggested-by : peter.kjellerstedt@axis.com
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2019-08-31 01:24:55 -07:00
Hongxu Jia d8685320a4 cryptsetup: add libdevmapper to RDEPENDS
Since commit [libdevmapper/lvm2: force recipe libdevmapper to populate
sysroot only] applied, if recipe DEPENDS on libdevmapper, we have to
add it to packages RDEPENDS to fix [file-rdeps] QA issue

Skip [build-deps] and [file-rdeps] QA checking, add lvm2 to DEPENDS will
triger circular dependencies, use recipe libdevmapper to replace,
ignore the QA checking is fine.

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2019-08-29 09:07:34 -07:00
Zang Ruochen 4f9d5b97d6 cryptsetup: upgrade 2.1.0 -> 2.2.0.
Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2019-08-19 18:20:38 -07:00
Yi Zhao 11ff107a85 cryptsetup: set the default luks format to LUKS1
The cryptsetup 2.1 uses LUKS2 format as the default LUKS format. This
change introduced the following issues:

* LUKS2 requires kernel userspace crypto API to be available
  (CONFIG_CRYPTO_USER_API and CONFIG_CRYPTO_USER_API_SKCIPHER). But
  linux-yocto doesn't enable these options by default. If missing these
  kernel modules, the cryptsetup will fall back to using dmcrypt-device
  for keyslot processing.

  $ cryptsetup --debug --type luks luksFormat /dev/sda3
    [snip]
    Checking if cipher aes-xts-plain64 is usable.
    Userspace crypto wrapper cannot use aes-xts-plain64 (-95).
    Using dmcrypt to access keyslot area.
    [snip]

* The grub can not decrypt a LUKS2 encrypted boot partition because it
  doesn't support LUKS2 now.
  See grub bug: https://savannah.gnu.org/bugs/?55093

Add a PACKAGCONFIG for luks format and set the default LUKS format to
LUKS1. The users can specify '--type luks2' in cryptsetup command line
if they want to use LUKS2.

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2019-07-11 14:01:28 -07:00
Robert Joslyn 5aaaf8e972 cryptsetup: Don't enable udev for native build
When building cryptsetup-native, don't enable udev support since there
is not a udev-native recipe.

When udev is enabled, change the dependency from a DEPENDS to an
RDEPENDS. The --enable-udev option adds a runtime check for udev before
using udev features of libdevmapper. Because of this, udev isn't needed
at build time, just runtime.

Signed-off-by: Robert Joslyn <robert.joslyn@redrectangle.org>
Reviewed-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2019-07-10 09:24:33 -07:00
Robert Joslyn 1ce71d6ec3 cryptsetup: Add PACKAGECONFIG options
Add various PACKAGECONFIG options, keeping the default options enabled.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2019-06-15 16:45:33 -07:00
Mingli Yu e9434ec4ce cryptsetup: Upgrade to 2.1.0
Instead of hardcoding the version in SRC_URI,
get the version for the folder of the source
dynamically in SRC_URI.

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2019-02-15 06:58:55 -08:00
Mingli Yu 4fb7aa816c cryptsetup: Upgrade to 2.0.4
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2018-08-29 18:18:14 -07:00
Mingli Yu 1507fa0aa2 cryptsetup: Upgrade to 2.0.3
* Update the homepage to https://gitlab.com/cryptsetup/cryptsetup
* Add json-c to DEPENDS as cryptsetup requires the
  json-c library for JSON data processing since cryptsetup
  2.0.0 per "The LUKS2 format and features" part of
  https://mirrors.edge.kernel.org/pub/linux/utils/cryptsetup/v2.0/v2.0.0-ReleaseNotes
* Add file /usr/lib/tmpfiles.d/cryptsetup.conf to
  FILES_${PN} when systemd enabled in DISTRO_FEATURES

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2018-07-20 16:07:12 -07:00
Armin Kuster 40877b1244 cryptsetup: move to crypto
Signed-off-by: Armin Kuster <akuster808@gmail.com>
2018-03-01 16:10:37 -08:00