.. soukromý klíč bývá chráněn heslem (passphrase) proti zneužití jinou osobou
Vytváření klíče ●
gpg –gen-key
●
Volba klíče: –
Pro podpis a šifrování
–
Pro podpis
●
Klíč je elektronický shluk dat
●
Obsahuje informace o majiteli
●
Zadávají se identifikátory: –
●
doba platnosti, mail, jméno
Různé algoritmy (RSA, DSA, El-Gamal, ..)
Vytváření klíče ●
●
RSA (gentlemani Rivest, Shamir, Adleman) –
Dříve patentované, zejména pro bussines použ.
–
Šifrování i podpis
Trocha teorie: –
n = p x q, (p,q jsou prvočísla)
–
texte mod n => šifrované smetí
–
Šifrované smetíd mod n => původní text
–
Veřejný klíč = (e, n)
–
Privátní klíč = (d, n)
Vytváření klíče ●
RSA podepisování –
Místo zprávy se použije její hash (md5, sha1)
–
Hashe mod n => podpis (binární smetí)
–
Podpisd mod n => hash zprávy
–
Původní hash == hash zprávy => podpis OK
Vytváření klíče ●
DSA –
Digital Signing Algorithm
–
patent NIST, pro volné použití
–
Hash jen 160bit (př. SHA1)
–
Délka klíče vždy 1024bitů
–
Volí se délka klíče El-Gamal pro šifrování
–
DSA2 nabízí i jiné hashovací funkce (SHA224, SHA256) (nové GPG)
Vytváření klíče ●
●
Vytvořené klíče –
V adresáři ~/.gnupg
–
Pracuje se s nimi pomocí příkazu gpg
Výpis klíčů –
●
gpg –list-keys <jméno v klíče nebo ID>
Export klíčů do textového souboru –
gpg -a –export <jméno v klíče nebo ID> > soubor
Přidání klíče a správa ●
Veřejný klíč, pokud ho máme jako soubor, můžeme přidat do klíčenky (keyring): –
●
gpg –import soubor.key
Klíč lze editovat –
gpg –edit
Výměna klíčů ●
●
Lze je poslat mailem, na CD/DVD, USB.. Lze je umístit na server, kde je každý najde po celém světě (př. http://pgp.mit.edu) –
●
●
Servery jsou propojené navzájem
Lze nakonfigurovat automatické stahování klíčů ze serveru, pokud je uživatel nemá. Konfigurační soubor: ~/.gnupg/gpg.conf –
Lze v něm nastavit: defaultní klíč, automatické stahování, server pro stahování, metoda, atd.
Výměna klíčů ●
●
Umístění klíče na server –
Buďto na http stránce stačí vložit textový obsah klíče
–
Nebo gpg –send-keys <jména klíčů>
–
Musí ale být nakonfigurovaný server v konfiguračním souboru gpg
Stáhnutí klíče ze serveru –
Ručně skrze http stránku a vyhledávání
–
gpg –recv-keys
–
Lze nakonfigurovat, aby se dělo automaticky
O klíčích ●
Vlastní klíč může mít několik podklíčů
●
První je vždy podepisovací (master)
●
–
Podklíč pro šifrování
–
Podklíč pro podpis
Pak jsou zde další elementy –
Uid (klidně víc) autora, většinou mail nebo foto
–
Podpisy od ostatních klíčů
Podepisování klíčů ●
Po importu klíče jej můžeme podepsat
●
gpg –edit key
●
Nyní jsme v interaktivním režimu
●
Příkaz> sign
●
●
●
Klíč nyní můžeme poslat autorovi a ten jej může vystavit na webu například Každý může ověřit podpisy klíče, pokud má kýžený veřejný klíč Zvyšuje se tím důvěra klíče
Podpis mailu ●
Většina standardních klientů to umí
●
Př. Mutt není třeba vůbec konfigurovat
●
U každého mailu lze:
●
Mutt komunikuje s gpg (automaticky)
●
Nabídne seznam privátních klíčů, kterými se bude podpis realizovat (pokud jich máme víc a nemáme zvolený “defaultní”)
Podepsaný mail ●
●
●
Podpis může ověřit kdokoliv, kdo má veřejný klíč autora. Mutt ověřil podpis:
Pokud nenajde klíč v klíčence, pokusí se ho stáhnout ze serveru (záleží na konfiguraci)
Podepsaný šifrovaný mail ●
●
Dešifrovat mail může jen autor privátního klíče.
Pokud klíč není k dispozici, je vidět jen jakýsi datový soubor v příloze (data.asc).
Příklad – šifrovaná příloha
Příklad – dešifrovaná příloha
Šifrování na řádce ●
Šifrování: gpg -e
●
Dešifrování: gpg -d
●
Lze použít na soubor nebo na tok dat:
●
gpg -e soubor - vytvoří šifrovaný soubor.gpg
●
Stejného výsledku lze dosáhnout takto:
●
cat soubor | gpg -e > soubor.gpg
Šifrování na řádce ●
Můžete mít zašifrovaný soubor a nevíte, jaký klíč použít:
●
gpg soubor.gpg
●
Zjistíte tak informace o šifrování/podpisu:
●
Pokud máte potřebný klíč, budete požádáni o heslo (automatické dešifrování)
Lze šifrovat i tok dat ●
Příklad – kopírování souboru přes síť pomocí programu nc
●
Na straně příjemce: nc -l -p 8881
●
Na straně odesílatele:
●
echo "ahoj" | nc silk.sh.cvut.cz 8881
●
Tímto způsobem pošleme text ahoj na počítač silk.sh.cvut.cz přes port 8881.
Lze šifrovat i tok dat ●
Nyní použijeme program gpg pro šifrování
●
Na straně příjemce: nc -l -p 8881 | gpg
●
Na straně odesílatele:
●
●
●
echo "ahoj" | gpg -e -r 724BC713 | nc silk.sh.cvut.cz 8881 Na straně odesílatele přijmeme šifrovanou zprávu a proto se nás gpg dotáže na heslo k dešifrování. Parametr -r stanovuje, jaký klíč použijeme pro šifrování (-e)
Podepsat lze i soubor ●
●
Soubory lze podepsat a pak ověřit, že pocházejí od autora a ne od podvodníka Podepsání souboru (výsledek: soubor.sig) –
●
gpg -s -b soubor
Ověření podpisu –
gpg --verify soubor.sig soubor
Ověření podeps. souboru ●
Například stáhneme podepsaný program
●
Ověříme podpis:
Rekapitulace ●
●
Veřejný klíč –
K šifrování
–
K ověření podpisu
Privátní klíč –
K dešifrování
–
K podepsání mailů/souborů
Šifrovaný jabber ●
Například klient CenterICQ –
Přímá podpora, stačí mu definovat privátní klíč
–
Automaticky svázaný s programem gpg na systému – sám nabídne privátní klíče
–
Pokud má druhá strana též nadefinovaný klíč k podpisu, komunikace je šifrovaná: