GPG

Vygenerování klíče

  1. Připojíme se přes SSH k serveru a do konzole napíšeme gpg --gen-key a potvrdíme.
    
    gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
    
    This is free software: you are free to change and redistribute it.
    
    There is NO WARRANTY, to the extent permitted by law.
    
    
    
    Please select what kind of key you want:
    
    	(1) RSA and RSA (default)
    
    	(2) DSA and Elgamal
    
    	(3) DSA (sign only)
    
    	(4) RSA (sign only)
    
    Your selection?
    
    
  2. Chceme možnost (1). Do konzole napíšeme 1 a potvrdíme.
    
    RSA keys may be between 1024 and 4096 bits long.
    
    What keysize do you want? (2048)
    
    
  3. Chceme délku klíče 2048 bitů. Do konzole napíšeme 2048 a potvrdíme.
    
    Requested keysize is 2048 bits
    
    Please specify how long the key should be valid.
    
             0 = key does not expire
    
          <n>  = key expires in n days
    
          <n>w = key expires in n weeks
    
          <n>m = key expires in n months
    
          <n>y = key expires in n years
    
    Key is valid for? (0)
    
    
  4. Chceme, aby byl klíč validní po dobu jednoho roku. Do konzole napíšeme 1y a potvrdíme.
    
    Key expires at Tue 08 Mar 2016 09:24:49 PM CET
    
    Is this correct? (y/N)
    
    
  5. S datem, ke kterému klíč vyprší, souhlasíme. Do konzole napíšeme y a potvrdíme.
    
    You need a user ID to identify your key; the software constructs the user ID
    
    from the Real Name, Comment and Email Address in this form:
    
        "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
    
    
    
    Real name:
    
    
  6. Do konzole napíšeme naše reálné jméno (pro jistotu bez diakritiky) a potvrdíme.
    
    Email address:
    
    
  7. Do konzole napíšeme naši e-mailovou adresu ve tvaru xname@bis.vse.cz a potvrdíme
    
    Comment:
    
    
  8. Komentář vyplňovat nemusíme, pouze potvrdíme prázdné zadání.
    
    You selected this USER-ID:
    
        "Rudolf Booczech <xname@bis.vse.cz>"
    
    
    
    Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
    
    
  9. Zkontrolujeme naše jméno a e-mailovou adresu. Zadáním N můžeme opravit jméno, zadáním E e-mail. Pokud je jméno i e-mail v pořádku, zadáme O a potvrdíme.
    
    You need a Passphrase to protect your secret key.
    
    
    
    Enter passphrase:
    
    
  10. Pro zabezpečení klíče potřebujeme heslo. Zadáme nějaké heslo a potvrdíme (psaní hesla se v konzoli nijak nezobrazuje).
    
    Repeat passphrase:
    
    
  11. Pro kontrolu heslo zadáme znovu a potvrdíme.
    
    We need to generate a lot of random bytes. It is a good idea to perform
    
    some other action (type on the keyboard, move the mouse, utilize the
    
    disks) during the prime generation; this gives the random number
    
    generator a better chance to gain enough entropy.
    
    ...+++++
    
    ...........+++++
    
    gpg: key 1B4A15F7 marked as ultimately trusted
    
    public and secret key created and signed.
    
    
    
    gpg: checking the trustdb
    
    gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
    
    gpg: depth: 0  valid:   3  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 3u
    
    gpg: next trustdb check due at 2016-02-20
    
    pub   2048R/1B4A15F7 2015-03-09 [expires: 2016-03-08]
    
          Key fingerprint = 3920 A9CE 8D92 1967 600A  838E 2C1A 78F9 1B4A 15F7
    
    uid       [ultimate] Rudolf Booczech <xname@bis.vse.cz>
    
    sub   2048R/5A2E99BD 2015-03-09 [expires: 2016-03-08]
    
    
  12. Došlo k vytvoření veřejného i soukromého klíče. Soukromý klíč je uložen v adresáři ~/.gnupg/.

Vypsání všech klíčů

  1. Do konzole zadáme gpg --list-keys a potvrdíme.
    
    /home/xname/.gnupg/pubring.gpg
    
    --------------------------------
    
    pub   2048R/1B4A15F7 2015-03-09 [expires: 2016-03-08]
    
          Key fingerprint = 3920 A9CE 8D92 1967 600A  838E 2C1A 78F9 1B4A 15F7
    
    uid       [ultimate] Rudolf Booczech <xname@bis.vse.cz>
    
    sub   2048R/5A2E99BD 2015-03-09 [expires: 2016-03-08]
    
    

