ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

РасчСт ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ построСниС основных элСмСнтов Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСтСй. 
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ криптографичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ Π½Π°ΠΈΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ Π²Π΄Π²ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ°. Алгоритм Ρ‚Π°ΠΊΠΆΠ΅ прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Π» Π±Ρ‹ с 32-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄Π±Π»ΠΎΠΊΠ°ΠΌΠΈ вмСсто 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΈ Ρ 256-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ Π±Ρ‹ быстрСС, ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ возросла Π±Ρ‹ Π² 232 Ρ€Π°Π·Π°. Или Π½Π΅Ρ‚? ВСория, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ основан Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, опираСтся Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ 216 +1 являСтся простым числом. А 232 + 1 простым числом Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

РасчСт ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ построСниС основных элСмСнтов Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСтСй. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ криптографичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΡƒΡ€ΡΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Срная Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ»

Π’Π΅ΠΌΠ°: «Π Π°ΡΡ‡Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ основных элСмСнтов Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСтСй. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ криптографичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²»

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

2. ОписаниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² сСти ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ связи

2.1 БистСма распрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ (основная)

2.2 БистСма распрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π”ΠΈΡ„Ρ„ΠΈ ΠΈ Π₯Π΅Π»ΠΌΠ°Π½Π° (рСзСрвная)

2.3 IDEA Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ

2.3.1 ΠžΠ±Π·ΠΎΡ€ IDEA

2.3.2 Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ IDEA

2.3.4 ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ· IDEA

2.3.5Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ

3. ОписаниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

4. ΠšΡ€ΠΈΠΏΡ‚ΠΎΡΡ‚ΠΎΠΉΠΊΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° распрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 3

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 4

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 5

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π’ ΡΠΎΠΎΡ‚вСтствии с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ систСму засСкрСчСнной связи Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ использования симмСтричного Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° IDEA с OFB ΠΏΡ€ΠΈ этом ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ распрСдСлСниС основных сСансовых ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, Π° Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… — с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π”ΠΈΡ„Ρ„ΠΈ ΠΈ Π₯Π΅Π»ΠΌΠ°Π½Π°.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ № 16):

IDEA Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ OFB (Output Feed Back):

Число Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΉ — 5;

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ число Π  = 0xCE2AF780C0F289AE51EAC188FA20BCD3 (60);

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти -50 000;

2. ОписаниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² сСти ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ связи

2.1 БистСма распрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ (основная)

1. ЦРК Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ Ρ€Π°ΡΡΡ‹Π»Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈΡ… ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ:

Π i = (Π i 1, Π i 2,…, Π i L), Π³Π΄Π΅ i=1,2,…, V (количСство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ);

АдрСс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ прСдставляСт собой Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€, элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ нСзависимыми. Π’ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ способ формирования адрСса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

— Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ся случайноС число, Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 23);

— Π²Π΅ΠΊΡ‚ΠΎΡ€ адрСсов рассчитываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π i = (ai, ai*2 ,…, ai*L),

Π³Π΄Π΅ i=1,2,…, V, Π° L — количСство ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΉ;

— Ρ€Π°Π·ΠΌΠ΅Ρ€ Π ij составляСт 16 Π±ΠΈΡ‚ (максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 65 535), Ρ‡Ρ‚ΠΎ опрСдСляСт количСство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Π² Π·Π°Π΄Π°Π½ΠΈΠΈ 50 000).

2. ЦРК Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ L*L ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΡƒΡŽ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ

Π’=(m*n),

Π³Π΄Π΅ элСмСнты ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ tmn Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ равновСроятными ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡ‹ΠΌΠΈ, ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ 128 Π±ΠΈΡ‚ Ρ€Π°Π²Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Π΅ ΠΊΠ»ΡŽΡ‡Π°.

3. ЦРК Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ Ρ€Π°ΡΡΡ‹Π»Π°Π΅Ρ‚ ΠΏΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ связи ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π΅Π³ΠΎ сСкрСтный ΠΊΠ»ΡŽΡ‡:

Si = T*PiT;

4. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΌΠ΅ΠΆΠ΄Ρƒ i ΠΈ j ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

— i ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ· Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ устройства ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ адрСс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ j ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ своСго сСкрСтного ΠΊΠ»ΡŽΡ‡Π° Si:

Кij = Si*PjT;

— j ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ· Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ устройства ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ адрСс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ i ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ своСго сСкрСтного ΠΊΠ»ΡŽΡ‡Π° Sj:

Кji = Sj*PiT;

Π’ Π²ΠΈΠ΄Ρƒ симмСтричности ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π’ ΠΊΠ»ΡŽΡ‡ΠΈ Кij ΠΈ Kji Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ. Π”Π°Π»Π΅Π΅ ΠΊΠ»ΡŽΡ‡ поступаСт Π² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ устройство Π±Π»ΠΎΠΊΠ° ΡˆΠΈΡ„Ρ€Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° IDEA.

2.2 БистСма распрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π”ΠΈΡ„Ρ„ΠΈ ΠΈ Π₯Π΅Π»ΠΌΠ°Π½Π° (рСзСрвная)

1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ сСти Π·Π°Ρ€Π°Π½Π΅Π΅ ΡƒΡΠ»Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π  (большом простом числС 128 Π±ΠΈΡ‚) ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠΌ элСмСнтС gZp (64 Π±ΠΈΡ‚).

2. Для установлСния связи ΠΌΠ΅ΠΆΠ΄Ρƒ i ΠΈ j ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎΠ½ΠΈ Π·Π°Ρ€Π°Π½Π΅Π΅ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ собствСнныС сСкрСтныС ΠΊΠ»ΡŽΡ‡ΠΈ X ΠΈ Y (128 Π±ΠΈΡ‚).

3. Π”Π°Π»Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ i Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡:

Кi = gX(mod P),

Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ j — ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡:

Кj = gY(mod P).

4. ОбмСнявшись ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ сСкрСтный ΠΊΠ»ΡŽΡ‡:

ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ i: Кij = (gX)Y(mod P);

ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ j: Кji = (gY)X(mod P);

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ»ΡŽΡ‡ΠΈ Кij ΠΈ Kji Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ. Π”Π°Π»Π΅Π΅ ΠΊΠ»ΡŽΡ‡ поступаСт Π² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ устройство Π±Π»ΠΎΠΊΠ° ΡˆΠΈΡ„Ρ€Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° IDEA.

2.3 IDEA Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ OFB

ΡΠ΅Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΡˆΠΈΡ„Ρ€Π° IDEA, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠšΡΡƒΠ΅Π΄ΠΆΠ° Π›Π°ΠΉ (Xuejia Lai) ΠΈ Π”ТСймсом Масси (James Massey), появился Π² 1990 Π³ΠΎΠ΄Ρƒ. Он Π½Π°Π·Ρ‹Π²Π°Π»ΡΡ PES (Proposed Encryption Standard, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ стандарт ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ). Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π³ΠΎΠ΄Ρƒ, послС дСмонстрации Π‘ΠΈΡ…Π°ΠΌΠΎΠΌ ΠΈ Π¨Π°ΠΌΠΈΡ€ΠΎΠΌ возмоТностСй Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ·Π°, Π°Π²Ρ‚ΠΎΡ€Ρ‹ усилили свой ΡˆΠΈΡ„Ρ€ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ρ‚Π°ΠΊΠΎΠ³ΠΎ вскрытия ΠΈ Π½Π°Π·Π²Π°Π»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ IPES (Improved Proposed Encryption Standard, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ стандарт ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ). Π’ 1992 Π³ΠΎΠ΄Ρƒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ IPES Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° IDEA (International Data Encryption Algorithm, ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ…).

