Спершу треба припустити, що Єва лише пасивна. Маючи на увазі, я маю на увазі, що вона правдиво надсилає листівку Бобу, і все, що вона повертає до Аліси, це справді відповідь Боба. Якщо Єва може змінити дані в будь-якому або в обох напрямках (а її дія залишається непоміченою), то все буде йти.
(Для вшанування давніх традицій дві чесні сторони, що беруть участь у розмові, називаються Аліса та Боб. У своєму тексті ви сказали "ви". Моє справжнє ім'я не "Аліса", але я відповім так, як ніби ви написали що Аліса хоче підтвердити номер телефону Боба.)
Проста (але слабка) відповідь - використовувати хеш-функцію. Аліса пише на картці: "поверніть мені SHA-256 хеш вашого номера телефону". SHA-256 - це криптографічна хеш-функція, яка вважається захищеною, наскільки це стосується хеш-функцій. Обчислити це вручну було б втомливо, але все-таки виконати (це приблизно 2500 32-бітних операцій, де кожна операція є доповненням, зсувом слова або поворотом або побітною комбінацією бітів; Боб повинен мати можливість це робити за день або тому).
Тепер що в цьому слабкого? SHA-256, будучи криптографічною хеш-функцією, стійкий до "попередніх зображень": це означає, що з урахуванням хеш-виводу дуже важко відновити відповідний вхід (це проблема, з якою стикається Єва). Однак "дуже важко" означає "найпростіший метод - груба сила: спроба можливих входів, поки не буде знайдено відповідність". Проблема полягає в тому, що груба сила тут проста: існує не так багато можливих номерів телефонів (у Північній Америці це 10 цифр, тобто лише 10 мільярдів). Боб хоче робити справи вручну, але ми не можемо вважати, що Єва настільки обмежена. Базовий ПК може спробувати кілька мільйонів хешів SHA-256 в секунду, тому Eve буде зроблено менше ніж за одну годину (менше 5 хвилин, якщо вона використовує GPU).
Це загальне питання: якщо Боб є детермінованим (тобто на певне повідомлення від Аліси, він завжди повертає ту саму відповідь), Єва може його імітувати. А саме, Єва знає все про Боба, окрім номера телефону, тому вона фактично працює 10 мільярдів Бобс, які відрізняються лише своїм передбачуваним номером телефону; і вона чекає, коли один з віртуальних Боб поверне все, що реально повернувся. Недолік впливає на безліч видів "розумних" рішень, що включають випадкові поняття, симетричне шифрування та інше. Це сильний недолік, і його корінь полягає у величезній різниці в обчислювальній потужності між Євою та Бобом (тепер, якщо в Боба також був комп'ютер, великий як у Єви, то він міг би використовувати повільнийхеш-функція за допомогою використання багатьох ітерацій; це більш-менш те, що стосується хешування паролів, з номером телефону замість пароля; див. bcrypt, а також цю відповідь ).
Отже, слабке рішення повинно включати деяку випадковість з боку Боба: Боб повинен перевертати монету або кидати кістки кілька разів та вводити значення у свої обчислення. Більше того, Єва не повинна бути в змозі розгадати те, що робив Боб, але Аліса повинна вміти, тому певна інформація конфіденційно передається від Боба до Аліси. Це називається асиметричним шифруванням або, принаймні, асиметричним ключовим договором. Найпростішим алгоритмом цього класу для обчислення, але все ще достатньо безпечним, є RSA з підкладкою PKCS №1 v1.5 . RSA може використовувати як публічний показник. Отже, протокол виходить таким чином:e=3
Аліса генерує велике ціле число де і мають аналогічний розмір просте ціле число, таким чином, щоб розмір був достатнім для забезпечення безпеки (тобто принаймні 1024 біт станом на 2012 рік). Також Аліса повинна домовитись, щоб і не були кратними 3.p q n p - 1 q - 1n=pqpqnp−1q−1
Аліса пише на картці.n
Спочатку Боб додає свій номер телефону до послідовності байтів до , як це описано в PKCS # 1 (це означає: 00 02 xx xx ... xx 00 bb bb .. bb, де 'bb' - це десять байтів, які кодують номер телефону та 'xx' - випадкові ненульові значення байтів на загальну довжину 128 байт, якщо 1024-бітне ціле число).nnn
Боб трактує свою послідовність байтів як велике ціле значення (велике ендіанське кодування) і обчислює (так що це пара множень з дуже великими цілими числами, потім поділ, в результаті чого залишок поділу). Це все ще можливо зробити вручну (але, знову ж таки, це, можливо, займе більшу частину дня). Результат - це те, що Боб повертається до Аліси.м 3 м о д нmm3 mod n
Аліса використовує свої знання з і щоб відновити з надісланого Боб. Сторінка Вікіпедії на RSA має досить чіткі пояснення цього процесу. Після того, як Аліса має , вона може видалити прокладку ("xx" не дорівнює нулю, тому перший байт "bb" може бути однозначно розташований), а потім у неї є номер телефону, який вона може порівняти з тим, що мала.q m m 3 m o d n mpqmm3 mod nm
Для обчислення Аліси знадобиться комп'ютер (те, що робиться на комп’ютері, завжди елементарно і вручну, але комп'ютер на ньому диявольсько швидкий, тому "виконуваному" може знадобитися занадто багато часу на практиці; розшифровка RSA вручну зайняла б багато тижні).
(Насправді ми могли б зробити швидше ручне обчислення за допомогою шифрування McEliece , але тоді відкритий ключ - те, що Аліса пише на картці - був би величезним, а картка просто не зробила б; Єві доведеться перевезти повну книгу цифр.)