GPG anahtarları birden fazla sistemde nasıl yönetilir?


103

GnuPG'yi kullanmaya ve onu en iyi kullanmanın yolunu anlamaya çalışıyorum. Teknik olmayan insanlar için GPG / PGP'nin açıklamasını açıkladı, Kısa, gözden geçirdim ? Ancak çoğu kılavuz PGP'yi tek bir makine perspektifiyle açıklar.

GnuPG'yi üç bilgisayar aygıtında kullanmak istiyorum: bir Linux PC, Linux dizüstü bilgisayar ve Android telefon.

Temel kullanım durumu, bir IMAP servisi tarafından yönetilen e-postayı şifrelemek / şifresini çözmektir, bu nedenle tüm cihazların şifresini çözmek için aynı özel anahtara ihtiyaçları vardır.

Sanırım seçimlerim:

  1. Tüm anahtarlarımı her bir cihazdaki anahtarlığa kopyalayın ve koruma için esas olarak özel anahtar şifrenizi kullanın.

  2. Kimliğimi temsil etmek için bir ana anahtar (--gen anahtarıyla) oluşturun, ardından e-postaları şifrelemek / şifresini çözmek ve ana anahtarla imzalamak için ayrı bir tek kullanımlık anahtar oluşturun (tekrar - gen tuşuyla). Eski sadece benim bilgisayarımda bulunur, ikincisi her cihaza dağıtılır. Mobil aygıtlarım tehlikeye girmediği sürece tek kullanımlık anahtar geçerli kalır.

Aşırı paranoyak olabilir ve bunu olması gerekenden daha karmaşık hale getirebilirim, ama lütfen mizah edin. Bütün yumurtalarını bir sepete koymadığına inanıyorum.

Ana anahtarın dijital kimliğim olması gerekiyordu. Bu kimliğin etrafında güven inşa etmek için çok çaba sarf edilecek ve anahtarımı dikkatsizlikten kaybetmektense paranoyamın sıkıntısı çekmeyi tercih ediyorum ve yeni bir ana anahtar etrafında güven inşa etmek zorunda kalıyorum (belki de bu benim kadar kötü değil) düşünüyorum, ama bunun için yeniyim) .

Dizüstü bilgisayarımı veya telefonumu bilgisayarımdan daha çok kaybedeceğim. Eğer kayıp == uzlaşırsa, o zaman ana anahtar çiftimden ziyade tek kullanımlık bir anahtar çiftini (iptal edebilirim) kaybederim. Master anahtarımın güvenini her zaman yeni bir tek kullanımlık anahtar için verebilirim.

Gerçekten uzun soru için özür dilerim. :-)

TL; DR

Ana özel anahtarımı birden fazla cihazda depolamak için bir parola yeterli bir koruma mı?

Seçenek 2 için planım uygulanabilir mi? Yanlış bir şey mi buldum yoksa düzeltilebilir mi?

Seçenek # 2 kötü bir fikir ise, birden fazla cihazda tek bir kullanıcı için GnuPG kullanırken en iyi yöntemler nelerdir?

Yanıtlar:


59

Bu biraz utanç verici. Bir hafta boyunca bu sorunu çözmeye çalışmak için saatler harcadım ve cevap, GnuPG kılavuzunun ve SSS'nin üzerine yazdığı bir konu olan alt anahtarlarla yatıyor gibi görünüyor.

Alt-anahtarların ne olduğunu ve neden --gen-key yerine kullanılabileceğini araştırırken, bu taşa rastladım: http://wiki.debian.org/subkeys .

Debian'ın wiki'si, alt anahtarlarla bir ana anahtar kullanarak # 2 seçeneğinin (OP'ye bakınız) nasıl uygulanacağını ve ayrıca ana anahtarın bir yedekleme ortamına (örneğin bir flash sürücü) depoladıktan sonra herhangi bir sistemden nasıl çıkarılacağını açıklar. Alt anahtarlar daha sonra her cihazdaki anahtarlıklarıma dağıtılabilir.

