Aes 128 Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ°: RSA — ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ online

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

RSA — ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ online


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:
ОписаниС: RSA (Rivest-Shamir-Adleman) являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… криптосистСм с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для бСзопасной ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ‚Π°ΠΊΠΎΠΉ криптосистСмС ΠΊΠ»ΡŽΡ‡ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ являСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΈ отличаСтся ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π° Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ хранится Π² сСкрСтС (private). Π’ RSA эта асиммСтрия основана Π½Π° практичСской слоТности Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ произвСдСния Π΄Π²ΡƒΡ… Π±ΠΎΠ»ΡŒΡˆΠΈΡ… простых чисСл, «ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°». АббрСвиатура RSA состоит ΠΈΠ· Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π±ΡƒΠΊΠ² Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ Π ΠΎΠ½Π° РивСста, Ади Π¨Π°ΠΌΠΈΡ€Π° ΠΈ Π›Π΅ΠΎΠ½Π°Ρ€Π΄Π° АдлСмана, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ описали Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π² 1978 Π³ΠΎΠ΄Ρƒ. ΠšΠ»ΠΈΡ„Ρ„ΠΎΡ€Π΄ Кокс, английский ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² Британском Ρ€Π°Π·Π²Π΅Π΄Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π΅Π½Π½ΠΎΠΉ связи (GCHQ), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΡƒΡŽ систСму Π² 1973 Π³ΠΎΠ΄Ρƒ, Π½ΠΎ это Π½Π΅ Π±Ρ‹Π»ΠΎ рассСкрСчСно Π΄ΠΎ 1997 Π³ΠΎΠ΄Π°.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ RSA создаСт ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π½Π° основС Π΄Π²ΡƒΡ… Π±ΠΎΠ»ΡŒΡˆΠΈΡ… простых чисСл вмСстС с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ числа Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² сСкрСтС. Π›ΡŽΠ±ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ сообщСния, Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈ Ссли ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ достаточно Π²Π΅Π»ΠΈΠΊ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚ простыС числа, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС. ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ RSA извСстно ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° RSA. ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ вопрос, насколько это слоТно, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

RSA являСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ, ΠΈ ΠΈΠ·-Π·Π° этого ΠΎΠ½ Ρ€Π΅ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прямого ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. Π§Π°Ρ‰Π΅ всСго RSA ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ с симмСтричным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ массовыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ-Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ высокой скорости.


РСсурсы:

SHA512 — ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ online


ОписаниС: SHA512 — Ρ…Π΅Ρˆ-функция ΠΈΠ· сСмСйства Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² SHA-2 ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для создания Β«ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΎΠ²Β» ΠΈΠ»ΠΈ «дайдТСстов» для сообщСний ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… прилоТСниях ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, связанных с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

SHA-256 ΠΈ SHA-512, ΠΈ, Π² мСньшСй стСпСни, SHA-224 ΠΈ SHA-384 ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ Π°Ρ‚Π°ΠΊΠ°ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π΄Π»ΠΈΠ½Ρ‹, дСлая Π΅Π³ΠΎ нСбСзопасным для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ рСкомСндуСтся ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° SHA-3 для 512-Π±ΠΈΡ‚Π½Ρ‹Ρ… Ρ…ΡΡˆΠ΅ΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SHA-512/224 ΠΈ SHA-512/256 вмСсто SHA-224 ΠΈ SHA-256. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ происходит быстрСС, Ρ‡Π΅ΠΌ SHA-224 ΠΈ SHA-256 Π½Π° x86-64, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ SHA-512 Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° 64 Π±ΠΈΡ‚ вмСсто 32 Π±ΠΈΡ‚Π½Ρ‹Ρ… слов.

SHA-256 ΠΈ SHA-512 ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹ΠΌΠΈ Ρ…ΡΡˆ-функциями, вычислСнными с 32-разрядными ΠΈ 64-разрядными словами соотвСтствСнно. Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ количСства сдвига ΠΈ Π°Π΄Π΄ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ константы, Π½ΠΎ ΠΈΡ… структуры Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ практичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ количСством Ρ€Π°ΡƒΠ½Π΄ΠΎΠ². SHA-224 ΠΈ SHA-384 ΡΠ²Π»ΡΡŽΡ‚ΡΡ просто усСчСнными вСрсиями ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ…, вычислСнными с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями. SHA-512/224 ΠΈ SHA-512/256 Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ усСчСнными вСрсиями SHA-512, Π½ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, описанного Π² Ρ„Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Ρ… стандартах ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (FIPS) PUB 180-4. SHA-2 Π±Ρ‹Π»ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π² 2001 ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ΠΎΠΌ стандартов ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ (NIST) Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ стандарт БША (FIPS).

БСмСйство Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² SHA-2 Π·Π°ΠΏΠ°Ρ‚Π΅Π½Ρ‚ΠΎΠ²Π°Π½ΠΎ Π² ΠΏΠ°Ρ‚Π΅Π½Ρ‚Π΅ БША 6829355. Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ Π¨Ρ‚Π°Ρ‚Ρ‹ выпустили ΠΏΠ°Ρ‚Π΅Π½Ρ‚ ΠΏΠΎΠ΄ Π±Π΅Π·Π²ΠΎΠ·ΠΌΠ΅Π·Π΄Π½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ.


РСсурсы:

Как устроСн AES / Π₯Π°Π±Ρ€

О Ρ‡Ρ‘ΠΌ эта ΡΡ‚Π°Ρ‚ΡŒΡ

Π”ΠΎΠ»Π³ΠΎΠ΅ врСмя я считал, Ρ‡Ρ‚ΠΎ криптографичСскиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ€ΠΎΠ΄Π΅ AES ΠΈ MD5, устроСны ΠΎΡ‡Π΅Π½ΡŒ слоТно ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… совсСм Π½Π΅ просто, Π΄Π°ΠΆΠ΅ имСя ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ ΠΏΠΎΠ»Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ. Π—Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках программирования Ρ‚ΠΎΠ»ΡŒΠΊΠΎ укрСпляли это ΠΌΠ½Π΅Π½ΠΈΠ΅. Но Π½Π΅Π΄Π°Π²Π½ΠΎ Ρƒ мСня появилось ΠΌΠ½ΠΎΠ³ΠΎ свободного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ я Ρ€Π΅ΡˆΠΈΠ» Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² этих Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ…. Оказалось, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‡Π΅Π½ΡŒ просто устроСны ΠΈ для ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ совсСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Π½Π°ΠΏΠΈΡˆΡƒ ΠΊΠ°ΠΊ устроСн Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Rijndael) ΠΈ Π½Π°ΠΏΠΈΡˆΡƒ Π΅Π³ΠΎ Π½Π° JavaScript. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π° JavaScript? Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° этом языкС, Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, скаТСм, Π½Π° C, Π½ΡƒΠΆΠ΅Π½ компилятор ΠΈ найдётся совсСм ΠΌΠ°Π»ΠΎ ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ…, Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π’ ΠΊΠΎΠ½Ρ†Π΅ Π΅ΡΡ‚ΡŒ ссылка ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² с html страницСй ΠΈ нСсколькими js Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ β€” это ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ AES Π½Π° JavaScript.

Как ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ AES

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ 128-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сСкрСтный ΠΊΠ»ΡŽΡ‡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ΅Π½ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ прСобразования. Для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ 128-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ с Ρ‚Π΅ΠΌ ΠΆΠ΅ сСкрСтным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Выглядит это Ρ‚Π°ΠΊ:

cipher = encrypt(block, key) // ΡˆΠΈΡ„Ρ€ΡƒΠ΅ΠΌ block с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ key
block = decrypt(cipher, key) // Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ cipher с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ key

Π Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° всСгда Ρ€Π°Π²Π΅Π½ 128 Π±ΠΈΡ‚. Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ»ΡŽΡ‡Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ тСкст Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

  • ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ…Π΅Ρˆ ΠΎΡ‚ пароля
  • ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Π΅Ρˆ Π² ΠΊΠ»ΡŽΡ‡ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ описанным Π² стандартС AES
  • Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ тСкст Π½Π° Π±Π»ΠΎΠΊΠΈ ΠΏΠΎ 128 Π±ΠΈΡ‚
  • Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ cipher

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

hash = md5(password) // MD5 Ρ…Π΅Ρˆ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ 128 Π±ΠΈΡ‚
key = keyexpansion(hash) // ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Ρ…Π΅Ρˆ Π² ΠΊΠ»ΡŽΡ‡
blocks = split(text, 16) // Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ тСкст Π½Π° Π±Π»ΠΎΠΊΠΈ ΠΏΠΎ 16 Π±Π°ΠΉΡ‚

for (i = 0; i < blocks.
length; i++) cipher[i] = encrypt(blocks[i], key)

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ массив Π±Π»ΠΎΠΊΠΎΠ² cipher Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ decrypt:

hash = md5(password)
key = keyexpansion(hash)

for (i = 0; i < cipher.length; i++)
blocks[i] = decrypt(cipher[i], key)

text = merge(blocks) // ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ всС Π±Π»ΠΎΠΊΠΈ Π² ΠΎΠ΄Π½Ρƒ строку

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΄Π»ΠΈΠ½Π° тСкста ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΊΡ€Π°Ρ‚Π½Π° 128 Π±ΠΈΡ‚Π°ΠΌ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ тСкст нулями Π΄ΠΎ Π½ΡƒΠΆΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, Π° Π² Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсколько Π±Π°ΠΉΡ‚ с Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСкста. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ aes.encrypt ΠΈ aes.decrypt Π² Ρ„Π°ΠΉΠ»Π΅ aes.js Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.

ПолС GF(28)

AES Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ GF(28). Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ AES Π½Π° JavaScript Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΠΎΠ»Π΅, Π½ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ AES, ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ этот Ρ€Π°Π·Π΄Π΅Π».

ПолС GF(28) это числа 0..255 для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ особоС ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ особоС слоТСниС. Π’ΠΎΠ·ΠΌΡ‘ΠΌ ΠΊΠ°ΠΊΠΎΠ΅ Π½ΠΈΠ±ΡƒΠ΄ΡŒ число ΠΈΠ· этого поля ΠΈ прСдставим Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ восьми Π±ΠΈΡ‚ΠΎΠ²: a = a7a6a5a4a3a2

a1a0. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ прСдставим число b. Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ a ΠΈ b это извСстная побитовая опСрация xor:

a + b = a xor b

Π£ слоТСния Π΅ΡΡ‚ΡŒ простыС свойства:

a + a = 0
-a = 0 - a = a
a - b = a + (-b) = a + b

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ опрСдСляСтся слоТнСС. Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Ρ‹ с коэффициСнтами ΠΈΠ· Π±ΠΈΡ‚ΠΎΠ² этих чисСл:

p = a7x7 + a6x6 + a5x5 + a4x4 + a3x3 + a2x2 + a1x + a0


q = b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + b0

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΠΌ эти Π΄Π²Π° ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π° ΠΈ Π½Π°ΠΉΠ΄Ρ‘ΠΌ остаток ΠΎΡ‚ дСлСния Π½Π° m:

m = x8 + x4 + x3 + x + 1
r = pq mod (m)

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹Π±Ρ€Π°Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ m? Π£ этого ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π° Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° дСлитСля-ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π° Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ дСлится Π±Π΅Π· остатка: Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΈ ΠΎΠ½ сам. По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с простыми числами, ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ m «простой». ΠΠ°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ остаток ΠΎΡ‚ дСлСния ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… чисСл: для этого достаточно ΡƒΠΌΠ΅Ρ‚ΡŒ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ, ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Ρ‹, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ слоТСниС ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ производят ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ GF(2

8), Ρ‚.Π΅. слоТСниС ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ΠΎΠ² это xor ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€ΠΎΠΉ коэффициСнтов. Π’ΠΎΡ‚ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

x3 + x2 + 1 mod (x3 + 1) = x2 // Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΎΡ‚Π½ΡΡ‚ΡŒ x3+1
x3 + x2 + 1 mod (x2 + 1) = (x3 + x2 + 1) - (x + 1)(x2 + 1) = -x

ΠœΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ r прСдставим Π² Π²ΠΈΠ΄Π΅

r = r7x7 + r6x6 + r5x5 + r4

x4 + r3x3 + r2x2 + r1x + r0

Π•Π³ΠΎ 8 коэффициСнтов ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой 8-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ число ΠΈΠ· поля GF(28) ΠΈ это число называСтся ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ aβ€’b. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ слоТСния, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ нСльзя Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ°Ρ€ΠΎΠΉ простых ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Однако ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ Π² ΠΏΠΎΠ»Π΅ GF(28) ΠΌΠΎΠΆΠ½ΠΎ свСсти ΠΊ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ x, Π° ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° x ΠΌΠΎΠΆΠ½ΠΎ нСсколькими ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ опСрациями, ΠΎ Ρ‡Ρ‘ΠΌ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π½ΠΈΠΆΠ΅.

Для обозначСния ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ΠΎΠ² Π² GF(28) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ 16-Ρ€ΠΈΡ‡Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹. НапримСр

m = x8 + x4 + x3 + x + 1 = 100011011 = 0x011b = {01}{1b}

Π£ΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ x = {02} Π² ΠΏΠΎΠ»Π΅ GF(28) ΠΎΡ‡Π΅Π½ΡŒ просто. Рассмотрим ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅:

xp = x(a7x7 + a6x6 + a5x5 + a4x4 + a3x3 + a2x2 + a1x + a0) =
a7x8 + a6x7 + a5x6 + a4x5 + a3x4 + a2x3 + a1x<2 + a0x
p = a7a6a5a4a3a2a1a0
xp = a7a6a5a4a3a2a1a00 // это сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ остаток ΠΎΡ‚ дСлСния Π½Π° m. 0x1b }

Зная ΠΊΠ°ΠΊ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ Π½Π° x ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π°ΠΉΠ΄Ρ‘ΠΌ aβ€’b Π³Π΄Π΅ a = {3c}, b = {a1}:

b = {a1} = 10100001 = {80} + {20} + {01}
aβ€’b = aβ€’{80} + aβ€’{20} + aβ€’{01} = aβ€’x7 + aβ€’x5 + a =
aβ€’{02}β€’{02}β€’{02}β€’{02}β€’{02}β€’{02}β€’{02} + aβ€’{02}β€’{02}β€’{02}β€’{02}β€’{02} + a =
{29} + {c1} + {3c} = {d4}

ΠžΡΡ‚Π°Π»Π°ΡΡŒ ΠΎΠ΄Π½Π° простая опСрация Π² ΠΏΠΎΠ»Π΅ GF(28). Π£ любого Π±Π°ΠΉΡ‚Π° b, ΠΊΡ€ΠΎΠΌΠ΅ нуля, Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚ a = b-1 ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ свойством aβ€’b = {01}. ВсС Ρ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»Π΅ΠΌ β€” ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° x, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ β€” я собрал Π² ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ gf Π½Π° JavaScript.

Π’Π°Π±Π»ΠΈΡ†Π° SBox

Π­Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° прСдставляСт собой 256-Π±Π°ΠΉΡ‚Ρ‹ΠΉ массив ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ. НС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ½Π° получаСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот массив. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‡Π΅ΠΌΡƒ Ρ€Π°Π²Π΅Π½ элСмСнт SBox[b] Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ€ΠΈ дСйствия:

  1. Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚ ΠΊ b Π² ΠΏΠΎΠ»Π΅ GF(28) (ноль ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ)
  2. ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ состоящий ΠΈΠ· восьми Π±ΠΈΡ‚ΠΎΠ² Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ 8Γ—8 ΠΈΠ· 64 Π±ΠΈΡ‚ΠΎΠ²
  3. Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ {63}

Π’ суммС эти Ρ‚Ρ€ΠΈ дСйствия Π΄Π°ΡŽΡ‚ Π°Ρ„ΠΈΠ½Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅:

НСслоТно ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ построСна эта ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠ· Π±ΠΈΡ‚ΠΎΠ². 0x63 }

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½Π½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° выглядит Ρ‚Π°ΠΊ:

63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76
ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2
cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16

Π•Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ часто Π΄Π΅Π»Π°ΡŽΡ‚, Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ sbox ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ надобности.

Π’Π°Π±Π»ΠΈΡ†Π° InvSBox

Для Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ тСкста AES ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΊ SBox. Π’Π°Π±Π»ΠΈΡ†Π° InvSBox ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΈΠΌ свойством: InvSBox[SBox[i]] = i. InvSBox выглядит Ρ‚Π°ΠΊ:

52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fb
7c e3 39 82 9b 2f ff 87 34 8e 43 44 c4 de e9 cb
54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e
08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25
72 f8 f6 64 86 68 98 16 d4 a4 5c cc 5d 65 b6 92
6c 70 48 50 fd ed b9 da 5e 15 46 57 a7 8d 9d 84
90 d8 ab 00 8c bc d3 0a f7 e4 58 05 b8 b3 45 06
d0 2c 1e 8f ca 3f 0f 02 c1 af bd 03 01 13 8a 6b
3a 91 11 41 4f 67 dc ea 97 f2 cf ce f0 b4 e6 73
96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e
47 f1 1a 71 1d 29 c5 89 6f b7 62 0e aa 18 be 1b
fc 56 3e 4b c6 d2 79 20 9a db c0 fe 78 cd 5a f4
1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f
60 51 7f a9 19 b5 4a 0d 2d e5 7a 9f 93 c9 9c ef
a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61
17 2b 04 7e ba 77 d6 26 e1 69 14 63 55 21 0c 7d

Π’ΠΈΠ΄Ρ‹ AES

Алгоритм AES ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ Π΄Π»ΠΈΠ½ΠΎΠΉ 128 Π±ΠΈΡ‚ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±Π»ΠΎΠΊ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π΄Π»ΠΈΠ½Ρ‹. Для прСобразования примСняСтся расписаниС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ w ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ΅ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π°. 128-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π² AES прСдставляСтся Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ 4Γ—Nb. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ допускаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Nb = 4, поэтому Π΄Π»ΠΈΠ½Π° Π±Π»ΠΎΠΊΠ° всСгда 128 Π±ΠΈΡ‚, хотя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ Nb. Π”Π»ΠΈΠ½Π° ΠΊΠ»ΡŽΡ‡Π° Ρ€Π°Π²Π½Π° 4Nk Π±Π°ΠΉΡ‚. Алгоритм ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° состоит ΠΈΠ· Nr Ρ€Π°ΡƒΠ½Π΄ΠΎΠ² β€” ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ 128-Π±ΠΈΡ‚Π½ΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ допускаСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ этих Ρ‚Ρ€Ρ‘Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

Nk Nb Nr
AES-128 4 4 10
AES-192 6 4 12
AES-256 8 4 14
ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ KeyExpansion

