Firme digitali e crittografia in Linux con GnuPG
Introduzione e usi pratici
TiLUG day primavera 2007
9 giugno 2007
Introduzione
- Concetti fondamentali:
- crittografia
- hashing a senso unico
- firme digitali
- In pratica:
- gnupg (gpg)
- enigmail (trhunderbird/icedove)
- Non si parla (in questa presentazione) sugli
- matematica, algoritmi, protocolli
- altri usi, SSL, sicurezza, ...
La crittografia non aumenta la sicurezza!
GnuPG (gpg)
progetto della GNU, sviluppato principalmente in Germania (Werner Koch)
command line (gpg), ed usato come backend per le varie GUI
Sostituisce PGP (Pretty Good Privacy di Philip Zimmermann)
http://www.gnupg.org
gpg --version --cipher-algo algoritmi supportati:
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
Crittografia a chiave simmetrica
- Chiave comune
- molto sicuro, chiavi a 128bit
- 3DES, blowfish, IDEA, ...
- molto veloce, richiede poche risorse
- Difetti:
- come scambio le chiavi?
- non permette firme digitali
Chiave simmetrica con gpg
- Codificare (comprime il file) doc.txt in doc.txt.gpg:
- Decodificare doc.txt.gpg in doc.txt:
- gpg --decrypt doc.txt.gpg
- Opzioni principali di gpg (valido in tutti i modi)
- --output file scrive sul file
- --armor scrive in ascii (adatto per le email)
Crittografia a chiave pubblica
Chiave publica per criptare, chiave privata per decodificare.
- Scambio di chiavi semplificato:
- una chiave per persona
- chiave pubblica, quindi si puo' pubblicare sull'homepage
- Lento
- richiede chiavi piu' grandi (almeno 1024 bit)
- RSA, ElGamal, DSA
- Sicurezza non garantita in caso di nuove scoperte matematiche
Crittografia: sistemi ibridi
- Generazione di una chiave simmetrica (session key)
- criptare il documento con la chiave simmetrica
- criptare la chiave simmetrica con la chiave publica
- distribuire il documento e la chiave criptata
- Forma piu' comune, veloce, puo' avere piu' mittenti
- Richiede un buon generatore di numeri casuali!
Crittografia a chiave pubblica con gpg
In realta' e' un sistema ibrido
- Codificare: gpg --encrypt --recipient alice@tilig.ch doc.txt
- anche con piu' --recipient
- supporta --output, --armor
- comprime il file (tranne con --armor
Decodificare: gpg --decypt doc.txt.gpg
- Piu' tardi vediamo come generare e come gestire le chiavi
Hashing a senso unico
MD5, SHA1, SHA256
- Un codice di integrita':
- riassume un documento in pochi bit (da 128bit)
- praticamente impossibile trovare due documenti identici
- praticamente impossibile modificare un documento mantenendo la stessa hash
Firma digitale
Combina l'hasing a senso unico con la crittografia publica, ma funziona solo con alcuni algoritmi
Si certifica ogni singolo byte (e nella giusta posizione), spazi bianchi compresi
OpenPGP (RFC-2440) definisce lo standard di interoperabilita'
Serve la chiave del mittente
Firma digitale con gpg
firma: gpg --sign doc.txt (comprime e file binario)
verifica: gpg --verify doc.txt
Verificare ed estrarre: gpg --decrypt doc.txt
Firma chiara (non modifica il testo, usato nelle email): --clearsign
Firma staccata --detach (e --verify per controllare), usata per verificare gli archivi
Gestione delle firme
creare una nuova chiave: gpg --gen-key
Revokation certificate:
- exportare una chiave:
- file: gpg --armor --export chiave
- key server: gpg --send-key chiave
- importare una chiave
- file: --import
- key server: recv-key
Fingerprint
rete di fiducia (Web of trust)
blabla
include:: licence.en.rst
.. include:: common.inc
.. footer:: TiLUG day primavera 2007 9 giugno 2007