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
