UPGRD

Tutte le ultime notizie tech e non

sicurezza

Come abbiamo decifrato una chiave DKIM a 512 bit per meno di 8 euro nel cloud

By ,

Come abbiamo decifrato una chiave DKIM a 512 bit per meno di 8 euro nel cloud

In un'analisi sui record SPF, DKIM e DMARC dei primi 1 milione di siti web, è emerso un dato sorprendente: oltre 1.700 chiavi DKIM pubbliche risultavano più corte di 1.024 bit. Questo è stato inaspettato, poiché le chiavi RSA di lunghezza inferiore a 1.024 bit sono considerate insicure e il loro utilizzo in DKIM è stato deprecato con l'introduzione dell'RFC 8301 nel 2018.

L'idea di decifrare una chiave

Spinti dalla curiosità, i ricercatori hanno deciso di verificare se fosse possibile decifrare una di queste chiavi. L'obiettivo era estrarre la chiave privata da una chiave RSA pubblica, consentendo di firmare email come se si fosse il mittente originale. Inoltre, si voleva scoprire se le email firmate con questa chiave compromessa avrebbero superato i controlli di verifica DKIM dei principali provider di posta elettronica come Gmail, Outlook.com e Yahoo Mail.

La scelta della chiave

Per l'esperimento, è stata selezionata redfin.com, dopo aver trovato una chiave RSA pubblica a 512 bit su key1._domainkey.redfin.com (ora non più disponibile):

La chiave pubblica, presente nel tag del record DKIM, è codificata in formato ASN.1 DER e ulteriormente codificata in Base64. Per decodificare la chiave e ottenere il modulo (n) e l'esponente pubblico (e), è stato utilizzato un semplice codice Python:

# Codice per decodificare la chiave

Fattorizzazione della chiave

Con il modulo n a disposizione, il passo successivo è stato identificare i due numeri primi, p e q, il cui prodotto è uguale a n. Questo processo, noto come fattorizzazione, può risultare complesso. Fortunatamente, è stato trovato uno strumento open-source potente chiamato CADO-NFS, che offre un'implementazione semplice dell'algoritmo Number Field Sieve (NFS), il metodo più efficiente per fattorizzare grandi numeri.

Poiché la fattorizzazione richiede molta potenza di calcolo e non si voleva occupare i computer per giorni, è stata presa la decisione di noleggiare un server cloud. È stato scelto un server con 8 vCPU dedicate (serie AMD EPYC 7003) e 32 GB di RAM da Hetzner, installando Ubuntu come sistema operativo. La configurazione di CADO-NFS è stata semplice:

# Comandi per l'installazione di CADO-NFS

Per garantire che il server avesse sufficiente memoria per il compito, è stato aggiunto uno spazio di swap di 32 GB:

# Comando per aggiungere swap

La fattorizzazione è stata avviata chiamando lo script con n come input:

# Comando per avviare la fattorizzazione

Il processo ha richiesto circa 86 ore sul server a 8 vCPU, riuscendo a fattorizzare n in p e q:

Creazione della chiave privata

Dopo aver determinato p e q, erano disponibili tutti i componenti necessari per costruire la chiave privata RSA. Questo processo ha coinvolto l'uso di Python e della libreria PyCryptodome:

# Codice per generare la chiave privata

Queste righe di Python producono la chiave privata in formato PEM, pronta per l'uso:

Test della chiave

Integrata la chiave privata RSA nel proprio setup OpenDKIM, si è passati alla fase di test. È stata creata un'email semplice con un indirizzo di mittente security@redfin.com, inviata a vari servizi di hosting email. Sebbene la maggior parte dei provider abbia correttamente identificato la chiave a 512 bit come insicura, tre provider principali — Yahoo Mail, Mailfence e Tuta — hanno riportato un risultato.

Poiché redfin.com ha anche un record DMARC valido, il superamento del controllo DKIM implica che l'email ha superato anche la verifica DMARC, soddisfacendo i requisiti per BIMI.

Conclusioni

Tre decenni fa, decifrare una chiave pubblica RSA a 512 bit era un'impresa realizzabile solo con un supercomputer. Oggi, è possibile farlo in poche ore per meno di 8 euro su un server cloud. E se si dispone di un computer potente a casa con 16 o più core, si potrebbe realizzare questo processo ancora più rapidamente e a costi inferiori.

Non ci sono motivi validi per utilizzare chiavi a 512 o 768 bit al giorno d'oggi. I provider email dovrebbero automaticamente rifiutare qualsiasi firma DKIM generata con una chiave RSA più corta di 1.024 bit. Sono stati avvisati Yahoo, Mailfence e Tuta riguardo ai risultati ottenuti e sono stati condivisi consigli utili con loro.

I proprietari di domini devono anche agire, esaminando le impostazioni DNS per eventuali record DKIM obsoleti che non rispettano il minimo standard di 1.024 bit. Un modo semplice per controllare il tag di un record DKIM è contare i suoi caratteri Base64: una chiave RSA pubblica a 1.024 bit avrà almeno 216 caratteri.

Come abbiamo decifrato una chiave DKIM a 512 bit per meno di 8 euro nel cloud

FAQ

Cosa sono le chiavi DKIM?

Le chiavi DKIM (DomainKeys Identified Mail) sono utilizzate per firmare digitalmente le email, garantendo che il contenuto non sia stato alterato e che provenga effettivamente dal dominio dichiarato.

Perché le chiavi DKIM a 512 bit sono considerate insicure?

Le chiavi DKIM a 512 bit sono considerate insicure perché la loro lunghezza è inferiore al minimo raccomandato di 1.024 bit, rendendole vulnerabili a tecniche di decifratura moderne.

Qual è stato l'obiettivo della ricerca menzionata nell'articolo?

L'obiettivo della ricerca era decifrare una chiave DKIM a 512 bit per estrarre la chiave privata e verificare se le email firmate con essa avrebbero superato i controlli DKIM dei principali provider di posta elettronica.

Quale chiave è stata scelta per l'esperimento?

È stata scelta la chiave RSA pubblica a 512 bit di redfin.com, trovata nel record DKIM del dominio.

Come è stata decifrata la chiave DKIM?

La chiave è stata decifrata utilizzando un codice Python per estrarre il modulo e l'esponente pubblico, seguita dalla fattorizzazione del modulo n per ottenere i numeri primi p e q.

Quale strumento è stato utilizzato per la fattorizzazione?

È stato utilizzato uno strumento open-source chiamato CADO-NFS, che implementa l'algoritmo Number Field Sieve (NFS) per la fattorizzazione di grandi numeri.

Quanto tempo ha richiesto la fattorizzazione della chiave?

La fattorizzazione ha richiesto circa 86 ore su un server cloud con 8 vCPU.

Cosa è stato fatto dopo aver ottenuto p e q?

Dopo aver ottenuto p e q, sono stati utilizzati per costruire la chiave privata RSA, utilizzando Python e la libreria PyCryptodome.

Quali provider di posta elettronica hanno accettato la chiave a 512 bit?

I provider Yahoo Mail, Mailfence e Tuta hanno accettato la chiave a 512 bit, mentre la maggior parte degli altri provider l'ha identificata come insicura.

Cosa devono fare i proprietari di domini riguardo alle chiavi DKIM?

I proprietari di domini devono esaminare le impostazioni DNS per eventuali record DKIM obsoleti e assicurarsi che utilizzino chiavi RSA di almeno 1.024 bit.