Artıları:

  1. Ana anahtarı korumak için çoğunlukla şifreye dayanmaz,

  2. Herhangi bir sistemde tehlike varsa, ana anahtar hemen kullanılamaz (flash sürücümü takılı halde bırakmadığım ya da söz konusu sürücüyü tehlikeye atanmış bir sisteme takmadığım sürece),

  3. Bu, Debian geliştirme ekibi tarafından uygulanan bir uygulamadır.

  4. GnuPG'nin alt anahtar özelliğini kullanır. Anahtarlığınızda bir sürü gevşek anahtar bulunduğundan biraz daha organize görünüyor, tamam mı?

Debian Subkey Wiki'den ilgili bölüm

  1. Mevcut GnuPG dosyalarınızın yedeklerini alın ($ HOME / .gnupg). Onları güvende tut. Aşağıdaki adımlar sırasında bir şeyler ters giderse, bilinen iyi bir yere geri dönmek için buna ihtiyacınız olabilir. (not: umask 077, yedekleme için kısıtlayıcı izinlerle sonuçlanacaktır.)

    • umask 077; tar -cf $HOME/gnupg-backup.tar -C $HOME .gnupg
  2. İmzalamak için yeni bir alt anahtar oluşturun.

    • Anahtar kimliğinizi bulun: gpg --list-keys yourname
    • gpg --edit-key YOURMASTERKEYID
    • At gpg>isteminde:addkey
    • Bu, parolanızı sorar, yazın.
    • "RSA (yalnızca işaret)" anahtar türünü seçin.
    • 4096 (veya 2048) bit anahtar boyutunu seçmek akıllıca olacaktır.
    • Bir son kullanma tarihi seçin (alt anahtarlarınızı ana anahtarlardan daha sık döndürebilir veya ana anahtarın ömrü boyunca, son kullanma tarihi olmadan saklayabilirsiniz).
    • GnuPG (sonunda) bir anahtar yaratacaktır, ancak yeterli entropi elde etmesi için beklemeniz gerekebilir.
    • Anahtarı kaydedin: save
  3. Bunu tekrarlayabilir ve isterseniz "RSA (yalnızca şifrelemek)") alt anahtarını da oluşturabilirsiniz.

  4. Şimdi $HOME/.gnupgUSB sürücülerinize kopyalayın .

  5. İşte zor kısmı geliyor. Özel ana anahtarı çıkarmanız gerekir ve ne yazık ki GnuPG bunu yapmanın uygun bir yolunu sağlamıyor. Alt anahtarı dışa aktarmalı, özel anahtarı kaldırmalı ve alt anahtarı geri almalıyız.

    • Alt anahtarlarını verin: gpg --export-secret-subkeys YOURMASTERKEYID >secret-subkeys(ihraç her bir ünlem işareti ile izlenen alt anahtar kimliklerini belirtmek için hangi alt anahtarları seçmek için: gpg --export-secret-subkeys SUBKEYID! [SUBKEYID! ..])
    • Ana gizli anahtarınızı kaldırın: gpg --delete-secret-key YOURMASTERKEYID
    • Alt anahtarları geri alın: gpg --import secret-subkeys
    • Bunun sadece özel anahtarınız için yerine gpg -Kgösterildiğini doğrulayın . Bu, gizli anahtarın gerçekten orada olmadığı anlamına gelir. (Ayrıca çıktıda kukla bir OpenPGP paketinin varlığına da bakınız ).sec#secgpg --export-secret-key YOURMASTERKEYID | gpg --list-packets
    • İsteğe bağlı olarak, alt anahtarları koruyucu parolasını değiştirin: gpg --edit-key YOURMASTERKEYID passwd. (Özel ana anahtar da dahil olmak üzere, yedeklemedeki özel anahtar malzemesinin eski parola ile korunacağını unutmayın.)

