С учетом этих предварительных замечаний метод соответствует следующей процедуре:
1. Алиса пересылает все 52 числа Ac<sub>1</sub>, …, Ac<sub>52</sub> Бобу. Он понятия не имеет, каким картам эти числа соответствуют; по существу, Алиса перетасовала колоду.
2. Боб «сдает» пять карт Алисе и пять самому себе. Он высылает Алисе ее карты. Чтобы упростить запись, рассмотрим лишь одну из этих карт, обозначив ее Ac. Алиса может выяснить значение c, применив к полученному числу A<sup>–1</sup>, так что она знает, какие карты ей сданы.
3. Бобу необходимо выяснить, какие карты он выбрал для себя, но только Алиса знает, как извлечь истинные значения из зашифрованных. Но Боб не может послать свои карты Алисе, потому что тогда она будет знать, что у него в руке. Поэтому к каждой своей карте Ad он применяет свое шифровальное правило, чтобы получить BAd, и высылает результат такой обработки Алисе.
4. Алиса может вновь применить свое правило A<sup>–1</sup>, чтобы «снять замок», но на этот раз ее ждет засада: результат будет равен A<sup>–1</sup>BAd.
В обычной алгебре мы могли бы поменять A<sup>–1</sup> и B местами, чтобы получить
BA<sup>–1</sup>Ad,
что равняется Bd.
После этого Алиса могла бы выслать результат обратно Бобу, а тот, в свою очередь, применил бы B<sup>–1</sup>, чтобы получить d.
Однако функции нельзя переставлять таким образом. К примеру, если Ac = c + 1 (и, соответственно, A<sup>–1</sup>c = c – 1) и Bc = c², то A<sup>–1</sup>Bc = Bc – 1 = c²<sup>–</sup> 1, тогда как
BA<sup>–1</sup>c = (A <sup>–1</sup>c)² = (c – 1)² = c²<sup>–</sup> 2c + 1,
то есть совсем не то же самое.
Чтобы обойти это препятствие, следует избегать подобных функций и выбирать такие методы шифрования, для которых A<sup>–1</sup>B = BA<sup>–1</sup>. В этом случае говорят, что для функций A и B действует коммутативный закон, поскольку все это несложно привести к эквивалентному условию AB = BA. Обратите внимание: в описанном нами физическом методе замки Алисы и Боба и правда позволяют перестановку. Их можно навешивать и снимать в любом порядке, результат будет тот же: ящичек с двумя замками.
Таким образом, Алиса и Боб могут играть в покер по переписке, если сумеют придумать два допускающих перестановку шифра A и B, таких, чтобы алгоритм расшифровки A –1 был известен только Алисе, а алгоритм B<sup>–1</sup> – только Бобу.
Боб и Алиса выбирают большое простое число p, которое может быть опубликовано и известно всем. Они согласуют также 52 числа c<sub>1</sub>, …, c<sub>52</sub> (mod p), которые будут представлять карты.
Алиса выбирает некоторое число a от 1 до p – 2 и определяет свою кодирующую функцию A как Ac = c<sup>a</sup> (mod p).
Пользуясь базовой теорией чисел, можно сказать, что обратная (декодирующая) функция имеет вид
A<sup>–1</sup>c = c<sup>a'</sup> (mod p)
для некоего числа a', которое она может вычислить. Алиса держит и a, и a' в секрете.
Аналогично Боб выбирает себе число b и определяет свою кодирующую функцию B как Bc = c<sup>b</sup> (mod p) и обратную к ней
B<sup>–1</sup>c = c<sup>b'</sup> (mod p)
для числа b', которое он может вычислить. Он держит b и b' в секрете.
Кодирующие функции A и B подчиняются коммуникативному закону, поскольку
ABc = A (c<sup>b</sup>) = (c<sup>b</sup>)<sup>a</sup> = c<sup>ba</sup> = c<sup>ab</sup> = (c<sup>a</sup>)<sup>b</sup> = B (c<sup>a</sup>) = BAc,
где все равенства выполняются (mod p). |