Аналіз стійкості криптографічних систем з використанням штучного інтелекту

 















Аналіз стійкості криптографічних систем з використанням штучного інтелекту

Annotation


The work is about the cryptographically methods, realized with soft. The different cryptographic objects are presented in it - from simple ciphers to cryptography protocols. Everyone has been completed with necessary explanations and some historical facts. Besides all, such wide used cryptographically systems as DES and RSA are presented and analyzed here. There are also their simple examples, realized with soft languages Dev-C++ and VBA. The work can be used for the first acquainting with the general ideas and characteristics in the Cryptography course.

Реферат


Робота містить теоретичний та практичний матеріал, що дозволяє ознайомитись з предметом вивчення та основними проблемами криптографії, історією її формування як науки та практичними сферами застосування. В роботі розглянуті різні криптографічні обєкти, починаючи від примітивних шифрів і закінчиючи криптографічними протоколами. Надані приклади їх реалізації та аналізу з допомогою сучасного програмного забезпечення.

Вступ містить інформацію щодо предмету та термінології, а також деякі історичні відомості. Основний матеріал роботи розбито на три тематичні частини, кожна з яких містить теорію та практичні завдання для самоперевірки. Відповіді і приклади розвязання до них містятться в 4-му розділі..

Зважаючи на технічні характеристики наявного програмного забезпечення, в даній роботі не ставилась задача створення нового шифру чи вдалої атаки на один із відомих шифрів. Натомість викладені в ній загальні відомості з криптографії, опис найвідоміших систем шифрування та приклади їх спрощеної реалізації, дають змогу використовувати її в якості методичного посібника для студентів при вивченні курсу криптографії та для першого ознайомлення з методами і засобами застосування компютерних технології в цьому курсі.


Вступ


Предмет вивчення криптографії.

Як передати певну інформацію певному адресату таємно від інших? Існують три основні шляхи вирішення цієї проблеми.

1)По-перше - створити абсолютно надійний, недоступний для інших канал звязку між абонентами. Зауважимо, що при сучасному рівні розвитку науки і техніки, за умов значної віддаленості абонентів та необхідності неодноразової передачі великих об'ємів інформації, це практично неможливо.

2)Використовувати відкритий канал звязку, при цьому приховуючи сам факт передачі інформації. Засобами та методами таємної передачі займається стеганографія.

3)Використовувати відкритий канал звязку, але передавати інформацію в зміненому вигляді, так, щоб відновити її міг тільки адресат. Розробкою методів перетворення (шифрування) інформації з метою її захисту від сторонніх користувачів займається криптографія.

Такі методи і способи перетворення інформації називаються шифрами. Процесс застосування шифру до секретної інформації, тобто перетворення відкритого тексту в шифртекст, або криптграму, називається шифруванням, дешифрування, відповідно - процесс відтворення секретної інформації з криптограми.

Відмітимо, що задача таємної передачі виникає для секретної (таємної, конфіденційної і т.п.) інформації. Тобто такої, що має наступні характеристичні особливості: - існує певне коло законних користувачів, що мають право володіти даною інформацією; - існують незаконні користувачі (противники), які прагнуть оволодіти даною інформацією, щоб використати її на благо собі та на збитки законним користувачам.

Таким чином, криптографія займається такими методами захисту інформації, які не дозволили б противнику відновити її з перехвачених повідомлень. При цьому по каналу звязку передається не сама інформація, а шифртекст, так що перед противником виникає задача розкриття, або зламу шифра, тобто отримання секретної інформації із криптограми без знання застосованого шифру. Спроба зламу шифра називаеться атакою на шифр. Відповідно, важливою характеристикою шифра є його здатність витримувати атаки - стійкість шифра.

Слід зазначити, що до цього часу не існує точних математичних методів оцінки стійкості шифрів, тому для кожного конкретного шифру стійкість його визначається проведенням різноманітних атак на нього. Наука, що займається розробкою методів і способів розкриття шифрів, називається криптоаналізом, і разом з криптографією складає криптологію.

Ще одна криптографічна проблема полягає в тому, що шифрування та дешифрування мають бути - по можливості - простими, аби знизити часові витрати та ймовірность виникнення помилок при обробці інформації. Задля цього іноді навіть свідомо поступаються високою стійкістю шифру.

Отже, ясно, що отримання надійного та зручного у корисуванні шифру - непроста задача, тому, щоб подовжити термін «життя» шифру та підвищити його стійкість, в шифр вводиться ключ. Це змінна частина шифру, що застосовується для шифрування конкретного повідомлення, зміна ключа забезпечує зміну усієї криптограми, хоча принцип шифрування залишається тим самим. Тоді, навіть знаючи застосований шифр, противник не зможе прочитати повідомлення без ключа. Тобто задачею противника є підбір ключа, а надійність шифру певною мірою визначається кількістю всіх можливих ключів.

Проблема обміну ключами, що постає перед законними користувачами, може бути вирішена способами, які згадувались вище - створенням закритого каналу або таємної передачі інформації.

Отже, для шифрування/деширування певним шифром необхідні наступні обєкти:

Р - скінчена множина можливих відкритих текстів;

С - скінчена множина можливих шифрованих текстів;

К - ключовий простір, скінчена система можливих ключів;- множина функцій шифрування fk: Р´К->С, що перетворюють відкритий текст хÎР на шифроване повідомлення у= fk (х), уÎС з використанням деякого ключа kÎК;- множина функцій дешифрування dk: С->Р, що здійснюють зворотне перетворення. Сукупність означених обєктів {Р, С, К, F, D}, така, що " kÎК $ fkÎF, dkÎD: (dk ° fk)(х)= (fk ° dk)(х)=х, називають криптосистемою, або системою шифрування.

Скінченність множин Р, С, К зумовленя скінченістю застосованого алфавіту - множини символів, що використовуються для їх запису. Проте не треба думати, що цей факт спрощує задачу противника - так, наприклад, система шифрування, що працює з 64-символьними послідовностями, записаними двійковою системою, має 2 64 можливих слів, а кількість можливих ключів становить (2 64)!, що практично унеможливлює атаку методом простого підбору ключів.

В залежності від того, чи дешифруваня відбувається за тим самим ключем, що і шифрування, виділяють системи симетричні та асиметричні. До останніх належать так звані системи з відкритим ключем, в яких ключ для шифрування є загальновідомим. Завдяки спеціальному вибору функцій шифрування/дешифрування зашифрувати повідомлення може будь-хто, прочитати - тільки той, хто має секретний, закритий ключ. Вимагається, щоб при цьому ключ для дешифрування неможливо або майже неможливо було відновити з відкритого ключа. Тоді знімається питання щодо обміну ключами. Принцип криптосистеми з відкритим ключем покладено в основу електронного підпису, електронних грошей та ін.

Розділ 1. Криптоаналіз класичних шифрів


Шифри як засіб таємної передачі інформації зявились і застосовувались досить давно. Один із найдавніших відомих шифрів - «Сцитала», відноситься до часів війни спартанців з Афінами в Vст. до н.є. В листах Цезаря знайдено шифр, відомий тепер як «шифр Цезаря» - заміна кожної літери третьою за нею по алфавіту. Відомі шифри Генріха VI і Ришельє, «цифірна абетка» Петра І, „решітка Кардано - видатного математика ХІVст., та ін. Криптографією займалися політики і дипломати, вчені та злодії; був час, коли мистецтво створення і розкриття шифрів вважалось чимось на зразок чорної магії.

Прогрес в науці і техніці не оминув і криптографію. Зявляються перші шифрувальні машини; ще наприкінці ХІХ ст. голландець Керкгоффс (1835-1903) формулює криптоаналітичний принцип, за яким противнику вважається відомим весь метод шифрування, окрім ключа - ним користуються і до сьогодні.

Перша та Друга Світові Війни виводять криптологію на новий рівень. Їх масштаби вимагають передачі значних обємів секретної інформації - і, відповідно, якнайефективніших методів шифрування та аналізу зашифрованої інформації. В 1945р. американець Клод Шеннон виступає з доповіддю «Математична теорія криптографії», зміст якої було засекречено спецслужбами. Рік її опублікування - 1948р. вважається роком народження криптографії - „теорії інформації - як математичної науки. В своїй праці Шеннон узагальнив накопичений до нього досвід створення та використання шифрів, та описав мовою математики деякі з найвідоміших шифрів, показавши, що навіть складні шифри можуть містити як елементи прості шифри заміни і перестановки, та їх різноманітні комбінації. Далі розглянемо та проаналізуємо деякі з них.

1.1 Шифр простої заміни


.1.1 Опис та криптоаналіз

Взагалі шифром заміни називають метод шифрування, при якому кожна літера, або група літер, або слово заміняються певним символом або групою символів. Звичайно, складність шифру не залежить від природи застосованих для шифрування символів - це можуть бути літери, цифри, малюнки тощо.

Взагалі, нехай Х= {x1, x2, … xn} - алфавіт, тобто набір символів відкритого повідомлення, У= {y1, y2, … ym} - набір символів шифрованого повідомлення. Тоді шифр заміни описується функцією

: X ->Y, f(xi)=yj, i=1,n; j =1,m.


Розрізняють шифри заміни:

а) симетричні та асиметричні;

б) моноалфавітні (простої заміни) та багатоалфавітні;

в) поточні та блочні, тощо.

Шифр простої заміни - такий, що f бієктивна, тобто Х і У мають однакову кількість символів, і кожному xi однозначно відповідає єдине yi. Тоді, замінивши кожен символ відкритого повідомлення х1х2...хр, отримаємо шифроване повідомлення f(x1) f(x2)... f(xр). Дешифрування проводиться у зворотному порядку.

Найпростішим варіантом шифру заміни є шифр зсуву, коли кожна літера „зсувається по алфавіту на кілька позицій. Величина зсуву, власне, і є ключем. Наприклад: ключ - 13 (№„й), тоді літери замінюються наступним чином:

Математично шифр зсуву описується як

i = xi + k (mоd n),

де n - кількість літер алфавіту (для українського - 32, разом з «пробілом» - 33); k - ключ, величина зсуву, при k=3 отримаємо так званий «шифр Цезаря».

Цей шифр є простим та зрозумілим у використанні, проте розкривається просто перебором можливих варіантів, надто якщо під рукою є компютер.

Наприклад, маємо криптограму, зашифровану шифром заміни:

Уо,дкедзеис,дзеис,дзеисдкїрїтїтбпнс,дЧесдухереділжянтутбпеджурнпусдяухтїтбпнс.

Візьмемо перших 10-15 символів, та розглянемо усі варіанти зсуву по алфавіту. Зауважимо, що при шифруванні в вихідному тексті замість ї, й, є можуть використовуватись і, и, е - це майже не впливає на зміст тексту, проте спрощує шифрування. Бачимо, що тут немає є, й, проте присутня ї - отже, спробуємо спочатку повний алфавіт з 32 символів та пробілу. Результат роботи програми:


КлючОброблене повідомленняКлючОброблене повідомлення1Фпелєеієйт,еієйт17Єбтюутцущд,тцущд2Хрємжєїжку,єїжку18Жвуяфучфье,учфье3Цсжнзжизлф,жизлф19Згф хфшхює,фшхює4Чтзоізйімх,зйімх20Ідхацхщцяж,хщцяж5Шуіпїікїнц,ікїнц21Їецбчцьч з,цьч з6Щфїриїлиоч,їлиоч22Иєчвшчюшаі,чюшаі7Ьхисйимйпш,имйпш23Йжшгщшящбї,шящбї8Юцйткйнкрщ,йнкрщ24Кзщдьщ ьви,щ ьви9Ячкулколсь,колсь25Ліьеюьаюгй,ьаюгй10 шлфмлпмтю,лпмтю26Мїюєяюбядк,юбядк11Ащмхнмрнуя,мрнуя27Нияж яв ел,яв ел12Бьнцонсоф ,нсоф 28Ой за гаєм, гаєм13Вюочпотпха,отпха29Пкаібадбжн,адбжн14Гяпшрпурцб,пурцб30Рлбївбевзо,бевзо15Д рщсрфсчв,рфсчв31Смвигвєгіп,вєгіп16Еасьтсхтшг,схтшг32Тнгйдгждїр,гждїр17Єбтюутцущд,тцущд33Уодкедзеис,дзеисОсмислений текст отримали тільки у одному випадку - 28. За допомогою знайденого ключа завершуємо розшифрування:


Отримане повідомленняУо,дкедзеис,дзеис,дзеисдкїрїтїтбпнс, дЧесдухереділжянтутбпеджурнпусдяухтїтбпнс.Ключ28Оброблене повідомленняОй, за гаєм, гаєм, гаєм зелененьким, Там орала дівчинонька воликом чорненьким.

Взагалі кажучи, для розкриття шифру зсуву досить двох правильно розшифрованих літер - по одній обчислюємо величину зсуву, по іншій перевіряємо. Узагальненням шифру зсуву є афінний шифр:

i =аxi + b (mоd n)


де ключ - пара чисел (а,b). Але він розкривається за… трьома відомими літерами. Наприклад, нам відомі: «р»(№19) - а(№1), «о»(№17) - в(№3), «п»(№20) - н(№16). Тоді розкриття шифру зводиться до розвязання системи:


а+ b=19 (mоd 32),

а + b=17 (mоd 32);


звідки а=15, b=4. Третя літера слугує для перевірки. Власне кажучи, за трьома літерами можна розкрити шифр, не знаючи довжини алфавіту. Кількість можливих варіантів ключа для афінного шифру - n2, для українського алфавіту 322=1024. Тобто і в цьому разі можна обійтись простим перебором.

Дещо цікавіший шифр отримаємо, якщо натомість алфавіту візьмемо ключову фразу, в якій використані усі літери (так звану панграму).

Приклади панграм українською: - Гей, хлопці, не вспію - на ґанку ваша файна їжа знищується бурундучком. - Чуєш їх, доцю, га? Кумедна ж ти, прощайся без гольфів! - Жебракують філософи при ґанку церкви в Гадячі, ще й шатро їхнє пяне знаємо. - Єхидна, ґава, їжак ще й шиплячі плазуни бігцем форсують Янцзи. - З'їв аґрусу - та ягода цілюща б'є жах інфекцій шипучим „ь. - Хвацький юшковар Філіп щодня на ґанку готує сім'ї вечерю з жаб. і т.д.

Тоді ключем є також і сама фраза. Так, викинувши «зайві» літери з панграми «Гей, хлопці, не вспію - на ґанку ваша файна їжа знищується бурундучком!» - отримаємо деяку послідовність літер «гейхлопцінвсюаґкуш фїжзищєтьсябрдчм», відмінну від алфавітної. Змінюючи величину зсуву, кожного разу отримаємо новий шифр, в якому символи замінюються неочевидним чином (звісно, доти, поки противнику невідома ключова фраза). Перебір усіх можливих варіантів ( 3232) - проблема навіть для компютера, перш за все - проблема часу. Тому варто скористатися більш ефективними методами аналізу.

За наявності досить великого уривку шифртексту непогані результати дає частотний аналіз, тобто визначення частоти застосування символів і порівняння з частотами літер того чи іншого алфавіту. Ці таблиці складаються на основі аналізу досить великих уривків випадкових текстів, краще - такої ж специфіки, що і шифроване повідомлення (якщо, звичайно, ми володіємо такою інформацією). Цей метод тим дієвіший, чим більше шифрованого тексту є в нашому розпорядженні. Наприклад, маємо криптограму:

Іпнабябтжи,нвкойуж,нкзйакнфжвднтйнубхж,

няж,нхжюнонфщгцщнвдуєнажхжабо,нінфжвднофяйойуйнябхж.

Лжнвжубяє?н-нрщтщнзбяйуб,нйущнінтщнзгб тйойуйфє.

нІнвкуйнрйужинчжгайн-нлжвнтщнзуйпйяє,нінфрдіуйфє.

Можемо пересвідчитись, що жоден зсув по алфавіту не дасть бажаного результату:


КлючОброблене повідомленняКлючОброблене повідомлення1Їробвавузй,оглпкфз,17Чгбопнпєхщ,брювьжх,2Испвгбгфік,пдмрлхі,18Шдвпроржць,всягюзц,3Йтргдвдхїл,ренсмцї,19Щегрспсзчю,гтадяіч,4Кусдегецим,сєотнчи,20Ьєдстртішя,дубеаїш,5Лфтеєдєчйн,тжпуошй,21Южетусуїща,ефвєбищ,6Мхуєжежшко,узрфпщк,22 зєуфтфиьб,єхгжвйь,7Нцфжзєзщлп,фісхрьл,23Аіжфхухйюв,жцдзгкю,8Очхзіжіьмр,хїтцсюм,24Бїзхцфцкяг,зчеідля,9Пшціїзїюнс,циучтян,25Виіцчхчлад,ішєїема,10Рщчїиіияот,чйфшуао,26Гйїчшцшмбе,їщжиєнб,11Сьшийїйапу,шкхщфбп,27Дкишщчщнвє,иьзйжов,12Тющйкикбрф,щлцьхвр,28Елйщьшьогж,йюікзпг,13Уяьклйлвсх,ьмчюцгс,29Ємкьющюпдз,кяїлірд,14Фаюлмкмгтц,юншячдт,30Жнлюяьяреі,лаимїсе,15Хбямнлндуч,яощашеу,31Зомяаюасєї,мбйнитє,16Цваномоефш,апьбщєф,32Іпнабябтжи,нвкойуж,

Тому вдамося до більш складних атак. Підрахуємо кількість та частоту літер у повідомленні (стовпчики 1 і 2, 5 і 6) та порівняємо з частотами літер у відкритому тексті (стовпчики 3 і 4, 7 і 8):


0,181н0,134_0,021х0,017я0,09й0,064о0,016г0,016ь0,08ж0,06і0,016р0,014з0,064у0,053а0,011и0,013х0,048б0,051в0,011л0,013ч0,037в0,05н0,011п0,008г0,037ф0,046и0,005ц0,008ц0,037щ0,044т0,005ч0,007б0,037я0,038с0,005ю0,007ю0,032і0,035р0,005_0,005ї0,032о0,03к0е0,005й0,032т0,029л0ї0,004щ0,027а0,028е0м0,003ш0,027є0,024у0с0,002ж0,021д0,02м0ш0,002є0,021з0,018п0ь0,002ф0,021к0,017д

Повідомлення занадто коротке, щоб частоти співпадали точно, проте бачимо, що літера „н в криптограмі зустрічається значно частіше, ніж будь-яка інша. Окрім того, вона стоїть після кожного розділового знаку. Це дає можливість припустити, що:

„н - це пробіл, „ ;

-пунктуація в повідомленні збережена.

Заміняємо „н:

іп абябтжи, вкойуж, кзйак фжвд тй убхж,

яж, хжю о фщгцщ вдує ажхжабо, і фжвд офяйойуй ябхж.

лж вжубяє? - рщтщ збяйуб, йущ і тщ згб_тйойуйфє.

і вкуй рйужи чжгай - лжв тщ зуйпйяє, і фрдіуйфє. (при цьому я залишила „_ на місці „ в криптограмі, аби зберегти різні символи. Далі будемо „відкриті літери писати великими, щоб відрізняти їх від знаків криптограми.)

Бачимо кілька разів вживану окремо „і - найімовірніші варіанти - слова а, і, в, я, з. Причому три останні - ймовірніші, тому що взагалі „і зустрічається рідко, в складі інших слів - тільки два рази. Слово „іп на початку означає, відповідно як, яр або ж зі, ви але тоді і або и =„п і має частоту 0,011, що малоймовірно. Отже, припускаємо „і =я:

Яп абябтжи, вкойуж, кзйак фжвд тй убхж,

яж, хжю о фщгцщ вдує ажхжабо, Я фжвд офяйойуй ябхж.

лж вжубяє? - рщтщ збяйуб, йущ Я тщ згб_тйойуйфє.

Я вкуй рйужи чжгай - лжв тщ зуйпйяє, Я фрдЯуйфє.

Бачимо слова „лж в 3-му рядку та „лжв - в четвертому. В криптограмі „ж вживається часто, можливі варіанти „ж= „а, „о, „і. Тоді маємо пари слів: на - нам, та - там, так; що -щоб; ні - ніс і так далі. Зважаючи, що „ж не зустрічається окремо, спробуємо „ж = о; тоді „лж - це що, „лжв- щоб. Це не суперечить частоті знаків „л, „в в криптограмі.

Яп абябтОи, БкойуО, кзйак фОБд тй убхО,

яО, хОю о фщгцщ Бдує аОхОабо, Я фОБд офяйойуй ябхО.

ЩО БОубяє? - рщтщ збяйуб, йущ Я тщ згб_тйойуйфє.

Я Бкуй рйуОи чОгай - ЩОБ тщ зуйпйяє, Я фрдЯуйфє.

Бачимо двічі слово „фОБд - варіанти: роби, собі. Останній ймовірніший, інакше отримаємо сумнівне „я роби в другому рядку. Замінюємо „д=і, „ф=с:

Яп абябтОи, БкойуО, кзйак СОБІ тй убхО,

яО, хОю о Сщгцщ БІує аОхОабо, Я СОБІ оСяйойуй ябхО.

ЩО БОубяє? - рщтщ збяйуб, йущ Я тщ згб_тйойуйСє.

Я Бкуй рйуОи чОгай - ЩОБ тщ зуйпйяє, Я СрІЯуйСє.

Залишилась ще найчастіша літера в криптограмі - „й. Малоймовірно, щоб вона була приголосною. Спробуємо „й=а:

Яп абябтОи, БкоАуО, кзАак СОБІ тА убхО,

яО, хОю о Сщгцщ БІує аОхОабо, Я СОБІ оСяАоАуА ябхО.

ЩО БОубяє? - рщтщ збяАуб, Аущ Я тщ згб_тАоАуАСє.

Я БкуА рАуОи чОгаА - ЩОБ тщ зуАпАяє, Я СрІЯуАСє.

Далі, бачимо слово „тА (отже, „т - приголосна) та слова „тщ, „рщтщ в третьому рядку. „Щ - досить часто вживана голосна, варіанти „е, „и, „у. Тоді „Аущ в третьому рядку, відповідно - але, аби, ану, агу. „Б вже використана, якщо „у =н, то в четвертому рядку маємо незрозуміле Б*НА, Б*ГА. Отже, перший варіант.

Яп абябтОи, БУоАЛО, УзАаУ СОБІ тА ЛбхО,

яО, хОю о СЕгцЕ БІЛє аОхОабо, Я СОБІ оСяАоАЛА ябхО.

ЩО БОЛбяє? - рЕтЕ збяАЛб, АЛЕ Я тЕ згб_тАоАЛАСє.

Я БУЛА рАЛОи чОгаА - ЩОБ тЕ зЛАпАяє, Я СрІЯЛАСє.

З отриманих уривків легко відновлюються: „о - в, „т - н, „р - м, „є - ь:

Яп абябНОи, БУВАЛО, УзАаУ СОБІ НА ЛбхО,

яО, хОю В СЕгцЕ БІЛЬ аОхОабВ, Я СОБІ ВСяАВАЛА ябхО.

ЩО БОЛбяЬ? - МЕНЕ збяАЛб, АЛЕ Я НЕ згб_НАВАЛАСЬ.

Я БУЛА МАЛОи чОгаА - ЩОБ НЕ зЛАпАяЬ, Я СМІЯЛАСЬ.

Завершуємо розшифрування криптограми:

ЯК ДИТИНОЮ, БУВАЛО, УПАДУ СОБІ НА ЛИХО,

ТО, ХОЧ В СЕРЦЕ БІЛЬ ДОХОДИВ, Я СОБІ ВСТАВАЛА ТИХО.

ЩО БОЛИТЬ? - МЕНЕ ПИТАЛИ, АЛЕ Я НЕ ПРИЗНАВАЛАСЬ.

Я БУЛА МАЛОЮ ГОРДА - ЩОБ НЕ ПЛАКАТЬ, Я СМІЯЛАСЬ.

Бачимо, що частота літер в тексті (надто - короткому уривку) може не співпадати з табличною. Дуже допомагає пунктуація , якщо розставлені проміжки між словами, то найкраще починати з коротких слів:

на одну літеру - а, в, є, з, і, й, у, я;

-на дві - бо, ви, га, де, до, зі, їх, їм, її, ми, на, не, ні, ну, ой, по, те, ти, ті, це, ця, що, як, яр;

на три (часто вживані) - або, але, вам, нам, ого, під, при, про, там, так, щоб; і так далі.

Розкриття хоч двох-трьох слів значно спрощує задачу - можна далі опиратися на відомі літери та контекст. Добре, якщо відома (хоч приблизно) тематика тексту - розшифрувавши, наприклад, «інтеграл», можемо шукати «експонента», «функція». тощо.


.1.2 Програми до параграфа (редактор VВА)

Програма шифрування простою заміною-зсувом:

Sub Pr_zam()(4).Activate(4).Name = "Pr.Zam"= Worksheets(4).UsedRange.Rows.Count + 1//визначає номер 1-го