IDEA основываСтся Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΡ… тСорСтичСских полоТСниях ΠΈ, хотя ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ· добился Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… успСхов Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² с ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½Ρ‹ΠΌ количСством этапов, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ всС Π΅Ρ‰Π΅ каТСтся ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ. Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ IDEA ΠΏΠΎΠΊΠ° нСясно. ΠŸΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠΌ DES прСдпринято Π½Π΅ Π±Ρ‹Π»ΠΎ, частично ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π·Π°ΠΏΠ°Ρ‚Π΅Π½Ρ‚ΠΎΠ²Π°Π½ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ для коммСрчСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ люди ΠΏΠΎΠΊΠ° всС Π΅Ρ‰Π΅ ΠΆΠ΄ΡƒΡ‚, наблюдая насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Ρ‚ сСбя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π² ΠΏΡ€Π΅Π΄ΡΡ‚оящиС Π³ΠΎΠ΄Ρ‹ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ·Π°. Π•Π³ΠΎ сСгодняшняя ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅Ρ‚ся Ρ‡Π°ΡΡ‚ΡŒΡŽ PGP.

2.3.1 ΠžΠ±Π·ΠΎΡ€ IDEA

IDEA являСтся Π±Π»ΠΎΡ‡Π½Ρ‹ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠΌ, ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с 64-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ тСкста. Π”Π»ΠΈΠ½Π° ΠΊΠ»ΡŽΡ‡Π° — 128 Π±ΠΈΡ‚ΠΎΠ². Для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΡˆΠΈΡ„рирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Как ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±Π»ΠΎΡ‡Π½Ρ‹Π΅ ΡˆΠΈΡ„Ρ€Ρ‹ IDEA ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅, ΠΈ Ρ€Π°ΡΡΠ΅ΡΠ½ΠΈΠ΅. Ѐилософия, лСТащая Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, прСдставляСт собой «ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… алгСбраичСских Π³Ρ€ΡƒΠΏΠΏ» .

Π‘ΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ алгСбраичСскиС Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΈ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ:

— XOR

— Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ 216

— Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ 216 + 1. (Π­Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ S-Π±Π»ΠΎΠΊ IDEA.)

ВсС эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄Π±Π»ΠΎΠΊΠ°ΠΌΠΈ. Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄Π°ΠΆΠ΅ эффСктивнСС Π½Π° 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… процСссорах.

Π’ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ рассматриваСтся Ρ€Π°Π±ΠΎΡ‚Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ (OFB).

Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° ΠΈ ΡΠ΄Π²ΠΈΠ³ΠΎΠ²Ρ‹ΠΉ рСгистр, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ — Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π±Π»ΠΎΠΊ Π²Π½Π°Ρ‡Π°Π»Π΅ содСрТит Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ (рис.3). ΠŸΡ€ΠΈ этом для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСанса ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС рСгистра, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΊΠ°Π½Π°Π»Ρƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ тСкстом.

ПолоТим M = M1, M2, …, Mn. Для всСх i = 1… n Π‘i = Mi Π i, Π³Π΄Π΅ Π i — ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅ k Π±ΠΈΡ‚ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ IDEA (Ci-1). ОбновлСниС сдвигового рСгистра осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ отбрасывания ΡΡ‚Π°Ρ€ΡˆΠΈΡ… k Π±ΠΈΡ‚ΠΎΠ² ΠΈ Π΄ΠΎΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΡ справа Pi.

ВсС Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ нСсовмСстимы Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ:

* никакая ΠΏΠ°Ρ€Π° ΠΈΠ· ΡΡ‚ΠΈΡ… Ρ‚Ρ€Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚воряСт ассоциативному Π·Π°ΠΊΠΎΠ½Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π° + (b с) (Π° + b) с;

* никакая ΠΏΠ°Ρ€Π° ΠΈΠ· ΡΡ‚ΠΈΡ… Ρ‚Ρ€Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚воряСт дистрибутивному Π·Π°ΠΊΠΎΠ½Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π° + (bс) (Π° + b) (Π° + с).

ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этих Ρ‚Ρ€Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ обСспСчиваСт комплСксноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ…ΠΎΠ΄Π°, сущСствСнно затрудняя ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ· IDEA ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с DES, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ базируСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ «ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π˜Π›Π˜» .

ΠžΠ±Ρ‰Π°Ρ схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° IDEA ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π˜ 1. 64-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ… дСлится Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… субблока. Π­Ρ‚ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ субблока становятся Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ВсСго выполняСтся восСмь Ρ†ΠΈΠΊΠ»ΠΎΠ². ΠœΠ΅ΠΆΠ΄Ρƒ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ субблоки ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ мСсто ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

(1) — ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ субблока X1 ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°.

(2) + - слоТСниС субблока X2 ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°.

(3) + - слоТСниС субблока Π₯3 ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°.

(4) — ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ субблока Π₯4 ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°.

(5) — слоТСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² шагов (1) ΠΈ (3).

(6) — слоТСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² шагов (2) ΠΈ (4).

(7) — ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° шага (5) ΠΈ ΠΏΡΡ‚ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°.

(8) + - слоТСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² шагов (6) ΠΈ (7).

(9) — ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° шага (8) с ΡˆΠ΅ΡΡ‚Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

(10) + - слоТСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² шагов (7) ΠΈ (9).

(11) — слоТСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² шагов (1) ΠΈ (9).

(12) — слоТСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² шагов (3) ΠΈ (9).

(13) — слоТСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² шагов (2) ΠΈ (10).

(14) — слоТСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² шагов (4) ΠΈ (10).

Π’Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ субблока, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния шагов (11), (12), (13) ΠΈ (14). Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ мСстами Π΄Π²Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… субблока (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ послСднСго Ρ†ΠΈΠΊΠ»Π°), ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ формируСтся Π²Ρ…ΠΎΠ΄ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

ПослС восьмого Ρ†ΠΈΠΊΠ»Π° ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π°:

(1) — ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ субблока X1 ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°.

(2) + - слоТСниС субблока X2 ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°.

(3) + - слоТСниС субблока Π₯3 ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°.

(4) — ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ субблока Π₯4 ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°.

НаконСц, эти Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ субблока Y1… Y4 вновь ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ для получСния Π±Π»ΠΎΠΊΠ° ΡˆΠΈΡ„Ρ€Ρ‚Π΅ΠΊΡΡ‚Π°.

Алгоритм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 52 ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π° (ΠΏΠΎ ΡˆΠ΅ΡΡ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π²ΠΎΡΡŒΠΌΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ Π΅Ρ‰Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ для прСобразования Π²Ρ‹Ρ…ΠΎΠ΄Π°). Π‘Π½Π°Ρ‡Π°Π»Π° 128-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ дСлят Π½Π° Π²ΠΎΡΠ΅ΠΌΡŒ 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π­Ρ‚ΠΎ — ΠΏΠ΅Ρ€Π²Ρ‹Π΅ восСмь ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° (ΡˆΠ΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅ΠΉ — для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π° — для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°). Π—Π°Ρ‚Π΅ΠΌ 128-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ цикличСски сдвигаСтся Π²Π»Π΅Π²ΠΎ Π½Π° 25 Π±ΠΈΡ‚ ΠΈ ΡΠ½ΠΎΠ²Π° дСлится Π½Π° Π²ΠΎΡΠ΅ΠΌΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅; послСдниС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ — Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅. ΠšΠ»ΡŽΡ‡ снова цикличСски сдвигаСтся Π²Π»Π΅Π²ΠΎ Π΅Ρ‰Π΅ Π½Π° 25 Π±ΠΈΡ‚ для получСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… восьми ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Ρ‚. Π΄., ΠΏΠΎΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ся.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 1.

Π’Π°Π±Π»ΠΈΡ†Π° 1 ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° IDEA

Π¦ΠΈΠΊΠ»

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ

Z11 Z21 Z31 Z41 Z51 Z61

Z12 Z22 Z32 Z42 Z52 Z62

Z13 Z23 Z33 Z43 Z53 Z63

Z14 Z24 Z34 Z44 Z54 Z64

Z15 Z25 Z35 Z45 Z55 Z65

Z16 Z26 Z36 Z46 Z56 Z66

Z17 Z27 Z37 Z47 Z57 Z67

Z18 Z28 Z38 Z48 Z58 Z68

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π°

Z19 Z29 Z39 Z49

2.3.2 Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ IDEA

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ IDEA ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Π΄Π²Π° Ρ€Π°Π·Π° быстрСС, Ρ‡Π΅ΠΌ DES. На ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с i386/33 ΠœΠ“Ρ† IDEA ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 880 ΠšΠ±ΠΈΡ‚/с, Π° Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с i486/33 ΠœΠ“Ρ† — со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 2400 ΠšΠ±ΠΈΡ‚/с.

РСализация PES Π½Π° Π±Π°Π·Π΅ Π‘Π‘Π˜Π‘ ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 55 ΠœΠ±ΠΈΡ‚/с ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частотС 25 ΠœΠ“Ρ†. Другая Π‘Π‘Π˜Π‘, разработанная ETH Zurich ΠΈ ΡΠΎΡΡ‚оящая ΠΈΠ· of 251 000 транзисторов Π½Π° ΠΊΡ€ΠΈΡΡ‚Π°Π»Π»Π΅ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒΡŽ 107.8 ΠΌΠΌ 2, ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° IDEA со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 177 ΠœΠ±ΠΈΡ‚/с ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частотС 25 ΠœΠ“Ρ†.

ВсС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. РСализация IDEA OFB прСдставлСнная Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΊΠΎΠ»ΠΎ 100 ΠΊΠ±ΠΈΡ‚ Π² ΡΠ΅ΠΊΡƒΠ½Π΄Ρƒ.

2.3.3 ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ· IDEA

Π”Π»ΠΈΠ½Π° ΠΊΠ»ΡŽΡ‡Π° IDEA Ρ€Π°Π²Π½Π° 128 Π±ΠΈΡ‚Π°ΠΌ — Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² Π΄Π²Π° Ρ€Π°Π·Π° Π΄Π»ΠΈΠ½Π½Π΅Π΅ ΠΊΠ»ΡŽΡ‡Π° DES. ΠŸΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным являСтся вскрытиС Π³Ρ€ΡƒΠ±ΠΎΠΉ силой, для вскрытия ΠΊΠ»ΡŽΡ‡Π° потрСбуСтся 2128 (1038) ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠΉ. Если ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ микросхСму, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² ΡΠ΅ΠΊΡƒΠ½Π΄Ρƒ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ Ρ‚Π°ΠΊΠΈΡ… микросхСм, Ρ‚ΠΎ ΠΏΠΎΡ‚рСбуСтся 1013 Π»Π΅Ρ‚ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ — это большС, Ρ‡Π΅ΠΌ возраст всСлСнной. 1024 Ρ‚Π°ΠΊΠΈΡ… микросхСм ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ»ΡŽΡ‡ Π·Π° Π΄Π΅Π½ΡŒ, Π½ΠΎ Π²ΠΎ Π²ΡΠ΅Π»Π΅Π½Π½ΠΎΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ся ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ‚ΠΎΠΌΠΎΠ² крСмния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вскрытиС Π³Ρ€ΡƒΠ±ΠΎΠΉ силой — Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ вскрытия IDEA. Алгоритм всС Π΅Ρ‰Π΅ слишком Π½ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… криптографичСских Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ…. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ сдСлали всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ устойчивым ΠΊ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ·Ρƒ. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ понятиС марковского ΡˆΠΈΡ„Ρ€Π° ΠΈ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΊ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ·Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈ ΠΎΡ†Π΅Π½Π΅Π½Π° количСствСнно. ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΡ‚ΠΈΠΊ Π›Π°ΠΉ (Lai) ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π» (ΠΎΠ½ ΠΏΡ€ΠΈΠ²Π΅Π» ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ), Ρ‡Ρ‚ΠΎ IDEA устойчив ΠΊ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ·Ρƒ ΡƒΠΆΠ΅ послС 4 ΠΈΠ· 8 этапов. Богласно Π‘ΠΈΡ…Π°ΠΌΡƒ, Π΅Π³ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²ΡΠΊΡ€Ρ‹Ρ‚ΡŒ IDEA с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ·Π° со ΡΠ²ΡΠ·Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΡƒΠ²Π΅Π½Ρ‡Π°Π»Π°ΡΡŒ успСхом.

Π’ΠΈΠ»Π»ΠΈ ΠœΠ°ΠΉΠ΅Ρ€ (Willi Meier) исслСдовал Ρ‚Ρ€ΠΈ алгСбраичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ IDEA ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ, хотя ΠΎΠ½ΠΈ нСсовмСстимы, Π΅ΡΡ‚ΡŒ случаи, ΠΊΠΎΠ³Π΄Π° эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стСпСни ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ. Π•Π³ΠΎ вскрытиС 2-этапного IDEA оказалось эффСктивнСС вскрытия Π³Ρ€ΡƒΠ±ΠΎΠΉ силой (242 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ), Π½ΠΎ Π΄Π»Ρ IDEA с 3 ΠΈ Π±ΠΎΠ»Π΅Π΅ этапами ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ этого вскрытия Π±Ρ‹Π»Π° Π½ΠΈΠΆΠ΅ вскрытия Π³Ρ€ΡƒΠ±ΠΎΠΉ силой. Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ 8-этапного IDEA ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Π½Π΅ΠΏΠΎΠΊΠΎΠ»Π΅Π±ΠΈΠΌΠΎΠΉ.

Π”ΠΆΠΎΠ°Π½ ДэймСн (Joan Daemen) ΠΎΡ‚ΠΊΡ€Ρ‹Π»Π° класс слабых ΠΊΠ»ΡŽΡ‡Π΅ΠΉ IDEA. Π­Ρ‚ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ся слабыми Π² Ρ‚ΠΎΠΌ смыслС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слабы Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ DES, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… функция ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±Ρ€Π°Ρ‚Π½Π° самой сСбС. Π‘Π»Π°Π±ΠΎΡΡ‚ΡŒ этих ΠΊΠ»ΡŽΡ‡Π΅ΠΉ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π·Π»ΠΎΠΌΡ‰ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ вскрытия с Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ тСкстом. НапримСр, слабым являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ (Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½ΠΎΠΉ записи):

0000,0000,0×00,0000,0000,000x, xxxx, x000

Π’ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ «x» ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ любая Ρ†ΠΈΡ„Ρ€Π°. ΠŸΡ€ΠΈ использовании Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ XOR ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… тСкстов Ρ€Π°Π²Π½ΠΎ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠΌΡƒ XOR ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΡ…ΡΡ ΠΏΠ°Ρ€ ΡˆΠΈΡ„Ρ€ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ².

Π’ Π»ΡŽΠ±ΠΎΠΌ случаС Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ случайной Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… слабых ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»Π°: ½96. ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ случайно Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ»ΡŽΡ‡ практичСски Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, нСслоТно ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ IDEA Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ слабых ΠΊΠ»ΡŽΡ‡Π΅ΠΉ — достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ XOR ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π° с Ρ‡ΠΈΡΠ»ΠΎΠΌ 0x0dae.

IDEA ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π»ΡŽΠ±ΠΎΠΌ ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΡˆΠΈΡ„Ρ€Π°, описанных Π² Π³Π»Π°Π²Π΅ 9. ΠŸΡ€ΠΎΡ‚ΠΈΠ² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ IDEA ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдпринято Ρ‚ΠΎ ΠΆΠ΅ Π²ΡΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ «Π²ΡΡ‚Ρ€Π΅Ρ‡Π° посСрСдинС», Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² DES. Однако, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ IDEA Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² Π΄Π²Π° Ρ€Π°Π·Π° Π΄Π»ΠΈΠ½Π½Π΅Π΅ ΠΊΠ»ΡŽΡ‡Π° DES, это вскрытиС Π½Π΅ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ. ОбъСм Π½ΡƒΠΆΠ½ΠΎΠΉ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ вскрытия памяти составит 64*2128 Π±ΠΈΡ‚ΠΎΠ², ΠΈΠ»ΠΈ 1039 Π±Π°ΠΉΡ‚ΠΎΠ².

МоТно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ IDEA с Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡ‹ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, особСнно Ссли срСдства распрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ. Для IDEA Π½ΡƒΠΆΠ½ΠΎ всСго 52 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π°, ΠΎΠ±Ρ‰Π΅ΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ 832 Π±ΠΈΡ‚ΠΎΠ². Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ бСзопаснСй, Π½ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ насколько.

Π’ Π½Π°ΠΈΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ Π²Π΄Π²ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ°. Алгоритм Ρ‚Π°ΠΊΠΆΠ΅ прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Π» Π±Ρ‹ с 32-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄Π±Π»ΠΎΠΊΠ°ΠΌΠΈ вмСсто 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΈ Ρ 256-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ Π±Ρ‹ быстрСС, ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ возросла Π±Ρ‹ Π² 232 Ρ€Π°Π·Π°. Или Π½Π΅Ρ‚? ВСория, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ основан Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, опираСтся Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ 216 +1 являСтся простым числом. А 232 + 1 простым числом Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π», Π½ΠΎ Π΅Π³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ совсСм ΠΈΠ½ΠΎΠΉ. Π›Π°ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π»Π΅Π³ΠΊΠΎ.

Π₯отя IDEA каТСтся Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ бСзопаснСС DES, Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Если ваша Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ сообщСний ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с 64-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, рСализация 128-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° IDEA ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ. Для Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ 128-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, объСдинив 64-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ сам с ΡΠΎΠ±ΠΎΠΉ. Но ΡΡ‚Π° модификация Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ослабляСт IDEA.

Если большС Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π° Π½Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ IDEA с ΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ числом этапов. БСгодня Π»ΡƒΡ‡ΡˆΠ΅Π΅ вскрытиС IDEA быстрСС вскрытия Π³Ρ€ΡƒΠ±ΠΎΠΉ силой Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для 2.5 ΠΈ ΠΌΠ΅Π½Π΅Π΅ этапов, 4-этапный IDEA Π±ΡƒΠ΄Π΅Ρ‚ Π² Π΄Π²Π° Ρ€Π°Π·Π° быстрСС ΠΈ, насколько ΠΌΠ½Π΅ извСстно, Π΅Π³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ся.

Π₯отя ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ·Π° IDEA Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ, нСизвСстно Π½ΠΈ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ.

2.3.4Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ

IDEA — это ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ вопросы ΠΏΠΎΠΊΠ° ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ. ΠžΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π»ΠΈ IDEA Π³Ρ€ΡƒΠΏΠΏΡƒ? НС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… способов вскрытия этого ΡˆΠΈΡ„Ρ€Π°? Π£ IDEA твСрдая тСорСтичСская основа, Π½ΠΎ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π° казавшиСся бСзопасными Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΊΠ°ΠΏΠΈΡ‚ΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΎΠ²Ρ‹ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ·Π°. Ряд Π³Ρ€ΡƒΠΏΠΏ акадСмичСских ΠΈ Π²ΠΎΠ΅Π½Π½Ρ‹Ρ… исслСдоватСлСй Π½Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ свои Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π½Π°Π»ΠΈΠ·Π° IDEA. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡƒΠΆΠ΅ добился ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄ΠΎΠ±ΡŒΠ΅Ρ‚ΡΡ успСха.

IDEA Π·Π°ΠΏΠ°Ρ‚Π΅Π½Ρ‚ΠΎΠ²Π°Π½ Π² Π•Π²Ρ€ΠΎΠΏΠ΅ ΠΈ Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… Π¨Ρ‚Π°Ρ‚Π°Ρ…. ΠŸΠ°Ρ‚Π΅Π½Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ascom-Tech AG. Для нСкоммСрчСского использования Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

3. ΠžΠŸΠ˜Π‘ΠΠΠ˜Π• Π ΠΠ—Π ΠΠ‘ΠžΠ’ΠΠΠΠ«Π₯ ΠŸΠ ΠžΠ“Π ΠΠœΠœ ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Π±ΠΎΠ½Π΅Π½Ρ‚ сСти ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ связи ΠΈΠΌΠ΅Π΅Ρ‚ Π² ΡΠ²ΠΎΡ‘ΠΌ распоряТСнии ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹:

— Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ сСкрСтного ΠΊΠ»ΡŽΡ‡Π° X ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Y Π΄Π»Ρ использования систСмы распрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π”ΠΈΡ„Ρ„ΠΈ ΠΈ Π₯Π΅Π»ΠΌΠ°Π½Π° (описаниС ΠΈ Π»ΠΈΡΡ‚ΠΈΠ½Π³ прСдставлСны Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 2);

— ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ (Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ) согласно IDEA с OFB (описаниС ΠΈ Π»ΠΈΡΡ‚ΠΈΠ½Π³ прСдставлСны Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 3). ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ k = 32 Π±ΠΈΡ‚Π°.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Ρ†Π΅Π½Ρ‚Ρ€Π° распрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 4) Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚:

— Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ L*L*128 Π±ΠΈΡ‚;

— Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ°Ρ€Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ присущиС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ЦРК, Π½ΠΎ ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ сСти ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ связи. ОбъСдинСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π·Π²Π°Π½ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ нСсколько ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ прСдставлСнными Π² Ρ€Π°ΠΌΠΊΠ°Ρ… курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 5 содСрТит листинги Ρ‚Ρ€Ρ‘Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ прилоТСниях. Π˜Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ h-Ρ„Π°ΠΉΠ»Ρ‹, Π½ΠΎ Π΄Π»Ρ наглядности Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ *.cpp.

ВсС прилоТСния Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΡΡ€Π΅Π΄Π΅ алгоритмичСского программирования Turbo C++ v1.01, ΠΈ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ инструкции Ρ‚ΠΎΠ»ΡŒΠΊΠΎ i8086 процСссора ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Π½ΠΈΠ·ΠΊΠΈΠ΅ трСбования ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅. РСализация ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π°ssembler’Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ нСсколько ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.

4. ΠšΡ€ΠΈΠΏΡ‚ΠΎΡΡ‚ΠΎΠΉΠΊΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° распрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠŸΡ€ΠΈ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ для формирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π° (основной Ρ€Π΅ΠΆΠΈΠΌ) Π²Ρ‹Π±ΠΎΡ€ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† опрСдСлялся исходя ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ количСства Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΉ (L=5). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, симмСтричная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π’ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π’[6,6] ΠΈ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Ρ€Π°Π²Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Π΅ ΠΊΠ»ΡŽΡ‡Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ (128 Π±ΠΈΡ‚). Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ равновСроятно ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ.

АдрСса Π°Π±ΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ Π²ΠΈΠ΄Π° Π i=(P1i, P2i, …, PLi), Π³Π΄Π΅ L = 6. Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта адрСса Ρ€Π°Π²Π΅Π½ 16 Π±ΠΈΡ‚Π°ΠΌ, Ρ‡Ρ‚ΠΎ опрСдСляСтся ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством Π°Π±ΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти (216 > 50 000). АдрСс ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ рассчитываСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π±Ρ‹Π»ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ-нСзависимыми.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… условий сформированныС сСкрСтныС ΠΊΠ»ΡŽΡ‡ΠΈ Si ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ сСти Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ равновСроятными ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ-нСзависимыми, Ρ‡Ρ‚ΠΎ являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ условиСм криптостойкости Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΉ. Если ΠΆΠ΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΠ» (ΠΈΠ»ΠΈ Π΅ΠΌΡƒ стали извСстны) Π±ΠΎΠ»Π΅Π΅ 6 сСкрСтных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌ Π°Π΄Ρ€Π΅ΡΠΎΠ² Π°Π±ΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ‚ΠΎ ΡΠΈΡΡ‚Π΅ΠΌΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ связи считаСтся раскрытой, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вычислСны Π»ΡŽΠ±Ρ‹Π΅ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ сСкрСтныС ΠΊΠ»ΡŽΡ‡ΠΈ.

ΠŸΡ€ΠΈ использовании Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π”ΠΈΡ„Ρ„ΠΈ ΠΈ Π₯Π΅Π»ΠΌΠ°Π½Π° для формирования сСансового ΠΊΠ»ΡŽΡ‡Π° (Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ) использовались ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅:

— Π  — 128 Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ простоС число;

— g — Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ поля Zp (64 Π±ΠΈΡ‚Π°, выбирался случайно с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ΠΏΠΎ Ρ‚Π΅ΠΎΡ‚Π΅ΠΌΠ΅ ΠΠ»ΡŒΠ±Π΅Ρ€Ρ‚Π°);

— X — случайноС число размСрности 64 Π±ΠΈΡ‚Π°;

— Kij — сСансовый ΠΊΠ»ΡŽΡ‡, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π΄Π»ΠΈΠ½Ρƒ 128 Π±ΠΈΡ‚.

ΠšΡ€ΠΈΠΏΡ‚ΠΎΡΡ‚ΠΎΠΉΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠΉ схСмы распрСдСлСния основываСтся Π½Π° Ρ‚рудности Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ дискрСтного логарифмирования. Для ΠΊΠ»ΡŽΡ‡Π° 128 Π±ΠΈΡ‚ Π·Π°Π΄Π°Ρ‡Π° практичСски Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ N ΠΈ g ΠΈΠΌΠ΅Π΅Ρ‚ сущСствСнноС влияниС Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ этой систСмы. Число (N-1)/2 Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ большим простым числом, Π° Ρ‡ΠΈΡΠ»ΠΎ g Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ большой ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ N.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° программная рСализация систСмы ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ связи, которая с Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях.

ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· криптостойкости Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² распрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΡ‚ΠΎΠΉΠΊΠΎΡΡ‚ΡŒ примСнСния Π΄Π°Π½Π½Ρ‹Ρ… схСм ΠΏΡ€ΠΈ построСнии Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ систСмы засСкрСчСнной связи.

Π˜Π‘ΠŸΠžΠ›Π¬Π—Π£Π•ΠœΠΠ― Π›Π˜Π’Π•Π ΠΠ’Π£Π Π

1. А. П. Π‘Π°Ρ€Π°Π½ΠΎΠ², Н. П. БорисСнко ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ основы ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности. — ΠžΡ€Ρ‘Π», 1997 Π³.

2. А. Π’. Π”ΠΎΠΌΠ°ΡˆΠ΅Π² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. -М. «ΠΠΎΠ»ΠΈΠ΄ΠΆ», 2000 Π³.

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π• 1

Π‘Ρ…Π΅ΠΌΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° IDEA (Ρ€Π΅ΠΆΠΈΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ).

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π• 2

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ сСкрСтного ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°.

#include «ext128.cpp»

#include

#include

#include

void main (int argc, char **argv)

{

FILE *keyX;

FILE *_ey;

unsigned P[8] = {0xbcd3,0xfa20,0xc188,0×51ea, 0×89ae, 0xc0f2,0xf780,0xce2a};

unsigned a[8] = {0×89e, 0xc55,0x8fb, 0x5b42,0,0,0,0};

unsigned X[8] = {0,};

char dest1[9];

char dest2[9];

char *n1 = «u», *ext1 = «.x», *ext2 = «.y»;

strcpy (dest1, n1);

strcat (dest1, argv[1]);

strcat (dest1, ext1);

keyX = fopen (dest1, «wb»);

strcpy (dest2, n1);

strcat (dest2, argv[1]);

strcat (dest2, ext2);

_ey = fopen (dest2, «wb»);

randomize ();

for (int i=0; i<7; i++) X[i] = rand ()%0xffffU;

X[7] = rand ()%0xce29U;

fwrite (&X, sizeof (unsigned), 8, keyX);

fclose (keyX);

unsigned temp1[18] = {0,};

Pow_N (a, X, P, temp1);

fwrite (&temp1, sizeof (unsigned), 8, _ey);

fclose (keyY);

}

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ осущСствляСтся ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ послС ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° указываСтся Π½ΠΎΠΌΠ΅Ρ€ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°: genx_y.exe 20. Π“Π΄Π΅ 20 — Π½ΠΎΠΌΠ΅Ρ€ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ u20. x ΠΈ u20.y.

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π• 3

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ IDEA с OFB.

#include «idea.cpp»

#include

#include

#include

#include

int main (int argc, char **argv)

{

clrscr ();

//————————————data———————————;

FILE *message;

FILE *sincfile;

FILE *rezfile;

FILE *keyfile;

unsigned key[8] = {0,};

unsigned WorkKey[52] = {0,};

unsigned sinc[4] = {0,};

//——————————-end of data—————————;

if ((message = fopen (argv[1], «rb»)) == NULL)

{

cout << «input file «<< argv[1] << «not open.»;

return 1;

}

if ((rezfile = fopen (argv[2], «wb»)) == NULL)

{

cout << «file «<< argv[2] << «not open.»;

return 1;

}

if ((keyfile = fopen (argv[3], «rb»)) == NULL)

{

cout << «file «<< argv[4] << «not open.»;

return 1;

}

if ((sincfile = fopen (argv[4], «rb»)) == NULL)

{

cout << «file «<< argv[4] << «not open.»;

return 1;

}

//—————————————————————————;

fread (key, sizeof (unsigned), 8, keyfile);

fclose (keyfile);

GenerateKey (key, WorkKey);

//—————————————————————————;

fread (sinc, sizeof (unsigned), 4, sincfile);

fclose (sincfile);

//—————————————————————————;

long len=filelength (fileno (message));

unsigned temp[3]={0,};

do

{

if (len > 6)

{

fread (temp, sizeof (unsigned), 3, message);

IDEA_OFB (temp, WorkKey, sinc, 3);

fwrite (&temp, sizeof (unsigned), 3, rezfile);

len -= 6;

}

else

{

memset (temp, 0,3);

fread (temp, sizeof (unsigned char), len, message);

int n = ((len%2)==1)?(len/2+1):len/2;

for (int i=0; i

fwrite (&temp, sizeof (unsigned), n, rezfile);

len = -1;

}

cout << endl << len;

}while (len > 0);

//—————————————————————————;

fclose (message);

fclose (rezfile);

//—————————————————————————;

cout << endl << «© Bashmakov A.V. Orel, 2001»;

return 0;

}

На Π²Ρ…ΠΎΠ΄ послС ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° подаётся имя Ρ„Π°ΠΉΠ»Π° для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ (Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ), имя Ρ„Π°ΠΉΠ»Π° с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ, Ρ„Π°ΠΉΠ» с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ (основной ΠΈΠ»ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ) ΠΈ ΡΠΈΠ½Ρ…ропосылка.

НапримСр: idea_ofb.exe mao. bmp rez.txt u20. lin sin.sin.

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… достигаСт 100 ΠΊΠ±Π°ΠΉΡ‚ Π² ΡΠ΅ΠΊΡƒΠ½Π΄Ρƒ.

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π• 4

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ЦРК.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

// generate matrix T[N][N][8];

#include «lin.cpp»

#include

void main ()

{

FILE *file_T;

unsigned T[N][N] = {0,};

file_T = fopen («matrix.lin», «wb»);

for (int i=0; i<8; i++)

{

GenerateT (T);

fwrite (&T, sizeof (unsigned), N*N, file_T);

}

fclose (file_T);

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния прилоТСния являСтся Ρ„Π°ΠΉΠ» matrix.lin.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°.

#include «lin.cpp»

#include «ext128.cpp»

#include

#include

#include

#include

//———————————————————————————;

int main (int argc, char **argv)

{

if (argc < 4)

{

cout << endl

<< «crk.exe U1_number U2_number U1. x U2.y file. t»

<< endl;

return 1;

}

//====================initialization data=================

FILE *osnkey;

FILE *rezkey;

FILE *stat;

FILE *X_file;

FILE *Y_file;

FILE *T_file;

unsigned Num1 = atoi (argv[1]), (c);

unsigned Num2 = atoi (argv[2]);

char dest1[9];

char dest2[9];

char dest3[9];

char *n1 = «u», *ext1 = «.lin», *ext2 = «.d_h»;

strcpy (dest1, n1);

strcat (dest1, argv[1]);

strcat (dest1, ext1);

if ((osnkey = fopen (dest1, «wb»)) == NULL)

{

cout << «KeyFile not open.»;

return 1;

}

strcpy (dest2, n1);

strcat (dest2, argv[1]);

strcat (dest2, ext2);

if ((rezkey = fopen (dest2, «wb»)) == NULL)

{

cout << «KeyFile not open.»;

return 1;

}

if ((stat = fopen («stat.txt», «wt»)) == NULL)

{

cout << «stat.txt not open.»;

return 1;

}

if ((X_file = fopen (argv[3], «rb»)) == NULL)

{

cout << argv[2] << «not open.»;

return 1;

}

if ((Y_file = fopen (argv[4], «rb»)) == NULL)

{

cout << argv[3] << «not open.»;

return 1;

}

if ((T_file = fopen (argv[5], «rb»)) == NULL)

{

cout << argv[4] << «not open.»;

return 1;

}

unsigned key1[8] = {0,};

unsigned key2[8] = {0,};

unsigned X[17] = {0,};

unsigned Y[17] = {0,};

//=====================================================

unsigned R1[N] = {0,};

unsigned R2[N] = {0,};

unsigned T[N][N] = {0,};

GenerateR (R1,Num1);

GenerateR (R2,Num2);

for ((c)=0; (c)<8; (c)++)

{

fread (T, sizeof (unsigned), N*N, T_file);

key1[(c)] = FormDubleKey (T, R1, R2);

}

fclose (T_file);

fwrite (&key1, sizeof (unsigned), 8, osnkey);

fclose (osnkey);

//=====================================================

// X — secret key

// Y — public key

unsigned P[17] = {0xbcd3,0xfa20,0xc188,0×51ea, 0×89ae, 0xc0f2,0xf780,0xce2a};

// unsigned a[8] = {0×89e, 0xc55,0x8fb, 0x5b42,0,0,0,0};

fread (X, sizeof (unsigned), 8, X_file);

fclose (X_file);

fread (Y, sizeof (unsigned), 8, Y_file);

fclose (Y_file);

Pow_N (Y, X, P, key2);

fwrite (&key2, sizeof (unsigned), 8, rezkey);

fclose (rezkey);

//=====================================================

int j;

fprintf (stat, «ttΠ€Π°ΠΉΠ» статистики для ЦРК. n»);

fprintf (stat, «tΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ 1: %d. tадрСс: «, Num1);

for (j = 5; j >= 0; j—) fprintf (stat, «%.4X», R1[j]);

fprintf (stat, «ntΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ 2: %d. tадрСс: «, Num2);

for (j = 5; j >= 0; j—) fprintf (stat, «%.4X», R2[j]);

fprintf (stat, «nt1) Основной ΠΊΠ»ΡŽΡ‡: ntt»);

for (j = 7; j >= 0; j—) fprintf (stat, «%.4X», key1[j]);

fprintf (stat, «nt2) Π Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡: ntt»);

for (j = 7; j >= 0; j—) fprintf (stat, «%.4X», key2[j]);

fprintf (stat, «nnt (c)2001 A. Bashmakov»);

//=====================================================

return 0;

}

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ осущСствляСтся ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки):

crk.exe U1_number U2_number U1. x U2.y matrix.lin.

Π’ΠΎ Π΅ΡΡ‚ΡŒ указываСтся Π½ΠΎΠΌΠ΅Ρ€Π° Π°Π±ΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ связь, сСкрСтный ΠΊΠ»ΡŽΡ‡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Ρ„Π°ΠΉΠ» содСрТащий ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° с ΠΎΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ (*.lin) ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΌ (*.d_h) ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ»-ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° stat.txt.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°:

Π€Π°ΠΉΠ» статистики для ЦРК.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ 1: 10. адрСс: 4F570112060A6AF33436B67A

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ 2: 20. адрСс: E827254578884F57060A3436

1) Основной ΠΊΠ»ΡŽΡ‡:

4FA0F597B4F49770365581D7ACB2F3BF

2) Π Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡:

5FA91077838BDEFB20DD14BAE77A8B19

(c)2001 A. Bashmakov

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π• 5

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

1. lin. cpp

//===================© Bashmakov A.V. Orel, 2001===========

//= started 23.10 03.05.01 =

//= finished 21.14 24.05.01 =

//=====================================================

#include

//—————————————————————————————————————;

#define N 6

//—————————————————————————————————————;

void GenerateT (unsigned T[N][N]);

void GenerateR (unsigned R[N], unsigned);

unsigned FormDubleKey (unsigned T[N][N], unsigned R1[N], unsigned R2[N]);

unsigned long Pow_N (unsigned long, unsigned long, unsigned long);

//———————————————————————————————————-;

void GenerateT (unsigned T[N][N])

{

unsigned temp = 0;

for (int i = 0; i < N; i++)

{

for (int j = temp; j < N; j++)

{

if (i == j) T[i][j] = rand ()%0xffffU;

else T[i][j] = T[j][i] = rand ()%0xffffU;

}

temp ++;

}

}

//————————————————————————————————————;

void GenerateR (unsigned R[N], unsigned number)

{

for (int i=0; i

}

//————————————————————————————————————;

unsigned FormDubleKey (unsigned T[N][N], unsigned R1[N], unsigned R2[N])

{

unsigned long temp1 = 0U;

unsigned long temp2 = 0U;

unsigned S[N] = {0U,};

for (int i=0; i

{

temp2 = 0;

for (int j=0; j

{

temp1 = ((unsigned long) T[i][j] * R1[j]);

temp2 = ((temp1%0xffffU) + temp2)%0xffffU;

}

S[i] = (unsigned)temp2;

}

temp2 = 0;

for (i=0; i

{

temp1 = (unsigned long) S[i] * R2[i];

temp2 = ((temp1%0xffffU) + temp2)%0xffffU ;

}

return temp2;

}

//————————————————————————————————————;

unsigned long Pow_N (unsigned long a, unsigned long k, unsigned long n)

{

unsigned long A, B, K, q, r;

K=k;

B=1;

A=a;

s2: q=K/2;

r=K-2*q;

K=q;

if (r==0) goto s5;

B=(A*B)%n;

if (K==0) return B;

s5: A=(A*A)%n;

goto s2;

}

2. ext128. cpp

//====================128 bits ariphmetics==================

//=====================23.05.01====20.42==================

//===================© 2001 by A. Bashmakov==============

union Data

{

unsigned a[2];

unsigned long b;

}point;

//———————————————————————————————-;

void Mult16 (unsigned *, unsigned *, unsigned *);

void Div16 (unsigned *, unsigned *, unsigned *, unsigned *);

void Sum16 (unsigned *, unsigned *, unsigned *);

void Razn16 (unsigned *, unsigned *, unsigned *);

void Pow_N (unsigned *, unsigned *, unsigned *, unsigned *);

void ModN (unsigned *, unsigned *);

//———————————————————————————————-;

void Mult16(unsigned a[9], unsigned b[9], unsigned rez[18])

{ // a * b = rez; a & b max 128 bit, rez — 256 bit

unsigned st16 = 0U;

unsigned ml16 = 0U;

unsigned long temp = 0L;

for (int j=0; j<16; j++) rez[j] = 0U;

a[8] = 0;

b[8] = 0;

for (j=0; j<9; j++)

{

for (int i=0; i<9; i++)

{

if (i == 0)

{

rez[9 + j] = st16;

st16 = 0;

}

point.b = (unsigned long) a[i] * (unsigned long) b[j];

ml16 = point. a[0];

temp = (unsigned long) rez[i+j] + (unsigned long) ml16 + st16;

rez[i+j] += ml16 + st16;

st16 = point. a[1] + (unsigned)(temp>>16);

if ((j == 8)&&(i == 8)) rez[i+j+1] = st16;

}

}

}

//———————————————————————————————-;

void Sum16(unsigned a[16], unsigned b[16], unsigned rez[16])

{ // a + b = rez;

unsigned perepS = 0;

unsigned j = 0;

for (int i=0; i<8; i++)

{

point.b = (unsigned long) b[i] + (unsigned long) a[i] + perepS;

rez[j] = point. a[0];

perepS = point. a[1];

j++;

}

rez[j] = perepS;

}

//———————————————————————————————-;

void ModN (unsigned a[16], unsigned m[8])

{ // a (mod m);

int i = 16;

do {i—;} while (a[i]==0);

int j = 8;

do {j—;} while (m[j]==0);

unsigned *temp1 = new unsigned [16];

unsigned *temp2 = new unsigned [16];

if ((i>j)||((i==j)&&(a[i]>m[j])))

{

do

{

for (int g=0; g<16; g++) temp1[g] = 0;

if (a[i] >= m[j])

{

point.b = (a[i] / m[j]);

temp1[i — j] = (point.a[0] == 0)?1:point.a[0];

}

else

{

i—;

point.a[0] = a[i];

point.a[1] = a[i+1];

point.b = (point.b / m[j]) — 1;

temp1[i — j] = (point.a[0] == 0)?1:point.a[0];

temp1[i — j + 1]= point. a[1];

}

Mult16(m, temp1, temp2);

Razn16(a, temp2, temp1);

for (g=0; g<16; g++) a[g] = temp1[g];

i = 16;

do

{ i—;

if (i == -1) {i=0; break;}

}while (a[i]==0);

}while (i≠j);

for (int g=8; g<16; g++) temp2[g] = 0;

for (g=0; g<8; g++) temp2[g] = m[g];

while (a[i]>=m[j])

{

Razn16(a, temp2, temp1);

for (g=0; g<16; g++) a[g] = temp1[g];

};

};

delete temp1;

delete temp2;

}

//———————————————————————————————-;

void Razn16(unsigned a[16], unsigned b[16], unsigned rez[16])

{ // a — b = rez;

for (int i=0; i<16; i++) rez[i] = 0;

unsigned *temp = new unsigned [17];

for (i=0; i<16; i++) temp[i] = a[i];

temp[17] = 0;

unsigned p = 17;

do {p—;} while (a[p]==0);

for (i=0; i<=p; i++)

{

point.a[0] = temp[i];

point.a[1] = temp[i+1];

point.b -= b[i];

rez[i] = point. a[0];

temp[i+1] = point. a[1];

}

rez[i] = temp[i];

delete temp;

}

//———————————————————————————————-;

void Pow_N (unsigned a[8], unsigned b[8], unsigned mod[8], unsigned rez[8])

{

unsigned *temp = new unsigned [9];

unsigned *temp1 = new unsigned [16];

int f;

for (int i = 0; i<8; i++) temp[i] = a[i];

temp[8] = 0;

for (i = 0; i<16; i++) temp1[i] = 0;

unsigned p = 8;

do {p—;} while (b[p]==0);

unsigned g = 16;

do {g—;} while (((b[p] >> g)&0×1) == 0);

g—;

for (i = g; i>=0; i—)

{

Mult16(temp, temp, temp1);

ModN (temp1, mod);

for (f = 8; f>=0; f—) temp[f] = temp1[f];

if (((b[p] >> i)&0×1) == 1)

{

Mult16(temp, a, temp1);

ModN (temp1, mod);

for (f = 8; f>=0; f—) temp[f] = temp1[f];

}

}

for (i=p-1; i>=0; i—)

{

for (int j=15; j>=0; j—)

{

Mult16(temp, temp, temp1);

ModN (temp1, mod);

for (f = 8; f>=0; f—) temp[f] = temp1[f];

if (((b[i] >> j)&0×1) == 1)

{

Mult16(a, temp, temp1);

ModN (temp1, mod);

for (f = 8; f>=0; f—) temp[f] = temp1[f];

}

}

}

for (i=7; i>=0; i—) rez[i] = temp[i];

delete temp;

delete temp1;

}

//———————————————————————————————-;

void Div16(unsigned a[8], unsigned b[8], unsigned rez[8], unsigned ost[8])

{

int i = 8;

do {i—;} while (a[i]==0);

int j = 8;

do {j—;} while (b[j]==0);

unsigned RaznPoz, del;

unsigned ostT = {0,};

for (int g=0; g<8; g++) ostT[g] = a[g];

unsigned *temp1 = new unsigned [17];

unsigned *temp2 = new unsigned [17];

if ((i>j)||((i==j)&&(ostT[i]>b[j])))

{

do

{

for (int g=0; g<17; g++) temp1[g] = 0;

if (ostT[i] > b[j]) del = (ost[i] / b[j]);

else

{

i—;

point.a[0] = ostT[i];

point.a[1] = ostT[i+1];

del = point. b / b[j] - 1;

del = (del == 0)?1:del;

}

RaznPoz = i — j;

temp1[RaznPoz] = del;

rez [RaznPoz] = (rez[RaznPoz]==0)?del:(rez[RaznPoz] + del);

Mult16(b, temp1, temp2);

Razn16(ostT, temp2, temp1);

for (int u=15;u>=0;u—) ostT[u] = temp1[u];

i = 8;

do

{

i—;

if (i==-1) {i = 0; break;}

}while (ostT[i]==0);

}while (i>j);

int pointer = 0;

for (g = 0; g < 8; g++) temp2[g] = b[g];

for (g = 8; g < 16; g++) temp2[g] = 0;

while (ostT[i]>=b[j])

{

Razn16(ostT, temp2, temp1);

for (g=7;g>=0;g—) ostT[g] = temp1[g];

pointer++;

};

rez[0] += pointer;

};

delete temp1;

delete temp2;

}

3. idea. cpp

//==================idea.cpp============================

//———-International Data Encription Algorithm———-;

typedef unsigned long type32;

typedef unsigned type16;

typedef unsigned char type8;

//——————————————————————————-;

void EncriptionStep (unsigned *, unsigned *);

void IDEA (unsigned *, unsigned *);

unsigned SdvigMas14 (unsigned *);

int GenerateKey (type16 *, type16 *);

int sdvig25 (type16 *);

void IDEA_OFB (unsigned *, unsigned *, unsigned *, int);

unsigned mul (unsigned, unsigned);

//——————————————————————————-;

void EncriptionStep (unsigned *key, unsigned *mes)

{

unsigned long a, b, c, d, e, f, g, h;

a = mul (mes[0], key[0]); // 1

b = ((unsigned long) mes[1] + key[1])%65 536; // 2

c = ((unsigned long) mes[2] + key[2])%65 536; // 3

d = mul (mes[3], key[3]); // 4

e = a ^ c; // 5

f = b ^ d; // 6

e = mul (e, key[4]); // 7

f = ((unsigned long) f + e)%65 336; // 8

f = mul (f, key[5]); // 9

e = ((unsigned long) e + f)%65 336; // 10

mes[0] = a ^ f; // 11

mes[1] = c ^ f; // 12

mes[2] = b ^ e; // 13

mes[3] = d ^ e; // 14

}

void IDEA (unsigned *key, unsigned *mes)

{

EncriptionStep (key, mes);

EncriptionStep (key + 6, mes);

EncriptionStep (key + 12, mes);

EncriptionStep (key + 18, mes);

EncriptionStep (key + 24, mes);

EncriptionStep (key + 30, mes);

EncriptionStep (key + 36, mes);

EncriptionStep (key + 42, mes);

mes[0] = ((unsigned long) mes[0] * key[48])%65337L;

mes[1] = ((unsigned long) mes[1] + key[49])%65 336;

mes[2] = ((unsigned long) mes[2] + key[50])%65 336;

mes[3] = ((unsigned long) mes[3] * key[51])%65337L;

}

unsigned SdvigMas14(unsigned *mas)

{

unsigned temp = mas[0];

mas[0] = mas[1];

mas[1] = mas[2];

mas[2] = mas[3];

mas[3] = temp;

return (temp);

}

int GenerateKey (type16 *A, type16 *B)

{

for (int i=0;i<8;i++) B[i] = A[i];

sdvig25(A);

for (i=0;i<8;i++) B[i+8] = A[i];

sdvig25(A);

for (i=0;i<8;i++) B[i+16] = A[i];

sdvig25(A);

for (i=0;i<8;i++) B[i+24] = A[i];

sdvig25(A);

for (i=0;i<8;i++) B[i+32] = A[i];

sdvig25(A);

for (i=0;i<8;i++) B[i+40] = A[i];

sdvig25(A);

for (i=0;i<4;i++) B[i+48] = A[i];

return 1;

}

int sdvig25(type16 *A)

bit25[1];

out[3] = bit7[3]

void IDEA_OFB (unsigned *mes, unsigned *key, unsigned *NZ, int n)

{ // mes — n * 16bit

IDEA (key, NZ);

for (int i = 0; i

SdvigMas14(NZ);

}

unsigned mul (unsigned a, unsigned b)

{

unsigned long p;

if (a)

{ if (b)

{ p = (unsigned long) a * b;

b = p&0xffffU;

a = p>>16;

return b — a + (b < a);

}

else return 1-a;

}

else return 1-b;

}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