Windows Development Day
28/01/05 Bologna
SSL e Certificati Digitali con VB6 & .NET
Gianluca Cannalire
[email protected]
Microsoft Visual Basic MVP
Agenda
Brevi cenni sulla crittografia
I Certificati Digitali
Firma Digitale di documenti
Protezione di documenti
Autenticazione SSL con certificati digitali
Brevi cenni sulla crittografia
La crittografia ha lo scopo di rendere
segrete le informazioni scambiate tra 2 o
più interlocutori
Permette di autenticare gli interlocutori
nello scambio dei dati
Garantisce l’integrità dei dati durante lo
scambio
Brevi cenni sulla crittografia
Algoritmi a “chiave simmetrica” o a “chiave privata”
Chiave privata
Chiave privata
“°ò[email protected]*”
m
Encrypt
m
“Dato in chiaro”
m
Decrypt
“Dato in chiaro”
Le chiavi sono
identiche tra loro
La sicurezza di una comunicazione criptata dipende solo dalla
segretezza delle chiavi private e non dalla segretezza
dell’algoritmo usato per proteggere il messaggio
Brevi cenni sulla crittografia
Algoritmi a “chiave pubblica” – Segretezza (1/2)
Chiave privata di B
Chiave pubblica di B
B
“°ò[email protected]*”
A
m
“Dato in chiaro”
Encrypt
m
Decrypt
m
“Dato in chiaro”
I dati vengono criptati con la chiave pubblica del destinatario
Tutti possono averla
Non permette di tornare al dato in chiaro
Il destinatario decripta con la sua chiave privata (è l’unico a possederla)
corrispondente alla chiave pubblica.
Brevi cenni sulla crittografia
Algoritmi a “chiave pubblica” - Firma (2/2)
Chiave pubblica di A
Chiave privata di A
B
A
m
“Dato in chiaro”
Sign
m
Verify
“Dato in chiaro”
firmato
I dati vengono firmati con la chiave privata del mittente
Essendo in possesso solo del proprietario, garantisce l’identità del
mittente
Il destinatario verifica la firma con la chiave pubblica del mittente
(liberamente accessibile).
m
Brevi cenni sulla crittografia
Algoritmi di hashing
m
Hashing algo
digest
Partendo da dati di lunghezza variabile, restituiscono una stringa di
lunghezza fissa
Sono algoritmi irreversibili
È impossibile risalire al dato originale
Al variare anche di un solo bit dell’input cambia l’output corrispondente
Offrono una “impronta” del dato orginale
Certificati Digitali (1/3)
Contiene la chiave pubblica ed un set
minimo di informazione sul proprietario
Ha lo scopo di identificare un utente, un
computer o un programma
E’ firmato con la chiave pubblica di una
Certificate Authority (CA)
Ha un periodo di validità predefinito
Può essere rinnovato, sospeso o revocato
dalla Certificate Authority che lo ha
emesso
Le CA pubblicano, periodicamente, le CRL
(certificates revocation list)
Certificati Digitali (2/3)
I certificati vengono rilasciati, dietro verifica
dei dati forniti, da una Certificate Authority
(le modalità, dipendendo dalla CA che emette
il certificato)
I certificati vengono rilasciati in funzione
dell’utilizzo che ne verrà fatto
(SSL, firma elettronica, firma di codice, ecc.
ecc.
Il formato standard attuale dei certificati
digitali è l’ X.509 v3
Possono essere memorizzati su dispositivi
“sicuri” come smart card o token USB
Certificati Digitali (3/3)
Generazione e rilascio di un certificato digitale:
1. Generazione della coppia di chiavi (public/private)
2. Generazione di un CSR (certificate signed request)
contenente informazioni sul richiedente, oltre alla
chiave pubblica generata al punto 1.
3. Il CSR viene firmato con la chiave privata ed inviato
alla CA
4. La CA, verifica la validità delle informazioni contenute
nel CSR e, in caso positivo, rilascia il certificato finale
firmandolo con la propria chiave privata.
5. Alla fine, il certificato conterrà: le informazioni sul
proprietario, la chiave pubblica del proprietario e la
chiave pubblica della CA
Windows Development Day
28/01/05 Bologna
Richiesta e rilascio di un certificato
digitale con la PKI Windows Server
2003
Firma digitale
Garantisce l’autenticità del mittente
Garantisce l’integrità dei dati trasmessi
Garantisce la non ripudiabilità di un
documento (anche la data di apposizione
della firma)
Se il certificato digitale è rilasciato da una
CA riconosciuta dal CNIPA (ex AIPA), la
firma ha valore legale ed è equipollente
alla firma autografa
Non garantisce la riservatezza dei dati
Firma digitale
Processo
1. I dati sono codificati con un algoritmo di
hash, ottenendo un’impronta del
documento (valore di hash)
2. Il valore di hash è cifrato con la chiave
privata del mittente
3. Il certificato del mittente, il valore di hash
cifrato e i dati originali sono inviati al
destinatario
4. Il destinatario decripta il valore di hash
con la chiave pubblica del mittente
presente nel certificato stesso
5. I dati sono passati attraverso l’algoritmo
di hash; i valori di hash sono comparati:
solo identici? Ok, la firma è valida!
Cos’è una “firma”?
PKCS#7
Version
Digest Algorithm
Signer Info 1
Signer Info 2
Signer Info 3
Content
Certificates
Signer Info
Version
CRLs
Serial Number
Signer Infos
Digest Algorithm
Authenticated Attributes
Unauthenticated Attributes
Digital Signature
Firma separata...
Il documento e la firma posso essere separati
La firma è un file in formato PKCS#7
Entrambi i file devo essere disponibili per
verificare la firma
E’ utile quando la si vuole memorizzare in un db
PKCS 7
Signature
Data
File name: file.txt
File name: file.p7m
...Firma allegata
La firma è sempre in formato PKCS#7
Viene generato un singolo file contenente firma
e dati
Comodo: un solo file da gestire
E’ però necessario estrarre i dati per poterli
utilizzare
L’estrazione avviene durante la verifica della
firma
PKCS 7
Data
Signature
File name: file.p7m
Protezione di documenti
Garantisce la riservatezza dei dati
Avviene tramite l’utilizzo di algoritmi di
criptazione simmetrici ed asimmetrici
I dati vengono criptati con algoritmi a chiave
simmetrica (+ veloce)
La chiave privata usata nell’algoritmo
simmetrico, viene a sua volta criptata con la
chiave pubblica presente nel certificato del
destinatario
Il destinatario estrae, tramite la sua chiave
privata, la chiave simmetrica e con questa
decripta i dati
Protezione di documenti
Processo
1. I dati sono codificati vengono con una
chiave simmetrica
2. La chiave simmetrica viene cifrata con la
chiave pubblica del destinatario
3. Il documento viene inviato al destinatario
4. Il destinatario decripta ed estrae, con la
sua chiave privata, la chiave simmetrica
5. Utilizzando lo stesso algoritmo
simmetrico e la chiave estratta, decripta il
contenuto vero e proprio
OK, ma come faccio tutto questo ? ;)
CryptoAPI (hard mode)
CAPICOM 2.0 Library (easy mode)
Wrapper COM delle CryptoAPI
Utilizzabile anche in ambiente .NET (a parte
qualche eccezione che richiede l’uso di
P/Invoke) o qualsiasi altro linguaggio che
supporta COM
Liberamente distribuibile e gratuita (basta
scaricare il CAPICOM SDK)
Funziona da Win9X in poi
Un solo file (<300Kb)
Basta un... regsvr32 capicom.dll
Cosa mi permette CAPICOM
Firma digitale
Usa certificati basati su file, smart card, token
USB
Usa lo standard PKCS#7
Protezione di dati
Chiavi simmetriche
Chiavi pubbliche
Facilita l’accesso ai “Certificate Store”
DialogBox pronte all’uso
Windows Development Day
28/01/05 Bologna
Firma digitale
& Protezione di documenti
Autenticazione SSL dei client
Offre un canale cifrato SSL (privacy)
Evita (o rinforza) l’uso di credenziali da
digitare (username/password)
Garantisce, lato server, l’autenticità del
client
Semplifica le procedure di gestione degli
utenti (si possono utilizzare certificati
rilasciati da CA esterne)
Windows Development Day
28/01/05 Bologna
HTTPS con autenticazione del client
E’ tutto... Per ora! ;)
A partire da marzo, una serie di articoli
dettagliati: “Certificati digitali, dalla A alla Z”
Riferimenti normativi italiani
Applicazioni di esempio complete (VB6, .NET,
WebServices, utilizzo con SQL Server)
Dove? Su http://www.visual-basic.it
[email protected]
Scarica

chiave privata