Il contenuto di questa pagina non è stato perfezionato: da usare con cura!

Introduzione alla crittografia

  1. Sicurezza
    1. Confidenzialità
    2. Autenticazione
    3. Integrità dei dati
    4. Non ripudio
  2. Terminologia fondamentale
  3. Proprietà di un cifrario
  4. Crittografia simmetrica
    1. Pro e contra
  5. Cifrari (simmetrici) a scorrimento
    1. Il cifrario di Cesare
      1. Il cifrario di Cesare è sicuro?
      2. Se anziché K = 3, si considera una generica traslazione K delle lettere del testo in chiaro, il cifrario diventa sicuro?
    2. I «pizzini» di Provenzano
  6. Attaccare un cifrario [1]: Brute forcing
  7. Regole per un buon cifrario [1]
  8. Il principio di Kerckhoffs
  9. Cifrari (simmetrici) a sostituzione monoalfabetici
    1. Un cifrario a sostituzione monoalfabetico è sicuro?
  10. Attaccare un cifrario [2]: KPA
  11. Attaccare un cifrario [3]: COA
    1. Esempio di COA contro un cifrario a sostituzione monoalfabetico
  12. Cifrari (simmetrici) a sostituzione polialfabetici
    1. Quante sono le possibili chiavi di un cifrario a sostituzione polialfabetico?
    2. Il cifrario di Vigenère
  13. Cifrari a trasposizione (o a permutazione)
    1. Cifrario a trasposizione: pro e contra
  14. Regole per un buon cifrario [2]
  15. Perfect secrecy
  16. Il cifrario simmetrico moderno: AES
    1. AES
    2. AES: come funziona?
  17. ChaCha20
    1. Origini e contesto di ChaCha20
    2. Struttura interna del cifrario
    3. Sicurezza e vantaggi
  18. Crittografia asimmetrica
    1. Crittografia asimmetrica: un po’ di storia
    2. Cosa accadde nel 1976?
    3. Crittografia asimmetrica: chiavi
    4. Cifratura asimmetrica e confidenzialità
    5. Cifratura asimmetrica e autenticazione
  19. Come si implementa tutto questo?
  20. RSA
    1. RSA: come funziona
    2. RSA: come usarlo
    3. RSA con OpenSSL
  21. Scambio delle chiavi Diffie-Hellman
    1. DF: come funziona
  22. Fonti

Sicurezza

Le proprietà di sicurezza fondamentali ottenibili attraverso un sistema crittografico sono:

La confidenzialità è la proprietà più nota, nonché la base per ottenere le altre.

Confidenzialità

La confidenzialità, o segretezza, o riservatezza, è la proprietà di un sistema crittografico che rende un messaggio illeggibile per tutti, tranne che per i destinatari del messaggio stesso.

Autenticazione

L’autenticazione, o autenticità, è la proprietà che definisce l’identità della controparte. Risponde alle domande:

Il termine autorizzazione si riferisce invece alle azioni permesse a un utente già precedentemente autenticato.

Integrità dei dati

L’integrità dei dati garantisce che i dati non siano stati manomessi.

Possibili manipolazioni dei dati includono:

Non ripudio

Il non ripudio, o non repudiation, è la proprietà che impedisce a un’entità di negare azioni compiute nel passato.

Terminologia fondamentale

Per capire i fondamenti della crittografia, bisogna fissare dei concetti chiave.

Proprietà di un cifrario

Un cifrario ideale gode delle seguenti fondamentali proprietà:

Crittografia simmetrica

Si parla di cifrario a crittografia simmetrica o a crittografia a chiave segreta quando le funzioni di cifratura e di decifratura del cifrario usano la stessa chiave.

Un cifrario a crittografia simmetrica può garantire confidenzialità, integrità, autenticazione alla comunicazione. Non può garantire il non ripudio.

I cifrari a crittografia simmetrica sono suddivisi in due gruppi principali:

Pro e contra

I vantaggi della crittografia simmetrica:

Gli svantaggi della crittografia simmetrica:

Cifrari (simmetrici) a scorrimento

In un cifrario a scorrimento:

Il cifrario di Cesare

Notoriamente Gaio Giulio Cesare, inviando comunicazioni qua e là per il futuro impero, cifrava i suoi messaggi. In particolare, sostituiva ogni lettera con la lettera posizionata 3 posizioni oltre.

Ad esempio, C diventa F; Z diventa C; M diventa P.