Vygenerování certifikátu pro revokování klíče

  1. Potřebujeme zjistit ID našeho klíče. Vypíšeme si proto všechny naše klíče. Do konzole zadáme gpg --list-keys a potvrdíme.
    
    /home/xname/.gnupg/pubring.gpg
    
    --------------------------------
    
    pub   2048R/1B4A15F7 2015-03-09 [expires: 2016-03-08]
    
          Key fingerprint = 3920 A9CE 8D92 1967 600A  838E 2C1A 78F9 1B4A 15F7
    
    uid       [ultimate] Rudolf Booczech <xname@bis.vse.cz>
    
    sub   2048R/5A2E99BD 2015-03-09 [expires: 2016-03-08]
    
    
  2. Do konzole zadáme gpg --output revoke.asc --gen-revoke 1B4A15F7. 1B4A15F7 je v tomto případě ID našeho klíče. Nemusíme ho opisovat, stačí ho v konzoli označit myší (na výpisu výše je již označeno) a kliknout na něj pravým tlačítkem. Tím se nám ID automaticky zkopíruje na konec příkazu.
    
    sec  2048R/1B4A15F7 2015-03-09 Rudolf Booczech <xname@bis.vse.cz>
    
    
    
    Create a revocation certificate for this key? (y/N)
    
    
  3. Revokační certifikát pro tento klíč vytvořit chceme. Do konzole zadáme y a potvrdíme.
    
    Please select the reason for the revocation:
    
      0 = No reason specified
    
      1 = Key has been compromised
    
      2 = Key is superseded
    
      3 = Key is no longer used
    
      Q = Cancel
    
    (Probably you want to select 1 here)
    
    Your decision?
    
    
  4. Revokační certifikát generujeme pro případ, že bude náš klíč kompromitován. Vybereme proto možnost 1. Do konzole zadáme 1 a potvrdíme.
    
    Enter an optional description; end it with an empty line:
    
    >
    
    
  5. Další popis vyplňovat nemusíme. Pouze potvrdíme prázdné zadání.
    
    Reason for revocation: Key has been compromised
    
    (No description given)
    
    Is this okay? (y/N)
    
    
  6. Naše zadání zkontrolujeme. Do konzole zadáme y a potvrdíme.
    
    You need a passphrase to unlock the secret key for
    
    user: "Rudolf Booczech <xname@bis.vse.cz>"
    
    2048-bit RSA key, ID 1B4A15F7, created 2015-03-09
    
    
    
    Enter passphrase:
    
    
  7. Musíme vyplnit heslo pro náš klíč, které jsme zadali při jeho vytváření. Heslo zadáme do konzole a potvrdíme (zadávání hesla se v konzoli nijak neprojevuje).
    
    ASCII armored output forced.
    
    Revocation certificate created.
    
    
    
    Please move it to a medium which you can hide away; if Mallory gets
    
    access to this certificate he can use it to make your key unusable.
    
    It is smart to print this certificate and store it away, just in case
    
    your media become unreadable.  But have some caution:  The print system of
    
    your machine might store the data and make it available to others!
    
    
  8. Revokační certifikát byl vygenerován. Nachází se v našem domovském adresáři v souboru revoke.asc. Kdokoliv, kdo se k tomuto souboru dostane, může náš klíč zničit.

