it-swarm-id.com

Untuk LUKS: Cipher yang paling disukai dan paling aman?

Saya akan mengenkripsi dua hard drive saya menggunakan LUKS, karena saya tidak bisa melakukannya sendiri, saya menggunakan panduan di Arch Linux wiki (dapat ditemukan di sini) . Dalam contoh dalam panduan, sandi yang ditentukan adalah aes-xts-plain dengan ukuran kunci 512-bit. Adalah aes-xts-plain pilihan terbaik atau adakah cipher yang lebih baik untuk digunakan? Saya lebih suka keamanan daripada kecepatan.

22
Peter

Ada tiga komponen yang perlu Anda pahami dalam setiap penggunaan blok cipher dan mereka berlaku secara eksplisit di sini:

  • Blok cipher primitif. Ini bisa menjadi salah satu dari Anda, calon sandi AES akrab seperti, baik, AES, Ular, Twofish, Blowfish, ...
  • Mode operasi. Menggunakan cipher blok apa adanya, blok demi blok disebut buku kode elektronik, tetapi ada mode lain seperti rantai blok cipher dan mode counter, dengan berbagai kelebihan dan kekurangannya.
  • Skema pembuatan vektor inisialisasi, seperti essiv yang memerangi berbagai teknik sidik jari yang tersedia untuk penyerang terhadap CBC yang digunakan untuk enkripsi disk.

Jadi, ketika Anda memilih opsi, mis. aes-cbc-essiv, Anda sebenarnya meminta AES, digunakan dalam mode CBC dengan IV terenkripsi berdasarkan beberapa pengidentifikasi per-blok, sedangkan aes-xts-plain menggunakan AES dalam mode XTS dengan infus lama polos yang dihasilkan dari beberapa informasi per-blok.

Itu bermuara pada apakah Anda percaya bahwa XTS memiliki ketahanan yang cukup terhadap pemutihan (yang memerangi ESSIV) dimasukkan ke mode enkripsi. Pada tahap ini, XTS adalah mode yang lebih modern dengan keunggulan teknis yang lebih banyak, tetapi telah mengalami lebih sedikit pengujian kriptografi daripada CBC.

Satu hal yang perlu diperhatikan dengan XTS, dari wikipedia:

Karena pemisahan, pengguna yang menginginkan enkripsi AES 256 dan AES 128 perlu memilih ukuran kunci masing-masing 512 bit dan 256 bit.

Perawatan harus dipilih menghasilkan ukuran kunci dengan mode ini sehingga setiap blok menggunakan kunci dari ukuran bit yang diinginkan. Saya belum melihat informasi LUKS untuk melihat bagaimana, atau cryptsetup, membagi kuncinya; ini mungkin sesuatu yang ingin Anda lakukan untuk memastikan Anda memiliki tingkat keamanan yang benar yang Anda inginkan. Dengan demikian, mengikuti panduan Anda, enkripsi 256-bit telah digunakan per blok (dengan kunci 512 dibagi menjadi dua bagian).

16
user2213

Seperti yang disebutkan pada posting asli Anda di SU, untuk sebagian besar tujuan, tingkat keamanan yang diperlukan harus cukup sehingga penyerang tidak memiliki peluang yang masuk akal untuk mematahkannya dalam kerangka waktu yang berguna (misalnya untuk data pribadi Anda, Anda mungkin ingin itu menjadi 10 rentang tahun).

Jadi, dalam contoh ini dengan asumsi Anda tidak memiliki rahasia nasional atau data perusahaan yang sensitif pada PC Anda, AES-XTS-PLAIN diharapkan tahan untuk jangka waktu yang wajar terhadap penyerang.

8
Rory Alsop

Sandi yang paling disukai adalah aes-xts-plain64 dan ini digunakan distro lebar (RedHat, CentOS, Oracle Linux, Ubuntu) secara default. Sebagian besar orang menggunakan aes karena banyak alat, aplikasi yang mendukungnya, dan kinerja aes dapat dipercepat pada Prosesor Intel . Dan fitur akselerasi semacam ini memberi aes banyak keuntungan pada cipher lainnya. Anda dapat membaca perbandingan kinerja antara simple implementation of aes vs hardware accelerated aesdi sini . Dan satu hal yang disebutkan, jika Anda menggunakan aes ada keuntungan lain yang banyak digunakan sehingga jika ada serangan yang tersedia di internet Anda akan mengetahuinya dengan cepat dan Anda mungkin akan mendapatkan pembaruan dengan cepat. Dan ada beberapa serangan pasif yang tersedia pada implementasi aes sebagai enkripsi disk yang dapat Anda baca dari di sini

Tetapi pilihan Anda bisa berbeda. Dan ketika memilih cipher Anda hanya perlu memastikan bahwa cipher yang Anda pilih belum dikompromikan. Anda dapat memeriksanya dari di sini . Ada cipher yang serupa lainnya yang tersedia yang tidak efisien (dari perspektif i/o) seperti aes tetapi alternatif yang baik. Jika Anda tidak berencana untuk menggunakan aes maka ada dua penerus aes yang aman daripadaaes adalah Anubis = dan lar karena Anda dapat mengorbankan kecepatan untuk keamanan. Untungnya, Anda dapat menggunakannya di luks. Dan jika Anda ingin melindungi rahasia negara daripada aes sudah cukup saya kira aes lebih disukai di FISMA dan NIST-Special-Publication-800-53- Revisi-4 .

Dengan algoritma enkripsi, Anda harus serius tentang algoritma hashing menurut saya. Jika Anda menggunakan hash yang lemah daripada algoritma super aman Anda tidak akan banyak membantu Anda. Karena hashing memainkan peranan penting dalam proses enkripsi luks. Jadi Anda tidak boleh menggunakan sha1 tetapi sha512 cukup aman. Tetapi Anda juga dapat menggunakan whirepool atau pemenang kompetisi hashing kata sandi terbaru argon2i .

Dari jawaban saya yang lain tentang luks,

Anda dapat membuat daftar cipher yang didukung oleh kernel Anda dengan perintah berikut,

[[email protected]]# ls /lib/modules/$(uname -r)/kernel/crypto/
algif_rng.ko.xz   blowfish_common.ko.xz   cmac.ko.xz               cts.ko.xz          gf128mul.ko.xz           michael_mic.ko.xz  rsa_generic.ko.xz      tgr192.ko.xz           xts.ko.xz
ansi_cprng.ko.xz  blowfish_generic.ko.xz  crc32_generic.ko.xz      deflate.ko.xz      ghash-generic.ko.xz      pcbc.ko.xz         salsa20_generic.ko.xz  twofish_common.ko.xz   zlib.ko.xz
anubis.ko.xz      camellia_generic.ko.xz  crct10dif_common.ko.xz   des_generic.ko.xz  jitterentropy_rng.ko.xz  pcrypt.ko.xz       seed.ko.xz             twofish_generic.ko.xz
arc4.ko.xz        cast5_generic.ko.xz     crct10dif_generic.ko.xz  dh_generic.ko.xz   khazad.ko.xz             rmd128.ko.xz       serpent_generic.ko.xz  vmac.ko.xz
async_tx          cast6_generic.ko.xz     cryptd.ko.xz             drbg.ko.xz         lrw.ko.xz                rmd160.ko.xz       sha512_generic.ko.xz   wp512.ko.xz
authencesn.ko.xz  cast_common.ko.xz       crypto_null.ko.xz        fcrypt.ko.xz       mcryptd.ko.xz            rmd256.ko.xz       tcrypt.ko.xz           xcbc.ko.xz
authenc.ko.xz     ccm.ko.xz               crypto_user.ko.xz        gcm.ko.xz          md4.ko.xz                rmd320.ko.xz       tea.ko.xz              xor.ko.xz

Anda dapat membuat daftar cipher dan hash yang dapat Anda gunakan dan perbandingan I/O-nya sebesar luks dengan perintah berikut,

[[email protected] arif]# cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1       289342 iterations per second for 256-bit key
PBKDF2-sha256     353293 iterations per second for 256-bit key
PBKDF2-sha512     227555 iterations per second for 256-bit key
PBKDF2-ripemd160  233224 iterations per second for 256-bit key
PBKDF2-whirlpool  236165 iterations per second for 256-bit key
argon2i       4 iterations, 917485 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
argon2id      4 iterations, 951672 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
#     Algorithm |       Key |      Encryption |      Decryption
        aes-cbc        128b       642.2 MiB/s      2495.8 MiB/s
    serpent-cbc        128b        89.3 MiB/s       542.6 MiB/s
    twofish-cbc        128b       100.4 MiB/s       343.1 MiB/s
        aes-cbc        256b       477.2 MiB/s      1979.2 MiB/s
    serpent-cbc        256b        89.3 MiB/s       538.9 MiB/s
    twofish-cbc        256b       173.3 MiB/s       343.1 MiB/s
        aes-xts        256b      1668.0 MiB/s      1664.1 MiB/s
    serpent-xts        256b       535.7 MiB/s       523.4 MiB/s
    twofish-xts        256b       332.6 MiB/s       339.8 MiB/s
        aes-xts        512b      1384.5 MiB/s      1380.7 MiB/s
    serpent-xts        512b       539.3 MiB/s       524.4 MiB/s
    twofish-xts        512b       335.0 MiB/s       340.1 MiB/s

Anda dapat membandingkan sandi tertentu dengan perintah berikut,

[[email protected]]# ciphers="aes-xts serpent-xts anubis-xts"

[[email protected]]# echo "#     Algorithm |       Key |      Encryption |      Decryption";for i in $ciphers ; do cryptsetup benchmark --cipher $i|tail -n 1; done

#     Algorithm |       Key |      Encryption |      Decryption
        aes-xts        256b      1613.9 MiB/s      1642.8 MiB/s
    serpent-xts        256b       538.9 MiB/s       521.9 MiB/s
     anubis-xts        256b       182.0 MiB/s       182.1 MiB/s

4
Muhammad