เชชเซ‹เชธเซเชŸ-เช•เซเชตเซ‹เชจเซเชŸเชฎ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎ Kyber เชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เชจเชฌเชณเชพเชˆ

เช•เชพเชฏเชฌเชฐ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚, เชœเซ‡เชฃเซ‡ เช•เซเชตเซ‹เชจเซเชŸเชฎ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เชฌเซเชฐเซเชŸ เชซเซ‹เชฐเซเชธ เชฎเชพเชŸเซ‡ เชชเซเชฐเชคเชฟเชฐเซ‹เชงเช• เช•เซเชฐเชฟเชชเซเชŸเซ‹เช—เซเชฐเชพเชซเชฟเช• เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเซเชธเชจเซ€ เชธเซเชชเชฐเซเชงเชพ เชœเซ€เชคเซ€ เชนเชคเซ€, เชเช• เชจเชฌเชณเชพเชˆ เช“เชณเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ เชœเซ‡ เชธเชพเช‡เชก-เชšเซ‡เชจเชฒ เชนเซเชฎเชฒเชพเช“เชจเซ‡ เชกเชฟเช•เซเชฐเชฟเชชเซเชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเชพ เชธเชฎเชฏเชจเซ‡ เชฎเชพเชชเชตเชพเชจเชพ เช†เชงเชพเชฐเซ‡ เช—เซเชชเซเชค เช•เซ€เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชฆเซเชตเชพเชฐเชพ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชธเชฟเชซเชฐเชŸเซ‡เช•เซเชธเซเชŸ. เชธเชฎเชธเซเชฏเชพ CRYSTALS-Kyber KEM เช•เซ€ เชเชจเซเช•เซ‡เชชเซเชธเซเชฏเซเชฒเซ‡เชถเชจ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชจเชพ เชธเช‚เชฆเชฐเซเชญ เช…เชฎเชฒเซ€เช•เชฐเชฃ เช…เชจเซ‡ เชธเชฟเช—เซเชจเชฒ เชฎเซ‡เชธเซ‡เชจเซเชœเชฐเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ pqcrypto เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชธเชนเชฟเชค เช˜เชฃเซ€ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เช•เชพเชฏเชฌเชฐ-เชธเช•เซเชฐเชฟเชฏเช•เซƒเชค เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชฌเช‚เชจเซ‡เชจเซ‡ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡.

เชจเชฌเชณเชพเชˆเชจเซ‹ เชธเชพเชฐ, เชœเซ‡เชจเซ‡ เช•เซ‹เชก เชจเชพเชฎ 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-crystals/kyber/ref (เชกเชฟเชธเซ‡เชฎเซเชฌเชฐ 30),
  • เชธเชฟเชฎเซเชฌเซ‹เชฒเชฟเช•เชธเซ‹เชซเซเชŸ/เช•เชพเชฏเชฌเชฐ-เช•เซ‡2เชธเซ‹ (เชกเชฟเชธเซ‡เชฎเซเชฌเชฐ 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-crystals/kyber/avx2,
  • pqclean/crypto_kem/kyber*/avx2.

เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชฎเชพเช‚ เชจเชฌเชณเชพเชˆ เช…เชจเชชเซ‡เชšเซเชก เชฐเชนเซ‡ เช›เซ‡:

  • antontutoveanu/crystals-kyber-javascript,
  • เช†เชฐเซเชœเซ€เชฒ-เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ/เช•เชพเชฏเชฌเชฐ,
  • 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,
  • เชฐเซ‡เชจเซเชกเชฎเชฌเชฟเชŸ/เชฌเซ‹เชŸเชจ (20 เชกเชฟเชธเซ‡เชฎเซเชฌเชฐเซ‡, เชฎเชพเชคเซเชฐ 1 เชจเชฌเชณเชพเชˆ เชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€),
  • rustpq/pqcrypto/pqcrypto-kyber (เชฒเซ€เชฌเชธเชฟเช—เซเชจเชฒเชฎเชพเช‚ 5 เชœเชพเชจเซเชฏเซเช†เชฐเซ€เช เชซเชฟเช•เซเชธ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชชเชฐเช‚เชคเซ pqcrypto-kyberเชฎเชพเช‚ เชœ เชจเชฌเชณเชพเชˆ เชนเชœเซ เชธเซเชงเซ€ เช เซ€เช• เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจเชฅเซ€).

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