// незайнятого рядка на листі №4Mesg As Variantkey As VariantCryptg As VariantU_alf As VariantLen_mes As IntegerLen_alf As Integer_alf = "абвгдеєжзіїийклмнопрстуфхцчшщьюя_ абвгдеєжзіїийклмнопрстуфхцчшщьюя_"= InputBox("Введіть повідомлення")//приймає повідомлення = CInt(InputBox("Введіть ключ"))//та ключ_mes = Len(Mesg)_alf = Len(U_alf) / 2= Mesgk As Integeri = 1 To Len_alf= i + keyk > Len_alf Then= k - Len_alfIfj = 1 To Len_mesMid(Mesg, j, 1) = Mid(U_alf, i, 1) Then(Cryptg, j, 1) = Mid(U_alf, k, 1)// замінює малуMid(Mesg, j, 1) = Mid(U_alf, i + Len_alf, 1) Then(Cryptg, j, 1) = Mid(U_alf, k + Len_alf, 1)// чи великуIf// літеру повідомлення №і за If//алфавітом на №і+k за алфаітомji(R, 1).Value = "Отримане повідомлення"(R + 1, 1).Value = "Ключ"(R + 2, 1).Value = "Шифроване повідомлення"(R, 2).Value = Mesg//записує повідомлення(R + 1, 2).Value = key//ключ(R + 2, 2).Value = Cryptg//та криптограму в діапазон

// В(R)-В(R+2)(Cells(R, 1), Cells(R + 1, 2)).Hide//приховує повідомлення та //ключ( "Обробленене повідомлення: " & Cryptg) //виводить зашифровне

//повідомлення Sub


Зауваженя 1. Ця ж програма може бути використана і для дешифрування повідомлення, якщо подати -k (mоd n) в якості ключа.

Зауваження 2. Якщо замість алфавіту ввести ключову фразу або набір деяких символів, отримаємо програму для шифрування неалфавітною заміною.

Програма, що зсуває шифртекст по алфавіту:

Sub Zam_vzl()(4).Activate= Worksheets(4).UsedRange.Rows.Count + 1Mesg As VariantCryptg As VariantU_alf As Variantkey As Integerk As IntegerLen_mes As IntegerLen_alf As Integer_alf = "абвгдеєжзіїийклмнопрстуфхцчшщьюя АБВГДЕЄЖЗІЇИЙКЛМНОПРСТУФХЦЧШЩЬЮЯ"= InputBox("Введіть повідомлення")//приймає шифртекст_mes = Len(Mesg)_alf = Len(U_alf) / 2(R, 1).Value = "Отримане повідомлення"(R, 2).Value = Mesg(R + 1, 1).Value = "Ключ"(R + 1, 2).Value = "Оброблене повідомлення"(R + 1, 4).Value = "Ключ"(R + 1, 5).Value = "Оброблене повідомлення"key = 1 To Len_alf//перебирає ключі по алфавіту= Mesgi = 1 To Len_alf= i + keyk > Len_alf Then= k - Len_alfIfj = 1 To Len_mesMid(Mesg, j, 1) = Mid(U_alf, i, 1) Then(Cryptg, j, 1) = Mid(U_alf, k, 1)Mid(Mesg, j, 1) = Mid(U_alf, i + Len_alf, 1) Then(Cryptg, j, 1) = Mid(U_alf, k + Len_alf, 1)IfIfjikey < Len_alf / 2 + 1 Then//виводить таблицю(R + 1 + key, 1).Value = key//ключ(R + 1 + key, 2).Value = Cryptg//відповідне значення //криптограми(R + 1 + key - Len_alf / 2, 4).Value = key//в два стовпці(R + 1 + key - Len_alf / 2, 5).Value = CryptgIfkeySub


Програма для обчисленя частот літер (редактор VBA):

Sub TABLE()(2).Activate(2).Name = "TABLE"Mesg As VariantU_alf As VariantLen_mes As IntegerLen_alf As Integer_alf = "абвгдеєжзіїийклмнопрстуфхцчшщьюя АБВГДЕЄЖЗІЇИЙКЛМНОПРСТУФХЦЧШЩЬЮЯ "= Cells(37, 1).Value_mes = Len(Mesg)_alf = Len(U_alf) / 2k As Integerm As Integeri = 1 To Len_alf//для кожної літери алфавіту= 0//підраховує кількістьj = 1 To Len_mesMid(Mesg, j, 1) = Mid(U_alf, i, 1) Then= k + 1Mid(Mesg, j, 1) = Mid(U_alf, i + Len_alf, 1) Then= k + 1IfIfj(i + 2, 1).Value = k / Len_mes//та обчислює частотуii = 1 To Len_alf//для кожної літери алфавіту= Cells(i + 2, 1).Value * Len_mesl = 1 To Len_alf= 0//підраховує біграмиj = 1 To Len_mes//з кожною літерою алфавітуMid(Mesg, j, 2) = Mid(U_alf, i, 1) & Mid(U_alf, l, 1) Then= m + 1Ifjk > 0 Then(i + 2, l + 3).Value = m / k//та обчислює частоту (або //існування) біграм(i + 2, l + 3).Value = "X"Ifli//виводить дані в таблицюSub


.1.3 Приклади і завдання до параграфа

1. Написати програму, що шифрує шифром заміни - зсуву або афінним. Передбачити можливість зміни ключа для кожного повідомлення, з її допомогою зашифрувати (розшифрувати) наступні фрази:

а)Життя_любить_того_хто_за_нього_бореться_а_нищить_того_хто_йому_піддається. Ключ: г

б)Била_жінка_чоловіка_пішла_позивати_присудили_чоловікові_ще_жінку_прохати. Ключ: т

в)Хщеемнцоюбгбеюунтямнйодемнонцотбрсунтямнеугвчаамн Ключ: н

г)Лгю_свшюрждщюпимрілмщючмювмбмоіючгрілмщ Ключ: ю

д)Яскїхс_їшиїяицщїсїхюуду_жїчицщ Ключ: ї

. Написати програму що шифрує шифром заміни, замінюючи кожну літеру іншою (або деяким символом), обираючи її в неалфавітному порядку. З її допомогою зашифрувати (розшифрувати) наступні фрази. Порядок літер: гейхлопцінвсюакуш_фїжзищєтьсябрдчм.

а) Цілував_би_заєць_кобилу_та_високо Ключ: 3

б) Унадився_журавель_до_бабиних_конопель Ключ: 12

в) Трбаєіюлирєівслолігьіежуц Ключ: 25

г) Удкєйфрщьщябфпдопгфвнзфзщьщфикхійгф Ключ: 1

д) Яїабдєусуопцідоїабдиджиєущпдщуцуопцід Ключ: 14

. Написати програму, що аналізує уривок шифрованого тексту, зсуваючи його по алфавіту. З її допомогою розшифрувати наступні повідомлення:

а) Єб, и жєгю щаїє - іацаїп ьтбмав. Іацаїп ієую, нч б дєзхтш, оч б еющвтда мчуазсш - ує фюе ьтбмав. (збережена пунктуація і проміжки між словами);

б)Їецічцьїйвцлчцецаяіпвцаімлуцчциїивюцьїйїфцхйїзцюїждіїфцєїбчєдцеюмлу. (пунктуація опущена, проміжки замінені символом).

. Написати програму, що аналізує уривок шифрованого тексту, обчислюючи кількість повторень кожного символу, та повертає таблицю частот. З її допомогою розшифрувати наступні повідомлення:

а) Щ коаїя єїяпїз лбп - пмгбя вмцмєх гпбф кмугхцпо юо вілюо х єїьо внбеїпо. Х щ, вцїьбяопїз нопжбг уонхупїг, любф, о єонх - юїлщах юоьїи логїи, щь щ. Х ьбшпбгі абнб нхюо х шонр вбцїнї, х я ьбшпбдб я баои дбцїюр нфкбях шоц. Х внмах, щь бєїп, єбєбні ялх лиїнїнї, гбя єояїюр ялхи бєїп щьїзлр люцо'пїз ющдоц. (збережена пунктуація і проміжки між словами);

б) Ой 'гуг' єгмс: '-'г улйп - цал йусмл, фгмк ьгойп; дцфг 'кюкфг, мдуфг цусрг. Мп юляфж тдфік, мп 'гаїщрг, адфп тядояз тдєл алйп. Фг мдуфлш йусмл мдуфпш цсє, ой цдєупш адвф-аляудющє, актз чдтьгрюлюпш, дєрдулюпш, тядвяз фг йусмл чдякьфлюпш. Йдьс є тйг'гяп атк? Йдьс є? Мдьс х яг йусмг фгаптг? Мдьс юпи мкєку яг удтг юкхгяз фг тнпюл дцпфдйд, л тядаєсу, тчгюкфпш аптдйд, ой ькм, аалрфгато а фкєктг? . (збережена пунктуація і проміжки між словами);

в) Вйзфбнтшуфб-нтштзф,бїтмкф,бюцзф,бікчю_уупюбекфзф,бшціфзфбян_ияц.бнчуфбзти_зфбрйияч,бючнбшичбякцзф,бєфбут'бншз_мб-бші_нйл_хбіифдяц.бнштбчгцзч,бйштбєфечючу_зч,бєтзтуцобдйю,бнтштзфпбзйуф.бші_нфзчбншт,бшю_пзчшщб_бвкцу_зч,бфбпбзтгфзфбрнчкфбобшфючиуф. (пунктуація збережена, проміжки замінені символом);

г) Йд щрхво 'и йд ьзпдрх йд щрхво цфи чс ід рм еклмотх йжиш впдрх летх йжиш впдрх иім йжиє ипрм їмьюос йсїс рс їепс щхжйфх рх чмя щсльм мром гипдйдлейю ьзпд мром тигхйдлейю ьзпд пиїфм ьхктхжм я щьм кюинипрм екс пьш йсїс ищсфх нхє кйсцд м адйд кцмодйд йфсїх тигхйд кцмодйд йфсїх ньшпд а рс цфикцд їи йд рх щсльм ьзпдрх м гиісо йини ід рм еклмотх йжиш впдрх летх йжиш впдрх иім йжиє ипрм (пунктуація опущена, проміжки збережені);

д)Ьщїкїщйгзехйчхйіем_хйа'уллуйїайцйїщнщ_мйчщ'лмйшасаїмйфхйїайїмбйзйцмстйчйьаса'уллуйн_аехлзїкйеасагупйсуїмйлуйвйіафзйб_ушкй'скашхй'еувїх'кй'щ_щгйсхімй'нучмїхйну'луйощшйлмгупйїмбхй'нагучмїх'кйцхїхйіафзйьщїкйгзехй'зелуйвйлмйчоаьуей'зелуейнщ_щсашуйозгзй'увїкйом_чх'їуйбчуїбхйозгзй'увїкйбчуїбхйлмйеа_ашуйозгзйсхїкйлмйлхій'скашхйьу_буйуйчугй'сушйїхійьм_вфхій_ашїмлщйїмйба_мйскагачмвйеурлмйеацщйбчуїхйшуєгзїкй_йуйлм'їмлщйящйєйгсвйещлщйчщ'щсмйчщ'лм (пунктуація опущена, проміжки замінені символом).

1.2 Шифр перестановки


.2.1 Опис та криптоаналіз

Шифр перестановки, або транспозиції, полягає в зміні порядку елементів відкритого тексту. Прикладами шифру перестановки є вже згадана вище „Сцитала - тест писався на смужці пергаменту, намотаній на жезл-сциталу. Знятий, такий „лист являв собою незрозумілу послідовність літер. Або, наприклад, „поворотна решітка - вирізана з цупкого паперу так, щоб чотирма поворотами її відкриті комірки покривали всю площину листа. Текст записувався (і зчитувався) кожного разу тільки у відкриті комірки.

Математично шифр перестановки описується наступним чином. Нехай Х=х1х2х3 …. хnхn+1хn+2… - відкритий текст, p Î Sn - шифр -перестановка. Тоді шифртекст має вигляд: fp(Х)= хp(1)хp(2) …. хp(n)хn+p(1) хn+p(2)….

На практиці це зручно робити з допомогою таблиці. Наприклад:

відкритий текст: НІЧ_ЯКА_МІСЯЧНА_ЗОРЯНА_ЯСНАЯ_Х


НІЧ_ЯКА_МІСЯЧНА_ЗОРЯНА_ЯСНАЯ_Х

після перестановки стовпців 34215: Ч_ІНЯ_МАКІЧНЯСАОРЗ_Я_ЯАНСЯ_АНХ

Це стовпцева перестановка. Тут символ Х в кінці додано для доведення кількості літер до числа, кратного кількості стовпців. У такому випадку можна застосовувати найпоширеніші або, навпаки, неймовірні сполучення, щоб ускладнити процесс розшифрування. Взагалі кажучи, для перестановки по 5 елементів існує усього лише 5!=120 варіантів ключа, тому можна обійтися і простим перебором- якщо ми певні, що використовувалась саме 5-перестановка. Інакше потрібно перебрати усі 2-, 3-, 4-. 5- і так далі перестановки. Більш ефективною є атака з використанням таблиці 1.2 частот біграм. (Нас буде цікавити не стільки частота, скільки можливість існування буквосполучення).

Наприклад: маємо шифртекст: НОІПВВОІЧ_ _ _АГЮЮЧКЕАА_ОСВ

Три проміжки підряд вказуть на те, що, швидше за все, була застосована перестановка. Взагалі можуть мати місце різні варіанти, для криптограми з 25 символів спробуємо спочатку найпростіший - перестановку з 5 елементів.

Для розшифровки записуємо знову в таблицю:


НОІПВВОІЧ___АГЮЮЧКЕАА_ОСВ

та аналізуємо, користуючись таблицею частоти біграм. Причому легше спиратися не на найпоширеніші буквосполучення, а, навпаки, спочатку виключити неможливі поєднання. Почнемо з 4 та 3 рядків, оскільки вони містять більше «не популярних» літер. Таблиці ймовірного передування для них мають вигляд:


12 ЮЧКЕАЮХХХХХЧ Х КХХХ Е Х А Х

12 __АГЮ_ХХ _ХХ А Х Г ХХЮ ХХХ

Тут першою йде літера, що стоїть на початку рядка. Знак Х позначає неможливі сполучення. Разом - таблиця можливих передувань стовпців:


12 123451ХХХХХ2ХХ 3ХХХ 4 ХХ5 ХХХ

23451ОІПВНОІЧ_В_АГЮ_ЧКЕАЮ_ОСВА

Бачимо, що стовпець №1 не може передувати жодному стовпцю, отже, він - пятий.

Стовпцю №1 може передувати №4 або №5, але в першому випадку утворяться неможливі біграми ЧВ, ПН. Отже, на четвертому місці - №5. Стовпцю №5 може передувати №2 або №3, але якщо це №2, то в третьому рядку отримаємо слово _Ю_. Отже, на третьому місці - №3.


24351ОПІВНОЧІ_В_ГАЮ_ЧЕКАЮ_СОВАОтримали осмислений текст: ОПІВНОЧІ_В_ГАЮ_ЧЕКАЮ_СОВА.

Підстановка, що використовувалась для шифрування - 51324.

Аналогічно розшифровується шифр стовпцевої та рядкової перестановки. За сумісністю літер відновлюємо порядок стовпців, за змістом - порядок рядків.

Слід зауважити, що застосувавши до тексту шифр простої заміни (після або перед перестановкою), ми одразу зробимо цей метод аналізу значно менш ефективним. Хіба що для відновлення можливого розташування пропусків, і то у припущенні, що вони були збережені при шифруванні. З іншого боку, переставлені символи не дадуть змоги відновити слова за контекстом та вже відкритими літерами. Тобто поєднанання двох навіть найпростіших методів шифрування значно підвищує стійкість шифру. Тому як ми побачимо далі, це широко застосовується в криптографічній практиці.


.2.2 Програми до параграфа (редактор VBA)

Програма шифрування перестановкою:

Sub Perest()(1).Activate(1).Name = "Perest"= Worksheets(1).UsedRange.Rows.Count + 2Mesg As VariantTableM(5, 5) As VariantCryptg As VariantPer_st(5) As IntegerPer_rd(5) As Integer= InputBox("Введіть повідомлення")(R + 1, 7).Value = Mesgi = 1 To 5//вводить 5-перестановку_st(i) = CInt(InputBox("Введіть елемент перестановки №" & i))j = 1 To 5(i, j) = Mid(Mesg, (i - 1) * 5 + j, 1)(R + i, j).Value = TableM(i, j)//записує текст в таблицюjii = 1 To 5(R, 7 + i).Value = Per_st(i)j = 1 To 5(R + j, 7 + i).Value = TableM(j, Per_st(i)) //переставляє стовпціjii = 1 To 5(R + i, 14).Value = Per_st(i)j = 1 To 5//переставляє рядки(R + i, 14 + j).Value = Cells(R + Per_st(i), 7 + j).Value/ji= Mesgi = 1 To 5j = 1 To 5//записує текст в рядок(Cryptg, (i - 1) * 5 + j, 1) = Cells(R + i, 14 + j).Valueji(R + 2, 7).Value = Cryptg//повертає криптограмуSub

Програма, що повертає таблицю сумісності літер в рядку:Sub Tabl_bigr()(1).Activate= Worksheets(1).UsedRange.Rows.Count + 2Mesg As VariantTableM(5, 5) As VariantU_alf As VariantStovp As VariantNum_lit(5) As IntegerLen_alf As Integer= InputBox("Введіть повідомлення:")(R + 1, 7).Value = Mesg_alf = "АБВГДЕЄЖЗІЇИЙКЛМНОПРСТУФХЦЧШЩЬЮЯ_"_alf = Len(U_alf)i = 1 To 5j = 1 To 5(i, j) = "-"//попередньо заповнює таблицю - (R + i, j).Value = Mid(Mesg, 5 * (i - 1) + j, 1)jik As Integerk = 1 To 5//обирає рядок в таблиці= Mid(Mesg, 5 * (k - 1) + 1, 1) & Mid(Mesg, 5 * (k - 1) + 2, 1) & Mid(Mesg, 5 * (k - 1) + 3, 1) & Mid(Mesg, 5 * (k - 1) + 4, 1) & Mid(Mesg, 5 * k, 1)i = 1 To 5j = 1 To Len_alfMid(Row, i, 1) = Mid(U_alf, j, 1) Then_lit(i) = j//визначає місце літери в алфавітіIfji(2).Activatei = 1 To 5//перевіряє, чи зустрічається такеj = 1 To 5//поєднання літерCells(Num_lit(i) + 2, Num_lit(j) + 3).Value = 0 Then(i, j) = "X"//якщо ні, то вставляє „ХIfjik(1).Activatei = 1 To 5j = 1 To 5//виводить таблицю(R + 1 + j, 7 + i).Value = TableM(i, j)jiSub


.2.3 Завдання до параграфа

1.Написати програму шифрування перестановкою. Передбачити можливість зміни ключа (перестановки) для кожного повідомлення. З її допомогою зашифрувати:

а) БАЧИЛИ_ОЧІ_ЩО_КУПУВАЛИ_ЇЖТЕ перестановка 21453 - тільки стовпці;

б) ІЛКУКОВ_СЄЛО_БОХ_ТОВТИАЛЬ перестановка для розшифруваня 34215 - тільки стовпці;

в) НЕ_ВСЕ_Ж_КІШЦІ_МАСЛЕНИЦЯ_ перестановка 14253 - стовпці і рядки;

г) _ОТІ_А_МД__ЕНІБГМА_ЕМН_АС перестановка для розшифрування: 54132 - стовпці і рядки;

д) МТРІОЗЯК__О_САЬВОДХИВИММ_ перестановка 42351 - стовпці і рядки.

.Написати програму, яка за таблицею біграм повертає таблицю сумісності літер. З її допомогою розшифрувати текст, зашифрований шифром перестановки: кодування криптоаналіз шифр ключ

а) ЕРТЩ_ТП_ЕІВ_ІІНЕПСН_ВИЛІА;

б) ЬКИТНОЕ_НКІЮ_ВКУШ_ККЗУРИУ;

в)Т_ХНОЛВА_ИОИВ_Д_ОВРГЛУІ_К;

г) ЛБХІ_ІЬСЛ_ЖАЇ__РВПАД_ІУРЖ;

д) ЇОА_НЕР_ЧГ_МСМІНВВИОІКІВШ

е) ЛМ_ААГБАІЛАВОПЛИ__МШЦЯ_ЙЕ

є) _АЛИЄДЗУБ_ЯС_ЯТНСЯ_ЕПААД_


1.3 Багатоалфавітні шифри


.3.1 Шифр Віженера

В п. 1.1. ми познайомились з шифром простої (одноалфавітної) заміни і побачили, що він досить просто розкривається через порівняння частот літер шифр- та відкритого текстів. Аби ускладнити цю задачу, застосовуються шифри багатоалфавітної заміни, коли одна й та сама літера може замінятися різними - в залежності від свого положення в тексті. Класичним прикладом є шифр Віженера. Математично він може бути описаний так:

i= xi + kj (mod n), i=1,p;=i (mod m).


Тут, як і в п. 1.1., xi - символ відкритого, yi - шифрованого тексту, n - кількість літер в алфавіті, p - довжина повідомлення; kj - символ ключа, m - довжина ключа.

Шифрування відбувається наступним чином: під відкритим текстом підписують ключове слово або фразу, і замінюють кожну літеру, зсуваючи її по алфавіту на кількість позицій, визначену номером ключової букви. Наприклад, зашифруємо текст „В_сутінках всі_кішки_сірі з ключем „шмат:

Записуємо в таблицю алфавітні заміни-підстановки, визначені літерами ключа, на зразок „й-підстановки, наведеної в п.1.1. Літеру відкритого тексту знаходимо в 1-му рядку замінюємо на літеру з підстановки 1-шої букви ключа, наступну - 2-гої, потім 3-тьої, 4-тої і знову 1-шої, і так далі. Тобто тут маємо справу не з одним шифром заміни, а 4 одночасно. Отримана криптограма: „Юмтинцовщжахмцавдїлашгїзд


.3.2 Криптоаналіз шифру Віженера

Хоча шифр Віженера складніший за просту заміну, за наявності досить великого уривку тексту він також піддається криптоаналізу. Якщо є припущення, що використано саме шифр Віженера (це визначається шляхом статистичного аналізу текста), то для розкриття шифру перш за все потрібно визначити довжину ключового слова. Для цього скористаємося тестом Казіски - його ідея полягає в тому, що однакові уривки тексту, потрапивши на ту саму частину ключа, дадуть однакові елементи в криптограмі. Ймовірність появи схожих елементів випадково досить мала, тому можемо припустити, що довжина ключа m є найбільший спільний дільник відстаней між ними. Для уточнення значення m скористаємось індексом співпадіння - ймовірністю того, що в рядку осмисленого тексту 2 навманя вибрані літери співпадають. Ця величина була введена Фрідманом в 1920р.

Теорема 1.3.1. Для алфавіта Х={х1, х2,… хn} індекс співпадіння обчислюється за формулою


(1.3.1)


де рі - ймовірність появи літери хі в осмисленому тексті.

Маючи певне припущення щодо довжини ключа, розписуємо текст на відповідну кількість стовпців, та визначаємо частоту літер у кожному з них. Якщо m підібране правильно, то частоти літер, а, отже, і ІС, співпадатимуть з частотами літер і індексом відкритого тексту. Для текстів українською

ІС ?0,052.

Інакше - ІС наближатиметься до індексу співпадіння для випадкового набору букв, для української мови ?0,03.

Далі, визначивши точну довжину ключа, спробуємо його підібрати. Для цього для пар стовпців (1,2), (1,3), (1,4) і т.д. обчислюємо індекс взаємної сумісності МІ (У12) - ймовірність співпадіння пари навманя вибраних літер в рядках тексту У12. Якщо У12 написані одним алфавітом Х, то величина МІ (У12) ? ІС для звязних текстів, інакше - прямує до випадкового значення ІС?0,03.

Теорема 1.3.2. Для рядків У12 алфавіта Х={х1, х2,… хn} взаємний індекс співпадіння обчислюється за формулою


(1.3.2)


де рі1, рі2 - ймовірність появи літери хі в осмисленому тексті у відповідному рядку.

Тобто, орієнтуючись на найбільші (або, навпаки, найменші) частоти застосованих літер, намагаємося «зсунуи» підстановку одного рядка відносно іншого так, щоб взаємний індекс співпадіння ? 0,052. Після цього залишається тільки визначити зсув 1-го стовпця відносно алфавіту.

Зауваження. Цей же спосіб придатний і для одноалфавітної підстановки - з допомогою ІС впевнюємося, що застосована одноалфавітна підстановка, з допомогою МІ обчислюємо величину зсуву.

Для ефективності вказаного методу аналізу бажано мати досить довгий уривок шифртексту, аби частоти літер в ньому наближались до статистичних.

Наприклад, маємо криптограму:

