Kyber գաղտնագրման ալգորիթմի ներդրման ժամանակ, որը հաղթել է քվանտային համակարգչի վրա կոպիտ ուժին դիմացկուն գաղտնագրման ալգորիթմների մրցույթում, հայտնաբերվել է խոցելիություն, որը թույլ է տալիս կողային ալիքի գրոհներին վերստեղծել գաղտնի բանալիներ՝ հիմնված վերծանման ժամանակ գործողությունների ժամանակի չափման վրա: գաղտնագրված տեքստ, որը տրամադրվել է հարձակվողի կողմից: Խնդիրն ազդում է ինչպես CRYSTALS-Kyber KEM բանալիների ինկապսուլյացիայի մեխանիզմի հղման վրա, այնպես էլ երրորդ կողմի Kyber միացված գաղտնագրման գրադարանների վրա, ներառյալ «Signal Messenger»-ում օգտագործվող pqcrypto գրադարանը:
KyberSlash կոդային անվանումը ստացած խոցելիության էությունը կայանում է «t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;» բաժանման գործողության կիրառման մեջ։ հաղորդագրության վերծանման գործընթացում, որտեղ բաժանելի մասը պարունակում է «կրկնակի» տիպի «t» գաղտնի արժեքը, իսկ բաժանարարը հայտնի հանրային արժեքն է KYBER_Q: Խնդիրն այն է, որ բաժանման գործողության ժամանակը հաստատուն չէ, և տարբեր միջավայրերում բաժանման համար կատարված CPU ցիկլերի քանակը կախված է մուտքային տվյալներից։ Այսպիսով, գործողությունների ժամանակի փոփոխության հիման վրա կարելի է պատկերացում կազմել բաժանման մեջ օգտագործվող տվյալների բնույթի մասին:
Դանիել Ջ. Բերնշտեյնը՝ հայտնի կրիպտոգրաֆիայի փորձագետը, կարողացել է ստեղծել հարձակման հայեցակարգի ապացուցման աշխատանքային ցուցադրություն։ 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-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 (հունվարի 5-ին libsignal-ին ավելացվել է շտկում, սակայն խոցելիությունը դեռ չի շտկվել բուն pqcrypto-kyber-ում):
Source: opennet.ru
