Bunu yazdığım anda geçerli olan 5.1 çekirdeği iki farklı formata sahiptir: for şifreleme dizesi, "eski" biçim ve "yeni" biçim. Şimdiye kadar bu sorudaki her şey ve görünüşe göre tüm dokümanlar da "eski" biçimiyle ilgileniyor, bu yüzden burada açıklayacağım. Bu sadece şifreleme içindir. Eğer dm-crypt ile bütünlük kullanılıyorsa, o zaman AEAD şifrelerini düşünmek gerekir ve daha da karmaşıklaşır.
Çekirdek tarafından ayrıştırılan biçim " şifre [ :
anahtar sayısı ] -
modu -
ivmode [ :
ivopts ]" şeklindedir. Örnekler: aes-xts-plain64
, blowfish-cbc-essiv:sha256
, aes:64-cbc-lmk
.
kodlamada
kullanımına şifre, örnekleridiraes
,anubis
,twofish
,arc4
, vb çekirdek dm-crypt sürücü şifrelerin bir listesini yoktur. Bu, Linux Kripto API'sına aktarılır, böylece çekirdek tarafından desteklenen herhangi bir uygun şifre kullanılabilir.
keycount
Şifre ile kullanılacak iki tuş sayısının isteğe bağlı gücü. Bu,lmk
ivmodehariç her şeyiçin varsayılan olarak 64'tür. Bu, yalnızca LMK için geçerlidir ve 1 dışındaki değerler diğer modlarla düzgün çalışmaz.
mod Şifreyle kullanılacak blok zincirleme modu. Örnek olarakecb
,cbc
,xts
. ecb
Hiçbir IV kullanmadığınıbilmek dışında, md-crypt sürücüsü bunu Linux Crypto API'sine geçirir ve çekirdek tarafından desteklenen herhangi bir zincirleme modunu kullanabilir.
ivmode Her sektör için başlatma vektörünü (IV) oluşturmak için kullanılan algoritma. Tipik simetrik anahtar şifrelemesinde, dm-crypt'in aksine, IV şifreleme veya şifre çözme sırasında anahtarla birlikte şifreye geçirilen başka bir veri parçasıdır. Tüm operasyon için sadece bir IV geçti. Dm-crypt'in her sektörü ayrı ayrı okuyabilmesi ve yazabilmesi gerektiğinden, tüm diski tek bir işlem olarak şifrelemez. Bunun yerine, her sektör için bir IV vardır. IV'ü veri olarak iletmek yerine, IV'leri oluşturmak için bir algoritma burada belirtilir. IV nesil şifre tarafından yapılmadığından ve izin verilen ivmode değerleri dm-crypt sürücüsü olarak tanımlandığından bu, Linux Kripto API'sının bir parçası değildir. Onlar:
plain
, plain64
, plain64be
, benbi
Bunlar basitçe IV olarak, çeşitli biçimlerde, sektör numarası kullanın. Basit ve öngörülebilir bir IV kullanırken filigran gibi saldırılara karşı koymak için tasarlanmış XTS gibi blok modları içindir. plain64
en çok tavsiye edilen gibi görünüyor.
null
IV her zaman sıfırdır. Test ve geriye dönük uyumluluk için bunu kullanmamalısınız.
lmk
Loop-AES şifreleme şeması ile uyumludur.
tcw
TrueCrypt ile uyumludur.
essiv
Anahtar karmasıyla şifrelenmiş sektör numarasını kullanır. Basit bir IV benzeri kullanırken çeşitli saldırılara karşı dirençli olmayan CBC gibi modlar içindir plain64
.
ivopts Diğer modlar için yok sayılanessiv
ivmode ile kullanılacak karma.
Özel bir durum, "Farklı şifre-plain
" veya sadece " şifre " "olarak yorumlanır şifre-cbc-plain
". Başka bir özel durum, ecb
modun belirtilecek ivmode olmamasıdır.
Bunun önemi /proc/crypto
Bununla ilgili olarak /proc/crypto
, sadece şifre ve mod önemlidir. dm-crypt ile " mode (
cipher)
" biçiminde bir Crypto API belirtimi oluşturun ve bunu çekirdekten isteyin. Bu, bir bakmak gereken budur /proc/crypto
olarak name
bir için skcipher
. Misal:
name : xts(aes)
driver : xts-aes-aesni
module : kernel
priority : 401
refcnt : 1
selftest : passed
internal : no
type : skcipher
async : yes
blocksize : 16
min keysize : 32
max keysize : 64
ivsize : 16
chunksize : 16
walksize : 16
type
Arasında skcipher
bu bir simetrik anahtar şifreleme ne dm-crypt kullanımları ve adını gösterir xts(aes)
yazılı olacağını aes-xts
dm-crypt ile belirtildiğinde. keysize
Bu şifre ile kullanılabilecek anahtar hangi boyuttaki alanları da bize.
Bu bir modüldeyse, modül adı module
satırda görünebilir . Bununla birlikte, birçok şifre (genellikle donanıma özel bir kodu olmayan yazılımlarda olanlar), son kodlayıcıyı üretmek için genel blok zincirleme kodu ile birleştirilen genel bir şifre olarak uygulanır. Örneğin:
name : xts(anubis)
driver : xts(ecb(anubis-generic))
module : kernel
type : skcipher
name : anubis
driver : anubis-generic
module : anubis
type : cipher
Bu durumda, anubis şifresi, xts(anbuis)
bir modülü atanmış olan nihai şifreyi üretmek için çekirdek XTS blok zincirleme modu koduyla birleştirilir kernel
. Ancak bunu elde etmek için anubis
modülden gelen genel anubis şifresine ihtiyacımız var . Çoğu şifre, bunları yüklemek için kullanılabilecek " crypto-
şifre " modül takma adına sahiptir , örneğin modprobe crypto-anubis
anubis şifresini sağlayan modülü yükler.
cryptsetup benchmark
Komutu kullanırken , sadece şifre ve mod önemlidir, çünkü karşılaştırılan her şey budur. Eğer mod CBC belirtilmezse varsayılan değildir. İvmode tamamen göz ardı edilir. Böylece, benchmarking için, aes
, aes-cbc
, ve aes-cbc-foobar
tüm eşdeğerdir.
/lib/modules/*/kernel/crypto/
bakmak olası bir yerdir, ancak modüller dosya sisteminin herhangi bir yerinde olabilir.