лцоусж_нтвяєснїьїхєтізце_мігюфіусбіібгоисрмтбсоетвшбсрмтбсоетвгищгічїюїтісії_шмтгсьшсфхяьвщгпеїї_вйтдзстхурксхзьблутдзідеїчусйім_піьчвгагвйасд_ччхмтбгьуілідеііігцяечвпук_фєфгчшсжтїрвгасїіх_єїчтіііїжіяспїцюфязтхттзхьумррнївфужціеюїіїтнмтщляїрвйасєьугсяеювйасичушхмтвгяадціютвфзенічевюдчуяястмзчжіхюьчагвюеепієцршцевщз?ю_тївцєпвлаілчисрмтбллуахмтзошхтпттрніфтєчєгвщз_хтквлігпжттьррї_отірвюхюжфасфхпеитетвиг_фхусцісбссіовяяінттфйлїтніищзіечвюїтехшдлутдйфагвщз_мчсфвщз_фзцївдаулхазхісблцтцгьиахмтрвчшьетмбгіжжсцєфозї_вбєіййтзнїютхттжйгтюямтігфиспїзїфжтьрїрсямтюиіечпшхвбяасйіцжлвссичупвешсціієсйаін_теріїтпіі_жтїовяусдрчдгімїуї_йгім_вчусф_чювиивгіхерїтбсхастьєьвскдйутцерзсхшчювзтзгцшскбуфвфєвліцжлвпбгіетввх_ряужвщєфзпг_вгасуйувгідтхттігфтдгііедртбсюасбфтьглюфсчавліжевуєхсічїюртігіхюріьчвсбсбфтжйле_міі_ріясжшіюв_тдлбтювйажйютігцтдгінєсьамйіхерїтщвюхеаіч_хтеївкєццйувгіїтвйьчвутзцюяцфєвївиуфлхусь_ьївиєуумеллбусїії_пімтфшдсешрфгхусиїтбцьвївпусхмг_щжтьгідчї_тффмтдíфєвліїевйтдлбтювщєфзхєзб:тз_шцежчясфтї_міфев_меуїтяеіїевяшсжтїрвутдгіееєттьйщрошірвртжспигцічюмдгев_тлцьуяеівеоттщв_тхутлрвйаулхєз_іете_ізбіясь_зткйетвюїтоїтдгіжеуртісіжеожф_оїіовбгетвшфйідту_ірвцєхоттувхамзізтжрї_вцуізьясешеевчусхмтавпуйславсюпсфщєлгявївкз_щєвевщямсйтілцтлгюєгв_тєсбяцвщєєйлзефяувліхчуиасйічюегуінїтєушткзіхсф_чювцєщотхевитювчшсфхяцвїгчвотггьизбіїтнібеєштлзфувгіїтнртвйяусслетвщшжзиивгіеюншдївчясу_в_вчшсюхруцйувгіудйіетвфєхсібссфєгвчшсемгтвкз_щєвевотфйчтгйьсфвчшсхрщпвцяжншрсеіь_хяясю_втеічеушцївчшстьсгціхюріетушч_еюсстрчсхївеаіююуфєпвеєсяшіовйтццдясжйєяошірвуєгціхюжіїеєштбллуффєтузьшхгічевяєхсігпдтхсжшіігяєбвртваиафвщязррткзісбвювтїрдевйяжцйуіліхсдшцтвртєушчтеїї_влимціітхїею

Аналізуючи з допомогою програми, бачимо:


уривокмтбтбсетвмтбтбсетвї_ввйакількість44844845уривокіїтїтніхювщзіхювщзвліірвкількість54444454довж повід1661уривокетв3 місця48604007001112114413561400

найчастіше (8 разів) зустрічається уривок „етв - на 48, 60, 400, 700, 1112, 1144, 1356 і 1400 позиціях. Найбільший спільний дільник - 4, швидше за все, ключове слово містить 4 літери. Розписуємо шифртекст на 4 стовпці:


лцоусж_нтвяєснїьїхєтізце

і т.д. Отримаємо 4 уривки, кожен з яких зашифровано відповідною підстановкою:

)лстсїі_юсбсбтсбтщїі_гсьп_дхсбдес_чгсчбіегчкфсрс_тїсютзмїжютщрсгюсшвдтеечсчюгеце?їпісбазтртг_впь_рюсет_сбоіфтщчтддг_ф_їузбцарьбжф_ізтжюісїьсючвсжспсєіет_осдїй_сювебсьдцсюзсфвжбт_жф_свтідебсьфвехїіючсж__сюдюжідємеще_їцвтчзцїфсїулс_тсфсбїс_ьчфдведюфззес_ееяесрдеьрржгюеляещхрузтзстттдеіе_оефтрхумт_ісесайвслї_емілгєцєевчсюієксющеюсцчгзтелвтвстжвюїс_сувдтхсгст_ефгфспжс_стеїсгют_ссеюпсоцсяргюебфухехпсібвфзкбтежістєт_мт; 2)цжвнхзмфбгрсврсвгюсшсфвевзухлзїйпввдхгліцв_гжвїєіжпфххрвцїнлвєсвихгцвнвутжьвпрвюввлрлхопнєвхлжровжфивфцсвнйнзвелйвмвфвлхлгхвегсовйнхйягпфряипбйливцснрпжвдгугвфвгрствйехвгквллгврвзвугхггдсбгслвсюгрвбймржвлвйггсйрвахвцгввцфвльвулїпфегицвхщгїфíлвлвзб_жфмвуевжвгєйовсцмвцеовувл_ебьквогусоовтйувовзжвзевхвссфгвщвслгвсвйфлуйенузфвоввфввгбнєзгнйсвзгнвувюцгйвссвевщвййвхвнехюеувтцруетхаувявцжовцжєлфзгвсджгваврзвївцлдвуевцх;

)о_яїєціііомошмогіїімьхщїйсрзуічіігй_мьііяпфчтгіїііїятьрфіімяйьяйчмяіфіюямічюішщ_цлчмлмштічщтітртюфхтихісятлііюхуфщчщздхіцьмчтіцзбйїтгмфїжїмішяівчеій_іітяріїіч_иіїхьсуршзцбфівівящпгйітфірюфлчіуіріісфлііш_бйюціьіїюіткйійуюєих_имбіішшхїьпмжі_мфійбщх:шчті_їіятуітщшрпід_ьіт_тйхі_і_йюїіріжїбві_цтхірцьшчмплющякєщйцю_бщляіиігїші_цтичхїоьіішфірялщиішч_чхйііфіфчмкєочьчрцшія_ішчьіішюрїіфешйдйшуіішлєьіяітшярищріюрййішршїлії;

)унєьтегуіитебтеичтїтшягїтткьтдумьаачтудіеуєшїахчіяцзтунуеїтїауеаутаюзчдязхаеєцзтєаитутхтфєзкгтїіхапегусіятїиеїштазсзцааститшмжєїєтютттизтртехацсушіатїіїучм_мучихтаєктзчтшуєцпехуєгаудттітатюажєчтхьбтеіяіттаттнахтхчеєуїьтявууьєеуїмдрутвугтдттєїттєєтцяїфмтїшїтетітичгтувттлаєеіязеїтжтжфігшдієтазїуяеутуапєвзвяттєтяєзухачуттхчєхтшягтиїбтуїтуешиедявшрууеєбєшгзвттсшщярьявчцшсхечсчвюєєітяєієхїтутшчєгхієтаятсвдяухцтчїиіе.

Для кожного окремо проведемо частотний аналіз:


частина 1частина 2частина 3частина 4частоталітерачастоталітерачастоталітерачастоталітера0,0072а0,0072а0,0000а0,0602а0,0386б0,0169б0,0169б0,0096б0,0386в0,2265в0,0096в0,0241в0,0337г0,0795г0,0145г0,0265г0,0361д0,0120д0,0072д0,0217д0,0843е0,0361е0,0048е0,0554е0,0145є0,0145є0,0120є0,0723є0,0289ж0,0337ж0,0072ж0,0096ж0,0289з0,0313з0,0096з0,0337з0,0410і0,0048і0,2048і0,0434і0,0386ї0,0145ї0,0482ї0,0554ї0,0000и0,0120и0,0193и0,0265и0,0048й0,0434й0,0458й0,0000й0,0072к0,0048к0,0072к0,0072к0,0145л0,0554л0,0241л0,0024л0,0120м0,0120м0,0410м0,0145м0,0000н0,0313н0,0000н0,0072н0,0096о0,0265о0,0145о0,0000о0,0169п0,0193п0,0120п0,0072п0,0265р0,0361р0,0410р0,0096р0,1470с0,0554с0,0096с0,0193с0,0843т0,0120т0,0506т0,1880т0,0145у0,0386у0,0169у0,0843у0,0386ф0,0410ф0,0361ф0,0072ф0,0169х0,0482х0,0313х0,0410х0,0193ц0,0410ц0,0265ц0,0193ц0,0289ч0,0000ч0,0482ч0,0410ч0,0024ш0,0024ш0,0554ш0,0361ш0,0145щ0,0072щ0,0313щ0,0024щ0,0193ь0,0072ь0,0337ь0,0169ь0,0530ю0,0120ю0,0313ю0,0096ю0,0072я0,0072я0,0434я0,0434я0,0000_0,0000_0,0000_0,0000_

Обчислюємо ІС1=0,055, ІС2=0,081, ІС3=0,068, ІС4=0,071 - довжина ключа підібрана вірно. Індекси взаємного співпадіння

МІ(1,2)=0,025, МІ(1,3)=0,029, МІ(1,4)=0,039

вказують на наявність зсуву алфавітних підстановок відносно одна одної. Бачимо, що в першій колонці значно більшу частоту, ніж інші, має „с, в 2-гій - „в, в 3-тій - „і, в 4-тій - „т. Сумістимо ці літери в таблиці:


частина 1частина 2частина 3частина 4частоталітерачастоталітерачастоталітерачастоталітера0,0072а0,0120м0,0169у0,0096б0,0386б0,0313н0,0361ф0,0241в0,0386в0,0265о0,0313х0,0265г0,0337г0,0193п0,0265ц0,0217д0,0361д0,0361р0,0482ч0,0554е0,0843е0,0554с0,0554ш0,0723є0,0145є0,0120т0,0313щ0,0096ж0,0289ж0,0386у0,0337ь0,0337з0,0289з0,0410ф0,0313ю0,0434і0,0410і0,0482х0,0434я0,0554ї0,0386ї0,0410ц0,0000_0,0265и0,0000и0,0000ч0,0000а0,0000й0,0048й0,0024ш0,0169б0,0072к0,0072к0,0072щ0,0096в0,0024л0,0145л0,0072ь0,0145г0,0145м0,0120м0,0120ю0,0072д0,0072н0,0000н0,0072я0,0048е0,0000о0,0096о0,0000_0,0120є0,0072п0,0169п0,0072а0,0072ж0,0096р0,0265р0,0169б0,0096з0,0193с0,1470с0,2265в0,2048і0,1880т0,0843т0,0795г0,0482ї0,0843у0,0145у0,0120д0,0193и0,0072ф0,0386ф0,0361е0,0458й0,0410х0,0169х0,0145є0,0072к0,0193ц0,0193ц0,0337ж0,0241л0,0410ч0,0289ч0,0313з0,0410м0,0361ш0,0024ш0,0048і0,0000н0,0024щ0,0145щ0,0145ї0,0145о0,0169ь0,0193ь0,0120и0,0120п0,0096ю0,0530ю0,0434й0,0410р0,0434я0,0072я0,0048к0,0096с0,0000_0,0000_0,0554л0,0506т0,0602а

За індексами взаємного співпадіння (індекси вгорі позначають величину зсуву):


МІ(1,2-18)=0,062, МІ(1,3 -11)=0,056, МІ(1,41)=0,059


бачимо, що зсув стовпців відносно 1-го підібрано вірно. Тоді набір літер в кожному рядку може бути ключовим; припускаючи, що ключем було осмислене слово, обираємо «світ» в 21-му рядку. Величина


МІ(алф,1-21)=0,05


Діємо тепер навпаки: у відповідному рядку знаходимо літеру криптограми і записуємо ту, що стоїть напроти у першому рядку.

Отримали звязний текст - припущення вірне. Закінчуємо розшифрування:

чужа_душа_то_кажуть_темний_ліс_а_я_скажу_не_кожна_ой_не_кожна_чужа_душа_то_тихе_море_сліз_плювати_в_неї_гріх_тяжкий_не_можна_і_чим_же_чим_ви_будете_карати_моє_смутне_зацьковане_дитя_чи_ж_вигадає_суд_і_магістрати_страшнішу_кару_ніж_таке_життя_ви_грамотні_ви_знаєте_латину_за_крок_до_смерті_перед_вічним_сном_одного_пр?шу_у_мою_дитину_не_кидайте_словами_як_багном_притихли_люди_знітилися_свідки_сльозина_блисла_у_якоїсь_тітки_відтак_уже_не_ставлений_ніким_прийняв_присягу_шибилист_яким_даруйте_я_незвичка_промовляти_хотів_сказати_річ_іще_таку_марусю_знаю_ще_із_немовляти_і_гриця_знаю_ще_у_сповитку_он_там_сидить_та_бідна_чураїха_чи_на_суді_була_вона_коли_проз_їхній_двір_тоді_я_саме_їхав_коли_грицька_на_цвинтар_повезли_чи_рвала_мати_так_на_собі_коси_як_задзвонили_по_його_душі_та_він_же_їй_як_рідний_син_і_досі_у_них_і_виріс_там_на_шпориші_вона_ж_свою_дитину_годувала_та_вже_й_сусідську_бавила_чужу_бобренчиха_ж_тим_часом_воювала_за_курку_за_телицю_за_межу_все_нíколи_то_в_них_і_повелося:_сьогодні_ситий_бо_учора_їв_то_те_дитя_й_на_ноги_зіпялося_і_розуму_дійшло_у_чураїв_коли_ж_у_гриця_вибилось_навусся_і_чураївна_стала_на_порі_то_полюбилась_хлопцеві_маруся_могли_б_лише_радіти_матері_воно_на_те_й_заходилось_спочатку_грицько_пішов_тим_часом_у_похід_попідростали_верби_і_дівчатка_про_це_в_суді_можливо_б_і_не_слід_але_ж_маруся_так_його_чекала_такі_літа_одна_перебула_нікому_ні_руки_не_шлюбувала_ані_на_кого_й_оком_не_вела_грицько_ж_він_міряв_не_тією_міркою_в_житті_шукав_дорогу_не_пряму_він_народився_під_такою_зіркою_що_щось_в_душі_двоїлося_йому_від_того_кидавсь_берега_до_того_любив_достаток_і_любив_пісні_це_як_скажімо_вірувати_в_бога_і_продавати_душу_сатані (Л.Костенко)

Стійкість шифру Віженера, як шифра простої заміни, можна підвищити, перемішавши літери перед шифруванням, тобто використовувати підстановки з неалфавітним порядоком літер. Тоді, навіть підібравши ключове слово, противник не прочитає криптограму, не знаючи застосованої підстановки; розкрити шифр можна тільки повністю завершивши частотний аналіз. Проте за наявності досить великого уривка тексту це можливо.


.3.3 Шифр Вернама та інші

Криптоаналіз шифру Віженера грунтується на періодичності застосованого ключа. Аби ліквідувати цей недолік, Віженер запропонував використовувати ключове слово лише 1 раз, а далі в якості ключа брати сам текст повідомлення.

Проте можливість для статистичного аналізу залишається і тут. Так як частоти літер в відкритому тексті і ключовому рядку однакові, то літера, наприклад, «а», зашифрована за допомогою «б», буде зустрічатися в криптограмі з частотою, рівною добутку частот а і б.

Отже, потрібно обирати ключ, що за своїми статистичними показниками відрізняється від відкритого тексту. Таку схему шифрування запропонував в 1918р. Г.Вернам. Його система шифрування обробляла літери, а двійкові символи, отримуючи криптограму шляхом операції ХОR (побітового додавання за mоd 2) відкритого «тексту» і ключа. Розшифрування відбувалося так само. Проте використаний ключ був хоча і довгий, але все ж періодичний, тому полишав можливості для аналізу.

Дж.Моборн запропонував в схемі Вернама скористатися ключем, згенерованим випадковим чином по довжині відкритого тексту. Цей шифр отримав назву смуги одноразового використання.

К.Шеннон, досліджуючи шифри, довів теорему про існування та єдність абсолютно стійкого шифру. Абсолютна надійність досягається використаням ключа, що є повністю випадковим, рівним за довжиною відкритому повідомленню та використовується тільки один раз. Порушення хоч однієї з цих вимог створює принципові можливості для розкриття шифру, хоча їх може бути складно реалізувати.

Бачимо, що шифр Моборна задовольняє умовам теореми. Результатом його застосування є випадкова послідовність, що не дає ніякої інформації про відкритий текст. Проте складність його застосування полягає в необхідності обміну ключами. Для цього по секретним каналам необхідно передати інформацію такого ж обєму, що і саме повідомлення, тобто шифрування стає, взагалі кажучи, недоцільним. Тому такого рода шифри надзвичайно рідко використовуються на практиці.


.3.4 Програми до параграфа (редактор VBA)

Програма для шифрування/дешифрування шифром Віженера:

Sub Wiziner()(3).Activate(3).Name = "Wiringer"= Worksheets(3).UsedRange.Rows.Count + 1Mesg As Variantkey As VariantCryptg As VariantU_alf As VariantLen_mes As IntegerLen_key As IntegerLen_alf As Integer_alf = "абвгдеєжзіїийклмнопрстуфхцчшщьюя АБВГДЕЄЖЗІЇИЙКЛМНОПРСТУФХЦЧШЩЬЮЯ "= InputBox("Введіть повідомлення")//приймає повідомлення= InputBox("Введіть ключове слово")//приймає ключ_mes = Len(Mesg) //встановлює довжину повідомлення_key = Len(key) //встановлює довжину ключа_alf = Len(U_alf) / 2Key_cfr(20) As Integeri = 1 To Len_keyj = 1 To Len_alfMid(key, i, 1) = Mid(U_alf, j, 1) Then//встановлює порядковий номер_cfr(i) = j//в алфавіті для кожної літери ключаIfji= Mesgk As Integerm As Integer= 0i = 1 To Len_mesi > (k + 1) * Len_key Then= k + 1Ifj = 1 To Len_alf= j + Key_cfr(i - k * Len_key)//визначає величину зсувуm > Len_alf Then//для літери повідомлення= m - Len_alfIf//замінює:Mid(Mesg, i, 1) = Mid(U_alf, j, 1) Then//малі літери - малими(Cryptg, i, 1) = Mid(U_alf, m, 1)Mid(Mesg, i, 1) = Mid(U_alf, j + Len_alf, 1) Then (Cryptg, i, 1) = Mid(U_alf, m, 1)//великі - малимиIfIfj//виводить:(R, i).Value = Mid(Mesg, i, 1)//літери повідомлення(R + 1, i).Value = Mid(key, i - k * Len_key, 1) //ключа(R + 2, i).Value = Mid(Cryptg, i, 1)//криптограмиi//в окремі комірки("Зашифроване повідомлення: " & Cryptg)(R + 3, 1).Value = Cryptg//криптограму цілкомSub


Програма, що підраховує кількість часто (більше 3-х) використаних k-грам в криптограмі:

Sub An_let()(3).Activate= Worksheets(3).UsedRange.Rows.Count + 1Mesg As VariantMesg_f As Variantlit_f As VariantLen_mes As Integerk As Integerm As IntegerLen_lit As Integer= Cells(R, 1).Value(Mesg)_mes = Len(Mesg)= 0j = 1 To Len_mes - 2= kl > 0//перевіряє, чи не зустрічався даний Cells(R + 1, l).Value = Mid(Mesg, j, 3) Then//уривок раніше= -1If= l - 1l > -1 Then//якщо ні, то= 0i = 1 To Len_mes - 2Mid(Mesg, j, 3) = Mid(Mesg, i, 3) Then//підраховує кількість таких= m + 1//уривківIfim > 3 Then//якщо > 3, то виводить= k + 1(R + 1, k).Value = Mid(Mesg, j, 3)//уривок(R + 2, k).Value = m//кількість("i=" & j & "m=" & m)IfIfjSub


Результати роботи програми показані в п.1.3.2


.3.5 Завдання до параграфа

.Записати програму, що шифрує та дешифрує шифром Віженера. З її допомогою зашифрувати (розшифрувати) фрази:

а) Реве_віл_на_сто_гір_на_сто_кроків_на_сто_потоків. Ключ: грім.

б) Сидить_дід_за_подушками_і_стріляє_галушками. Ключ: град

в) Сам_не_біжить_стоять_не_велить. Ключ: мороз

г) Мене_просять_і_чекають_як_покажусь_утікають. Ключ: дощ

д) Жлйтдфзалцшошайшьйштншйалцшлнчєуаезбмьтїмїза_ймї_филш Ключ: миша

е) МуувлгхьзофбдлшмєббежжлгхцооксоешвщКлюч: бджола

є) Цієфьрсьсфдрвчткешцфвюеерм Ключ: віск

ж) Тєрсйєуеуїбтейзвфндєрллаугрфжфймряцдшєчш_ег Ключ: дерево

.Записати програму, що аналізує текст, зашифрований шифром Віженера - визначає кількість та позиції однакових уривків, розбиває текст на вказану кількість стовпців, проводить частотний аналіз. З її допомогою розшифрувати текст, зашифрований шифром Віженера:

а)бьутлвтячрьчїь_тсвбєьшатмпрфн_дтьогпитдтщпфумврчгєцбчгдвеохямьрфн_ятіпбячюрьндітіпутіпбичєстжвбачуьїеоеяяддізьрімпбачрсцшєдтдезачидгисьвчсеуьоітмншвнотяяжрегнатїфрдгтрчзнрхлшитп_ьфшощуквтамьручєіїчядьївфєчкцтєодчцтгимьрїкфтучгдчшсжсчрьчїь_тьожхгєрннясїеозужвфєччсзирьїжжроиррдицгучрігиоезитдчнссїеохямф_тпвхаьоиєяьутш_цтквтємьрїшяд_чбьч_огшччгупвхаьоршпохиіпчтлвтячидгисьвчідмчрятьокєкєствбсбт_сіцоєєщвзучюрчиогпитдтщогуєбпхлнржкьрлеірчнааупогувжжїкшктгуцтььжєжь_тьжжумь_тсвбєь'пцшостмврфнсре_окєзвуяжостлпвтсвєїчяічео_ч_йрми_дхгицтйьзуаолижпотвпєєщшзвнотєчуіь_отяяжотвожяі'чрчнрїирьтквтємжрчшарвшццтсвєїчєстлгцзтжрешарїкфтучсдцибнтквщжш_яїеомєщощхшдяїеоюьноьчеоутзшжтгоезебціеохищпрїшоеєщшбптвфєчсьчсжутсвбєьшатуврїнєроиентїфбуябцтмпрхлфрьчсрггержгйдхчідїгсрхмфаїеозучгдчнасхчкдтсвєїчсжшчвхеио_єюврюїп_ч_ожїшсрешоазшмрггеітйддфнхрхедуумьрч_дцхиозучуцтмпвтьвгєчюре_оуєкжиен_дтюшбгцарімпутсвбєьшатжвєиччрч_дцхшодфяьєумьрєщуязшсрєщуязшсручгдїгархвнутівзивнаичюржиисхчбцрчвтх'нщиьпзачуцз_сстйдябтвутнойшєокулокєкєрячгяїшхроиозачддфейркииітьфжпч_ьічєдфгогучсдцибнтйдяе_езачбцтщжхичцрсчєдфгоеєчуцз_сяершреиеяїеогузнауьептсвєїчсязьпутлпвтяфєшьврхвнутїпржзфкшчюржгйдхчгдмьпбуьощучбядчшрми_дхгярешссзе_ятдезачгд_зьрбчясь_окєкєрми_дхгядхгостмфешкохуьп_твозєщвотщьзалнрхе_ддеожєщшржш_ялхостцоуазввгхожєщшрхе_ддесрфгугсжоутжжмупошшкуяенокєкєрхедууьоьюччцдзшрч_дцхиоєєваскнхрееаричгдхгєєячбсм_оєєвтдечбсфедсщчнре_оиєсжрфеєяіцогучгдггоиєсжрфеєяіцозязлаачсркшєьтжпшшчидгисьвчидзмогясвфєчбцтішфтйддїеойпитдтлясюшєятвтдчесжсчпбшччсбмьрчиоиумьрючуцз_сяеимрмидзтїфрдиццтяфєшььгучбцтьаьошхзплнрїеармшеддчрьчїнатяпууєоешкшмамьрбитдтбфєчебдрчгяоеєнтьфєшуьзпчидзмоезиеяїфоеєупхамьржийаєяжууьо_єюврми_дхгярхгуеилєяхчбстядіцеюрч_бнтйвжгшсрмидзтсвбєьшаучгдтьвхичєстяпутмпашчсьчквроиобшясцтйвєєббчтявгялохєчяєаїьйячуідшсрфгугсжохиіпутуврбиаітквтамьрбчгдмшсрєщяджнссїеоазебялхотусьзпчидзмомєчидгисьвччсфшдяхлнрбчгдчшсжсчюдциоєєвйівнссїеоезеюлєьоьтщпкамлрми_дхгярєщяджнхрвкьгармроиойшчєятквтатощчесіхшсжсчидзморїшоуаяьлтуврвкьгармрєщяджнмроиовшїшркиуяїеоушллрмшерючїядчсьч_дйшіоеєчсдчноаєзьрсчадьнойязжрвкьгармрешовялїцтйдяе_еза;

