mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-11 19:00:02 +01:00
307 lines
11 KiB
Groff
307 lines
11 KiB
Groff
.TH INTEGRITYSETUP "8" "January 2021" "integritysetup" "Maintenance Commands"
|
|
.SH NAME
|
|
integritysetup - manage dm-integrity (block level integrity) volumes
|
|
.SH SYNOPSIS
|
|
.B integritysetup <options> <action> <action args>
|
|
.SH DESCRIPTION
|
|
.PP
|
|
Integritysetup is used to configure dm-integrity managed device-mapper mappings.
|
|
|
|
Device-mapper integrity target provides read-write transparent integrity
|
|
checking of block devices. The dm-integrity target emulates additional data
|
|
integrity field per-sector. You can use this additional field directly
|
|
with integritysetup utility, or indirectly (for authenticated encryption)
|
|
through cryptsetup.
|
|
|
|
Integritysetup supports these operations:
|
|
.PP
|
|
\fIformat\fR <device>
|
|
.IP
|
|
Formats <device> (calculates space and dm-integrity superblock and wipes the device).
|
|
|
|
\fB<options>\fR can be [\-\-data\-device, \-\-batch\-mode, \-\-no\-wipe, \-\-journal\-size,
|
|
\-\-interleave\-sectors, \-\-tag\-size, \-\-integrity, \-\-integrity\-key\-size,
|
|
\-\-integrity\-key\-file, \-\-sector\-size, \-\-progress\-frequency, \-\-progress\-json]
|
|
|
|
.PP
|
|
\fIopen\fR <device> <name>
|
|
.br
|
|
\fIcreate\fR <name> <device> (\fBOBSOLETE syntax\fR)
|
|
.IP
|
|
Open a mapping with <name> backed by device <device>.
|
|
|
|
\fB<options>\fR can be [\-\-data\-device, \-\-batch\-mode, \-\-journal\-watermark,
|
|
\-\-journal\-commit\-time, \-\-buffer\-sectors, \-\-integrity, \-\-integrity\-key\-size,
|
|
\-\-integrity\-key\-file, \-\-integrity\-no\-journal, \-\-integrity\-recalculate,
|
|
\-\-integrity\-recalculate-reset,\-\-integrity\-recovery\-mode, \-\-allow\-discards]
|
|
|
|
.PP
|
|
\fIclose\fR <name>
|
|
.IP
|
|
Removes existing mapping <name>.
|
|
|
|
For backward compatibility, there is \fBremove\fR command alias
|
|
for the \fBclose\fR command.
|
|
|
|
\fB<options>\fR can be [\-\-deferred] or [\-\-cancel\-deferred]
|
|
|
|
.PP
|
|
\fIstatus\fR <name>
|
|
.IP
|
|
Reports status for the active integrity mapping <name>.
|
|
.PP
|
|
\fIdump\fR <device>
|
|
.IP
|
|
Reports parameters from on-disk stored superblock.
|
|
|
|
.PP
|
|
\fIresize\fR <name>
|
|
.IP
|
|
Resizes an active mapping <name>.
|
|
|
|
If \-\-size (in 512-bytes sectors) or \-\-device\-size are not specified,
|
|
the size is computed from the underlying device. After resize, the
|
|
\fBrecalculating\fR flag is set. If \-\-wipe flag is set and the size of the
|
|
device is increased, the newly added section will be wiped.
|
|
|
|
Increasing the size of integrity volumes is available since the Linux kernel
|
|
version 5.7, shrinking should work on older kernels too.
|
|
|
|
\fB<options>\fR can be [\-\-size, \-\-device\-size, \-\-wipe]
|
|
|
|
.SH OPTIONS
|
|
.TP
|
|
.B "\-\-verbose, \-v"
|
|
Print more information on command execution.
|
|
.TP
|
|
.B "\-\-debug"
|
|
Run in debug mode with full diagnostic logs. Debug output
|
|
lines are always prefixed by '#'.
|
|
.TP
|
|
.B "\-\-version"
|
|
Show the program version.
|
|
.TP
|
|
.B "\-\-batch\-mode"
|
|
Do not ask for confirmation.
|
|
.TP
|
|
.B "\-\-progress-frequency <seconds>"
|
|
Print separate line every <seconds> with wipe progress.
|
|
.TP
|
|
.B "\-\-progress-json"
|
|
Prints wipe progress data in json format suitable mostly for machine processing.
|
|
It prints separate line every half second (or based on \fI\-\-progress\-frequency\fR value).
|
|
The json output looks as follows during wipe progress (except it's compact single line):
|
|
.EX
|
|
{
|
|
"device":"/dev/sda" // backing device or file
|
|
"device_bytes":"8192", // bytes wiped so far
|
|
"device_size":"44040192", // total bytes to wipe
|
|
"speed":"126877696", // calculated speed in bytes per second (based on progress so far)
|
|
"eta_ms":"2520012" // estimated time to finish wipe in milliseconds
|
|
"time_ms":"5561235" // total time spent wiping device in milliseconds
|
|
}
|
|
.EE
|
|
|
|
Note on numbers in json output: Due to json parsers limitations all numbers are represented in a string format
|
|
due to need of full 64bit unsigned integers.
|
|
.TP
|
|
.B "\-\-no\-wipe"
|
|
Do not wipe the device after format. A device that is not initially wiped will contain invalid checksums.
|
|
.TP
|
|
.B "\-\-wipe"
|
|
Wipe the newly allocated area after resize to bigger size. If this flag is not set, checksums will be calculated for the data previously stored in the newly allocated area.
|
|
.TP
|
|
.B "\-\-journal\-size, \-j BYTES"
|
|
Size of the journal.
|
|
.TP
|
|
.B "\-\-interleave\-sectors SECTORS"
|
|
The number of interleaved sectors.
|
|
.TP
|
|
.B "\-\-integrity\-recalculate"
|
|
Automatically recalculate integrity tags in kernel on activation.
|
|
The device can be used during automatic integrity recalculation but becomes fully
|
|
integrity protected only after the background operation is finished.
|
|
This option is available since the Linux kernel version 4.19.
|
|
.TP
|
|
.B "\-\-integrity\-recalculate\-reset"
|
|
Restart recalculation from the beginning of the device.
|
|
It can be used to change the integrity checksum function.
|
|
Note it does not change the tag length.
|
|
This option is available since the Linux kernel version 5.13.
|
|
.TP
|
|
.B "\-\-journal\-watermark PERCENT"
|
|
Journal watermark in percents. When the size of the journal exceeds this watermark,
|
|
the journal flush will be started.
|
|
.TP
|
|
.B "\-\-journal\-commit\-time MS"
|
|
Commit time in milliseconds. When this time passes (and no explicit flush operation was issued),
|
|
the journal is written.
|
|
.TP
|
|
.B "\-\-tag\-size, \-t BYTES"
|
|
Size of the integrity tag per-sector (here the integrity function will store authentication tag).
|
|
|
|
\fBNOTE:\fR The size can be smaller that output size of the hash function, in that case only
|
|
part of the hash will be stored.
|
|
.TP
|
|
.B "\-\-data\-device"
|
|
Specify a separate data device that contains existing data. The <device> then will contain
|
|
calculated integrity tags and journal for this data device.
|
|
.TP
|
|
.B "\-\-sector\-size, \-s BYTES"
|
|
Sector size (power of two: 512, 1024, 2048, 4096).
|
|
.TP
|
|
.B "\-\-buffer\-sectors SECTORS"
|
|
The number of sectors in one buffer.
|
|
|
|
The tag area is accessed using buffers, the large buffer size means that the I/O size will
|
|
be larger, but there could be less I/Os issued.
|
|
.TP
|
|
.B "\-\-integrity, \-I ALGORITHM"
|
|
Use internal integrity calculation (standalone mode).
|
|
The integrity algorithm can be CRC (crc32c/crc32) or hash function (sha1, sha256).
|
|
|
|
For HMAC (hmac-sha256) you have also to specify an integrity key and its size.
|
|
.TP
|
|
.B "\-\-integrity\-key\-size BYTES"
|
|
The size of the data integrity key. Maximum is 4096 bytes.
|
|
.TP
|
|
.B "\-\-integrity\-key\-file FILE"
|
|
The file with the integrity key.
|
|
.TP
|
|
.B "\-\-integrity\-no\-journal, \-D"
|
|
Disable journal for integrity device.
|
|
.TP
|
|
.B "\-\-integrity\-bitmap\-mode. \-B"
|
|
Use alternate bitmap mode (available since Linux kernel 5.2) where dm-integrity uses bitmap
|
|
instead of a journal. If a bit in the bitmap is 1, the corresponding region's data and integrity tags
|
|
are not synchronized - if the machine crashes, the unsynchronized regions will be recalculated.
|
|
The bitmap mode is faster than the journal mode, because we don't have to write the data
|
|
twice, but it is also less reliable, because if data corruption happens
|
|
when the machine crashes, it may not be detected.
|
|
.TP
|
|
.B "\-\-bitmap\-sectors\-per\-bit SECTORS"
|
|
Number of 512-byte sectors per bitmap bit, the value must be power of two.
|
|
.TP
|
|
.B "\-\-bitmap\-flush\-time MS"
|
|
Bitmap flush time in milliseconds.
|
|
.TP
|
|
|
|
\fBWARNING:\fR
|
|
In case of a crash, it is possible that the data and integrity tag doesn't match
|
|
if the journal is disabled.
|
|
.TP
|
|
.B "\-\-integrity\-recovery\-mode. \-R"
|
|
Recovery mode (no journal, no tag checking).
|
|
.TP
|
|
|
|
\fBNOTE:\fR The following options are intended for testing purposes only.
|
|
Using journal encryption does not make sense without encryption the data,
|
|
these options are internally used in authenticated disk encryption with \fBcryptsetup(8)\fR.
|
|
.TP
|
|
.B "\-\-journal\-integrity ALGORITHM"
|
|
Integrity algorithm for journal area.
|
|
See \-\-integrity option for detailed specification.
|
|
.TP
|
|
.B "\-\-journal\-integrity\-key\-size BYTES"
|
|
The size of the journal integrity key. Maximum is 4096 bytes.
|
|
.TP
|
|
.B "\-\-journal\-integrity\-key\-file FILE"
|
|
The file with the integrity key.
|
|
.TP
|
|
.B "\-\-journal\-crypt ALGORITHM"
|
|
Encryption algorithm for journal data area.
|
|
You can use a block cipher here such as cbc-aes or
|
|
a stream cipher, for example, chacha20 or ctr-aes.
|
|
.TP
|
|
.B "\-\-journal\-crypt\-key\-size BYTES"
|
|
The size of the journal encryption key. Maximum is 4096 bytes.
|
|
.TP
|
|
.B "\-\-journal\-crypt\-key\-file FILE"
|
|
The file with the journal encryption key.
|
|
.TP
|
|
.B "\-\-allow\-discards\fR"
|
|
Allow the use of discard (TRIM) requests for the device.
|
|
This option is available since the Linux kernel version 5.7.
|
|
.TP
|
|
.B "\-\-deferred"
|
|
Defers device removal in \fIclose\fR command until the last user closes it.
|
|
.TP
|
|
.B "\-\-cancel\-deferred"
|
|
Removes a previously configured deferred device removal in \fIclose\fR command.
|
|
.TP
|
|
The dm-integrity target is available since Linux kernel version 4.12.
|
|
.TP
|
|
\fBNOTE:\fR
|
|
Format and activation of an integrity device always require superuser
|
|
privilege because the superblock is calculated and handled in dm-integrity kernel target.
|
|
|
|
.SH LEGACY COMPATIBILITY OPTIONS
|
|
.TP
|
|
\fBWARNING:\fR
|
|
Do not use these options until you need compatibility with specific old kernel.
|
|
.TP
|
|
.B "\-\-integrity\-legacy\-padding"
|
|
Use inefficient legacy padding.
|
|
.TP
|
|
.B "\-\-integrity\-legacy\-hmac"
|
|
Use old flawed HMAC calculation (also does not protect superblock).
|
|
.TP
|
|
.B "\-\-integrity\-legacy\-recalculate"
|
|
Allow insecure recalculating of volumes with HMAC keys (recalculation offset in superblock
|
|
is not protected).
|
|
|
|
.SH RETURN CODES
|
|
Integritysetup returns 0 on success and a non-zero value on error.
|
|
|
|
Error codes are:
|
|
1 wrong parameters
|
|
2 no permission
|
|
3 out of memory
|
|
4 wrong device specified
|
|
5 device already exists, or device is busy.
|
|
|
|
.SH EXAMPLES
|
|
Format the device with default standalone mode (CRC32C):
|
|
|
|
.B "integritysetup format <device>"
|
|
|
|
Open the device with default parameters:
|
|
|
|
.B "integritysetup open <device> test"
|
|
|
|
Format the device in standalone mode for use with HMAC(SHA256):
|
|
|
|
.B "integritysetup format <device> \-\-tag\-size 32 \-\-integrity hmac\-sha256 \
|
|
\-\-integrity\-key\-file <keyfile> \-\-integrity\-key\-size <key_bytes>"
|
|
|
|
Open (activate) the device with HMAC(SHA256) and HMAC key in file:
|
|
|
|
.B "integritysetup open <device> test \-\-integrity hmac\-sha256 \
|
|
\-\-integrity\-key\-file <keyfile> \-\-integrity\-key\-size <key_bytes>"
|
|
|
|
Dump dm-integrity superblock information:
|
|
|
|
.B "integritysetup dump <device>"
|
|
|
|
.SH REPORTING BUGS
|
|
Report bugs, including ones in the documentation, on
|
|
the cryptsetup mailing list at <cryptsetup@lists.linux.dev>
|
|
or in the 'Issues' section on LUKS website.
|
|
Please attach the output of the failed command with the
|
|
\-\-debug option added.
|
|
.SH AUTHORS
|
|
The integritysetup tool is written by Milan Broz <gmazyland@gmail.com>
|
|
and is part of the cryptsetup project.
|
|
.SH COPYRIGHT
|
|
Copyright \(co 2016-2022 Red Hat, Inc.
|
|
.br
|
|
Copyright \(co 2016-2022 Milan Broz
|
|
|
|
This is free software; see the source for copying conditions. There is NO
|
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
.SH SEE ALSO
|
|
The project website at \fBhttps://gitlab.com/cryptsetup/cryptsetup\fR
|
|
|
|
The integrity on-disk format specification available at
|
|
\fBhttps://gitlab.com/cryptsetup/cryptsetup/wikis/DMIntegrity\fR
|