Vytvoření textového souboru a jeho podepsání naším klíčem

  1. Vytvoříme nějaký textový soubor, který budeme podepisovat. Do konzole napíšeme vi test.txt a potvrdíme (tím vytvoříme nový soubor a otevřeme ho v textovém editoru).
    
    ~
    
    ~
    
    ~
    
    ~
    
    "test.txt" [New File]                                         0,0-1         All
    
    
  2. Stiskneme i, abychom do nového souboru mohli zadávat text (ve spodní části konzole se nyní zobrazí -- INSERT --). Napíšeme nějaký text.
    
    Ahoj, dneska je středa.
    
    Dáš si bůček?
    
    ~
    
    ~
    
    -- INSERT --                                                  2,18-14       All
    
    
  3. Stiskneme Esc, protože už nechceme zadávat text (ve spodní části konzole zmizí -- INSERT --, místo toho tam budeme zadávat příkazy). Napíšeme příkaz :w (včetně dvojtečky) a potvrdíme. Tím se soubor uloží.
    
    Ahoj, dneska je středa.
    
    Dáš si bůček?
    
    ~
    
    ~
    
    "test.txt" [New] 2L, 43C written                              2,17-13       All
    
    
  4. Textový editor nyní ukončíme. Napíšeme příkaz :q (opět včetně dvojtečky) a potvrdíme.
  5. Teď náš textový soubor podepíšeme naším klíčem. Do konzole zadáme gpg --sign test.txt a potvrdíme.
    
    You need a passphrase to unlock the secret key for
    
    user: "Rudolf Booczech <xname@bis.vse.cz>"
    
    2048-bit RSA key, ID 1B4A15F7, created 2015-03-09
    
    
    
    Enter passphrase:
    
    
  6. Musíme zadat heslo k našemu klíči, které jsme zadali při jeho vytváření. Zadáme heslo a potvrdíme (zadávání hesla se v konzoli nijak neprojevuje).
  7. Soubor test.txt je nyní podepsaný naším klíčem. V našem domovském adresáři vznikl komprimovaný soubor test.txt.gpg, který obsahuje náš původní soubor test.txt včetně našeho podpisu.
  8. Platnost podpisu souboru můžeme ověřit. Do konzole zadáme gpg --verify test.txt.gpg a potvrdíme.
    
    gpg: Signature made Tue 10 Mar 2015 09:44:52 PM CET using RSA key ID 1B4A15F7
    
    gpg: Good signature from "Rudolf Booczech <xname@bis.vse.cz>" [ultimate]
    
    Primary key fingerprint: 3920 A9CE 8D92 1967 600A  838E 2C1A 78F9 1B4A 15F7
    
    

Příklad na kontrolu podpisu staženého souboru

  1. K sobě do počítače si stáhneme poslední verzi Apache (v březnu 2015 to byla verze 2.4.12) z oficiálních stránek. Konkrétně stáhneme soubor httpd-2.4.12.tar.bz2 a jeho PGP podpis (soubor httpd-2.4.12.tar.bz2.asc).
  2. Dál potřebujeme z oficiálních stránek stáhnout soubor KEYS pro ověření podpisu Apache.
  3. Všechny tři soubory nahrajeme například pomocí programu WinSCP na server bis.vse.cz do svého domácího adresáře.
  4. Připojíme se přes SSH k našemu serveru. Do konzole napíšeme gpg --import KEYS a potvrdíme. Dojde k importu velkého množství klíčů pro ověření.
    
    ...
    
    gpg: key E55B0D0E: public key ""Guenter Knauf" ("CODE SIGNING KEY") <fuankg@apache.org>" imported
    
    gpg: key 39FF092C: public key "Jeff Trawick (CODE SIGNING KEY) <trawick@apache.org>" imported
    
    gpg: key 791485A8: public key "Jim Jagielski (Release Signing Key) <jim@apache.org>" imported
    
    gpg: key 6D5954FA: public key "Eric Covener <covener@apache.org>" imported
    
    gpg: Total number processed: 64
    
    gpg:           w/o user IDs: 4
    
    gpg:               imported: 58  (RSA: 28)
    
    gpg:              unchanged: 2
    
    gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
    
    gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
    
    gpg: next trustdb check due at 2016-03-08
    
    
  5. Do konzole zadáme gpg --verify httpd-2.4.12.tar.bz2.asc a potvrdíme. Dojde k ověření souboru httpd-2.4.12.tar.bz2 podle podpisu httpd-2.4.12.tar.bz2.asc na základě importovaných klíčů ze souboru KEYS.
    
    gpg: Signature made Thu 22 Jan 2015 07:50:22 PM CET using RSA key ID 791485A8
    
    gpg: Good signature from "Jim Jagielski (Release Signing Key) <jim@apache.org>" [unknown]
    
    gpg:                 aka "Jim Jagielski <jim@jaguNET.com>" [unknown]
    
    gpg:                 aka "Jim Jagielski <jim@jimjag.com>" [unknown]
    
    gpg: WARNING: This key is not certified with a trusted signature!
    
    gpg:          There is no indication that the signature belongs to the owner.
    
    Primary key fingerprint: A93D 62EC C3C8 EA12 DB22  0EC9 34EA 76E6 7914 85A8
    
    