Для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ тСкста AES примСняСт Π½Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈΠ»ΠΈ Ρ…Π΅Ρˆ ΠΎΡ‚ пароля, Π° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ «расписаниС ΠΊΠ»ΡŽΡ‡Π΅ΠΉΒ» ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ΅ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π°. Π­Ρ‚ΠΎ расписаниС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Nr + 1 ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 4Γ—Nb. Алгоритм ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅Π»Π°Π΅Ρ‚ Nr + 1 шагов ΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΠΎΠ½, ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… дСйствий, Π±Π΅Ρ€Ρ‘Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ 4Γ—Nb ΠΈΠ· «расписания» ΠΈ поэлСмСнтно добавляСт Π΅Ρ‘ ΠΊ Π±Π»ΠΎΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ….

Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Алгоритм ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ 128-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ… input ΠΈ расписаниС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ w, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ получаСтся послС KeyExpansion. 16-Π±Π°ΠΉΡ‚Ρ‹ΠΉ input ΠΎΠ½ записываСт Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ s Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 4Γ—Nb, которая называСтся состояниСм AES, ΠΈ Π·Π°Ρ‚Π΅ΠΌ Nr Ρ€Π°Π· примСняСт ΠΊ этой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ 4 прСобразования. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΎΠ½ записываСт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² Π²ΠΈΠ΄Π΅ массива ΠΈ ΠΏΠΎΠ΄Π°Ρ‘Ρ‚ Π΅Π³ΠΎ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ β€” это Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ. КаТдоС ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΡ‡Π΅Π½ΡŒ простоС.

  1. AddRoundKey Π±Π΅Ρ€Ρ‘Ρ‚ ΠΈΠ· расписания ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΎΠ΄Π½Ρƒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 4Γ—Nb ΠΈ поэлСмСнтно добавляСт Π΅Ρ‘ ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ состояния. Если Π΄Π²Π° Ρ€Π°Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ AddRoundKey, Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ измСнится, поэтому ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΊ AddRoundKey это ΠΎΠ½ΠΎ само.
  2. SubBytes замСняСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ состояния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтом Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ SBox: sij = SBox[sij]. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ SubBytes ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ. ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΊ Π½Π΅ΠΌΡƒ находится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ InvSBox.
  3. ShiftRows сдвигаСт i-ΡƒΡŽ строку ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ s Π½Π° i ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π²Π»Π΅Π²ΠΎ, считая i с нуля. ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ InvShiftRows сдвигаСт строки Π²ΠΏΡ€Π°Π²ΠΎ.
  4. MixColumns ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ s слСва Π½Π° ΠΎΡΠΎΠ±ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 4Γ—4:

    Для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ [a b c d] = [{02} {03} {01} {01}]. МоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΊ MixColumns[{02} {03} {01} {01}] это MixColumns[{0e} {0b} {0d} {09}].

Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

AddRoundKey(0)	

for (var i = 1; i <= Nr - 1; i++)
{			
	SubBytes()
	ShiftRows()
	MixColumns([0x02, 003, 0x01, 0x01])
	AddRoundKey(i)
}

SubBytes()
ShiftRows()
AddRoundKey(Nr)
Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ°

Как Π²ΠΈΠ΄Π½ΠΎ, для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… AES ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ примСняСт ΠΊ Π½Π΅ΠΌΡƒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΡ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ. Для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ прСобразования Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

НСмного ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

Ѐункция sbox ΠΈΠΌΠ΅Π΅Ρ‚ всСго 256 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ 256 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· sbox для ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. На JavaScript это нСслоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Π½Π΅ мСняя ΠΊΠΎΠ΄ написанный Ρ€Π°Π½Π΅Π΅. Для этого Π½ΡƒΠΆΠ½ΠΎ всСго лишь Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΈΠΆΠ΅ Π²ΠΎΡ‚ это:

Function.prototype.cached = function()
{
	var old = this
	var cache = {}
	
	return function(x)
	{
		if (cache[x] !== undefined)
			return cache[x]
			
		cache[x] = old(x)
		return cache[x]
	}
}

aes.sbox = aes.sbox.cached()

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ замСняСт sbox Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ которая ΠΊΠ΅ΡˆΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ sbox. Π’ΠΎΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для любой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для invsbox ΠΈ rcon. Π­Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‘ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gf.mul которая ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅Ρ‚ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° Π² ΠΏΠΎΠ»Π΅ GF(28), Π½ΠΎ Π² этом случаС Ρ€Π°Π·ΠΌΠ΅Ρ€ кСша Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 256Γ—256 элСмСнтов, Ρ‡Ρ‚ΠΎ довольно ΠΌΠ½ΠΎΠ³ΠΎ.

Бсылки

ДокумСнтация ΠΊ AES Π½Π° английском называСтся FIPS 197.

Алгоритм ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES ΠΈ Π΅Π³ΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ Π½Π΅Π΄Π΅Π»Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ готовящихся ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΊΡ€ΠΈΠΏΡ‚ΠΎΡ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ… X-Telecom Secure Mobile, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-256, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ люди стали Π·Π²ΠΎΠ½ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это Π·Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ AES, насколько ΠΎΠ½ Π½Π°Π΄Π΅ΠΆΠ΅Π½ ΠΈ удовлСтворяСт Π»ΠΈ ΠΎΠ½ трСбования ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности.

Алгоритм Advanced Encryption Standard

Advanced Encryption Standard – симмСтричный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, принятый ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ БША Π² качСствС стандарта Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ конкурса, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ тСхнологичСскими институтами. Он Π·Π°ΠΌΠ΅Π½ΠΈΠ» ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ Data Encryption Standard, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ большС Π½Π΅ соотвСтствовал трСбованиям сСтСвой бСзопасности, ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΠ²ΡˆΠΈΠΌΡΡ Π² XXI Π²Π΅ΠΊΠ΅.

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΡ€ΠΎΠΌΠ΅ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ AES, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΅Ρ‰Π΅ Rijndael – это Π°Π½Π°Π³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ· частСй ΠΈΠΌΠ΅Π½ Π±Π΅Π»ΡŒΠ³ΠΈΠΉΡΠΊΠΈΡ… программистов Joan Daemen ΠΈ Vinent Rijmen, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ AES. Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, AES ΠΈ Rijndael – Π½Π΅ совсСм ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ AES ΠΈΠΌΠ΅Π΅Ρ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° Π² 128 Π±ΠΈΡ‚ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² 128, 192 ΠΈ 256 Π±ΠΈΡ‚, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ для Rijndael ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ Π»ΡŽΠ±Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π±Π»ΠΎΠΊΠ° ΠΈ ΠΊΠ»ΡŽΡ‡Π°, ΠΎΡ‚ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Π² 32 Π±ΠΈΡ‚ Π΄ΠΎ максимума Π² 256 Π±ΠΈΡ‚.

Алгоритм AES Π±Ρ‹Π» ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ АгСнтством Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ бСзопасности БША ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΉ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ особо сСкрСтной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Однако, ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ постановило, Ρ‡Ρ‚ΠΎ AES Π΄ΠΎΠ»ΠΆΠ΅Π½ пСриодичСски ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ, опрСдСлСнная ΠΊΠ°ΠΊ сСкрСтная, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π° посрСдством AES с Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ 128, 192 ΠΈ 256 Π±ΠΈΡ‚. Для ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ особо сСкрСтная, эта Π΄Π»ΠΈΠ½Π° составляСт 192 ΠΈΠ»ΠΈ 256 Π±ΠΈΡ‚. Π‘ΡƒΡ‚ΡŒ AES Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ любая «лобовая Π°Ρ‚Π°ΠΊΠ°Β» Π½Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ – Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π±ΠΎΡ€ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ – Π² пСрспСктивС ΠΎΡ‡Π΅Π½ΡŒ сильно растягиваСтся. Если ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π·Π»ΠΎΠΌΡ‰ΠΈΠΊ располагаСт ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ рСсурсами, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², Ρ‚ΠΎ ΠΏΡ€ΠΈ усСрдном старании доступ ΠΊ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠ½ ΠΌΠΎΠ³ Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· дСсятки Π»Π΅Ρ‚. Если ΠΆΠ΅ Π² Π΅Π³ΠΎ распоряТСнии Π½ΠΈΡ‡Π΅Π³ΠΎ этого Π½Π΅Ρ‚, Ρ‚ΠΎ Π²Π·Π»ΠΎΠΌ AES Π·Π°ΠΉΠΌΠ΅Ρ‚ астрономичСски Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя.

ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES

БчитаСтся, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² Advanced Encryption Standard ΠΊΠ»ΡŽΡ‡ Π΄Π»ΠΈΠ½ΠΎΠΉ Π² 128 Π±ΠΈΡ‚ – достаточно надСТная Π·Π°Ρ‰ΠΈΡ‚Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π»ΠΎΠ±ΠΎΠ²ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с чисто матСматичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈΠ· всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… – трудноосущСствимая Π·Π°Π΄Π°Ρ‡Π°. НСсмотря Π΄Π°ΠΆΠ΅ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдостатки AES, Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ практичСски Π½Π΅Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ.

Π›ΡŽΠ±ΠΎΠΉ криптографичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ количСство Π±ΠΈΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² схСмС β„–1.