Bilgisayarınız normal kullanım için hazır.

Ana tuşları kullanmanız gerektiğinde, şifreli USB sürücüyü takın ve GNUPGHOME ortam değişkenini ayarlayın:

export GNUPGHOME=/media/something
gpg -K

veya --home komut satırı argümanını kullanın:

gpg --home=/media/something -K

İkinci komut şimdi özel anahtarınızı secve ile listelemelidir sec#.

Makine Başına Birden Çok Alt Anahtar - Tüm Makineler İçin Tek Bir Alt Anahtar

Debian alt anahtarı wiki'den alıntı. Başlangıçta yorumlarda belirtti. [Paraphrasing] ve vurgu benim.

Biri makine başına bir alt anahtara sahip olmak için cazip hale getirilebilir, böylece yalnızca o makinenin potansiyel olarak tehlikeye girmiş alt anahtarını değiştirmeniz gerekir. Tüm makinelerde kullanılan tek bir alt anahtar olması durumunda, tüm makinelerde değiştirilmeleri gerekir (bu tek alt anahtarın tehlikeye girdiğinden şüpheleniliyorsa).

Ancak bu yalnızca alt anahtarları imzalamak için çalışır . Birden fazla şifreleme alt anahtarınız varsa, gpg’nin yalnızca en son şifreleme alt anahtarı için şifreleyeceği ve bilinen ve iptal edilmeyen şifreleme alt anahtarlarının tümü için şifrelemediği söylenir .


5
İyi soru-cevap, ancak AFAIK bu kurulumda hala bir sorun var ... İmzalamak için harika, ancak aynı enc anahtarını farklı cihazlarınız arasında paylaşmak istemiyorsanız şifreleme için değil, çünkü biri sizi şifreli bir alıcı yaparsa mesaj, gpg varsayılan olarak üretilen en son iptal edilmemiş enc anahtarını kullanın. Gönderenleri, UID'ye (ev veya iş vb.) Bağlı olarak belirli bir enc alt anahtarı kullanmaya zorlamak mümkün değildir.
KurzedMetal

2
Belki de bu bir problemdir. En büyük endişem, ana anahtarımın etrafında inşa ettiğim güven ağını kaybetmek (sadece imzalar). Elbette şifreleme alt anahtarının, şifreli mesajları okumak için kullandığım tüm cihazlarda bulunması gerekir. Şifreleme anahtarım tehlikeye atılırsa, kurtarma işlemi yalnızca kendimde bulunur; usta imzalama anahtarımı kaybetme ve yeni anahtarımı imzalama konusunda güven ağımı sorma / ikna etmek zorunda kalmak yerine. Şifreleme alt anahtarının kasamdaki yerini değiştirmeyi düşünmemiştim.
Justin C

9

Tek bir başarısızlık noktasını da sevmeyen biri olarak (ana anahtarlar ve özellikle şifreler dahil), böyle yapmam gerekiyor. Cihazların bir web ağı üzerinden çalışmasına ve merkezi olmayan bir kimliğe izin vermesine izin verir.

Bunun için mevcut bir sistem olup olmadığını bilmiyorum, ama muhtemelen bir cron işi ve bir kaç satır Bash ile birlikte scrobbled olabileceğini düşünüyorum.

Bu sistemde iki sınıf keypair vardır: cihaz keypairleri ve zaman aralığı keypairleri . Her cihazda kullanıcı için bir cihaz tuş takımı üretilir ve kullanım ömrü boyunca bu cihazda kalır. Merkezi bir sunucu tarafından rutin aralıklarla (aylık, günlük, saatlik - ne kadar paranoyak olmak istediğinize bağlı olarak değişir) bir zaman dilimi anahtar takımı oluşturulur. Genel anahtar herkese açık olarak duyurulur (sunucunun kendisi ile oturum açmak için kendi cihaz anahtar parolası vardır) ve özel anahtar, bu anahtara erişmesi gereken her cihazın ortak anahtarıyla şifrelenmiş olarak dağıtılır. (Bu dağıtım mümkün olduğu kadar özel olmalıdır, örneğin cihazların sunucuya doğrudan bağlanması.)

