Jak naprawić „OSTRZEŻENIE: wiadomość nie była chroniona integralności” podczas korzystania z symetrycznego szyfrowania GPG?

45

Zaszyfrowałem plik przy użyciu szyfrowania symetrycznego, takiego jak to:

gpg --symmetric myfile

co powoduje powstanie pliku myfile.gpg.

W porządku. Teraz ponownie odszyfrujmy plik:

gpg -o myfile --decrypt myfile.gpg

Poproszono mnie o hasło, które założyłem, a potem widzę

gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected

Nie jestem pewien pierwszej i ostatniej linii.

  • Co to jest szyfr CAST5 i czy jest bezpieczny? Znam 3DES i AES i wiem, że są bezpieczne.
  • Dlaczego nie jest chroniony pod względem integralności?
  • Co więcej, jak to naprawić?
gertvdijk
źródło
Przy okazji możesz po prostu gpg -c myfilezaszyfrować i gpg myfile.gpgodszyfrować, dane wyjściowe zostaną myfiledomyślnie odszyfrowane .
cprn
1
@CyprianGuerra gpg myfile.gpgspowoduje odszyfrowanie danych wyjściowych wysyłanych do standardowego wyjścia w moim systemie ...
gertvdijk 13.10.16
Ciekawy. Mam to domyślnie ...
cprn
Pobrałem stąd GUI i odszyfrowałem plik, używając go. Zadziałało! pgptool.github.io
Iftikhar Ahmad Dar

Odpowiedzi:

69

tło

CAST-5 jest starszym algorytmem szyfrowania używanym przez GnuPG, ponieważ AES jeszcze nie istniał w czasie, gdy GnuPG był początkowo tworzony jako źródło . Nie jest powszechnie używany (oprócz GnuPG ze względu na kompatybilność).

Wynika WARNING: message was not integrity protectedto z faktu, że ta funkcja nie jest domyślnie włączona w momencie szyfrowania. Jeśli to zostało włączone, GnuPG może stwierdzić, czy plik został zmieniony podczas przesyłania.

Aktualizacja: nowoczesne wersje GnuPG dostarczane z Ubuntu / Debian mają teraz domyślnie włączone MDC i nigdy nie powinieneś widzieć tego komunikatu dla niczego podpisanego nowszymi wersjami.

Rozwiązania

Aby użyć silniejszego AES-256, musisz podać go w wierszu polecenia lub w pliku konfiguracyjnym.

  • Wiersz polecenia: dodaj --cipher-algo AES256opcję, aby stała się pełna linia do szyfrowania

    gpg -o myfile.gpg --cipher-algo AES256 --symmetric myfile
    
  • Plik konfiguracyjny (zalecane): dodaj następujący wiersz do ~/.gnupg/gpg.confpliku konfiguracyjnego.

    cipher-algo AES256
    

    Polecam to podejście, ponieważ będzie ono używane do wszystkich przyszłych operacji GPG na tym koncie użytkownika.

Użytkownik nie musi nic zmieniać w celu odszyfrowania pliku - GnuPG wykryje to automatycznie.

Należy pamiętać, że przy użyciu szyfru AES-256 wiadomość jest automatycznie chroniona pod kątem integralności. Aby ręcznie włączyć ochronę integralności na innych szyfrach, dla których nie jest to włączone (np. CAST-5), dodaj --force-mdcopcję podczas szyfrowania.

Jeszcze lepiej: znak!

Jeszcze lepszym rozwiązaniem byłoby podpisanie plików za pomocą pary kluczy (jeśli je masz). Po prostu dodaj --signopcję do polecenia szyfrowania, tak jak poniżej:

gpg -o myfile.gpg --cipher-algo AES256 --sign --symmetric myfile

Spowoduje to nie tylko sprawdzenie integralności pliku, ale także umożliwi odbiorcy pliku sprawdzenie pochodzenia. Wszelkie zmiany w pliku spowodowałyby niepowodzenie sprawdzania podpisu.

gertvdijk
źródło
Czy nie potrzebuję certyfikatu do podpisania?
bilal fazlani
@bilalfazlani do podpisania, będziesz potrzebować pary kluczy GnuPG, tak. Nie musisz podawać go do wiadomości publicznej, jeśli nie chcesz. Po prostu udostępnij klucz publiczny innym użytkownikom, którym udostępniasz zaszyfrowane pliki, a oni powinni zweryfikować odcisk palca klucza.
gertvdijk
Dziękuję za szczegółową odpowiedź. Czy możesz wyjaśnić więcej na temat korzystania z pary kluczy?
ben-Nabiy Derush
„wiadomość nie była chroniona integralnie” dzieje się po stronie odbiorcy, a Ty wiesz, jak to naprawić po stronie nadawcy. Pytanie brzmi: jak zignorować problem po stronie odbierającej, aby móc odszyfrować starsze wiadomości (w
enigmail
@ ben-NabiyDerush Te dwa artykuły mogą wyjaśnić twoje pytania dotyczące (i dlaczego) korzystania z publicznej i prywatnej pary kluczy. Kryptografia z kluczem publicznym . Sieć zaufania
jpaugh