Podpisanie pliku sprawdzenie podpisu

+Otrzymałem pytanie jak wykonać punkt 8.3 „Stworzyć plik tekstowy, podpisać go, sprawdzić podpis, a następnie zmodyfikować go i sprawdzić podpis. System powinien pokazać, że plik został zmieniony.

Ja tu będę używał bezpośrednio poleceń oprogramowania gpg (nie używając żadnego środowiska graficznego).

  1. Tworzę plik o nazwie ala.txt zawierający tekst Ala ma kota.
  2. Podpisuję ten plik używając polecenia gpg --output ala.txt.sig --sign ala.txt. Program pyta o hasło odbezpieczające klucz i robi swoje.
  3. Utworzony jest plik (binarny) ala.txt.sig. Trudno go obejrzeć, ale w systemie Linux jest znakomity edytor nazywający się vim. Pozwala zajrzeć do każdego pliku. Plik wygląda tak:Podpisany plik w edytorze vimJak widać jest tam zakodowana zarówno pierwotna nazwa pliku, jak i jego zawartość. Całą reszta to binarny (ustandaryzowany) pojemnik zawierający dodatkowo podpis pliku. Nie jest to format wygodny do użytku.
  4. Znacznie lepiej jest podpisać ten dokument w sposób pozwalający na odczyt jego zawartości nawet bez specjalnego oprogramowania. Robi się to poleceniem: gpg --clearsign ala.txt. Program utworzy plik o nazwie ala.txt.asc i zawartości:

     

    Składa się on z dwu części: tekstu wiadomości i podpisu. Bez specjalnego oprogramowania można przeczytać wiadomość. Można też sprawdzić jej poprawność poleceniem gpg --verify ala.txt.asc. Efekt pracy gpg jest taki:

     

    Teraz plik ala.txt.asc zmodyfikuję zamieniając wielkie A na małe:


    Próba weryfikacji takiego pliku kończy się komunikatem:

    co należy rozumieć, że zawartość pliku została zmieniona.
  5. Aby odzyskać pierwotną zawartość z pliku podpisanego należy użyć opcji --decrypt: gpg --decrypt ala.txt.sig; zawartość zostanie wypisana na terminalu, ale dodanie --output zapisuje do pliku: gpg --output ala --decrypt ala.txt.sig. Za każdym razem program informuje o poprawności podpisu. Nawet gdy podpis jest niepoprawny zawartość zostanie „odtworzona”1.
  6. W przypadku gdy modyfikacji ulegnie podpis, komunikat programu gpg może wyglądać tak:

     

  1. Gdy podpis jest niepoprawny — zostanie odtworzona zmodyfikowana wersja pliku. Po modyfikacji podpisu zostanie odtworzona zawartość pliku (ale nie będziemy w stanie nic na jej temat powiedzieć).