рдХреНрд╡рд╛рдВрдЯрдо рдХреЙрдореНрдкреНрдпреБрдЯрд░рд╡рд░ рдмреНрд░реВрдЯ рдлреЛрд░реНрд╕рд▓рд╛ рдкреНрд░рддрд┐рд░реЛрдзрдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреА рд╕реНрдкрд░реНрдзрд╛ рдЬрд┐рдВрдХрдгрд╛рд▒реНрдпрд╛ Kyber рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ, рдПрдХ рднреЗрджреНрдпрддрд╛ рдУрд│рдЦрд▓реА рдЧреЗрд▓реА рдЬреА рд╕рд╛рдЗрдб-рдЪреЕрдирд▓ рд╣рд▓реНрд▓реНрдпрд╛рдВрдирд╛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рджрд░рдореНрдпрд╛рди рдСрдкрд░реЗрд╢рдиреНрд╕рдЪрд╛ рд╡реЗрд│ рдореЛрдЬрдгреНрдпрд╛рдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ рдЧреБрдкреНрдд рдХреА рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдЖрдХреНрд░рдордгрдХрд░реНрддреНрдпрд╛рдиреЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓рд╛ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ. рд╕рдорд╕реНрдпрд╛ CRYSTALS-Kyber KEM рдХреА рдПрдиреНрдХреЕрдкреНрд╕реБрд▓реЗрд╢рди рдпрдВрддреНрд░рдгрд╛ рдЖрдгрд┐ рд╕рд┐рдЧреНрдирд▓ рдореЗрд╕реЗрдВрдЬрд░рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ pqcrypto рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╣ рдЕрдиреЗрдХ рддреГрддреАрдп-рдкрдХреНрд╖ Kyber-рд╕рдХреНрд╖рдо рдПрдирдХреНрд░рд┐рдкреНрд╢рди рд▓рд╛рдпрдмреНрд░рд░реАрдЪреНрдпрд╛ рд╕рдВрджрд░реНрдн рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╡рд░ рдкрд░рд┐рдгрд╛рдо рдХрд░рддреЗ.
рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪреЗ рд╕рд╛рд░, рдЬреНрдпрд╛рд▓рд╛ KyberSlash рд╣реЗ рдХреЛрдб рдирд╛рд╡ рдорд┐рд│рд╛рд▓реЗ рдЖрд╣реЗ, рддреЛ рд╕рдВрджреЗрд╢ рдбреАрдХреЛрдб рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рд╡рд┐рднрд╛рдЧрдгреА рдСрдкрд░реЗрд╢рди тАЬt = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;тАЭ рд╡рд╛рдкрд░рдгреНрдпрд╛рдд рдЖрд╣реЗ. , рдЬреНрдпрд╛рдордзреНрдпреЗ рд▓рд╛рднрд╛рдВрд╢рд╛рдордзреНрдпреЗ рдЧреБрдкреНрдд рдореВрд▓реНрдп тАЬtтАЭ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ тАЬрджреБрд╣реЗрд░реАтАЭ рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗ рдЖрдгрд┐ рднрд╛рдЬрдХ рд╣реЗ KYBER_Q рд╣реЗ рд╕реБрдкреНрд░рд╕рд┐рджреНрдз рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдореВрд▓реНрдп рдЖрд╣реЗ. рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рдбрд┐рд╡реНрд╣рд┐рдЬрди рдСрдкрд░реЗрд╢рдирдЪреА рд╡реЗрд│ рд╕реНрдерд┐рд░ рдирд╕рддреЗ рдЖрдгрд┐ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдбрд┐рд╡реНрд╣рд┐рдЬрдирд╕рд╛рдареА CPU рд╕рд╛рдпрдХрд▓рдЪреА рд╕рдВрдЦреНрдпрд╛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдСрдкрд░реЗрд╢рдирдЪреНрдпрд╛ рд╡реЗрд│реЗрддреАрд▓ рдмрджрд▓рд╛рдВрдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░, рд╡рд┐рднрд╛рдЧрдгреАрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдбреЗрдЯрд╛рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдпреЗрдК рд╢рдХрддреЗ.
рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреНрд╖реЗрддреНрд░рд╛рддреАрд▓ рд╕реБрдкреНрд░рд╕рд┐рджреНрдз рддрдЬреНрдЮ рдбреЕрдирд┐рдпрд▓ рдЬреЗ. рдмрд░реНрдирд╕реНрдЯреАрди рд╣рд╛ рд╣рд▓реНрд▓рд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдпрд╛ рдкреБрд░рд╛рд╡реНрдпрд╛рдЪреЗ рдХрд╛рд░реНрдпрд░рдд рдкреНрд░рд╛рддреНрдпрдХреНрд╖рд┐рдХ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рд╕рдХреНрд╖рдо рд╣реЛрддреЗ. рд░рд╛рд╕реНрдкрдмреЗрд░реА Pi 2 рдмреЛрд░реНрдбрд╡рд░ рдХреЛрдб рдЪрд╛рд▓рд╡рддрд╛рдирд╛, рддреАрдирдкреИрдХреА рджреЛрди рдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ, рдбреЗрдЯрд╛ рдбреАрдХреЛрдбрд┐рдВрдЧ рд╡реЗрд│ рдореЛрдЬрдгреНрдпрд╛рдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ Kyber-512 рдЦрд╛рдЬрдЧреА рдХреА рдкреВрд░реНрдгрдкрдгреЗ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рд╢рдХреНрдп рдЭрд╛рд▓реЗ. рдкрджреНрдзрдд Kyber-768 рдЖрдгрд┐ Kyber-1024 рдХреА рд╕рд╛рдареА рджреЗрдЦреАрд▓ рд╕реНрд╡реАрдХрд╛рд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ. рд╣рд▓реНрд▓рд╛ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдкрд╛рд░ рдкрд╛рдбрдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдХреНрд░рдордгрдХрд░реНрддреНрдпрд╛рдиреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯрд╡рд░ рд╕рдорд╛рди рдХреА рдЬреЛрдбреА рд╡рд╛рдкрд░реВрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рдСрдкрд░реЗрд╢рдирдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╡реЗрд│ рдЕрдЪреВрдХрдкрдгреЗ рдореЛрдЬрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ.
рдЖрдгрдЦреА рдПрдХ рдЧрд│рддреА (KyberSlash2) рдХрд╛рд╣реА рд▓рд╛рдпрдмреНрд░рд░реАрдВрдордзреНрдпреЗ рдУрд│рдЦрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЬреА рд╡рд┐рднрд╛рдЧрдгреА рдХрд░рддрд╛рдирд╛ рдЧреБрдкреНрдд рдореВрд▓реНрдпрд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рдореБрд│реЗ рджреЗрдЦреАрд▓ рд╣реЛрддреЗ. рдкрд╣рд┐рд▓реНрдпрд╛ рдкрд░реНрдпрд╛рдпрд╛рддреАрд▓ рдлрд░рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдХреЙрд▓рдордзреНрдпреЗ рдпреЗрддрд╛рдд (рдкреЙрд▓реА_рдХреЙрдореНрдкреНрд░реЗрд╕ рдЖрдгрд┐ рдкреЙрд▓реАрд╡реНрд╣реЗрдХ_рдХреЙрдореНрдкреНрд░реЗрд╕ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ), рдЖрдгрд┐ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рджрд░рдореНрдпрд╛рди рдирд╛рд╣реА. рддрдерд╛рдкрд┐, рджреБрд╕рд░рд╛ рдкрд░реНрдпрд╛рдп рдХреЗрд╡рд│ рдЕрд╢рд╛рдЪ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рд╣рд▓реНрд▓реНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдард░реВ рд╢рдХрддреЛ рдЬреЗрд╡реНрд╣рд╛ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░реА-рдПрдирдХреНрд░рд┐рдкреНрд╢рди рдСрдкрд░реЗрд╢рдиреНрд╕рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕рд┐рдлрд░ рдЯреЗрдХреНрд╕реНрдЯрдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рдЧреЛрдкрдиреАрдп рдорд╛рдирд▓реЗ рдЬрд╛рддреЗ.
рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рдЕрд╕реБрд░рдХреНрд╖рд╛ рдЖрдзреАрдЪ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ:
- zig/lib/std/crypto/kyber_d00.zig (22 рдбрд┐рд╕реЗрдВрдмрд░),
- pq-crystals/kyber/ref (рдбрд┐рд╕реЗрдВрдмрд░ 30),
- symbolicsoft/kyber-k2so (рдбрд┐рд╕реЗрдВрдмрд░ резреп),
- рдХреНрд▓рд╛рдЙрдбрдлреНрд▓реЗрдЕрд░/рд╕рд░реНрдХрд▓ (рео рдЬрд╛рдиреЗрд╡рд╛рд░реА),
- 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-рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░/рдХрд╛рдпрдмрд░,
- 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
