Bir LUKS dosya sisteminde şifreyi bilmeden şifreyi değiştirin


30

Şifrelenmiş bir sürücüyle bir süredir çalışan bir Debian Wheezy sunucum var. /dev/sda5Şifrelenmiş parola dosyam bozulmuşsa , şifreli sürücünün ( ) şifresi kayboldu.

Bu sunucuyu yeniden başlatabilmek isterdim, ama bu elbette bu şifreyi gerektirecek. Sürücü açık bir şekilde şifrelenmiş durumda olduğundan, eskisini bilmeden şifreyi değiştirmenin bir yolu var mı?

cryptsetup luksChangeKey /dev/sda5 Birimin şifresini gerektirir.

Elbette rsyncher şeyi koparabilir ve yeniden yapabilirdim, ama bundan kaçınmak istiyorum. Hafızaya baktım ( #cat /dev/mem | less), ama bulamadım (bu çok iyi bir şey!).


2
Hmmmm .... Parola olmadan erişebilmenin kolay olsaydı, şifreli bir dosya sistemine sahip olmanın amacı ne olurdu.
mdpc

7
@mdpc: Quip'in bir anlamı yok. O vardır diye, çünkü dosya sistemine erişimi vardı sunucu son önyükleme işlemi şifresini.
G-Man,

2
Sırf şifreyi HAD çünkü (ve bozulmuş) yorumumu geçersiz kılmaz. Genel olarak, herhangi bir şifreli malzeme şifresini unutursanız, sonsuza dek kaybolması gerekir, aksi takdirde ilk önce onu şifrelemenin amacı neydi?
mdpc

3
@mdpc Şimdiki zaman, dosya sistemine şu an erişebiliyor.
Patrick

Süper Kullanıcı üzerinde aynı soru: Kayıp LUKS şifresi, şifreli bölüm açık (cevaplanmadı).
G-Man

Yanıtlar:


40

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)

deviceve volume_nameuygun ş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-filebunun 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.


Yanlış bir şey yapıp yapmadığımdan emin değilim, ancak LUKS'um örnekte gösterdiğiniz gibi bir dize göstermiyor. Kısa 9 rakamlı küçük bir rakam. Ayrıca mayın "doğrusal 8: 3" olarak gösteriyor.
slm

@slm Gösteriliyorsa linear, bu açık bir LUKS birimi değil ( volume_nameverilen komutta yanlış değer ). Açık bir LUKS birimi crypt3. alanda olacaktır. Olarak cryptsetup luksOpen /dev/foo bar, volume_namedeğer olacaktır bar.
Patrick,

Şimdi anladım. Altında hacim var /dev/mapperadlandırılmış luks-...... Bu, LVM eşlemeli mantıksal birim değil, kullanmanız gereken birimdir.
slm

1
Son dmsetup sürümleri ile formatı dmsetup tabledeğişmiş görünüyor. En azından benim için ana anahtar sütununda gösterilir $6.
Karol Babioch

@KarolBabioch muhtemelen cilt adını belirtmediniz mi?
frostschutz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.