Шифрування одноразовим ключем, глеб

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

Шифрування одноразовим ключем, глеб

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

Саме тому цей шифр використовують нелегальні агенти по всьому світу останні приблизно років сто.

Алгоритм в подробицях

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

Відправка повідомлення

Аліса хоче відправити Бобу повідомлення «Перевірка зв'язку», вона переводить його в цифрову форму, для цього служить спеціальна таблиця:

Шифрування одноразовим ключем, глеб

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

А ось що вийшло у Аліси:

Аліса записує цифри для подальшого шифрування: 727326247369609916286667. Як ключ вона використовує другу сторінку блокнота, показаного вище. Перші п'ять цифр (81355) ключа- індикатор, вони не використовуються в шифруванні. Отже, Аліса записує ключ під кодованим текстом:

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

7 і 1 = 7 - 1 = 6
2 і 2 = 2 - 2 = 0
...
2 і 5 = 12 - 5 = 7

Аліса дописує в початок шифротекста перші п'ять цифр ключа (індикатор) і відправляє Бобу шифровку:

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

прийом повідомлення

У Боба є копія блокнота «Аліса-Бобу», і він, отримавши шифровку, шукає в ньому сторінку, що починається з 81355 (індикатор). Тепер він записує цифри ключа (пропускаючи індикатор) під шіфротекста:

Щоб отримати вихідний текст, він по одній складає цифри шифротекста і ключа, відкидаючи десятки:

6 і 1 = 6 + 1 = 7
0 і 2 = 0 + 2 = 2
...
7 і 5 = 7 + 5 = 12 = 2

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

Таким чином, Аліса використовує блокнот «Аліса-Бобу» для зашифровування повідомлень, а Боб - для розшифровки. Для відправки сообденій від Боба до Аліси у них є по копії іншого блокнота, «Боб-Алісі».

Трохи більше про кодування

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

Ось розвиток згаданої раніше таблиці для кодування російського і латинського алфавітів:

Шифрування одноразовим ключем, глеб

Для введення додаткового алфавіту (в даному випадку, латинського) слід ввести код переходу на додатковий алфавіт (88), для повернення до основного - код переходу до основної таблиці (87).

Плюси, мінуси, підводні камені?

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

Друга складність - генерація ключів. Вся система працює тільки якщо цифри в шіфоблокнотах дійсно випадкові. Більшість комп'ютерних програм використовують так звані «псевдовипадкові числа», послідовність яких може бути відтворена третьою стороною. На юніксоподобних системах (Linux, BSD. Mac OS) є вбудовані в систему генератори майже зовсім випадкових чисел, але і до них є питання. Хоча на перших порах, поки за вами не полює ФСБ і ФБР, зійде.

Третя складність - безпечне середовище для зашифровуваної і розшифровки. Якщо вам досить «безпеки» домашнього комп'ютера, швидше за все, вам не потрібен шифр з одноразовим ключем.

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

Посилання по темі:

71584 24571 13491 79921 52889 53636 36832 54036 50928 95065 06375 86945 47147 86954 44370 87278 19269 34350 87391 61344 79805

Схожі статті