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, l’algoritmo 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 l’insieme N dei numeri interi, si definisce l’operazione 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 l’elegante 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 l’altro (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 l’autenticità 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 +
qualcos’altro)
• 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
l’interoperabilità 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 all’impiego trasfrontaliero dei mezzi di
identificazione elettronica: l’autenticazione 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
• L’articolo 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 all’allegato 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