Kyber посткванттық шифрлау алгоритмін енгізудегі осалдық

Кванттық компьютерде дөрекі күшке төзімді криптографиялық алгоритмдер конкурсында жеңіске жеткен Kyber шифрлау алгоритмін жүзеге асыруда бүйірлік арналық шабуылдарға шифрды шешу кезіндегі операциялардың уақытын өлшеуге негізделген құпия кілттерді қайта жасауға мүмкіндік беретін осалдық анықталды. шабуылдаушы ұсынған шифрлық мәтін. Мәселе CRYSTALS-Kyber KEM кілтін инкапсуляциялау механизмінің анықтамалық орындалуына да, Kyber қосылған көптеген үшінші тарап шифрлау кітапханаларына, соның ішінде Signal хабаршысында пайдаланылатын pqcrypto кітапханасына да әсер етеді.

KyberSlash кодтық атауын алған осалдықтың мәні хабарламаны декодтау процесінде «t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;» бөлу операциясын қолдануда. , онда дивидендте «қос» түрі бар «t» құпия мәні бар, ал бөлгіш KYBER_Q белгілі жалпыға ортақ мән болып табылады. Мәселе мынада, бөлу операциясының уақыты тұрақты емес және әртүрлі орталарда бөлу үшін орындалатын орталық процессор циклдарының саны кіріс деректеріне байланысты. Осылайша, жұмыс уақытының өзгеруіне сүйене отырып, бөлу кезінде қолданылатын деректердің табиғаты туралы түсінік алуға болады.

Криптография саласындағы белгілі сарапшы Даниэль Дж.Бернштейн шабуылды іс жүзінде жүзеге асыруға болатынын дәлелдейтін жұмыстық демонстрацияны дайындай алды. Жүргізілген үш эксперименттің екеуінде 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 желтоқсан),
  • symbolicsoft/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-кристалдары/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 (5 қаңтарда libsignal жүйесіне түзету қосылды, бірақ осалдық pqcrypto-kyber өзінде әлі түзетілмеген).

Ақпарат көзі: opennet.ru

пікір қалдыру