Per decifrare il messaggio, è sufficiente sostituire ogni lettera con quella posizionata 3 posizioni addietro. La chiave k = 3 è utilizzata sia per la cifratura sia per la decifratura, perciò il cifrario di Cesare è un esempio di cifrario a crittografia simmetrica . Inoltre, dato il suo funzionamento, è un esempio di cifrario a scorrimento.

Esercizio: utilizzando il cifrario di Cesare, come cifreresti il tuo nome e il tuo cognome?

Il cifrario di Cesare è sicuro?

No. Nota la chiave K = 3, decifrare i messaggi di Cesare è un gioco da ragazzi.

Se anziché K = 3, si considera una generica traslazione K delle lettere del testo in chiaro, il cifrario diventa sicuro?

No. Infatti, dato un alfabeto di N lettere (nel caso del nostro alfabeto, N = 26), esistono solo N possibili valori per K. A meno che l’alfabeto sia enorme, è sufficiente tentare N chiavi diverse per essere certi di scovare il testo in chiaro.

I «pizzini» di Provenzano

Un rudimentale sistema di cifratura basato sul cifrario di Cesare è stato usato anche da Bernardo Provenzano per proteggere informazioni rilevanti scritte nei suoi famosi pizzini, i piccoli foglietti di carta con i quali il boss della mafia, durante la sua latitanza, riceveva informazioni e impartiva ordini.

Il sistema scelto da Provenzano era abbastanza semplice: si trattava di sostituire ad ogni lettera il numero corrispondente alla posizione nell’alfabeto sommato a 3 e di comporre così un singolo, lungo numero.

Ad esempio, i numeri “512151522 191212154” nascondono il nome di “Binnu Riina”: infatti, 5 = 2 (posizione della B) più 3; 12 = 9 (posizione della I) più 3; ecc..

Esercizio: utilizzando il metodo di Provenzano, come cifreresti il tuo nome e il tuo cognome?

Attaccare un cifrario [1]: Brute forcing

Provare tutte le possibili chiavi di un cifrario è un’operazione detta brute-forcing .

Se è possibile trovare la chiave di un messaggio cifrato attraverso un attacco brute forcing (come nel caso dei cifrari a scorrimento), allora il cifrario è insicuro.

Regole per un buon cifrario [1]

Fare un attacco brute forcing deve essere reso difficile. Ovvero: bisogna che il numero di possibili chiavi sia gigantesco .

Avere un insieme K delle chiavi molto numeroso è quindi il primo passo per la realizzazione di un buon crittosistema. Come vedremo, si tratta di una condizione necessaria, ma per nulla sufficiente.

Il principio di Kerckhoffs

L’insieme dei testi in chiaro, l’insieme dei testi cifrati e i dettagli delle funzioni di cifratura e decifratura sono noti a priori.

Questo significa che non bisogna basare la sicurezza di un crittosistema sulla segretezza del suo funzionamento. Assumendo che il funzionamento del cifrario sia noto a tutti, esso deve comunque essere sicuro.

Il cifrario di Cesare, per esempio, non rispetta in alcun modo il principio di Kerckhoffs: Cesare basava la sicurezza (…) del suo cifrario sull’ignoranza del suo funzionamento da parte di persone che non fossero i suoi comandanti.

L’unico segreto è sempre la chiave di decifratura: tutto il resto deve essere ritenuto noto.

Cifrari (simmetrici) a sostituzione monoalfabetici

Un cifrario a sostituzione monoalfabetico è una generalizzazione di un cifrario a scorrimento.

‘A sostituzione’, perché ogni carattere del testo in chiaro è sostituito con un carattere dell’alfabeto di C.

‘Monoalfabetico’ è fuorviante. Non si riferisce all’utilizzo di un stesso alfabeto per M e C, bensì, più in generale, all’utilizzo di alfabeti composti dallo stesso numero di elementi. È perciò possibile definire la funzione di cifratura come corrispondenza biunivoca tra gli elementi dei due alfabeti.

La chiave del cifrario a sostituzione monoalfabetico definisce una mappatura tra l’alfabeto di M e l’alfabeto di C. Ad esempio:

Esercizio: utilizzando la tabella di sostituzione qui sopra, come cifreresti il tuo nome e il tuo cognome?

Un cifrario a sostituzione monoalfabetico è sicuro?

Anzitutto, bisogna chiedersi: quante sono le possibili chiavi di un cifrario di questo genere?

