Kyber āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§, āĻ¯āĻž āĻāĻāĻāĻŋ āĻā§āĻ¯āĻŧāĻžāĻ¨ā§āĻāĻžāĻŽ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ°ā§ āĻŦā§āĻ°ā§āĻ āĻĢā§āĻ°ā§āĻ¸ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻ§ā§ āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻā§āĻ°āĻžāĻĢāĻŋāĻ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽāĻā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻž āĻāĻŋāĻ¤ā§āĻāĻŋāĻ˛, āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¯āĻž āĻ¸āĻžāĻāĻĄ-āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻāĻā§āĻ°āĻŽāĻŖāĻā§āĻ˛āĻŋāĻā§ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻā§āĻĒāĻ¨ āĻā§āĻā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻā§āĻ°āĻŽāĻŖāĻāĻžāĻ°ā§ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ¸āĻžāĻāĻĢāĻžāĻ°āĻā§āĻā§āĻ¸āĻāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ CRYSTALS-Kyber KEM āĻā§ āĻāĻ¨āĻā§āĻ¯āĻžāĻĒāĻ¸ā§āĻ˛ā§āĻļāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻŦāĻ āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛ āĻŽā§āĻ¸ā§āĻā§āĻāĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ pqcrypto āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ¸āĻš āĻ āĻ¨ā§āĻ āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻĒāĻā§āĻˇā§āĻ° Kyber-āĻ¸āĻā§āĻˇāĻŽ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻāĻ¯āĻŧāĻā§āĻ āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°ā§āĨ¤
āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻžāĻ° āĻ¸āĻžāĻ°āĻŽāĻ°ā§āĻŽ, āĻ¯āĻž āĻā§āĻĄ āĻ¨āĻžāĻŽ KyberSlash āĻĒā§āĻ¯āĻŧā§āĻā§, āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĄāĻŋāĻā§āĻĄ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;" āĻŦāĻŋāĻāĻžāĻ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ , āĻ¯ā§ āĻ˛āĻā§āĻ¯āĻžāĻāĻļā§ āĻā§āĻĒāĻ¨ āĻŽāĻžāĻ¨ "t" āĻāĻžāĻāĻĒ "āĻĄāĻŦāĻ˛" āĻ¸āĻš, āĻāĻŦāĻ āĻāĻžāĻāĻ āĻšāĻ˛ āĻ¸ā§āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻ¸āĻ°ā§āĻŦāĻāĻ¨ā§āĻ¨ āĻŽāĻžāĻ¨ KYBER_QāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ āĻāĻāĻāĻŋ āĻĄāĻŋāĻāĻŋāĻļāĻ¨ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ§ā§āĻ°ā§āĻŦāĻ āĻ¨āĻ¯āĻŧ, āĻāĻŦāĻ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻĄāĻŋāĻāĻŋāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ CPU āĻāĻā§āĻ°ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻāĻ¨āĻĒā§āĻ āĻĄā§āĻāĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§, āĻā§āĻ āĻŦāĻŋāĻāĻžāĻāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻĄā§āĻāĻžāĻ° āĻĒā§āĻ°āĻā§āĻ¤āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ§āĻžāĻ°āĻŖāĻž āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻā§āĻ°āĻžāĻĢāĻŋ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ° āĻāĻāĻāĻ¨ āĻ¸ā§āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻŦāĻŋāĻļā§āĻˇāĻā§āĻ āĻĄā§āĻ¯āĻžāĻ¨āĻŋāĻ¯āĻŧā§āĻ˛ āĻā§ āĻŦāĻžāĻ°ā§āĻ¨āĻ¸ā§āĻā§āĻāĻ¨, āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨ā§ āĻšāĻžāĻŽāĻ˛āĻž āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻĒā§āĻ°āĻŽāĻžāĻŖā§āĻ° āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻā§āĻˇāĻŽ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻ¨āĨ¤ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĻā§āĻāĻŋāĻ¤ā§, āĻ°āĻžāĻ¸ā§āĻĒāĻŦā§āĻ°āĻŋ āĻĒāĻžāĻ 2 āĻŦā§āĻ°ā§āĻĄā§ āĻā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻĄā§āĻāĻž āĻĄāĻŋāĻā§āĻĄāĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ Kyber-512 āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ Kyber-768 āĻāĻŦāĻ Kyber-1024 āĻā§āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯āĻ āĻ āĻāĻŋāĻ¯ā§āĻāĻŋāĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻāĻā§āĻ°āĻŽāĻŖ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻā§āĻ°āĻŽāĻŖāĻāĻžāĻ°ā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻ¸āĻžāĻāĻĢāĻžāĻ°āĻā§āĻā§āĻ¸āĻ āĻāĻāĻ āĻā§ āĻā§āĻĄāĻŧāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŦāĻ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĻāĻŋ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻŋāĻā§ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ¤ā§ āĻāĻ°ā§āĻāĻāĻŋ āĻĢāĻžāĻāĻ¸ (KyberSlash2) āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻĄāĻŋāĻāĻŋāĻļāĻ¨ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻĒāĻ¨ āĻŽāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻāĻžāĻ°āĻŖā§āĻ āĻāĻā§āĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻĨā§āĻā§ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻ˛ā§ āĻāĻ¸ā§ (āĻĒāĻ˛āĻŋ_āĻāĻŽā§āĻĒā§āĻ°ā§āĻ¸ āĻāĻŦāĻ āĻĒāĻ˛āĻŋāĻā§āĻ_āĻāĻŽāĻĒā§āĻ°ā§āĻ¸ āĻĢāĻžāĻāĻļāĻ¨ā§), āĻāĻŦāĻ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻ¯āĻŧāĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ āĻāĻā§āĻ°āĻŽāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸āĻžāĻāĻĢāĻžāĻ°āĻā§āĻā§āĻ¸āĻā§āĻ° āĻāĻāĻāĻĒā§āĻ āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧ āĻŦāĻ˛ā§ āĻŦāĻŋāĻŦā§āĻāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤
āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ¤ā§ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻ āĻŋāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§:
- zig/lib/std/crypto/kyber_d00.zig (22 āĻĄāĻŋāĻ¸ā§āĻŽā§āĻŦāĻ°),
- pq-āĻā§āĻ°āĻŋāĻ¸ā§āĻāĻžāĻ˛/āĻāĻžāĻāĻŦāĻžāĻ°/āĻ°ā§āĻĢ (āĻĄāĻŋāĻ¸ā§āĻŽā§āĻŦāĻ° 30),
- symbolicsoft/kyber-k2so (āĻĄāĻŋāĻ¸ā§āĻŽā§āĻŦāĻ° 19),
- āĻā§āĻ˛āĻžāĻāĻĄāĻĢā§āĻ˛ā§āĻ¯āĻŧāĻžāĻ°/āĻ¸āĻžāĻ°ā§āĻā§āĻ˛ (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-āĻā§āĻ°āĻŋāĻ¸ā§āĻāĻžāĻ˛/āĻāĻžāĻāĻŦāĻžāĻ°/āĻāĻāĻŋāĻāĻā§āĻ¸ā§¨,
- pqclean/crypto_kem/kyber*/avx2.
āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ¤ā§ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻ°āĻ¯āĻŧā§āĻā§:
- antontutoveanu/āĻā§āĻ°āĻŋāĻ¸ā§āĻāĻžāĻ˛-āĻāĻžāĻāĻŦāĻžāĻ°-āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ,
- Argyle-āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°/āĻāĻžāĻāĻŦāĻžāĻ°,
- debian/src/liboqs/unstable/src/kem/kyber,
- āĻā§āĻĄā§āĻ˛āĻ¸ā§āĻāĻŋāĻ¸āĻŋāĻāĻŋāĻāĻ°āĻŋāĻāĻŋ/āĻā§āĻ°āĻŋāĻ¸ā§āĻāĻžāĻ˛-āĻā§,
- mupq/pqm4/crypto_kem/kyber* (20 āĻĄāĻŋāĻ¸ā§āĻŽā§āĻŦāĻ°, āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻžāĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 1 āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛),
- PQClean/PQClean/crypto_kem/kyber*/aarch64,
- PQClean/PQClean/crypto_kem/kyber*/āĻā§āĻ˛āĻŋāĻ¨,
- randombit/botan (20 āĻĄāĻŋāĻ¸ā§āĻŽā§āĻŦāĻ°, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 1 āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛),
- rustpq/pqcrypto/pqcrypto-kyber (5 āĻāĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ°ā§ libsignal-āĻ āĻāĻāĻāĻŋ āĻĢāĻŋāĻā§āĻ¸ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻŋāĻ¨ā§āĻ¤ā§ pqcrypto-kyber-āĻ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻāĻāĻ¨āĻ āĻ āĻŋāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ)āĨ¤
āĻāĻ¤ā§āĻ¸: opennet.ru