FDE için iki faktörlü kullanmak için GnuPG ile dm-crypt (LUKS) nasıl kullanılır?


9

Ubuntu ile tam disk şifreleme kullanırken (homedir şifrelemenin aksine), birimi şifrelemek için LUKS ile dm-crypt kullanılır. Yükleyicide (en az 12.04 alternatif olarak) bir parola veya anahtar dosyası kullanarak kurulum arasında seçim yapabilirsiniz . İkisinin bir kombinasyonunu kullanmak istiyorum; ikisini de değil, her ikisini de gerektirir.

Neden? Çünkü bu güvenliği arttırır (iki faktörlü); Eğer gerekir sahip bir şey ve gerek biliyorum kilidini bir şey. Sonra anahtar dosyasını küçük bir çıkarılabilir depolama aygıtına (USB flash sürücü) koymak ve yalnızca önyükleme sırasında takmak istiyorum. Sonuç , kök bölümünün kilidini açmak için doğru flash sürücüye yerleştirilmesi ve doğru parolayı girmesi gerektiğidir .

Başka bir deyişle, önyükleme sırasında harici bir sürücüdeki anahtar dosyasının şifrelenmiş olduğu parolayı sormak istiyorum.

Bunu /usr/share/initramfs-tools/hooks/cryptgnupgbaşarmaya yardımcı olabilecek bir yardımcı betik görüyorum , ancak nasıl kullanılacağına dair hiçbir fikrim yok.

Sadece karışıklığı önlemek için: Ben am değil bir biçimde eklemek için soran ek kilidini açmak için hacmine anahtarı.


Dokümanı okuyarak cevabın bir kısmını kendim buldum . Bunu nasıl kullanacağınızı okuyun /usr/share/doc/cryptsetup/README.gnupg. Harici ortamdan bir anahtar dosyası kullanmasını sağlamak için değiştirmeye biraz zaman bulmaya çalışacağım.
gertvdijk

Yanıtlar:


5

Aynı şeyi yapıyorum, ancak korkarım cevabım tatmin edici olmayacak, çünkü çeşitli nedenlerden dolayı tamamen özel bir Initramfs ile gittim .

Bunun yerine GnuPG, Initramfs'e dahil edilmesi gereken ekstra bir ikili (ve GnuPG-2oldukça karmaşık bir durumda), zaten orada olanı kullandım. Ve bu açıkça dm-crypt/LUKS.

Diyelim ki bir tane var keyfile. Tercihen rastgele verilerle.

# dd if=/dev/urandom of=keyfile count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000189802 s, 2.7 MB/s

LUKS ile şifreleme ekleyin (seçtiğiniz şifre ayarlarınızı eklemekten çekinmeyin).

# truncate -s 2M keyfile.luks
# cryptsetup luksFormat keyfile --header keyfile.luks

WARNING!
========
This will overwrite data on keyfile.luks irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: bananas
Verify passphrase: bananas

Şimdi bir keyfile (512 bayt) ve keyfile.luks (2MB, bazı nedenlerden dolayı 192k LUKS üstbilgisini yazmanız gerekiyor). Initramfs yine de sıkıştırılacağından, bu çok kötü değil (hala daha küçük GnuPG).

Şimdi anahtar dosyasının şifresini çözebilirsiniz:

# cryptsetup luksOpen keyfile --header keyfile.luks lukskey
Enter passphrase for keyfile: bananas

Ve içinde 512 bayt rasgele veri var /dev/mapper/lukskey. (Değiştirmek isterseniz ona yazabilirsiniz, böylece dosyayı daha önce sıfırlarla başlatabilirdik.)

# blockdev --getsize64 /dev/mapper/lukskey
512

Daha sonra Initramfs init ile gerçek LUKS birimini onunla açmaya devam edebilirsiniz (önce anahtarı eklediğiniz varsayılarak).

cryptsetup --key-file=/dev/mapper/lukskey luksOpen /dev/yourdisk luksyourdisk
cryptsetup luksClose lukskey # clean up

Bu yaklaşım GnuPG'yi tamamen gereksiz hale getirir, ayrıca anahtar için çoklu parolalar, seçtiğiniz şifre, vb. Gibi tüm LUKS avantajlarını elde edersiniz. Birden çok yeniden deneme ile güzel (çoğunlukla düzenli) bir şifre isteminden bahsetmiyorum.


2
Harika bir çözüm, ancak bunu tam olarak initramfsime nasıl entegre edebilirim? Tamamen özel bir initramfs kullandığınızı söylüyorsunuz, ancak bu sadece bir kanca kullanarak mümkün olmaz mı?
gertvdijk

Kesinlikle. Belki de bir kanca olmadan bile bir şekilde önce anahtarı bulmak ve açmak için crypttab zorlamak için bir yol düşünebilirsiniz. Örneğin, bir dosya olması gerekmez, USB çubuğunda bunun için ayrı bir bölüm oluşturabilirsiniz. Ancak bu şekilde yapmadığım için bunun için somut bir cevap
veremem

1
Hiç sorun değil - GnuPG'yi atlatmak ve LUKS'u tekrar kullanmak kesinlikle üstün bir seçenektir. GnuPG yaklaşımı için kancaları yeniden yazmam gerekirse, yine de kullanmadan yeniden yazsam iyi olur. Ve evet, bunun bir dosya olması gerekmediğinin farkındayım.
gertvdijk

@gertvdijk Eğer bunu devam
ettirirseniz
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.