Identità digitale & Chiavi Asimmetriche

di | Novembre 15, 2023

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

Dopodiché cifra l’impronta (SHA256) del messaggio, utilizzando la sua Chiave Privata

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.

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.

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 :

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.

Dopodiché, per rendere il messaggio leggibile esclusivamente da Alice, quindi non intercettabile da EVA, lo cifra per la chiave Pubblica di Alice.

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

Alice salva il messaggio e la firma in 2 file, che converte nel formato non stampabile per poterli decifrare e leggere

Alice nel decifrare il messaggio riservato (che quindi solo lei può leggere), comprende un potenziale rischio per la “ricetta Primavera”.

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.

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *