Познакомимся с некоторыми типами криптографических протоколов, а также кругом математических задач, возникающих при исследовании их стойкости. Рассмотрим несколько примеров задач, решаемых удаленными абонентами.
1. Протокол подписания контракта. Взаимодействуют два не доверяющих друг другу абонента. Они хотят подписать контракт. Это надо сделать так, чтобы не допустить следующую ситуацию: один из абонентов получил подпись другого, а сам не подписался.
2. Протокол идентификации абонента. Взаимодействуют два абонента А и В. Абонент А хочет доказать абоненту В, что он именно А, а не противник. Типичный пример: А — владелец интеллектуальной смарт-карты (кредитной карты, карты доступа в закрытое помещение, компьютерный ключ), В — банк, компьютер охраны, администратор сети.
3. Протокол византийского соглашения. Взаимодействуют несколько удаленных абонентов, получивших приказы из одного центра. Часть абонентов, включая центр, могут быть противниками. Необходимо выработать единую стратегию действий, выигрышную для абонентов.
|
|
Эту задачу принято называть задачей о византийских генералах. Опишем пример, которому эта задача обязана своим названием. Византия. Ночь перед великой битвой. Византийская армия состоит из n легионов, каждый из которых подчиняется своему генералу. Кроме того, у армии есть главнокомандующий, который руководит генералами. Однако империя находится в упадке и до одной трети генералов, включая главнокомандующего, могут быть предателями. В течение ночи каждый из генералов получает от главнокомандующего приказ о действиях на утро, причем возможны два варианта приказа: «атаковать» или «отступать». Если все честные генералы атакуют, то они побеждают. Если все они отступают, то им удается сохранить армию. Но если часть из них атакует, а часть отступает, то они терпят поражение. Если главнокомандующий окажется предателем, то он может дать разным генералам разные приказы, поэтому приказы главнокомандующего не стоит выполнять беспрекословно. Если каждый генерал будет действовать независимо от остальных, результаты могут оказаться плачевными. Очевидно, что генералы нуждаются в обмене информацией друг с другом (относительно полученных приказов) с тем, чтобы прийти к соглашению.
4. Протокол подбрасывания монеты по телефону. Взаимодействуют два не доверяющих друг другу абонента. Они хотят бросить жребий с помощью монеты. Это надо сделать так, чтобы абонент, подбрасывающий монету, не мог изменить результат подбрасывания после получения догадки от абонента, угадывающего этот результат.
|
|
Опишем один из простейших протоколов подбрасывания монеты по телефону (так называемая схема Блюма-Микали). Для его реализации у абонентов А и В должна быть односторонняя функция f: Х—>Y, удовлетворяющая следующим условиям:
1) Х — конечное множество целых чисел, которое содержит одинаковое количество четных и нечетных чисел.
2) любые числа x 1 ,x 2 Î X, имеющие один образ f(x1) = f(x2), имеют одну четность;
3) по заданному образу f(x) «трудно» вычислить четность неизвестного аргумента х.
Роль подбрасывания монеты играет случайный и равновероятный выбор элемента х Î X, а роль орла и решки — четность и нечетность х соответственно. Пусть А — абонент, подбрасывающий монету, а В — абонент, угадывающий результат. Протокол состоит из следующих шагов:
1) А выбирает х («подбрасывает монету»), зашифровывает х, т. е. вычисляет у = f(x), и посылает у абоненту В;
2) В получает у, пытается угадать четность х и посылает свою догадку абоненту А;
3) А получает догадку от В и сообщает В, угадал ли он, посылая ему выбранное число х;
4) В проверяет, не обманывает ли А, вычисляя значение f(x) и сравнивая его с полученным на втором шаге значением у.
Интерактивная система доказательства
Осмысление различных протоколов и методов их построения привело в 1985-1986 гг. к появлению двух плодотворных математических моделей — интерактивной системы доказательств и доказательств с нулевым разглашением. Математические исследования этих новых объектов позволили доказать много утверждений, весьма полезных при разработке криптографических протоколов.
Определение. Под интерактивной системой доказательства (Р, V, S) понимают протокол взаимодействия двух абонентов:
Р (prover) — доказывающего и
V (verifier) — проверяющего.
Абонент Р хочет доказать абоненту V, что утверждение S истинно. При этом абонент V самостоятельно, без помощи абонента Р, не может проверить утверждение S (поэтому V и называется проверяющим). Абонент Р может быть и противником, который хочет доказать абоненту V, что утверждение S истинно, хотя на самом деле оно ложно. Протокол может состоять из многих раундов обмена сообщениями между абонентами Р и V и должен удовлетворять двум условиям:
1. полнота — если S действительно истинно, то абонент Р убедит абонента V признать это;
2. корректность — если S ложно, то абонент Р «вряд ли» убедит абонента V, что S истинно.
Здесь словами «вряд ли» мы для простоты заменили точную математическую формулировку.
Подчеркнем, что в определении системы (Р, V, S) не допускалось, что абонент V может быть противником. А если это так и проверяющий хочет «выведать» у доказывающего какую-нибудь новую полезную для себя информацию об утверждении S? В этом случае абонент Р, естественно, может не хотеть, чтобы это случилось в результате работы данного протокола. Протокол (Р, V, S), решающий такую задачу, называется доказательством с нулевым разглашением и должен удовлетворять, кроме условий 1) и 2), еще и следующему условию:
3) нулевое разглашение — в результате работы протокола (Р, V, S)абонент V не увеличит свои знания об утверждении S или, другими словами, не сможет извлечь никакой информации о том, почему S истинно.