Daftar metode enkripsi yang tersedia untuk LUKS

10

Saya sedang mencari cara mengenkripsi hard disk yang valid dan masih mutakhir. Setelah beberapa penelitian saya bertemu LUKS dan memutuskan untuk mencobanya. Jadi saya mencari beberapa contoh cara mengenkripsi HDD dengan benar, seperti ini:

cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda3

Bagian --cipher dan - hash paling menarik bagi saya, jadi saya mencoba memberi tahu diri saya tentang cipher dan hash yang berbeda yang secara khusus dapat digunakan untuk LUKS. Saya tidak dapat menemukan informasi yang berguna selain membuka file yang menunjukkan formulir enkripsi yang tersedia dalam format yang ramah mesin untuk Linux yang saat ini digunakan. Tapi seperti yang saya diberitahu, bahkan file ini mungkin hilang sepenuhnya dari semua cara enkripsi selain itu sangat sulit dibaca untuk seseorang yang tidak berurusan dengan itu setiap hari.

Pertanyaan saya: apakah ada daftar lengkap cipher / hash untuk enkripsi LUKS?

Salah satu yang hanya menunjukkan kepada saya apa yang bisa saya pilih ... dan mungkin memberikan deskripsi singkat tentang apa sebenarnya perbedaan antara cara-cara yang berbeda itu.

Akito
sumber
1
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena ini tentang penggunaan dan konfigurasi LUKS dan kernel Linux, bukan tentang kriptografi yang digunakan oleh alat-alat ini. Ini akan menjadi topik di Unix & Linux . Saya telah menandai pertanyaan ini untuk migrasi, tolong jangan mengirim ulang kecuali jika ditutup tanpa migrasi.
Gilles 'SANGAT berhenti menjadi jahat'
Saya secara khusus memilih area Kriptografi, karena pertanyaan saya diarahkan ke cipher dan hash. Saya mengambil "tur" untuk area ini dan secara harfiah ada di slot "Pertanyaan yang harus Anda tanyakan:". Lihatlah, jika Anda mau.
Akito
Itu sebabnya saya tidak mengajukan pertanyaan di Unix & Linux karena itu akan menjadi off-topik di sana ....
Akito
memberikan deskripsi singkat tentang apa sebenarnya perbedaan antara cara-cara yang berbeda ini. Ini adalah satu-satunya bagian dari pertanyaan Anda yang ada di topik. Apa perbedaan utama antara AES dan Twofish? Yah, AES menggunakan jaringan permutasi substitusi sementara Twofish menggunakan jaringan Feistel. Berdasarkan informasi ini, Anda harus memilih AES dengan jelas karena pada prinsipnya tidak ada yang salah dengan jaringan Feistel.
DepressedDaniel

Jawaban:

7

Itu pada dasarnya terserah kernel Anda, jadi " Lihat / proc / crypto " seharusnya menjadi "jawabannya." Halaman manual cryptsetup mengatakan ini:

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.

Namun, saya /proc/cryptotidak menyebutkan ular, atau xts (aes), jadi alih-alih saya sarankan melihat cryptsetup benchmarklaporan apa (dan itu akan menunjukkan kecepatan (ram) juga). Sebagai contoh:

$ 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

Hash adalah beberapa baris pertama (sha1, sha256, sha512, ripemd160, whirlpool). Ciphers berada di bawah tajuk Algoritma.

Melihat apa defaultnya memberikan ide bagus tentang apa yang dianggap "cukup bagus" juga:

$ 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

Dan menggunakan ukuran kunci yang lebih tinggi (dengan --key-size) seharusnya lebih kuat, jika sedikit lebih lambat.

   --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.
Xen2050
sumber
2
Itulah yang saya keluhkan ... / proc / crypto sangat tidak dapat dibaca dan karenanya tidak berguna. Beberapa cipher bahkan dua kali dalam daftar dan saya tidak tahu mengapa.
Akito
Ah, saya tidak yakin, tidak ada dalam pertanyaan, tapi itu pasti masalah, bahkan pencarian web tentang / proc / crypto tidak mengungkapkan panduan yang jelas. Saya memperhatikan beberapa perbedaan, dan saya pikir cryptsetup menggunakan cipher blok saja, untuk mengenkripsi blok disk, sehingga yang 'ketik: blkcipher' tampak logis. Tapi saya juga memperhatikan bahwa saya tidak menyebutkan ular, atau xts-aes ... tapi saya punya ide lain yang mungkin lebih baik, saya akan mengeditnya menjadi jawaban
Xen2050
2

mengacu pada karya pengguna notdavidcronenberg: Satu-satunya jawaban yang saya temukan adalah dalam dokumen LUKS Spesifikasi Format On-Disk (PDF).

Nama sandi yang valid

Mode sandi yang valid

  • ecb Output cipher digunakan secara langsung.
  • cbc-plainCipher dioperasikan dalam mode CBC. Rantai CBC dipotong setiap sektor, dan diinisialisasi ulang dengan nomor sektor sebagai vektor awal (dikonversi menjadi 32-bit dan menjadi little-endian). Mode ini ditentukan dalam [Fru05b], Bab 4.
  • cbc-essiv:{hash}Cipher dioperasikan dalam mode ESSIV menggunakan hash untuk menghasilkan kunci IV untuk kunci asli. Misalnya, ketika menggunakan sha256 sebagai hash, spec mode cipher adalah "cbcessiv: sha256". ESSIV ditentukan dalam [Fru05b], Bab 4.
  • xts-plain64 plain64 adalah versi 64-bit dari vektor awal biasa

Spesifikasi hash yang valid

opinion_no9
sumber
daftar ini tidak lengkap superuser.com/a/1450671/446140
intika