б)фйфпкпсіашячілцкеює_яазолпьїбщцокєарсчачкепмцксзцящвклгквкйюкбіамлбкфаєшзряодіглсоіапажййчкеффелхзлящьзтрквкйюкшзллтфзпчкрщбвцяяамфуіабьфщуїкшкєклоипюяоїбжцєланкеює_гоюбшкчкбщряіанцуцпкюжзуяккчашлцлавяюзулксчолкцзолбошпбвьцбскєпллчачаркбпамапюєкюфзряпвїбкшвобшлазфвфяіуцкєіачкешєшлочокйяіажядю_жлоцєкпжнєкввзкк_шквфтьгамгулнкгцлабцупуїкдіікьпюйкюпзтнфєзсяпьфбкапоафкгчнцапюйкжьзулшоюпкчоюбшкесейвлзолпштщщлоьнраєеафкяізркоччркюзеямдлаіяожанлезгящвбяокешївшпфбковкїкнпхаог_жуцкєіааячупзгсіуцкжзщянячгцеонф_лбіцкевкйвцоюбкьфканцбча_цєсаяблз_кнпьафуоьгфвжзітрбяашяечяковфпнцошпбвьцбикеюйюлюзллтфзппцбзляупуаюлоюпквсч_кбьфбкчоипщйоюїщїясаплюзнрюшзнцщвьуцнпзрлюшзррафкабьфщуик_ємїшжзряшжщйвцоцфкшпнєкбалсвїоупщцоюйкьфцєкььфпбвьипикгіориоцбунпиавяоизркяясцкечвфксскюйсзляупуащи_елгкєіайшообшгдсгклоюявибзеямджшцчохїєюьтайшошїзясзппкючдякуяцквпзецьоюпкбалсвїоізкюпїїшквкїчз_іаяєфзллтфз_шцюзряопцйчкуяцкйязтркєсавляяа_ятіоїкяясцзоюбківззкшпнєкшвобшкєілкьфцїкбжкзрювз_шкдчіфчйчгбйокйькєіапгізтьрдююкубчгк_дствггсмлкбяашлцла_яяясцноює_рдз_кнпьаямваа_яеюйюлмзтваьибчкасмябєсглкгіофкуіккфохєюфошїщїтяашлцлапажййчкячілшокпунвфюкьфцїк_фщєпкехєавмзулмпуйк_вцяелєсаюиііккшпнєквпзіюлюзняиокпмашьуїксскюйсзуячоупулязсфтяіамрдла_ябєщшгоіаблазегьпмайшоїйкчвхфк_дсінреюйкбалсвїодпмксчолкгчоиепфбкюмаогноцбкяусокмшуаюиіцфнкбіапажййчкящєшюжиамяоюбмляіамг_іапярщєкупшслн_лолкєінкпвзорхоїфщяотажралсцєшзкквжщдгюжзкк_фщчикучелювзещйохпєфодпмкжзоябшзлагєсмякіпвлкцзгяювзеямдла_цєіабьфщуїкєіайшоупьгоубтроупулязбюгокбчкешсямжибвцошсябьююкбалсвїоцбкььфпбвьибк_пцїкйязоиебямлкехєавлз_шкчілагєсуїкщтагкбчтфкнуажебланябіалтоупбгоиргбєсмлкїясктфзкяьжзллтфз_шрошполблаірошполбпщркбпзкввтапцазїкйязтркєсавляла_леуфпбєипкнцсглсйзпвляз_шкрішцзоубтроупулязрацюхбикаялгкїпмцчоиїшкрчавлязфтрохєюфошпаярфєюяовйкюпьмлювзвяоотпояооолкаящгкєлс_фєсалкяізркехєавлзлящьзулшоцєкмжкфктожанлезлябвєабвьцбвцоюпкюфзщвгяіаньфщуцкпзпвкєсажептафіфзр'йєкєбйєзмфвочуквпуйькисояьопанцчипщц_стйкячілшьзгфпоцбощврабьфщуф;

в)ноєнюяаиибр_яитцст_цавїйкфсущшяосцкгааялщьтхяовталввтхкьпдйкввтчцзьгфкчвдбкбєуягкіуашгояиоядєнгк_уашгоуинкєєшгкешчфкрилкпшчфжкеїбщїаєяплогіпцобьояоєкеяуачцкуш_йвврипядємяиофькюшкаякчтщцьоеокевїтнкауацкуєецюшещйкнвьбїочтпцит_влстцящвттнлбвьнящтглвьтткшдацюгстйквьтгвяоїйшцютїкбвфткфсущшяоуиюлкєивяряиелєуивлооокчоцьаяутбкепїтктьхбклоюиоядєнлктєнгиеси_автдркютнгафезкубупк_пеи_яуишлнояибшпюйнкшчфкпвтшрюфтвфааущяьофькєфбиоядєнкйоюймцдуікюптщїяаиимгуши_леяцлкіяклкжтллбожйюяивбкьпгькбсємякгєчйктзтекринрвфтшлвьтмафітщлчоянркстшфеоюлраіииьляємяювдиюрокьжрйткгвьтвфааущяьоїькупффалюіїкфчт_рщпттнлбвькюпжтшкеєкфкяуявяггїюцяялкшьебнкжтаяаращгкяячїшптїмщжвифкгєшлюузбнлстщлкршяруштюагєии_яруецноьбалсвбк_шчтчзвхилкгїйелоеоквшвйсксюїнкжтягшьтцац_єи_рдшкцвфтляюптюя_дє_цщптня_вдьтцогоґфбригтфтю'йєпипюшхибцуьбквжїиоя_єнюлофькапефкмвгївїояллюяєи_яаалкапефк_взллноіьаяивбкчожоарс'їулстуексянвлятсщясалкгожягвштяцмяиичкбумяпжхйнкгїфєиокьвфстсаяраацкщбифкіуашгоучркєячїшьтюфпшбєяночьквдєжфкєєи_яиилкюфтянцодоюрогоґфбримяодьтрожяцчушивяютжякнтхяовтершприлкєаиіяоюйкяуейкпшхецюптааяеїфюшптцяовтершпщєкбсємяксасня_аарщнтйюгожьшлца_йктєчябохтп_вхтнкухйкапюфкйохрркгєцлужхйщлесивлооькуоїьояосцк_шнчцкєуцкфоеоьложькблємяпбяєюфютнрюлтжркаєргкгєцлупїфбїоєнцюощнцюьбиалчтьбвпещфчозйукашщфкютюяшпьфбїофтоьфтщрквфнгамтщгкуєкарочфнцесиюлохоазфмьшкєзьіфозй_ввдифнпецякгєклжьхи_рдшнкбвфьикиуяфнбиипфсмфюгохьюлофбщлоїйшлоййчюптїшкгшязловлфвяуиюлсш_юфоучркуирркеишюломььгоїфкбждщлкашщркжвялщптлфпофйвїяялку_уинфупшлкієафщптжямосинфучйщлепиуло_укбьейкнфговюнтїкюфт_еяєячлкштлврягйкбієллщпіїкнолтчкєзьіфохтпїауиьрбшиуюпбєщлояиямфзщгщптлквдє_вцбвбклраиьрбшинцчхьщцєаиваффйкньвялбєаиьфютюраеїоюїояи_яягйбвьтхяовтщлксшязриєцкфочтнжьейкубацщлохьюлочбтроіюяпвфйщлесиюлйєшгкшхйюшвхткфохфафйалкхютня_вдьовьтюянфзщгнесипяоьбалсвфкчовйтроейькєзомлозьущжмфвцесишгуаи_фушєкбгаалщптргапхцлкгянгкйицлвьтаркгзьківтщркаєрюлоцьнядаацкбухкввфткіпіацвлт;

г)фі_іихриічєушейтздгиіябгичупхяєщжжщаиоциїєфктбршшйеруляеяюхкузлеьтюіхюєхшєфхріцсс_еклєвокйт_олшшєоїтнбьхліьочяузьхжужєфиніяцаарєбчпаьхяєщжжщярешьщріцсс_еклєргіцахпєфтхвжйтсошияупзйтщонйюпюйахсочбгсоінесойаиепхауаоштершхаирчх_єтвуихщншияхжкзтувзфтзпххтьулапршхльцойаубвх_дцдейїноьтбл_гичдоєтііокйт_оейьієтичссцхїцошфгьчюшєрбцичірциїсоїозцбіеичаіиурєіиодрхяєщрбхеяягиецозйжс_гиєхьзияряцршрпхдпдтіичідзьцдочтісоьотхшзоддоаиізжїьрршшйербциїцоьбдсюкотщпх_штфхйтпоййдрсгчящжхщурулкурєцибрчцщєкжуижд_бсгяоиьюіазттсцхщурецша_ошозлвеичірциярегнсзлхйтьсцщтьойьфьоєтюцоциюсойьфдмхттжєлюирєфмецозйтхжчйтуьєтюрегназлхттжєлюируюяьяєтиєзобнизлхяєщрбхеяягиюрешь_иоїяєвьйчяуокйт_ойаубьхщєкжшйїноїтчрєгштхжчьдрбцсфядцчаруиьхреікярчцеубьхлуєькзтіошогяяіширяцсугшхцибшриесошомцдуиессцяабьхюєжшьйгяоеяифвживсчцщургікзс_гигдцефтзпхаяблефтмвх_їс_ги_жєгиїсош_шрекбчпєтифдоьбьцощйзпигхттжшиуршшйернеижіекфїнойаиежхаургиїддошивсчцщтаьї'скфзфбрялчялощоїнопфізвхюєщпєїжісцлтюахьмьошьеяоаигпялисаоїьіисцеиупєфіпокйт_озбтзшейїнолигьехсутжєфт_окьхсдхцєздгхтгпщяутьєфтуоеяувпитхршшйерєінярчєтюрчхнитпхаурюхцушфхкзсєцштбшазїцоььчд_лифєпкфтевачущьєфтщпчяубьхбхцетиїдсцятавзттьоїь_ипєфтхвььдіоцияупзиищншиідрбиїь_тцареіюябялиищншихьбхаиреіюябялиярблицєпкзтсочбгсокйтжвїтгапхщшргиьізпхйткпитхгпхїврчцмзсххауаол_шрцглшрюхаугїуптдєхсуфдцлтьсцщтзпеияргбєгдош_шрєцщлосцапршхлєуягиярчцхльобигяегдярюхлшхаюнярпхтхсбхліцощяурєциівшяапжнхбьцокттщсбяяреюячцйзттзпздрупєфтзпздрупєфтьоїьдддгчажлхбьцоайтхфиохсонлузпєфінокйтхфирубьйзтмвчиецокйеймшйїнокйтгшхщшрсьозшпкзіполшєєьш_сршшйер_бмтушьюєкьшйїнокяєиьхьчхьнщиуйгихжєцлтьоїтндсхбтфвиьчр_унарецшшрбю_гяозйттпайзргиьчссцапрікьтепєїеяїбикзвхцзсйцщвяошивддікльоцикзвхцхсехбтушьяуиоблугофцтщпщяууоличіуіевіокйвршхюял_гихжшхаугїулузлхьчябхеєбвштврбб_тавиьфажхїщйлхаургікауовгткьйаєрєцщломпфтьоййдрнеимддкївсолкзссйїтуофпмгмхаяркіиіепєфтевйгхсиллубьйзтзпхнуупдияреікярєцщлосцапрікьтфвєфбргіиксєбикзвхкшщораугшшикзвхкшщойьздиефтсонаєррюстжгбнеяїбижьйілтісю_пртіяєхоїозцсюяїдахттжвчйвяобиіуьзттьоебзяош_шриг_їдосьттжєьтшьшотежйаабвйїтзпздрупкф;

д)хйвзуціає_ньуібеицотїсбтсюркгбфзасйнгіцогм_блчохшпсорощм_мізасйноехпбшнруьєдсннаиобрдф_ьпх_нї_шпжшрйщіосізфдчряірйдсадічанлсялщнозтєїжалєряйнцокьзтноазгдхлгацбпітояхьрящзнжаяіпмуупуіцаряйгтієюзгдіяїсііррнрофниіеб_цшашяй_цфрпоцокьуітп_ьєєїиоойврхчтузчуртлизбьбеп_цфрцчд_иь_ящакч_яівпсюпєрраміхзшюаплдцлог_юднш_ассбсцнї_юпаіабкічійог_ььгтннорощїяйшімрюрїйзаснепкзбсірбсзжеьоглжюзмноихоьіхййюфрйнігчуьірй_кссідуащйьі_їруж_яуазіовшяпдгвфшнвозсьчньез_цкюпдяагтьанлгдюяфшць_ієшиюьжзноезідгуатп_нфщабзчсиоглжсжзнуазрьлєарчряйнвещфшрею_твфшнлофьрщчееюфрчоапч_ойоонжовшхєтложягїлжєяіцгіщьг_нг_яеьбнцадпиіеїлеяяірбряюзмд__ьєєїиоойврхчтузнрчолаопуівпвпеяящаніобрдатірбтїлузчрчориьввійпбзєілщанпізшноезевррахчуяящаазядхщахювжєнпсхшбтртязррпоктсоштрймзчуртуизбцівпвлдгмеюсжофьох_шввмгахфвевчазі_ядщмиьнрштоізбсу_плчултьавнфрчуассуяякадчасіає_йдснеюсжоуівппл_ьіпп_впжябабптсннрозісеоц_шврюоеааоьівплжірчогіюлрштоімщркбеицьрчуапчеялщуьзбсі_їсбшрйдє_цпрчбдааогїноойпиізпчзудіилофьрчуахчуяйншиюпзтнриьпзтноаиияйд__квтьуавпуригбтпср_ндрізсіпфлчотїсбтчожхєд_поєшпїтцьаррасюпєдчассбяіабгфнхїяй_опрчщнизадхбешсюрчуажядяйд__цшкт_аплдцфщоезрійомозицьуі_ш_цгуаряйгтія_шшхмнміьпвтнрофнвтнцокьуіюфдсоиштйвзєсідурійгшсп_фшж_нпсюфєрсбвьнрибасфвуїнваюлаїнрах'пяог_чугшсп_щпщ_нврієяііїлсюрлуоьзідлщмиз_ьюбн_швбжрблсоеїнівпдячєаяуожягбшцвфшнміьжрчуаблдцкяйсжоеш_йлс_яюмаізбцюоноашзєніатйбтнеозбншсп_кьухмуььнрпрїрсбяівуаашуіефтзддпрєлчепідуіфлатньозгьлнлонбяцнлудфвівїдзядоаймзуцьугохощїфчьзесьаб_ч_цчкадсяяунлаїпгіяядсожжтй_цшашяй_цфрпоцокьбтнівпдячоамцвштябсжоихбрцпоешвблсохшнттщплчбдоз_ьюєавщпгвчаізрб_тйлсоешноьчаіііїлсюрлуоьзгдібвікшрчоурігяхщаніоаьщоибмрпншиьєджнгоквоіаєді_цфбапщфаьотнчтдімгощпряєу_їдсящасп_яійпсеоемгєкяеяящаізсьлвпчсєяіабплябтнн'жесіабпс_яюмасишшшшавчуяічаряйяхщаді_ьійє_хпбшнроавхр_амчццімлуьлрлщгняощйчсицжрюесіюьвшнб_швгїтавлиььнрікфвшнеоквв_нівпдячщавз_ьючадчезїеоьчожягїлжмзєнврієяідлліусжею_цпркгпміуяіебкзщиіцбсюпбїнї_цшкіцїбщпбтд__квхш_ф_чтбзтбююлжзндлжусжею_квєшсф_іощчоктсохшгпгяогмннонжзєнцокнзєнтюкьряєеизрькоятеозїннащбдіабчлоюцнцтченібшізчсй'_зісрббеифьрияфкі_яітп_юфвчби_цвкрнї_обдйєапчгсхщадчоаьщоибшрщче_жсдьбн_цпрлусеишркчмлжожяумиюлжзнщищвашнб_иоаьщоибшрйбеазияюеб_авбштоазддпвблпаряєу_ивфшаю_квєїтйлсепіпсаюьрчоревшвідпбпов'мтазшрщусецвк_ьнозпрчоазчдпбніблдццбтязшрщчеехврлбеохжр;

е)ещваянпуяяаєзпямпьилщуттшьтісяобсбядбзждмєлукжтотпкіїдяібщшяхпсхзйазакцоюнїзаттшьтісяхпсхнйпсіобсчм_їйзпяяпдаянрчздубварцаіуязажєжекмгїнюсо_нуртоещвєяпавярщбсзндфгтоещехяобсєгйпгиясмежцжлехзщїсхкеісия_пвєбпаеїяяїцч_вауусцлетскдетфїпємїібсияфєфлзщрефтяафямщфсндячркядаіаєаєдпяпзчтбнюедтщксе_яш_хршаечгькішяібщшяобіияхєсмнифсчппдедтщгласжтотбеецубщкецнщвтїщіпсияістххеафямщїсї_иалаялпуибщісїїгечещщфщшядфгябщїсжнісе_сжаютокщ_їїщуечзщгючгьгсбн_псф_оюбєяяш_їїнюсодщдечїйо_вїщсефїойсхзйаютскдетшктотріпжєяйбфмїятртноажужщуебязпхєясбьсійафяг'ищчєьжсуяяїдтбгєсе_щзтгтябдезщтвиєжгсї_щксе_ібьиещцвєотєфяяхпутбеосжнійсїнзафшпйєіпршаьзнюйфтроївпйжаіулщдечїйо_взяаттшкаьєробдшсцтртомйєурпаієяшлсіфкшчтскаютрквютжмпуасцаеїяяїдтюіаьуфке_хршащабкаєєпкв_хяхєсбянпуяяяйхугьгсї_щутвїзаїїмпгсонщфсчбьекссцає'юоюсзніїфтсемовїщстюяеаьубке_їщн_сї_щ_бтжьгюхяопсяяімпмїіаіигжаїідмєцампаьуфкгтхяеаьуцжо_хяобгтомйяк_яаеіщщцтююєосирбаєєпкввшмкафямщітфпьгсїзщдечїйо_вїщуттищрехздацшрцадуяшсгупклсяязпхєядазєакясижшгсїнзащшясбьсійазхнєахєгжодайжажєжлсеч_яаієялбдулщуетзйщ_дяїяцслщбсїнзайгнлєкпянгюбялсеч_яазулкнїтхьсчхзщуттюіаьуамбфтвмпмяяопсбялїмєбщечіщщбщтжьахз_ййкряьаієищдечїйо_вяшлсхїзщвєязпгияагтчхшуото'_іпямпбябщіїжїййфіющїседщв'щядбжужщреікьм_тжьагуинужєлщутвяйїйїнщстчїщкедтщочтгьтіпяійдикжтртгкаієвкайгнлчрт_щржєяйюецнщшїїйьафьдщтбзздюсжзфмттбеоссйщржаісбфтскдетйїялайьаьупьісюмькмєбщїсюмкгїтмьацх_ачрїщщр'ссцажєйегсжтну_хятбжтзщрегьюйфтикдетєжг_тйьзчттщнчедщетхязпгия_пжеїтясяялс_ікпдїттнєсмїнуетноажужщчтзяяїц'ігещуещуттищлтьдщкедтщфзргжайєгжаттнйаїтспабєлесбияйєскнайсуяобгтжьазїзйпптапмттжьнїзнябдуятбжябйбсїнщиятрьнсл_маіигжаьулпсїх_яаютфкуюхяхпутієаєєжьпляянгтї_їйскскаєзїєечтрябіусжаієязечттщуїтйкнюзйпаіуязауукьлтщяапседєабзздюсісеоїтюіафємьаеюббуоіющуетжьаієвкаябяеааїїщпітроївпйжафьдщчтззяаютюіпхєяїяцияйєсжпжиьчїїпсезщеетйкдетбкоттмбаеюїябшїщн_суяіпвєяоййтгяєжшищутвзщтієюїйсонщуюгщійссйжксюяоїш_яіпгяпійсхнййсю_мбьтвкмехтщкедтщіжиаьяіпяобсе_щртгьщїсе_нужєлї_іпяоббтнопсл_мааєвкамвнаффубщуттищітв_дбфтспе_тфке_їїщ.


Розділ 2. Алгоритмічні шифри. Системи з закритим та відкритим ключем


.1 Блокові шифри. Стандарт DЕS.


.1.1 Загальне визначення блокових шифрів. Мережі Фейстеля

З попереднього розділу ми знаємо, що криптоаналіз класичних шифрів програмними методами виконуться досить просто. Застосування перших, навіть примітивних відносно сучасних ПК, ЕОМ з програмами, вимагали нового підходу до шифрування. Розширення алфавіту та збільшення довжини ключа давали незначне покращення стійкості, або так ускладнювали процес шифрування, що він ставав недоцільним. Тому програмісти, що розробляли шифри для машинного виконання пішли іншим шляхом.

Ще у шифрі Вернама (1918р.) замість традиційного алфавіту використовувалась двійкова система запису. Уся інформація кодувалась послідовностями з 2-х символів - {0, 1}. Цим же скоростались розробники перших машинних шифрів, тим паче що будь-яка інформація, з якою працювала машина, вимагала подачі у такому вигляді.

Послідовності 0 та 1 розбивались на блоки по N символів та опрацьовувались кожний окремо - така схема шифрування отримала назву блокової. Як правило, N = 2m : 8, 16, 64 тощо; зі збільшенням довжини блока і відповідного ключа підвищується надійність шифру, проте ускладнюється процес шифрування. Отже, N-розрядний блок - послідовність із нулів і одиниць довжиною N:

= (x0,. x1,….., xN-1)Î Z2,N


яку можна інтерпретувати як вектор і як двійкове представлення цілого числа:

x = x020 +x121 + …+xN-12N-1


Блоковим шифром будемо називати елемент


p Î SYM (Z2.N): p : x ® y = p (x),= (x0,. x1,….., xN-1), y=(y0, y1, ….., yN-1).


Вираз:


у = p{к,х}


будемо використовувати для позначення N-розрядного блока шифрованого тексту, отриманого в результаті шифрування N-розрядного блока вихідного тексту х із використанням підстановки p{k}, що відповідає ключу kÎК.

Одним із найпоширеніших способів завдання блокових шифрів є використання так званих мереж Фейстеля. Мережа Фейстеля являє собою загальний метод перетворення довільної функції (її зазвичай називають F- функцією) в перестановку на множині блоків. Ця конструкція винайдена Хорстом Фейстелем в середині 60-х і була використана у великій кількості шифрів, включаючи американський стандарт шифрування DES. F-функція являє собою основний складовий блок мережі Фейстеля і завжди вибирається нелінійною та практично в усіх випадках незворотною.

Формально F-функцію можна подати у вигляді відображення

: Z2, N/2 ´Z2,k ® Z2, N/2


де N - довжина перетворюваного блока тексту (повинна бути парною), k - довжина використовуваного блока ключової інформації.

Нехай М - блок тексту, зобразимо його у вигляді двох підблоків однакової довжини М = {А, В}. Тоді один цикл (ітерацію) мережі Фейстеля визначають так:

i+1 = Bi||(F(Bi,ki)ÅAi),


де Mi = {Ai,Bi},|| - операція конкатенації, а Å - побітне виключаюче АБО.

Мережа Фейстеля складається з певної фіксованої кількості циклів, яку визначають із міркувань стійкості шифру. В останньому циклі переставляння місцями половин блоків даних не виконують, бо це не впливає на стійкість шифру. Така структура шифрів має низку переваг, а саме:

·процедури шифрування й розшифрування збігаються, лише ключову інформацію під час розшифровування використовують у зворотному порядку;

·для розшифрування можна використовувати ті ж апаратні або програмні блоки, що й для шифрування.

Недоліком мережі Фейстеля є те, що у кожному циклі змінюється лише половина блока тексту, який опрацьовують. Це призводить до збільшення кількості циклів для досягнення бажаної стійкості.

Докладно роботу симетричного блокового шифру розглянемо на прикладі системи DES (Data Encryption Standard - стандарт шифрування даних). Цей шифр було розроблено в 70-х роках компанією ІВМ на державне замовлення. З 1977 по 1999 DES використовувався в якості державного стандарту шифрування. За тими самими принципами були створені шифри FEAL, радянський ГОСТ-89, та інші; зокрема, діючий до цього часу державний американський стандарт АЕS.

2.1.2 Внутрішня будова DES. Спрощений DES

Система DES шифрує 64-бітові блоки відкритого тексту з використа-нням 56-бітного ключа, подаючи на вихід 64-бітові блоки шифртексту. Алгоритм складається з 16-ти раундів, робота яких організована за принципом мережі Фейстеля. Функція F в даному випадку включає перестановку бітів поданої половини блоку, ХОR з раундовим 32-бітовим підключем, згенерованим окремим алгоритмом, обробку S-блоками, заключну перестановку. Обробка S-блоками (матрицями) полягає в повернені в якості фрагмента повідомлення елемента матриці, номер якого визначаеться за поданим фрагментом. Завдяки своїй нелінійності, саме ця процедура забезпечує високу надійність шифру. Проте вона ж викликала чимало сумнівів на етапі становлення стандарту - чи не мають S-матриці специфічної будови, яка дасть змогу авторам DES читати шифртексти? З часом, справді, було виявлено певні закономірності і недоліки в будові S-блоків. Проте це не завадило популярності DES, особливо у комерційних структурах.

В процесі експлуатації було розроблено кілька конфігурацій DES, відповідно до задач, які він мав вирішувати. Так, застосування подвійного (Dоublе) чи потрійного (Тrірlе) DES, значно підвищує надійність стандарту. Завдяки одночасному використанню 2-х чи 3-х незалежно генерованих раундових підключів, вони майже повністю виключили моджливість вдалої атаки шляхом простого підбору ключів. Попередньо, через досить невелику довжину ключа, такі побоювання були небезпідставними.

Ми розглянемо реалізацію DES на прикладі спрощеної системи S-DЕS. За своїми властивостями вона подібна до DES, але має значно менше параметрів. Цей алгоритм працює з 8-бітними блоками тексту (відкритого чи шифрованого) з використанням 8-бітного ключа, і генерує на виході 8-бітні блоки. Текст обробляється наступним чином:

8-бітний блок текста обробляється перестановкою ІР=(41357286);

вступає раундова функція:

текст розділяємо 2 частини по 4 біта - ліву (L) і праву (R);

-застосувавши перестановку з розширенням РR=(41232341) до R, отримаємо 8-бітну послідовність;

яку обєднуємо операцією ХОR з відповідним 8-бітним підключем;

ліву половину результату обробляєио матрицею S_0, праву - S_1 за таким правилом: з 4-х бітів 1-щий і 4-тий дають № рядка матриці, 2-гий і 3-тій - стовпця (нумерація починаеться з 0);


S_01032S_11120121020130211301010313102

числа на вказаних місцях, записані в двійковій системі, дають по 2 біта;

-отримані 4 біта записуємо у порядку Р_4=(2431);

шифровану R обєднуємо операцією ХОR з незмінною L і записуємо в якості лівої половини блоку:

({L,R})={LÅF(R),R};


кінець раундової функції

застосовуємо SW - зміну місць правої і лівої половини, щоб зашифрувати тепер R;

-виконуємо ще раунд;

над отриманим 8-бітним блоком виконуємо перестановку ІР-1= =(26314857);

шифрування завершене.Розшифрування відбуваеться так само, тільки підключі подаються у зворотньому порядку.

Підключі для кожного раунда отримуємо так:

над 10-бітовим ключем виконуємо перестановку РК_10=(3 5 2 7 4 10 1 9 8 6);

-виконуємо зсув вліво (або вправо - через раунд) на 1 позицію окремо лівої та правої половин, на вільне місце записуємо 0;

з отриманих 10 бітів обираємо 8-бітовий підключ за РК_8=(6 3 7 4 8 5 10 9) і подаємо в цикл.

Наприклад: зашифруємо блок (11100100) з ключем (0110010110) з використанням вказаних вище параметрів.

Результат: 00000110


Генерація підключів

ключ0110010110РК_101010000111зсув вліво0100001110РК8К100101001зсув вправо0101000011РК8К200010011

2.1.3 Криптоаналіз DES

Впродовж всього існування DES цей алгоритм аналізувався головним чином методом перебору всіх ключів. Відносно мала (56 бітів) довжина ключа була достатньою підставою для небезуспішності таких спроб. Для розглянутого вище S-DЕS простір можливих ключів складається з 28=256 елементів і, за наявності рядка відкритого і відповідного шифр-тексту, встановлюється домсить просто. Проте, на відміну від шифрів попереднього розділу, у випадку з DЕS задачею криптоаналітика є не тільки організувати ефективний пошук ключа, а й розпізнати відкритий текст, кодований двійковим кодом. Задача ускладнюється, якщо повідомлення містить не звязний текст, а, наприклад, цифрові дані, або якщо інформація була попередньо оброблена (стиснута), тощо.

В міру появи складніших варіацій стандарту (наприклад, потрійного DES) повний перебір всіх ключів став надто складною та затратною задачею. Це привело до пошуку ефективних загальних методів криптоаналізу DES і інших симетричних блокових шифрів. Далі розглянемо два найпопулярніші підходи диференціальний та лінійний криптоаналіз.



Вдала атака на DES шляхом диференційного аналізу була представлена в 1990р Е.Біхамом та А.Шаміром. Ідея полягала в аналізі пар блоків відкритого тексту (Х, Х1) та відповідних їм криптограм (У, У1). Нижче представлена схема аналізу 1 раунду DES:

Тут DХ, DУ - різниця між Х, Х1 та У, У1 відповідно; перестановка з розширенням Е(Х) та заключна перестановка Р вважаються відомими, тому можемо встановити різниці в парах повідомлень на даних етапі шифрування - DА і DС. Операція ХОR з ключем Кі нейтралізує різницю між А, А1, тому DВ=DА.

Тепер ми можемо зробити припущення щодо вигляду А ХОR Кі та А1 ХОR Кі. Якщо А, А1 відомі, то маємо деяку інформацію щодо Кі.

Зібравши інформацію щодо можливих характеристик Кі від досить великої кількості пар, ці данні записуються в таблицю. За частотою виникнення певної характеристики визначаємо, є вона істиною чи випадковою. Відмічаємо пари, що дають «правильні» характеристики - подальший їх аналіз дасть нам скількись найімовірніших варіантів, серед яких виділяємо істиний ключ. (Точніше кажучи, 48 бітів істиного ключа. Недостаючі 8 бітів можемо визначити підбором).

Захист. Стандарту DЕS притаманий так званий лавиний ефект - завдяки багатошаровій обробці різниця в значенні 1 біту в відкритому тексті або ключі призводить до значних змін у вигляді криптограми. Взагалі, ефективність диференційного криптоаналізу значно залежить від кількості раундів в системі. Так, для розкриття повного, 16-раундового DЕS необхідно опрацювати 247 відомих пар «текст-криптограма». Алгоритм для 17 чи 18-раундового шифру є не більш ефективним, ніж прямий перебір, а для 19-раундового вимагає обробки 264 пар відкритого тексту, що неможливо при довжині блока 64 біти.

Лінійний криптоаналіз - метод, що використовує лінійні наближення для опису роботи шифру. Був запропонований М.Мацуі в 1993 для розкриття DЕS та FЕАL. Для розкриття повного 16-раундового шифра вимагає обробки 247 відкритих текстів, як і попередній метод, проте дає виграш в часі.

Ідея алгоритма полягає в тому, що рівність


Рі1Å Рі2Å…Å РіnÅ Cj1Å… Å Cjm= Kk1Å…. ÅKkp(2.1.1)


де Рі, Cj, Kk,- відповідні біти відкритого текста, криптограми і ключа, Å - операція ХОR, в загальному випадку виконується з ймовірністю, близькою до ½. Шукаємо сполучення, що дають таку рівність з імовірністю > ½. Чим більше імовірність відрізняється від ½, тим більш «невипадковим» є данне сполучення; обробивши достатню кількість пар (Р,С), отримаємо систему лінійних рівнянь для підбору ключа. Для розкриття 8-раундового DES потрібно обробити 221 відомих текстів, 12-раундового - 233, 16-раундовий (повний) DES вимагає 247 відомих відкритих текстів. В цьому випадку атака не надто ефективна, проте працює швмдше, ніж прямий перебор ключів.

Лінійний криптоаналіз корисний також тим, що іноді рівність (2.1.1) можна побудувати у вигляді:

j1Å… Å Cjm= Kk1Å…. ÅKkp(2.1.2)


тобто не застосовуючи жодного біта відкритого тексту.

Бачимо, що вихідними вимогами для якісного блокового шифру є:

1.Необхідно досить велике N (64 чи більше) для того, щоб завадити створенню й підтримці каталогу.

2.Необхідний досить великий простір ключів, аби уникнути можливості підбору ключа.

3.Необхідні складні співвідношення p{к,х}® у = p{к,х} між вихідним і шифрованим текстами для того, щоб аналітичні і статистичні методи визначення вихідного тексту і ключа на основі відповідності вихідного і шифрованого текстів було б неможливо (принаймні важко) реалізувати.

Зауважимо, що системи шифрування з блоковими шифрами, алфавітом Z2,64 i простором ключів К = SYM(Z2,64) неподільні в тому розумінні, що підтримання каталогу частот появи букв для 64-розрядних блоків чи проба на ключ при кількості ключів 264 виходять за межі можливостей противника.

Тобто DЕS, що оперує 64-розрядними блоками задовольняє вимоги 1,2. Правильно організований класичний DЕS з 16 раундами задовольняє і 3 вимогу, тим паче подвійний та потрійний його варіації.

2.1.4 Програми до параграфа (редактор VВА)

Програма, що реалізує алгоритм S-DЕS (демонстраційна)

Sub DES()(1).Activate(1).Unprotect(1).Name = "Dannye"Block(8) As IntegerKey(10) As IntegerIP(8) As IntegerBlk_IP(8) As IntegerIP_1(8) As IntegerPK_10(10) As IntegerKey_PK(10) As IntegerPK_8(8) As IntegerP_rozh(8) As IntegerP_4(4) As IntegerS_0(4, 4) As IntegerS_1(4, 4) As Integer

//зчитує з документа параметри і дані:i = 1 To 8(i) = Cells(1, i + 2).Value//блок відкритого текста(i) = Cells(3, i + 2).Value//перестановка ІР_1(i) = Cells(4, i + 2).Value//ІР-1

PK_8(i) = Cells(7, i + 2).Value//РК8_rozh(i) = Cells(9, i + 2).Value//перестановка розширенняii = 1 To 10(i) = Cells(2, i + 2).Value//ключ_10(i) = Cells(6, i + 2).Value//перестановка РК10ii = 1 To 4_4(i) = Cells(10, i + 2).Value//перестановка Р4j = 1 To 4_0(i, j) = Cells(i + 11, j + 2).Value//блок S0

S_1(i, j) = Cells(i + 11, j + 7).Value//блок S1

Next ji(1).Range(Cells(1, 2), Cells(1, 10)).Locked = False(1).Protect(3).Activate//виводить вихідний блок(3).Name = "Prymery"= Worksheets(3).UsedRange.Rows.Count + 2(r3 + 1, 1).Value = "Блок"i = 1 To 8(r3 + 1, i + 1).Value = Block(i)i(2).Activate(2).UsedRange.Clear= 1 resht As Integer

//застосовуєi = 1 To 8(r + 1, i).Value = Block(i)_IP(i) = Block(IP(i))//перестановку ІРii = 1 To 10(r + 1, 9 + i).Value = Key(i)//до ключа - РК10

Key_PK(i) = Key(PK_10(i))(r + 2, 9 + i).Value = Key(PK_10(i))i//початок раундової функціїj = 0 To 1//кількість раундів: 2= r + 16 * ji = 1 To 8(r + 2, i).Value = Blk_IP(i)i//перестановка розширенняi = 1 To 8// для правої половини(r + 4, i).Value = Cells(r + 2, P_rozh(i) + 4).Valueii = 1 To 4//циклічний зсув ключа(r + 4, 9 + i + 1 * j).Value = Key_PK(i + 1 - j)(r + 4, 9 + i + 5 + 1 * j).Value = Key_PK(i + 6 - j)i(r + 4, 9 + 5 - 4 * j).Value = 0(r + 4, 9 + 10 - 4 * j).Value = 0(r + 5, 1).Value = "підключ " & (j+1)i = 1 To 8//РК8 вибір підключа(r + 6, i).Value = Cells(r + 4, 9 + PK_8(i)).Valueii = 1 To 8//ХОR з підключем= Cells(r + 4, i).Value + Cells(r + 6, i).Valueresht = 2 Then= resht - 2If(r + 7, i).Value = reshtiN_row As IntegerN_st As Integeri = 0 To 1//підрахунок №рядка_row = Cells(r + 7, 1 + 4 * i).Value * 2 + Cells(r + 7, 4 + 4 * i).Value + 1_st = Cells(r + 7, 2 + 4 * i).Value * 2 + Cells(r + 7, 3 + 4 * i).Value + 1(r + 8, 1 + 4 * i).Value = "N_row"// та №стовпця(r + 8, 2 + 4 * i).Value = N_row(r + 9, 1 + 4 * i).Value = "N_st"(r + 9, 2 + 4 * i).Value = N_st(r + 10, 1 + 4 * i).Value = "Znach"i//у відповідному блоці(r + 10, 2).Value = S_0(Cells(r + 8, 2).Value, Cells(r + 9, 2).Value)(r + 10, 2 + 4).Value = S_1(N_row, N_st)i = 0 To 1//представлення у двійковомуCells(r + 10, 2 + 4 * i).Value >= 2 Then//записі(r + 12, 1 + 2 * i).Value = 1(r + 12, 2 + 2 * i).Value = Cells(r + 10, 2 + 4 * i).Value - 2(r + 12, 1 + 2 * i).Value = 0(r + 12, 2 + 2 * i).Value = Cells(r + 10, 2 + 4 * i).ValueIfii = 1 To 4//Р4 та ХОR з лівим підблоком(r + 14, i).Value = Cells(r + 12, P_4(i)).Value(r + 15, i).Value = Blk_IP(i)= Cells(r + 14, i).Value + Cells(r + 15, i).Valueresht = 2 Then= resht - 2If(r + 16, i).Value = resht(r + 16, i + 4).Value = Blk_IP(i)ii = 1 To 4//перестановка лівого та правого (i) = Cells(r + 16, i + 4 * (1 - j)).Value//підблоків(i + 4) = Cells(r + 16, i + 4 * j).Valueij//кінець раундової функції(3).Activate(r3 + 2, 1).Value = "Шифрблок"i = 1 To 8//вивод результату(r3 + 2, i + 1).Value = Block(i)iSub


Результат роботи програми представлено в параграфі. Цей же алгоритм зі зворотнім порядком подачі підстановок ІР та ІР_1, раундових підключів та перестановки SW є алгоритмом дешифрування.

Програма, що розбиває текст на блоки

Sub Text_to_block()Mesg As VariantCryptg As VariantU_alf As VariantLen_mes As IntegerLen_alf As IntegerNum As Integer(4).Activate_alf = "абвгдеєжзіийклмнопрстуфхцчшщьюя_"= Cells(1, 8).Value _mes = Len(Mesg)_alf = Len(U_alf)= "_"i = 1 To Len_mes//для кожної літери повідомленняj = 1 To Len_alf//визначає номер по алфавітуMid(Mesg, i, 1) = Mid(U_alf, j, 1) Then= jk = 1 To 5//зачитує з таблиці відповідний= Cryptg & Cells(Num, k + 1).Value//рядок з 5 цифрk//та записує його в криптограму= Len_alfIfji("Cryptg: " & Cryptg)_mes = Len(Cryptg)(1, 9).Value = Cryptg(3).Activate= Worksheets(3).UsedRange.Rows.Count + 2= 0Num < Len_mes / 8//розбиває крптограму на блоки по 8j = 1 To 8//та виводить їх(r3 + Num, j + 1).Value = Mid(Cryptg, Num * 8 + j + 1, 1)j= Num + 1Sub


Прграма для заміни блоків з 0 та 1 літерами, згідно таблиці 2.2.

Sub Block_to_text()Mesg As VariantCryptg As VariantU_alf As VariantNum As VariantLen_mes As IntegerLen_alf As Integer_alf = " абвгдеєжзіийклмнопрстуфхцчшщьюя__"_alf = Len(U_alf)= "_"(3).Activate= Worksheets(3).UsedRange.Rows.Counti = 1 To 19j = 1 To 8//записує в 1 рядок 8-бітові блоки= Cryptg & Cells(r3 - (19 - i), j + 10).Valueji("Cryptg: " & Cryptg)_mes = Len(Cryptg)(4).Activate(2, 9).Value = Cryptg

'r4 = Worksheets(4).UsedRange.Columns.Count + 1= ""i = 0 To Len_mes / 5 - 1//для кожного відрізку з 5 цифрj = 1 To Len_alf= ""k = 1 To 5//шукає такий самий рядок з таблиці 2.2= Num & Cells(j, k + 1)k//Mid(Cryptg, 5 * i + 2, 5) = Num Then= Mesg & Mid(U_alf, j, 1)//записує відповідну літеру= Len_alfIfji("Mesg: " & Mesg)(2, 8).Value = Mesg//виводить повідомленняSub


.1.5 Завдання до параграфа

1. Написати програму, що реалізує шифр S-DЕS з даними параметрами. З ключем 0 1 1 0 0 1 0 1 1 0

а) зашифрувати:

00100001 11011101 01101011 01010100;

б) розшифрувати:

00011000 01010101 01111101 00000110.

.Написати програму, що представляє текст у вигляді блоків з 0 та 1, шифрує його шифром S-DЕS. та знову перетврює на текст (для заміни літер скористатися таблицею 2.2.). З її допомогою:

зашифрувати з ключем 1 0 0 1 1 1 1 0 1 1

а) ой_ти_знав_нащо_брав_міщаночку_з_міста;

б) я_не_іла_й_не_істиму_гречаного_тіста; зашифрувати з ключем 0 0 1 0 1 1 0 0 0 1 0

в)котик_муркотик_сірий_животик_край_ліжечка_ходить_пісеньки_ заводить;

г) горіла_сосна_палала_під_ней_дівчина_стояла_русяву_косу_чесала; розшифрувати з ключем 1 0 0 1 1 1 1 0 1 1

д) гтнанздч_єпа_ропдвписущхфжжєщч

е) _іпцй_зве_нпгимябжсрахуч_ошзнаю розшифрувати з ключем 0 0 1 0 1 1 0 0 0 1 0

є) _ц_нмсхц_цєгсооауикиупмьжзвхбшдзч_учвхяшхньопсчгхц

ж) _цбвмтлнржє_еерєрумйпаог_мафіящчжкічщелулівбюк_ллз

2.2 Криптосистеми з відкритим ключем. Система RSA


.2.1 Односторонні фукції. Структура системи RSA

Визначною віхою в історії криптографії стала праця американських математиків У.Діффі та М.Е.Хелмана «Нові напрями в криптографії», опублікована в 1976р. Запропоновані в ній поняття односторонньої функції та функції з секретом стали підставою для створення принципово нових секретних систем та роширеня сфери криптографічних задач.

Отже, що таке одностороння функція? Односторонньою функцією будемо називати функцію F:Х->У, яка має наступні властивості:

)$ зручний алгоритм обчислення значень у=F(х) за прийнятний час;

2)не існує алгоритму обчислення оберненого значення х=F-1(у) (інвертування функції F) за прийнятний час.

Функцією з секретом К називається деяка функція FК:Х->У, що залежить від параметру К і при цьому задовольняє наступним умовам :

)при будь-якому К $ зручний алгоритм обчислення значень у=FК(х);

2)при невідомому К не існує алгоритму інвертування функції FК;

)при відомому К $ зручний алгоритм інвертування функції FК.

Слід зазначити, що питання про існування односторонніх функцій та функцій з секретом залишаеться відкритим. Щодо останніх, існують функції, івертування яких за невідомого К еквівалентне складній математичній задачі, тобто для них припускається виконання властивості 2).

В 1978р. американці Р.Рівест, А.Шамір і Л.Аделман (R.L.Rivest, A.Shamir, L.Adelman) запропонували систему шифрування, створену на основі функції f=хе(mоd m). Ця система була названа за першими літерами імен своїх творців - RSA. Функція f, ймовірно, є функцією з секретом і діє на деяке повідомлення х за таким правилом:


f: х ->хе(mоd m), е, mÎN (2. 2.1)

тоді дешифрування повідомлення а=f(х) зводиться до розвязання конгруенції


хеº а(mоd m). (2. 2.2)


Якщо показник степеня в (3.1.2) є взаємно простим з j(m), тобто


НСД(е,j(m))=1,(2. 2.3)


то (2.2.2) має єдиний розвязок. Тут j(m) - функція Ейлера, кількість натуральних чисел від 1 до (m-1), взаємно простих з m. Зазначимо деякі властивості j(m), відомі з курсу Теорії чисел, які будемо застосовувати далі:


j(1)=1,(2. 2.4)

j(р)=р-1, де р - просте, (2. 2.5)

j(аb)=j(а)j(b),(2. 2.6)


якщо а і b - взаємно прості, тому


jr)=рr-1(р-1), де р - просте, r- натуральне.(2. 2.7)


З (3.1.3-6) бачмо, що j(m) визначається просто, якщо ми маємо розкладення m на прості множники. Далі, визначаємо d, таке, що:

еº1(mоd j(m)), 1?d<j(m)(2. 2.8)


(так як е і j(m) взаємопрості, то таке d існує і єдине). Далі, за теоремою Ейлера, "х, взаємопростого з j(m), виконується хj(m)º1(mоd m), тому

аdº хdеº х(mоd m).(2. 2.9)


Отже, вимагаючи ще, щоб (а,m)=1, отримуємо єдиний розвязок конгруенції (2.2.2) у вигляді х=аd(mоd m).

Зауважимо, що вимога (а,m)=1 не обовязкова у випадку, коли m є добутком різних простих множників. Тому творці RSА запропонували використовувати таке m, що:


m=рq,


де р, q - досить великі прості числа, тоді, згідно (3.1.5,6):


j(m)=j(рq)=j(р)j(q)=(р-1)(q-1),


а умова (2.2.3) набуває виду:


НСД(е,р-1)= НСД(е,q-1)=1.(2. 2.10)


Пара Р=(е, m) є відкритим, тобто відомими всім користувачам, ключем системи. Будь-хто може посилати організатору повідомлення, шифровані функцією f, вказаною в (2.2.1), які організатор читає з допомогою закритого ключа S=(d,m), вибраного за умовою (2.2.8).

Якщо припусти, що супротивнику відомі відкриті числа та принцип шифрування, то при m невеликої розмірності (наприклад, 8 розрядів) досить просто знайти усі прості дільники числа m, перебравши всі числа від 1 до ?m. А потім, обчисливши j(m), знайти ключ d з умови (2.2.8). Проте із ростом m кількість простих чисел, які потрібно перевірити асимптотично дорівнює 2m(ln m)-1. Так, для m, записаного сотнею десяткових знаків, $ не менше 4*1042 простих чисел, що можуть бути його дільниками. Найшвидші з відомих алгоритмів розкладу числа на прості множники не дають результату за прийнятний час - принаймні, за умов використання одного компютера. Тому всі вдалі атаки на систему RSА були здійснені за допомогою розподілу розрахунків.

Для ілюстрації свого методу творці RSА зашифрували деяке повідомлення функцією (2.2.1), взявши в якості m 129-значне число. Отримана криптограма була опублікована разом з відкритими параметрами шифрування, першому, хто дешифрує її, була обіцяна премія в 100$. Було також додатково вказано, що m є добутком двох простих чисел розрядністю 64 та 65 знаків, проте минуло 17 років, перш ніж шифр було розкрито. Не враховуючи теоретичну підготовку, тільки до обчислення було залучено близько 600 добровольців та 1600 компютерів, що працювали впродовж 220 днів.


2.2.2 Алгоритми для реалізації системи

Далі наведемо алгоритми, використані безпосередньо при написанні коду програми.

Обчислення аd(mоd m)

1.Покладемо а0=а, кожне наступне аi обчислюємо за формулою


ai=ai-1×a(mod m), i=1,..,d


2.При і=d отримаємо шукане значенням аd(mоd m).

Алгоритм Евкліда пошуку НСД(а,b).

1.Обчислюємо r - остачу від ділення а на b (не порушуючи загальності, можемо вважати а>b).

2.Якщо r=0, то b і є шукане число.

.Якщо r¹0, то замінюємо пару (а,b) на (b,r) і повторюємо спочатку.

Генератор простих чисел

Тут мається на увазі програма підбору досить великих простих чисел. Принцип її дії ґрунтується на наступній теоремі.

Теорема2.1 Нехай N, S - непарні натуральні числа, такі, що N-1=S*R, причому "простого дільника q числа S $ таке натуральне а, що:


.


Тоді "простий дільник р числа N задовольняє р =1(mоd 2S).

Наслідок. Якщо виконані умови теореми і R?4S+2, то N - просте число.

Маємо наступний алгоритм:

1.Обираємо S - деяке просте число та R - парне з проміжку S?R?4S+2.

2.Перевіряємо число N=RS+1: якщо N не просте, то обираємо інше R, поки не знайдемо просте число. Побудоване таким чином, N>S2, а значить - має вдвічі більший розряд.

.У разі необхідності беремо N в якості вихідного простого числа і повторюємо алгоритм, поки знайдене просте число не буде досить великим.

Цей спосіб реалізується досить просто і дозволяє на персональному компютері отримувати прості числа порядку 1010.


.2.3 Криптоаналіз RSА

Розглянемо далі деякі елементарні атаки на систему та способи захисту від них.

Атака: пошук простих дільників числа m методом факторизації Ферма. Ідея методу полягає в тому, що дільники числа m шукаються у вигляді:

=(х-у)*(х+у),


тоді m=х22 , звідки у22-m.

Починаємо з х=[Öm], і, збільшуючи на 1, шукаємо таке х, що х2-m є повним квадратом. В результаті отримуємо

m=(х-Öx2-m)*(х+Öx2-m), (2.2.11)


