windows development day 28/01/05 bologna ssl e certificati digitali con vb6&.net ssl e...

24
Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6 SSL e Certificati Digitali con VB6 & & .NET .NET Gianluca Cannalire [email protected] Microsoft Visual Basic MVP

Upload: gioia-torre

Post on 01-May-2015

231 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Windows Development Day28/01/05 Bologna

SSL e Certificati Digitali con VB6SSL e Certificati Digitali con VB6 && .NET.NET

Gianluca [email protected]

Microsoft Visual Basic MVP

Gianluca [email protected]

Microsoft Visual Basic MVP

Page 2: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

AgendaAgenda

Brevi cenni sulla crittografiaI Certificati DigitaliFirma Digitale di documentiProtezione di documentiAutenticazione SSL con certificati digitali

Brevi cenni sulla crittografiaI Certificati DigitaliFirma Digitale di documentiProtezione di documentiAutenticazione SSL con certificati digitali

Page 3: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Brevi cenni sulla crittografiaBrevi cenni sulla crittografia

La crittografia ha lo scopo di rendere segrete le informazioni scambiate tra 2 o più interlocutoriPermette di autenticare gli interlocutori nello scambio dei datiGarantisce l’integrità dei dati durante lo scambio

La crittografia ha lo scopo di rendere segrete le informazioni scambiate tra 2 o più interlocutoriPermette di autenticare gli interlocutori nello scambio dei datiGarantisce l’integrità dei dati durante lo scambio

Page 4: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Brevi cenni sulla crittografiaBrevi cenni sulla crittografiaAlgoritmi a “chiave simmetrica” o a “chiave

privata”Algoritmi a “chiave simmetrica” o a “chiave privata”

mm

Chiave privataChiave privata

EncryptEncrypt DecryptDecrypt mmmm““Dato in chiaro”Dato in chiaro”

Chiave privataChiave privata

Le chiavi sono Le chiavi sono identiche tra loroidentiche tra loro

““Dato in chiaro”Dato in chiaro”

““°ò?@gF45*”°ò?@gF45*”

La sicurezza di una comunicazione criptata dipende solo dalla segretezza delle chiavi private e non dalla segretezza

dell’algoritmo usato per proteggere il messaggio

Page 5: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Brevi cenni sulla crittografiaBrevi cenni sulla crittografiaAlgoritmi a “chiave pubblica” – Segretezza (1/2)Algoritmi a “chiave pubblica” – Segretezza (1/2)

mm

Chiave pubblica di Chiave pubblica di BB

EncryptEncrypt DecryptDecrypt mmmm

Chiave privata di Chiave privata di BB

““Dato in chiaro”Dato in chiaro”

A B““°ò?@gF45*”°ò?@gF45*”

““Dato in chiaro”Dato in chiaro”

I dati vengono criptati con la chiave pubblica del destinatarioTutti possono averlaNon permette di tornare al dato in chiaro

Il destinatario decripta con la sua chiave privata (è l’unico a possederla) corrispondente alla chiave pubblica.

Page 6: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Brevi cenni sulla crittografiaBrevi cenni sulla crittografiaAlgoritmi a “chiave pubblica” - Firma (2/2)Algoritmi a “chiave pubblica” - Firma (2/2)

mm

Chiave privata di Chiave privata di AA

SignSign VerifyVerify mmmm

Chiave pubblica di Chiave pubblica di AA

““Dato in chiaro”Dato in chiaro” ““Dato in chiaro”Dato in chiaro”firmatofirmato

BA

I dati vengono firmati con la chiave privata del mittenteEssendo in possesso solo del proprietario, garantisce l’identità del mittente

Il destinatario verifica la firma con la chiave pubblica del mittente (liberamente accessibile).

Page 7: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Brevi cenni sulla crittografiaBrevi cenni sulla crittografia

Algoritmi di hashingAlgoritmi di hashing

mm Hashing algoHashing algo digestdigest

Partendo da dati di lunghezza variabile, restituiscono una stringa di lunghezza fissaSono algoritmi irreversibili

È impossibile risalire al dato originale

Al variare anche di un solo bit dell’input cambia l’output corrispondenteOffrono una “impronta” del dato orginale

Page 8: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Certificati Digitali (1/3)Certificati Digitali (1/3)Contiene la chiave pubblica ed un set minimo di informazione sul proprietarioHa lo scopo di identificare un utente, un computer o un programmaE’ firmato con la chiave pubblica di una Certificate Authority (CA)Ha un periodo di validità predefinitoPuò essere rinnovato, sospeso o revocato dalla Certificate Authority che lo ha emessoLe CA pubblicano, periodicamente, le CRL (certificates revocation list)

Contiene la chiave pubblica ed un set minimo di informazione sul proprietarioHa lo scopo di identificare un utente, un computer o un programmaE’ firmato con la chiave pubblica di una Certificate Authority (CA)Ha un periodo di validità predefinitoPuò essere rinnovato, sospeso o revocato dalla Certificate Authority che lo ha emessoLe CA pubblicano, periodicamente, le CRL (certificates revocation list)

Page 9: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Certificati Digitali (2/3)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 v3Possono essere memorizzati su dispositivi “sicuri” come smart card o token USB

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 v3Possono essere memorizzati su dispositivi “sicuri” come smart card o token USB

