я, тоді як визначення з неможливо за розумний термін.
Але сама одностороння функція марна в застосуванні: нею можна зашифрувати повідомлення, але розшифрувати не можна. Тому криптографія з відкритим ключем використовує односторонні функції з лазівкою. Лазівка ??- це якийсь секрет, який допомагає розшифрувати. Тобто існує такий, що знаючи і, можна обчислити. Приміром, якщо розібрати годинник на безліч складових частин, то дуже складно зібрати знову працюють годинник. Але якщо є інструкція по збірці (лазівка), то можна легко вирішити цю проблему.
Зрозуміти ідеї та методи криптографії з відкритим ключем допомагає наступний приклад - зберігання паролів в комп'ютері. Кожен користувач в мережі має свій пароль. При вході він вказує ім'я і вводить секретний пароль. Але якщо зберігати пароль на диску комп'ютера, то хто-небудь його може вважати (особливо легко це зробити адміністратору цього комп'ютера) і отримати доступ до секретної інформації. Для вирішення завдання використовується одностороння функція. При створенні секретного пароля в комп'ютері зберігається трохи сам пароль, а результат обчислення функції від цього пароля та імені користувача. Наприклад, користувач Аліса придумала пароль «Гладіолус». При збереженні цих даних обчислюється результат функції (ГЛАДІОЛУС), нехай результатом буде рядок РОМАШКА, яка і буде збережена в системі. В результаті файл паролів прийме наступний вигляд:
Ім'я (імя_пароль) АЛІСАРОМАШКАБОБНАРЦІСС
Вхід в систему тепер виглядає так:
Ім'я: АЛІСАПароль: ГЛАДІОЛУС
Коли Аліса вводить «секретний» пароль, комп'ютер перевіряє, дає чи ні функція, що застосовується до ГЛАДІОЛУС, правильний результат РОМАШКА, що зберігається на диску комп'ютера. Варто змінити хоча б одну букву в імені або в паролі, і результат функції буде абсолютно іншим. «Секретний» пароль не зберігається в комп'ютері ні в якому вигляді. Файл паролів може бути тепер переглянутий іншими користувачами без втрати таємності, оскільки функція практично необоротна.
У попередньому прикладі використовується одностороння функція без лазівки, оскільки не потрібно по зашифрованому повідомленням отримати вихідне. У наступному прикладі розглядається схема з можливістю відновити вихідне повідомлення за допомогою «лазівки», тобто важкодоступній інформації. Для шифрування тексту можна взяти великий абонентський довідник, що складається з декількох товстих томів (по ньому дуже легко знайти номер будь-якого жителя міста, але майже неможливо з відомим номером знайти абонента). Для кожної букви з шіфруемого повідомлення вибирається ім'я, що починається на ту ж літеру. Таким чином букві ставиться у відповідність номер телефону абонента. Надсилайте повідомлення, наприклад «КОРОБКА», буде зашифровано наступним чином:
СообщеніеВибранное имяКриптотекстККоролёв5643452ООрехов3572651РРузаева4673956OОсипов3517289ББатурин7755628ККирсанова1235267ААрсеньева8492746 Криптотексті буде ланцюжок номерів, записаних в порядку їх в
ибора в довіднику. Щоб утруднити розшифровку, слід вибирати випадкові імена, що починаються на потрібну літеру. Таким чином вихідне повідомлення може бути зашифровано безліччю різних списків номерів (криптотексті).
Приклади таких криптотексті:
криптотексті 1Крі...