якщо m - просте, то (2.2.11) дає тривіальний розклад. Навіть для малих m цей метод є більш ефективним, аніж прямимй підбір. Наприклад, розклад=321161=337*952

атака прямого перебору визначає за 1288 спроби, атака фкторизаціїї - за 79;

для розкладу=656933 = 353 * 1861

атака прямого перебору вимагає 2212 спроб, атака фкторизаціїї - 297, тощо.

Проте цей метод потребує дещо складнішої організації, якщо m є добутком більше ніж 2-х простих множників. Окрім того, метод факторизації успішний за умов близького розташування множників m, тому прості числа р і q варто брати з досить великою різницею. Зрештою, якщо р і q були генеровані незалежно, то ця вимога з високою ймовірністю виконується автоматично.

Атака: обчислення закритого ключа d. Ґрунтується на теоремі Вінера:

Нехай m=рq, де q<р<2q, d<q. Тоді, якщо відома пара (е,m), де е задовольняє (2.2.8), то існує ефективний спосіб обчислення d.

Захист: таким чином, якщо розмір m, наприклад, 1024 біти, потрібно обирати d розміром не менше як 256 бітів.

Атака на систему з загальним модулем: якщо в системі з кількох користувачів всі повідомлення шифруються за єдиним модулем m, то користувач В, може розкласти m за своїми параметрами шифрування еВ, dВ, а потім, знаючи відкритий ключ еА користувача А, може обчислити закрите значення dА.

Захист: для кожного користувача генерувати власне значення m.

Атака Хастада: в системі з кількох користувачів повідомлення шифруються за індивідуальними параметрами для кожного користувача. Користувач В відсилає повідомлення х k адресатам А1, А2,…Аk, зашифроване з параметрами (еі, mі), і=1..k відповідно. Противник перехоплює k fі(х) - шифрованих повідомлень. Якщо еі=е "і=1..k, то противник може відновити повідомлення х, якщо k?е. Навіть якщо хі для і-того користувача є деякою фіксованою перестановкою вихідного повідомлення, наприклад,


хі=і*2m+х, (2.2.12)


все одно противник може отримати х при досить великому k.

Захист: ця атака може бути успішною тільки при невеликому значенні відкритого ключа е. В таких умовах в (2.2.12) потрібно застосовувати не фіксовану, а випадкову перестановку.

Взагалі, для підвищення стійкості криптосистеми RSА рекомендовано використовувати досить великі значення е, наприклад е=216+1=65537.

Атака Франкліна-Рейтера: нехай х, х1 - два вихідних повідомлення, такі, що


х1=g(х) (mоd m),


де g(х)= ах+b(mоd m), b¹0 - деякий лінійний многочлен, і f(х), f(х1) - результат шифрування х, х1 системою RSА з відкритим ключем (е,m). При е=3 противник, знаючи е, m, f(х), f(х1) і g(х) зможе відновити х, х1.

Захист: при е>3 час злому шифру росте пропорційно е2, тому така атака має успіх лише при невеликих значеннях е.

Як бачимо, підвищення безпеки досягається за рахунок накладення певних обмежень на вибір простих дільників основи системи m та збільшення розмірів ключа. Остання вимога обумовлена також стрімким ростом можливостей обчислювальної техніки впродовж останніх десятиріч. Запропонована Ріверстом, Шаміром та Адлеманом система зі 129-значною основою залишалась нерозкритою впродовж 17 років - на сьогодні надійною вважається система на основі RSА з m не менше 1024 бітів. В 2009р. група вчених з Швейцарії, Франції, Нідерландів, Германії та США після трьох-річної праці отримала дані, зашифровані за допомогою коду RSА з модулем m довжиною 768 біт. За їх прогнозами, система з 1024-значною основою може бути розкрита в найближчі 3-4 роки.


.2.4 Програми до параграфа (Borland C++)

Програма шифрування RSA:


#include<iostream>

#include<conio.h>

#include<math.h>Stepen(int a,int d,int M) //функція для обчислення аd(mоd М)

{r=1;(int i=0;i<d;i++)r=r*a%M;r;

}main()

{int x,f_x;e,M,flg;<<"Vvedit vidkrutuy kluch:"<<endl;<<"M= ; cin>>M;<<endl<<"e= ; cin>>e;{<<"Vvedit povodomlennya:"<<endl;>>x;_x=Stepen(x,e,M);//обчислює f(х)=хе(mоd m)<<endl<<"Shifrovane povidomlennya: "<<f_x;();<<endl<<"Prodovzit? Press 1(Tak) 0(Ni):";>>flg;

}while(flg);<<endl<<"Dlya vuhody natusnit Enter...";();0;

}

Результат роботиvidkrutuy kluch:= 39491= 29povodomlennya:

povidomlennya: 30914? Press 1(Tak) 0(Ni):1povodomlennya:

povidomlennya: 18729? Press 1(Tak) 0(Ni):0vuhody natusnit Enter...


Програма дешифрування RSА


#include<iostream>

#include<conio.h>

#include<math.h>Stepen(int a,int d,int M) //функція для обчислення аd(mоd m)

{ int r=1;(int i=0;i<d;i++)r=r*a%M;r;

}NOD(int a,int b) //функція, що знаходить най-

{ int r;//більший спільний дільник а, b//(алгоритм Евкліда)

{if(a<b)

{r=a;a=b;b=r;}=a%b;=r;}(r);b;

}main()

{int x,f_x,d_1;e,M,flg,d,fi_M;=11*23*17; e=29;//вводить параметри шифрування_M=10*22*16;<<"M= "<<M;//виводить відкритий ключ на екран<<endl<<"e= "<<e;//та перевіряє умову (2.2.3)(NOD(e,fi_M)!=1)cout<<endl<<"Perevirte parametry...";{=1;(d*e%fi_M!=1 && d<fi_M)d++;//обчислює ключ для дешифрування

{cout<<endl<<"Vvedit shifrtext: ";>>f_x;i=0;{<<endl<<"Vvedit kluch:";//тричі запрошує ключ для >>d_1;//дешифрування++;}(d_1!=d && i<3);(e*d_1%fi_M!=1)//якщо невірний, відмовляє<<endl<<"Vu ne znaete klucha!";

{x= Stepen(f_x,d_1,M);//інакше -обчислює х=[f(х)]d(mоd m)<<endl<<"Kluch virniy. Povidomlennya: "<<x<<endl;<<"Perevirka: "<<f_x<<" = "<<Stepen(x,e,M)<<endl;

}//перевіряємо: f(х)=хе(mоd m)();<<endl<<"Prodovzit? Press 1(Tak) 0(Ni):";>>flg;

}while(flg);

}<<endl<<"Dlya vuhody natusnit Enter...";();0;

}

Результат роботи (помилка в параметрах)= 4301= 24parametry...vuhody natusnit Enter...

Результат роботи (невірний ключ)= 4301= 29shifrtext: 1505kluch:4712kluch:1423kluch:2047ne znaete klucha!? Press 1(Tak) 0(Ni):0vuhody natusnit Enter...


Результат роботи програми (вірний ключ):

= 4301= 29shifrtext: 1505kluch:2549virniy. Povidomlennya: 4207: 1505 = 1505? Press 1(Tak) 0(Ni):1shifrtext: 3210kluch:2549virniy. Povidomlennya: 1083: 3210 = 3210? Press 1(Tak) 0(Ni):0vuhody natusnit Enter...


Зауважимо, що в даному прикладі закритий ключ міститься в коді програми і виводиться на екран, що, з точки зору безпеки, не дуже добре. Тому краще записувати закритий ключ в файл та зчитувати його звідти.

Програма генерації великих простих чисел (реалізує описаний в 2.2.2 алгоритм). Можна також скористатися таблицею 2.1. простих чисел від 2 до 3011

# include <iostream>

# include <string.h>

# include <conio.h>

# include <math.h>namespace std;Proverka_Deleniem(int N)//визначає, чи є число простим

{ int d,r;=2; r=1;((r!=0)&&(d<N))

{ r=N%d;

d++;

}(!r)return 0;//повертає 0, якщо N - не простеreturn N;//N, якщо N - просте

}Prostoe_chislo()//функція для підбору простого

{ int i,N,R,S;//числа

{cout<<endl<<"Vvedite isxodnoe prostoe: ";>>S;//S - деяке просте

}(!Proverka_Deleniem(S));=1; N=0;R=(S-3)*2;//починаючи з R=(S-3)*2(i)

{ R=R+4;=R*S+1;//шукаємо N у вигляді N=R*S+1(Proverka_Deleniem(N))

{ cout<<endl<<"N="<<N<<"-prostoe.Prodolzit? Press 1(YES) or 0(NO)";>>i;=N;//для продовження беремо N як вихідне

}i++;(i>N/4)

{cout<<endl<<"Sdelano "<<i<<"popytok. Prodolzit? Press 1(YES) or 0(NO)";>>i;

}

}();N;

}main()

{p=Prostoe_chislo();//підбираємо 2 досить велткі прості q=Prostoe_chislo();//числа р і q<<endl<<"Poluchenu chisla: p="<<p<<" q="<<q;();0;

}

Результат роботи програми:isxodnoe prostoe: 11=353-prostoe.Prodolzit? Press 1(YES) or 0(NO)0isxodnoe prostoe: 31=1861-prostoe.Prodolzit? Press 1(YES) or 0(NO)0chisla: p=353 q=1861


Тоді програма шифрування дасть наступний результат:

vidkrutuy kluch:= 656933= 997povodomlennya:

povidomlennya: 287868? Press 1(Tak) 0(Ni):0vuhody natusnit Enter...


Програма, що розкладає m на прості множники способом підбору та факторизації Ферма:


# include<iostream>

# include<conio.h>

# include<math.h>Stepen(int a,int d,int M)//функція для обчислення аd(mоd m)

{ int r=1;(int i=0;i<d;i++)r=r*a%M;r;

}NOD(int a,int b)//функція для знаходження най-

{ int r;// більшого спільного дільника а і b//(алгоритм Евкліда)

{if(a<b)

{r=a;a=b;b=r;}=a%b;=r;}(r);b;

}Pidbor(int M)//функція, що реалізує пошук

{cout<<endl<<"Pryamui pidbor:";//простих множників m переборомi,p,fi_M,count;_M=1;=2;count=0;//починаємо пошук з і=2<<"\nM: "<<M<<" = ";(i<=M)

{if(M%i==0)//якщо m націло ділиться на і, то

{p=i;M=M/p;//в якості m беремо результат діленя

fi_M*=(p-1);i=2;//?(m) домножаємо на (і-1)<<p<<"*";}//і починаємо перебор зновуi++;++;//кількість спроб

}<<"\nfi_M: "<<fi_M<<" operaciy: "<<count;fi_M;

}Ferma(int M)//функція, що реалізує пошук простих

{//множників факторизацією<<endl<<"Factorizacia Ferma:";x,y_int,fi_M,count;sq,y;_M=1;x=(int)pow((double)M,0.5);//починаємо з х=Öm+1=1;

{=pow((double)x,(double)2)-M;cout<<"\nx^2-M= "<<sq;=pow(sq,0.5);cout<<"\ny= "<<y;//обчислюємо Ö(х2-m)_int=(int)pow(sq,0.5);// та [Ö(х2-m)](y==y_int)//якщо вони рівні

{cout<<"\nM: "<<M<<" = "<<(x-y_int)<<" * "<<(x+y_int)<<endl;_M=(x-y_int-1)*(x+y_int-1);//то m=(х-у)*(х+у);}//а ?(m)=(х-у-1)*(х+у-1)++; x++;

}while(x<=M/2);<<"\nfi_M: "<<fi_M<<" operaciy: "<<count;fi_M;

}main()

{int x,f_x;e,M,flg,d,fi_M;<<"Vvedit vidkrutuy kluch:"<<endl;<<"M= "; cin>>M;//вводимо відкритий ключ<<"e= "; cin>>e;_M=Ferma(M);//підбираємо множники m_M=Pidbor(M);(NOD(e,fi_M)!=1)cout<<endl<<"Perevirte parametry...";{=1;//знаючи ?(m) та е, знаходимо d(d*e%fi_M!=1 && d<fi_M)d++;<<endl<<"d= "<<d;

{cout<<endl<<"Vvedit shifrtext: ";>>f_x;= Stepen(f_x,d,M);//обчислюємо х=[f(х)]d(mоd m)<<"Povidomlennya: "<<x<<endl;<<"Perevirka: "<<f_x<<" = "<<Stepen(x,e,M)<<endl;();//перевіряємо: f(х)=хе(mоd m)<<endl<<"Prodovzit? Press 1(Tak) 0(Ni):";>>flg;

}while(flg);

}<<endl<<"Dlya vuhody natusnit Enter...";();0;

}


Результат роботи програми:

vidkrutuy kluch:= 11929= 17Ferma:^2-M= 171= 13.0767^2-M= 392= 19.799^2-M= 615= 24.7992^2-M= 840= 28.9828^2-M= 1067= 32.665^2-M= 1296= 36: 11929 = 79 * 151 _M: 11700 operaciy: 6pidbor:: 11929 = 79*151_M: 11700 operaciy: 228= 2753shifrtext: 10001: 5431: 10001 = 10001? Press 1(Tak) 0(Ni):1shifrtext: 6597: 3442: 6597 = 6597? Press 1(Tak) 0(Ni):0vuhody natusnit Enter...


Програма, що реалізує атаку Франкліна-Рейтера при е=7:


# include<iostream>

# include<conio.h>

# include<math.h>namespace std;Stepen(int a,int d,int M)//функція для обчислення аd(mоd m)

{ int r=1;(int i=0;i<d;i++)r=r*a%M;r;}main()

{ long int x,f_x,x1,f_x1;e,M,flg,a,b,zmn,D;=7; //приймає параметри<<"Vidkrutuy kluch:"<<endl;<<"M= "; cin>>M;<<"e= "<<e<<endl; <<"Vvedite parametry g(x)=ax+b: "<<endl;<<"a= "; cin>>a;<<"b= "; cin>>b;<<"\nShifrovane povodomlennya f(x): ";>>f_x;<<"\nShifrovane povodomlennya f("<<a<<"x + "<<b<<"): ";>>f_x1;//обчислює=(f_x*Stepen(a,e,M)+Stepen(b,e,M))%M;//(ах+b)7 - (а7 *х7+b7) (mоd М)(f_x1<zmn)f_x1+=M;_x1=f_x1-zmn;<<"\n f_x1 - (ax^e+b^e)="<<f_x1;=7*a*b%M;(f_x1%zmn>0)f_x1+=M;_x1=f_x1/zmn;//[(ах+b)7 - (а7 *х7+b7)]/7аb (mоd М)<<"\n f_x1 : 7ab="<<f_x1;();=0;x=1;int count=0; //підбираємо х таке, що: {count++;//х*(а5х5+3а4х4b+5а3х3b2+5а2х2b3+3ахb4 + ++; //+b5) =[(ах+b)7 - (а7 *х7+b7)]/7аb (mоd М)=(Stepen(a*x,5,M)+3*Stepen(a*x,4,M)*b+5*(a*x+b)*Stepen(a*x*b,2,M) +3*a*x*Stepen(b,4,M)+Stepen(b,5,M))%M;(x*x1%M==f_x1)

{zmn=Stepen(x,e,M);<<"\n x^e: "<<zmn;(zmn==f_x)flg=1; } //перевіряє, чи хе =f(х)

} while(!flg && x<=M); (flg)//якщо так, то обчислює х1

{x1=(a*x+b)%М;// і виводить обидва повідомлення<<"\nPovidomlennya: \nx="<<x<<" ax+b="<<x1;<<"\nPerevirka: \nf_x="<<Stepen(x,e,M)<<" f_x1="<<Stepen(x1,e,M);

}cout<<"\n x ne znaideno...";//інакше - «х не знайдено»<< endl<<"Operaciy: "<<count;<<endl<<"Dlya vuhody natusnit Enter...";();0;

}

Результат роботи програми:kluch:= 697= 7parametry g(x)=ax+b:= 401= 22povodomlennya f(x): 408povodomlennya f(401x + 22): 350_x1 - (ax^e+b^e)=357_x1 : eab=306^e: 408:=238 ax+b=668: f_x=408 f_x1=350 : 237vuhody natusnit Enter...

2.2.5 Завдання до параграфа

1.Написати програму реалізації RSА. Зашифрувати за вказаним ключем:

а) М=481, е=5: 175, 231, 044; е=11: 175 231 044;

б) М=2431, е=9: 1240, 107, 1111;

в)М=10553, е=13: 7864, 222, 4041;

.За даними р і q підбрати закритий ключ, що задовольняє (2.2.8), розшифрувати:

а) р=37, q=13; е=7: 397, 127, 034;

б) р=157, q=113: е=17: 12511, 2318, 8802;

в) p=173, q=61; е= 7: 5114, 2537, 6309.

.Написати програму, що розкладає m на прості множники способом:

а) прямого перебору;

б) факторизації Ферма;

за відкритим ключем підібрати закритий, підрахувати кількість операцій. Розшифрувати:

а) М=165791, е=23: 2909

б) М=391, е=3: 237, 376, 190

в) М=17593, е=103: 13132, 1194, 16174.

.Написати програму, що реалізує атаку Франкліна-Рейтера для е=3,5,7. За данним відкритим ключем та функцією g(х)=а*х+b розшифрувати повідомлення f(х), f(х1), де х1=g(х):

а) М= 61, е=3; а=17, b=4; f(х)=8, f(х1)=27

б) М= 73, е=3; а=13, b=4; f(х)=22, f(х1)=70

в) М= 143, е=5; а=17, b=45; f(х)=10, f(х1)=133

г) М= 731, е=5; а=14, b=25; f(х)=138, f(х1)=63.

д) М= 591, е=7; а=29, b=5; f(х)=462, f(х1)=191.

е) М= 39, е=7; а=20, b=3; f(х)=12, f(х1)=9.

Частина 3. Нові напрямки розвитку


.1 Криптографічні протоколи


.1.1 Означення та принципи організації

Застосування односторонніх функцій відкрило для криптографії нові області, навіть не повязані з шифруванням безпосередньо. Однією з нових галузей розвитку стали криптографічні протоколи.

Криптографічним протоколом будемо називати певний порядок взаемодії 2-х або більше абонентів для досягнення певної мети. При цьому абоненти, взагалі кажучи, не довіряють один одному; кожен з них може виявитися противником. Криптографічний протокол має відповідати наступним принципам:

)повнота - якщо обидва (всі) учасники виконують дії, предписані протоколом, то мета, визначена в протоколі, буде досягнута;

2)коректність якщо 1 або кілька учасників саботують протокол, то досягти своеї мети, відмінної від заначеної в протоколі, вони можуть лише з якнайменшою імовірністю;

)нульовий розголос - так як будь-хто з учасників може виявитися противником, то після виконання протоколу кожен учасник повинен отримати не більше інформації, ніж він сам міг би отримати, не виконуючи протоколу.

Розріняють кілька типів криптографічних протоколів - згідно задачам, які вони розвязують. Наприклад:

протоколи аутетифікації (ідентифікації);

-електроний підпис;

протокол «підкидання монети»;

протокол таємного голосування;

електронні гроші та ін.

Розглянемо далі деякі з них.

3.1.2 Схема аутентифікації Шнорра

В протоколі 2 учасника - Аліса (кліент), що має довести свою аутентичність та Боб (охоронний компютер системи), який повинен її перевірити. Аліса має 2 ключа - відкритий К1 та секретний К2. Їй потрібно довести, що вона знає К2, причому так, щоб це можна було перевірити, знаючи тільки К1.

Схема, запропонована Шнорром в 1989р., є однією з найєфективніших та полягає в наступному.

Нехай р і q - прості числа, такі, що q ділить р-1; число g Î Zр, g¹1 - таке, що gq=1(mоd р). В якості секретного ключа Аліса обирає х Î Zq, після чого публікує відкритий ключ у=g q-х(mоd р). Протокол Шнорра складається з трьох раундів:

.Аліса обирає випадкове число k Î {1,…,q-1}, обчислює r=g k(mоd р) та висилає r Бобу.

2.Боб обирає випадковий запит е Î {1,..,2t-1}, де t - деякий параметр, і висилає е Алісі.

.Аліса обчислює s=k+хе та висилає s Бобу.

.Боб перевіряє співвідношення r=gsуе, і, якщо воно виконується, визнає доведення, в іншому разі - відхиляє.

Надійність схеми Шнорра грунтується на тому, що задача обчислення х Î Zq при відомих р, q, g і у=gх(mоd р) є задачею дискретного логарифмування. Для неї на данний момент не існує ефективних алгоритмів, тому вона вважається складною. Шнорр рекомендував брати числа р і q порядка 512 та 140 біт відповідно. Для прикладу нехай р=103, q=17, тоді:

0.Боб обирає g=8, 817=1(mоd 103); Аліса обирає секретний ключ х=9, публікує у= 817-х=69(mоd 103)

1.Аліса обирає k=4 та посилає Бобу r=8 4 =79(mоd 103)

2.Боб посилає випадковий запит е=7

3.Аліса відповідає: s=4+7*х=16(mоd 17)

4.Боб перевіряє відповідність: gsуе =816*697=79. Доказ аутентифікації прийнято.

Дана схема відповідає першим 2-м вимогам до криптографічного протоколу, тобто повноти та коректності. Вона не є схемою з нульовим розголосом, проте має дещо слабшу властивість - є схемою з нільовим розголосом відносно чесного перевіряючого, який на кроці 2 і справді посилає випадковий запит. Цього досить, щоб використати, її, наприклад, для контролю за доступом в певне місце. Тоді Аліса - це електронна картка доступу, Боб - компьютер охорони; його чесність сумніву не підлягає.


.1.3 Програми до параграфа (Borland C++)

Програма, що реалізує протокол аутентифікації.


# include<iostream>

# include<stdio.h>

# include<conio.h>

# include<math.h>namespace std;Stpn(int a,int b, int M)//функція для обчислення аb(mоd М)

{ int r=1;(int i=1;i<=b;i++)r=r*a%M;r;

}main()

{p,q,g,scr_key,opn_key,e,t,k,r,s;<<"\nBob: ";//Боб:=17;p=103;=2;{e=Stpn(g,q,p);g++;}(e!=1 && g<p);//обирає g: gq=1(mоd р)-;<<"p="<<p<<" q="<<q<<" g="<<g;();<<"\nAlice: ";//Аліса:_key=9;//обирає секретний ключx=q-scr_key;_key=Stpn(g,x,p);//обчислює відкритий ключ<<"opn_key: "<<opn_key;=4;=Stpn(g,k,p);<<"\nr: "<<r;//обчислює та відправляє k();<<"\nBob: ";//Боб:=8;=100%31;<<"Zapros: "<<e;//обирає та відправляє е();<<"\nAlice: ";//Аліса:=(e*scr_key+k)%q;<<"Otvet: "<<s;//обчислює відповідне s та відправляє();//відповідь<<"\nBob: ";//Боб:r1,r2;=Stpn(g,s,p);=Stpn(opn_key,e,p);//перевіряє отриману відповідь, після чого=r1*r2%p;// визнає або відхиляє аутетифікацію(r==r1)cout<<r<<"="<<r1<<" dokazatelstvo prinyato";cout<<r<<"!="<<r1<<" dokazatelstvo ne prinyato";();0;

}


В даній програмі для наглядності усі повідомлення, що ними обмінюються учасники протоколу, виводяться на екран.

Результати роботи програми наведені в параграфі


.1.4 Завдання до параграфа

1.Написати програму, що реалізує протокол аутентифікації Шнорра. Виконати протокол з вказаними параметрами:

а) р=1093, q=13;

б) р=2297, q=41;

в) р=1181, q=59;

г) р=1117, q=31.

Відповіді до завдань


До §1.1:

1.а)Имццвгпбемцагцтжтгщцтгйдгсатжтгетфіцахвгдгсм_мцагцтжтгщцтгнтрчгукзздїцахвг

б)Фагутьяевутмєгєхявутжянгутжєюахуїатжзаіичагатмєгєхявєхятоштьяевитжзєкуїат

в) Життя_закоротке_для_щастя_а_задовге_для_терпіння

г) Не_будь_тією_скотиною_що_догори_щетиною

д) Сів_кіт_на_сало_і_кричить_мало

. а) Всцфашажчтжєшсвбж_ічтцфжяшжатрі_іж

б) Сзтнгиопбчсітиашлбн_бцтцгзгубь_з_фашл

в) Голим_задом_їжака_не_вбєш

г) Краще_битися_орлом_ніж_жити_зайцем

д) Кому_ведеться_тому_і_півень_несеться

.а) Ой, у полі жито - сидить зайчик. Сидить собі, ше й моргає, ще й ніжками чебиряє - бо він зайчик. (народна пісня)

Ключ для дешифрування - 12.

б) підказка «ц»= «_»: Їе_іч_ьїйв_лч_е_аяіпв_аімлу_ч_иїивю_ьїйїф_хйїз_юїждіїф_єїбчєд_еюмлу.

Ой на горі та й женці жнуть а по-під горою яром долиною козаки йдуть.(народна пісня)

Ключ для дешифрування - 7.

