Vulnerabilità nelle implementazioni dell'algoritmo di crittografia post-quantistica Kyber

Nell'implementazione dell'algoritmo di crittografia Kyber, vincitore del concorso sui crittografi resistenti agli attacchi dei computer quantistici, è stata scoperta una vulnerabilità che permette di condurre attacchi tramite canali laterali per ricostruire le chiavi segrete sulla base della misurazione del tempo delle operazioni durante la decodifica del testo cifrato fornito dall'attaccante. Il problema riguarda sia l'implementazione di riferimento del meccanismo di incapsulamento delle chiavi CRYSTALS-Kyber KEM, sia molte librerie di crittografia di terze parti che supportano Kyber, inclusa la libreria pqcrypto utilizzata nel messenger Signal.

La natura della vulnerabilità, che ha ricevuto il nome in codice KyberSlash, risiede nell'uso dell'operazione di divisione nel processo di decodifica del messaggio: "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;", in cui il dividendo contiene un valore segreto "t" di tipo "double", mentre il divisore è un noto valore pubblico KYBER_Q. Il problema è che il tempo dell'operazione di divisione non è costante e, in ambienti diversi, il numero di cicli CPU necessari per eseguire la divisione dipende dai dati in ingresso. Pertanto, sulla base delle variazioni del tempo delle operazioni, è possibile ottenere indicazioni sulla natura dei dati utilizzati nella divisione.

Daniel Bernstein, noto esperto nel campo della crittografia, è riuscito a preparare una dimostrazione pratica della possibilità di attaccare nel mondo reale. In due dei tre esperimenti condotti eseguendo il codice su una scheda Raspberry Pi 2, è stato possibile ricostruire completamente la chiave privata Kyber-512 sulla base della misurazione del tempo di decodifica dei dati. Il metodo può anche essere adattato per chiavi Kyber-768 e Kyber-1024. Per condurre con successo un attacco, è necessario che il testo cifrato fornito dall'attaccante venga elaborato utilizzando la stessa coppia di chiavi e che si possa misurare con precisione il tempo di esecuzione dell'operazione.

In alcune librerie è stata rilevata un'altra vulnerabilità (KyberSlash2), che si verifica anch'essa a causa dell'uso di un valore segreto durante le operazioni di divisione. Le differenze rispetto alla prima variante riguardano la chiamata nella fase di crittografia (nelle funzioni poly_compress e polyvec_compress), anziché durante la decrittazione. Tuttavia, la seconda variante può risultare utile per un attacco solo nei casi in cui la procedura viene utilizzata nelle operazioni di ri-crittografia, in cui l'output del testo crittografato viene considerato confidenziale.

La vulnerabilità è già stata corretta nelle librerie:

  • zig/lib/std/crypto/kyber_d00.zig (22 dicembre),
  • pq-crystals/kyber/ref (30 dicembre),
  • symbolicsoft/kyber-k2so (19 dicembre),
  • cloudflare/circl (8 gennaio),
  • aws/aws-lc/crypto/kyber (4 gennaio),
  • liboqs/src/kem/kyber (8 gennaio).

Librerie che inizialmente non erano vulnerabili:

  • boringssl/crypto/kyber,
  • filippo.io/mlkem768,
  • formosa-crypto/libjade/tree/main/src/crypto_kem,
  • kyber/common/amd64/avx2,
  • formosa-crypto/libjade/tree/main/src/crypto_kem/kyber/common/amd64/ref,
  • pq-crystals/kyber/avx2,
  • pqclean/crypto_kem/kyber*/avx2.

La vulnerabilità rimane non risolta nelle librerie:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (20 dicembre corretta solo 1 variante della vulnerabilità),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (20 dicembre corretta solo 1 variante della vulnerabilità),
  • rustpq/pqcrypto/pqcrypto-kyber (5 gennaio la correzione è stata aggiunta in libsignal, ma nella stessa pqcrypto-kyber la vulnerabilità non è ancora stata corretta).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster