Математики, шпионы и хакеры. Кодирование и криптография | страница 52



* * *

АВТОРЫ АЛГОРИТМА

Уитфилд Диффи родился в 1944 г. в Соединенных Штатах. Получив степень бакалавра математики в Массачусетском технологическом институте (МП), он с 2002 по 2009 гг. работал главой службы безопасности и вице-президентом компании Sun Microsystems (в Калифорнии).

Инженер Мартин Хеллман родился в 1945 г. и работал в IBM и Массачусетском технологическом институте, где сотрудничал с Диффи.



Уитфилд Диффи

* * *

1. Джеймс выбирает число, которое он держит в секрете. Мы обозначим это число N>j1

2. Питер выбирает другое случайное число, которое он тоже держит в секрете. Мы обозначим это число N>p1

3. Затем и Джеймс, и Питер применяют к своим числам функцию вида f(x) = а (mod р) где р — простое число, известное им обоим.

∙ После этой операции Джеймс получает новое число, N>j2, которое он посылает Питеру.

∙ А Питер посылает Джеймсу свое новое число N>p2

4. Джеймс вычисляет N>Nj1>p2 (mod р) и получает новое число С>j.

5. Питер вычисляет N>Np1>j2 (mod р) и получает новое число С.

Хотя это кажется невозможным, но числа С>jи С являются одинаковыми. И теперь у нас есть ключ. Заметим, что Джеймс и Питер обменивались информацией только тогда, когда они выбрали функцию f(x) = а (mod р) и послали друг другу числа N>j2и N>p2. Ни то, ни другое не является ключом, поэтому перехват этой информации не будет угрожать безопасности системы шифрования. Ключ этой системы имеет следующий вид:

a>Nj1∙Np1  (mod p).

Важно также учесть, что данная функция имеет одну особенность: она необратима, то есть зная саму функцию и результат ее применения к переменной х, невозможно (или, по крайней мере, очень сложно) найти исходное значение х.

Далее, чтобы пояснить идею, мы повторим процесс с конкретными значениями.

Возьмем следующую функцию:

f(x) = 7 (mod 11).

1. Джеймс выбирает число, N>J1 например, 3, и подставляет в функцию f(3) = 7>3  

2 (mod 11).

2. Питер выбирает число, N>p1 например, 6, и подставляет в функцию f(6) = 7>6 

4 (mod 11).

3. Джеймс посылает Питеру свой результат, 2, а Питер Джеймсу — свой, 4.

4. Джеймс считает 4>3 

9 (mod 11).

5. Питер считает 2>6 

9 (mod 11).

Это число, 9, и будет ключом системы.

Джеймс и Питер обменялись функцией f(х) и числами 2 и 4. Будет ли эта информация полезна злоумышленнику? Допустим, злоумышленник знает и функцию, и числа. Тогда он должен найти N>j1 и N>p1 по модулю 11, где N>j1и N>p1 — такие числа, которые и Джеймс, и Питер держат в секрете даже друг от друга. Если шпиону удастся узнать эти числа, он получит ключ, лишь вычислив