저는 작동하고 최신 상태인 하드 드라이브 암호화 방법을 찾고 있습니다. 약간의 조사 끝에 나는 우연히 발견했습니다.루크스그리고 한번 시도해 보기로 결정했습니다. 그래서 이를 사용하여 하드 드라이브를 올바르게 암호화하는 방법에 대한 몇 가지 예를 찾아보았습니다.
cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda3
이것--비밀번호그리고--해시 값그 중 한 부분이 나에게 가장 흥미로웠기 때문에 LUKS에 특별히 사용되는 다양한 암호와 해시에 대해 스스로 교육하려고 노력했습니다. 현재 사용 중인 Linux에서 사용할 수 있는 암호화 형식을 기계 친화적인 형식으로 표시하는 파일을 여는 것 외에는 유용한 정보를 찾을 수 없습니다. 그러나 내가 아는 바로는 이 파일조차도 모든 암호화 방법의 전체 범위가 부족할 수 있으며 매일 이 파일을 다루지 않는 사람에게는 읽기 어려울 수 있습니다.
내 질문: 거기 있어요?가득한LUKS 암호화된 비밀번호/해시 목록?
단지 내가 선택할 수 있는 옵션이 무엇인지 보여주고... 이러한 다양한 방법의 차이점이 무엇인지 간략하게 설명할 수도 있습니다.
답변1
이는 기본적으로 커널에 따라 다르므로 "/proc/crypto를 참조하세요."라고 대답해야 합니다. ” cryptsetup 매뉴얼 페이지에는 다음과 같이 나와 있습니다.
NOTES ON SUPPORTED CIPHERS, MODES, HASHES AND KEY SIZES
The available combinations of ciphers, modes, hashes and key sizes depend
on kernel support. See /proc/crypto for a list of available options. You
might need to load additional kernel crypto modules in order to get more
options.
For the --hash option, if the crypto backend is libgcrypt, then all algo‐
rithms supported by the gcrypt library are available. For other crypto
backends some algorithms may be missing.
그러나 나는 /proc/crypto
snake 또는 xts(aes)에 대해 아무 것도 언급하지 않았으므로 해당 보고서를 확인하는 것이 좋습니다 cryptsetup benchmark
((ram) 속도도 표시됩니다). 예를 들어:
$ cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 292752 iterations per second
PBKDF2-sha256 221362 iterations per second
PBKDF2-sha512 142010 iterations per second
PBKDF2-ripemd160 277124 iterations per second
PBKDF2-whirlpool 155727 iterations per second
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 164.7 MiB/s 164.5 MiB/s
serpent-cbc 128b 119.5 MiB/s 205.0 MiB/s
twofish-cbc 128b 163.5 MiB/s 208.6 MiB/s
aes-cbc 256b 148.4 MiB/s 147.9 MiB/s
serpent-cbc 256b 128.1 MiB/s 205.3 MiB/s
twofish-cbc 256b 202.3 MiB/s 213.1 MiB/s
aes-xts 256b 165.4 MiB/s 145.3 MiB/s
serpent-xts 256b 150.0 MiB/s 194.5 MiB/s
twofish-xts 256b 206.4 MiB/s 206.9 MiB/s
aes-xts 512b 149.4 MiB/s 147.5 MiB/s
serpent-xts 512b 181.7 MiB/s 195.0 MiB/s
twofish-xts 512b 207.1 MiB/s 208.6 MiB/s
해시는 처음 몇 줄(sha1, sha256, sha512,ripemd160,whirlpool)입니다. 비밀번호는 알고리즘 제목 아래에 있습니다.
기본값을 살펴보면 무엇이 "매우 좋음"으로 간주되는지에 대한 좋은 아이디어를 얻을 수 있습니다.
$ cryptsetup --help|tail -n 8
Default compiled-in key and passphrase parameters:
Maximum keyfile size: 8192kB, Maximum interactive passphrase length 512 (characters)
Default PBKDF2 iteration time for LUKS: 1000 (ms)
Default compiled-in device cipher parameters:
loop-AES: aes, Key 256 bits
plain: aes-cbc-essiv:sha256, Key: 256 bits, Password hashing: ripemd160
LUKS1: aes-xts-plain64, Key: 256 bits, LUKS header hashing: sha1, RNG: /dev/urandom
더 큰 키 크기를 사용하면( 사용 --key-size
) 약간 느려지는 경우에만 더 강해집니다.
--key-size, -s <bits>
Sets key size in bits. The argument has to be a multiple of 8.
The possible key-sizes are limited by the cipher and mode used.
See /proc/crypto for more information. Note that key-size in
/proc/crypto is stated in bytes.
답변2
notdavidcronenberg 사용자의 작업을 참조하면 내가 찾은 유일한 답변은 문서에 있습니다.LUKS 디스크 포맷 사양(PDF).
유효한 비밀번호 이름
aes
고급 암호화 표준 - FIPS PUB 197twofish
Twofish: 128비트 블록 암호 -https://www.schneier.com/paper-twofish-paper.htmlserpent
https://www.cl.cam.ac.uk/~rja14/serpent.htmlcast5
RFC 2144cast6
RFC 2612유효한 비밀번호 패턴
ecb
비밀번호 출력을 직접 사용하십시오.cbc-plain
암호는 CBC 모드에서 작동합니다. CBC 링크는 각 섹터로 절단되고 섹터 번호를 초기 벡터로 사용하여 다시 초기화됩니다(32비트 및 리틀 엔디안으로 변환). 이 모드는 [Fru05b]의 4장에 지정되어 있습니다.cbc-essiv:{hash}
암호는 해시를 사용하여 원래 키에 대한 IV 키를 생성하는 ESSIV 모드에서 작동합니다. 예를 들어 sha256을 해시로 사용하는 경우 암호화 모드 사양은 "cbcessiv:sha256"입니다. ESSIV는 [Fru05b]의 4장에 지정되어 있습니다.xts-plain64
plain64는 일반 초기화 벡터의 64비트 버전입니다.유효한 해시 사양
sha1
RFC 3174 - 미국 보안 해시 알고리즘 1(SHA1)sha256
FIPS 180-2 호환 SHA 변형sha512
FIPS 180-2 호환 SHA 변형ripemd160
http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html