Π”Π»ΠΈΠ½Π° ΠΊΠ»ΡŽΡ‡Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΏΡ€ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ опрСдСляСт ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ†Π΅Π»Π΅ΡΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ выполнСния ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°, вСдь ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ слоТнСС Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ, Ρ‡Π΅ΠΌ с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° 4-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°:

ΠŸΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ΡΡ максимум 16 стадий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ, начиная с Β«0000Β». Лобовая Π°Ρ‚Π°ΠΊΠ° Π·Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ±ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ простой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

Π’Π°Π±Π»ΠΈΡ†Π° Π½Π° рисункС Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ число ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠ»ΡŽΡ‡Π°:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠ»ΡŽΡ‡Π° количСство ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ возрастаСт ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ исчислСния Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ»ΡŽΡ‡Π° Π² 128 Π±ΠΈΡ‚ надСТнСйшим ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ Π»ΠΎΠ±ΠΎΠ²ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°ΠΆΠ΅ ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ понадобилось Π±Ρ‹ нСисчислимо ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ AES посрСдством Π»ΠΎΠ±ΠΎΠ²ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ.

Для сравнСния: возраст ВсСлСнной – Π³Π΄Π΅-Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ 13 ΠΈ 14 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π°ΠΌΠΈ Π»Π΅Ρ‚. Π”Π°ΠΆΠ΅ Ссли ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΈΠΉ супСр-ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ DES Π·Π° ΠΎΠ΄Π½Ρƒ сСкунду, Ρ‚ΠΎ Π½Π° Π²Π·Π»ΠΎΠΌ AESΒ  Ρƒ Π½Π΅Π³ΠΎ ΡƒΡˆΠ»ΠΎ Π±Ρ‹ ΠΎΠΊΠΎΠ»ΠΎ 149 Ρ‚Ρ€ΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π»Π΅Ρ‚.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠ»ΡŽΡ‡Π° Π² 128 Π±ΠΈΡ‚ Π²ΠΏΠΎΠ»Π½Π΅ достаточно, хотя ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ сСкрСтная информация всС Ρ€Π°Π²Π½ΠΎ ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ΡΡ с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² 256 Π±ΠΈΡ‚. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ стандарт 128 Π±ΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅:

  • ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π½Π° Π—Π΅ΠΌΠ»Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅ΡΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ²
  • Π½Π° Π—Π΅ΠΌΠ»Π΅ сСмь ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ² Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ
  • ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π² сСкунду
  • ΠΊΠ»ΡŽΡ‡ считаСтся Π²Π·Π»ΠΎΠΌΠ°Π½Π½Ρ‹ΠΌ, Ссли ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 50% всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ

ΠŸΡ€ΠΈ всСх этих условиях всС насСлСниС ΠΏΠ»Π°Π½Π΅Ρ‚Ρ‹ смогло Π±Ρ‹ Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΡŽΡ‡β€¦ Π·Π° 77,000,000,000,000,000,000,000,000 Π»Π΅Ρ‚.

ΠŸΡ€ΠΈ этом интСрСсно ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π° Π² 128 Π±ΠΈΡ‚ ΠΈ 256 Π±ΠΈΡ‚ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°. Если Π±Ρ‹ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» Π±Ρ‹ Π½Π΅ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΡΠΏΠΎΡΠΎΠ±Π½ΡƒΡŽ Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ 128-Π±ΠΈΡ‚Π½ΡƒΡŽ систСму, Ρ‚ΠΎ 256 Π±ΠΈΡ‚ для этого гСния Π½Π΅ Π±Ρ‹Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠΌΠ΅Ρ…ΠΎΠΉ.

НаконСц, Π»ΡƒΡ‡ΡˆΠ΅ всСго Π·Π° AES Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ статистика: Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ этим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΈ Π²Π·Π»ΠΎΠΌΠ°Π½Ρ‹. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, всС это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΊΠ»ΡŽΡ‡Π° ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² 128 Π±ΠΈΡ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ всС ΠΆΠ΅ Π½Π΅ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈ испытания Π½Π° ΠΏΡ€ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вычислСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² увСличиваСтся Π² гСомСтричСской прогрСссии согласно Π·Π°ΠΊΠΎΠ½Ρƒ ΠœΡƒΡ€Π°, 128-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ Π²ΠΏΠ΅Ρ€Π΅Π΄.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, всС Π·Π²ΠΎΠ½ΠΊΠΈ ΠΈ сообщСния Π² ΠΊΡ€ΠΈΠΏΡ‚ΠΎΡ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ… X-Telecom ΡˆΠΈΡ„Ρ€ΡƒΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ, вСдь ΠΊΡ€ΠΎΠΌΠ΅ AES-256 Π΅Ρ‰Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Twofish ΠΈ нСсколько Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² β€” Π² комплСксС это Π΄Π°Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΡƒΡŽ 100%-ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ вашСго общСния ΠΎΡ‚ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΊΠΈ Π»ΡŽΠ±Ρ‹ΠΌΠΈ соврСмСнными способами.

ИспользованиС динамичСского ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-128 ΠΈ слуТбы доставки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 11Β ΠΌΠΈΠ½

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅



Π‘Π»ΡƒΠΆΠ±Ρ‹ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для доставки содСрТимого HTTP Live Streaming (HLS) ΠΈ Smooth Streaming, Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ 128-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES.You can use Media Services to deliver HTTP Live Streaming (HLS) and Smooth Streaming encrypted with the AES by using 128-bit encryption keys. Они Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя слуТбу доставки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, которая доставляСт ΠΊΠ»ΡŽΡ‡ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ.Media Services also provides the key delivery service that delivers encryption keys to authorized users. Если Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ рСсурс-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ слуТб ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°, Ρ‚ΠΎ свяТитС с Π½ΠΈΠΌ ΠΊΠ»ΡŽΡ‡ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ настройтС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΊΠ»ΡŽΡ‡Π°. If you want Media Services to encrypt an asset, you associate an encryption key with the asset and also configure authorization policies for the key. Когда ΠΏΠΎΡ‚ΠΎΠΊ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»Π΅ΠΌ, слуТбы ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ для динамичСского ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ содСрТимого с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ AES.When a stream is requested by a player, Media Services uses the specified key to dynamically encrypt your content by using AES encryption. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ запросит ΠΊΠ»ΡŽΡ‡ Ρƒ слуТбы доставки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.To decrypt the stream, the player requests the key from the key delivery service. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π°, слуТба ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ для ΠΊΠ»ΡŽΡ‡Π°.To determine whether the user is authorized to get the key, the service evaluates the authorization policies that you specified for the key.

Π‘Π»ΡƒΠΆΠ±Ρ‹ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ нСсколько способов Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠ»ΡŽΡ‡ΠΈ.Media Services supports multiple ways of authenticating users who make key requests. Для ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π° содСрТимого ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ: открытая авторизация ΠΈΠ»ΠΈ авторизация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°.The content key authorization policy can have one or more authorization restrictions, either open or token restrictions. ΠŸΡ€ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° ΠΊ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ΡŒΡΡ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€, Π²Ρ‹Π΄Π°Π½Π½Ρ‹ΠΉ слуТбой ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² бСзопасности (STS).The token-restricted policy must be accompanied by a token issued by a security token service (STS). Π‘Π»ΡƒΠΆΠ±Ρ‹ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… простого Π²Π΅Π±-ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° (SWT) ΠΈ JSON Web Token (JWT).Media Services supports tokens in the simple web token (SWT) and JSON Web Token (JWT) formats. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Настройка ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΊΠ»ΡŽΡ‡Π° содСрТимого.For more information, see Configure the content key’s authorization policy.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ прСимущСствами динамичСского ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ рСсурс-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, содСрТащий Π½Π°Π±ΠΎΡ€ многоскоростных MP4-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ многоскоростных исходных Ρ„Π°ΠΉΠ»ΠΎΠ² Smooth Streaming. To take advantage of dynamic encryption, you need to have an asset that contains a set of multi-bitrate MP4 files or multi-bitrate Smooth Streaming source files. Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ потрСбуСтся Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ доставки для рСсурса-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (описываСтся Π΄Π°Π»Π΅Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅).You also need to configure the delivery policy for the asset (described later in this article). Π’ зависимости ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² URL-адрСсС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, сСрвСр ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ воспроизвСдСния ΠΏΠΎ запросу обСспСчиваСт доставку содСрТимого ΠΏΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ.Then, based on the format specified in the streaming URL, the on-demand streaming server ensures that the stream is delivered in the protocol you selected. Благодаря этому ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ хранСния.As a result, you need to store and pay only for the files in single storage format. Π‘Π»ΡƒΠΆΠ±Ρ‹ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ запросов ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.Media Services builds and serves the appropriate response based on requests from a client.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠ»Π΅Π·Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°.This article is useful to developers who work on applications that deliver protected media. Π’ Π½Π΅ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ для слуТбы доставки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ,The article shows you how to configure the key delivery service with authorization policies so that only authorized clients can receive encryption keys. Π° Ρ‚Π°ΠΊΠΆΠ΅ рассматриваСтся использованиС динамичСского ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.It also shows how to use dynamic encryption.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Advanced Encryption Standard (AES) для доставки Π² Safari Π½Π° macOS, см. Π² этой записи Π±Π»ΠΎΠ³Π°.For information on how to encrypt content with the Advanced Encryption Standard (AES) for delivery to Safari on macOS, see this blog post. ΠžΠ±Π·ΠΎΡ€ способов Π·Π°Ρ‰ΠΈΡ‚Ρ‹ содСрТимого ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES прСдставлСн Π² этом Π²ΠΈΠ΄Π΅ΠΎ.For an overview of how to protect your media content with AES encryption, see this video.

