LUKS에 사용 가능한 암호화 방법 나열

LUKS에 사용 가능한 암호화 방법 나열

저는 작동하고 최신 상태인 하드 드라이브 암호화 방법을 찾고 있습니다. 약간의 조사 끝에 나는 우연히 발견했습니다.루크스그리고 한번 시도해 보기로 결정했습니다. 그래서 이를 사용하여 하드 드라이브를 올바르게 암호화하는 방법에 대한 몇 가지 예를 찾아보았습니다.

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/cryptosnake 또는 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).

유효한 비밀번호 이름

유효한 비밀번호 패턴

  • ecb비밀번호 출력을 직접 사용하십시오.
  • cbc-plain암호는 CBC 모드에서 작동합니다. CBC 링크는 각 섹터로 절단되고 섹터 번호를 초기 벡터로 사용하여 다시 초기화됩니다(32비트 및 리틀 엔디안으로 변환). 이 모드는 [Fru05b]의 4장에 지정되어 있습니다.
  • cbc-essiv:{hash}암호는 해시를 사용하여 원래 키에 대한 IV 키를 생성하는 ESSIV 모드에서 작동합니다. 예를 들어 sha256을 해시로 사용하는 경우 암호화 모드 사양은 "cbcessiv:sha256"입니다. ESSIV는 [Fru05b]의 4장에 지정되어 있습니다.
  • xts-plain64plain64는 일반 초기화 벡터의 64비트 버전입니다.

유효한 해시 사양

관련 정보