Czy można zaszyfrować dane, tak aby można je było odszyfrować kilkoma różnymi kluczami?
Przykład:
Zaszyfrowałem dane za pomocą klucza 1, ale chcę mieć możliwość odszyfrowania za pomocą kluczy 2, 3 i 4.
czy to możliwe?
Czy można zaszyfrować dane, tak aby można je było odszyfrować kilkoma różnymi kluczami?
Przykład:
Zaszyfrowałem dane za pomocą klucza 1, ale chcę mieć możliwość odszyfrowania za pomocą kluczy 2, 3 i 4.
czy to możliwe?
Odpowiedzi:
GnuPG standardowo wykonuje szyfrowanie z użyciem wielu kluczy.
Następujące polecenie zaszyfruje doc.txt
przy użyciu klucza publicznego Alicji i klucza publicznego Boba. Alicja może odszyfrować za pomocą swojego klucza prywatnego. Bob może również odszyfrować za pomocą swojego klucza prywatnego.
gpg --encrypt --recipient alice@example.com \
--recipient bob@example.com doc.txt
Ta funkcja jest szczegółowo opisana w sekcji podręcznika użytkownika zatytułowanej „ Szyfrowanie i odszyfrowywanie dokumentów ”
Tak, możliwe jest szyfrowanie dla wielu odbiorców. Wydaje się również logiczne, gdy myślisz, że możesz chcieć przeczytać to, co do kogoś wysłałeś, i aby to zrobić , musisz znajdować się na liście odbiorców.
Oto jak to zrobić za pomocą gpg
wiersza poleceń (jak opisano w odpowiedzi Davida Segondsa ):
gpg --encrypt \
--recipient alice@example.com \
--recipient bob@example.com \
clear-message.txt
Twój GUI musi umożliwiać szyfrowanie dla kilku osób
Jest pytanie dotyczące bezpieczeństwa informacji , rozmiaru pliku GPG dla wielu odbiorców? , które wyjaśniają mechanizm szyfrowania :
GPG szyfruje plik raz za pomocą klucza symetrycznego, a następnie umieszcza nagłówek identyfikujący docelową parę kluczy i zaszyfrowaną wersję klucza symetrycznego.
[...] W przypadku zaszyfrowania do wielu odbiorców nagłówek ten jest umieszczany wielokrotnie, zapewniając unikalnie zaszyfrowaną wersję tego samego klucza symetrycznego dla każdego odbiorcy .
Klienci GnuPG i PGP zazwyczaj szyfrują rzeczywiste dane kluczem symetrycznym zwanym „kluczem sesji”. Klucz sesji jest następnie szyfrowany za pomocą każdego „klucza odbiorcy” (tj. Tych, które określisz opcją -r / - adresat). Jest to czasami nazywane szyfrem hybrydowym . W tej chwili uważam, że GnuPG domyślnie używa 256-bitowych kluczy sesji i AES do szyfrowania danych w postaci zwykłego tekstu do tego klucza sesji AES-256, a klucze odbiorców to RSA / DSA / ECDSA / itd. klucz asymetryczny w tym przypadku.
Jednym z powodów robienia tego w ten sposób jest to, że symetryczne algorytmy kryptograficzne, takie jak AES, są generalnie znacznie szybsze niż asymetryczne, takie jak RSA. GnuPG musi więc zaszyfrować tylko ~ 256 bitów (klucz sesji) za pomocą RSA i może używać AES do szyfrowania danych (tak dużych, jak chcesz!) Za pomocą tego klucza sesji. Maszyny Intela mają nawet wbudowaną instrukcję AES-NI , aby wykonać pewne kroki algorytmu sprzętowego, co sprawia, że GnuPG jest wyjątkowo szybki w szyfrowaniu / odszyfrowywaniu danych.
Innym powodem zrobienia tego w ten sposób jest to, że umożliwia szyfrowanie dokumentów zaszyfrowanych przez PGP dla wielu stron bez konieczności podwajania rozmiaru dokumentu. Zauważ, że jeśli określisz wielu odbiorców dla zaszyfrowanego dokumentu (np. gpg -ea -r Alice -r Bob -o ciphertext.asc
), Zaszyfrowany dokument, który zostanie zapisany (ciphertext.asc) nie jest 2x tak duży, jak gdybyś go właśnie zaszyfrował dla Alicji.
Zobacz także --show-session-key
parametr na stronie podręcznika gpg, aby móc odszyfrować tylko klucz sesji, na przykład, aby umożliwić osobie trzeciej odszyfrowanie zaszyfrowanego dokumentu bez konieczności przesyłania do niej klucza prywatnego lub danych w postaci zwykłego tekstu.
Tak, to możliwe. Na początek „szyfrowanie wielostronne” Google.
AFAIK, nie ma ich jednak wrzucać i używać do tego pakietów em.
- MarkusQ
PS Zastanów się, jak można to zrobić. Zaszyfrowana wiadomość składa się z:
Odbiorca, który posiada klucz i, po prostu odszyfrowuje swoją kopię pada swoim kluczem, a następnie odszyfrowuje ładunek.
Jednak jest to tylko dowód, że można to zrobić i będzie ssać jak rzeczywistej realizacji. Jeśli to możliwe, należy unikać zmiany własnego szyfrowania. Jeśli nie rozumiesz dlaczego, zdecydowanie powinieneś unikać zmiany własnego szyfrowania.
-----Edytować ------------
Jeśli się mylę i narzędzia Gnu to robią, użyj ich. Ale nie mogę znaleźć żadnych informacji, jak to zrobić.
Wielokrotny (więcej niż dwa) klucz RSA może wyglądać tak - cóż, nie jestem matematykiem, więc ten algorytm niekoniecznie jest bezpieczny, po prostu chcę dać mu pomysł.
m = p * q * r; p, q, r to duże liczby pierwsze
fi (m) = (p-1) (q-1) (r-1)
d == (e1 * e2 * e3 * ... * ei) ^ (- 1) (mod fi (m)); e1 ... ei są liczbami arbitralnymi, d oblicza się, aby spełnić równanie
y1 == x ^ e1 (mod m)
y2 == y1 ^ e2 (mod m)
y3 == y2 ^ e3 (mod m)
...
x == yi ^ d (mod m)
Algorytm ten można wykorzystać na przykład do zwiększenia szybkości routera cebulowego.