Ευπάθεια σε υλοποιήσεις του μετα-κβαντικού αλγόριθμου κρυπτογράφησης Kyber

Κατά την εφαρμογή του αλγόριθμου κρυπτογράφησης Kyber, ο οποίος κέρδισε τον ανταγωνισμό των κρυπτογραφικών αλγορίθμων ανθεκτικού σε βίαιη δύναμη σε έναν κβαντικό υπολογιστή, εντοπίστηκε ευπάθεια που επιτρέπει σε επιθέσεις πλευρικής καναλιού να αναδημιουργούν μυστικά κλειδιά με βάση τη μέτρηση του χρόνου των εργασιών κατά τη διάρκεια της αποκρυπτογράφησης της κρυπτογραφημένο κείμενο που παρέχεται από τον εισβολέα. Το πρόβλημα επηρεάζει τόσο την υλοποίηση αναφοράς του μηχανισμού ενθυλάξεων Key Key Crystals-KEM όσο και πολλών βιβλιοθηκών κρυπτογράφησης με δυνατότητα κρυπτογράφησης από τρίτους Kyber, συμπεριλαμβανομένης της βιβλιοθήκης PQCrypto που χρησιμοποιείται στον αγγελιοφόρο σήματος.

Η ουσία της ευπάθειας, που έλαβε το όνομα κώδικα Kyberslash, είναι στη χρήση της λειτουργίας διαίρεσης "t = (((t

Ο Daniel J. Bernstein, γνωστός εμπειρογνώμονας στον τομέα της κρυπτογραφίας, ήταν σε θέση να προετοιμάσει μια λειτουργική απόδειξη ότι η επίθεση θα μπορούσε να πραγματοποιηθεί στην πράξη. Σε δύο από τα τρία πειράματα που διεξήχθησαν, όταν εκτελούνται κώδικες στο σκάφος Raspberry Pi 2, ήταν δυνατό να αναδημιουργηθεί πλήρως το ιδιωτικό κλειδί Kyber-512 με βάση τη μέτρηση του χρόνου αποκωδικοποίησης δεδομένων. Η μέθοδος μπορεί επίσης να προσαρμοστεί για τα κλειδιά Kyber-768 και Kyber-1024. Για την επιτυχή εκτέλεση μιας επίθεσης, είναι απαραίτητο να επεξεργαστεί το κρυπτογράφημα που καθορίζεται από τον εισβολέα χρησιμοποιώντας το ίδιο ζεύγος κλειδιών και ότι ο χρόνος εκτέλεσης της λειτουργίας μπορεί να μετρηθεί με ακρίβεια.

Μια άλλη διαρροή (KyberSlash2) έχει εντοπιστεί σε ορισμένες βιβλιοθήκες, η οποία συμβαίνει επίσης λόγω της χρήσης μιας μυστικής τιμής κατά την εκτέλεση διαίρεσης. Οι διαφορές από την πρώτη επιλογή μειώνονται στην κλήση στο στάδιο κρυπτογράφησης (στις λειτουργίες poly_compress και polyvec_compress) και όχι κατά τη διάρκεια της αποκρυπτογράφησης. Ωστόσο, η δεύτερη επιλογή μπορεί να είναι χρήσιμη για μια επίθεση μόνο σε περιπτώσεις όπου η διαδικασία χρησιμοποιείται σε εργασίες επανεκκίνησης στις οποίες η έξοδος του κρυπτογράφου θεωρείται εμπιστευτική.

Η ευπάθεια έχει ήδη επιδιορθωθεί στις βιβλιοθήκες:

  • zig/lib/std/crypto/kyber_d00.zig (22 Δεκεμβρίου),
  • pq-crystals/kyber/ref (30 Δεκεμβρίου),
  • simbolicsoft/kyber-k2so (19 Δεκεμβρίου),
  • cloudflare/circl (8 Ιανουαρίου),
  • aws/aws-lc/crypto/kyber (4 Ιανουαρίου),
  • liboqs/src/kem/kyber (8 Ιανουαρίου).

Βιβλιοθήκες που δεν επηρεάστηκαν αρχικά από την ευπάθεια:

  • 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.

Η ευπάθεια παραμένει μη επιδιορθωμένη στις βιβλιοθήκες:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (Στις 20 Δεκεμβρίου, επιδιορθώθηκε μόνο 1 έκδοση της ευπάθειας),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (Στις 20 Δεκεμβρίου, επιδιορθώθηκε μόνο 1 ευπάθεια),
  • rustpq/pqcrypto/pqcrypto-kyber (μια επιδιόρθωση προστέθηκε στο libsignal στις 5 Ιανουαρίου, αλλά η ευπάθεια δεν έχει επιδιορθωθεί ακόμη στο ίδιο το pqcrypto-kyber).

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο