podpisy cyfrowe z GnuPG

w poprzednim artykule wprowadziłem GnuPG poprzez weryfikację podpisanego pliku i szyfrowanie pliku dla odbiorcy za pomocą klucza publicznego. Podzieliłem się również tym, jak utworzyć parę kluczy i wyeksportować klucz publiczny, abyśmy mogli otrzymywać zaszyfrowane wiadomości. W tym artykule zademonstruję, jak podpisać pliki przed udostępnieniem przez e-mail lub opublikowaniem na stronie internetowej.

w GnuPG istnieje wiele metod podpisywania pliku.

$ gpg --help | grep -i signSign, check, encrypt or decrypt -s, --sign make a signature --clear-sign make a clear text signature -b, --detach-sign make a detached signature --verify verify a signature

jak każda opcja jest omówiona, podpiszę prosty plik tekstowy.

$ cat sample.txt Sample text for gpg signing

zrób podpis

za pomocą opcji --sign plik jest skutecznie szyfrowany kluczem prywatnym. Do wyświetlenia zawartości pliku wymagany jest klucz publiczny. Zmusza to odbiorcę do weryfikacji pochodzenia i usuwa wszelkie wyraźne treści tekstowe z przesyłania. Nie jest prywatny, ponieważ każdy z kluczem publicznym może odszyfrować plik.

$ gpg -s sample.txt

powoduje to powstanie pliku o nazwie sample.txt.gpg.

$ file sample*sample.txt: ASCII textsample.txt.gpg: data
Obraz
grafika wyświetlająca dwa pliki wysyłane z punktu A do B, gdzie jeden to zwykły tekst, a drugi zaszyfrowany

aby zweryfikować tylko podpis, użyj opcji --verify. Aby wyświetlić zawartość i pokazać weryfikację podpisu, użyj opcji --decrypt.

$ gpg --decrypt sample.txt.gpg Sample text for gpg signinggpg: Signature made Sat 30 May 2020 09:16:24 AM EDTgpg: using DSA key 15AC***********...omitted...

twórz podpis odłączony

opcja podpisu odłączonego jest dostępna, aby zapewnić każdemu możliwość wyświetlenia wiadomości bez posiadania klucza publicznego. Tworzy to osobny plik podpisu, który w razie potrzeby służy do weryfikacji oryginalnej wiadomości. W najprostszej formie plik ten zawiera skrót oryginalnej wiadomości i jest szyfrowany kluczem prywatnym. Każdy, kto ma klucz publiczny, może otworzyć podpis, a następnie porównać skróty, aby zweryfikować integralność podpisanego pliku.

Utwórz plik podpisu za pomocą opcji --detach-sign.

$ gpg -b sample.txt

wynik jest osobny .plik danych sig.

$ file sample*sample.txt: ASCII textsample.txt.gpg: datasample.txt.sig: data
Obraz
grafika wyświetlająca dwa pliki wysyłane z punktu A do B, gdzie jeden to zwykły tekst, a drugi zaszyfrowany

jeśli nie chcesz udostępniać, publikować lub wysyłać pocztą e-mail pliku danych, możesz podpisać plik za pomocą opcji --armor, a utworzy on plik tekstowy ASCII z podpisem. Będzie również korzystać z .rozszerzenie asc zamiast .rozszerzenie sig:

$ cat sample.txt.asc -----BEGIN PGP SIGNATURE-----iF0EABECAB0WIQQVrPeUo9lk0dnOTCbvwxHCv6EJdAUCXtO/yAAKCRDvwxHCv6EJdC2BAJ49fIcOdBUdE0PELySEMlKNzVnZLgCdG1gsTim3gab2dgL6qagHArSlgq8==IvP/-----END PGP SIGNATURE-----

oryginalny plik tekstowy i oddzielny plik podpisu muszą zostać udostępnione odbiorcy.

aby zweryfikować podpis, określ plik podpisu, a następnie oryginalny plik.

$ gpg --verify sample.txt.sig sample.txt

jeśli użyto domyślnych nazw, można pominąć nazwę niezaszyfrowanego pliku.

$ gpg --verify sample.txt.sig gpg: assuming signed data in 'sample.txt'gpg: Signature made Sat 30 May 2020 09:23:53 AM EDT...omitted...

Tworzenie wyraźnego podpisu tekstowego

opcja --clear-sign jest nowszą opcją pod względem długiej historii GPG i jest bardzo popularna w przypadku plików publikowanych na stronach internetowych, takich jak pliki sumy kontrolnej pobierania Fedory. Treść jest czytelna dla każdego. Informacje o podpisie są również dostępne w tym samym pliku dla tych, którzy chcą zweryfikować pochodzenie i integralność treści.

Obraz
Zawartość pliku sumy kontrolnej pokazującego zarówno zwykły tekst bloku podpisu SHA256SUM, jak i PGP

opcja --clear-sign utworzy nowy plik zrozszerzenie asc.

$ gpg --clear-sign sample.txt
$ file sample*sample.txt: ASCII textsample.txt.asc: ASCII textsample.txt.gpg: datasample.txt.sig: data

aby zweryfikować podpis, użyj opcji --verify :

$ gpg --verify sample.txt.asc gpg: Signature made Sat 30 May 2020 09:27:56 AM EDT...omitted...gpg: WARNING: not a detached signature; file 'sample.txt' was NOT verified!

należy pamiętać, że podczas procesu weryfikacji wyświetlany jest komunikat ostrzegający, że powiązany oryginalny plik nie jest sprawdzany. Możesz zmienić nazwę tego pliku przed opublikowaniem go na swojej stronie internetowej. Weryfikacja będzie nadal sprawdzać zawartość pliku.

chociaż jest to często najwygodniejsza metoda dla konsumentów Twoich produktów, na stronie podręcznika GPG jest ostrzeżenie, że odłączone podpisy są lepszym rozwiązaniem, gdy wymagana jest pełna weryfikacja.

ze strony podręcznika gpg:

Uwaga: podczas weryfikacji podpisu tekstowego GPG weryfikuje tylko to, co składa się na podpisane dane tekstowe, a nie na żadne dodatkowe dane poza podpisem tekstowym lub liniami nagłówka bezpośrednio po linii znacznika myślnika. Opcja — output może być użyta do zapisania rzeczywistych podpisanych danych, ale są też inne pułapki związane z tym formatem. Zaleca się unikanie podpisów tekstowych na rzecz podpisów wolnostojących.

przy użyciu określonej klawiatury

wszystkie powyższe przykłady zostały podpisane pierwszym kluczem prywatnym dostępnym w moim breloku. Może chcę użyć innego klucza, gdy podpisuję plik do publikacji na stronie internetowej. Klawiatura jest tworzona specjalnie dla projektu lub produktu. Klawiatura może być nawet na nowym wspólnym breloku.

$ gpg --keyring /etc/gpgkeys --no-default-keyring --full-gen-key <other options>

gdy plik jest podpisany lub zaszyfrowany, należy również podać opcję --keyring.

nawet jeśli tylko jedna osoba używa klucza do podpisywania plików, należy użyć osobnej klawiatury do podpisywania. Nie używaj tego samego klucza do innych codziennych zadań, takich jak szyfrowanie osobistej wiadomości e-mail. Nazwy kluczy prywatnych można wymienić za pomocą gpg --list-secret. Identyfikator, nazwa lub adres e-mail mogą być używane do identyfikacji klucza.

aby podpisać plik określonym kluczem z kółka kluczy, użyj opcji --local-user identity.

$ gpg --local-user "My Project 2" --clear-sign sample.txt

zawiń

jeśli prosty plik tekstowy jest listą skrótów sum kontrolnych dla pobranych produktów, ten plik, wszystkie pliki podpisów i klucz publiczny używany do weryfikacji podpisów mogą zostać opublikowane w witrynie internetowej. Konsumenci mogą następnie zweryfikować pobrane pliki przed zainstalowaniem jakiegokolwiek oprogramowania w swoich systemach.



+