Zakładając, że zaszyfrowałem (prawdopodobnie duży) plik przy użyciu GPG; na przykład
gpg --recipient "Some Name" -o this_file.gpg --encrypt this_file.txt
Czy można dodać kolejnego odbiorcę bez uprzedniego odszyfrowania pliku, a następnie kolejnego szyfrowania?
--symmetric
do tego gpg . Dzięki--recipient
niemu używa klucza publicznego odbiorcy. Może być więcej niż 1 adresat, ale należy to zrobić w jednym poleceniu, a nie w 2 osobnych poleceniach.gpg -e -r <name1> -r <name2> ... <file>
” Jednak sam tego nie próbowałem. Pasuje do tego, czego dowiedziałem się o kryptografii wiele lat temu, że prawie zawsze bardziej wydajne jest stosowanie szybkich algorytmów symetrycznych do szyfrowania tekstu wiadomości. Tylko klucz wiadomości jest szyfrowany przy użyciu powolnego szyfrowania asymetrycznego.Odpowiedzi:
Krótka odpowiedź: nie
Przede wszystkim pamiętaj, że jeśli nie jesteś jednym z odbiorców, jest to całkowicie niemożliwe. Nie masz nawet możliwości odszyfrowania pliku, a tym bardziej dodania odbiorcy. Nawet jeśli zaszyfrowałeś go dwie sekundy temu.
Zakładając, że jesteś odbiorcą, jest to technicznie możliwe. Plik jest w rzeczywistości szyfrowany za pomocą klucza sesji, a klucz sesji jest szyfrowany za pomocą klucza publicznego, więc teoretycznie możesz odszyfrować klucz sesji i ponownie zaszyfrować go na klucz innej osoby, a następnie spakować wszystko razem w pliku tak, jakbyś pierwotnie zaszyfrował dokument obu osobom.
Jednak gpg nie ma takiej możliwości . Najbliższy możliwy do uzyskania z gpg to
--show-session-key
opcji, aby uzyskać klucz sesji (który zdaje się również odszyfrować plik, w tym przypadku nie ma sensu)--override-session-key
do odszyfrowania oryginalnej wiadomości.źródło
1) W tej sytuacji szyfrowanie pliku do siebie (a także do zamierzonych odbiorców) jest zawsze dobrym pomysłem. RedGrittyBrick ma rację powyżej, opisując działanie GPG i PGP, co wpływa na powyższą odpowiedź nathanga.
2) Jeśli jednak masz oryginalny plik, najlepiej po prostu utworzyć nowy zaszyfrowany plik dla nowego odbiorcy.
Zakładając, że nie chcesz iść drogą klucza sesji z sugestii nathanga, jeśli zaszyfrowałeś plik do siebie (jak wyżej w punkcie 1), najpierw go odszyfruj, a następnie wykonaj krok 2 powyżej.
Jeśli nie masz oryginału ani nie zaszyfrowałeś go samemu, nie możesz odzyskać danych i nie możesz zaszyfrować ich przed nikim innym, bez wysłania kopii przez pierwszego odbiorcę.
źródło
To nie jest możliwe bez deszyfrowania w ogóle , ale to wydaje się, że powinna być możliwa bez odszyfrowywania do pliku :
Tyle że wydaje się, że powoduje to uszkodzenie pliku (przynajmniej czasami), ponieważ
gpg
jednocześnie odczytuje i zapisuje ten sam plik:Zamiast tego możesz wykonać następujące czynności (w skrypcie), aby uniknąć konieczności zarządzania odszyfrowanym plikiem:
shred
, z-u
opcją, bezpiecznie nadpisuje dane, a następnie usuwa określony plik. Podobne programy istnieją dla innych platform, takich jaksrm
Mac OS X.Możesz też napisać taki skrypt (dzięki uprzejmości dave_thompson_085 ), aby w ogóle uniknąć konieczności przechowywania odszyfrowanych danych w pliku:
źródło
gpg -d file.gpg | gpg -e ... -o file.new; mv file.new file.gpg
lub jego kopię lustrzanąmv file.gpg file.old; gpg -d file.old | gpg -e ... -o file.gpg
. Lub (być może też) sprytnie zachowaj starą i- węzeł :{ rm file.gpg; gpg -d /dev/fd/3; } 3<file.gpg | gpg -e ... -o file.gpg