Π Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс динамичСского ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-128 ΠΈ слуТбы доставки ΠΊΠ»ΡŽΡ‡Π΅ΠΉAES-128 dynamic encryption and key delivery service workflow

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ описанныС Π½ΠΈΠΆΠ΅ ΠΎΠ±Ρ‰ΠΈΠ΅ дСйствия для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ AES, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ слуТбу доставки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ слуТб ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΈ динамичСскоС ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅.Perform the following general steps when you encrypt your assets with AES by using the Media Services key delivery service and also by using dynamic encryption:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ рСсурс ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² рСсурс.Create an asset, and upload files into the asset.

  2. Π—Π°ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠΉΡ‚Π΅ рСсурс с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Π½Π°Π±ΠΎΡ€ MP4-Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.Encode the asset that contains the file to the adaptive bitrate MP4 set.

  3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ содСрТимого ΠΈ свяТитС Π΅Π³ΠΎ с Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ рСсурсом-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ.Create a content key, and associate it with the encoded asset. Π’ слуТбах ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΊΠ»ΡŽΡ‡ содСрТимого содСрТит ΠΊΠ»ΡŽΡ‡ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ рСсурса.In Media Services, the content key contains the asset’s encryption key.

  4. НастройтС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π° содСрТимого.Configure the content key’s authorization policy. ΠŸΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ΡΡ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΊΠ»ΡŽΡ‡Π° содСрТимого.You must configure the content key authorization policy. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΊΠ»ΡŽΡ‡ содСрТимого Π±ΡƒΠ΄Π΅Ρ‚ доставлСн Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ привСсти Π² соотвСтствиС с ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ.The client must meet the policy before the content key is delivered to the client.

  5. НастройтС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ доставки для рСсурса-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.Configure the delivery policy for an asset. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ доставки Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ URL-адрСс для получСния ΠΊΠ»ΡŽΡ‡Π° ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (IV).The delivery policy configuration includes the key acquisition URL and an initialization vector (IV). (Для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ AES-128 трСбуСтся ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.) ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» доставки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MPEG-Π’Π˜Π Π•, HLS, Smooth Streaming ΠΈΠ»ΠΈ всС) ΠΈ Ρ‚ΠΈΠΏ динамичСского ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ ΠΈΠ»ΠΈ Π±Π΅Π· динамичСского ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ). (AES-128 requires the same IV for encryption and decryption.) The configuration also includes the delivery protocol (for example, MPEG-DASH, HLS, Smooth Streaming, or all) and the type of dynamic encryption (for example, envelope or no dynamic encryption).

    К Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ рСсурса.You can apply a different policy to each protocol on the same asset. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ PlayReady ΠΏΡ€ΠΈ использовании Smooth ΠΈΠ»ΠΈ DASH ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π½ΠΎΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ AES ΠΏΡ€ΠΈ использовании HLS.For example, you can apply PlayReady encryption to Smooth/DASH and an AES envelope to HLS. ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠΎ Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ доставки блокируСтся.Any protocols that aren’t defined in a delivery policy are blocked from streaming. (НапримСр, ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ HLS Π² качСствС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°.) Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ являСтся отсутствиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ доставки рСсурсов.(An example is if you add a single policy that specifies only HLS as the protocol. ) The exception is if you have no asset delivery policy defined at all. Π’ΠΎΠ³Π΄Π° всС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π΅Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.Then, all protocols are allowed in the clear.

  6. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ OnDemand, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ URL-адрСс для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ.Create an OnDemand locator to get a streaming URL.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ Ρƒ слуТбы доставки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.The article also shows how a client application can request a key from the key delivery service.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для .NET.You can find a complete .NET example at the end of the article.

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ описанный Π²Ρ‹ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс.The following image demonstrates the workflow previously described. Π’ этом случаС для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€.Here, the token is used for authentication.

Π’ ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части ΡΡ‚Π°Ρ‚ΡŒΠΈ приводятся объяснСния, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° ΠΈ ссылки Π½Π° ΡΡ‚Π°Ρ‚ΡŒΠΈ с инструкциями для выполнСния описанных Π²Ρ‹ΡˆΠ΅ Π·Π°Π΄Π°Ρ‡. The remainder of this article provides explanations, code examples, and links to topics that show you how to achieve the tasks previously described.

Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ограничСнияCurrent limitations

ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ доставки рСсурсов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ.If you add or update your asset’s delivery policy, you must delete any existing locator and create a new locator.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ рСсурса-ΠΊ

ОбъяснСниС ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES ΠΈ RSA

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ с использованиСм Boxcryptor

ΠœΡ‹ ΡˆΠΈΡ„Ρ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Ρ‚Π΅ΠΌ самым обСспСчиваСм ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ шпионаТа ΠΈ ΠΊΡ€Π°ΠΆΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-256 ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ RSA. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ объясняСм Π΄Π²Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ AES-256

Advanced Encryption Standard (AES) — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ бСзопасных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, доступных сСгодня. Π­Ρ‚ΠΎ общСдоступно, ΠΈ это ΡˆΠΈΡ„Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ NSA ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для обСспСчСния бСзопасности Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с классификациСй Β«Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ сСкрСтно». Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Π΅Π³ΠΎ успСха Π½Π°Ρ‡Π°Π»Π°ΡΡŒ Π² 1997 Π³ΠΎΠ΄Ρƒ, ΠΊΠΎΠ³Π΄Π° NIST (ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ институт стандартов ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ) ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π» ΠΈΡΠΊΠ°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρƒ ΡΡ‚Π°Ρ€Π΅ΡŽΡ‰Π΅ΠΌΡƒ стандарту DES. Алгоритм ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«RijndaelΒ», Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ бСльгийскими ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„Π°ΠΌΠΈ Daemen ΠΈ Rijmen, отличался ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ.

Он Π²Ρ‹ΡˆΠ΅Π» Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСсто срСди Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ² ΠΈ Π±Ρ‹Π» ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ анонсирован Π² 2001 Π³ΠΎΠ΄Ρƒ Π½ΠΎΠ²Ρ‹ΠΌ стандартом ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES. Алгоритм основан Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… подстановках, пСрСстановках ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… прСобразованиях, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСтся Π½Π° Π±Π»ΠΎΠΊΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ 16 Π±Π°ΠΉΡ‚ΠΎΠ², ΠΎΡ‚ΡΡŽΠ΄Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½ blockcipher. Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ нСсколько Ρ€Π°Π·, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Β«Ρ€Π°ΡƒΠ½Π΄Π°ΠΌΠΈΒ». Π’ΠΎ врСмя ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°ΡƒΠ½Π΄Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ€Π°ΡƒΠ½Π΄Π° рассчитываСтся ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² вычислСния. ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Π±Π»ΠΎΡ‡Π½ΠΎΠΉ структурС AES, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π° Π»ΠΈΠ±ΠΎ Π² ΠΊΠ»ΡŽΡ‡Π΅, Π»ΠΈΠ±ΠΎ Π² Π±Π»ΠΎΠΊΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ тСкста ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСкста — явноС прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΡˆΠΈΡ„Ρ€Π°ΠΌΠΈ. НаконСц, Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ AES-128, AES-192 ΠΈ AES-256 — это Π΄Π»ΠΈΠ½Π° ΠΊΠ»ΡŽΡ‡Π°: 128, 192 ΠΈΠ»ΠΈ 256 Π±ΠΈΡ‚ — всС Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с 56-Π±ΠΈΡ‚Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ DES. Π’ качСствС ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ: Π²Π·Π»ΠΎΠΌ 128-разрядного ΠΊΠ»ΡŽΡ‡Π° AES с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ соврСмСнного ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π·Π°ΠΉΠΌΠ΅Ρ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ возраст всСлСнной. А Boxcryptor Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 256-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ! На сСгодняшний дСнь Π½Π΅ сущСствуСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ Π½Π° AES. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ AES остаСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ стандартом ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ для ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π², Π±Π°Π½ΠΊΠΎΠ² ΠΈ систСм высокой бСзопасности ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ.


Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ RSA

RSA — ΠΎΠ΄Π½Π° ΠΈΠ· самых ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ…, асиммСтричных систСм ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π° сСгодня. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² 1973 британским Ρ€Π°Π·Π²Π΅Π΄Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ агСнтством GCHQ, ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Β«ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ сСкрСтно». ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ»ΠΎΠ³ΠΎΠ² Rivest, Shamir ΠΈ Adleman Π·Π° Π΅Π³ΠΎ граТданскоС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π² 1977 Π³ΠΎΠ΄Ρƒ. Они Π½Π°Ρ‚ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π½Π° Π½Π΅Π³ΠΎ Π²ΠΎ врСмя ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… симмСтричных систСм ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, RSA Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с двумя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ: ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ частным. Оба ΠΎΠ½ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сообщСниС, Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½ΠΈΡ…, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ стороной. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ частный ΠΊΠ»ΡŽΡ‡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вычислСн ΠΈΠ· ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, послСдний, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, доступСн для общСствСнности.