Page 10: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Certificati Digitali (3/3)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

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

Page 11: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Windows Development Day28/01/05 Bologna

Richiesta e rilascio di un certificato Richiesta e rilascio di un certificato digitale con la PKI Windows Server digitale con la PKI Windows Server 20032003

Page 12: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Firma digitaleFirma digitale

Garantisce l’autenticità del mittenteGarantisce l’integrità dei dati trasmessiGarantisce 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 autografaNon garantisce la riservatezza dei dati

Garantisce l’autenticità del mittenteGarantisce l’integrità dei dati trasmessiGarantisce 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 autografaNon garantisce la riservatezza dei dati

Page 13: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Firma digitaleFirma digitale

Processo1. 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!

Page 14: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Cos’è una “firma”?Cos’è una “firma”?PKCS#7PKCS#7

VersionVersion

Digest AlgorithmDigest Algorithm

ContentContent

CertificatesCertificates

CRLsCRLs

Signer InfosSigner Infos

Signer Info 1Signer Info 1

Signer Info 2Signer Info 2

Signer Info 3Signer Info 3

Signer InfoSigner Info

VersionVersion

Serial NumberSerial Number

Digest AlgorithmDigest Algorithm

Authenticated AttributesAuthenticated Attributes

Unauthenticated AttributesUnauthenticated Attributes

Digital SignatureDigital Signature

Page 15: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Firma separata...Firma separata...

Il documento e la firma posso essere separatiLa firma è un file in formato PKCS#7Entrambi i file devo essere disponibili per verificare la firmaE’ utile quando la si vuole memorizzare in un db

PKCS 7PKCS 7

SignatureSignatureDataData

File name: file.p7mFile name: file.p7mFile name: file.txtFile name: file.txt

Page 16: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

...Firma allegata...Firma allegataLa firma è sempre in formato PKCS#7 Viene generato un singolo file contenente firma e datiComodo: un solo file da gestireE’ però necessario estrarre i dati per poterli utilizzare

L’estrazione avviene durante la verifica della firma

PKCS 7PKCS 7

SignatureSignatureDataData

File name: file.p7mFile name: file.p7m

Page 17: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Protezione di documentiProtezione di documenti

Garantisce la riservatezza dei datiAvviene 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

Page 18: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Protezione di documentiProtezione di documenti

Processo1. I dati sono codificati vengono con

una chiave simmetrica2. 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

Page 19: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

OK, ma come faccio tutto questo ? ;)OK, ma come faccio tutto questo ? ;)

CryptoAPI (hard mode)CAPICOM 2.0 Library (easy mode)

Wrapper COM delle CryptoAPIUtilizzabile anche in ambiente .NET (a parte qualche eccezione che richiede l’uso di P/Invoke) o qualsiasi altro linguaggio che supporta COMLiberamente distribuibile e gratuita (basta scaricare il CAPICOM SDK)Funziona da Win9X in poiUn solo file (<300Kb)Basta un... regsvr32 capicom.dll

CryptoAPI (hard mode)CAPICOM 2.0 Library (easy mode)

Wrapper COM delle CryptoAPIUtilizzabile anche in ambiente .NET (a parte qualche eccezione che richiede l’uso di P/Invoke) o qualsiasi altro linguaggio che supporta COMLiberamente distribuibile e gratuita (basta scaricare il CAPICOM SDK)Funziona da Win9X in poiUn solo file (<300Kb)Basta un... regsvr32 capicom.dll

Page 20: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Cosa mi permette CAPICOMCosa mi permette CAPICOM

Firma digitaleUsa certificati basati su file, smart card, token USBUsa lo standard PKCS#7

Protezione di dati Chiavi simmetricheChiavi pubbliche

Facilita l’accesso ai “Certificate Store”DialogBox pronte all’uso

Page 21: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Windows Development Day28/01/05 Bologna

Firma digitaleFirma digitale& Protezione di documenti& Protezione di documenti

Page 22: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Autenticazione SSL dei clientAutenticazione 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 clientSemplifica le procedure di gestione degli utenti (si possono utilizzare certificati rilasciati da CA esterne)

Offre un canale cifrato SSL (privacy)Evita (o rinforza) l’uso di credenziali da digitare (username/password)Garantisce, lato server, l’autenticità del clientSemplifica le procedure di gestione degli utenti (si possono utilizzare certificati rilasciati da CA esterne)

Page 23: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

Windows Development Day28/01/05 Bologna

HTTPS con autenticazione del clientHTTPS con autenticazione del client

Page 24: Windows Development Day 28/01/05 Bologna SSL e Certificati Digitali con VB6&.NET SSL e Certificati Digitali con VB6 &.NET Gianluca Cannalire gianluca@visual-basic.it

E’ tutto... Per ora! ;)A partire da marzo, una serie di articoli dettagliati: “Certificati digitali, dalla A alla Z”Riferimenti normativi italianiApplicazioni di esempio complete (VB6, .NET, WebServices, utilizzo con SQL Server)Dove? Su http://www.visual-basic.it

E’ tutto... Per ora! ;)A partire da marzo, una serie di articoli dettagliati: “Certificati digitali, dalla A alla Z”Riferimenti normativi italianiApplicazioni di esempio complete (VB6, .NET, WebServices, utilizzo con SQL Server)Dove? Su http://www.visual-basic.it

[email protected]