.а) Я бачив дивний сон - немов переді мною безмірна та пуста і дика площина. і я, прикований ланцом залізним, стою, а далі - тисячі таких самих, як я. і кожному чоло літа і жаль порили, і в кожного в очах горить любові жар. і плечі, як один, додолу всі схилили, мов давить всіх один якийсь страшний тягар.(І.Франко)

б) Як зараз бачу: з-за ріки - дві кручі, наче маяки; одна зелена, чорна друга. Чи літнє сонце, чи зав'юга, вони стоять собі віки. На чорній кручі чорний дуб, як добрий воїн-вітролюб, весь посмаглілий, обгорілий, стоїть на кручі потемнілий. Кому б сказати все? Кому б? Чому ж та круча нависа? Чому лиш чебер та роса лежать на схилі одиноко, і стовбур, спалений високо, як меч, ввігнався в небеса?(А.Малишко)

в) підказка «б» - « »:

Вйзф нтшуф -нтштзф, їтмкф, юцзф, ікчю_уупю екфзф, шціфзф ян_ияц. нчуф зти_зф рйияч, ючн шич якцзф, єф ут' ншз_м - ші_нйл_х іифдяц. ншт чгцзч, йшт єфечючу_зч, єтзтуцо дйю, нтштзфп зйуф. ші_нфзч ншт, шю_пзчшщ _ вкцу_зч, ф п зтгфзф рнчкф о шфючиуф.

Була весна -весела, щедра, мила, промінням грала, сипала квітки. Вона летіла хутко, мов сто крила, за нею вслід - співучії пташки. Все ожило, усе загомоніло, зелений шум, веселая луна. Співало все, сміялось і бриніло, а я лежала хвора й самотна.(Л.Українка)

г)Ти знаєш що ти людина ти знаєш про це чи ні усмішка твоя єдина мука твоя єдина очі твої одні більше тебе не буде завтра на цій землі інші ходитимуть люди інші кохатимуть люди добрі ласкаві й злі сьогодні усе для тебе озера гаї степи і жити спішити треба кохати спішити треба гляди ж не проспи бо ти на землі людина і хочеш того чи ні усмішка твоя єдина мука твоя єдина очі твої одні.(В.Симоненко);

д) підказка «й» - « »:

Ьщїкїщ гзех чх іем_х а'уллу їа ц їщнщ_м чщ'лм шасаїм фх їа їмб з цмст ч ьаса'уллу н_аехлзїк еасагуп суїм лу в іафз б_ушк 'скашх 'еувїх'к 'щ_щг схім 'нучмїх ну'лу ощш лмгуп їмбх 'нагучмїх'к цхїх іафз ьщїк гзех 'зелу в лм чоаьуе 'зелуе нщ_щсашу озгз 'увїк ом_чх'їу бчуїбх озгз 'увїк бчуїбх лм еа_ашу озгз схїк лм лхі 'скашх ьу_бу у чуг 'суш їхі ьм_вфхі _ашїмлщ їм ба_м скагачмв еурлм еацщ бчуїх шуєгзїк _ у лм'їмлщ ящ є гсв ещлщ чщ'щсм чщ'лм

Гетьте думи ви хмари осінні то ж тепера весна золота чи то так у жалю в голосінні проминуть молодії літа ні я хочу крізь сльози сміятись серед лиха співати пісні без надії таки сподіватись жити хочу геть думи сумні я на вбогім сумнім перелозі буду сіять барвисті квітки буду сіять квітки на морозі буду лить на них сльози гіркі і від сліз тих гарячих розтане та кора льодовая міцна може квіти зійдуть і настане ще й для мене весела весна. (Л.Українка)

До §1.2:

1.а) АБИЛЧ_ИЧІОЩ__КОПУВАУИЛЇЖ_ТЕ

б) КУЛІК_СВОЄ_БОЛОТО_ХВАЛИТЬ

в) НВЕС_МЛАЕСЕ__КЖНЯИ_ЦІІШ_Ц

г) САМ_НЕ_ГАМ_І_ТОБІ_НЕ_ДАМ_

д) ХОДИВ_ЯК_ЗА_СЬОМИМ_ВІТРОМ

.а) ЕРТЩ_ТП_ЕІВ_ІІНЕПСН_ВИЛІА -


12345XXX-XXX-XX--XX--XXXX---XX

Таблиця можливих сполучень стовпців: після 4-го може стояти тільки 1-й, після 3-го - 2-гий, після 5-го - 3-тій, отже:


1234541532ЕРТЩ_ЩЕ_ТРТП_ЕІЕТІ_ПВ_ІІНІВНІ_ЕПСН_НЕ_СПВИЛІАІВАЛИ

Текст: ЩЕ_ТРЕТІ_ПІВНІ_НЕ_СПІВАЛИ

Перестановка для дешифрування: 41532

б) ЬКИТНОЕ_НКІЮ_ВКУШ_ККЗУРИУ

Таблиця можливих сполучень стовпців: після 2-го - 3-тій, після 3-го - 4 або 5, потім 1-ший; останній - 4 або 5.


12345XXX--XX-XXX-X---X-XX-X-XX

Текст: КИНЬТЕ_КОНЮ_КІВШ_КУКУРУЗИ

Перестановка для дешифрування: 23514

в) Т_ХНОЛВА_ИОИВ_Д_ОВРГЛУІ_К


12345XX---XX-X--XXXX-------XXX

По таблиці: після 3-го може стояти тільки 1-ший, тоді після 5-го - 2-гий; після 1-го - 4-тий або 5-тий, імовірніше - 5-тий. Отримаємо:


1234531524Т_ХНОХТО_НЛВА_ИАЛИВ_ОИВ_ДВОДИ__ОВРГВ_ГОРЛУІ_КІЛКУ_

Текст: ХТО_НАЛИВ_ВОДИ_В_ГОРІЛКУ_

Перестановка для розшифрування: 31524

г) ЛБХІ_ІЬСЛ_ЖАЇ__РВПАД_ІУРЖ


12345XX---XXX-XX-XX--X-XX--X-X

Після 2-го може бути тільки 4-тий, після 4-го - 5-тий. З-тій не може стояти після 1-го; спробуємо 31 спереду або ззаду 245. Правильний варіант:


1234531425ЛБХІ_ХЛІБ_ІЬСЛ_СІЛЬ_ЖАЇ__ЇЖ_А_РВПАДПРАВД_ІУРЖУ_РІЖ

Текст: ХЛІБ_СІЛЬ_ЇЖ_А_ПРАВДУ_РІЖ

Перестановка для рорзшифрування: 31425

д) ЇОА_НЕР_ЧГ_МСМІНВВИОІКІВШ


12345X-X-XXX-X-XXX---X-XX---XX

За таблицею: після 3-го стоїть 4-тий або 5-тий. Якщо 5-тий, то після 5-го - 2-гий, після 1-го - 4-тий. Спробуємо:


1234535214ЇОА_Н1АНОЇ_ЕР_ЧГ2_ГРЕЧ_МСМІ3СІМ_МНВВИО4ВОВНИІКІВШ5ІШКІВ

Бачимо, що наше припущення було вірним, проте при шифруванні були перемішані також і рядки. Відновлюємо порядок:


3СІМ_М5ІШКІВ2_ГРЕЧ1АНОЇ_4ВОВНИ

Текст: СІМ_МІШКІВ_ГРЕЧАНОЇ_ВОВНИ

Перестановка для розшифрування: 35214

Зауваження: тут для шифрування рядків і стовпців застосовувалась та сама перестановка. Проте це не обовязково.

е) ЛМ_ААГБАІЛАВОПЛИ__МШЦЯ_ЙЕ


12345XXX-XXXХXXXХX--X-XXX-X-XX

За таблицею: після 2-го може стояти тільки 4-тий, після 1-го - 5-тий; тоді після 4-го - 1-ший, після 5-го - 3-тій.


1234524153ЛМ_АА1МАЛА_ГБАІЛ2БІГЛААВОПЛ3ВПАЛОИ__МШ4_МИШ_ЦЯ_ЙЕ5ЯЙЦЕ_

Відновлюємо порядок рядків:


2БІГЛА4_МИШ_1МАЛА_5ЯЙЦЕ_3ВПАЛО

Текст: БІГЛА_МИШ_МАЛА_ЯЙЦЕ_ВПАЛО

Перестановка для розшифрування: 24153

є) _АЛИЄДЗУБ_ЯС_ЯТНСЯ_ЕПААД_


12345X--X--XXXX-XX-XXX-XX--XXX

За таблицею: після 5-го - тільки перший. Тоді після 2-го - 5-тий, після 4-го або 3-тій, або він останній і 3-тій - після 1-го. Перевіряємо:


1234525134_АЛИЄ1АЄ_ЛИДЗУБ_2З_ДУБЯС_ЯТ3СТЯ_ЯНСЯ_Е4СЕНЯ_ПААД_5А_ПАД

2З_ДУБ5А_ПАД1АЄ_ЛИ3СТЯ_Я4СЕНЯ_

Текст: З_ДУБА_ПАДАЄ_ЛИСТЯ_ЯСЕНЯ_

Перестановка для розшифрування: 25134

До §1.3:

1.а) Фцйтгурюггїмхзшмжььмссігцдіьфдфцєрчнгжяагешдтарп

б) Хяенцнаікхакдррузіщпдвйдкртчфьмгїрдепіщпдвй

в) Гпвоцтотшншєноьдвпєембцоит_яєе

г) Сфйїолхвнгєцдшщяфіемобошполуяьйжнбопчшіемоб

д) Хвостик як ниточка само як калиточка очі як насінинки.

е) Коло_вуха_завірюха_а_у_вусі_ярмарок.

є) У_пічі_мокне_на_воді_сохне.

ж) На_літо_вдягається_а_зимою_одежі_цуруається.

.а) Довжина ключа: 4

Ключ: чорт

Текст:

Жив_собі_бідний_чоловік_та_було_в_нього_багато_дітей_Поки_діти_були_малі_й_журу_мав_малу_Та_коли_діти_підросли_стали_багато_їсти_чоловік_впав_у_тяжку_біду_Ніяк_не_міг_для_всіх_хліба_заробити_А_тут_кожного_ще_й_одягнути_треба_Подався_бідний_в_світ_шукати_такого_заробітку_щоб_можна_було_прогодувати_дітей_Ходив_ходив_але_роботи_такої_ніде_не_знаходив__Ех_думає_собі_чоловік_хоч_би_в_чорта_знайшлася_робота_й_до_нього_б_найнявся_При_цих_думках_назустріч_іде_високий_вусатий_чолов'яга_А_то_був_не_чоловік_а_сам_чорт_Куди_йдеш_чоловіче_питає_Шукаю_заробітку_бо_дуже_бідую_з_сім'єю_Я_тобі_роботу_дам_каже_чорт_Та_спершу_нам_треба_вогонь_розпалити_щоб_зварити_їжу_Іди_в_ліс_і_принеси_дуба_та_побільшого_Відчув_чоловік_що_тут_щось_неладне_та_все_ж_в_ліс_пішов_Хотів_втекти_та_подумав_що_чорт_все_одно_його_знайде_Став_на_краю_лісу_пробує_вирвати_дерево_та_де_там_Воно_й_не_ворухнуло_гіллям_Став_чоловік_кору_з_дерева_обдирати_Обдирав_обдирав_а_потім_взяв_мотузяку_й_почав_нею_обв'язувати_дерева_Прийшов_у_цей_час_чорт_і_питає_Що_ти_робиш_Хочу_весь_ліс_тобі_на_вогонь_принести_Не_буду_ж_я_тобі_по_деревинці_носити_Налякався_чорт_вирвав_сам_дерево_взяв_на_плече_й_пішов_Почвалав_за_ним_і_чоловік_Наварили_їсти_поїли_й_каже_чорт_чоловікові_А_тепер_давай_з_тобою_битися_Виломи_собі_палицю_а_я_виломлю_собі_Виломив_бідняк_в_кущах_жердину_чорт_вирвав_із_землі_дерево_розмахує_ним_у_повітрі_наче_розгон_набирає_Я_не_хочу_битися_на_полі_Хочу_битися_тільки_в_хаті_каже_чоловік_Чорт_нічого_не_міг_проти_цього_сказати_Згодився_Але_зайти_до_хати_з_деревиною_чорт_не_може_деревина_не_вміщається_Тим_часом_бідняк_давай_періщити_його_жердиною_Пищить_верещить_чорт_просить_пощадити_Пошкодував_його_чоловік_відпустив_На_другий_день_послав_чорт_чоловіка_по_воду_Та_дав_таке_відро_що_ледве_порожнє_доніс_до_криниці_Думав_бідняк_думав_що_йому_робити_й_почав_обкопувати_криницю_Бачить_чорт_що_чоловік_забарився_й_подався_його_розшукувати_Прийшов_і_бачить_чоловік_обкопує_криницю_Що_це_ти_робиш_здивувався_чорт__Та_видиш_що_криницю_обкопую_Що_мені_ходити_весь_час_з_цим_відерцем_по_воду_коли_я_можу_цілу_криницю_на_місце_принести (Нар. творчість)

б) Довжина ключа: 5

Ключ: козак

Текст:

Ішло_два_козаки_степом_надибали_дерево_й_сіли_в_холодку_Один_на_бандурці_пограває_а_другий_слухає_Коли_се_один_і_каже_Ой_братику_біда_Смерть_іде_А_воно_бачите_в_степу_так_здалека_видно_Ну_то_що_каже_той_Та_вона_ж_нас_постинає_Тікаймо_Е_ні_брате_не_подоба_козакам_утікати_Та_й_спека_он_яка_чортяча_не_дуже_то_й_підбіжиш_Будем_уже_сидіть_Раз_мати_на_світ_родила_раз_І_помирати_Чи_так_то_й_так_Сидять_Надійшла_смерть_і_каже__Оце_й_добре_що_я_вас_волоцюг_спіткала_Годі_вам_гуляти_та_розкошувати_у_шовкових_жупанах_ходити_та_мед_вино_пити_Ось_я_вас_із_світу_зжену_косою_голови_постинаю_Стинай_каже_один_козак_на_то_твоя_сила_й_воля_Тільки_дай_мені_милостива_пані_перед_смертю_люльку_покурити_Ну_каже_смерть_коли_ти_мене_милостивою_панею_назвав_то_вже_кури_собі_Вийняв_козак_люльку_та_як_закурив_А_тютюн_добрячий_міцний_як_пішов_од_його_дух_та_дим_то_смерть_аж_набік_одійшла_Оце_каже_який_поганий_дух_Як_се_ти_таку_погань_куриш_Та_що_ж_каже_козак_так_мені_суджено_Як_розійшовся_дим_та_дух_смерть_знов_приступила_Ну_каже_покурив_тепер_я_вас_обох_постинаю_Стривай_милостива_пані_дай_і_мені_пільгу_каже_другий_козак_Дозволь_мені_перед_смертю_табаки_понюхати_Нюхай_каже_та_знай_мою_добрість_Вийняв_той_козак_ріжка_бере_понюшку_а_сам_думає_як_би_йому_призвести_смерть_щоб_вона_понюхала_Нюхнув_на_один_бік_нюхнув_на_другий_крекнув_бо_табака_була_добре_заправлена_там_до_неї_було_й_чемериці_й_тургуну_й_перцю_додано_для_моці_щоб_у_носі_крутило_Хіба_ж_воно_добре_пита_смерть_Та_як_кому_каже_козак_Ану_дай_спробувати_просить_смерть_На_милостива_пані_Як_нюхнула_смерть_як_закрутить_їй_у_носі_як_чхне_вона_аж_косу_впустила_Цур_же_йому_каже_яке_погане_Ще_поганіше_ніж_той_дим_І_як_се_ти_таке_паскудство_вживаєш_Отак_як_бачиш_каже_козак_Приймаю_муку_цілий_вік_бо_так_уже_мені_пороблено_чи_наслано_бог_його_зна_Мушу_терпіти_А_каже_смерть_Коли_так_не_буду_ж_я_вас_косою_стинати_То_не_штука_вмерти_а_от_ти_чхай_іще_п'ятдесят_літ_От_таким_чином_і_визволилися_козаки_від_наглої_смерті (Нар. творчість)

в) Довжина ключа: 5

Ключ: котик

Текст:

В_одному_селі_жив_сирота_Іванко_Як_умирали_його_тато_й_мама_то_лишили_йому_стару_хатку_і_городу_латку_А_в_тому_селі_був_дідич_Стульморда_Люди_його_обходили_десятою_дорогою_бо_ніхто_з_ним_не_хотів_мати_дочиніння_Якось_дідич_став_коло_Іванкової_хати_і_крикнув_А_ти_хто_такий_Я_собі_Іванко_А_нащо_тобі_хата_та_ще_й_город_У_хаті_живу_а_з_города_годуюся_Про_це_й_дурень_знає_Пан_подумав_і_сказав_Іди_до_мене_фірманом_бо_цей_город_я_забираю_На_ньому_буде_пасіка_Хіба_у_вас_паночку_мало_свого_поля_Гріх_будете_мати_Гріх_най_іде_в_міх_зверху_макогоном_Не_хочеш_бути_фірманом_то_забирайся_із_села_Іванко_напік_собі_картопляників_кинув_у_торбину_кілька_яблук_і_помандрував_На_березі_Пруту_побачив_журавку_Підійшов_а_птаха_не_тікає_взяв_у_руки_крило_перебите_Вона_попросила_Допоможи_леґіню_Уже_п'ять_днів_сиджу_тут_голодна_бо_рани_болять_Іванко_помив_рани_порвав_сорочку_й_перев'язав_їх_Відтак_зловив_у_Пруті_рибку_й_нагодував_птицю_Хотів_зробити_їй_і_хатку_але_тільки_підійшов_до_трощі_то_почув_Не_рви_мене_леґіню_бо_може_прийде_той_що_я_його_чекаю_А_ти_що_за_одна_Дівчина_тростинка_Кого_чекаєш_Свого_визволителя_Ану_покажися_Голос_відповів_Два_рази_я_вже_показувалася_Та_що_з_того_Як_пішли_так_і_нема_по_сьогоднішній_день_Ще_можу_показатись_один_єдиний_раз_Останній_раз_мені_й_покажись_Бігме_не_обдурю_Ну_добре_дивися_на_вершечок_трощі_Раптом_Іванко_побачив_перед_собою_чарівну_дівчину_Вона_була_така_файна_як_перша_квітка_навесні_але_дуже_сумна_Чому_ти_сумна_Мене_украла_від_батьків_зла_відьма_Хотіла_щоб_я_віддалась_за_її_сина_велетня_Я_не_схотіла_і_втекла_сховалася_в_цій_трощі_Відьма_мене_знайшла_і_обернула_в_тростинку_Аби_мене_визволити_треба_викрасти_мій_перстень_і_покласти_його_на_вершечок_І_дівчина_зникла_Вона_дуже_сподобалася_нашому_Іванкові_І_вирішив_їй_допомогти_Повернувся_до_журавки_й_каже_Нам_треба_розлучитися_Куди_підеш_спитала_журавка_Піду_шукати_те_про_що_не_можна_говорити_Най_тобі_щастить_(Нар. творчість)

г) Довжина ключа: 6

Ключ: трошки

Текст:

Було_в_чоловіка_три_сини_два_розумних_а_третій_Іван_дурний_Батько_їх_поділив_хазяйством_та_й_умер_Пішли_всі_брати_щастя_шукати_Тільки_розумні_своє_хазяйство_покидали_дома_а_в_Івана_з_хазяйства_була_одна_ступа_так_він_і_ту_з_собою_взяв_Ідуть_вони_та_й_ідуть_і_вже_стало_смеркать_Дійшли_до_лісу_та_й_кажуть_Давайте_виліземо_на_дуба_та_переночуємо_а_то_щоб_розбійники_не_напали_Один_і_каже_А_цього_дурного_біса_де_дінемо_з_ступою_Іван_на_те_Думайте_за_себе_а_я_сам_вилізу_на_дуба_та_й_заночую_Полізли_розумні_аж_на_самий_вершок_дуба_і_сидять_а_Іван_і_собі_лізе_а_за_собою_і_ступу_тягне_на_дуба_Виліз_сидить_і_ступу_держить_От_ідуть_розбійники_з_своїх_промислів_та_й_стали_ночувать_під_тим_дубом_Назбирали_дров_собі_зачали_варить_у_великому_казані_куліш_на_вечерю_Наварили_посідали_кругом_казана_побрали_ложки_та_тільки_що_стали_їсти_та_все_студять_бо_дуже_гарячий_був_а_Іван_як_пустить_ступу_та_прямо_в_казан_Кип'ячений_куліш_геть_чисто_позаляпував_їм_очі_Вони_з_ляку_як_посхвачувалися_та_й_ну_тікать_у_ліс_забули_й_товар_котрий_награбили_в_крамарів_Іван_тоді_зліз_з_дуба_та_й_каже_братам_Лізьте_додолу_Брати_позлазили_забрали_увесь_товар_коні_і_поїхали_додому_а_Іван_узяв_собі_тільки_сопілку_Узяв_він_ту_сопілку_і_ну_грать_А_була_та_сопілка_не_проста_а_чарівна_як_заграє_так_усе_живе_й_танцює_От_заграв_Іван_так_і_пішло_все_танцювать_і_вовки_і_зайці_і_лисиці_й_ведмеді_А_Іван_все_гра_та_сміється_Уже_ті_звірі_сердешні_танцювали_танцювали_і_поморились_Уже_за_дерева_хватались_та_держались_щоб_не_танцювать_та_ні_не_вдержаться_Уморився_Іван_ліг_відпочивать_Трохи_оддихнувши_встав_і_пішов_у_город_Люди_саме_несли_на_базар_продавать_хто_паляниці_хто_крашанки_в_коробці_а_хто_квас_у_відрах_Іван_як_заграв_у_дудочку_так_і_пішли_всі_танцювать_Один_чоловік_ніс_коробку_яєць_та_побив_їх_чисто_танцюючи_і_сам_як_чортяка_убрався_в_яєчню_Ті_що_спали_посхвачувались_та_давай_і_собі_танцювать_хто_голий_по_хаті_хто_без_штанів_хто_без_сорочки_а_хто_без_спідниці_Пішов_увесь_город_перевертом_і_собаки_і_свині_і_кури_все_чисто_що_було_живе_пустилося_танцювати (Нар. творчість)

д) Довжина ключа: 7

Ключ: на_зорі

Текст:

Жив_де_не_жив_один_багатий_граф_Мав_він_немало_доброї_землі_мав_немало_пустої_мав_лісу_саду_і_пасовища_а_худоби_видимо_і_невидимо_Граф_любив_ходити_на_полювання_Днями_тижнями_блукав_з_рушницею_по_лісах_і_полях_Та_ніколи_не_заходив_до_Страшного_лісу_звідки_ніхто_не_міг_вийти_Коли_постарів_маєток_передав_трьом_синам_і_так_наказував_Сини_мої_Залишаю_свій_маєток_на_вас_Управляйте_ним_і_жийте_в_згоді_Ви_два_старші_міркуйте_за_молодшого_бо_він_ще_легкодумний_непослушний_Учитися_не_хоче_тільки_б_забавлявся_та_біду_робив_Бережіть_його_Коли_підете_на_полювання_можете_стріляти_звірину_в_усіх_хащах_тільки_варуйтеся_Страшного_лісу_Я_наказав_повісити_на_ліс_табличку_з_написом_щоб_туди_ніхто_не_смів_ходити_А_коли_хтось_осмілився_б_зайти_живим_звідти_не_повернеться_Граф_помер_хлопці_залишилися_одні_Наймолодший_вже_не_сидить_дома_не_грається_в_попелі_бо_часто_бігає_по_хащах_по_садах_і_полях_Навіть_однієї_години_не_посидить_на_місці_все_на_ногах_на_ногах_Хоч_до_школи_не_ходив_читати_писати_навчився_добре_від_братів_У_графа_було_багато_слуг_і_робітників_Старші_сини_наглядали_за_ними_молодший_не_журився_нічим_Перекине_бувало_через_плече_рушницю_піде_лісами_полями_Ходив_куди_ходив_та_Страшного_лісу_остерігався_бо_слова_батька_пам'ятав_Одного_разу_брати_цілий_день_ходили_лісом_полювали_па_звірину_Як_Страшного_лісу_не_береглися_помилилися_і_несамохіть_зайшли_до_нього_Дивляться_звірини_птахів_тут_розвелося_стільки_що_під_кожним_кущем_під_кожним_деревом_заєць_сарна_олень_дикий_кабан_Люди_сюди_ніколи_не_заходили_звірина_множилася_Хлопці_попали_до_Страшного_лісу_вранці_і_блудили_по_ньому_цілий_день_По_обіді_натрапили_на_криницю_з_чистою_водою_недалеко_прекрасного_явора_Тут_брати_сіли_щось_перекусити_і_відпочити_Напекли_м'яса_напилися_свіжої_води_і_рушили_далі_Ще_мало_походім_може_якусь_дивну_звірину_стрітимо_А_понад_вечір_підемо_додому_Звірини_в_лісі_достатньо_Стріляють_брати_складають_на_громади_Так_їх_застала_і_ніч_Зібралися_додому_Оглядаються_глядають_дорогу_а_знайти_дорогу_не_можуть_Ходять_сюди_туди_бігають_та_марно_Наче_їм_хтось_очі_зав'язав_Ходили_блукали_до_темної_ночі_і_знову_попали_до_криниці_під_явором_На_дереві_гілля_стелиться_широко_а_в_криниці_вода_чиста_холодна_Розпалім_тут_вогонь_дорадилися_брати_Напечім_собі_м'яса_і_переночуймо_А_на_зорях_зберемося_і_підемо_додому_(Нар. творчість)

