Evet, birim şifresi çözülürken ana tuşa erişerek bunu yapabilirsiniz.
Yeni bir parola eklemek için hızlı ve kirli:
device=/dev/sda5
volume_name=foo
cryptsetup luksAddKey $device --master-key-file <(dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p)
device
ve volume_name
uygun şekilde ayarlanması gerekir.
volume_name
şifresi çözülmüş birimin adıdır, içinde gördüğünüz /dev/mapper
.
Açıklama:
LUKS birimleri, verilerini bir ana anahtarla şifreler. Eklediğiniz her parola basitçe bu parola ile şifrelenmiş bu ana anahtarın bir kopyasını saklar. Dolayısıyla, ana anahtarınız varsa, basitçe yeni bir anahtar yuvasında kullanmanız gerekir.
Yukarıdaki komutu parçalayalım.
$ dmsetup table --showkeys $volume_name
Bu, aktif olarak deşifre edilen cilt hacmi hakkında bir sürü bilgiyi boşa harcar. Çıktı şöyle görünür:
0 200704 crypt aes-xts-plain64 53bb7da1f26e2a032cc9e70d6162980440bd69bb31cb64d2a4012362eeaad0ac 0 7:2 4096
Alan # 5, ana anahtardır.
$ dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p
Bunun çıktısını ikili veri olarak göstermeyecek, ancak bunun yaptığı şey birim için ana anahtarı kapmak ve daha sonra ihtiyaç duyulan ham ikili verilere dönüştürmektir.
$ cryptsetup luksAddKey $device --master-key-file <(...)
Bu cryptsetup birimine yeni bir anahtar eklemek için söylüyor. Normalde bu işlem mevcut bir anahtar gerektirir, ancak --master-key-file
bunun yerine ana anahtarı kullanmak istediğimizi söylemek için kullanırız. Kabuk komut ikamesi yönlendirilişi. Temel olarak içindeki her şeyi yürütür, çıktıyı bir boruya gönderir ve sonra bu boruya giden yolu değiştirir.
<(...)
<(...)
Yani tüm komut, birkaç işlemi yoğunlaştırmak için yalnızca tek bir astardır.