ШИФРЫ С ОТКРЫТЫМ КЛЮЧОМ

Развитие криптографии в XX веке было стремительным, но неравномерным. Анализ истории ее развития как специфической области человеческой деятельности выделяет три основных периода.

  1. Начальный, имевший дело лишь с ручными шифрами, начавшийся в седой древности, закончился лишь в конце тридцатых годов XX века. Криптография за это время прошла длинный путь от магического искусства древних жрецов до будничной прикладной профессии чиновников секретных ведомств.
  2. Следующий период отмечен созданием и широким внедрением в практику сначала механических, потом электромеханических и, наконец, электронных устройств шифрования, созданием сетей засекреченной связи. Его началом можно считать применение телеграфных шифровальных машин, использующих длинный одноразовый ключ. Длится он по наши дни. Однако к середине семидесятых годов было достигнуто положение, когда повышение стойкости шифров отошло на второй план. С развитием разветвленных коммерческих сетей связи, электронной почты и глобальных информационных систем самой главными стали проблемы распределения секретных ключей и подтверждения авторства. К ним теперь привлечено внимание широкого круга криптологов.
  3. Началом третьего периода развития криптологии обычно считают 1976 год, когда американские математики Диффи и Хеллман предложили принципиально новый вид организации засекреченной связи без предварительного снабжения абонентов секретными ключами, так называемое шифрование с открытым ключом. В результате стали появляться криптографические системы, основанные на подходе, сформулированном еще в сороковых годах Шенноном. Он предложил строить шифр таким способом, что-бы его раскрытие было эквивалентно решению математической задачи, требующей выполнения объемов вычислений, превосходящих возможности современных ЭВМ. Новый период развития криптографии характеризуется появлением полностью автоматизированных систем шифрованной связи, в которых каждый пользователь имеет свой индивидуальный пароль для подтверждения подлинности, хранит его, к примеру на магнитной карте, и предъявляет при входе в систему, а весь остальной процесс проведения секретной связи происходит автоматически.

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

При шифровании с открытым ключом для шифрования и расшифровывания используются разные ключи, и знание одного из них не дает практической возможности определить второй. Поэтому ключ для шифрования может быть сделан общедоступным без потери стойкости шифра, если ключ для расшифровывания сохраняется в секрете, например, генерируется и хранится только получателем информации. Несмотря на подозрительность (кому верят криптоаналитики?) и консерватизм (лучшее - для криптографов - враг хорошего!) новые идеи стали быстро реализовываться на практике. Шифруют и сейчас традиционными методами, но рассылка ключей и цифровая подпись стали выполняться уже по-новому. Сейчас два метода шифрования с открытым ключом получили признание и закреплены в стандартах. Национальный институт стандартов и технологий США NIST (бывший ANSI) принял стандарт MD 20899, основанный на алгоритме ЭльГамаля, а на основе алгоритма RSA приняты стандарты ISO/IEC/DIS 9594-8 международной организацией по стандартизации и Х.509 международным комитетом по связи.

Шифр Ривеста-Шамира-Алдемана

Первой и наиболее известной криптографической системой с открытым ключом была предложенная в 1978 году так называемая система RSA. Ее название происходит от первых букв фамилий авторов Rivest, Shamir и Aldeman, которые придумали ее во время совместных исследований в Массачусетском технологическом институте в 1977 году. Она основана на трудности разложения очень больших целых чисел на простые сомножители. Международная сеть электронного перечисления платежей SWIFT уже требует от банковских учреждений, пользующихся ее услугами, применения именно этой криптографической системы. Алгоритм ее работает так:

  1. Отправитель выбирает два очень больших простых числа Р и Q и вычисляет два произведения N=PQ и M=(P-1)(Q-1).
  2. Затем он выбирает случайное целое число D, взаимно простое с М, и вычисляет Е, удовлетворяющее условию DE = 1 MOD М.
  3. После этого он публикует D и N как свой открытый ключ шифрования, сохраняя Е как закрытый ключ.
  4. Если S - сообщение, длина которого, определяемая по значению выражаемого им целого числа, должна быть в интервале (1, N), то оно превращается в шифровку возведением в степень D по модулю N и отправляется получателю S'=(S**D) MOD N.
  5. Получатель сообщения расшифровывает его, возводя в степень Е по модулю N, так как S = (S'**E) MOD N = (S**(D*E)) MOD N.

Таким образом, открытым ключом служит пара чисел N и D, а секретным ключом число Е. Смысл этой системы шифрования становится прозрачным, если упомянуть про малую теорему Ферма, которая утверждает, что при простом числе Р и любом целом числе К, которое меньше Р, справедливо тождество К**(P-1)=1 MOD Р. Эта теорема позволяет определять, является ли какое-либо число простым или же составным.

Приведем простой пример на малых простых числах Р=211 и Q=223. В этом случае N=47053 и М=46620. Выберем открытый ключ шифрования D=16813 и вычислим секретный ключ расшифровывания Е= 19837. Теперь, взяв за сообщение название метода RSA, переведем его в число. Для этого будем считать букву R равной 18, S равной 19, А равной 1 по порядковому номеру их положения в английском алфавите. На представление каждой буквы отведем по 5 бит числа, представляющего открытый текст. В этом случае слову RSA соответствует следующее число:

S=((1*32)+19)*32+18=1650

С помощью открытого ключа получаем шифровку:
S'=(S**D) MOD N=1650**16813 MOD 47053=3071

Получатель расшифровывает ее с помощью секретного ключа:
S = (S'**E) MOD N=3071**19837 MOD 47053=1650

Авторы RSA в примере из своей первой публикации использовали D=9007 и N=11438162575788886766923577997614661201021829672124236256256184 29357069352457338978305971235639587050589890751475992900268795 43541.

Приняв за исходный открытый текст фразу из "Юлия Цезаря" Шекспира: ITS ALL GREEK TO ME, представленную целым числом S=920190001121200071805051100201501305, они получили такую шифровку

  S'=199935131497805100452317122740260647423204017058391463103703
     717406259716089489275043992096267258267501289355446135382376
     9748026.

Зачем приведены эти длинные наборы цифр, взятые из книги американского математика Мартина Гарднера, читатель узнает ниже. Криптостойкость системы RSA основана на том, что М не может быть просто вычислена без знания простых сомножителей Р и Q, а нахождение этих сомножителей из N считалась трудно разрешимой задачей. Однако недавние работы по разложению больших чисел на сомножители показали, что для этого могут быть использованы разные и даже совершенно неожиданные средства. Сначала авторы RSA предлагали выбрать простые числа Р и Q случайно, по 50 десятичных знаков каждое. Считалось, что такие большие числа очень трудно разложить на простые сомножители при криптоанализе. Райвест полагал, что разложение на простые множители числа из почти что 130 десятичных цифр, приведенного в их публикации, потребует более 40 квадриллионов лет машинного времени. Но математики Ленстра из фирмы Bellcore и Манасси из фирмы DEC разложили число из 155 десятичных цифр на простые сомножители всего за 6 недель, соединив для этого 1000 ЭВМ, находящихся в разных странах мира. Выбранное число, называемое девятым числом Ферма, с 1983 года находилось в списке чисел, разложение которых считалось наиболее желательным. Это число взято потому, что оно считалось неразложимым при существующей вычислительной технике и достаточно большим для того, чтобы его можно считать безопасным для формирования N в RSA. Как заявил Ленстра, ведущий в Bellcore исследования по электронной защите информации и разложению больших чисел, их целью было показать разработчикам и пользователям криптографических систем, с какими угрозами они могут встретиться и насколько осторожны должны быть при выборе алгоритмов шифрования. По мнению Ленстра и Манасси, их работа компрометирует и создает большую угрозу применениям криптографических систем RSA.

Следует учесть, что работа по совершенствованию методов и техники разложения больших чисел только началась и будет продолжена. Те же Ленстра и Манасси в 1991 году нашли делитель тринадцатого числа Ферма, которое состоит примерно из 2500 десятичных разрядов. Теперь разработчикам криптографических алгоритмов с открытым ключом на базе RSA приходится как чумы избегать применения разложимых чисел длиной менее 200 десятичных разрядов. Самые последние публикации предлагают для этого применять числа в 250 и даже 300 десятичных разрядов. А так как для щифрования каждого блока информации приходится соответствующее число возводить в колоссально большую степень по модулю N, то для современных компьютеров это задача на грани возможного. Поэтому для практической реализации шифрования RSA радиоэлектроники начали разрабатывать специальные процессоры, которые позволили бы выполнять операции RSA достаточно быстро. Лучшими из серийно выпускаемых кристаллов являются процессоры фирмы CYLINK, которые позволяют выполнять возведение в степень целого числа из 307 десятичных знаков за доли секунды. Отметим, что чрезвычайно слабое быстродействие криптографических систем на основе RSA лишь ограничивает область их применения, но вовсе не перечеркивает их ценность.

"Шифр ЭльГамаля

Криптографы постоянно вели поиски более эффективных систем открытого шифрования, и в 1985 году ЭльГамаль предложил следующую схему на основе возведения в степень по модулю большого простого числа. Для этого задается большое простое число Р. Сообщения представляются целыми числами S из интервала (1, Р). Оригинальный протокол передачи сообщения S выглядит в варианте Шамира, одного из авторов RSA, так:

  1. Отправитель А и получатель b знают лишь Р. A генерирует случайное число Х из интервала (1,Р) и Bтоже генерирует случайное число Y из того же интервала.
  2. A шифрует сообщение S1=S**X MOD Р и посылает B.
  3. B шифрует его своим ключом S2=S1**Y MOD Р и посылает S2 к A.
  4. A "снимает" свой ключ S3=S2**(-X) MOD Р и возвращает S3 к B.
  5. Получатель В расшифровывает сообщение: S=S3**(-Y) MOD Р.

Этот протокол можно применить, например, для таких неожиданных целей, как игра в очко или блэкджек по телефону. Крупье шифрует карты своим ключом и передает их игроку. Игрок выбирает наугад одну из карт, шифрует карты своим ключом и возвращает их крупье. Крупье "снимает" с выбранной карты свой ключ и отсылает ее игроку. "Сняв" с этой карты свой ключ игрок узнает ее номинал и принимает решение: спасовать, тянуть еще или раскрываться. Теперь, хотя колода находится у крупье, но он не может ее раскрыть, так как карты зашифрованы ключом игрока. Крупье выбирает свою карту аналогично игроку. (Аналогичный алгоритм для игры в карты можно реализовать и на основе шифрования заменой операцией XOR. Однако им нельзя распространять ключи из-за легкого перехвата и взлома.)

В системе ЭльГамаля большая степень защиты, чем у алгоритма RSA достигается с тем же по размеру N, что позволяет почти на порядок увеличить скорость шифрования и расшифрования. Криптостойкость системы ЭльГамаля основана на том, что можно легко вычислить степень целого числа, то есть произвести умножение его самого на себя любое число раз так же, как и при операциях с обычными числами. Однако трудно найти показатель степени, в которую нужно возвести заданное число, чтобы получить другое, тоже заданное. В общем случае эта задача дискретного логарифмирования кажется более трудной, чем разложение больших чисел на простые сомножители, на основании чего можно предположить, что сложности вскрытия систем RSA и ЭльГамаля будут сходными. С точки зрения практической реализации, как программным, так и аппаратным способом ощутимой разницы между этими двумя стандартами нет. Однако в криптостойкости они заметно различаются. Если рассматривать задачу разложения произвольного целого числа длиной в 512 бит на простые множители и задачу логарифмирования целых чисел по 512 бит, вторая задача, по оценкам математиков, несравненно сложнее первой. Однако есть одна особенность. Если в системе, построенной с помощью алгоритма RSA, криптоаналитику удалось разложить открытый ключ N одного из абонентов на два простых числа, то возможность злоупотреблений ограничивается только этим конкретным пользователем. В случае же системы, построенной с помощью алгоритма ЭльГамаля, угрозе раскрытия подвергнутся все абоненты криптографической сети. Кроме того, упомянутые выше Ленстра и Манасси не только поколебали стойкость RSA, разложив девятое число Ферма на простые множители за неприлично короткое время, но и, как было замечено некоторыми экспертами, указали "брешь" в способе ЭльГамаля. Дело в том, что подход, применявшийся при разложении на множители девятого числа Ферма, позволяет существенно усовершенствовать методы дискретного логарифмирования для отдельных специальных простых чисел. То есть тот, кто предлагает простое Р для алгоритма ЭльГамаля, имеет возможность выбрать специальное простое, для которого задача дискретного логарифмирования будет вполне по силам обычным ЭВМ. Следует заметить, что этот недостаток алгоритма ЭльГамаля не фатален. Достаточно предусмотреть процедуру, гарантирующую случайность выбора простого Р в этой системе, и тогда только что высказанное возражение теряет силу. Стоит отметить, что чисел специального вида, ослабляющих метод ЭльГамаля, очень мало и случайным их выбором можно пренебречь.

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

Пока преимущества методов шифрования с открытым ключом не были очевидны. Однако на их основе легко решать задачу выработки общего секретного ключа для сеанса связи любой пары пользователей информационной системы. Еще в 1976 году Диффи и Хеллман предложили для этого протокол открытого распределения ключей. Он подразумевает независимое генерирование каждым из пары связывающихся пользователей своего случайного числа, преобразование его посредством некоторой процедуры, обмен преобразованными числами по открытому каналу связи и вычисление общего секретного ключа на основе информации, полученной в процессе связи от партнера. Каждый такой ключ существует только в течение одного сеанса связи или даже части его. Таким образом, открытое распределение ключей позволяет каждой паре пользователей системы самим выработать свой общий секретный ключ, упрощая тем процедуру распределения секретных ключей. Хотя все не так просто - отсутствие у абонентов перед сеансом связи заблаговременно распределенного общего секретного ключа в принципе не дает им возможности удостовериться в подлинности друг друга при помощи обмена сообщениями по открытому каналу. Например, пересылать ключи можно и по описанному выше алгоритму ЭльГамаля в модификации Шамира, но как убедиться в том, что имеешь дело с партнером, а не перехватчиком? Для подтверждения подлинности каждый из участников секретной сети все же должен иметь собственный секретный ключ, известный только ему и отличающий его от всех других абонентов. В этом случае алгоритмом Диффи-Хеллмана будет обеспечена такая процедура предъявления пароля, что его многократное использование не снижало надежности доказательства подлинности владельца. В результате две функции общего секретного ключа, обычно доставляемого по секретному каналу, как защита информации в канале связи от третьей стороны и подтверждение подлинности каждого из абонентов партнеру, разделяются. Алгоритм открытого распределения ключей Диффи-Хеллмана выглядит так:

  1. Пусть имеются два абонента открытой сети A и B, знающие пару открытых ключей Р и D. Кроме того, у A есть секретный ключ Х из интервала (1, N), а у B есть секретный ключ Y из того же интервала.
  2. Абонент A посылает B шифровку своего ключа Z'=D**X MOD Р, а абонент B посылает A шифровку своего ключа Z"=D**Y MOD P.
  3. После этого общий ключ Z они вычисляют как Z=Z'**Y =Z''**X.

При помощи специальных приемов время формирования общего ключа в системе Диффи-Хеллмана может быть сокращено в 5 раз по сравнению с системой ЭльГамаля в модификации Шамира, и в 30 раз по сравнению с RSA при том же уровне стойкости. Это, с точки зрения большинства практических приложений, оказывается заметным преимуществом, так как шифрование и расшифровывание по алгоритму RSA примерно в тысячу раз медленнее классических алгоритмов типа DES. Отметим, что для многих применений криптографических систем с открытым ключом время вычислений при криптографических преобразованиях не имеет большого значения. Например, при идентификации пользователей по кредитным карточкам не будет разницы потребует ли она одну микросекунду или одну секунду. То же относится и к выбору общего ключа шифрования для другой, более быстродействующей, но не обладающей способностью обмена ключами криптографической системы.

Необходимость в системах открытого распределения ключей иметь заранее распространенные из центра индивидуальные секретные пароли для подтверждения подлинности пользователей не выглядит столь уж обременительной задачей, как изготовление и распределение из центра пар секретных ключей для связи абонентов меж собой. Срок действия такого пароля может быть существенно больше, чем срок действия ключа для связи, скажем год, а их общее число в сети связи равно числу абонентов. Кроме того, при некоторый видах связи, подтверждение подлинности партнера может достигаться за счет узнавания его по физическим признакам. Например, по голосу при телефонной связи или по внешнему виду и голосу при связи по телевизионным каналам. Следует отметить, что распределение ключей с помощью криптографических систем с открытым ключом имеет единственное достоинство - необходимость на каждом узле секретной связи иметь лишь по одному ключу. Для классических же симметричных криптографических систем ключей должно быть столько, сколько у узла абонентов. Вместе с тем, системы с открытым ключом имеют слабые места. Так, если взлом шифровки, содержащей ключ, в классической системе принципиально невозможен, так как открытый текст несмысловой и не содержит избыточной информации, то в системах с открытым ключом у криптоаналитика всегда есть надежда на успех. Далее, если число D общее для всех участников сети, то его компрометация, в виде обнаружения специальных свойств, облегчающих логарифмирование, приведет к компрометации всей сети. Если же D индивидуально для каждой пары абонентов, то, во-первых, из-за обилия ключей проще найти среди них слабый, и, вовторых, хотя рассылка и хранение несекретных ключей несравнимо легче, чем секретных, но тоже доставляет массу хлопот. Поэтому если у криптографа есть возможность воспользоваться услугами секретного канала, то он всегда предпочтет его открытому распределению ключей.

Из практически действующих сетей связи, использующих систему открытого распределения ключей, наиболее серьезно защищенной является телефонная государственная сеть США на основе аппаратов STU-III. Она начала функционировать в 1987 году и содержит сейчас более 150 тысяч абонентов. В России аналогичная сеть, называемая еще АТС-1 или "вертушкой", тоже надежно защищена, но абонентов там в сотни раз меньше. От этого многие данные передаются по не вполне закрытым сетям вроде ИСКРА-2, доступным для взлома хакерами. К началу восьмидесятых годов криптологи пришли к пониманию преимущества так называемых гибридных систем, в которых процедуры шифрования с открытым ключом используются лишь для передачи ключей и цифровой подписи, а информация, которую нужно передать, защищается классическим алгоритмом типа DES, ключ для которого передан с помощью шифрования с открытым ключом. Первым серийным устройством данного типа был Datacryptor фирмы Racal- Milgo, выпущенный в 1979 году. Аппарат управления ключами шифрования Datacryptor предназначен в основном для правительственных сетей связи и аттестован на соответствие английскому стандарту защиты не секретной, но важной информации. В нем предусмотрены сигнализация о нарушениях криптографических требований и извещения об ошибках. В этом аппарате используется алгоритм установления шифрованной связи при помощи выработки и передачи общего секретного ключа по алгоритму RSA. В дальнейшем аппаратов подобного типа для защиты информации было выпущено очень много. Другие примеры использования новых криптографических идей демонстрируют многие коммерческие сети, особенно банковские, как SWIFT. Кроме того, система цифровой подписи RSA применяется в аппаратуре проверки соблюдения договора об ограничении ядерных испытаний, разработанной Sandia Laboratories в 1982 году, сети BPMIS и других системах. В России ряд фирм тоже занимается гибридными схемами, как Телекрипт, использующей быстродействующий алгоритм ГОСТ 28147-89 для шифрования данных и генерации имитоприставок (Имитоприставка - шифрованная контрольная сумма по исходному тексту, позволяющая с любой наперед заданной вероятностью судить об отсутствии в нем искажений.) и алгоритм RSA для управления ключевой информацией и получения цифровых подписей.

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

Действующие в России системы передачи данных в большинстве своем имеют недостаток, который заключается в том, что они не дают возможности проверки подлинности и авторства пересылаемых документов. С их помощью в настоящее время невозможно заключение юридически признаваемых сделок и пересылка юридически подтверждаемых документов, вроде платежных поручений. Это часто сводит на нет их преимущества по сравнению с почтовой пересьшкой. Как правило, все полученные через компьютерную связь документы копируются из памяти машины на бумажный носитель, подписываются физическими лицами и удостоверяются печатями юридических лиц. Единственное исключение представляет плата КРИПТОН, так как достоверность платежных документов, зашифрованных с ее помощью, признана арбитражным судом. В ней и ряде других шифросистем цифровая подпись сообщения образуется с помощью секретного ключа. Проще всего зашифровать сообщение этим ключом, но оно ведь может быть очень длинным. Поэтому для экономии шифруется лишь контрольная сумма, сделанная по сообщению, называемая имитоприставкой. Например, в PGP длина ее 128 бит, что обеспечивает качественный "отпечаток пальцев", который подделать практически невозможно, так как вероятность подделки меньше 10**(-38). Вместе с тем, что очень важно, восстановить оригинальное сообщение по цифровой подписи невозможно. Решение проблемы авторства документа может быть достигнуто лишь с использованием электронной цифровой подписи - средства, позволяющего на основе криптографических методов надежно установить авторство и подлинность документа. Это средство позволяет заменить при безбумажном документообороте традиционные печать и подпись. Электронная цифровая подпись зависит от текста документа, требующего заверения, секретного ключа, доступного только заверяющему, и несекретного общедоступного ключа. Преобразование, используемое для выработки цифровой подписи, является криптографической функцией от указанных величин. Оно выбирается таким образом, чтобы при отсутствии у злоумышленника секретного ключа сделать невозможным подделку цифровой подписи, незаметное изменение документа, а также дать возможность любому лицу при наличии у него общедоступного ключа, документа и цифровой подписи удостовериться в подлинности документа и соответствующей цифровой подписи. Только секретный ключ гарантирует невозможность подделки злоумышленником документа и цифровой подписи от имени заверяющего. Каждый пользователь системы цифровой подписи должен обеспечивать сохранение в тайне своей секретный ключ. Общедоступный несекретный ключ используется для проверки подлинности документа и цифровой подписи, а также предупреждении мошенничества со стороны заверяющего в виде отказа его от подписи документа.

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

Другое приложение цифровая подпись находит при снабжении абонентов криптографической информационной сети ключами. Простейший способ выделить группу пользователей сети - снабдить их общим секретным ключом. Недостатком такого подхода является то, что компрометация пароля у одного из членов группы ведет к краху всей системы подтверждения подлинности. Простейший вариант усиления системы - снабжение пользователей индивидуальными секретными паролями. Однако при таком варианте возникает проблема надежного хранения большого количества секретных паролей, а это приемлемо лишь для крупных абонентских пунктов. К тому же пользователи не могут непосредственно представляться друг другу, минуя центр. Чтобы обеспечить возможность непосредственного представления пользователей друг другу, процедура проверки пароля должна быть общедоступной. В то же время алгоритм должен быть устроен так, чтобы подделать пароль на основании известной процедуры проверки было невозможно. Для использования цифровых подписей при обмене ключами требуется общедоступный каталог секретной сети, где хранятся процедуры проверки подписи всех абонентов. Для системы RSA этот каталог содержит имена-идентификаторы абонентов ID с парой чисел (N, D). Для системы ЭльГамаля в каталоге против каждого имени ID записываются простое число Р и целые числа N и Y. Подлинность каталога с подписями может быть обеспечена путем подписывания каждой записи в каталоге или всего каталога сразу центром и выдачей в таком виде их абоненту. При установлении связи абоненты обмениваются этими подписанными сообщениями и на этом основании проверяют полномочия друг друга: просят партнера подписать случайное сообщение. Для системы ЭльГамаля общий объем ключевой информации в сети может быть сокращен за счет использования всеми одних и тех же чисел Р и N. Для системы RSA общим можно сделать только число N, а числа D должны бытЬ у всех различными. Из-за перестановочности операции умножения в алгоритме RSA не имеет значения, будет ли опубликовано D или Е, для него функции шифрования и расшифровывания одинаковы. Это позволяет реализовать процедуру получения цифровой подписи сменой Е и D. Если отправитель хочет, чтобы получатели его сообщений могли удостовериться, что эти сообщения действительно исходят от него, то он посылает шифровку S' вместе с подписью R, вычисленной как:

S = R**E MOD N

Для разрешения споров между отправителем и получателем информации, связанных с возможностью искажения ключа проверки подписи [S', R], достоверная копия этого ключа выдается третьей стороне арбитру и применяется им при возникновении конфликта. Каждый может расшифровать сообщение S', но так как ключ Е известен только отправителю, то никто другой кроме него не мог бы послать шифрованное сообщение или подтвердить подпись как:

S = R**D MOD N

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

  1. Отправитель A и получатель B знают Р и случайное число N из интервала (1, Р). A генерирует случайные числа Х и Y из того же интервала. Х нужно хранить в секрете, а Y должно быть взаимно простым с Р-1.
  2. Далее A вычисляет Q=N**X MOD Р и R=N**Y MOD Р, решает относительно S уравнение T=X*R+Y*S MOD (Р-1) и передает В документ с подписью [Q, R, S, Т].
  3. Получатель проверяет подпись, контролируя тождество А**S =(В**R)*R**T MOD Р.

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

[MAIN] [BACK] [NEXT]
Hosted by uCoz