Mesajları imzalamak için, mesajı hangi cihaza gönderdiğinizin cihaz tuşunu kullanırsınız. Birisi size bir mesaj göndermek istiyorsa, bunu mevcut genel zaman dilimi anahtarınızla imzalayabilir. (Duyuruları takip edebilmeleri için otomatik bir sisteme sahip olmaları gerekir.) Daha sonra mesajlarını herhangi bir cihazdan okuyabilirsiniz.

Daha eski şifreli mesajları okumak için, eski zaman dilimi keypair'leri her cihaza uygun bir stratejiye göre (eğer istersen - yine paranoya seviyesine bağlı olarak) başka bir setin olduğu bir dizilimde yedeklenir. Eski şifreleri koruyan parola korumalı tuş takımlarının kullanımı (rahatça hatırlamak istediğiniz kadar zamanla birçok parola ile).

Bir cihaz çalınırsa veya başka bir şekilde tehlikeye atılırsa, kimliğinizi doğrulayan ve imzalı bir mesaj oluşturmak için herkese açık bir şekilde güvenilen cihazlarınızdan birini kullanabilirsiniz (ne olursa olsun, örneğin herkese açık bir toplantıda ve / veya güvenilir bir arkadaşınızın sizi şahsen doğrulaması) ve tehlike altındaki cihaz anahtarını ve erişebildiği zaman dilimi anahtarlarını iptal edin. Anahtarı iptal ederken, çalınan cihazı sunucunun güvenilir cihazlar listesinden de çıkarırsınız (bir parola ve güvenilir cihaz anahtarınızla).

Yeni duyurulan cihaz anahtarlarına güvenme politikası, geçerli güven politikaları gibi bir şey izlemelidir - Uygun bir politikanın, çalmak / sızmak zor olduğundan, üreten sunucuya, mobil cihaza ve büyük ve ağır bir cihaza güvenmek olduğuna inanıyorum. Bir kullanıcının telefonu, bir masaüstü bilgisayarı ve VPS, kullanıcı bildirmeden önce uyumlu bir soygundaki.

Sunucunuz tehlikeye atıldıysa, başka herhangi bir tehlikeye atılmış aygıt için açıklanan prosedürle (muhtemelen yeni bir aygıt eklemek için birine benzeyen daha güçlü bir politika ile) iptal edilir ve yeniden güvenli veya tamamen yeni bir sunucu kullanırsınız ( yeni aygıt keypair) ileriye gidiyor.


İptal bölümü yazılı olarak biraz bulutludur - bir cihazı iptal etmek, başka bir cihazdan bir duyuru ile mümkün olmalıdır (eğer birisi dizüstü bilgisayarınızı çalarsa ve telefonunuz doğrudan sunucuyla bağlantı kuramazsa başarısız olabilir). bir hırsız tarafından yapılmalıdır (bu nedenle cihazların iptal edilmesi için parola korumalı bir anahtara sahip olması gerekir). Çakışan raporlar durumunda, üçüncü bir tarafça manuel doğrulama gerçekleştirilinceye kadar tüm anahtarlar geçici olarak güvenilmemelidir.
Stuart P. Bentley

Aslında, düzenli olarak manuel olarak güncellenen (değiştirilen) güçlü bir genel şifre kullanarak, tuşları iptal etmek için başka bir mekanizmaya sahip olmanız tavsiye edilebilir - bu şekilde, herhangi bir cihaza bağlı olmadan anahtarı iptal edebilirsiniz ( Sadece telefonunuzla dışarı çıkınca biri çaldığında), şifreyi sır olarak sakladığınız sürece.
Stuart P. Bentley
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.