GPG'de zaten şifrelenmiş bir dosyaya alıcı eklemek mümkün müdür?


12

GPG kullanarak (muhtemelen büyük) bir dosyayı şifrelediğimi varsayarsak; Örneğin

gpg --recipient "Some Name" -o this_file.gpg --encrypt this_file.txt

Önce dosyanın şifresini ve ardından başka bir şifreleme olmadan başka bir alıcı eklemek mümkün müdür?

gnupg 

Dosyayı "Bazı Adlar" ın ortak anahtarıyla şifrelediniz. Ve başka bir alıcı için ne kullanacak?
ott--

6
@ott: Bu tam olarak böyle değil (AFAIK). PGP dosyayı alıcıların ortak anahtarıyla değil simetrik bir anahtarla şifreler. Ardından, her bir alıcının ortak anahtarını kullanarak o simetrik anahtarın birkaç kopyasını ayrı ayrı şifreler.
RedGrittyBrick

@RedGrittyBrick Ben pgp hakkında bilmiyorum, ama gpg --symmetricbunun için kullanır . Bununla --recipientbirlikte, alıcının ortak anahtarını kullanır. 1'den fazla alıcı olabilir, ancak 2 ayrı komutta değil, tek bir komutta yapılmalıdır.
ott--

3
@ott: "Ben de bir form komutuyla herhangi bir sayıda birden fazla alıcı için aynı anda bir dosyayı şifrelemek mümkündürgpg -e -r <name1> -r <name2> ... <file> " Ben bunu kendim denemedim. Yıllar önce kriptodan öğrendiklerime uyuyor, bu da mesaj metnini şifrelemek için hızlı simetrik algoritmalar kullanmak neredeyse her zaman daha verimli. Yalnızca mesaj anahtarı yavaş asimetrik şifreleme kullanılarak şifrelenir.
RedGrittyBrick

Yanıtlar:


8

Kısa cevap: hayır

Her şeyden önce, alıcılardan biri değilseniz, tamamen imkansız olduğunu unutmayın. Dosyanın şifresini çözme yeteneğiniz bile yok, çok daha az bir alıcı ekleyin. İki saniye önce şifrelemiş olsanız bile.

Bir alıcı olduğunuzu varsayarsak, teknik olarak mümkündür. Dosya aslında bir oturum anahtarıyla şifrelenir ve oturum anahtarı genel anahtarınızla şifrelenir, böylece teorik olarak oturum anahtarının şifresini çözebilir ve başka bir kişinin anahtarına yeniden şifreleyebilir ve daha sonra her şeyi bir dosyada belgeyi başlangıçta her iki kişiye de şifrelemişti.

Ancak, gpg bu özelliğe sahip değildir . Gpg ile alabileceğiniz en yakın şey

  1. --show-session-keyOturum anahtarını alma seçeneğini kullanın (bu da dosyanın şifresini çözüyor gibi görünüyor, bu durumda noktayı kaçırıyor)
  2. Bu oturum anahtarını bir başkasının ortak anahtarıyla şifreleyin (aslında bu yeni bir oturum anahtarı oluşturur ve orijinal oturum anahtarını şifrelemek için bu oturum anahtarını kullanır)
  3. Her iki dosyayı da gönderin.
  4. Alıcı oturum anahtarının --override-session-keyşifresini çözebilir ve orijinal mesajın şifresini çözmek için kullanabilir .

3

1) Bu durum, bir dosyayı kendinize (ve hedeflenen alıcılara) şifrelemenin her zaman iyi bir fikir olmasının nedenidir. RedGrittyBrick, yukarıdaki nathang'ın cevabına akan GPG ve PGP'nin nasıl çalıştığını açıklarken yukarıda doğrudur.

2) Ancak, orijinal dosyanız varsa, yeni alıcıya yeni bir şifrelenmiş dosya oluşturmak için en iyisi olursunuz.

Oturum anahtar rotasını nathang'ın önerisinden gitmek istemediğinizi varsayarsak, dosyayı ilk önce kendinize (# 1'de olduğu gibi) şifrelediyseniz, şifresini çözün ve sonra yukarıdaki 2. adımı uygulayın.

Orijinal belgeye sahip değilseniz veya kendinize şifrelemediyseniz, verileri geri alamazsınız ve bu ilk alıcı size bir kopya göndermeden başkalarına şifreleyemezsiniz.


1
Aslında, bu her zaman iyi bir fikir değildir. PGP'ye bakın : Genel anahtarınızı alıcı olarak dahil etmek istiyor musunuz? Daha az güvenli olan var mı? ve karşı bazı argümanlar için Bilgi Güvenliği Stack Exchange .
Bir CVn

0

Önce dosyanın şifresini ve ardından başka bir şifreleme olmadan başka bir alıcı eklemek mümkün müdür?

Şifreyi çözmeden mümkün değildir , ancak bir dosyanın şifresini çözmeden mümkün olması gerekir :

gpg -d this_file.gpg | gpg -e -r "Some Name" -r "Another Name" -o this_file.gpg

Bunun dışında gpg, aynı dosyaya aynı anda hem okuma hem de yazma nedeniyle bozuk bir dosya (en azından bazen) ortaya çıkıyor gibi görünüyor :

Bunun yerine, şifresi çözülen dosyayı yönetmeniz gerekmemesi için aşağıdakileri (komut dosyasında) yapabilirsiniz:

gpg -d -o this_file.txt this_file.gpg

gpg -e \
    -r "Some Name" \
    -r "Another Name" \
    -o this_file.gpg \
    --batch --yes \
    this_file.txt

shred -u this_file.txt

shredİle -useçeneğiyle, güvenli veri üzerine yazar ve daha sonra belirttiğiniz dosya siler. srmMac OS X gibi diğer platformlar için de benzer programlar mevcuttur .

Veya şifresi çözülmüş verileri bir dosyada saklamanıza bile gerek kalmaması için komut dosyanızı şöyle yazabilirsiniz ( dave_thompson_085'in izniyle ):

gpg -d this_file.gpg \
| gpg -e \
    -r "Some Name" \
    -r "Another Name" \
    -o this_file.gpg.new \
    --batch --yes

mv -f this_file.gpg.new this_file.gpg

2
Şifreyi geçici olarak yerinde bırakırsanız: veya yansımasını temiz bir geçici dosya yazmanıza gerek yoktur . Veya (belki de) akıllıca eski inode tutmak :gpg -d file.gpg | gpg -e ... -o file.new; mv file.new file.gpgmv file.gpg file.old; gpg -d file.old | gpg -e ... -o file.gpg{ rm file.gpg; gpg -d /dev/fd/3; } 3<file.gpg | gpg -e ... -o file.gpg
dave_thompson_085

@ dave_thompson_085 İlginç - teşekkürler!
Kenny Evitt
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.