Sia N la lunghezza dell’alfabeto. Ebbene, alla prima lettera di M possiamo associare N diverse lettere di C; alla seconda lettera di M possiamo associare N - 1 lettere di C… con qualche nozione di matematica, si intuisce che un cifrario di questo tipo ha un numero di diverse chiari possibili pari a:

N!

Ad esempio, se N = 26, ci sono 26! = 288 = 403291461126605635584000000 chiavi possibili.

288 è un numero gigantesco, che rende un cifrario a sostituzione monoalfabetico resistente ad attacchi a forza bruta. Wow! Questo potrebbe far pensare che un cifrario a sostituzione monoalfabetico sia sicuro. Non lo è.

Attaccare un cifrario [2]: KPA

Un attacco a testo in chiaro noto (known plaintext attack, KPA) consiste nel tentativo di scoprire la chiave di decifratura, conoscendo coppie di testi in chiaro/testi cifrati tutte ottenute utilizzando la stessa chiave.

Se si conosce un testo in chiaro e un corrispondente testo cifrato, ottenuto con un cifrario a sostituzione monoalfabetico, risalire alla mappatura tra alfabeto di M e alfabeto di C è banale: osservo una lettera nel testo in chiaro e osservo con quale lettera essa è stata sostituita nel testo cifrato. Ripeto il procedimento per tutte le lettere del testo in chiaro e ho completato la decifratura.

Attaccare un cifrario [3]: COA

Un attacco con solo testo cifrato (ciphertext only attack, COA) consiste nel tentativo di scoprire una chiave, conoscendo un certo numero di messaggi cifrati tutti ottenuti utilizzando la stessa chiave .

Come fare un attacco COA contro un cifrario a sostituzione monoalfabetico?

Sostituendo una lettera con un’altra, la frequenza di quella lettera nel testo cifrato rimane la stessa della corrispondente lettera nel testo in chiaro. Perciò, calcolando le frequenze di ogni carattere nel testo cifrato e confrontandole con le corrispondenti frequenze dei caratteri nell’alfabeto di M, si possono ottenere tantissime informazioni. A tal punto da rompere il cifrario.

Esempio di COA contro un cifrario a sostituzione monoalfabetico

Esempio di COA contro un cifrario a sostituzione monoalfabetico

Cifrari (simmetrici) a sostituzione polialfabetici

Un cifrario a sostituzione polialfabetico è una generalizzazione di un cifrario a sostituzione monoalfabetico.

La chiave di un cifrario a sostituzione polialfabetico definisce:

Ad esempio, la chiave di un cifrario a sostituzione polialfabetico può essere:

Alfabeti:

Politica: utilizza in maniera alternata Alfabeto 1 e Alfabeto 2

Quante sono le possibili chiavi di un cifrario a sostituzione polialfabetico?

Sia L il numero di alfabeti utilizzati. Sia N la lunghezza di tali alfabeti. Allora, il numero di possibili chiavi distinte è pari a:

N!L

Si tratta di un numero troppo grande per avere successo con un attacco brute force . Tuttavia, come accenneremo, anche questo tipo di cifrario è vittima di attacchi KPA e COA.

Il cifrario di Vigenère

Il cifrario di Vigenère è un esempio di cifrario a sostituzione polialfabetico. Può essere considerato una generalizzazione del cifrario di Cesare.

Invece di spostare ciascuna lettera del testo in chiaro di un numero fisso di posti, le lettere del testo in chiaro sono spostate di un numero variabile di posti. Cioè?

Esempio: scegliamo come chiave la parola ABACO. Nell’alfabeto da noi utilizzato:

Sia “MAMMA” il testo in chiaro. Sia “ABACO” la chiave. Utilizzando il cifrario di Vigenère, dovremo:

Il testo cifrato ottenuto sarà: MBMOO

Ok, ma come fare quando il testo in chiaro è più lungo della chiave?

Si ripete la chiave tutte le volte che è necessario 🙂

Testo in chiaro: IRONMANMUORE

Chiave: ABACO

IRONMANMUORE <— testo in chiaro
ABACOABACOAB <— chiave
ISOPAAOMWCRF <— testo cifrato

Cifrari a trasposizione (o a permutazione)

Un cifrario a trasposizione funziona in maniera totalmene diversa rispetto a un cifrario a sostituzione.

Tutti i cifrari visti finora – cifrari a scorrimento, cifrari monoalfabetici, cifrari polialfabetici - sono cifrari a sostituzione.

I cifrari a trasposizione sono basati sulla permutazione delle lettere del testo in chiaro.

Per costruire la chiave di un cifrario a trasposizione:

  1. Si sceglie la lunghezza L della chiave
  2. Si costruisce una tabella, di lunghezza L, che fissa le posizioni da permutare.

Ad esempio, scegliendo L = 5, la seguente è una possibile tavola di permutazione:

1 2 3 4 5
2 4 1 3 5

Come si cifra un messaggio, usando un cifrario a permutazione?

Dopo aver scelto la chiave, si divide il messaggio in chiaro in frammenti lunghi quanto la chiave. Poi, all’interno di ciascun frammento, si scambiano le posizioni dei caratteri basandosi sulla tavola di permutazione (ovvero, basandosi sulla chiave).

Ad esempio, sia “funcrypto” il messaggio da cifrare. Sia la seguente la chiave di cifratura:

1 2 3 4 5
2 4 1 3 5
  1. Dividiamo il testo in chiaro in frammenti lunghi quanto la chiave (aggiungiamo caratteri P per ottenere frammenti lunghi quanto la chiave):

funcr yptoP

  1. Applichiamo la tavola di permutazione, ovvero la chiave, a ciascun frammento:

nfcur tyopP

  1. Il testo cifrato è ottenuto allineando i frammenti ottenuti:

nfcurtyopP

Nota bene: un cifrario a trasposizione non è equivalente a un cifrario a sostituzione. Infatti, nei cifrari a trasposizione, ciascuna lettera del testo in chiaro può corrispondere a differenti lettere del testo cifrato, a seconda della posizione.

Cifrario a trasposizione: pro e contra

Pro:

Contra:

Regole per un buon cifrario [2]

Un buon cifrario deve resistere ad attacchi KPA e COA, ovvero:

Perfect secrecy

È possibile creare un cifrario che non fornisca alcuna informazione utile al decifratore? Un cifrario che sia impossibile da rompere, a prescindere dallo sforzo computazionale compiuto?

Sì. Tuttavia, un simile cifrario avrebbe almeno tre difetti:

Non potendo usare il cifrario perfetto, ci basta un cifrario computationally secure , ovvero in grado di resistere ad attacchi di ogni tipo portati avanti con la potenza di calcolo oggi disponibile. Si ipotizza, realisticamente, che nessuno disponga di una potenza di calcolo illimitata.

Saltando a pié pari una definizione rigorosa di computationally secure e scansando anni di sviluppo di cifrari a chiave simmetrica, arriviamo a…

Il cifrario simmetrico moderno: AES

AES (Advanced Encryption Standard) è l’algoritmo di crittografia simmetrica oggi più diffuso.

Il suo funzionamento è pubblico. È stato il vincitore di un contest internazionale del NIST (Nation Insitute of Standards and Technologies) nel 2001.

Esso è anche noto come algoritmo Rijndael (è fiammingo, si pronuncia tipo: “rèin-daal”), dai nomi dei crittografi belgi che lo hanno ideato: Vincent Rijmen e Joan Daemen.

AES

Anzitutto, AES è un cifrario a blocchi , ovvero lavora su blocchi di informazione di lunghezza predefinita (128 bit).

Come già detto, è un cifrario simmetrico, perciò la chiave di decifratura e quella di decifratura coincidono.

La chiave può essere lunga 128, 192, oppure 256 bit. A seconda della lunghezza della chiave, si parla di AES-128, AES-192 o AES-256. Sottolineo che, a prescindere dalla lunghezza della chiave, la dimensione del blocco è sempre pari a 128 bit.

Esistono 2128 chiavi da 128 bit. Se queste sono generate casualmente, non esiste attacco brute force in grado di scovare la chiave. Tanto meno per AES-192 e AES-256.

AES è stato progettato per resistere agli attacchi visti finora: brute-forcing , known plaintext, ciphertext only. AES resiste anche ad altri attacchi da noi non studiati: attacchi di crittoanalisi lineare, differenziale, …

Se e quando esisteranno computer quantistici, il numero di tentativi da effettuare per completare un attacco brute force sarà ridotto da 2n a 2n/2, grazie all’algoritmo di Grover1. Oggi (2025) si riescono a effettuare circa 280 tentativi in circa un’ora2. Si ritiene che un algoritmo, per essere sempre considerato sicuro, debba richiedere almeno 2128 tentativi per scovare la chiave.

Di seguito una tabella che riassume la situazione di sicurezza delle tre versioni di AES. Il termine quantum resistant indica che un algoritmo continuerà a essere considerato sicuro anche dopo l’eventuale creazione di computer quantistici.

Versione di AES Lunghezza della chiave Numero di tentativi per un attacco brute force oggi è sicuro oggi? Numero di tentativi per un attacco brute force con computer quantistici è quantum resistant?
AES-128 128 2128 2128/2 = 264
AES-192 192 2192 2192/2 = 296
AES-256 256 2256 2256/2 = 2128

AES: come funziona?

AES si basa su concetti di algebra lineare e aritmetica modulare. Può sembrare spaventoso, ma è sufficiente visitare la pagina di Wikipedia per avere una idea del suo funzionamento.

Oppure, potete recarvi a pagina 131 di questo libro qui.

Noi insieme, però, non studieremo il funzionamento esatto di AES: per quanto molto interessante, sia da un punto di vista informatico, sia da un punto di vista matematico, richiederebbe molte, troppe lezioni. Chi vorrà, lo studierà per sé o in università!

ChaCha20

Per migliorare la comprensione della lezione, consiglio vivamente di procurarsi immagini e/o video esplicativi.

Origini e contesto di ChaCha20

Struttura interna del cifrario

Sicurezza e vantaggi

Crittografia asimmetrica

Si parla di cifrario a crittografia asimmetrica o crittografia a chiave pubblica quando la chiave di cifratura è pubblica, mentre la chiave di decifratura è segreta.

Crittografia asimmetrica: un po’ di storia

Fino al 1976, la crittografia asimmetrica è stata un’idea balenata qua e là tra varie menti umane, oppure un segreto di stato americano.

Nel 1874, ad esempio, il signor William Stanley Jevons scriveva in un suo libro:

«Può il lettore dire quali sono i due numeri moltiplicati tra loro che produrranno il numero 8616460799? Penso che sia improbabile che qualcuno ci riesca, a parte me stesso»

Jevons aveva appena colto uno dei problemi sui quali oggi si basa la crittografia asimmetrica: la fattorizzazione di un numero.

P.S.: oggi potete scrivere uno script in qualsiasi linguaggio e il vostro potentissimo computer troverà i fattori primi di 8616460799 (a patto che scriviate una soluzione sufficientemente efficiente. Provateci.)

Cosa accadde nel 1976?

Nel 1976, i signori Whitfield Diffie e Martin Hellman pubblicarono lo schema di un protocollo a cifratura asimmetrica, oggi noto come «scambio di chiavi di Diffie-Hellman». Fu l’inizio della crittografia asimmetrica.

Nel 1977, i signori Ronald Rivest, Adi Shamir e Leonard Adleman inventarono l’algoritmo di crittografia RSA, che più tardi cercherò di mostrarvi.

Crittografia asimmetrica: chiavi

Quando si utilizza un protocollo a cifratura asimmetrica, ogni attore dispone di due chiavi:

Dalla chiave segreta è possibile derivare la chiave pubblica. Dalla chiave pubblica deve essere impossibile risalire alla chiave segreta. La generazione di queste chiavi si basa su dei problemi matematici di cui parlerò più tardi.

Cifratura asimmetrica e confidenzialità

Confidenzialità

In un protocollo a crittografia asimmetrica, chiunque (Bob) può criptare un messaggio utilizzando la chiave pubblica di Alice. Solo Alice può decrittare il messaggio utilizzando la propria chiave segreta.

Cifratura asimmetrica e autenticazione

Autenticazione

In un protocollo a crittografia asimmetrica, solo Alice può criptare un messaggio con la propria chiave privata, e chiunque (Bob) può decrittare il messaggio usando la chiave pubblica di Alice. Bob è certo che il mittente del messaggio sia Alice, perché solo lei conosce la chiave segreta associata alla sua chiave pubblica. Questa è la base della firma digitale.

Come si implementa tutto questo?

Anche la crittografia asimmetrica ha una solida base matematica.

L’idea è di sfruttare un problema complesso, ovvero un’operazione matematica semplice da eseguire, ma difficilissima da invertire.

I «problemi complessi» oggi sfruttati sono:

RSA

RSA è un algoritmo di crittografia a chiave pubblica, basato sulla difficoltà del problema di fattorizzazione di un numero.

Se volete unirvi alla sfida, rimangono 31 numeri RSA da fattorizzare .

Adesso proverò a spiegarvi il funzionamento di RSA. Come in ogni algoritmo di crittografia, c’è tanta matematica.

RSA: come funziona

  1. Si scelgono a caso due numeri primi, p e q, abbastanza grandi per la sicurezza dell’algoritmo. I numeri primi si scelgono usando dei test di primalità.
  2. Si calcola il loro prodotto: n = pq , chiamato modulo. Si ritiene che la fattorizzazione di n sia segreta, ovvero che solo chi ha scelto i due numeri primi p e q sia in grado di fattorizzare n.
  3. Si calcola il prodotto ϕ(n)=(p1)(q1), dove ϕ(n) è la funzione toziente.
  4. Si sceglie un numero e, chiamato esponente pubblico, coprimo con ϕ(n) e minore di ϕ(n).
  5. Si calcola il numero d, chiamato esponente privato, tale che il suo prodotto con e sia congruo a 1 modulo ϕ(n), cioè:
ed=1mod(ϕ(n))

Fatto.

RSA: come usarlo

RSA

RSA con OpenSSL

Utilizzando il software OpenSSL, è possibile giocare con RSA.

Generare, nella cartella corrente, una chiave privata RSA nel file private.key:

openssl genrsa -out private.key

leggere la chiave privata custodita nel file private.key, in formato human-readable:

openssl rsa -text -in private.key

Utilizzando il software OpenSSL, è possibile giocare con RSA.

ottenere la chiave pubblica associata alla chiave privata salvata nel file private.key e scriverla nel file public.key:

openssl rsa -in private.key -pubout -out public.key

leggere la chiave pubblica custodita nel file public.key, in formato human-readable:

openssl rsa -text -pubin -in public.key

Scambio delle chiavi Diffie-Hellman

Lo scambio di chiavi Diffie-Hellman (DF key exchange) è un protocollo crittografico che consente a due entità di stabilire una chiave segreta condivisa utilizzando un canale di comunicazione insicuro, senza la necessità che le due parti si siano incontrate in precedenza.

Una volta scambiata una chiave segreta, questa può essere utilizzata per instaurare una comunicazione sicura attraverso un protocollo a chiave simmetrica.

Lo sicurezza dello scambio di chiavi Diffie-Hellman si basa sul problema del logaritmo discreto. In sintesi e in maniera imprecisa, l’idea è che, se conosco il risultato del logaritmo m = g * a (mod p), è pressocché impossibile risalire all’esponente a con l’operazione a = log(base g) m (mod p).

DF: come funziona

Fonti

  1. L’algoritmo di Grover richiede che i tentativi siano eseguiti in sequenza per ottenere il suo speedup quadratico completo. Se si prova a parallelizzarlo su più computer quantistici, ciascuno recupera solo la radice quadrata del fattore di parallelizzazione, e il lavoro totale del sistema aumenta invece di restare costante (a differenza della forza bruta classica, che è perfettamente parallelizzabile). Questo è il motivo per cui NIST considera AES-128 sicuro anche contro computer quantistici, ed è alla base della sua classificazione come standard di riferimento (“Categoria 1”) per la crittografia post-quantistica; lo stesso vale, a maggior ragione, per AES-192 e AES-256. Per approfondire, con tanto di conti numerici, puoi leggere questo articolo del crittografo italiano Filippo Valsorda

  2. La stima si basa sulla potenza di calcolo aggregata della rete Bitcoin, che nell’estate 2025 oscillava tra 900 e quasi 1.000 EH/s (miliardi di miliardi di hash SHA-256 al secondo) — probabilmente l’infrastruttura di calcolo parallelo dedicato più grande mai costruita dall’uomo. Moltiplicando per i secondi in un’ora si ottengono circa 3×10^24 operazioni, cioè ≈2^80-2^81. È una stima indicativa, non un vero attacco ad AES: la rete Bitcoin è fatta di milioni di ASIC costruiti per calcolare esclusivamente SHA-256, non per testare chiavi AES. Un supercomputer general-purpose (il più veloce al mondo oggi, ~2,2 exaFLOPS) arriva invece a “soli” circa 2^63 tentativi/ora — la differenza mostra bene quanto conti l’hardware dedicato rispetto a quello generico, un punto rilevante anche quando si parla di attacchi quantistici basati su Grover. Fonte: rete Bitcoin ~900-976 EH/s, agosto 2025 (mexc.com/news, “Bitcoin Hashrate Cools After Record as Difficulty Bites”, 13 ago 2025).