е) Довжина ключа: 6

Ключове слово: щастя

Текст:

Ішли_собі_десь_розум_та_щастя_та_й_засперечались_Розум_каже_що_він_сильніший_а_щастя_що_воно_Сперечались_вони_сперечались_та_й_розійшлись_Щастя_пішло_у_ліс_а_розум_пішов_та_одному_хлопчикові_і_вліз_у_голову_От_віддає_батько_того_хлопчика_у_шевці_Побув_він_у_шевцях_з_тиждень_уже_всьому_й_навчився_Оддайте_каже_тату_ще_чому_другому_вчитись_Віддав_його_батько_у_кравці_він_і_там_чи_побув_з_тиждень_уже_зумів_і_покроїти_і_пошити_Тоді_віддав_його_батько_вчитись_ще_годинники_робити_Він_і_того_щось_скоро_навчився_От_раз_той_його_хазяїн_від'їжджає_а_він_вже_на_жалуванні_служив_та_й_наказує_хлопцеві_щоб_він_поки_той_вернеться_зробив_стільки_там_годинників_а_що_зостанеться_припасу_то_як_схоче_то_і_собі_зробить_От_він_як_заходився_живо_поробив_ще_й_собі_вигадав_та_такий_утнув_що_у_двадцять_п'ять_років_тільки_раз_і_заводиться_та_як_завів_то_і_ключик_туди_усередину_заховав_і_зачинив_там_Приїхав_ось_хазяїн_усе_пороблено_він_забрав_ті_годинники_та_й_повіз_десь_на_ярмарок_і_його_з_собою_узяв_Той_же_хазяїн_свої_годинники_розпродав_то_панам_то_іншим_людям_а_той_хлопець_свій_продав_самому_цареві_та_як_забрав_гроші_то_й_пішов_десь_аж_за_границю_А_той_годинник_як_вийшло_йому_двадцять_п'ять_років_зупинився_і_не_б'є_Зараз_послали_за_майстром_так_ніхто_ради_йому_не_дасть_Кинулися_до_того_хлопця_а_про_нього_чутка_вже_скрізь_пішла_Він_як_приїхав_того_ключика_зараз_знайшов_і_знову_на_двадцять_п'ять_років_пустив_Цар_і_полюбив_його_Живи_каже_у_мене_Дав_йому_горницю_і_прислугу_усе_чисто_От_раз_цар_від'їжджає_та_й_каже_йому_Усюди_ходи_а_он_у_ту_комірку_не_ходи_А_там_за_стіною_була_замурована_царівна_то_її_сам_цар_туди_замурував_і_хотів_щоб_її_позаочі_сватали_Хто_приїде_сватати_то_йде_у_ту_комірку_та_й_балакає_до_неї_крізь_стіну_як_вона_озветься_то_за_того_їй_і_йти_От_стільки_вже_царів_і_якого_люду_не_приїздило_ні_до_кого_вона_не_озивається_А_коло_тих_дверей_такі_стояли_що_тільки_який_з_тієї_комірки_вони_зараз_голову_йому_зрубають_та_на_палю_і_настромлять_Так_ото_цар_його_шкодував_та_й_заказав_туди_ходити (Нар. творчість)

До §2.1

1.а) 00110011 11000010 11001101 00100011 11101000;

б) 00111011 00010011 11001010 10011100 11100100.

. а) Текст у вигляді блоків: 1000101100000001010101011000000100110000000010001100000100000000111100100010000000010100110000100011000000111101010111000000110000100011101001101101100000001001000000111101010101001010100001

Шифрблоки: 00100101011000000001100000100100101110100000000111100100000100000100111000110010001010001110010010111010011110110111100110110001010100100111011000001101

Криптограма: гтнанздч_єпа_ропдвписюшцудзєйв

б) Текст у вигляді блоків: 111110000010000001100000001010011100000100000011000000010000001100000001010101001010101011011111011000000001001001100110110100000110000100010010010001000001010101010101001010100001

Шифрблоки: 00101111001100101111001001010011111001000111000001100000011100000110000001101000001101110001110111110010110010000010001000011100100000101100100011100000

Криптограма: _дщцмгсягланє_хвжещлядпабвпайох

в) Текст у вигляді блоків: 011011000110101010110110100000011111011010011011011000110101010110110100000101000101010011010100110000000010000101100011100011010101011011010000001101100110000101100000000111001010010000011011010011010000100000110001000100101010111010111101000001001001010101000011010000111010110101011000000100100001000111000100101010111010111101

Шифрблоки:101100111101001111111110011001001010111010001101101000100001100000101110010010000000100001001100101101000000001010100010110101011100100000111100101110101110001011010010010110011010011011001001100000010100000110001010101010000110011101111111110000000100110010000000100000001111011101101001101010001010100011000100001001110001011111110000

Криптограма:_умзящцдлоуоанипжааеиж_тбчфгвцлфбчзйчкпйажедінцшяхаежа_єфкесіооаєбях

г) Текст у вигляді блоків: 00100100 01100110 10100111 00000100 00010100 10001101 00100000 00010000 01001000 00101110 00001011 10000010 00001001 00101000 10100000 10000001 10011000 00000010 10101000 01111010 01011100 00000010 00001010 01010110 00111111 01110000 01000001 00111011 01010011 11100011 10110000 00011011 00011010 01011000 00011010 00110101 00000010 111000001

Шифрблоки: 11100010 01100010 00000110 11000000 01001000 11010101 01110010 11011000 11100001 00100011 01000001 01100100 00110001 01100011 00110110 01100100 10001101 00100000 00100111 01011011 00011001 00100000 00110001 11001000 11011011 01011010 11000000 11101011 00001000 11100110 10111110 11001001 10111001 01101001 10111001 00101010 00100000 10010110 00010100

Криптограма:_щзо_кнбжчтцкохзвждпвбхцуйпеп_зчшвгнввпешии_лубєефшгшпчкцджнзйд

д)Шифрблоки: 00100101 01100000 00011000 00100100 10111010 00000001 11100100 00010000 01001110 00110010 00101000 11100100 10111010 01011011 10011000 10111010 00010000 0111111001101011

Розшифровані блоки: 10001011 00000001 01010101 10000001 00110000 000010001100000100000000111100100010000000010100110000100011000001111100000100000011000000000110111101010111100000001000000011010101011

Відкритий текст: ой_ти_знав_нащо_брав_я_не_вмію_жати

е) Шифрблоки: 01010100101100101100000000100100011001100000010000100100010001011011111111100010010001010010011000011100010110110100000010001110110100110000000011111001

Розшифровані блоки: 10000000011001010000010110000001111001101000001010000001100010001011101000100101100011101010001011010000011111000000001010110001011011000000011100011001000000011010101011

Відкритий текст: напни_мені_холодочок_я_буду_лежати

є)Шифрблоки:11001000001000001111101001100011001000001100100111001001010010001100010000110110010110110101011101101001001111111010100001001000111100000010110110010101001110100000010110110100001111000111111101111000100001110110001100101010011010001001100011001001

Розшифровані блоки: 01010110 00000010 00110000 00101011 00000001 0001100000011011000101001000010110100000011110101010100101011000101111000001001001010001010000001101100011001001011101011000101111000000110100001011110101010000111010000010101100110101010100100001011000011

Відкритий текст: іхав_іхав_козак_містом_під_копитом_камінь_тріснув

ж) Шифрблоки: 11001000 10000110 11111010 10111010 00010011 0100000111000000011000110100110011110011101100111101100100100000110001001000000001111000011011101010111111110011010010000110101010110101110000110011101011001110010100001100010111100110100000011100111001001011

Розшифровані блоки: 01010110 11100010 00110000 00110110 00101001 0000101101000001001010001101010000101100011011000101111000000010110001000000010101010000111101001011100000101100000101000011010011001010011010000111010110110001000000001100110110100101010011011011000101111

Відкритий текст: ішов_козак_потайком_до_дівчини_серденько_вечірком

До §2.2

1. а) е=5: 418, 108, 088; е=11: 011, 303, 086;

б) 1019, 1089, 759;

в) 10514, 1266, 7336.

. а) d=247; 175, 231, 044;

б) d =13361: 14, 1175, 2011;

в) d =4423: 2044, 5555, 10.

.а) Vvedit vidkrutuy kluch:= 165791= 23Ferma:: 165791 = 317 * 523_M: 164952 operaciy: 13pidbor:: 165791 = 317*523_M: 164952 operaciy: 838= 43031shifrtext: 2909: 111: 111^23 = 2909(mod M)

б) Vvedit vidkrutuy kluch:= 391= 3Ferma:^2-M= 9= 3: 391 = 17 * 23_M: 352 operaciy: 1pidbor:: 391 = 17*23*_M: 352 operaciy: 38= 235shifrtext: 237: 152: 237 = 237shifrtext: 376: 25: 376 = 376shifrtext: 190: 330: 190 = 190

в) Vvedit vidkrutuy kluch:= 17593= 103Ferma:: 17593 = 73 * 241_M: 17280 operaciy: 25pidbor:: 17593 = 73*241_M: 17280 operaciy: 312= 12247shifrtext: 4445: 10212: 4445 = 4445shifrtext: 2258: 7942: 2258 = 2258shifrtext: 6314: 288: 6314 = 6314

.а) Vidkrutuy kluch:= 61= 3parametry g(x)=ax+b:= 17= 4povodomlennya f(x): 8povodomlennya f(17x + 4): 27_x1 - (ax^e+b^e)=4_x1 : 3ab=6:=26 ax+b=19:_x=8 f_x1=27Operaciy: 25

б) Vidkrutuy kluch:= 73= 3parametry g(x)=ax+b:= 13= 4povodomlennya f(x): 22povodomlennya f(13x + 4): 70_x1 - (ax^e+b^e)=71_x1 : 3ab=29:=17 ax+b=6: f_x=22 f_x1=70

в) Vidkrutuy kluch:= 143= 5parametry g(x)=ax+b:= 17= 45povodomlennya f(x): 10povodomlennya f(17x + 45): 133_x1 - (ax^e+b^e)=109_x1 : 5ab=136:=17 ax+b=334: f_x=10 f_x1=133

г) Vidkrutuy kluch:= 731= 5parametry g(x)=ax+b:= 14= 25povodomlennya f(x): 138povodomlennya f(14x + 25): 63_x1 - (ax^e+b^e)=47_x1 : 5ab=89:=117 ax+b=1663: f_x=138 f_x1=63

д) Vidkrutuy kluch:= 591= 7parametry g(x)=ax+b:= 29= 5povodomlennya f(x): 462povodomlennya f(29x + 5): 191_x1 - (ax^e+b^e)=582_x1 : 7ab=177^e: 230^e: 290^e: 462:=117 ax+b=3398: f_x=462 f_x1=191

е)Vidkrutuy kluch:= 39= 7parametry g(x)=ax+b:= 20= 3povodomlennya f(x): 12povodomlennya f(20x + 3): 9_x1 - (ax^e+b^e)=12_x1 : 7ab=3^e: 12:=12 ax+b=243: f_x=12 f_x1=9

До §3.1

1.а) Bob: p=1093 q=13 g=11: opn_key: 432: 432: Zapros: 7: Otvet: 2: 432=432 dokazatelstvo prinyato

б) Bob: p=2297 q=41 g=120: opn_key: 476: 1862: Zapros: 6: Otvet: 29: 1862=1862 dokazatelstvo prinyato

в) Bob: p=1181 q=59 g=11: opn_key: 229: 280: Zapros: 142: Otvet: 54: 280=280 dokazatelstvo prinyato

г) Bob: p=1117 q=31 g=13: opn_key: 252: 142: Zapros: 37: Otvet: 3: 142=142 dokazatelstvo prinyato


Таблиця 1.1 Частоти літер українського алфавіту

частоталітерачастоталітерачастоталітерачастоталітера0,0671а0,0505і0,0214п0,0062ш0,0121б0,0040ї0,0380р0,0034щ0,0494в0,0571и0,0387с0,0127ь0,0122г0,0065й0,0428т0,0053ю0,0260д0,0291к0,0300у0,0196я0,0370е0,0348л0,0020ф0,1361_0,0019є0,0224м0,0110х0,0061ж0,0554н0,0069ц0,0158з0,0698о0,0122ч

ІС?0,052


Таблиця 1.2. Частоти та існування біграм українського алфавіту (1-ша літера - з стовпця, 2-га - з рядка)

абвгдеєжзіїаХ0,01620,08780,02530,0477Х0,00760,01190,0134Х0,0024б0,1190хХХХ0,0952ХХХ0,0847Хв0,16520,00320,00320,00130,00840,0583Х0,00710,00260,1108Хг0,1654хХХХ0,0289ХХХ0,1102Хд0,11590,00990,01480,00370,00370,1085Х0,01850,00370,0592Хе0,00690,01820,02070,01300,0484Х0,00090,00690,0251Х0,0035єХХ0,1034Х0,0172ХХХХХ0,0517ж0,1429ХХХ0,01060,1905ХХХ0,0265Хз0,23280,03040,09310,00400,03640,0061ХХ0,00200,0243Хі0,01270,00630,13830,00700,0882Х0,00510,00700,0343Х0,0286їХХ0,0242ХХХХ0,01610,0081Х0,0081и0,00060,00500,04710,00950,0095ХХ0,00840,0123Х0,0011йХ0,00980,01960,01470,0392ХХХ0,0049ХХк0,1123Х0,0110Х0,00110,0121ХХ0,00110,0793Хл0,1489ХХХХ0,0754ХХХ0,0827Хм0,13570,0014ХХХ0,0786ХХХ0,1157Хн0,18740,0006Х0,00170,00460,07690,0012ХХ0,1394ХоХ0,04040,09780,06840,0587Х0,00230,01700,0326Х0,0225п0,0480ХХХХ0,1229ХХХ0,1049Хр0,17510,00510,00340,01850,00590,1246Х0,00930,00170,0934Хс0,02320,00080,0389ХХ0,0389ХХХ0,0405Хт0,1325Х0,0419ХХ0,0966ХХХ0,0846Ху0,00320,00210,12180,00430,07370,00110,00210,01710,0107ХХф0,1967ХХХХ0,1639ХХХ0,1311Хх0,0641Х0,0087ХХХХХХ0,0583Хц0,0092ХХХХ0,1889ХХХ0,4562Хч0,3272Х0,0026ХХ0,1257ХХХ0,0864Хш0,0309Х0,0155ХХ0,1495ХХХ0,0825Хщ0,1121ХХХХ0,1869ХХХ0,0467ХьХ0,0126ХХ0,0101ХХХХХХюХ0,03010,0843Х0,0542Х0,0060Х0,0241ХХяХХ0,04080,01960,0245ХХ0,00160,0163Х0,0016_0,02050,03410,09290,01600,04590,00210,00160,00750,05290,04940,0033

Таблиця 1.2 Частоти та існування біграм українського алфавіту

ийклмнопрстаХ0,01530,04200,13700,05110,08160,00100,01340,04150,03870,0687б0,0635ХХ0,0688Х0,00790,1217Х0,07670,01320,0159в0,1308Х0,00650,0291Х0,03240,09720,00190,02200,04080,0045г0,0236ХХ0,0682Х0,01050,3963Х0,09970,00520,0052д0,12950,00250,02340,02840,00860,09120,16650,00990,03330,01360,0049еХ0,01470,03980,05450,03370,18240,01560,00610,17800,04240,0726єХХХХ0,15520,0172Х0,01720,0345Х0,0690ж0,1534Х0,03170,01590,00530,12700,0423ХХ0,0053Хз0,0182Х0,02020,01420,00610,15790,01010,01820,01820,00200,0020іХ0,03360,01140,04440,02600,04700,00320,00190,00890,07930,0368їХХХХ0,02420,0403ХХХХХиХ0,02970,06560,03930,05050,0482Х0,00840,01570,08130,0998йХХ0,0196Х0,02450,06860,04900,01960,00490,0784Хк0,1399ХХ0,0628Х0,02310,2368Х0,04190,00880,0407л0,2757Х0,00180,0018ХХ0,1443ХХХХм0,1614Х0,00570,0057Х0,01570,11430,0057Х0,0071Хн0,1209Х0,0121Х0,00060,08500,1157ХХ0,01210,0335оХ0,00320,03260,06200,06790,0280Х0,02480,07250,07300,0193п0,0600ХХ0,0225Х0,01950,2369Х0,27140,0030Хр0,1229Х0,00930,00250,01940,01850,20620,00420,00080,05980,0143с0,0744Х0,02150,04710,00170,03720,04960,0571Х0,00080,2763т0,1572Х0,02470,0060Х0,02170,1205Х0,05460,01120,0157уХ0,00110,05450,08760,03210,0609Х0,04270,03740,04170,0470фХХХ0,04920,0328Х0,2787Х0,0164ХХх0,0204ХХ0,00580,00290,02330,1487Х0,0146Х0,0117ц0,1060ХХХХ0,0046ХХХХ0,0276ч0,1885Х0,02620,0026Х0,13610,0366ХХХХш0,2371Х0,21130,03610,00520,02580,0515ХХХ0,0567щ0,0561ХХХХХ0,5327ХХХХьХХ0,3005Х0,02270,15660,0783ХХ0,07320,0505юХХХХ0,00600,0181ХХ0,0361Х0,1024яХХ0,08810,03590,04240,0326Х0,00330,03920,00980,0457_Х0,00870,02730,01270,03180,07670,02940,08450,03320,07220,0379Таблиця 1.2 Частоти та існування біграм українського алфавіту

уфхцчшщьюя_а0,01240,00240,02720,01530,03200,00290,0033Х0,00810,00100,1589б0,2328Х0,0265ХХХХХ0,0053Х0,0265в0,0175Х0,00060,00390,02780,0045ХХХ0,00450,1354г0,0420ХХХХХХХХХ0,0079д0,0481ХХХ0,00120,0012Х0,00990,00250,01970,0407еХ0,00260,01380,01900,01470,00430,0009Х0,00260,00260,1443єХХХХХХХХ0,0690Х0,1897ж0,0794ХХХ0,0159ХХХХХ0,1429з0,0547Х0,0020ХХ0,0142Х0,0364Х0,00400,1255і0,00130,00060,01270,00440,01520,01520,0019Х0,00820,01650,2443їХХ0,1048ХХХХХХХ0,5242иХ0,00220,07520,01460,01910,00950,0168ХХ0,00620,2608йХХХ0,00980,00490,0049ХХХХ0,5539к0,1035Х0,00110,0154Х0,00110,0055ХХХ0,0694л0,0202ХХХХХХ0,12410,02020,08730,0064м0,1057ХХ0,0014ХХХХХХ0,1557н0,02830,0017Х0,01160,00060,0098Х0,02200,00520,08560,0174оХ0,00500,01190,00370,02200,00640,0023Х0,02570,00410,1629п0,0300ХХ0,00600,0030ХХХХХ0,0030р0,03540,0008Х0,00080,00250,0160Х0,00170,00250,01770,0059с0,04050,00080,00330,0058ХХХ0,07530,00170,12740,0091т0,1003Х0,00070,0007ХХХ0,06140,00300,02020,0187уХХ0,0096Х0,03530,00210,0021Х0,0032Х0,2115ф0,0164ХХХХХХХХХХх0,0204ХХХХХХХХХ0,5073ц0,0046ХХХХХХ0,10140,01380,0553Хч0,0262ХХХ0,0183ХХХХ0,00260,0079ш0,0464ХХХХ0,0052ХХ0,0052Х0,0258щ0,0093ХХХХХХХХХ0,0280ьХХХ0,0025Х0,0303ХХХХ0,1995юХХ0,0060Х0,0964ХХХ0,0181Х0,3916яХХ0,02610,00330,0114Х0,0016Х0,0082Х0,4356_0,03480,00610,00590,01110,01650,01340,0118Х0,00140,01180,0019

Таблиця 1.3. Таблиця для шифруваня шифром Віженера (1-ший стовпець - ключова літера)

_АБВГДЕЄЖЗІЇИЙКЛМНО_АБВГДЕЄЖЗІЇИЙКЛМНОАБВГДЕЄЖЗІЇИЙКЛМНОПБВГДЕЄЖЗІЇИЙКЛМНОПРВГДЕЄЖЗІЇИЙКЛМНОПРСГДЕЄЖЗІЇИЙКЛМНОПРСТДЕЄЖЗІЇИЙКЛМНОПРСТУЕЄЖЗІЇИЙКЛМНОПРСТУФЄЖЗІЇИЙКЛМНОПРСТУФХЖЗІЇИЙКЛМНОПРСТУФХЦЗІЇИЙКЛМНОПРСТУФХЦЧІЇИЙКЛМНОПРСТУФХЦЧШЇИЙКЛМНОПРСТУФХЦЧШЩИЙКЛМНОПРСТУФХЦЧШЩЬЙКЛМНОПРСТУФХЦЧШЩЬЮКЛМНОПРСТУФХЦЧШЩЬЮЯЛМНОПРСТУФХЦЧШЩЬЮЯ_МНОПРСТУФХЦЧШЩЬЮЯ_АНОПРСТУФХЦЧШЩЬЮЯ_АБОПРСТУФХЦЧШЩЬЮЯ_АБВПРСТУФХЦЧШЩЬЮЯ_АБВГРСТУФХЦЧШЩЬЮЯ_АБВГДСТУФХЦЧШЩЬЮЯ_АБВГДЕТУФХЦЧШЩЬЮЯ_АБВГДЕЄУФХЦЧШЩЬЮЯ_АБВГДЕЄЖФХЦЧШЩЬЮЯ_АБВГДЕЄЖЗХЦЧШЩЬЮЯ_АБВГДЕЄЖЗІЦЧШЩЬЮЯ_АБВГДЕЄЖЗІЇЧШЩЬЮЯ_АБВГДЕЄЖЗІЇИШЩЬЮЯ_АБВГДЕЄЖЗІЇИЙЩЬЮЯ_АБВГДЕЄЖЗІЇИЙКЬЮЯ_АБВГДЕЄЖЗІЇИЙКЛЮЯ_АБВГДЕЄЖЗІЇИЙКЛМЯ_АБВГДЕЄЖЗІЇИЙКЛМН

Таблиця 1.3 Таблиця для шифруваня шифром Віженера (продовження) (1-ший стовпець - ключова літера)

ПРСТУФХЦЧШЩЬЮЯ_ ПРСТУФХЦЧШЩЬЮЯА РСТУФХЦЧШЩЬЮЯ Б СТУФХЦЧШЩЬЮЯ_АВ ТУФХЦЧШЩЬЮЯ_АБГ УФХЦЧШЩЬЮЯ_АБВД ФХЦЧШЩЬЮЯ_АБВГЕ ХЦЧШЩЬЮЯ_АБВГДЄ ЦЧШЩЬЮЯ_АБВГДЕЖ ЧШЩЬЮЯ_АБВГДЕЄЗ ШЩЬЮЯ_АБВГДЕЄЖІ ЩЬЮЯ_АБВГДЕЄЖЗЇ ЬЮЯ_АБВГДЕЄЖЗІИ ЮЯ_АБВГДЕЄЖЗІЇЙ Я_АБВГДЕЄЖЗІЇИК _АБВГДЕЄЖЗІЇИЙЛ АБВГДЕЄЖЗІЇИЙКМ БВГДЕЄЖЗІЇИЙКЛН ВГДЕЄЖЗІЇИЙКЛМО ГДЕЄЖЗІЇИЙКЛМНП ДЕЄЖЗІЇИЙКЛМНОР ЕЄЖЗІЇИЙКЛМНОПС ЄЖЗІЇИЙКЛМНОПРТ ЖЗІЇИЙКЛМНОПРСУ ЗІЇИЙКЛМНОПРСТФ ІЇИЙКЛМНОПРСТУХ ЇИЙКЛМНОПРСТУФЦ ИЙКЛМНОПРСТУФХЧ ЙКЛМНОПРСТУФХЦШ КЛМНОПРСТУФХЦЧЩ ЛМНОПРСТУФХЦЧШЬ МНОПРСТУФХЦЧШЩЮ НОПРСТУФХЦЧШЩЬЯ ОПРСТУФХЦЧШЩЬЮ

Таблиця 2.1. Прості числа до 3011


Таблиця 2.2 Кодування літер алфавіта двійковим кодом

а00001о10001б00010п10010в00011р10011г00100с10100д00101т10101е00110у10110є00111ф10111ж01000х11000з01001ц11001і01010ч11010и01011ш11011й01100щ11100к01101ь11101л01110ю11110м01111я11111н10000_00000


Аналіз стійкості криптографічних систем з використанням штучного інтелекту Annotation The work

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