L’identità digitale è essenzialmente un codice univoco assegnato a persona o dispositivo. E’ l’equivalente della carta di identità o del passaporto, nel mondo reale.
Per essere valida, un’identità dovrebbe essere verificabile dall’intera comunità, ad esempio tramite un’autorità di certificazione riconosciuta come tale.
Prendiamo ad esempio la Carta di Identità. Per richiederla è necessario rivolgersi al proprio Comune di Residenza o alla Prefettura, che nel caso specifico rappresentano le autorità di certificazione riconosciute. Il più delle volte, sarà necessario recarsi all’ufficio Anagrafe di persona, portando con se delle fototessere. Allo sportello, ci verranno chieste sia le generalità (nome, cognome, data di nascita, luogo di nascita, comune di residenza, stato civile nubile/celibe) che altre informazioni sul nostro aspetto fisico (viso/fototessera, altezza, colore degli occhi)
A quel punto l’impiegato del Comune verifica le informazioni fornite :
- La corrispondenza tra il nostro aspetto reale e quanto fornito (fototessera, altezza, colore degli occhi)
- La corrispondenza tra le informazioni anagrafiche conosciute (già precedentemente acquisite e certificate) e quanto fornito.
Tali verifiche sono utili a ridurre il rischio di furto di identità.
L’impiegato comunale a quel punto prenderà presumibilmente un modello cartaceo prestampato numerato, su cui appiccicherà una delle nostre fototessere, trascrivendo una ad una su di esso le ulteriori informazioni precedentemente acquisite e verificate. Ci farà apporre una firma sul prestampato a validare quanto riportato, ed infine certificherà il documento di identità con la sua firma e la data di scadenza del documento (o di fine validità, che normalmente è a 10 anni).
Prima di renderci la nuova Carta di Identità, ne effettuerà inoltre la plastificazione, come misura anti contraffazione. Le nuove Carte di Identità elettroniche, su banda magnetica (o chip), migliorano questo aspetto, rendendone più complicata la contraffazione e replicazione.
Avere un documento di identità, specie per gli adulti, è un obbligo, ed è necessario mostrarlo ogni qualvolta si vuol accedere in un luogo, in cui è indispensabile fornire la propria identità; o anche per strada, durante un controllo di Polizia.
In altri casi, non è sempre necessaria la fase di autenticazione. Nessuno chiederà le nostre generalità al bar, alla fermata dell’autobus, o durante una fugace discussione con uno sconosciuto, per strada. Molte delle nostre azioni sono svolte in perfetto anonimato.
E’ fondamentale capire tali concetti, quando in futuro sentiremo parleremo di Privacy.
Se io chiedessi ad uno sconosciuto, per strada, di fornirmi le sue generalità, senza averci alcun titolo, potrei ricadere in un illecito. Le informazioni personali non dovrebbero essere fornite al primo sconosciuto. Le persone preposte ed autorizzate normalmente sono riconoscibili ad esempio da una divisa, o da un cartellino al petto, oppure operano in un luogo che indirettamente le identifica (posta, banca, comune, etc.).
In pratica, la regola dovrebbe essere la mutua autenticazione.
E’ buona norma presentarsi, prima di chiedere le generalità dell’altro.
Sul territorio dello Stato Italiano (ma è così un po’ ovunque), senza un documento di identità non è possibile aprire un conto corrente o incassare un assegno, in banca. Non è possibile stipulare un contratto per la fornitura di corrente, di gas o d’acqua. Non possibile acquistare un bene di un certo valore (automobili, casa). Non è possibile stipulare un contratto di affitto, noleggiare un auto. Soggiornare in albergo.
Le rete Internet, è sempre più regolamentata e modellata, per essere, una fedele proiezione del mondo reale. Nel 2023, tramite un qualsiasi dispositivo connesso alla rete possiamo assolvere a molti dei compiti, precedentemente elencati.
Tutto questo è possibile anche grazie all’autenticazione a chiavi asimmetriche. Esistono altri meccanismi ugualmente validi, quali : l’autenticazione a doppio fattore e autenticazione biometrica, di cui parleremo in futuro.
Chiavi Asimmetriche.
Il concetto di base è molto semplice.
Esistono in natura coppie di chiavi (stringhe), che permettono di cifrare e decifrare un messaggio. Va a dire che : se cifro il messaggio con la prima chiave, dovrò necessariamente utilizzare la seconda chiave per riportarlo nuovamente in chiaro. Ripeto : Indipendentemente da quale delle due chiavi venga utilizzata per la cifratura, l’altra sarà l’unica, capace di riportarlo nuovamente in chiaro.
Per convenzione chiamo una delle due chiavi: Privata, e l’altra Chiave Pubblica.
Gli scopritori di questo meccanismo furono tre ricercatori americani : Diffie, Hellman e Merkle.
Questa sensazionale scoperta è alla base dei più avanzati sistemi di autenticazione odierni.
Supponiamo che BOB abbia una coppia di chiavi asimmetriche, quindi una chiave privata e la corrispondente chiave pubblica. La chiave privata dovrà essere mantenuta segreta, dovrà quindi conoscerla esclusivamente BOB, mentre quella pubblica potrà divulgarla a chiunque, e con qualsiasi mezzo.
Chiariamo 3 concetti base :
Per Autenticità si intende che il messaggio ricevuto, risulta inviato senza ombra di dubbio dal mittente. (esempio: questa banconota da 500 euro è autentica, perché ha la filigrana che solo la Banca Europea riesce ad inserire )
Per Integrità si intende che il messaggio lungo il percorso non ha subito modifiche. (Come vedremo, la cifratura asimmetrica garantisce l’integrità – Nella realtà : << Per la tua integrità, viaggerai in un auto blindata! >> )
Per Riservatezza si intende che, nessuno (se non il destinatario) è capace di leggere il messaggio. (Esempio : quante volte ci è capitato di sentire << Non posso dirtelo… E’ un informazione riservata ! >> )
Vediamo come ottenere Autenticità, Integrità e Riservatezza utilizzando le chiavi asimmetriche :
Caso d’uso 1 : Come ottenere Autenticità ed Integrità.
Domanda: Come fa Alice ad essere sicura che il messaggio ricevuto, provenga realmente da BOB, e che non risulti contraffatto? Risposta: Per esserne sicura, BOB dovrà cifrare il messaggio con la sua chiave Privata, in maniera tale che ALICE una volta ricevuto possa riportarlo in chiaro utilizzando la chiave pubblica di BOB. Se riuscirà a riportare in chiaro un messaggio con Chiave Pubblica di BOB potrà essere sicura che il messaggio provenga realmente da BOB, ed inoltre che il messaggi non sia stato contraffatto lungo il percorso.
Attenzione, però […] Vi pongo una domanda : che senso ha la cifratura di un messaggio, se tutti possono liberamente riportarlo in chiaro? Operazione inutile e dispendiosa, direi.
Per l’autenticità è preferibile il metodo della firma.
La firma potremmo pensarla come alla cifratura sempre con chiave privata, ma non dell’intero messaggio, bensì della sola impronta di quel messaggio. Immaginate le impronte del nostri pollici, sono simili ma non uguali. Ogni pollice ha un impronta differente. Analogamente, anche un contenuto digitale ha una sua impronta univoca. Pertanto, se BOB cifra con la sua chiave Privata l’impronta del messaggio, equivale ad averlo firmato.
Quando Alice riceverà il messaggio (accompagnato dalla firma), per decretarne l’autenticità dovrà verificarne la firma: aprirlo con la Chiave Pubblica di BOB, e trovarci all’interno l’impronta del messaggio ricevuto. Geniale !
Caso d’uso 2 : Come ottenere Riservatezza ed integrità.
Domanda: Come fa Alice ad inviare messaggio segreto che possa essere letto esclusivamente da BOB, e che non venga inoltre contraffatto lungo il percorso. Risposta: ALICE dovrà cifrare il messaggio utilizzando la chiave pubblica di BOB, in maniera tale da essere riportato in chiaro esclusivamente utilizzando la Chiave Privata di BOB, che solo lui detiene. Se qualcuno sul tragitto tentasse di contraffare il messaggio, non apparirebbe più leggibile una volta giunto a BOB.
Caso d’uso 3 : Come ottenere Autenticità, Riservatezza ed Integrità.
Domanda: come fa BOB ad inviare un messaggio segreto che possa leggere esclusivamente ALICE, fornendo a quest’ultima la prova certa che sia stato inviato realmente da BOB, e non da EVA ? Risposta: BOB dovrà cifrare il messaggio due volte. Una prima volta con la sua chiave Privata in maniera tale da firmarlo, ed una seconda volta con la Chiave Pubblica di ALICE, in maniera tale che possa leggerlo solo chi possiede la corrispondente Chiave Privata. Alice per poterlo leggere dovrà decifrarlo due volte. La prima volta per la sua chiave Privata (Riservatezza), e la seconda volta per la chiave Pubblica di BOB (Autenticità). Se riuscirà a riporta re in chiaro il messaggio sarà la prova ulteriore che il messaggio è integro, cioè che non risulti manomesso lungo il tragitto.
Oppure, analogamente al Caso d’uso 1, firmare il messaggio, e cifrare il messaggio con la pubblica di Alice. La firma autentica il messaggio, mentre la cifratura lo rende riservato, leggibile esclusivamente ad Alice.
Passiamo ora a generare una coppia di chiavi asimmetriche : Privata e Pubblica, utilizzando OpenSSL, ed a realizzare comunicazioni : autenticate, integre e riservate.
OpenSSL è un software libero, disponibile all’indirizzo http://www.openssl.org.
Chiave Privata.
La chiave privata ha due caratteristiche fondamentali :
- Lunghezza
- Algoritmo usato per la cifratura
Entrambe determinano il livello di sicurezza, ossia quanto concedete o non concedere ad un potenziale truffatore o ad un ficcanaso di contraffare la vostra identità, o leggere i vostri appunti più confidenziali. Più si innalza il livello di sicurezza e più c’è un degrado prestazionale ad esempio nel cifrare una comunicazione, o firmare digitalmente un documento.
Per sapere che algoritmi di cifratura la nostra versione di OpenSSL supporta, possiamo richiedere l’help della funzione genrsa.
Nel caso specifico, la versione di OpenSSL che attualmente utilizzo, supporta per l’encrypted, i seguenti algoritmi : aes128|192|256, camellia128|196|256, oltre a des, des3 ed idea (algoritmi questi ultimi considerati non del tutto sicuri, quindi non raccomandati).
alfree$ openssl genrsa help
usage: genrsa [-3 | -f4] [-aes128 | -aes192 | -aes256 |
-camellia128 | -camellia192 | -camellia256 | -des | -des3 | -idea]
[-out file] [-passout arg] [numbits]
-3 Use 3 for the E value
-f4 Use F4 (0x10001) for the E value
-F4 Use F4 (0x10001) for the E value
-aes128 Encrypt PEM output with CBC AES
-aes192 Encrypt PEM output with CBC AES
-aes256 Encrypt PEM output with CBC AES
-camellia128 Encrypt PEM output with CBC Camellia
-camellia192 Encrypt PEM output with CBC Camellia
-camellia256 Encrypt PEM output with CBC Camellia
-des Encrypt the generated key with DES in CBC mode
-des3 Encrypt the generated key with DES in EDE CBC mode
-idea Encrypt the generated key with IDEA in CBC mode
-out file Output the key to 'file'
-passout arg Output file passphrase source
Creiamo, dunque, la nostra chiave privata, utilizzando come algoritmo di cifratura eas256 e come lunghezza chiave primaria 4096 :
alfree~# openssl genrsa -aes256 -out bob.key 4096
Generating RSA private key, 4096 bit long modulus
..............................................................................................................................................................................................
..............................................................................................................................................................................................................
e is 65537 (0x010001)
Enter pass phrase for bon.key: **********************
Verifying - Enter pass phrase for bob.key: **********************
alfree$
Provando a visualizzare il contenuto della Chiave Privata, otteniamo quanto riportato di seguito. Chiunque tentasse di accedere a tale contenuto, non riuscirebbe a contraffare l’identità di BOB, essendo questa, memorizzata in forma cifrata.
alfree$ openssl rsa -in bob.key -text
Enter pass phrase for bob.key: *********************
RSA Private-Key: (4096 bit)
modulus:
00:9e:73:54:d7:02:ec:ff:56:f8:02:5e:d9:90:15:
de:17:31:37:d9:3f:b0:a7:ac:7f:a9:84:d2:32:ee:
e9:66:be:f7:f2:9e:42:ad:41:93:d3:bc:92:ac:9e:
fb:9d:43:ff:c2:42:65:2f:5a:f0:5c:9e:1a:b9:bc:
e9:c0:fa:75:2e:bd:94:a9:d2:2f:f0:90:7c:ed:42:
e4:1b:fd:e9:80:0a:92:b5:07:1e:89:9c:c8:a4:dc:
09:38:1c:88:fd:b8:e3:0b:f5:1a:22:6d:46:40:f0:
de:0b:f2:4c:46:50:ca:a6:74:77:68:a7:53:ee:f2:
76:1f:34:de:2b:28:63:77:c3:fc:3f:d3:41:3a:f2:
a3:54:a8:45:14:78:35:66:d9:53:31:28:3d:cc:48:
f7:59:1d:05:6c:b5:cf:90:81:40:88:45:bf:45:87:
f2:f2:02:ea:5e:7a:55:ea:bd:45:97:05:ce:e3:87:
0f:c3:80:1f:a0:cb:7e:c0:bd:6c:0d:5b:12:a9:85:
e8:b5:96:b5:d2:b8:b6:a0:af:f2:50:ec:8e:83:56:
7f:45:93:60:3e:9c:63:84:b2:3c:2b:47:b6:c2:81:
05:55:09:b4:66:15:47:82:60:20:a8:19:91:5f:4e:
3c:b4:66:e5:e7:13:e8:fc:a1:bb:b8:14:4b:fa:61:
ac:20:39:0f:e9:94:44:bd:c9:1e:05:3a:7b:a6:3a:
f9:0a:70:26:43:d4:6e:6f:4c:fb:7a:ea:80:9d:94:
07:cc:58:50:e9:9a:34:b6:16:14:0b:67:bb:c3:22:
1b:43:dd:4d:59:e7:81:f3:b4:b9:ae:4c:8d:92:5d:
d3:2c:bc:0c:ec:49:68:03:5c:7b:3d:5c:00:9d:29:
d6:d6:05:1f:e3:15:3e:4a:70:e3:66:ed:d8:a3:aa:
01:ce:49:04:c7:44:ee:db:74:94:b5:9b:20:da:da:
d7:2e:f2:fe:32:93:6e:4e:dd:f8:9f:d1:cf:8c:ee:
2d:86:4b:10:f6:ee:9b:b6:4e:69:0f:54:a2:f4:5e:
5d:ab:4b:7c:26:b7:e1:d1:dd:25:2b:04:da:69:e2:
b6:b6:f3:18:a3:a2:5d:5f:e6:3e:46:cd:0f:ba:4d:
f3:7a:d2:4f:c8:fd:76:44:00:02:c8:c6:07:fe:b2:
6d:44:5f:1a:aa:aa:dc:0a:a4:ad:49:0f:92:dd:48:
47:aa:ae:56:bd:8d:af:5e:80:fd:de:37:62:07:56:
e8:1d:7a:e9:c0:d4:c9:36:f7:56:6c:70:11:58:3f:
8d:26:2c:3e:7f:c4:b0:37:4c:11:94:12:b3:7f:eb:
c4:eb:c5:9d:4c:8d:d2:e2:bc:cf:6c:f3:f3:f5:46:
bb:75:2b
publicExponent: 65537 (0x10001)
privateExponent:
15:eb:4a:6f:3b:fe:61:0c:3c:de:c7:14:3d:b4:68:
b6:b8:9e:4b:35:5e:50:b3:b2:2d:57:2c:64:d3:5c:
02:54:a4:a4:31:74:73:d7:40:85:e7:ee:3a:66:fb:
d3:b3:96:6b:df:17:74:47:96:3c:99:ba:84:bb:37:
72:f4:b2:c5:36:80:9c:45:71:50:4c:0c:9c:1d:c6:
c4:80:89:8e:a6:e7:c8:97:25:88:4f:e2:09:bc:4e:
a2:2e:80:5c:e8:f8:af:ac:c6:62:c0:cf:19:28:b8:
ee:da:23:e7:0e:42:1a:68:be:24:02:11:c0:5a:56:
30:d6:f5:6c:ee:f7:63:97:ff:0b:2d:44:36:cd:5d:
fe:d6:10:48:56:a0:bc:8b:8f:d0:9b:0a:81:7a:0e:
8d:8b:50:36:cb:a7:dd:0b:a4:4b:b5:aa:52:0a:0e:
77:a0:23:9f:d2:38:94:72:7e:6f:f7:e3:b8:e1:f4:
32:4d:45:12:cf:53:c7:81:ec:b2:a4:48:9e:9e:e1:
a4:4d:26:f5:f1:8b:82:0b:14:f0:50:e9:1e:0e:17:
29:1e:cc:0f:9d:3e:bf:1a:90:ec:43:cd:6a:76:c2:
b0:12:d9:9b:cd:91:c8:dd:57:67:29:b2:4c:86:dc:
2a:f0:99:19:30:4d:e8:b4:ce:ed:16:11:b4:9f:52:
5a:23:11:27:66:4d:86:cf:ac:8c:c6:67:6b:a6:80:
08:e3:5d:42:ce:65:e4:58:92:ac:7a:43:f3:30:47:
3c:e0:63:a8:fa:c2:3a:da:b6:48:44:41:9f:71:5b:
ef:c9:b4:94:25:df:bf:20:dc:de:81:f2:41:ff:f7:
22:02:86:67:d5:d4:73:3e:5d:4c:d0:67:1c:e4:fc:
50:c6:f2:35:c5:7d:c6:e4:bb:4a:1f:09:56:cc:02:
19:c7:74:5b:19:b8:ca:5c:45:d3:af:20:de:94:66:
88:9d:1f:d2:67:82:d7:0f:7d:f4:4d:63:0c:8c:fc:
18:51:12:e3:39:90:61:aa:43:5a:4a:9e:71:0c:61:
d1:57:bb:0b:8b:8f:1d:55:dc:1c:c0:66:c0:11:2f:
ca:02:b9:66:4d:a6:26:37:3b:63:54:5e:92:32:a4:
e1:df:6d:a4:a5:f3:13:cc:60:97:ac:36:b8:43:74:
31:d4:ae:c1:f3:a8:ff:a9:6e:76:dc:fb:e6:5c:af:
3f:2f:68:6d:53:6f:70:5c:a3:30:aa:2c:3b:d3:e1:
fc:e1:83:46:4f:4a:9b:35:de:8c:db:42:d9:7e:66:
68:5b:81:a6:25:12:c2:fd:a2:9a:73:31:6e:ce:40:
45:46:14:af:1b:bc:09:c1:c7:4a:83:24:dd:98:df:
f4:a1
prime1:
00:cb:12:d1:bc:c3:ca:c5:af:18:f1:1d:1c:d3:5e:
fb:79:b7:30:b2:ad:64:10:fd:93:e0:27:42:a7:11:
a5:5c:31:51:7f:e1:75:54:8f:ef:52:bc:44:ba:3a:
a5:24:3e:97:ce:82:fc:69:94:0f:ef:89:a8:22:94:
ee:5f:5a:8e:b2:e8:13:8e:ae:3e:7c:2a:23:e0:64:
b3:4b:ec:6b:17:e7:fa:31:b5:70:6d:26:88:47:1b:
eb:d8:5f:9f:00:ae:39:0f:7e:5d:26:c4:16:9b:e4:
38:8f:53:52:bd:1f:df:52:7e:0f:28:10:56:fb:e3:
10:2b:98:b0:53:8c:fd:67:62:91:fa:3d:85:3d:42:
74:28:d5:6f:2a:a8:9b:75:13:cb:06:31:2e:c2:e9:
d2:80:af:51:15:dc:6a:fd:0e:f7:0e:0d:03:66:0a:
1b:25:ed:27:a7:24:13:11:58:a0:0a:ef:3c:19:d9:
02:37:5f:0c:fb:70:f5:5f:4e:47:42:95:db:cf:a2:
4c:6e:2b:ce:4d:3e:a6:c0:ae:61:8f:cb:f4:78:e4:
7b:e7:71:cf:e1:0b:8f:2d:47:d6:7a:a0:f0:08:eb:
ca:88:05:e9:14:ed:25:c8:56:4c:0b:1b:42:91:21:
87:67:3a:46:d3:40:1a:c8:95:c5:86:b4:18:63:59:
11:d3
prime2:
00:c7:bf:3d:78:25:ef:df:97:01:e3:b5:90:12:2a:
16:18:6d:6e:a1:6c:7a:ed:a1:ee:94:de:98:31:bc:
58:94:88:99:38:72:d5:50:7a:5e:4f:ca:95:df:1c:
f5:88:df:d4:f2:8a:25:de:35:0d:d2:4a:ad:e8:fb:
e2:f0:6c:45:2f:24:96:36:43:80:b7:db:11:6d:54:
61:51:7c:4d:05:50:17:22:ef:df:82:1f:72:60:37:
e4:50:f5:81:53:38:ab:49:b1:16:68:99:99:1e:ab:
a9:a6:5a:12:83:89:27:3f:6f:63:8e:f0:92:48:1d:
3e:b0:2e:3a:9e:cb:c3:d7:20:90:b9:89:14:3c:fa:
f9:df:7d:e7:fd:6b:90:0f:96:69:86:45:5e:d1:6a:
df:f8:8e:3a:59:19:54:50:6e:8c:1f:de:1a:52:d8:
22:63:b7:48:a0:7a:ea:a2:fa:3d:26:e5:5a:ca:60:
7d:c4:8b:ee:f0:ca:09:49:43:aa:39:57:7f:2a:e4:
2b:f8:3a:d6:f8:b2:1f:0a:96:61:e7:52:22:73:73:
99:58:47:52:4c:6f:d1:ae:1b:d6:3b:79:df:9f:47:
e1:6e:bd:41:f4:3d:80:fc:08:c3:26:7d:5b:93:b4:
2d:b0:f4:3d:e8:cb:36:b4:c6:44:95:6b:aa:93:99:
20:49
exponent1:
75:a5:e1:7c:ca:b1:9e:f5:62:2d:cd:ff:f5:35:01:
db:f2:15:74:6e:9f:9a:78:4e:43:7e:7b:4e:ef:1a:
2d:df:24:a8:41:a6:07:e7:9b:6f:03:43:8d:e0:8b:
ec:03:97:4f:3c:f3:9e:f6:f8:84:7d:eb:ba:9d:2d:
bc:70:6a:5b:9b:b8:38:e1:19:b2:35:77:b3:78:a3:
a7:48:c0:82:89:12:99:d9:d3:d8:68:8a:6b:27:f1:
ea:d8:fa:f5:19:fa:54:cf:90:87:f4:f2:64:3e:43:
c6:45:2f:9a:01:ed:0f:8d:98:9a:4d:5d:17:70:e4:
dd:5d:08:4a:5f:54:2f:a1:1b:91:2e:33:12:da:7d:
11:6b:15:8c:51:42:3f:01:c8:8d:3d:d1:29:7a:ed:
49:40:48:69:b1:d9:09:e2:b1:9e:a2:4b:65:c2:55:
18:13:dc:f5:28:21:23:db:84:5c:d1:5c:b0:5c:d8:
bb:db:85:59:e6:87:41:3f:c8:68:fb:08:ed:b1:c9:
35:ca:8b:2a:95:31:66:4f:a0:95:fe:43:14:06:cb:
01:bb:1e:03:f2:fe:6f:ed:3e:84:ac:d8:63:52:b7:
73:36:79:62:76:41:7d:5f:01:8f:2d:ab:d3:08:e9:
b9:14:3a:14:08:ff:7b:55:c9:a9:d0:8c:90:81:f9:
a1
exponent2:
00:83:88:77:5d:ea:fd:6e:6a:ee:1f:98:ab:ea:8a:
34:4a:99:a5:44:3f:3f:23:c4:82:6b:1d:b9:72:e6:
e8:1d:c7:65:be:3a:40:25:e2:ae:c0:34:53:44:bc:
b9:23:0c:e2:19:64:c7:52:ef:f4:ce:09:c7:43:a8:
ba:e4:3f:27:bf:c7:83:f2:ef:b8:8f:59:7e:bc:53:
d8:51:e4:5c:83:a7:1d:d5:2f:c8:2a:d3:b2:69:91:
e4:93:3b:57:92:09:bb:21:a7:af:6d:e9:d7:5e:cf:
03:c4:3b:83:fd:82:0f:8a:42:3b:79:21:09:f2:da:
ef:30:ed:00:45:19:41:39:24:84:a8:e8:8f:9f:28:
55:ea:c9:ea:3e:82:da:36:a9:81:8b:9d:9a:b6:a4:
7e:20:1a:e8:69:4b:b8:ad:ce:5e:0f:8e:1e:1f:77:
9c:0d:b5:df:e9:6d:87:9d:12:d3:ba:0d:46:20:06:
32:4b:7f:2a:34:fd:95:e7:dc:da:f7:2f:9a:da:0f:
ae:b4:a3:6a:74:12:37:46:ad:88:82:df:1f:38:8f:
62:e7:32:f0:0a:cd:87:71:f3:7a:bb:67:a1:ce:2d:
73:51:8c:e7:25:82:6a:b1:8c:c3:95:50:ef:40:f0:
61:36:29:5f:ab:30:46:31:fc:6d:a5:47:64:e8:14:
e9:a1
coefficient:
00:9e:0f:c6:93:ce:10:b9:8e:6d:90:3a:55:03:02:
49:51:a5:90:62:6b:1a:22:1f:57:51:6e:02:b5:be:
11:01:01:49:63:3c:27:df:c2:0e:87:4a:b7:42:49:
43:14:40:ed:34:ef:d4:d7:e9:79:ce:b3:cc:fb:55:
93:0e:98:02:05:52:a7:73:7a:55:58:dc:ec:2e:30:
a2:d1:41:8f:4a:41:43:43:d9:c4:fe:d0:ba:c5:5e:
5a:68:b6:a3:17:fd:fb:46:11:7c:d3:b1:84:af:83:
89:58:51:81:d8:78:64:fe:b6:ad:4b:4b:ff:0d:82:
02:02:15:0a:91:99:c1:cc:24:a6:42:81:08:20:93:
d8:de:71:e6:7e:64:d7:ed:bf:59:ef:e1:bd:c8:dc:
58:85:5d:9e:6e:35:79:b6:db:bf:ec:82:35:c2:7e:
1b:ce:07:f0:20:88:4a:16:d6:1e:c0:62:4a:a7:16:
71:a5:e1:7a:72:83:d1:92:b3:88:60:e7:30:aa:48:
92:93:60:d2:a6:24:7d:c3:67:8b:30:1f:cb:c9:b2:
8f:0f:ec:65:e1:b6:eb:cb:d1:cf:04:b9:58:f8:8e:
a5:b9:4e:a7:ea:02:63:4e:e8:f8:89:b8:66:b7:a4:
1d:ff:25:9c:44:2f:82:76:cd:4d:bd:6e:d4:9e:6e:
c2:95
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
alfree$
Chiave Pubblica.
Per generare la corrispondente chiave pubblica :
alfree$ openssl rsa -in bob.key -pubout -out bob.pub
Enter pass phrase for bob.key: ******************************
writing RSA key
alfree$ cat bob.pub
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnnNU1wLs/1b4Al7ZkBXe
FzE32T+wp6x/qYTSMu7pZr738p5CrUGT07ySrJ77nUP/wkJlL1rwXJ4aubzpwPp1
Lr2UqdIv8JB87ULkG/3pgAqStQceiZzIpNwJOByI/bjjC/UaIm1GQPDeC/JMRlDK
pnR3aKdT7vJ2HzTeKyhjd8P8P9NBOvKjVKhFFHg1ZtlTMSg9zEj3WR0FbLXPkIFA
iEW/RYfy8gLqXnpV6r1FlwXO44cPw4AfoMt+wL1sDVsSqYXotZa10ri2oK/yUOyO
g1Z/RZNgPpxjhLI8K0e2woEFVQm0ZhVHgmAgqBmRX048tGbl5xPo/KG7uBRL+mGs
IDkP6ZREvckeBTp7pjr5CnAmQ9Rub0z7euqAnZQHzFhQ6Zo0thYUC2e7wyIbQ91N
WeeB87S5rkyNkl3TLLwM7EloA1x7PVwAnSnW1gUf4xU+SnDjZu3Yo6oBzkkEx0Tu
23SUtZsg2trXLvL+MpNuTt34n9HPjO4thksQ9u6btk5pD1Si9F5dq0t8Jrfh0d0l
KwTaaeK2tvMYo6JdX+Y+Rs0Puk3zetJPyP12RAACyMYH/rJtRF8aqqrcCqStSQ+S
3UhHqq5WvY2vXoD93jdiB1boHXrpwNTJNvdWbHARWD+NJiw+f8SwN0wRlBKzf+vE
68WdTI3S4rzPbPPz9Ua7dSsCAwEAAQ==
-----END PUBLIC KEY-----
alfree$ openssl rsa -pubin -in bob.pub -text
RSA Public-Key: (4096 bit)
Modulus:
00:9e:73:54:d7:02:ec:ff:56:f8:02:5e:d9:90:15:
de:17:31:37:d9:3f:b0:a7:ac:7f:a9:84:d2:32:ee:
e9:66:be:f7:f2:9e:42:ad:41:93:d3:bc:92:ac:9e:
fb:9d:43:ff:c2:42:65:2f:5a:f0:5c:9e:1a:b9:bc:
e9:c0:fa:75:2e:bd:94:a9:d2:2f:f0:90:7c:ed:42:
e4:1b:fd:e9:80:0a:92:b5:07:1e:89:9c:c8:a4:dc:
09:38:1c:88:fd:b8:e3:0b:f5:1a:22:6d:46:40:f0:
de:0b:f2:4c:46:50:ca:a6:74:77:68:a7:53:ee:f2:
76:1f:34:de:2b:28:63:77:c3:fc:3f:d3:41:3a:f2:
a3:54:a8:45:14:78:35:66:d9:53:31:28:3d:cc:48:
f7:59:1d:05:6c:b5:cf:90:81:40:88:45:bf:45:87:
f2:f2:02:ea:5e:7a:55:ea:bd:45:97:05:ce:e3:87:
0f:c3:80:1f:a0:cb:7e:c0:bd:6c:0d:5b:12:a9:85:
e8:b5:96:b5:d2:b8:b6:a0:af:f2:50:ec:8e:83:56:
7f:45:93:60:3e:9c:63:84:b2:3c:2b:47:b6:c2:81:
05:55:09:b4:66:15:47:82:60:20:a8:19:91:5f:4e:
3c:b4:66:e5:e7:13:e8:fc:a1:bb:b8:14:4b:fa:61:
ac:20:39:0f:e9:94:44:bd:c9:1e:05:3a:7b:a6:3a:
f9:0a:70:26:43:d4:6e:6f:4c:fb:7a:ea:80:9d:94:
07:cc:58:50:e9:9a:34:b6:16:14:0b:67:bb:c3:22:
1b:43:dd:4d:59:e7:81:f3:b4:b9:ae:4c:8d:92:5d:
d3:2c:bc:0c:ec:49:68:03:5c:7b:3d:5c:00:9d:29:
d6:d6:05:1f:e3:15:3e:4a:70:e3:66:ed:d8:a3:aa:
01:ce:49:04:c7:44:ee:db:74:94:b5:9b:20:da:da:
d7:2e:f2:fe:32:93:6e:4e:dd:f8:9f:d1:cf:8c:ee:
2d:86:4b:10:f6:ee:9b:b6:4e:69:0f:54:a2:f4:5e:
5d:ab:4b:7c:26:b7:e1:d1:dd:25:2b:04:da:69:e2:
b6:b6:f3:18:a3:a2:5d:5f:e6:3e:46:cd:0f:ba:4d:
f3:7a:d2:4f:c8:fd:76:44:00:02:c8:c6:07:fe:b2:
6d:44:5f:1a:aa:aa:dc:0a:a4:ad:49:0f:92:dd:48:
47:aa:ae:56:bd:8d:af:5e:80:fd:de:37:62:07:56:
e8:1d:7a:e9:c0:d4:c9:36:f7:56:6c:70:11:58:3f:
8d:26:2c:3e:7f:c4:b0:37:4c:11:94:12:b3:7f:eb:
c4:eb:c5:9d:4c:8d:d2:e2:bc:cf:6c:f3:f3:f5:46:
bb:75:2b
Exponent: 65537 (0x10001)
writing RSA key
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnnNU1wLs/1b4Al7ZkBXe
FzE32T+wp6x/qYTSMu7pZr738p5CrUGT07ySrJ77nUP/wkJlL1rwXJ4aubzpwPp1
Lr2UqdIv8JB87ULkG/3pgAqStQceiZzIpNwJOByI/bjjC/UaIm1GQPDeC/JMRlDK
pnR3aKdT7vJ2HzTeKyhjd8P8P9NBOvKjVKhFFHg1ZtlTMSg9zEj3WR0FbLXPkIFA
iEW/RYfy8gLqXnpV6r1FlwXO44cPw4AfoMt+wL1sDVsSqYXotZa10ri2oK/yUOyO
g1Z/RZNgPpxjhLI8K0e2woEFVQm0ZhVHgmAgqBmRX048tGbl5xPo/KG7uBRL+mGs
IDkP6ZREvckeBTp7pjr5CnAmQ9Rub0z7euqAnZQHzFhQ6Zo0thYUC2e7wyIbQ91N
WeeB87S5rkyNkl3TLLwM7EloA1x7PVwAnSnW1gUf4xU+SnDjZu3Yo6oBzkkEx0Tu
23SUtZsg2trXLvL+MpNuTt34n9HPjO4thksQ9u6btk5pD1Si9F5dq0t8Jrfh0d0l
KwTaaeK2tvMYo6JdX+Y+Rs0Puk3zetJPyP12RAACyMYH/rJtRF8aqqrcCqStSQ+S
3UhHqq5WvY2vXoD93jdiB1boHXrpwNTJNvdWbHARWD+NJiw+f8SwN0wRlBKzf+vE
68WdTI3S4rzPbPPz9Ua7dSsCAwEAAQ==
-----END PUBLIC KEY-----
Ottenendo lo stesso esponente e lo stesso modulo presente nel file che contiene la chiave privata.
Realizzare i 3 casi d’uso.
Per la cifratura asimmettrica con OpenSSL è necessario utilizzare il comando rsautl.
alfree$ openssl rsautl -help
usage: rsautl [-asn1parse] [-certin] [-decrypt] [-encrypt] [-hexdump]
[-in file] [-inkey file] [-keyform der | pem]
[-oaep | -pkcs | -raw | -x931] [-out file] [-passin arg]
[-pubin] [-rev] [-sign] [-verify]
-asn1parse ASN.1 parse the output data
-certin Input is a certificate containing an RSA public key
-decrypt Decrypt the input data using RSA private key
-encrypt Encrypt the input data using RSA public key
-hexdump Hex dump the output data
-in file Input file (default stdin)
-inkey file Input key file
-keyform fmt Input key format (DER, TXT or PEM (default))
-oaep Use PKCS#1 OAEP padding
-out file Output file (default stdout)
-passin arg Key password source
-pkcs Use PKCS#1 v1.5 padding (default)
-pubin Input is an RSA public key
-raw Use no padding
-rev Reverse the input data
-sign Sign the input data using RSA private key
-verify Verify the input data using RSA public key
-x931 Use ANSI X9.31 padding
Caso 1 : Autenticità ed Integrità
Per ottenere l’autenticità del messaggio, come detto, BOB dovrà cifrare il messaggio per la sua chiave privata. In maniera tale che ALICE, possa riportarlo in chiaro con la corrispondente chiave pubblica di BOB, che intanto ha pubblicato, e reso disponibile a tutti, con ogni mezzo. Per essere sicuri, i due si incontrano di persona, e BOB fornisce ad ALICE la sua chiave pubblica.
In alternativa alla cifratura dell’intero messaggio, operazione inutile e dispendiosa, BOB può firmare semplicemente il messaggio.
Vediamo come realizzare questa seconda soluzione.
BOB vuol scrivere a ALICE, che EVA intercetta le comunicazioni da/e verso il suo frigorifero. Quindi scrive il messaggio, e ne calcola l’impronta tramite l’algoritmo SHA-256
alfree$ cat messaggio.txt
Eva inviami l'ingrediente segreto della torta Primavera
alfree$ openssl dgst -sha256 messaggio.txt > messaggio.impronta.txt
alfree$ cat messaggio.impronta.txt
SHA256(messaggio.txt)= 42b00a3ee038150ab9962e2141b552128db39b251e050b2917c71a318030349c
alfree$
Dopodiché cifra l’impronta (SHA256) del messaggio, utilizzando la sua Chiave Privata
alfree$ openssl rsautl -sign -inkey bob.key -in messaggio.impronta.txt -out messaggio.firma.txt
Enter pass phrase for bob.key: ******************
alfree$ base64 -e messaggio.firma.txt
VVJALDvxkSVhNnCOfVTEKjmNo5bxuvmgCGCEO71xdwG9U8mIhblG7SfCgSj01yzqSiP58sFj
+prf6rdYM1b19Ol/4NgCy6DioqEbi3dXjVL73zg4A1SeGZEA842ei8JakoM40fL74FXVeOqG
3q6m6/oIpx+Xcd05Uj19FD32aNoTFoQ3H/TrOqyJZrupLdo81kzLOmW/lG0P36uZ1KG71pJB
Rk/zPeFYV83C/8gZozcpsfp0xJGEVIZhqRODIH12zKtytDXCKI+L11YgdymMGlfOhAT4vmcx
xsAm+cI99Pa1HUoQik0ngC0LZ6vcIVO6MrvHZJsMD6QenrnyRaBjXD8CnuTNZi0yoqGOGusw
/oxuUOUEWXIigIh8fVWvVRWW4A0LVuzV7sEsrGqaXa1fqvbFT1roT9h87wpgR+ub1sr0r2Cl
HoYVBiM1TW5XpPULzxUXL9hltZWnOWAxEX3wNIc6TRhlAQ4rbfHqrKpWe71koMOFP6DPOL9O
/6FT9SWhkSSRYAU89BWwwe9LDhTWVde/BfdQ+4C7buRP0u4BxB0LqcjtHG+xmDvEYQAJa/om
rIlAUwybf8yTC5TBMctnNBKHCCmUtdmgjfSx5YXVlklIKqP5+o4LILj4Vlf//mcyvlXn0EYl
rD6+vbCMi6Z6BtslV6WtziwBwv4QNdnvT2M=
alfree$
BOB invia ad Alice il messaggio firmato, ossia messaggio in chiaro (messaggio.txt) e firma (messaggio.firma.txt).
Alice una volta ricevuto il messaggio, verifica la firma, quindi la decrypt con la chiave Pubblica di BOB, e all’interno ci trova l’impronta SHA-256 del messaggio. Questo dimostra l’autenticità del messaggio, cioè che provenga senza ombra di dubbio da BOB.
alfree$ base64 -e messaggio.firma.txt
VVJALDvxkSVhNnCOfVTEKjmNo5bxuvmgCGCEO71xdwG9U8mIhblG7SfCgSj01yzqSiP58sFj
+prf6rdYM1b19Ol/4NgCy6DioqEbi3dXjVL73zg4A1SeGZEA842ei8JakoM40fL74FXVeOqG
3q6m6/oIpx+Xcd05Uj19FD32aNoTFoQ3H/TrOqyJZrupLdo81kzLOmW/lG0P36uZ1KG71pJB
Rk/zPeFYV83C/8gZozcpsfp0xJGEVIZhqRODIH12zKtytDXCKI+L11YgdymMGlfOhAT4vmcx
xsAm+cI99Pa1HUoQik0ngC0LZ6vcIVO6MrvHZJsMD6QenrnyRaBjXD8CnuTNZi0yoqGOGusw
/oxuUOUEWXIigIh8fVWvVRWW4A0LVuzV7sEsrGqaXa1fqvbFT1roT9h87wpgR+ub1sr0r2Cl
HoYVBiM1TW5XpPULzxUXL9hltZWnOWAxEX3wNIc6TRhlAQ4rbfHqrKpWe71koMOFP6DPOL9O
/6FT9SWhkSSRYAU89BWwwe9LDhTWVde/BfdQ+4C7buRP0u4BxB0LqcjtHG+xmDvEYQAJa/om
rIlAUwybf8yTC5TBMctnNBKHCCmUtdmgjfSx5YXVlklIKqP5+o4LILj4Vlf//mcyvlXn0EYl
rD6+vbCMi6Z6BtslV6WtziwBwv4QNdnvT2M=
alfree$ openssl rsautl -verify -inkey bob.pub -pubin -in messaggio.firma.txt
SHA256(messaggio.txt)= 42b00a3ee038150ab9962e2141b552128db39b251e050b2917c71a318030349c
alfree$ openssl dgst -sha256 messaggio.txt
SHA256(messaggio.txt)= 42b00a3ee038150ab9962e2141b552128db39b251e050b2917c71a318030349c
alfree$
Da notare che quanto contenuto nella firma di BOB è l’impronta del messaggio nel momento in cui è stato inviato, mentre quanto calcolato da Alice, è l’impronta del file ricevuto. Se l’impronta ai due capi della comunicazione è identica, significa che il messaggio è arrivato integro. Gli algoritmi di hashing (utilizzati per generare impronte) vengono anche chiamati “algoritmo di integrità” per questo motivo. Riprenderemo il discorso, sicuramente.
Caso 2 : Riservatezza ed Integrità
Per ottenere la riservatezza del messaggio, in maniera tale che esclusivamente BOB possa leggere il messaggio, ALICE dovrà cifrarlo per la chiave pubblica di BOB. In questo modo solamente chi possiede la relativa privata possa nuovamente riportale il messaggio in chiaro. Per essere sicuri, BOB protegge adeguatamente la sua chiave privata in forma cifrata, protetta da una password lunga, che non contenga parole a dizionario, che includa lettere minuscole, maiuscole, numeri e punteggiature. Password che non memorizza nel computer ma che conosce a memoria.
ALICE scrive il messaggio segreto per BOB nel file messaggio.txt, poi lo cifra con la chiave pubblica di BOB e lo memorizza nel file messaggio.cifrato.txt.
alfree$ cat messaggio.txt
l'ingrediente segreto della torta primavera e' la CAROTA dell'orto di Augusto
alfree$ openssl rsautl \
-encrypt \
-pubin \
-inkey ../bob/bob.pub \
-in messaggio.txt \
-out messaggio.cifrato.txt
alfree$ cat messaggio.cifrato.txt
%▒"▒▒{▒▒J\g9▒▒T(zs&4▒▒E▒▒▒t#|▒▒&f@H▒▒W6▒▒▒▒Vv▒▒n▒ʋ▒ ▒▒▒▒▒▒K^▒Y▒▒▒▒+▒5▒A▒▒▒▒▒O:l▒▒▒8▒▒N▒▒/▒▒▒ڑ▒c▒▒]▒▒▒▒▒▒▒+;JK▒5▒▒▒▒▒▒۸nΛ▒▒v6Ww▒H▒▒▒▒Zve▒▒z▒2▒uU-▒▒▒▒▒BS▒▒[▒>?e▒f▒▒▒▒
▒▒Z▒▒▒k▒▒9}▒MX▒▒▒▒o▒▒x▒▒0c▒Ӗ▒owq▒▒▒e▒(▒6▒/▒=▒
Il file cifrato non è editabile. Se si vuol inviare, ad esempio nel corpo di una mail, bisogna rendere editabile col comando base64.
alfree$ cat messaggio.cifrato.txt | base64 > messaggio.cifrato.base64.txt
alfree$ cat messaggio.cifrato.base64.txt
HCWEFwcDIuEHw3t/0QQA90pcZznR/1QoenMmNPSgRYSJAhqXdCN8mq4mYAhmQEiKrFcfNqKV
8ReIAlZ27Pdu4hHKi4Qg2N4bb7GamxsAHarCHEte5Vn64fzHK/ISNQabQfqso7HKTzps8sQZ
hDiogU7N/C//uRjG2pGqY/MWpF3mxcGF1fnaKztKS8U17qcRzQ6kAIPaEoPbuG7Om5+5djZX
d+ZI8L3TFMof2R1admWtgXp/pzKYdVUtmrWDpKJCU+mXz1vFPhg/Zf5mHJmhvIEL1yVAiXDY
s8CmRsoTGA5k871oK2eIaknJT1+H5kiHrE53BwgQ1VKscZKinGWyKMA2ii8TBwD7PbQNktQZ
Wo/T/muOzTn8CH3goBIcTVivvsHWb/DeeLHRMGPH05bDb3cKDlyWt+BvLsLTOE66P+PAGbj8
XCyn1FdHBO/dKA4U3cRWR6tdr9nHz46y63dJmzF5x1Twc2XXEC65y8LsaaaFSbvdrWhbG5Ew
uSd8Uam8yvhfY7aNfUInidpq2KkRUvAn58sz2XGCj3rAUf3wU6upEbt9Ik5OO0vPI3WQcp3/
6ElY9JC4VpHHbwGtssi7WEMkKa26dYn9YT16pC/asbB1Zy/dxkSYbL7LRtHaPA1C8ur5pAF7
kafms1iuAuNuuTUi8dMfOG3HV0uNIsmFuYI=
Chiaramente ALICE avrebbe potuto cifrare qualsiasi formato di file, compreso: audio, immagine, video. Il processo di cifratura rimane fuori da tutto ciò che è contenuto.
ALICE invia nel corpo della email il messaggio cifrato in base64. L’avrebbe potuto anche pubblicare nella sezione cuori solitari de la Repubblica, su un muro, o in una qualsiasi altra bacheca pubblica, perché nessuno sarebbe stato capace di riportarlo in chiaro, al di fuori di BOB che possiede la chiave per farlo.
BOB riceve la seguente mail da ALICE :
From : Alice@tiscali.it
To : Bob@tiscali.it
Object : torta primavera
ciao, messaggio riservato per te
---
HCWEFwcDIuEHw3t/0QQA90pcZznR/1QoenMmNPSgRYSJAhqXdCN8mq4mYAhmQEiKrFcfNqKV
8ReIAlZ27Pdu4hHKi4Qg2N4bb7GamxsAHarCHEte5Vn64fzHK/ISNQabQfqso7HKTzps8sQZ
hDiogU7N/C//uRjG2pGqY/MWpF3mxcGF1fnaKztKS8U17qcRzQ6kAIPaEoPbuG7Om5+5djZX
d+ZI8L3TFMof2R1admWtgXp/pzKYdVUtmrWDpKJCU+mXz1vFPhg/Zf5mHJmhvIEL1yVAiXDY
s8CmRsoTGA5k871oK2eIaknJT1+H5kiHrE53BwgQ1VKscZKinGWyKMA2ii8TBwD7PbQNktQZ
Wo/T/muOzTn8CH3goBIcTVivvsHWb/DeeLHRMGPH05bDb3cKDlyWt+BvLsLTOE66P+PAGbj8
XCyn1FdHBO/dKA4U3cRWR6tdr9nHz46y63dJmzF5x1Twc2XXEC65y8LsaaaFSbvdrWhbG5Ew
uSd8Uam8yvhfY7aNfUInidpq2KkRUvAn58sz2XGCj3rAUf3wU6upEbt9Ik5OO0vPI3WQcp3/
6ElY9JC4VpHHbwGtssi7WEMkKa26dYn9YT16pC/asbB1Zy/dxkSYbL7LRtHaPA1C8ur5pAF7
kafms1iuAuNuuTUi8dMfOG3HV0uNIsmFuYI=
---
Alice
BOB sa che deve effettuare l’encode del messaggio ricevuto, prima di decifrarlo con la sua chiave privata effettua.. Dopo aver letto il messaggio, lo cancella.
alfree$ base64 --decode ../alice/messaggio.cifrato.base64.txt > ../alice/messaggio.cifrato.txt
alfree$ openssl rsautl -decrypt -inkey bob.key -in ../alice/messaggio.cifrato.txt -out ../alice/messaggio.txt
Enter pass phrase for bob.key: ******************************
alfree$ cat messaggio.txt
l'ingrediente segreto della torta primavera e' la CAROTA dell'orto di Augusto
Caso 3: Autenticità, Riservatezza ed Integrità
Per ottenere autenticità, riservatezza ed integrità è necessario che anche Alice abbia una coppia di chiavi asimmetriche RSA (privata e pubblica). Alice dovrà ripetere la procedura già eseguita d BOB, ottenendo i file alice.key ed alice.pub. Per sicurezza, Bob ed Alice si incontrano di persona per scambiarsi le loro chiavi pubbliche. Entrambi si riconoscono perché si conoscono da tanti anni.
BOB scrive il messaggio per Alice, avvertendola che EVA ha inserito un keylogger nel frigorifero, per acquisire i parametri di conservazione della “Torta Primavera”. Per rendere affidabile il messaggio, lo firma. Crea un file con l’impronta del messaggio, e poi lo cifra per la sua chiave Privata.
alfree$ cat messaggio.txt
Eva ha inserito un keylogger nella /dev/usb-3 del tuo frigorigero
alfree$ openssl dgst -sha256 messaggio.txt
SHA256(messaggio.txt)= 42b00a3ee038150ab9962e2141b552128db39b251e050b2917c71a318030349c
alfree$ openssl dgst -sha256 messaggio.txt > messaggio.impronta.txt
alfree$ openssl rsautl -sign -inkey bob.key -in messaggio.impronta.txt -out messaggio.firma.txt
Enter pass phrase for bob.key: ************************************
alfree$ base64 -e messaggio.firma.txt
VVJALDvxkSVhNnCOfVTEKjmNo5bxuvmgCGCEO71xdwG9U8mIhblG7SfCgSj01yzqSiP58sFj
+prf6rdYM1b19Ol/4NgCy6DioqEbi3dXjVL73zg4A1SeGZEA842ei8JakoM40fL74FXVeOqG
3q6m6/oIpx+Xcd05Uj19FD32aNoTFoQ3H/TrOqyJZrupLdo81kzLOmW/lG0P36uZ1KG71pJB
Rk/zPeFYV83C/8gZozcpsfp0xJGEVIZhqRODIH12zKtytDXCKI+L11YgdymMGlfOhAT4vmcx
xsAm+cI99Pa1HUoQik0ngC0LZ6vcIVO6MrvHZJsMD6QenrnyRaBjXD8CnuTNZi0yoqGOGusw
/oxuUOUEWXIigIh8fVWvVRWW4A0LVuzV7sEsrGqaXa1fqvbFT1roT9h87wpgR+ub1sr0r2Cl
HoYVBiM1TW5XpPULzxUXL9hltZWnOWAxEX3wNIc6TRhlAQ4rbfHqrKpWe71koMOFP6DPOL9O
/6FT9SWhkSSRYAU89BWwwe9LDhTWVde/BfdQ+4C7buRP0u4BxB0LqcjtHG+xmDvEYQAJa/om
rIlAUwybf8yTC5TBMctnNBKHCCmUtdmgjfSx5YXVlklIKqP5+o4LILj4Vlf//mcyvlXn0EYl
rD6+vbCMi6Z6BtslV6WtziwBwv4QNdnvT2M=
Dopodiché, per rendere il messaggio leggibile esclusivamente da Alice, quindi non intercettabile da EVA, lo cifra per la chiave Pubblica di Alice.
alfree$ openssl rsautl \
> -encrypt \
> -inkey ../alice/alice.pub \
> -pubin \
> -in messaggio.txt \
> -out messaggio.cifrato.txt
alfree$ base64 -e messaggio.cifrato.txt
aJyeJucFkNyvaay3GzjjeNa0QHltxhZCz2kR3/EV1swF57hbeRIl+Zkb7ggghfz3iTxO60LB
Gbn26j+JX+OcGSHA5ma2vy+LQBBfs1oAAxtAOskIUlr1UKEbtgkU6rPgozFtoO4mAAZGvwjI
dUCPY5y8/Pqm1mvP7eIkUjBd145FwnqjLdGJo8/ADItS9wP52Ii4xtyTO23NPGcfbZrZf26v
taPlV3GzSK59qqiaD+G3fyaTSWkZrTjiYoYGOFv5xQH3cwkPv6fRv0IwGnXdlAlRwV3Irsb0
f3WWzRaOoStmNTOUBUy4bDcwMtxq6C7DYwe8cTZ992XjE8UDuarKDoGpcjJOQL/g71W88e8f
Mz/0umpbsLCQqo8HuMA4DX03kkbHAtCt9dgtvbKFyT/Z6St6Z9JDcKIq/sQhnMivbpKrczNw
shyNzsOJUBrZ8Wdkjg9kaoBbLJdJUhpH8a89GuU2RRV3CBJXoIh7gro5SX2cgLNL1LaYBP8y
JIrJLSidSyfHzxkGacwHgnxJxBlq7mjhluwf91xcE7EmnTRg/1erpXwYSUXHwYr/RBO1CDlz
cgfNX9uVZo8xjtUqnzvuK2f0Sj1SdAWKID7yUPwotTb4SovocUrjpF+HNQdnOm3wUoMsOCfs
bGtVFJfaSjWShxiH71uKpFq/+7DnFzoNgz4=
alfree$
BOB invia nel corpo della mail che invia ad Alice, sia il messaggio cifrato e sia la firma, entrambi in forma stampabile (BASE64).
Alice si vede recapitare la seguente mail
From : Bob
To : Alice
Object : Saluti da Capri
ciao,
--- messaggio
aJyeJucFkNyvaay3GzjjeNa0QHltxhZCz2kR3/EV1swF57hbeRIl+Zkb7ggghfz3iTxO60LB
Gbn26j+JX+OcGSHA5ma2vy+LQBBfs1oAAxtAOskIUlr1UKEbtgkU6rPgozFtoO4mAAZGvwjI
dUCPY5y8/Pqm1mvP7eIkUjBd145FwnqjLdGJo8/ADItS9wP52Ii4xtyTO23NPGcfbZrZf26v
taPlV3GzSK59qqiaD+G3fyaTSWkZrTjiYoYGOFv5xQH3cwkPv6fRv0IwGnXdlAlRwV3Irsb0
f3WWzRaOoStmNTOUBUy4bDcwMtxq6C7DYwe8cTZ992XjE8UDuarKDoGpcjJOQL/g71W88e8f
Mz/0umpbsLCQqo8HuMA4DX03kkbHAtCt9dgtvbKFyT/Z6St6Z9JDcKIq/sQhnMivbpKrczNw
shyNzsOJUBrZ8Wdkjg9kaoBbLJdJUhpH8a89GuU2RRV3CBJXoIh7gro5SX2cgLNL1LaYBP8y
JIrJLSidSyfHzxkGacwHgnxJxBlq7mjhluwf91xcE7EmnTRg/1erpXwYSUXHwYr/RBO1CDlz
cgfNX9uVZo8xjtUqnzvuK2f0Sj1SdAWKID7yUPwotTb4SovocUrjpF+HNQdnOm3wUoMsOCfs
bGtVFJfaSjWShxiH71uKpFq/+7DnFzoNgz4=
--- firma
VVJALDvxkSVhNnCOfVTEKjmNo5bxuvmgCGCEO71xdwG9U8mIhblG7SfCgSj01yzqSiP58sFj
+prf6rdYM1b19Ol/4NgCy6DioqEbi3dXjVL73zg4A1SeGZEA842ei8JakoM40fL74FXVeOqG
3q6m6/oIpx+Xcd05Uj19FD32aNoTFoQ3H/TrOqyJZrupLdo81kzLOmW/lG0P36uZ1KG71pJB
Rk/zPeFYV83C/8gZozcpsfp0xJGEVIZhqRODIH12zKtytDXCKI+L11YgdymMGlfOhAT4vmcx
xsAm+cI99Pa1HUoQik0ngC0LZ6vcIVO6MrvHZJsMD6QenrnyRaBjXD8CnuTNZi0yoqGOGusw
/oxuUOUEWXIigIh8fVWvVRWW4A0LVuzV7sEsrGqaXa1fqvbFT1roT9h87wpgR+ub1sr0r2Cl
HoYVBiM1TW5XpPULzxUXL9hltZWnOWAxEX3wNIc6TRhlAQ4rbfHqrKpWe71koMOFP6DPOL9O
/6FT9SWhkSSRYAU89BWwwe9LDhTWVde/BfdQ+4C7buRP0u4BxB0LqcjtHG+xmDvEYQAJa/om
rIlAUwybf8yTC5TBMctnNBKHCCmUtdmgjfSx5YXVlklIKqP5+o4LILj4Vlf//mcyvlXn0EYl
rD6+vbCMi6Z6BtslV6WtziwBwv4QNdnvT2M=
-----------------------
Bob
Alice salva il messaggio e la firma in 2 file, che converte nel formato non stampabile per poterli decifrare e leggere
alfree$ cat messaggio_BASE64.txt
aJyeJucFkNyvaay3GzjjeNa0QHltxhZCz2kR3/EV1swF57hbeRIl+Zkb7ggghfz3iTxO60LB
Gbn26j+JX+OcGSHA5ma2vy+LQBBfs1oAAxtAOskIUlr1UKEbtgkU6rPgozFtoO4mAAZGvwjI
dUCPY5y8/Pqm1mvP7eIkUjBd145FwnqjLdGJo8/ADItS9wP52Ii4xtyTO23NPGcfbZrZf26v
taPlV3GzSK59qqiaD+G3fyaTSWkZrTjiYoYGOFv5xQH3cwkPv6fRv0IwGnXdlAlRwV3Irsb0
f3WWzRaOoStmNTOUBUy4bDcwMtxq6C7DYwe8cTZ992XjE8UDuarKDoGpcjJOQL/g71W88e8f
Mz/0umpbsLCQqo8HuMA4DX03kkbHAtCt9dgtvbKFyT/Z6St6Z9JDcKIq/sQhnMivbpKrczNw
shyNzsOJUBrZ8Wdkjg9kaoBbLJdJUhpH8a89GuU2RRV3CBJXoIh7gro5SX2cgLNL1LaYBP8y
JIrJLSidSyfHzxkGacwHgnxJxBlq7mjhluwf91xcE7EmnTRg/1erpXwYSUXHwYr/RBO1CDlz
cgfNX9uVZo8xjtUqnzvuK2f0Sj1SdAWKID7yUPwotTb4SovocUrjpF+HNQdnOm3wUoMsOCfs
bGtVFJfaSjWShxiH71uKpFq/+7DnFzoNgz4=
alfree$ base64 -d messaggio_BASE64.txt > messaggio.txt
alfree$ cat messaggio-firma_BASE64.txt
VVJALDvxkSVhNnCOfVTEKjmNo5bxuvmgCGCEO71xdwG9U8mIhblG7SfCgSj01yzqSiP58sFj
+prf6rdYM1b19Ol/4NgCy6DioqEbi3dXjVL73zg4A1SeGZEA842ei8JakoM40fL74FXVeOqG
3q6m6/oIpx+Xcd05Uj19FD32aNoTFoQ3H/TrOqyJZrupLdo81kzLOmW/lG0P36uZ1KG71pJB
Rk/zPeFYV83C/8gZozcpsfp0xJGEVIZhqRODIH12zKtytDXCKI+L11YgdymMGlfOhAT4vmcx
xsAm+cI99Pa1HUoQik0ngC0LZ6vcIVO6MrvHZJsMD6QenrnyRaBjXD8CnuTNZi0yoqGOGusw
/oxuUOUEWXIigIh8fVWvVRWW4A0LVuzV7sEsrGqaXa1fqvbFT1roT9h87wpgR+ub1sr0r2Cl
HoYVBiM1TW5XpPULzxUXL9hltZWnOWAxEX3wNIc6TRhlAQ4rbfHqrKpWe71koMOFP6DPOL9O
/6FT9SWhkSSRYAU89BWwwe9LDhTWVde/BfdQ+4C7buRP0u4BxB0LqcjtHG+xmDvEYQAJa/om
rIlAUwybf8yTC5TBMctnNBKHCCmUtdmgjfSx5YXVlklIKqP5+o4LILj4Vlf//mcyvlXn0EYl
rD6+vbCMi6Z6BtslV6WtziwBwv4QNdnvT2M=
alfree$ base64 -d messggio-firma_BASE64.txt > messaggio-firma.txt
Alice nel decifrare il messaggio riservato (che quindi solo lei può leggere), comprende un potenziale rischio per la “ricetta Primavera”.
alfree$ openssl rsautl -decrypt -inkey alice.key -in messaggio.txt -out messggio.inchiaro.txt
Enter pass phrase for alice.key: ****************************
alfree$ cat messggio.inchiaro.txt
Eva ha inserito un keylogger nella /dev/usb-3 del tuo frigorigero
Verifica quindi la firma. (ossia che la firma si relmente quella di BOB, e che questa contenga l’impronta del messggio ricevuto).Il messaggio è realmente firmto d BOB.
alfree$ openssl dgst -sha256 messaggio.inchiaro.txt
SHA256(messggio.inchiaro.txt)= 42b00a3ee038150ab9962e2141b552128db39b251e050b2917c71a318030349c
alfree$ openssl rsautl -verify -inkey ../bob/bob.pub -pubin -in messaggio-firma.txt
SHA256(messaggio.txt)= 42b00a3ee038150ab9962e2141b552128db39b251e050b2917c71a318030349c
alfree$
Verificata l’autenticità del messggio, Alice va nella cucina a cercare la /dev/usb-3 del frigorifero, dopodichè stacca il keylogger, e ne cancella il contenuto. Quando EVA verrà a riprenderselo troverà nelsuo keylogger informazioni false.