Предсказание бита
Предсказание бита с помощью однонаправленной функции
Антон может предсказать битовое значение, воспользовавшись свойствами, которыми обладают однонаправленные функции:
- Антон генерирует две случайные битовые строки S1 и S2;
- Антон присоединяет к сгенерированным S1 и S2 бит b, значение которой собирается предсказать;
- Антон вычисляет значение однонаправленной функции Н, используя в качестве аргумента битовую строку (S1,S2,b), и вместе с S1 отсылает Борису полученный результат.
Теперь у Бориса имеется вся необходимая информация, которая не позволит Антону впоследствии изменить предсказанное значение b. Однако проверить правильность предсказания без участия Антона Борис не сможет, поскольку в этом случае ему придется вычислять H-1 (S1,S2,b).
Когда потребуется, чтобы Антон ознакомил со своим предсказанием Бориса, им обоим необходимо будет продолжить выполнение следующих шагов протокола:
- Антон посылает Борису исходную битовую строку (S1,S2,b).
- Борис вычисляет H(S1,S2,b), а затем сравнивает вычисленное значение и S1 со значением и случайной битовой строкой, присланными ему Антоном на шаге 3. В случае совпадения b действительно представляет собой значение, предсказанное Антоном на шаге 2.
По сравнению с предсказанием бита при помощи симметричной криптосистемы, при предсказании бита с помощью однонаправленной функции не требуется, чтобы Борис посылал какие-либо сообщения Антону. А Антону необходимо отослать всего одно сообщение, чтобы сделать предсказание, и еще одно, чтобы Борис смог с этим предсказанием ознакомиться.
Теперь, при предсказании бита с помощью однонаправленной функции, Борису уже не обязательно генерировать какие-либо случайные битовые строки, поскольку Антон использует для предсказания однонаправленную функцию и не сможет смошенничать, составив фальшивое сообщение (S1, S'2, b') такое, что H(Sl, S', b') = H(S1, S2, b). Антон посылает Борису случайную битовую строку S1, чтобы у Антона не было возможности путем подбора S1 и S2 добиться, чтобы изменилось b и чтобы при этом было сохранено значение H(S1, S2, b), которое Антон ранее отослал Борису. Храня S2 в секрете от Бориса, Антон не дает Борису вычислить значения H(S1, S2, b) и H(S1, S2, b'), а затем определить b, сравнив эти значения с тем, что прислал ему Антон.
Предсказание с помощью генератора псевдослучайных битовых последовательностей
Для предсказания битового значения Антон может использовать генератор псевдослучайных битовых последовательностей:
- Борис генерирует случайную битовую строку SБ и посылает ее Антону.
- Антон вычисляет случайное начальное значение для генератора псевдослучайных битовых последовательностей. Затем для каждого бита присланной Борисом битовой строки SБ Антон отправляет Борису либо (а) выходное значение генератора псевдослучайных битовых последовательностей, если этот бит равен 1, либо (б) результат сложения выходного значения генератора псевдослучайных битовых последовательностей со значением, предсказанным Антоном, если соответствующий бит SБ равен 0.
Когда Антон захочет раскрыть Борису свое предсказание, они должны будут перейти к выполнению последних двух шагов протокола:
- Антон высылает Борису случайное начальное значение, вычисленное им для генератора псевдослучайных битовых последовательностей на шаге 2.
- Борис повторяет действия Антона, предпринятые им на шаге 2, чтобы убедиться в том, что Антон не смошенничал.
Если сгенерированная Борисом случайная битовая строка является достаточно длинной, а генератор псевдослучайных битовых последовательностей, которым пользуется Антон, в требуемой степени непредсказуем, то у Антона практически нет шансов обмануть Бориса.