• 3.1. Односторонняя функция
  • 3.2. Что даёт односторонняя функция для криптографии
  • 3.3. Числа и поля
  • 3.4. Проблемы факторизации чисел и дискретного логарифмирования
  • 3.5. Криптосистема RSA
  • 3.6. Открытое распределение ключей
  • 3.7. Цифровая подпись
  • 3.8. Что такое криптографический протокол
  • Глава 3

    Новые направления

    В 1983 году в книжке «Коды и математика» М.Н. Аршинова и Л.Е. Садовского (библиотечка «Квант») было написано: «Приемов тайнописи — великое множество, и, скорее всего, это та область, где уже нет нужды придумывать что-нибудь существенно новое». Однако это было очередное большое заблуждение относительно криптографии. Еще в 1976 году была опубликована работа молодых американских математиков У. Диффи и М.Э. Хеллмэна «Новые направления в криптографии», которая не только существенно изменила криптографию, но и привела к появлению и бурному развитию новых направлений в математике. В настоящей главе мы опишем основные понятия «новой криптографии».

    3.1. Односторонняя функция

    Односторонней называется функция F:XY, обладающая двумя свойствами:

    а) существует полиномиальный алгоритм вычисления значений F(x);

    б) не существует полиномиального алгоритма инвертирования функции F, т.е. решения уравнения F(x)=y относительно x.

    Отметим, что односторонняя функция существенно отличается от функций, привычных со школьной скамьи, из-за ограничений на сложность ее вычисления и инвертирования. Это новое понятие в математике введено в 1975 году Диффи и Хеллмэном. Но за истекшие 19 лет так и не удалось построить ни одного примера односторонней функции. Тем не менее, активное изучение свойств этого, пока гипотетического, математического объекта позволило установить его связь с другими более изученными объектами. При этом удалось доказать, что проблема существования односторонней функции эквивалентна одной из хорошо известных нерешенных проблем — «совпадают ли классы сложностей Р и NP»? Строгое определение классов P и NP выходит далеко за рамки настоящей книги. Подготовленным читателям рекомендуем фундаментальную монографию М. Гэри и Д. Джонсона «Вычислительные машины и труднорешаемые задачи».

    Говоря неформально, класс P состоит из задач с полиномиальной сложностью. Более строго, класс P — это класс языков, распознаваемых за полиномиальное время на детерминированной машине Тьюринга. Если такую машину Тьюринга дополнить гипотетической способностью «угадывания», получается более сильная модель — недетерминированная машина Тьюринга. Класс NP — это класс языков, распознаваемых за полиномиальное время на недетерминированной машине Тьюринга. Проблема совпадения классов P и NP — это проблема соотношения возможностей двух моделей вычислений: детерминированная и недетерминированная машина Тьюринга.

    Другим понятием, более близким к традиционной криптографии, в которой есть секретный ключ, является понятие односторонней функции с секретом. Иногда еще употребляются термины функция с ловушкой, функция опускной двери (английское название: one-way trap-door function).

    Односторонней функцией с секретом K называется функция FK: XY, зависящая от параметра K и обладающая тремя свойствами:

    а) при любом K существует полиномиальный алгоритм вычисления значений FK(x);

    б) при неизвестном K не существует полиномиального алгоритма инвертирования FK;

    в) при известном K существует полиномиальный алгоритм инвертирования FK.

    Про существование односторонних функций с секретом можно сказать то же самое, что было сказано ранее про односторонние функции. Для практических целей криптографии было построено несколько функций, которые могут оказаться односторонними. Это означает, что для них свойство б) пока строго не доказано, но известно, что задача инвертирования эквивалентна некоторой давно изучаемой трудной математической задаче. Примеры таких функций приводятся в этюдах 3.5, 3.6, 3.7. Стоит отметить, что для некоторых кандидатов на звание односторонней функции были найдены полиномиальные алгоритмы инвертирования и тем самым доказано, что эти функции не являются односторонними.

    3.2. Что даёт односторонняя функция для криптографии

    Применение односторонней функции в криптографии позволяет:

    1) организовать обмен шифрованными сообщениями с использованием только открытых каналов связи, т.е. отказаться от секретных каналов связи для предварительного обмена ключами;

    2) включить в задачу вскрытия шифра трудную математическую задачу и тем самым повысить обоснованность стойкости шифра;

    3) решать новые криптографические задачи, отличные от шифрования (цифровая подпись и др.).

    Прежде чем разбирать конкретные примеры, опишем идею Диффи и Хеллмэна в общем виде.

    Пользователь A, который хочет получать шифрованные сообщения, должен сначала выбрать какую-нибудь одностороннюю функцию FK с секретом K. Он сообщает всем заинтересованным (например, публикует) описание функции FK в качестве своего алгоритма шифрования. Но при этом значение секрета K он никому не сообщает и держит в секрете. Если теперь пользователь B хочет послать A защищаемую информацию xX, то он вычисляет FK(x) и посылает по открытому каналу к A. Поскольку A для своего секрета K умеет инвертировать FK, то он вычисляет x по полученному FK(x). Никто другой не знает K и поэтому в силу свойства б) односторонней функции с секретом не сможет за полиномиальное время по известному шифрованному сообщению FK(x) вычислить защищаемую информацию x.

    Таким образом, построена система передачи защищаемой информации, причем выполнены два новых свойства:

    1) для передачи сообщений не требуется предварительный обмен ключами по секретному каналу связи;

    2) стойкость шифра зависит от сложности решения трудной математической задачи инвертирования односторонней функции с секретом.

    Описанную систему называют криптосистемой с открытым ключом, поскольку алгоритм шифрования FK является общедоступным или открытым. В последнее время такие криптосистемы еще называют асимметричными, поскольку в них есть асимметрия в алгоритмах: алгоритмы шифрования и дешифрования различны. В отличие от таких систем традиционные шифры называют симметричными: в них ключ для шифрования и дешифрования один и тот же, и именно поэтому его нужно хранить в секрете. Для асимметричных систем алгоритм шифрования общеизвестен, но восстановить по нему алгоритм дешифрования за полиномиальное время невозможно.

    Описанную выше идею Диффи и Хеллмэн предложили использовать также для цифровой подписи сообщений, которую невозможно подделать за полиномиальное время. Пусть пользователю A необходимо подписать сообщение x. Он, зная секрет K, находит такое y, что FK(y) = x, и посылает y пользователю B в качестве своей цифровой подписи. Пользователь B хранит y в качестве доказательства того, что A подписал сообщение x. Это доказательство неопровержимо, поскольку никто другой в силу свойства б) односторонней функции с секретом не сможет за полиномиальное время по известному сообщению x=FK(y) подделать цифровую подпись y.

    В дальнейшем на основе аналогичных рассуждений был предложен еще целый ряд так называемых криптографических протоколов. Эти протоколы позволили решить много новых задач взаимодействия удаленных пользователей по техническим каналам связи в условиях различных угроз (подробнее об этом см. этюд 3.8).

    3.3. Числа и поля

    Занимаясь математикой, вы постоянно пользуетесь очевидными свойствами действительных чисел, даже не замечая этого, например: сумма чисел не зависит от порядка слагаемых.

    Приведем основные свойства операций сложения и умножения на множестве действительных чисел F.

    1) Для каждых трех элементов a, b, cF a+(b+c)=(a+b)+c.

    2) В множестве F есть элемент 0 такой, что для каждого aF a+0=0+a=a.

    3) Для каждого элемента aF существует такой элемент xF, что a+x=x+a=0 (такой элемент называется противоположным к данному).

    4) Для каждых двух элементов a, bF a+b=b+a.

    5) Для каждых трех элементов a, b, cF a∙(bc)=(ab)∙c.

    6) В множестве F есть элемент 1 (не равный 0) такой, что для каждого aF a∙1=1∙a=a.

    7) Для каждого элемента aF, a≠0 существует такой элемент xF, что ax=xa=1 (такой элемент называется обратным к данному).

    8) Для каждых двух элементов a, bF ab=ba.

    9) Для каждых трех элементов a, b, cF a∙(b+c)=ab+ac.

    Свойства 1) – 4) — это свойства операции сложения, свойства 5) – 8) — свойства операции умножения, а свойство 9) устанавливает связь между этими двумя операциями.

    Оказывается, в математике существует много других множеств с парами операций на них, обладающих теми же самыми свойствами. Для таких множеств есть даже специальное название: поле.

    Полем называется множество F с двумя отображениями («операциями»), каждое из которых сопоставляет любой паре элементов из F однозначно определенный третий элемент из F, и эти отображения (условно обозначаемые «+» и «∙») удовлетворяют девяти аксиомам (свойствам), приведенным выше.

    Особенно важными для криптографии являются конечные поля. Сконструируем одно из таких полей.

    Пусть p — простое число. Рассмотрим множество чисел {0, 1, 2, ..., p−1} с операциями сложения и умножения по модулю p (суммой двух чисел считаем остаток от деления на p обычной суммы, произведением — остаток от деления на p обычного произведения). Легко проверить, что свойства 1) – 4) выполнены: для свойств 1) и 4) это очевидно, элемент 0 в свойстве 2) — это обычный нуль, противоположный к элементу a в свойстве 3) — это элемент pa. Так же легко проверяются свойства 5), 6), 8) и 9). Свойство 7) надо доказывать. Предлагаем вам доказать это самостоятельно, поясним только идею: для каждого a ∈ {0, 1, 2, ..., p−1} требуется найти такие x и y, что ax=1+py, т.е. axpy=1, а такие x и y всегда можно найти с помощью алгоритма Евклида.

    Конечное поле — очень интересный математический объект. Оказывается, например, что число элементов в конечном поле может быть только степенью простого числа, и наоборот, для любого простого числа p и для любого натурального числа n существует и в некотором смысле единственное поле из pn элементов. Для него введено даже специальное обозначение: GF(pn).

    Поясним более подробно, в каком смысле поле из pn элементов единственно. В математике принято не различать многие объекты, изучаемые свойства которых совпадают. Например, для того, чтобы складывать и умножать, вовсе не обязательно учить отдельно таблицы сложения и умножения для яблок, и отдельно — для стульев. Достаточно уметь складывать числа. Число в данной ситуации можно представлять как количество единиц некоторого обобщенного продукта, неважно какого. В теории полей два поля F и G считаются «одинаковыми» или изоморфными, если можно построить такое взаимно-однозначное отображение s:FG, чтобы для любых x1,x2F выполнялись условия s(x1+x2)=s(x1)+s(x2), s(x1x2)=s(x1)s(x2). Фактически это означает, что можно взаимно-однозначно сопоставить всем элементам одного поля элементы другого так, что таблицы умножения и сложения в этих полях будут «одинаковыми». Легко, например, доказать, что при изоморфизме нуль переходит в нуль, единица — в единицу.

    Яркий пример использования полей в криптографии вы найдете в этюде 3.5, описывающем криптосистему RSA. Для ее полного понимания рекомендуем решить (или прочитать в любой книге по теории чисел, например, в книге И.М. Виноградова «Основы теории чисел» или в книге О. Оре «Приглашение в теорию чисел») приведенные ниже задачи.

    Подумайте сами:

    1. Функцией Эйлера (обозначение φ(n)) называется количество неотрицательных целых чисел, меньших n и взаимно простых с n. Пусть n = p1α1∙...∙pkαk, где p1, ..., pk — различные простые числа, а α1, ..., αk — натуральные. Доказать, что

    2. (Малая теорема Ферма). Пусть p — простое число, a — число взаимно простое с p. Докажите, что тогда

    3. (Теорема Эйлера). Пусть a и n — взаимно простые числа. Докажите, что тогда

    3.4. Проблемы факторизации чисел и дискретного логарифмирования

    Еще в младших классах школы все решают задачи по разложению чисел на простые множители. Делается это просто делением данного числа на последовательные простые числа. Если число большое, то этот алгоритм будет работать долго (даже на компьютере). Если же число очень большое (скажем, состоит из 200 знаков), самому современному компьютеру могут понадобиться годы работы. И, как это ни странно, до сих пор математики не придумали никакого другого алгоритма, работающего существенно быстрее. Проблема построения такого алгоритма называется проблемой факторизации чисел. С другой стороны, существуют быстрые алгоритмы, позволяющие с большой вероятностью определять, является ли данное число простым или нет (но никакого разложения числа на простые множители эти алгоритмы не находят).

    Криптографические приложения проблемы факторизации чисел и, особенно, заинтересованность пользователей банковских систем цифровой подписи привели к резкому увеличению исследований, связанных с разложением чисел на множители. В последние годы благодаря применению тонких методов теории чисел и алгебраической геометрии было разработано несколько эффективных алгоритмов факторизации. Наилучший из таких алгоритмов еще не является полиномиальным, но уже и не экспоненциальный, он относится к классу так называемых субэкспоненциальных алгоритмов (говоря строго, его сложность превосходит любой полином от n, но меньше, чем 2N, где N=nε для любого ε>0).

    Среди последних достижений в этой области можно упомянуть об успехе Ленстры и Монасси, разложивших в июне 1990 года 155-разрядное число на три простых. Для этого они использовали 1000 объединенных ЭВМ и шесть недель их машинного времени. Вычисления проводились с помощью алгоритма английского математика Дж. Полларда. Ленстра и Монасси считают, что в настоящее время (1991 г.) можно в течение года разложить новые классы целых чисел длиной до 155 разрядов, затратив на это $200 млн.

    Еще одна большая проблема — дискретное логарифмирование в конечных полях. Пусть, например, нам даны элементы a и b из конечного поля F, причем известно, что a=bx при некотором натуральном x. Задача дискретного логарифмирования состоит в том, чтобы определить это x. Можно, разумеется, просто перебирать последовательно все натуральные числа, проверяя, выполнено ли указанное равенство, но это будет экспоненциальный алгоритм. Пока наилучший из разработанных математиками алгоритмов дискретного логарифмирования является субэкспоненциальным.

    В настоящее время эти описанные трудные математические проблемы имеют многочисленные криптографические приложения (см. этюды 3.5, 3.6, 3.7).

    3.5. Криптосистема RSA

    В этюде 3.2 описано, как Диффи и Хеллмэн с помощью односторонней функции с секретом построили криптосистему с открытым ключом. Правда, они не предложили функций, удобных для реализации.

    Однако уже в начале 1977 г. американские специалисты по компьютерным наукам Р. Ривест, А. Шамир и Л. Адлеман придумали одну такую функцию. Система на основе этой функции оказалась очень практичной и получила широкое распространение под названием «система RSA» по первым английским буквам фамилий авторов.

    Опишем систему RSA. При этом мы будем использовать без подробных пояснений обозначения и результаты этюдов 3.2 и 3.3. Пусть n=pq, где p и q — большие простые числа, а e — некоторое число, взаимно простое с φ(n). Найдем число d из уравнения: de=1(modφ(n)).

    Числа p, q и d будем считать секретными и обозначим секрет K={p, q, d}. Числа n и e будем считать общедоступными. Множества открытых сообщений X и шифрованных сообщений Y будем считать равными: X = Y = {1, 2, ... , n−1}.

    Функцию FK : XY определим равенством: FK(x) = xe(modn).

    Свойство а) односторонней функции с секретом выполнено для FK очевидным образом. Проверим свойство в). Для этого просто укажем, как при известном K инвертировать функцию FK: решением уравнения FK(x) = y будет x = yd(modn). Подробное доказательство этого факта оставляем читателю, приведем лишь необходимые выкладки без комментариев:

    de = φ(n)∙m + 1

    (xe)d(modn) = xφ(n)∙m+1(modn) = (xφ(n))mx(modn) = (1)mx(modn) = x.

    Свойство б) для функции FK строго не доказано. Пока общепризнано, что для инвертирования FK необходимо разложить n на множители, а, как указывалось в этюде 3.4, задача факторизации целых чисел относится к трудным математическим задачам.

    Таким образом, описанную функцию FK можно считать кандидатом на звание односторонней функции с секретом. Система RSA строится с помощью этой функции так, как рассказано в этюде 3.2.

    В газете «Известия» за 29 апреля 1994 г. под заголовком «Сверхсекретный шифр разгадан за 17 лет» появилось следующее сообщение: «Когда в 1977 году математики Рональд Ривест, Ади Шамир и Леонард Адлеман зашифровали фразу из нескольких слов, используя комбинацию из 129 цифр, они утверждали, что на разгадку понадобятся триллионы лет. Однако ключ к самому сложному в мире шифру «РСА-129» (RSA) был найден за 17 лет... Разгадка шифра за такой относительно короткий срок имеет огромное значение для государственных организаций и предпринимателей, которые пользуются аналогичными длинными цифровыми кодами для защиты секретных сведений в своих компьютерных базах данных...» Пока это сообщение не подтверждено научными публикациями, ясно лишь, что речь идет о том, что удалось разложить на множители то 129-значное число, которое было использовано в 1977 году. Но уже давно в реальных системах RSA используются более длинные числа.

    Подумайте сами:

    1. Разберите примеры работы системы RSA, приведённые на стр. 241–243 книги М. Гарднера «От мозаик Пенроуза к надёжным шрифтам».

    3.6. Открытое распределение ключей

    Кроме принципа построения криптосистемы с открытым ключом, Диффи и Хеллмэн в той же работе предложили еще одну новую идею — открытое распределение ключей. Они задались вопросом: можно ли организовать такую процедуру взаимодействия абонентов A и B по открытым каналам связи, чтобы решить следующие задачи:

    1) вначале у A и B нет никакой общей секретной информации, но в конце процедуры такая общая секретная информация (общий ключ) у A и B появляется, т.е. вырабатывается;

    2) противник, который перехватывает все передачи информации и знает, что хотят получить A и B, тем не менее не может восстановить выработанный общий ключ A и B.

    Диффи и Хеллмэн предложили решать эти задачи с помощью функции F(x) = αx(modp), где p — большое простое число, x — произвольное натуральное число, α — некоторый примитивный элемент поля GF(p).

    Примитивным называется такой элемент a из GF(p), что каждый элемент поля, за исключением нуля, может быть представлен в виде степени a. Можно доказать, хотя это и не просто, что примитивный элемент всегда существует.

    Общепризнано, что инвертирование функции αx(modp), т.е. дискретное логарифмирование, является трудной математической задачей (см. этюд 3.4).

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

    Числа p и α считаются общедоступными.

    Абоненты A и B независимо друг от друга случайно выбирают по одному натуральному числу — скажем x(A) и x(B). Эти элементы они держат в секрете. Далее каждый из них вычисляет новый элемент:

    y(A)=αx(A)(modp), y(B)=αx(B)(modp).

    Потом они обмениваются этими элементами по каналу связи. Теперь абонент A, получив y(B) и зная свой секретный элемент x(A), вычисляет новый элемент

    y(B)x(A)(modp)=(αx(B))x(A)(modp).

    Аналогично поступает абонент B:

    y(A)x(B)(modp)=(αx(A))x(B)(modp).

    Из свойств поля следует, что тем самым у A и B появился общий элемент поля, равный αx(A)x(B). Этот элемент и объявляется общим ключом A и B.

    Из описания протокола видно, что противник знает p, α, αx(A), αx(B), не знает x(A) и x(B) и хочет узнать ax(A)x(B). В настоящее время нет алгоритмов действий противника, более эффективных, чем дискретное логарифмирование, а это — трудная математическая задача. (Рекомендуем самостоятельно найти за противника общий ключ, используя алгоритм дискретного логарифмирования и не принимая во внимание вопросы его сложности.)

    3.7. Цифровая подпись

    Идея цифровой подписи (иногда ее еще называют электронной подписью) была предложена Диффи и Хеллмэном. Суть идеи — в использовании односторонней функции с секретом FK (см. этюд 3.2). В настоящее время эта идея реализована в большом количестве систем передачи данных, особенно банковских. Сообщение, подписанное цифровой подписью, можно представлять себе как пару (x, y), где x — сообщение (платежное поручение в примере с банком и т.п.), FK: XY — односторонняя функция, известная всем взаимодействующим абонентам, y — решение уравнения FK(y)=x. Из определения функции FK (см. этюд 3.2) очевидны следующие достоинства цифровой подписи:

    1) подписать сообщение x, т.е. решить уравнение FK(y)=x, может только абонент — обладатель данного секрета K; другими словами, подделать подпись невозможно;

    2) проверить подлинность подписи может любой абонент, знающий открытый ключ, т.е. саму функцию FK;

    3) при возникновении споров отказаться от подписи невозможно в силу ее неподделываемости;

    4) подписанные сообщения (x, y) можно, не опасаясь ущерба, пересылать по любым каналам связи.

    Именно перечисленные достоинства и обусловили широкое распространение систем цифровой подписи. Опишем, как практически выглядит использование цифровой подписи, на простейшем примере: работа банка с платежными поручениями своих клиентов. Все абоненты этой сети знают одностороннюю функцию FK, и каждый клиент имеет свой собственный, никому не известный секрет K. Клиент подписывает платежное поручение x с помощью функции FK со своим секретом K и посылает подписанное платежное поручение в банк. Банк, получив сообщение от клиента и зная открытый ключ, проверяет подлинность подписи клиента и только после этого выполняет его платежное поручение. В силу отмеченных выше достоинств цифровой подписи и банк, и клиент уверены, что их интересы не пострадают.

    Широкое развитие систем электронных платежей, электронной почты и других систем передачи данных потребовало большого разнообразия цифровых подписей. Это привело к развитию теории протоколов цифровой подписи, которая в настоящее время составляет большой раздел теоретической криптографии. В рамках этой теории систематизированы различные виды атак противника на систему цифровой подписи, различные виды успехов, которые противник может достигнуть, различные виды стойкости схем цифровой подписи. Удалось также доказать в некотором смысле эквивалентность существования двух гипотетических объектов: односторонней функции и стойкой схемы цифровой подписи.

    Подумайте сами:

    1. Пользуясь общей схемой из этюда 3.2, опишите схему цифровой подписи RSA.

    3.8. Что такое криптографический протокол

    Под криптографическим протоколом понимают такую процедуру взаимодействия абонентов, в результате которой абоненты (не противники!) достигают своей цели, а противник — не достигает.

    Успехи, достигнутые в разработке схем цифровой подписи и открытого распределения ключей, позволили применить эти идеи также и к другим задачам взаимодействия удаленных абонентов. Так возникло большое новое направление теоретической криптографии — криптографические протоколы. В настоящее время здесь еще нет устоявшихся определений и общепринятой терминологии, однако мы считаем необходимым дать читателю неформальное представление об этой новой интересной области.

    Объектом изучения теории криптографических протоколов являются удаленные абоненты, взаимодействующие по открытым каналам связи. Целью взаимодействия абонентов является решение какой-то задачи. Имеется также противник, который преследует собственные цели. При этом противник в разных задачах может иметь разные возможности: например, может взаимодействовать с абонентами от имени других абонентов или вмешиваться в обмены информацией между абонентами и т.д. Противником может даже оказаться один из абонентов или несколько абонентов, вступивших в сговор.

    Полезно самостоятельно продумать введенные понятия на примерах изученных ранее протоколов открытого распределения ключей и цифровой подписи.

    Приведем еще несколько примеров задач, решаемых удаленными абонентами.

    1. Взаимодействуют два не доверяющих друг другу абонента. Они хотят подписать контракт. Это надо сделать так, чтобы не допустить следующую ситуацию: один из абонентов получил подпись другого, а сам не подписался.

    Протокол решения этой задачи принято называть протоколом подписания контракта.

    2. Взаимодействуют два не доверяющих друг другу абонента. Они хотят бросить жребий с помощью монеты. Это надо сделать так, чтобы абонент, подбрасывающий монету, не мог изменить результат подбрасывания после получения догадки от абонента, угадывающего этот результат.

    Протокол решения этой задачи принято называть протоколом подбрасывания монеты.

    Опишем один из простейших протоколов подбрасывания монеты по телефону (так называемая схема Блюма-Микали). Для его реализации у абонентов A и B должна быть односторонняя функция f: XY, удовлетворяющая следующим условиям:

    1) X — конечное множество целых чисел, которое содержит одинаковое количество четных и нечетных чисел;

    2) любые числа x1,x2X, имеющие один образ f(x1)=f(x2), имеют одну четность;

    3) по заданному образу f(x) «трудно» вычислить четность неизвестного аргумента x.

    Роль подбрасывания монеты играет случайный и равновероятный выбор элемента xX, а роль орла и решки — четность и нечетность x соответственно. Пусть A — абонент, подбрасывающий монету, а B — абонент, угадывающий результат. Протокол состоит из следующих шагов:

    1) A выбирает x («подбрасывает монету»), зашифровывает x, т.е. вычисляет y=f(x), и посылает y абоненту B;

    2) B получает y, пытается угадать четность x и посылает свою догадку абоненту A;

    3) A получает догадку от B и сообщает B, угадал ли он, посылая ему выбранное число x;

    4) B проверяет, не обманывает ли A, вычисляя значение f(x) и сравнивая его с полученным на втором шаге значением y.

    3. Взаимодействуют два абонента A и B (типичный при мер: A — клиент банка, B — банк). Абонент A хочет доказать абоненту B, что он именно A, а не противник.

    Протокол решения этой задачи принято называть протоколом идентификации абонента.

    4. Взаимодействуют несколько удаленных абонентов, получивших приказы из одного центра. Часть абонентов, включая центр, могут быть противниками. Необходимо выработать единую стратегию действий, выигрышную для абонентов.

    Эту задачу принято называть задачей о византийских генералах, а протокол ее решения — протоколом византийского соглашения.

    Опишем пример, которому эта задача обязана своим названием. Византия. Ночь перед великой битвой. Византийская армия состоит из n легионов, каждый из которых подчиняется своему генералу. Кроме того, у армии есть главнокомандующий, который руководит генералами. Однако империя находится в упадке и до одной трети генералов, включая главнокомандующего, могут быть предателями. В течение ночи каждый из генералов получает от главнокомандующего приказ о действиях на утро, причем возможны два варианта приказа: «атаковать» или «отступать». Если все честные генералы атакуют, то они побеждают. Если все они отступают, то им удается сохранить армию. Но если часть из них атакует, а часть отступает, то они терпят поражение. Если главнокомандующий окажется предателем, то он может дать разным генералам разные приказы, поэтому приказы главнокомандующего не стоит выполнять беспрекословно. Если каждый генерал будет действовать независимо от остальных, результаты могут оказаться плачевными. Очевидно, что генералы нуждаются в обмене информацией друг с другом (относительно полученных приказов) с тем, чтобы прийти к соглашению.

    Осмысление различных протоколов и методов их построения привело в 1985–1986 гг. к появлению двух плодотворных математических моделей — интерактивной системы доказательства и доказательства с нулевым разглашением.

    Математические исследования этих новых объектов позволили доказать несколько утверждений, весьма полезных при разработке криптографических протоколов.

    Под интерактивной системой доказательства (P, V, S) понимают протокол взаимодействия двух абонентов: P (доказывающий) и V (проверяющий). Абонент P хочет доказать V, что утверждение S истинно. При этом абонент V самостоятельно, без помощи P, не может доказать утверждение S (поэтому V и называется проверяющим). Абонент P может быть и противником, который хочет доказать V, что утверждение S истинно, хотя оно ложно. Протокол может состоять из многих раундов обмена сообщениями между P и V и должен удовлетворять двум условиям:

    1) полнота — если S действительно истинно, то абонент P почти наверняка убедит абонента V признать это;

    2) корректность — если S ложно, то абонент P вряд ли убедит абонента V, что S истинно.

    Здесь словами «почти наверняка» и «вряд ли» мы заменили точные математические формулировки, использующие понятие вероятности.

    Подчеркнем, что в определении системы (P, V, S) не допускалось, что V может быть противником. А если V оказался противником, который хочет «выведать» у P какую-нибудь новую полезную для себя информацию об утверждении S? В этом случае P, естественно, может не хотеть, чтобы это случилось в результате работы протокола (P, V, S). Протокол (P, V, S), решающий такую задачу, называется доказательством с нулевым разглашением и должен удовлетворять, кроме условий 1 и 2, еще и следующему условию:

    3) нулевое разглашение (или стойкость) — в результате работы протокола (P, V, S) абонент V не увеличит свои знания об утверждении S или, другими словами, не сможет извлечь никакой информации о том, почему S истинно.

    Самое удивительное, что в 1991 году для широкого класса математических проблем (включающего так называемые NP-полные задачи) удалось доказать существование доказательств с нулевым разглашением. Впрочем, это доказано только в предположении, что существует односторонняя функция.

    Приведем одно практическое применение теории доказательств с нулевым разглашением — «интеллектуальные карточки» (неподделываемые удостоверения личности, кредитные карточки и т.п.). В них вмонтирован микропроцессор, реализующий действия абонента P в протоколе, претендующем быть протоколом доказательства с нулевым разглашением (P, V, S). Здесь абонент P — владелец карточки, а абонент V — например, компьютер в банке или в проходной секретного учреждения. Подумайте, почему в таком случае можно обеспечить неподделываемость удостоверений личности и кредитных карточек.








    Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх