Цел, напредък, афинен шифър, кратка теория, пример за криптиране с афинен шифър,
Афинен шифър
Кратка теория
Афинният шифър е специален случай на по-общия шифър с едноазбучно заместване.
В афинния шифър на номера на всяка буква от азбуката с размер m се присвоява число от диапазона [0; m-1]. След това, използвайки модулна аритметика, за всяко число, съответстващо на буква в оригиналната азбука, се изчислява нов номер на буквата, който ще замени стария в шифрования текст.
Къде е номерът на писмото, получено в резултат на криптиране,
- номер на шифрованата буква;
b, c - ключове за криптиране;
m е размерът на азбуката.
В същото време се налага известно ограничение на ключа: стойността на ключа a и размерността на азбуката m трябва да бъдат взаимно прости.
Къде е реципрочната стойност на b по модул m, т.е.
Числото b е обратимо само ако е взаимно просто с числото m. Всички обратими букви b за латинската азбука, чийто размер е 26, могат да бъдат представени като списък от 13 числа: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25.
Пример за криптиране с афинен шифър
За криптиране е използвана латинската азбука, състояща се от 26 букви. Нека се опитаме да шифроваме и дешифрираме думата "master" с помощта на Affine шифъра. Например ще използваме следните ключове: b=5, c=7.
- Буквата m има числото 12, тогава криптираното число ще бъде (5*12+7) mod 26 = 15, което съответства на буквата p
- Буквата a има номер 0, тогава криптираното число ще бъде равно на (5*0+7) mod 26 = 7, което съответства на буквата h
- Буквата s има номер 18, тогава криптираното число ще бъде (5*18+7) mod 26 = 19, което съответства на буквата t
- Буквата t има числото 19, тогава криптираното число ще бъде (5*19+7) mod 26 = 24, което съответства на буквата y
- Буквата е имачисло 4, тогава криптираното число ще бъде равно на (5*4+7) mod 26 = 1, което съответства на буквата b
- Буквата r има номер 17, тогава криптираното число ще бъде (5*17+7) mod 26 = 14, което съответства на буквата o
Криптирането доведе до низа phtybo
Декриптирането ще бъде низът, получен в примера (phtybo)
Първо, трябва да намерите. a* по модул 26 трябва да даде едно. Така че резултатите 27, 53, 79, 105 и т.н. са подходящи за нас. защото a=5, имаме нужда от число, завършващо на 5. 105 е добре. 105/5=21, оттук следва, че =21
- Буквата p има числото 15, тогава дешифрираното число ще бъде 21*(15-7) mod 26 = 12, което съответства на буквата m
- Буквата h има числото 7, тогава дешифрираното число ще бъде 21*(7-7) mod 26 = 0, което съответства на буквата a
- Буквата t има номер 19, тогава дешифрираното число ще бъде 21*(19-7) mod 26 = 18, което съответства на буквата s
- Буквата y има числото 24, тогава дешифрираното число ще бъде 21*(24-7) mod 26 = 19, което съответства на буквата t
- Буквата b има номер 1, тогава дешифрираното число ще бъде 21*(1-7) mod 26 = 4, което съответства на буквата e
- Буквата o има числото 14, тогава дешифрираното число ще бъде 21*(14-7) mod 26 = 17, което съответства на буквата r
Оказа се "master" - Нашият начален низ.
Реализация на шифър
Алгоритъмът за криптиране е реализиран на езика за програмиране C#. Програмата представлява форма с бутони и полета за попълване:
Фигура 1 - Основен формуляр на програмата
Бутоните "Affine cipher" и "Affine recurrent cipher" избират кой шифър ни трябва в момента. В зависимост от избора, някои полета ще изчезнат. „Афинен шифър“ съдържа полета за въвежданеключове, входен низ, изходен низ, декриптиран низ и бутони „Шифроване“ и „Декриптиране“.
Фигура 2. - Пример за работа на програмата
Описание на алгоритъма за работа на програмата
Програмният вход е 2 клавиша (съответно a и b), както и входния низ под формата на масив от знаци. Следващата стъпка е да проверите дали ключовете са правилни. Ако ключовете са правилни, се прави проверка дали въведените знаци са букви от латинската азбука. Ако символът е такъв, се извършва криптиране, ако не, знакът се пропуска. След края на символите се показва резултатът. При дешифриране програмата намира обратния ключ за a и след това подобно на криптирането.
Криптоанализ
Тъй като афинният шифър по същество е едноазбучен заместващ шифър, той има всички уязвимости на този клас шифри. Например, в случай на използване на латиница от 26 букви, броят на възможните a е 13 опции. b може да приема 26 различни стойности. Това означава, че има само 338 възможни варианта на ключове за тази азбука, което позволява използването на метода "груба сила", за да вземете ключовете.
Можете също така да приложите метода на статистически анализ, ако текстът е достатъчно голям. Колкото по-голям е размерът на текста, толкова по-добре и по-точно работи този метод. Методът се основава на преброяване на срещането на всяка буква в шифрования текст и сравняване на резултатите с действителното появяване на букви във всяка азбука. Ще ви покажа с пример. Имаме текста, показан на фигура 2., криптиран с афинен шифър. Не знаем ключовете и изходния текст.
Фигура 3 - шифрован текст
Нека анализираме текста с помощта на услугата http://www.abakbot.ru/
Фигура 4 - Честотен анализ
Вземете и реална честотна таблицас помощта на букви от латинската азбука.
Фигура 5 - Честота на използване на английски букви
Виждаме, че буквата h се среща най-често в нашия шифрован текст. А в истинската азбука най-често се среща буквата е. Въз основа на това може да се предположи, че буквата e е била кодирана като h. Буквата e има числото 4, а буквата h има числото 7. Така че a*4+b=7,33,59 и т.н. След като преминем през няколко опции, стигаме до a =11, b=15. 11*4+15=59. Замествайки a = 11 и b=15 в програмата, получаваме четливия английски текст, показан на фигура 6.