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

Nell'implementazione dell'algoritmo di crittografia Kyber, che ha vinto la concorrenza degli algoritmi crittografici resistenti alla forza bruta su un computer quantistico, è stata identificata una vulnerabilità che consente agli attacchi side-channel di ricreare chiavi segrete basate sulla misurazione del tempo delle operazioni durante la decrittografia del testo cifrato fornito dall'aggressore. Il problema riguarda sia l'implementazione di riferimento del meccanismo di incapsulamento della chiave CRYSTALS-Kyber KEM sia molte librerie di crittografia abilitate per Kyber di terze parti, inclusa la libreria pqcrypto utilizzata nel messenger Signal.

L'essenza della vulnerabilità, che ha ricevuto il nome in codice KyberSlash, sta nell'uso dell'operazione di divisione “t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;” nel processo di decodifica del messaggio , in cui il dividendo contiene il valore segreto “t” di tipo “double” e il divisore è il noto valore pubblico KYBER_Q. Il problema è che il tempo di un'operazione di divisione non è costante e in ambienti diversi il numero di cicli della CPU eseguiti per la divisione dipende dai dati di input. Pertanto, in base all'evoluzione dei tempi di funzionamento, è possibile farsi un'idea della natura dei dati utilizzati nella divisione.

Daniel J. Bernstein, un noto esperto nel campo della crittografia, è riuscito a preparare una dimostrazione pratica della possibilità di mettere in pratica l'attacco. In due dei tre esperimenti condotti, eseguendo il codice sulla scheda Raspberry Pi 2, è stato possibile ricreare completamente la chiave privata Kyber-512 basandosi sulla misurazione del tempo di decodifica dei dati. Il metodo può essere adattato anche alle chiavi Kyber-768 e Kyber-1024. Per effettuare con successo un attacco è necessario che il testo cifrato specificato dall'aggressore venga elaborato utilizzando la stessa coppia di chiavi e che il tempo di esecuzione dell'operazione possa essere misurato con precisione.

In alcune librerie è stata individuata un'altra perdita (KyberSlash2), anch'essa dovuta all'utilizzo di un valore segreto durante l'esecuzione della divisione. Le differenze rispetto alla prima opzione si riducono alla chiamata in fase di crittografia (nelle funzioni poly_compress e polyvec_compress) e non durante la decrittografia. Tuttavia, la seconda opzione può essere utile per un attacco solo nei casi in cui la procedura viene utilizzata in operazioni di ricrittografia in cui l'output del testo cifrato è considerato confidenziale.

La vulnerabilità è già stata risolta nelle librerie:

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

Librerie inizialmente non interessate dalla vulnerabilità:

  • noiosossl/cripto/kyber,
  • filippo.io/mlkem768,
  • formosa-crypto/libjade/tree/main/src/crypto_kem,
  • kyber/comune/amd64/avx2,
  • formosa-crypto/libjade/tree/main/src/crypto_kem/kyber/common/amd64/ref,
  • pq-cristalli/kyber/avx2,
  • pqclean/crypto_kem/kyber*/avx2.

La vulnerabilità rimane senza patch nelle librerie:

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

Fonte: opennet.ru

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