Π­Ρ‚ΠΈ свойства ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ асиммСтричныС криптосистСмы Π² ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ спСктрС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ подписи. Π’ процСссС подписания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊ Ρ„Π°ΠΉΠ»Ρƒ прикрСпляСтся ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ ΠΏΠ°Π»ΡŒΡ†Π°, Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ RSA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΊ отправитСля, Ρ‚Π°ΠΊ ΠΈ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ RSA основана Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π° матСматичСской ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΎ, рассматриваСтся ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎ большоС число. ΠŸΡ€ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠΈ сообщСния ΠΎΠ½ΠΎ увСличиваСтся Π΄ΠΎ стСпСни ΠΊΠ»ΡŽΡ‡Π° ΠΈ дСлится с остатком Π½Π° фиксированноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… простых чисСл. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡ процСсс с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ тСкст ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ снова. Π›ΡƒΡ‡ΡˆΠΈΠΉ извСстный Π² настоящСС врСмя способ Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ. Π’ настоящСС врСмя Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ эти коэффициСнты для чисСл, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΡ… 768 Π±ΠΈΡ‚. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ соврСмСнныС криптосистСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠ»ΡŽΡ‡Π° 3072 Π±ΠΈΡ‚Π°.

Как Boxcryptor Π¨ΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ ΠΈ Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹

Boxcryptor Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ процСсс ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, основанный Π½Π° асиммСтричном RSA ΠΈ симмСтричном ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠΈ AES. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠΌΠ΅Π΅Ρ‚ свой собствСнный ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ случайный Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСтся ΠΏΡ€ΠΈ создании Ρ„Π°ΠΉΠ»Π°.

AES Encryption — ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ строк ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²

Symmetric Ciphers Online позволяСт Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ сообщСниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ нСсколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстных симмСтричныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ AES, 3DES ΠΈΠ»ΠΈ BLOWFISH.

Π‘ΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Π΅ ΡˆΠΈΡ„Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ (ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ с алгоритмичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния view) ΠΊΠ»ΡŽΡ‡ΠΈ ΠΊΠ°ΠΊ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ‚Π°ΠΊ ΠΈ для Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ сообщСния. Они ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ вычисляСмым ΠΈ способным ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ большиС сообщСния Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, симмСтричныС ΡˆΠΈΡ„Ρ€Ρ‹ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для использования ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π½Π°Π΅Ρ‚ сСкрСтный ΠΊΠ»ΡŽΡ‡, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π΅Π³ΠΎ частныС Π΄Π°Π½Π½Ρ‹Π΅ — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы основаны Π½Π° симмСтричныС ΡˆΠΈΡ„Ρ€Ρ‹. Если симмСтричныС ΡˆΠΈΡ„Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для бСзопасной связи ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ сторонами ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ симмСтричными ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚. Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ это Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя использованиС асиммСтричныС ΡˆΠΈΡ„Ρ€Ρ‹. Π‘ΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Π΅ ΡˆΠΈΡ„Ρ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… криптографичСских систСм ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡ… нСдостатки.

Π‘ΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Π΅ ΡˆΠΈΡ„Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π² Π±Π»ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠ»ΠΈ Π² ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ. НСкоторыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±Π° Ρ€Π΅ΠΆΠΈΠΌΠ°, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π΅ΠΆΠΈΠΌ. Π’ Π±Π»ΠΎΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ криптографичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅ сообщСниС Π½Π° массив Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ. Π’ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ каТдая Ρ†ΠΈΡ„Ρ€Π° (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚) Π²Π²ΠΎΠ΄Π° сообщСниС ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

Π’ Π±Π»ΠΎΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ссли Π±Π»ΠΎΠΊΠΈ Π±Ρ‹Π»ΠΈ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ сообщСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ уязвимо для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ‚Π°ΠΊ.ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ссли Π±Ρ‹ Π±Ρ‹Π»ΠΎ Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠ°, Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… контСкст ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΊΠ»ΡŽΡ‡, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Π»ΠΎΡ‡Π½Ρ‹Π΅ ΡˆΠΈΡ„Ρ€Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ вводят Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая содСрТит состояниС расчСта. БостояниС измСняСтся Π²ΠΎ врСмя ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ / Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ процСсс ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ с содСрТаниСм ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ смягчаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ.Π’ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ называСтся Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Π»ΠΎΡ‡Π½Ρ‹Ρ… ΡˆΠΈΡ„Ρ€ΠΎΠ² Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‚ΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€ состояния (ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ) с Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΈ ΠΏΡƒΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ измСняСтся Π²ΠΎ врСмя расчСта. ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΡˆΠΈΡ„Ρ€Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС ΠΏΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ явный Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ значСния Π½Π° ΠΈΡ… Π²Ρ…ΠΎΠ΄Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΏΠΎ бСзопасности: Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ сСти Π² Π½Π΅Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ! ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ„ΠΎΡ€ΠΌΡƒ Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ ваши Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ скомпромСтированы.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹Π±ΠΎΡ€ Π’ΠΈΠΏ Π²Ρ…ΠΎΠ΄Π° , Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏ Π²Ρ…ΠΎΠ΄Π° — тСкстовая строка ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ». Π’ случаС Π²Π²ΠΎΠ΄Π° тСкстовой строки Π²Π²Π΅Π΄ΠΈΡ‚Π΅ свой Π²Π²ΠΎΠ΄ Π² Π’Ρ…ΠΎΠ΄Π½ΠΎΠΉ тСкст textarea 1,2 . Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠžΠ±Π·ΠΎΡ€Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ Ѐункция . Π’ зависимости ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»Π΅ Π’Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (IV) ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ»ΠΈ скрыто.Π’Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ — это всСгда ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π°ΠΉΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ прСдставлСн Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΏΠΎΠ»Π΅ Mode ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ Π² ΠΏΠΎΠ»Π΅ Key . Допустимая Π΄Π»ΠΈΠ½Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… криптографичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ пСрСчислСны Π½ΠΈΠΆΠ΅. Если Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡ с допустимой Π΄Π»ΠΈΠ½ΠΎΠΉ, ΠΊΠ»ΡŽΡ‡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄Π»Π΅Π½ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ количСство Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ² Π² ΠΊΠΎΠ½Ρ†Π΅. ΠŸΡ€ΠΈ смСнС ΠΊΠ»ΡŽΡ‡Π° прСфикс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sha1 (ΠΊΠ»ΡŽΡ‡) Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски заполняСтся ΠΏΠΎΠ»Π΅ IV.Π’Ρ‹ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ IV. Ѐункция ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для вашСго удобства. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎΠ΄ ΠšΠ»ΡŽΡ‡ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, вводится Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° слСдуСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тСкст ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

НаконСц, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π—Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ!Β» ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ!Β» ΠΊΠ½ΠΎΠΏΠΊΠ° Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅ сообщСниС Π±Ρ‹Π»ΠΎ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΎ ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΎ.

Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ΅ сообщСниС отобраТаСтся Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ».Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° — это просто Π΄Π°ΠΌΠΏ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° для удобства.

ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠ°Ρ функция Π”Π»ΠΈΠ½Π° ΠΊΠ»ΡŽΡ‡Π° Π”Π»ΠΈΠ½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (всС Ρ€Π΅ΠΆΠΈΠΌΡ‹)
Π’ Π±Π°ΠΉΡ‚Π°Ρ… Π’ Π±ΠΈΡ‚Π°Ρ… Π’ Π±Π°ΠΉΡ‚Π°Ρ… Π’ Π±ΠΈΡ‚Π°Ρ…
AES 16, 24 ΠΈΠ»ΠΈ 32 128, 192 ΠΈΠ»ΠΈ 256 16 128
DES 1-8 Π±Π°ΠΉΡ‚ΠΎΠ² 8-64 16 128
Π’Π ΠžΠ™ΠΠ˜ΠšΠ˜ ΠžΡ‚ 1 Π΄ΠΎ 24 ΠΎΡ‚ 8 Π΄ΠΎ 192 16 128
BLOWFISH 1 Π΄ΠΎ 56 8 Π΄ΠΎ 448 16 128
BLOWFISH-compat ΠΎΡ‚ 1 Π΄ΠΎ 56 ΠΎΡ‚ 8 Π΄ΠΎ 448 16 128
RIJNDAEL-256 ΠΎΡ‚ 1 Π΄ΠΎ 32 ΠΎΡ‚ 8 Π΄ΠΎ 256 64 512
R4 1 Π΄ΠΎ 256 8 Π΄ΠΎ 2048
SERPENT 1 Π΄ΠΎ 32 8 Π΄ΠΎ 256 32 256
ДВА Π Π«Π‘ΠšΠ˜ ΠΎΡ‚ 1 Π΄ΠΎ 32 ΠΎΡ‚ 8 Π΄ΠΎ 256 32 256
Π’Π°Π±Π»ΠΈΡ†Π° 1. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π΄Π»ΠΈΠ½Ρ‹ IV
1 ΠŸΡ€ΠΈ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ΅ строки ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ символы, символы Π½ΠΎΠ²ΠΎΠΉ строки, табуляторы ΠΈ символы Π½ΠΎΠ²ΠΎΠΉ строки.
2 Π’ вашСм распоряТСнии Π΅ΡΡ‚ΡŒ функция автоопрСдСлСния Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ тСкста. АвтоопрСдСлСниС опрСдСляСт, находится Π»ΠΈ содСрТимоС поля Π’Ρ…ΠΎΠ΄Π½ΠΎΠΉ тСкст Π² Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ тСкста ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ строки. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π°ΠΆΠ°Π² Π½Π° Β«Π’Π«ΠšΠ›Β» ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ Π²Π²ΠΎΠ΄Π° Π² ΠΏΠΎΠ»Π΅ ВСкст Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»Π΅.

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ тСкстовой строки — 131 072 символа. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° — 2 097 152 Π±Π°ΠΉΡ‚Π°.

AES — докумСнтация PyCryptodome 3.9.9

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:
  • ΠΊΠ»ΡŽΡ‡ ( Π±Π°ΠΉΡ‚ΠΎΠ² / bytearray / memoryview ) —

    Π‘Π΅ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ для использования Π² симмСтричном ΡˆΠΈΡ„Ρ€Π΅.

    Π”ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π΄Π»ΠΈΠ½ΠΎΠΉ 16, 24 ΠΈΠ»ΠΈ 32 Π±Π°ΠΉΡ‚Π° (соотвСтствСнно для AES-128 , AES-192 ΠΈΠ»ΠΈ AES-256 ).

    Волько для MODE_SIV удваиваСтся Π΄ΠΎ 32, 48 ΠΈΠ»ΠΈ 64 Π±Π°ΠΉΡ‚ΠΎΠ².

  • mode (ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… констант MODE_ * ) — Ρ€Π΅ΠΆΠΈΠΌ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. Π’ случаС сомнСний ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ MODE_EAX .
  • iv ( Π±Π°ΠΉΡ‚ΠΎΠ² , Π±Π°ΠΉΡ‚ΠΎΠ² , memoryview ) — (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для MODE_CBC , MODE_CFB , MODE_OFB , ΠΈ MODE_OPENPGP ).

    Π’Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.

    Для MODE_CBC , MODE_CFB ΠΈ MODE_OFB ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π΄Π»ΠΈΠ½ΠΎΠΉ 16 Π±Π°ΠΉΡ‚.

    Волько для Ρ€Π΅ΠΆΠΈΠΌΠ° MODE_OPENPGP , ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ 16 Π±Π°ΠΉΡ‚ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ 18 Π±Π°ΠΉΡ‚ для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ (Π² послСднСм случаС это фактичСски Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π» IV, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ прСфикс Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСкста).

    Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, гСнСрируСтся случайная строка Π±Π°ΠΉΡ‚ΠΎΠ² (Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° iv ).

  • nonce ( Π±Π°ΠΉΡ‚ΠΎΠ² , Π±Π°ΠΉΡ‚ΠΎΠ² , memoryview ) — (ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для MODE_CCM , MODE_EAX , MODE_GCM , MODE_SIV , MODE_OCB ΠΈ MODE_CTR ).

    Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ для любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. с этим ΠΊΠ»ΡŽΡ‡ΠΎΠΌ (ΠΊΡ€ΠΎΠΌΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, MODE_SIV , см. Π½ΠΈΠΆΠ΅).

    Для MODE_EAX , MODE_GCM ΠΈ MODE_SIV Π½Π΅Ρ‚ ограничСния Π½Π° Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρƒ (рСкомСндуСтся: 16 Π±Π°ΠΉΡ‚).

    Для MODE_CCM Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [7..13] . Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ с CCM сущСствуСт компромисс ΠΌΠ΅ΠΆΠ΄Ρƒ nonce Π΄Π»ΠΈΠ½Π° ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ сообщСния. РСкомСндация: 11 Π±Π°ΠΉΡ‚.

    Для MODE_OCB Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [1..15] (рСкомСндуСтся: 15 ).

    Для MODE_CTR Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0. .15] (рСкомСндуСтся: 8 ).

    Для MODE_SIV ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ являСтся Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ссли ΠΎΠ½ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, Ρ‚ΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ.

    Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, для Ρ€Π΅ΠΆΠΈΠΌΠΎΠ², ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ MODE_SIV` , случайный ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ байтовая строка Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ (Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° nonce ).

  • Ρ€Π°Π·ΠΌΠ΅Ρ€_сСгмСнта ( Ρ†Π΅Π»ΠΎΠ΅ число ) — (Волько MODE_CFB ). ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π±ΠΈΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ тСкст ΠΈ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ тСкст сСгмСнтированы. Оно Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ 8. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ принято Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 8.

  • mac_len : ( Ρ†Π΅Π»ΠΎΠ΅ число ) — (Волько MODE_EAX , MODE_GCM , MODE_OCB , MODE_CCM ) Π”Π»ΠΈΠ½Π° Ρ‚Π΅Π³Π° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π±Π°ΠΉΡ‚Π°Ρ….

    Π”ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌ ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [4. .16] . Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ): 16 .

  • msg_len : ( Ρ†Π΅Π»ΠΎΠ΅ число ) — (Волько MODE_CCM ). Π”Π»ΠΈΠ½Π° сообщСния для (Π΄Π΅) ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅, encrypt Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ со всСм сообщСниСм. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π΄Π΅ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚

aes.h Бсылка Π½Π° Ρ„Π°ΠΉΠ» — ДокумСнтация API

AES_context * ctxΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
ES Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° Π±Π»ΠΎΠΊΠ° A внутрСнняя Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит опрСдСлСния ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ AES.

Advanced Encryption Standard (AES) опрСдСляСт ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π½Ρ‹ΠΉ FIPS криптографичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ элСктронных Π΄Π°Π½Π½Ρ‹Ρ….

Алгоритм AES — это симмСтричный Π±Π»ΠΎΡ‡Π½Ρ‹ΠΉ ΡˆΠΈΡ„Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ см. ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ 197 FIPS: Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ стандарт ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ISO / IEC 18033-2: 2006: Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ — ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ бСзопасности — Алгоритмы ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ — Π§Π°ΡΡ‚ΡŒ 2: АсиммСтричныС ΡˆΠΈΡ„Ρ€Ρ‹ .

Π‘Π»ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ AES-XTS стандартизирован NIST SP 800-38E https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-38e.pdf ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описан IEEE P1619 https://ieeexplore. ieee .org / servlet / opac? punumber = 4375278.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² Ρ„Π°ΠΉΠ»Π΅ aes.h.

void mbedtls_aes_init (mbedtls_aes_context * ctx)
void mbedtls_aes_free (mbedtls_aes_context * ctx)
Π­Ρ‚Π° функция освобоТдаСт ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ контСкст AES. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
void mbedtls_aes_xts_init (mbedtls_aes_xts_context * ctx)
Π­Ρ‚Π° функция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ контСкст AES XTS. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
void mbedtls_aes_xts_free (mbedtls_aes_xts_context * ctx)
Π­Ρ‚Π° функция освобоТдаСт ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ контСкст AES XTS.ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_setkey_enc (mbedtls_aes_context * ctx, const unsigned char * key, unsigned int keybits)
Π­Ρ‚Π° функция устанавливаСт ΠΊΠ»ΡŽΡ‡ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_setkey_dec (mbedtls_aes_context * ctx, const unsigned char * key, unsigned int keybits)
Π­Ρ‚Π° функция устанавливаСт ΠΊΠ»ΡŽΡ‡ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_xts_setkey_enc (mbedtls_aes_xts_context * ctx, const unsigned char * key, unsigned int keybits)
Π­Ρ‚Π° функция ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ XTS ΠΈ устанавливаСт ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ XTS ΠΊΠ»ΡŽΡ‡. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_xts_setkey_dec (mbedtls_aes_xts_context * ctx, const unsigned char * key, unsigned int keybits)
Π­Ρ‚Π° функция ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ XTS ΠΈ ΠΊΠ»ΡŽΡ‡.ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_crypt_ecb (mbedtls_aes_context * ctx, int mode, const unsigned char input [16], unsigned char output [16])
Π­Ρ‚Π° функция выполняСт ΠžΠ΄Π½ΠΎΠ±Π»ΠΎΡ‡Π½ΠΎΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ AES. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_crypt_cbc (mbedtls_aes_context * ctx, int mode, size_t length, unsigned char iv [16], const unsigned char * input, unsigned char * output)
Π­Ρ‚Π° функция выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-CBC для ΠΏΠΎΠ»Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ². ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_crypt_xts (mbedtls_aes_xts_context * ctx, int mode, size_t length, const unsigned char data_unit [16], const unsigned char * input, unsigned char * output) Π­Ρ‚Π° функция выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-XTS для всСго Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… XTS. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_crypt_cfb128 (mbedtls_aes_context * ctx, int mode, size_t length, size_t * iv_off, unsigned char iv [16], const unsigned char * input, unsigned char * input)
Π­Ρ‚Π° функция выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-CFB128.ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_crypt_cfb8 (mbedtls_aes_context * ctx, int mode, size_t length, unsigned char iv [16], const unsigned char * input, unsigned char * output)
Π­Ρ‚Π° функция выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-CFB8. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_crypt_ofb (mbedtls_aes_context * ctx, size_t length, size_t * iv_off, unsigned char iv [16], const unsigned char * input, unsigned char * output)
Π­Ρ‚Π° функция выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-OFB (Ρ€Π΅ΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ).ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_crypt_ctr (mbedtls_aes_context * ctx, size_t length, size_t * nc_off, unsigned char nonce_counter [16], unsigned char stream_block [16], unsigned char stream_block [16], unsigned char stream_block [16] char * output)
Π­Ρ‚Π° функция выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-CTR. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_internal_aes_encrypt (mbedtls_aes_context * ctx, const unsigned char input [16], unsigned char output [16])
ВнутрСнняя функция ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° AES. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_internal_aes_decrypt (mbedtls_aes_context * ctx, const unsigned char input [16], unsigned char output [16])
ВнутрСнняя функция Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° AES. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
MBEDTLS_DEPRECATED void mbedtls_aes_encrypt (mbedtls_aes_context * ctx, const unsigned char input [16], unsigned char output [16])
внутрСнняя функция ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π±Π΅Π· Π·Π½Π°ΠΊΠ° [16]) Π±Π΅Π· Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния.ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
MBEDTLS_DEPRECATED void mbedtls_aes_decrypt (mbedtls_aes_context * ctx, const unsigned char input [16], unsigned char output [16])
c Π±Π΅Π· Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
int mbedtls_aes_self_test (int verbose)
ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …
ΠΈΠ½Ρ‚ mbedtls_aes_crypt_cfb128 ( mbedtls_aes_context * CTX ,
Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ ,
size_t Π΄Π»ΠΈΠ½Π° ,
Ρ€Π°Π·ΠΌΠ΅Ρ€_Ρ‚ * iv_off ,
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ iv [16],
const Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ * Π²Ρ…ΠΎΠ΄ ,
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ * Π²Ρ‹Ρ…ΠΎΠ΄
)

Π­Ρ‚Π° функция выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-CFB128.

Он выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ mode (ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅), Π² Π±ΡƒΡ„Π΅Ρ€Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ input .

Для CFB Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ контСкст с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ mbedtls_aes_setkey_enc (), нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, выполняСтС Π»ΠΈ Π²Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ нСзависимо ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° mode . Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ CFB ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ расписаниС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
ΠŸΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ содСрТимоС IV обновляСтся, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ снова Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ (Π°Ρ…) Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ².Π­Ρ‚ΠΎ позволяСт Β«ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ΅Β» использованиС. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ содСрТимоС IV, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈΠ±ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π»ΠΈΠ±ΠΎ вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹
ctx ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ AES, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ привязан ΠΊ ΠΊΠ»ΡŽΡ‡Ρƒ.
Ρ€Π΅ΠΆΠΈΠΌ ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ AES: MBEDTLS_AES_ENCRYPT ΠΈΠ»ΠΈ MBEDTLS_AES_DECRYPT.
length Π”Π»ΠΈΠ½Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°ΠΉΡ‚Π°Ρ….
iv_off Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² IV (обновляСтся послС использования). Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ size_t .
iv Π’Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (обновляСтся послС использования). Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ записываСмый Π±ΡƒΡ„Π΅Ρ€ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 16 Π±Π°ΠΉΡ‚Π°.
input Π‘ΡƒΡ„Π΅Ρ€, содСрТащий Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ , Π΄Π»ΠΈΠ½Π° Π±Π°ΠΉΡ‚Π°.
output Π‘ΡƒΡ„Π΅Ρ€, содСрТащий Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ записываСмым ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ , Π΄Π»ΠΈΠ½Π° Π±Π°ΠΉΡ‚Π°.
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
0 Π² случаС успСха.
ΠΈΠ½Ρ‚ mbedtls_aes_crypt_ctr ( mbedtls_aes_context * CTX ,
size_t Π΄Π»ΠΈΠ½Π° ,
Ρ€Π°Π·ΠΌΠ΅Ρ€_Ρ‚ * nc_off ,
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ nonce_counter [16],
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ Π±Π»ΠΎΠΊ_ΠΏΠΎΡ‚ΠΎΠΊΠ° [16],
const Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ * Π²Ρ…ΠΎΠ΄ ,
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ * Π²Ρ‹Ρ…ΠΎΠ΄
)

Π­Ρ‚Π° функция выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-CTR.

Π­Ρ‚Π° функция выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ mode (ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ / Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅), Π² Π±ΡƒΡ„Π΅Ρ€Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ input .

Из-Π·Π° Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° CTR Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ расписаниС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ контСкст, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ mbedtls_aes_setkey_enc () ΠΊΠ°ΠΊ для MBEDTLS_AES_ENCRYPT, Ρ‚Π°ΠΊ ΠΈ для MBEDTLS_AES_DECRYPT.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅
Никогда нСльзя ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π²ΡƒΡ… сообщСний, Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… с использованиСм ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈ ΠΊΠ»ΡŽΡ‡Π°.

Π•ΡΡ‚ΡŒ Π΄Π²Π΅ распространСнныС стратСгии управлСния ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ с CTR:

  1. Π’Ρ‹ ​​моТСтС ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎ сообщСниС, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ этом случаС Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ nonce_counter ΠΈ nc_off Π½Π° 0 для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния nonce_counter , nc_off ΠΈ stream_block для Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ эта функция.

ΠŸΡ€ΠΈ использовании этой стратСгии Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 2 ** 128 Π±Π»ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

  1. Π’Ρ‹ ​​моТСтС Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния, Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² Π±ΡƒΡ„Π΅Ρ€ nonce_counter Π½Π° Π΄Π²Π΅ области: пСрвая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° сообщСния, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ, Π° вторая обновляСтся этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅.

НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 12 Π±Π°ΠΉΡ‚ΠΎΠ² для ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° сообщСния, Π° послСдниС 4 Π±Π°ΠΉΡ‚Π° — для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ использования. Π’ этом случаС ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π½ΠΎΠ²ΠΎΠΌ сообщСнии Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 12 Π±Π°ΠΉΡ‚ΠΎΠ² nonce_counter Π½Π° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ nonce, послСдниС 4 Π½Π° 0 ΠΈ nc_off Π½Π° 0 (Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ stream_block Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ).Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 2 ** 96 сообщСний, содСрТащих Π΄ΠΎ 2 ** 32 Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

ΠžΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ сообщСния (ΠΈΠ»ΠΈ информация, достаточная для Π΅Π³ΠΎ восстановлСния) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ с Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ тСкстом ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ счСтчик сообщСний. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ являСтся гСнСрация случайных ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ², Π½ΠΎ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Ρ‹: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с 96-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ случайными ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 2 ** 32 сообщСний ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для ΠΎΠ±ΠΎΠΈΡ… состояний Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ΡΡ Π² Π±Π»ΠΎΠΊΠ°Ρ…, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° AES составляСт 16 Π±Π°ΠΉΡ‚ΠΎΠ².

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅
По Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ stream_block содСрТит ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π•Π³ΠΎ содСрТимоС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² нСбСзопасноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ бСзопасно ΡƒΠ΄Π°Π»Π΅Π½ΠΎ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΎ большС Π½Π΅ понадобится.
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹
ctx ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ AES, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ привязан ΠΊ ΠΊΠ»ΡŽΡ‡Ρƒ.
Π΄Π»ΠΈΠ½Π° Π”Π»ΠΈΠ½Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
nc_off Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ stream_block для возобновлСния Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ². Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ смСщСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ 0 Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ size_t .
nonce_counter 128-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΈ счСтчик. Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ чтСния ΠΈ записи Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 16 Π±Π°ΠΉΡ‚Π°.
stream_block Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠ° для возобновлСния.Π­Ρ‚ΠΎ пСрСзаписываСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ чтСния ΠΈ записи Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 16 Π±Π°ΠΉΡ‚Π°.
input Π‘ΡƒΡ„Π΅Ρ€, содСрТащий Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ , Π΄Π»ΠΈΠ½Π° Π±Π°ΠΉΡ‚Π°.
output Π‘ΡƒΡ„Π΅Ρ€, содСрТащий Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ записываСмым ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ , Π΄Π»ΠΈΠ½Π° Π±Π°ΠΉΡ‚Π°.
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
0 Π² случаС успСха.
ΠΈΠ½Ρ‚ mbedtls_aes_crypt_ofb ( mbedtls_aes_context * CTX ,
size_t Π΄Π»ΠΈΠ½Π° ,
Ρ€Π°Π·ΠΌΠ΅Ρ€_Ρ‚ * iv_off ,
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ iv [16],
const Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ * Π²Ρ…ΠΎΠ΄ ,
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ * Π²Ρ‹Ρ…ΠΎΠ΄
)

Π­Ρ‚Π° функция выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-OFB (Ρ€Π΅ΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ).

Для OFB Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ контСкст с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ mbedtls_aes_setkey_enc (), нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, выполняСтС Π»ΠΈ Π²Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ OFB ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ расписаниС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ OFB ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, поэтому Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ трСбуСтся.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
ΠŸΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ содСрТимоС iv, Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, обновляСтся, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ снова Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ (Π°Ρ…) Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ² .Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΡƒΒ», инициализируя iv_off Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0 ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΈ сохраняя Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ.

Для использования Π±Π΅Π· ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ iv Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π° iv_off установлСн Π² 0 ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ содСрТимоС Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈΠ±ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π»ΠΈΠ±ΠΎ вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅
Для Ρ€Π΅ΠΆΠΈΠΌΠ° OFB Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ поставит ΠΏΠΎΠ΄ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹
ctx ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ AES, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ привязан ΠΊ ΠΊΠ»ΡŽΡ‡Ρƒ.
Π΄Π»ΠΈΠ½Π° Π”Π»ΠΈΠ½Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
iv_off Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² IV (обновляСтся послС использования). Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ size_t .
iv Π’Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (обновляСтся послС использования).Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ записываСмый Π±ΡƒΡ„Π΅Ρ€ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 16 Π±Π°ΠΉΡ‚Π°.
input Π‘ΡƒΡ„Π΅Ρ€, содСрТащий Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ , Π΄Π»ΠΈΠ½Π° Π±Π°ΠΉΡ‚Π°.
output Π‘ΡƒΡ„Π΅Ρ€, содСрТащий Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ записываСмым ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ , Π΄Π»ΠΈΠ½Π° Π±Π°ΠΉΡ‚Π°.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *