Saya menggunakan sistem berbasis Ubuntu, dan saya mengalami kesulitan menentukan cipher dan mode cipher apa yang tersedia untuk saya.
Halaman manual cryptsetup mengatakan:
"Lihat / proc / crypto untuk daftar opsi yang tersedia. Anda mungkin perlu memuat modul crypto kernel tambahan untuk mendapatkan lebih banyak opsi."
/ Proc / crypto saya memiliki sangat sedikit di dalamnya. Bagaimana saya mengetahui modul crypto kernel tambahan apa yang tersedia untuk saya muat?
/lib/modules/*/kernel/crypto/
mungkin tempat untuk melihat, tetapi modul dapat di mana saja di sistem file./proc/crypto
bagus, tetapi tidak mencantumkan string cipher yang valid; hal-hal sepertiaes-xts-plain64
atauaes-cbc-essiv:sha256
. Jawaban yang bagus akan memberikan informasi itu dan menunjukkan modul mana dari yang/lib/modules...
perlu dimuat untuk menggunakannya./proc/crypto
. Itu tidak masuk akal.Jawaban:
Ada banyak, banyak dokumen dan halaman manual untuk dibaca, tetapi satu dokumen yang mungkin menarik bagi Anda adalah Spesifikasi Format On-Disk LUKS (PDF).
Lampiran B (yang, secara alami, mendekati akhir) mengatakan,
Catatan Editor: Di atas disalin dari spesifikasi. Setelah penulisan, URL dokumen-dokumen ini telah berubah:
sumber
Anda dapat membuat daftar cipher yang didukung oleh kernel Anda dengan perintah berikut,
Anda dapat membuat daftar cipher dan hash yang dapat Anda gunakan dan perbandingan I / O mereka dengan
luks
oleh perintah berikut,Anda dapat membandingkan sandi tertentu dengan perintah berikut,
sumber
Kernel 5.1, saat ini pada saat saya menulis ini, memiliki dua format berbeda untuk string cipher, format "lama" dan format "baru". Segala sesuatu dalam pertanyaan ini sejauh ini, dan tampaknya semua dokumen juga, berkaitan dengan format "lama", jadi saya akan jelaskan di sini. Ini hanya untuk enkripsi. Jika menggunakan integritas dengan dm-crypt, maka seseorang harus mempertimbangkan cipher AEAD dan itu menjadi semakin rumit.
Format yang diuraikan oleh kernel adalah " cipher [
:
keycount ]-
mode-
ivmode [:
ivopts ]". Contoh:aes-xts-plain64
,blowfish-cbc-essiv:sha256
,aes:64-cbc-lmk
.cipher cipher The penggunaan, contoh adalah
aes
,anubis
,twofish
,arc4
, dll kernel pengemudi dm-crypt tidak memiliki daftar cipher. Ini diteruskan ke Linux Crypto API, sehingga cipher yang cocok yang didukung oleh kernel dapat digunakan.keycount Kekuatan opsional dua tombol untuk digunakan dengan sandi. Ini default ke 1 untuk semuanya kecuali
lmk
ivmode, di mana defaultnya ke 64. Ini benar-benar hanya berlaku untuk LMK dan nilai selain 1 tidak akan bekerja dengan baik dengan mode lain.mode Blok chaining mode untuk digunakan dengan cipher. Contohnya adalah
ecb
,cbc
,xts
. Selain mengetahui bahwaecb
tidak menggunakan IV, driver md-crypt melewati ini ke Linux Crypto API dan dapat menggunakan mode chaining yang didukung oleh kernel.ivmode Algoritma yang digunakan untuk menghasilkan vektor inisialisasi (IV) untuk setiap sektor. Dalam enkripsi kunci simetris tipikal, tidak seperti dm-crypt, IV adalah data lain yang dikirimkan ke dalam cipher bersama dengan kunci ketika mengenkripsi atau mendekripsi. Hanya ada satu IV yang diteruskan untuk seluruh operasi. Karena dm-crypt perlu dapat membaca dan menulis masing-masing sektor secara individual, ia tidak mengenkripsi seluruh disk sebagai operasi tunggal. Sebaliknya, ada IV untuk setiap sektor. Daripada meneruskan IV sebagai data, algoritma untuk membuat IV ditentukan di sini. Ini bukan bagian dari Linux Crypto API, karena generasi IV tidak dilakukan oleh cipher, dannilai-nilai ivmode yang diizinkandidefinisikan sebagai driver dm-crypt. Mereka:
plain
,plain64
,plain64be
,benbi
Ini hanya menggunakan jumlah sektor, dalam berbagai format, seperti IV. Dimaksudkan untuk mode blok seperti XTS yang dirancang untuk menahan serangan seperti watermarking saat menggunakan IV yang sederhana dan dapat diprediksi.plain64
tampaknya paling direkomendasikan.null
IV selalu nol. Untuk pengujian dan kompatibilitas mundur, Anda tidak harus menggunakan ini.lmk
Kompatibel dengan skema enkripsi Loop-AES.tcw
Kompatibel dengan TrueCrypt.essiv
Menggunakan nomor sektor yang dienkripsi dengan hash kunci. Dimaksudkan untuk mode, seperti CBC, yang tidak tahan terhadap berbagai serangan ketika menggunakan IV sederhanaplain64
.ivopts Hash untuk digunakan dengan
essiv
ivmode , diabaikan untuk semua mode lainnya.Sebagai kasus khusus, " sandi
-plain
" atau hanya " sandi " ditafsirkan sebagai " sandi-cbc-plain
". Kasus khusus lain adalah bahwaecb
mode tidak memiliki ivmode untuk ditentukan.Bagaimana ini berhubungan dengan
/proc/crypto
Sehubungan dengan itu
/proc/crypto
, hanya cipher dan mode yang relevan. dm-crypt dengan membangun spesifikasi API Crypto dari bentuk " mode(
cipher)
" dan meminta ini dari kernel. Ini adalah apa yang harus dicari/proc/crypto
sebagainame
untuk askcipher
. Contoh:The
type
dariskcipher
menunjukkan ini cipher simetrik key, apa kegunaan dm-crypt, dan namaxts(aes)
akan ditulisaes-xts
ketika ditentukan dengan dm-crypt. Kolomkeysize
juga memberi tahu kami ukuran kunci apa yang dapat digunakan dengan sandi ini.Jika ini dari modul, nama modul mungkin muncul di
module
baris. Namun, banyak cipher (biasanya dalam perangkat lunak yang tidak memiliki kode spesifik perangkat keras) diimplementasikan sebagai cipher generik yang dikombinasikan dengan kode rantai blok generik untuk menghasilkan skcipher akhir. Sebagai contoh:Dalam hal ini cipher anubis dikombinasikan dengan kode mode rantai blok XTS kernel untuk menghasilkan cipher terakhir
xts(anbuis)
, yang telah diberi modulkernel
. Tetapi untuk mendapatkan ini tersedia kita perlu cipher anubis generik, yang berasal darianubis
modul. Kebanyakan cipher memiliki alias modul "crypto-
cipher " yang dapat digunakan untuk memuatnya, misalnyamodprobe crypto-anubis
akan memuat modul yang menyediakan cipher anubis.Saat menggunakan
cryptsetup benchmark
perintah, hanya cipher dan mode yang penting, karena hanya itu yang ditentukan. Jika mode tidak ditentukan, standarnya adalah CBC. The ivmode benar-benar diabaikan. Dengan demikian, untuk benchmarking,aes
,aes-cbc
, danaes-cbc-foobar
semua setara.sumber