Симетричні алгоритми
Симетричні алгоритми
Шифр з одноразовим ключем, або шифр одноразового блокнота
Передусім зазначимо, що ідеальний спосіб шифрування таки є. Його називають одноразовим блокнотом (one-time pad). Цей спосіб винайшли, як уже згадано, Гілберт Вернам та Мейджор Джозеф Моборн 1917 р. (у публікаціях переважно зазначають лише перше ім'я). В класичному розумінні одноразовий блокнот - це довга неповторювана послідовність випадково розподілених символів, які визначали ключ шифрування. Пер-вісно це була одноразова стрічка для телетайпів. Відправник використовував кожний символ ключа з блокнота для шифрування лише одного символу відкритого тексту. Шифрування полягало в додаванні за модулем 26 номера символу відкритого тексту в латинській абетці й номера символу ключа з одноразового блокнота.
Кожний символ ключа використовували лише один раз і для одного повідомлен-ня. Відправник шифрував повідомлення й знищував використані сторінки блокнота або використану частину стрічки. Адресат, відповідно, використовуючи точно такий самий блокнот, дешифрував кожен символ шифротексту. Розшифрувавши повідомлення, адре-сат знищував відповідні сторінки блокнота або частину стрічки. Для нового повідом-лення використовували нові символи ключа.
Аналогічний шифр можна збудувати для будь-якої абетки, зокрема для української.
Ідею одноразового блокнота легко поширили на бінарні дані, що є актуальним у разі використання комп'ютерної техніки. У цьому випадку замість одноразового блок-нота, який складається з букв, застосовують одноразовий блокнот з бітів. Замість дода-вання номерів літер латинської абетки за модулем 26, використовують додавання бітів за модулем 2. Усе решта незмінне, і безпека є такою ж досконалою.
Шифр, який розглядаємо, ґрунтується на операції додавання за модулем 2 (позна-чаємо значкомЩе інакше цю операцію називають XOR (exclusive OR - виключне АБО). Вона визначена так:
Якщо є дві послідовності бітів то підрозуміємо послідовність С=с1...сk отриману виконанням операції додавання за модулем 2 над відповідними бітами обох послідовностей: У цьому разі
Припустимо, що явний текст є послідовністю бітів М, а ключ - послідовністю бітів К. Тоді криптограмою С є послідовність бітів Дешифрування ґрунтується на рівності
Приклад 2.1. Нехай треба зашифрувати слово атака (00 22 00 14 00) з ключем (02 07 15 11 00). У двійковій системі, відтворюючи кожну букву п'ятьма бітами (нуме-рація букв починається з нуля), маємо
(00 22 00 14 00) => (00000 10110 00000 01110 00000)
(02 07 15 11 00) => (00010 00111 01111 01011 00000)
шифрограма => (00010 10001 01111 00101 00000) => (02 17 15 05 00).
Якщо потрібно за шифрограмою отримати явний текст, то побітово за модулем 2 додаємо ключ до шифрограми:
Ключ => (00010 00111 01111 010М 00000)
і маємо явний текст => (00000 10110 00000 01110 00000) => (атака).
Шифр з одноразовим ключем є методом шифрування, у якому використовують випадково вибраний ключ k0k1…kn-1, а саме шифрування відбувається за допомогою операції . Суттєво те, щоб у кожному шифруванні застосовували інший, незалежно з генерований ключ.
Ключові для цього методу такі властивості:
криптограма є випадковою послідовністю п бітів;
без знання ключа ніяка інформація щодо явного тексту не може бути отрима-на з криптограми. Цю властивість називають ідеальною надійністю, вона ви-пливає зі знаменитого твердження Шеннона з теорії інформації: єдиним способом отримання повної надійності є використання шифру з одноразовим ключем;
шифр з одноразовим ключем абсолютно надійний. Якщо зловмисник не знає ключа К, то за перехопленою шифрограмою С він нічого не може довідатись про повідомлення М.
Справді, послідовність бітів С могла б бути криптотекстом для будь-якого повідомлення М, якби шифрування відбувалося з деяким іншим ключем K1: C=М1 K1. Наприклад, за допомогою ключа К, використаного у прикладі 2.1, повідом-лення атака перетвориться в шифрограму (00010 10001 01111 00101 00000).
Проте такий самий криптотекст можна отримати, шифруючи повідомлення втеча (02 22 06 27 00) => (00010 10110 00110 11011 00000) з ключем К1 = (00 07 09 30 00) => (00000 00111 01001 11110 00000).
Єдиною галуззю застосування шифру з одноразовим ключем є шифрування по-рівняно коротких, але дуже важливих повідомлень, таких як військові повідомлення стратегічного значення.
Основи застосування шифру з одноразовим ключем полягають у тому, що ключ повинен бути:
попередньо узгоджений особами, що контактують;
вибраний справді випадково;
міститися в безпечному місці;
мати щонайменше таку довжину, як і довжина тексту, який шифрують.
Небезпека неодноразового застосування того самого ключа полягає в такому. Припустимо, що шифруємо довгий текст аоа1... за допомогою n-бітового ключа k0k1…kn-1 Оскільки бракує бітів ключа, то блоки довжини n шифруємо послідовно за допомогою того самого ключа (тобто kj = kn+j). Унаслідок цього отримуємо
Тобто без знання ключа, а лише на підставі криптограми легко полічити aj an + j Із цієї інформації, яка вже ніяк не залежить від ключа, можна, враховуючи надлишковість мови, отримати саме повідомлення.
Якщо проблеми розподілу й зберігання ключів для одноразового блокнота вирі-шено, то потрібно точно синхронізувати роботу відправника й адресата. Якщо адресат пропустить біт або декілька бітів зникнуть під час передавання, то повідомлення втра-тить будь-який сенс. З іншого боку, якщо декілька бітів зміняться під час передавання (й ні один біт не буде видалений чи доданий, що набагато більше подібно на вплив випадкового шуму), то лише ці біти будуть розшифровані неправильно. Одноразовий блокнот не забезпечує перевіряння справжності повідомлення.
Одноразові блокноти використовують і сьогодні, головно для надсекретних кана-лів зв'язку з низькою перепускною здатністю. Багато повідомлень були зашифровані з використанням одноразових блокнотів. Ці повідомлення нерозкриті нині й залишаться нерозкритими назавжди. Навіть якщо чужопланетяни з далекої галактики приземлять свої космічні кораблі з комп'ютерами неймовірної потужності, то і