Odeslání podepsaného e-mailu

  1. Pokud jsme ještě nepoužili e-mailového klienta na serveru bis.vse.cz, nemáme vytvořenou schránku. Proto si odkudkoliv pošleme e-mail na adresu xname@bis.vse.cz, čímž se nám schránka na tomto serveru založí.
  2. Na serveru bis.vse.cz si spustíme e-mailového klienta. Do konzole napíšeme mutt a potvrdíme.
    
    q:Quit  d:Del  u:Undel  s:Save  m:Mail  r:Reply  g:Group  ?:Help
    
       1 O + Mar 09 nejaka@adresa.cz (  31) Zpráva                                
    
    
    
    
    
    ---Mutt: /var/mail/xname [Msgs:2 Old:1 4.8K]---(threads/date)---------(all)---
    
    
  3. V klientovi bychom měli vidět zprávu, kterou jsme si v prvním kroku poslali. Stiskneme m pro vytvoření nového e-mailu. Pro vyzkoušení podpisu odešleme e-mail sami sobě. Ve spodní části e-mailového klienta napíšeme nyní vedle To: naši adresu ve tvaru xname@bis.vse.cz a potvrdíme. Klient se dále zeptá na předmět. Vedle Subject: napíšeme třeba Ahoj a potvrdíme. Otevře se nám editor pro psaní obsahu zprávy. Napíšeme do něj nějaký text.
    
      GNU nano 2.2.6  File: /tmp/mutt-bis-26129-22480-3433574431273379115 Modified
    
    
    
    Ahoj, tohle je zpráva, kterou podepíšu svým klíčem.
    
    
    
    ^G Get Help  ^O WriteOut  ^R Read File ^Y Prev Page ^K Cut Text  ^C Cur Pos
    
    ^X Exit      ^J Justify   ^W Where Is  ^V Next Page ^U UnCut Text^T To Spell
    
    
  4. Editor pro psaní zprávy ukončíme stiskem Ctrl+X. Poté ještě stiskneme Y a Enter pro uložení změn. Jsme zpět v e-mailovém klientovi.
  5. Stiskneme p, protože chceme naši zprávu podepsat pomocí GPG.
    
    PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear?
    
    
  6. Stiskneme s pro podepsání.
    
    y:Send  q:Abort  t:To  c:CC  s:Subj  a:Attach file  d:Descrip  ?:Help
    
        From: Nase Jmeno <xname@bis.vse.cz>
    
          To: xname@bis.vse.cz
    
          Cc:
    
         Bcc:
    
     Subject: Ahoj
    
    Reply-To:
    
         Fcc: ~/sent
    
         Mix: <no chain defined>
    
    Security: Sign (PGP/MIME)
    
     sign as: <default>      
    
    -- Attachments
    
    - I     1 /tmp/mutt-bis-26129-22480-3433574431273379115[text/plain, 8bit, utf-8, 0.1K
    
    
    
    
    
    
    
    -- Mutt: Compose  [Approx. msg size: 0.1K   Atts: 1]----------------------------
    
    
  7. U položky Security: a sign as: si můžeme všimnout, že je zpráva podepsaná. Stiskneme y pro odeslání. Zadáme heslo k našemu PGP klíči a potvrdíme. Protože jsme zprávu odeslali sami sobě, měli bychom ji nyní vidět na hlavní obrazovce e-mailového klienta (pokud ne, stiskneme některou kurzorovou šipku pro obnovení).
    
    q:Quit  d:Del  u:Undel  s:Save  m:Mail  r:Reply  g:Group  ?:Help
    
       1 O + Mar 09 nejaka@adresa.cz (  31) Zpráva
    
       2  SF Mar 10 To xname@bis. (  26) Ahoj                                       
    
    
    
    -*-Mutt: /var/mail/xname [Msgs:3 Old:1 6.2K]---(threads/date)---------(all)---
    
    
  8. Zprávu s předmětem Ahoj si otevřeme (označíme ji pomocí kurzorových šipek a stiskneme Enter).
    
    i:Exit  -:PrevPg  <Space>:NextPg v:View Attachm.  d:Del  r:Reply  j:Next ?:Help
    
    Date: Tue, 10 Mar 2015 23:28:20 +0100
    
    From: Nase Jmeno <xname@bis.vse.cz>
    
    To: xname@bis.vse.cz
    
    Subject: Ahoj
    
    User-Agent: Mutt/1.5.21 (2010-09-15)
    
    
    
    [-- PGP output follows (current time: Tue 10 Mar 2015 11:33:47 PM CET) --]
    
    gpg: Signature made Tue 10 Mar 2015 11:28:20 PM CET using RSA key ID 1B4A15F7
    
    gpg: Good signature from "Rudolf Booczech <xname@bis.vse.cz>" [ultimate]
    
    Primary key fingerprint: 3920 A9CE 8D92 1967 600A  838E 2C1A 78F9 1B4A 15F7
    
    [-- End of PGP output --]
    
    
    
    [-- The following data is signed --]                         
    
                                                                 
    
    Ahoj, tohle je zpráva, kterou podepíšu svým klíčem.          
    
                                                                 
    
    [-- End of signed data --]                                   
    
    
    
    
    
    
    
    
    
    - SF- 3/3: Nase Jmeno        Ahoj                                  -- (all)
    
    PGP signature successfully verified.                                       
    
    
  9. Můžeme vidět, že zpráva, kterou jsme napsali, je podepsaná, a klíč byl úspěšně ověřen.

Nahrání našeho veřejného klíče na keyserver

  1. Abychom mohli svůj veřejný klíč nahrát na keyserver, potřebujeme znát jeho ID. Do konzole zadáme gpg --list-keys a potvrdíme.
    
    /home/xname/.gnupg/pubring.gpg
    
    --------------------------------
    
    pub   2048R/1B4A15F7 2015-03-09 [expires: 2016-03-08]
    
          Key fingerprint = 3920 A9CE 8D92 1967 600A  838E 2C1A 78F9 1B4A 15F7
    
    uid       [ultimate] Rudolf Booczech <xname@bis.vse.cz>
    
    sub   2048R/5A2E99BD 2015-03-09 [expires: 2016-03-08]
    
    
  2. ID našeho klíče je označeno na výpisu nahoře (pokud máme víc klíčů, najdeme náš osobní, který jsme si vytvořili v prvním návodu na této stránce). Do konzole zadáme gpg --keyserver bis.vse.cz --send-keys 1B4A15F7 a potvrdíme, přičemž 1B4A15F7 je ID našeho klíče, které nemusíme opisovat, stačí ho v konzoli označit a kliknout na něj pravým tlačítkem (tím se zkopíruje na konec zadávání).
    
    gpg: sending key 1B4A15F7 to hkp server bis.vse.cz
    
    
  3. Náš veřejný klíč byl úspěšně odeslán na keyserver bis.vse.cz.

Varianty podepisování souborů

  1. Pokud chceme vytvořit komprimovaný soubor s příponou .gpg s podepisovaným souborem i jeho podpisem, zadáme do konzole gpg --sign soubor.
  2. Pokud chceme vytvořit textový soubor s příponou .asc s podepisovaným souborem i jeho podpisem, zadáme do konzole gpg --clearsign soubor.
  3. Pokud chceme vytvořit binární soubor s příponou .sig a pouze podpisem, zadáme do konzole gpg --detach-sign soubor.
  4. Pokud chceme vytvořit textový s příponou .asc a pouze podpisem, zadáme do konzole gpg --detach-sign --armor soubor.

Příklady k testu

Příklad na extrahování .gpg souboru s podpisem a obsahem

  1. Z keyserveru si stáhneme veřejný klíč uživatele Rudolf Booczech (1B4A15F7). Do konzole zadáme gpg --keyserver bis.vse.cz --recv-key 1B4A15F7 a potvrdíme.
    
    gpg: requesting key 1B4A15F7 from hkp server bis.vse.cz
    
    gpg: key 1DC98243: public key "Rudolf Booczech <xname@bis.vse.cz>" imported
    
    gpg: Total number processed: 1
    
    gpg:               imported: 1  (RSA: 1)
    
    
  2. Klíč uživatele Rudolf Booczech si podepíšeme. Do konzole zadáme gpg --sign-key "Rudolf Booczech" a potvrdíme.
    
    How carefully have you verified the key you are about to sign actually belongs
    
    to the person named above?  If you don't know what to answer, enter "0".
    
    
    
       (0) I will not answer. (default)
    
       (1) I have not checked at all.
    
       (2) I have done casual checking.
    
       (3) I have done very careful checking.
    
    
    
    Your selection? (enter `?' for more information):
    
    
  3. S Rudolfem se osobně sejdeme a podle občanky ověříme jeho identitu. Poté do konzole zadáme 3 a potvrdíme.
    
    Are you sure that you want to sign this key with your
    
    key "Nase Jmeno <xname@bis.vse.cz>" (12345678)
    
    
    
    I have checked this key very carefully.
    
    
    
    Really sign? (y/N)
    
    
  4. Do konzole zadáme y a potvrdíme. Dál budeme muset zadat heslo k našemu privátnímu klíči, který jsme si vytvořili v prvním návodu na této stránce. Heslo zadáme a potvrdíme (psaní hesla se v konzoli nijak neprojevuje).
  5. Soubor fotka.gpg, který je podepsán klíčem uživatele Rudolf Booczech, si stáhneme k sobě do počítače a například pomocí programu WinSCP ho nahrajeme na server bis.vse.cz do svého domovského adresáře.
  6. Podpis souboru ověříme. Do konzole zadáme gpg --verify fotka.gpg a potvrdíme.
    
    gpg: Signature made Wed 11 Mar 2015 10:27:25 PM CET using RSA key ID 1B4A15F7
    
    ...
    
    gpg: Good signature from "Rudolf Booczech <xname@bis.vse.cz>"
    
    ...
    
    Primary key fingerprint: 3920 A9CE 8D92 1967 600A  838E 2C1A 78F9 1B4A 15F7
    
    
  7. Ve výpisu bychom měli vidět Good signature, což znamená, že byl podpis úspěšně ověřen podle importovaného klíče uživatele Rudolf Booczech.
  8. Nyní soubor extrahujeme. Do konzole zadáme gpg --output fotka.jpg --decrypt fotka.gpg a potvrdíme (pokud bychom vynechali část --output fotka.jpg, obrázek by se vypsal do konzole místo do souboru, což vypadá dost zvláštně).
  9. V našem domovském adresáři vznikl soubor fotka.jpg, který si můžeme pomocí programu WinSCP stáhnout k sobě do počítače a na obrázek se podívat.

Příklad na kontrolu podpisu u dvou souborů

  1. Pokud jsme neprovedli krok 1. z předchozího příkladu, provedeme ho (stažení klíče uživatele Rudolf Booczech).
  2. K sobě do počítače si stáhneme soubory a.txt a b.txt a jejich podpisy a.txt.asc a b.txt.asc. Všechny čtyři soubory nahrajeme například pomocí programu WinSCP na server bis.vse.cz do našeho domovského adresáře.
  3. Nejprve ověříme podpis souboru a.txt. Do konzole napíšeme gpg --verify a.txt.asc a potvrdíme.
    
    gpg: Signature made Wed 11 Mar 2015 11:53:40 PM CET using RSA key ID 1B4A15F7
    
    gpg: Good signature from "Rudolf Booczech <xname@bis.vse.cz>" [full]
    
    Primary key fingerprint: 3920 A9CE 8D92 1967 600A  838E 2C1A 78F9 1B4A 15F7
    
    
  4. Ve výpisu vidíme Good signature, takže podpis souboru a.txt je platný.
  5. Nyní ověříme podpis souboru b.txt. Do konzole napíšeme gpg --verify b.txt.asc a potvrdíme.
    
    gpg: Signature made Wed 11 Mar 2015 11:53:46 PM CET using RSA key ID 1B4A15F7
    
    gpg: BAD signature from "Rudolf Booczech <xname@bis.vse.cz>" [full]
    
    
  6. Ve výpisu vidíme BAD signature, takže podpis souboru b.txt není platný. To indikuje, že možná soubor b.txt někdo upravil (bez Rudolfova vědomí) poté, co ho Rudolf podepsal.

Příklad na podepsání souboru tak, aby vznikl textový soubor s původním obsahem i podpisem

  1. Do konzole zadáme gpg --clearsign a.txt a potvrdíme. Vznikne soubor a.txt.asc s původním obsahem i podpisem.

Příklad na zašifrování a podepsání souboru pro konkrétního uživatele

  1. Abychom mohli nějaký soubor zašifrovat pro konkrétního uživatele, potřebujeme jeho veřejný klíč. Zašifrovaný soubor potom dešifruje pouze tento uživatel svým privátním klíčem (a nikdo jiný). Z předchozích příkladů už máme veřejný klíč Rudolfa Bůčka. Pro něj budeme nějaký soubor šifrovat.
  2. Do konzole zadáme gpg --encrypt --sign --armor -r "Rudolf Booczech" a.txt a potvrdíme. Zadáme heslo k našemu privátnímu klíči a potvrdíme. Parametr --encrypt říká, že budeme šifrovat. Parametr --sign říká, že budeme podepisovat. --armor říká, že bude výsledek v textovém formátu. Jméno, které zadáme za parametr -r, je příjemce zašifrovaného souboru (pouze tento člověk může soubor rozšifrovat). Veřejný klíč Rudolfa Bůčka už máme stažený z přechozích příkladů stejně jako soubor a.txt (můžeme použít jakýkoliv jiný).
  3. V našem domovském adresáři vznikl soubor a.txt.asc. Tento soubor může dešifrovat pouze Rudolf Bůček svým privátním klíčem (k zašifrování nám stačil jeho veřejný klíč). Tento soubor nemůžeme dešifrovat doknoce ani my sami. Pokud bychom při šifrování přidali další parametr -r a za něj napsali naše jméno vázané k našemu privátnímu klíči, který jsme si vygenerovali v prvním návodu na této stránce, mohli bychom soubor dešifrovat i my (počet parametrů -r není omezený, soubor lze tedy zašifrovat pro více příjemců).

Řešení příkladů k testu ve Windows pomocí Gpg4win

Import našeho přivátního klíče

  1. GPG můžeme používat i ve Windows v pohodlném grafickém uživatelském prostředí. Z oficiálních stránek Gpg4win si stáhneme poslední verzi aplikace a nainstalujeme ji.
  2. Abychom mohli v aplikaci používat náš stejný privátní klíč, který jsme si vytvořili na serveru bis.vse.cz, nebudeme si nový klíč vytvářet v aplikaci, ale exportujeme si svůj privátní klíč ze serveru a importujeme ho do aplikace v našem počítači. Připojíme se tedy k serveru bis.vse.cz přes SSH a do konzole zadáme gpg --export-secret-key -a "Nase Jmeno" > private, kde Nase Jmeno je naše pravé jméno, které jsme zadali při vygenerování našeho prvního klíče podle prvního návodu na této stránce, a potvrdíme.
  3. Soubor private se nachází v našem domovském adresáři na serveru bis.vse.cz. Například pomocí programu WinSCP si ho stáhneme k sobě do počítače.
  4. Na našem počítači si spustíme aplikaci Kleopatra, kterou máme nainstalovanou po instalaci Gpg4win z prvního kroku. Zvolíme "File" -> "Import Certificates..." a najdeme soubor private, který jsme si stáhli v předchozím kroku (vedle "Název souboru:" bude nutné z nabídky vybrat "Any files (*) (*.*)").
    Import privátního klíče
  5. Potvrdíme úspěšný import. Nyní vidíme certifikát s naším jménem v seznamu importovaných certifikátů. Klikneme na něj pravým tlačítkem a zvolíme "Change Owner Trust...".
    Změna důvěryhodnosti certifikátu
  6. Jedná se o náš vlastní klíč. Označíme proto možnost "This is my certificate" a potvrdíme.
    Označení vlastního klíče
  7. V aplikaci Kleopatra nyní máme importovaný náš vlastní klíč.

Stažení klíče uživatele z keyserveru

  1. Do aplikace Kleopatra musíme nejprve keyserver přidat. Spustíme ji a zvolíme "Settings" -> "Configure Kleopatra...".
    Přidání keyserveru
  2. V části "Directory Services" klikneme na tlačítko "New". Do pole "Server Name" vyplníme bis.vse.cz a zkontrolujeme, že je zatrženo "OpenPGP". Stiskneme "OK".
    Přidání keyserveru
  3. Na keyserveru nyní vyhledáme klíč uživatele Rudolf Booczech. V hlavním okně aplikace zvolíme "File" -> "Lookup Certificates on Server...", kde do pole "Find:" napíšeme "Rudolf" a stiskneme "Search". Ve výsledcích níže označíme uživatele s "Key-ID" 1B4A15F7 a stiskneme "Import".
    Import klíče uživatele z keyserveru
  4. V hlavním okně aplikace nyní vidíme importovaný klíč uživatele Rudolf Booczech.
    Importovaný klíč uživatele
  5. Pro účely příkladů nastavíme klíči tohoto uživatele plnou důvěru. Klikneme na jeho jméno pravým tlačítkem a zvolíme "Change Owner Trust...". V novém okně označíme "I believe checks are very accurate" a potvrdíme.
    Změna důvěry klíče
  6. Pro účely příkladů klíč také certifikujeme naším osobním klíčem, který jsme importovali v předchozím návodu. Klikneme na Rudolfovo jméno pravým tlačítkem a zvolíme "Certify Certificate...".
    Certifikace klíče
  7. V novém okně zatrhneme Rudolfovo jméno a dále zatrhneme "I have verified the fingerprint" (3920A9CE8D921967600A838E2C1A78F91B4A15F7) a stiskneme "Next".
    Ověření fingerprintu klíče
  8. V druhém kroku označíme "Certify for everyone to see" a necháme zaškrtnutou položku "Send certificate to server afterwards". Tím se na keyserveru promítne skutečnost, že jsme certifikovali klíč uživatele Rudolf Booczech. Certifikaci dokončíme stiskem "Certify" a poté "Finish".
    Veřejná certifikace klíče
  9. Stažení a certifikace klíče uživatele Rudolf Booczech je dokončena. Pokud nyní budeme chtít ověřit podpis uživatele Rudolf Booczech, máme v něj plnou důvěru (víme, že je skutečně jeho).

Příklad na kontrolu podpisu u dvou souborů

  1. Soubory jsou podepsány klíčem uživatele Rudolf Booczech. Klíč si musíme stáhnout z keyserveru a podepsat ho (to pokrývají předchozí dva návody).
  2. K sobě do počítače si stáhneme soubory a.txt a b.txt a jejich podpisy a.txt.asc a b.txt.asc.
  3. Nejprve ověříme podpis souboru a.txt. Klikneme pravým tlačítkem na jeho podpis (soubor a.txt.asc) a zvolíme "More GpgEX options" -> "Verify".
    Ověření podpisu souboru
  4. V novém okně stiskneme tlačítko "Decrypt/Verify".
    Ověření podpisu souboru
  5. Vidíme, že podpis byl úspěšně ověřen.
    Úspěšně ověřený podpis
  6. Stejným způsobem ověříme podpis souboru b.txt (ověřujeme podpis v souboru b.txt.asc). Vidíme, že podpis nebyl úspěšně ověřen. To může například znamenat, že soubor b.txt někdo upravil až po jeho podpisu.
    Neúspěšně ověřený podpis

Příklad na zašifrování a podepsání souboru pro konkrétního uživatele

  1. Abychom mohli nějaký soubor zašifrovat pro konkrétního uživatele, potřebujeme jeho veřejný klíč. Zašifrovaný soubor potom dešifruje pouze tento uživatel svým privátním klíčem (a nikdo jiný). Z předchozích příkladů už máme veřejný klíč Rudolfa Bůčka. Pro něj budeme nějaký soubor šifrovat.
  2. Na soubor, který chceme zašifrovat a podepsat, klikneme pravým tlačítkem a vybereme "Sign and encrypt".
    Šifrování a podpis souboru
  3. V novém okně označíme "Sign and Encrypt (OpenPGP only)" a zaškrtneme "Text output (ASCII armor)".
    Šifrování a podpis souboru
  4. V následujícím okně vybereme uživatele, pro kterého chceme soubor zašifrovat. V našem případě označíme Rudolfa a tlačítkem "Add" ho přidáme. Pokračujeme tlačítkem "Next". Aplikace nás upozorní, že jsme nepřidali žádný vlastní klíč k šifrování zprávy, čímž zašifrovaný soubor nebudeme moct rozšifrovat ani my sami (pouze Rudolf). S tím v tomto případě souhlasíme a pokračujeme stiskem "Continue".
    Šifrování a podpis souboru
  5. Protože soubor kromě šifrování také podepisujeme (aby Rudolf věděl, že je skutečně od nás), zeptá se nás v tomto kroku aplikace na privátní klíč, kterým se chceme podepsat. Defaultně je vybrán ten, který jsme importovali v prvním návodu k Gpg4win. Stiskneme "Sign & Encrypt".
    Šifrování a podpis souboru
  6. Aplikace se nás kvůli podpisu zeptá na heslo k našemu privátnímu klíči. Zadáme ho a potvrdíme.
    Šifrování a podpis souboru
  7. Soubor a.txt byl úspěšně zašifrován pro uživatele Rudolf Booczech a podepsán. Zašifrovaný soubor i podpis se nachází v souboru a.txt.asc.
    Šifrování a podpis souboru

Domů

Toto jsou soukromé studijní materiály. Všechny návody jsou poskytovány bez jakékoliv záruky. Všechny postupy provádíte na vlastní nebezpečí.