Шифрування повідомлень різними методами

Розглянемо, як зашифрувати повідомлення шляхом заміни (тобто шляхом підстановки). Спочатку використовуємо шифр Цезаря. Припустимо, що потрібно зашифрувати повідомлення «ДЕ АББА».

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

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

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

Заміна може здійснюватися на символи іншого алфавіту та з більш складним ключем (алгоритмом заміни). Для простоти знову наведемо лише початкові частини абеток. Лінії показують порядок заміни букв українського алфавіту на букви латинського алфавіту. Зашифруємо фразу «ДЕ АББА»:

шифрування

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

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

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

Заміна символів відкритого тексту можевідбуватися на спеціальні символи, наприклад, на «танцюючих чоловічків», як у розповіді К. Дойла чи з допомогою прапорців, як і робиться моряками.

Більше високу криптостойкость проти шифром Цезаря мають афінні криптосистемы.

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

Афінні криптосистеми задаються за допомогою двох чисел a та b. Для українського алфавіту ці числа вибираються з умови a ≥ 0, b ≤ 32. Максимальна кількість символів у алфавіті, що використовується, позначаються символом g. Причому числа a та g = 33 мають бути взаємно простими. Якщо ця умова не буде виконуватися, дві різні літери можуть відображатися (перетворюватися) в одну. Кожен код літери відкритого тексту m замінюється кодом літери криптограми за таким правилом. Спочатку обчислюється числоa = a×m + b, та був виконується операція целочисленного розподілу числаa на число g = 33, тобто

a = b(mod(g)). Як код символу шифрограми використовується залишок від цілого розподілу b.

Для визначеності виберемо такі числа: a = 5 та b =3.

Фрагмент процедури, що ілюструє порядок шифрування, наведено у таблиці.

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

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

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

Нижче наведено фрагмент ключа багатоалфавітної заміни:

За допомогою багатоалфавітного шифру повідомлення «ДЕ АББА» можна зашифрувати кількома способами:

10-99-15-12-4-14-12 і т. д.

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

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

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

різними

Припустимо, що потрібно зашифрувати повідомлення «ДЕ АББА». Як ключоберемо слово «ДІВА». В результаті отримаємо:

В результаті перетворень вийде шифрування

Система Плейфейра створює багатоалфавітні шифри. Розглянемо основну ідею цієї системи.

Шифрування проводиться за допомогою квадрата (або прямокутника), до якого занесені літери відповідного національного алфавіту. Літери записуються у квадрат або прямокутник у довільному порядку. Цей порядок та конфігурація таблиці є секретним ключем. Для визначеності візьмемо прямокутну таблицю розміром 8x4, як літери алфавіту – кирилицю, а літери розташуємо в алфавітному порядку. Оскільки число українських букв 33, а кількість клітин – 32, виключимо з таблиці букву Ё.

Припустимо, що потрібно зашифрувати слово КРИПТОГРАФІЯ.

Розглянемо правила шифрування.

1. Відкритий текст ділиться на блоки дві літери. Літери в одному блоці не повинні бути однаковими. Зробимо поділ вихідного слова на блоки по дві літери КР-ІП-ТО-ГР-АФ-ІЯ.

2. Якщо літери тексту, що шифрується, знаходяться в різних рядках і стовпцях, то як замінні літери використовуються літери, розташовані в кутах прямокутника, що охоплює літери відкритого тексту. Наприклад, блок КР замінюється символами ІТ.

3. Якщо літери відкритого тексту попадають в один рядок, то шифрограма виходить шляхом циклічного зсуву праворуч на одну клітинку. Наприклад, блок ІП буде перетворено на ЙІ. Ще один приклад цього правила. Якщо, припустимо, потрібно перетворити блок КН, то вийде ЛВ.

4. Якщо обидві літери відкритого тексту попадають в один стовпець, то для шифрування здійснюють циклічний зсув на одну клітинку вниз.

Блок ЖЦ буде перетворено на символи ОЮ, а блок ТЪ символи ЪВ.

Відповідно до описаних правил слово КРИПТОГРАФІЯ будеперетворено на криптограму ІТЙІЦКАУДРПШ.

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

Тут доречно розглянути криптографічну систему Хілла, в якій шифрування здійснюється за допомогою математичних перетворень: обчислень за допомогою прийомів лінійної алгебри [4].

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

Спочатку відкритий текст методом заміни слід перетворити на сукупність чисел. Припустимо, що шифрується текст, написаний з використанням 26 латинських літер. Виберемо наступний алгоритм заміни літер на числа: латинські літери A, B, C, D, …, Z замінюватимемо відповідно числами 1, 2, 3, 4,…, 26. Іншими словами: пронумеруємо літери в порядку їх розташування в алфавіті, та при заміні використовуватимемо їх порядкові номери. У разі обраний такий алгоритм заміни, але зрозуміло, що може бути будь-яким.

Припустимо, що необхідно зашифрувати німецьке слово ZEIT. Замінимо літери відповідно до їхніх порядкових номерів в алфавіті чотирма числами: 26 – 5 – 9 – 20.

Далі слід вибрати деяке число d ≥ 2. Це число показує порядок розбиття відкритого тексту на групу символів (визначає скільки літер буде в кожній групі). З математичної точки зору число d показує, скільки рядків має бути у векторах.стовпці. Приймемо d = 2. Це означає, що числа 26 – 5 – 9 – 20 потрібно розбити на групи по дві літери (два числа) у кожній групі та записати їх у вигляді векторів-стовпців:

повідомлень

В результаті шифрування по каналу зв'язку буде виправлено послідовність чисел: 19 – 22 – 24 – 3. Для обраного ключа заміни це буде відповідати шифрограмі SVXC. Цей приклад ілюструє те що, що системи шифрування часто базуються на математичних перетвореннях.