2. Cifratura asimmetrica
Rivoluzione nel campo della crittografia: finora abbiamo avuto
permutazioni e sostituzioni
Problema: come ci si scambia la chiave? Il canale deve essere sicuro!
DH: 束Che scopo ha sviluppare sistemi sistemi crittografici impenetrabili se poi
gli utenti sono costretti a condividere le chiavi con un centro che pu嘆 essere
violato?損
La chiave si divide in due: chiave pubblica (conosciuta da tutti) e
chiave privata (conosciuta da me)
4. Esempio
Alice ha la sua coppia di chiavi: < 情
+
, 情
> (+ pubblica, - privata)
Bob ha la sua coppia di chiavi: <
+
,
>
Se Alice vuol mandare un messaggio a BOB:
+ =
Bob lo decifra come
=
Se Alice vuol mandare un messaggio firmato a BOB:
=
Bob lo autentica come
+ =
5. Algoritmo di Rivest/Shamir/Adleman
RSA, lalgoritmo di cifratura asimmetrica pi湛 utilizzato
Schema a blocchi, usa espressione con valori esponenziali.
= e
= = =
Ovviamente n deve essere conosciuto sia al mittente che al
destinatario. Il mittente conosce il valore di e mentre il destinatorio
conosce il valore di d.
Chiave Pubblica = {e,n}, Chiave Privata = {e,d}
6. Toziente
Funzione definita per ogni intero positivo n come il numero degli
interi compresi fra 1 e n che sono coprimi con n.
8 = 4 ovvero 1,3,5,7
Due numeri sono coprimi se non hanno nessun divisore eccetto 1 o -1
7. Il modulo
Dato linsieme N dei numeri interi, si definisce loperazione di modulo,
che da come risultato il resto della divisione euclidea. Da wiki:
13 3 = 1,
13
3
= 4, 13 4 3 = 1
Nota: 3 4 = 3, 他 = 0, 3 4 0 = 3, <
Congruenza:
( ) se 竪 multiplo di n, o = ( )
38 14 12 perch辿 38-14 = 24, multiplo di 12.
8. RSA
Si deve trovare e, d, tale che
= .
Siano dati p, q, primi, si ha: = ( 1)( 1) quindi
= 1, quindi (Massimo Comun Divisore 竪 1)
1 () per cui si ha la relazione ricercata
1
()
9. RSA
Lo schema RSA 竪 quindi
p,q, sono due numeri primi Privati e scelti
N = pq Pubblico, calcolato
e, con 駒 , = 1 Pubblico, scelto
1
() Privato, calcolato
CHIAVE PUBBLICA E,n
CHIAVE PRIVATA D,n
10. Esempio RSA
Prendiamo due numeri primi: p=17, q=11
n = pq = 17x11 = 187
= 1 1 = 16 10 = 160
Sia e tale che sia primo con 160 e minore di 160: e=7
Determinare d tale che 1 160 < 160. d=23,
23x7=161=10x160+1.
Pubblica: {7,187}, privata {23, 187}
11. Cifrare un messaggio
Vogliamo cifrare M=88, per cui = 887 187
Con la calcolatrice si ha
887 187
= 884
187 882
187 88 187 187 =
88 77 132 187 = 894432 187 = 11
Si invier 11
Per la decrittografia, si calcola
1123 187 = 88
12. Costi
Algoritmo MOLTO oneroso
Solitamente e viene scelto in modo fissato
Usato per lo scambio di chiavi
13. OpenSSL
Ovviamente OpenSSL supporta RSA
I numeri di aritmetica modulare devono comunque essere scritti su
file
stato scelto di usare lelegante modo Abstract Syntax Notation One
(ASN.1), che definiscono tipi di dato e strutture dati.
NB: Tutto ci嘆 che 竪 tipato riduce drammaticamente gli errori
PKCS: Standard che descrivono il tipo di dato usando ASN.1 (chi
conosce PKCS7?)
14. Esempio: chiave privata RSA
Rfc3447 (PKCS#1)
RSAPrivateKey ::= SEQUENCE{
version Version,
modulus INTEGER,--n
publicExponent INTEGER,--e
privateExponent INTEGER,--d
prime1INTEGER,--p
prime2INTEGER,--q
exponent1 INTEGER,--d mod (p-1)
exponent2 INTEGER,--d mod (q-1)
coefficient INTEGER,--(inverseof q) mod p otherPrimeInfos OtherPrimeInfos OPTIONAL
}
15. ASN.1 ha bisogno di codifica
Il modo in cui i dati vengono scritti su un file cambia la semantica di
lettura
I pi湛 usati sono Distinguished Encoding Rules (DER) e Privacy
Enhanced Mail (PEM)
Se utilizzerete application servers scritti in Java (e.g., Tomcat, Wildfly)
avrete a che fare con DER, se usate apache e sistemi scritti usando
libssl, avrete a che fare con PEM
DER: un solo oggetto per file
PEM: multipli oggetti per file, uno dopo laltro (base64 encoded)
16. OpenSSL
Generare una chiave
max@spirit6 ~/Desktop/Corso PIN/t $ openssl genrsa 128 -out ciao.key
Generating RSA private key, 128 bit long modulus
.+++++++++++++++++++++++++++
....+++++++++++++++++++++++++++
e is 65537 (0x10001)
-----BEGIN RSA PRIVATE KEY-----
MGMCAQACEQDFOIDYOTGA29wSh7KoapvdAgMBAAECEFuVBnfh7zP3lAOwFQkeQeEC
CQDi0TMPPUOnhQIJAN6YeAm9TxZ5AgkAnhueMB1Qr9ECCQCAmQlQZyQX0QIIYkAq
S2nqog8=
-----END RSA PRIVATE KEY-----
22. Esercizi
Generare ognuno una coppia di chiavi
Distribuire le chiavi a tutti gli altri
Cifrare un messaggio per un compagno
Il destinatario decifra
23. Esercizi
Generare tutti una coppia di chiavi
Dare le chiavi a me
Un compagno firma per un altro
Si verifica la firma
Chi sono io? Come garantisco lautenticit dei dati? Ma 竪 una vera
firma? E se qualcuno ha cambiato il messaggio?
24. Public Key Infrastructure
Il meccanismo a chiave pubblica e privata garantisce un modo
efficiente per scambiarsi una chiave (pubblica)
Ma come garantire che il proprietario della chiave pubblica sia
identificato? (IA&A problem)
Si parla di trust model
25. PKI / Trust Model
Direct Trust: io mi fido solamente di un principal che conosco
Direct Brokered Trust: Io mi fido solamente di una terza parte, di cui si
fida Bob (Security Token Service, o Identity Provider)
Indirect Brokered Trust: Io mi fido solamente di un broker, che si fida
di un altro broker che si fida di Bob (eHDSI)
(Disegna i modelli)
26. Pretty Good Privacy
PGP di Phil Zimmermann
Esempio di Direct Trust: ci si scambia una impronta della chiave
pubblica a mano
Si aggiunge manualmente le chiavi dei destinatari (email) ad un
truststore
28. PGP Encrypt
max@spirit6 ~ $ gpg --encrypt --output massi.enc
max@spirit6 ~ $ gpg --decrypt massi.enc
gpg: encrypted with 2048-bit RSA key, ID 1CBFFE0E28D226B0, created
2019-03-23
"Massimiliano Masi <max@mascanc.net>"
Ciao
29. Efficiente, ma quali sono i problemi?
Scambio della chiave, richiede un sistema di autenticazione out of
band per ogni destinatario (la conoscenza personale)
Come si ovvia?
Uso di una Trusted Third Party: la Certification Authority
30. PKI
Una Certification Authority (CA) insieme ad una Registration
Authority (RA) fornisce le seguenti funzionalit
Identificazione dei principal
Emissione di Certificati, per uno scopo
Mantenimento di una directory di certificati (chiave pubblica +
qualcosaltro)
Mantenimento di una lista di certificati revocati accessibile
attraverso dei Distribution Point
Servizi di validazion
31. Certification Authority
Una CA ha un certificato autofirmato (self-signed), chiamato ROOT
(radice)
Pu嘆 emettere ulteriori certification authorities
ben regolata.
32. eIDAS (EU 910/2014)
Il regolamento europeo di identificazione elettronica e firma digitale
(eID and Advanced Signature) instaura fiducia in ambienti online per
lo sviluppo economico e sociale.
Regolamento: tutti gli stati membri lo attuano cos狸 com竪:
armonizzazione della sicurezza in europa, un risultato enorme
Direttiva: tutti gli stati membri la recepiscono e la attuano secondo il
contesto locale
33. eIDAS
Avanza lo stato della Signature Directive (1999/93/CE) e
linteroperabilit delle firme fra stati
Estende il trattamento dei dati personali in materia di servizi di
sicurezza (sia 95/46/CE che GDPR)
Implementa la sicurezza per l損agenda digitale europea損:
armonizzazione delle strutture pubbliche che garantisce il pilastro
della libert di movimento
Uno stato membro non pu嘆 essere considerato come vettore di
attacco verso altri stati
34. eIDAS
Abbatte le barriere esistenti allimpiego trasfrontaliero dei mezzi di
identificazione elettronica: lautenticazione italiana vale in germania
che vale in slovenia che vale in portogallo
Non si applica a sistemi chiusi contemplati dal diritto nazionale o da
accordi conclusi tra un insieme definito di partecipanti
35. eIDAS
Larticolo 3, Definizioni, fornisce materiale legale per i sistemi di
sicurezza fra cui:
Firma Elettronica, avanzata, e qualificata: 束firma elettronica
qualificata損, una firma elettronica avanzata creata da un dispositivo
per la creazione di una firma elettronica qualificata e basata su un
certificato qualificato per firme elettroniche;
Certificato 束qualificato損? E la CA?
36. eIDAS
束certificato di firma elettronica損, un attestato elettronico che collega i
dati di convalida di una firma elettronica a una persona fisica e
conferma almeno il nome o lo pseudonimo di tale persona;
束certificato qualificato di firma elettronica損, un certificato di firma
elettronica che 竪 rilasciato da un prestatore di servizi fiduciari
qualificato ed 竪 conforme ai requisiti di cui allallegato I;
37. eIDAS CA: Servizio Fiduciario
束servizio fiduciario損, un servizio elettronico fornito normalmente
dietro remunerazione e consistente nei seguenti elementi:
creazione, verifica e convalida di firme elettroniche, sigilli elettronici o
validazioni temporali elettroniche, servizi elettronici di recapito certificato e
certificati relativi a tali servizi; oppure
creazione, verifica e convalida di certificati di autenticazione di siti web; o
conservazione di firme, sigilli o certificati elettronici relativi a tali servizi;
(in inglese lo troverete come Trusted Service Provider, TSP)
38. eIDAS: TSP
Quindi una CA 竪 ben definita da eIDAS, dal Capo III: Servizi Fiduciari
Esiste una lista, mantenuta dalla commissione, di una serie di TSP
chiamata 束Trusted Service List損 che garantisce interoperabilit fra
certificati emessi dalle CA e i loro seguenti audit
https://www.agid.gov.it/it/piattaforme/eidas/servizi-fiduciari