Вход

Модернизация электронной подписи Эль-Гамаля

Дипломная работа* по математике
Дата добавления: 11 января 2003
Язык диплома: Русский
Word, rtf, 3.4 Мб (архив zip, 254 кб)
Диплом можно скачать бесплатно
Скачать
Данная работа не подходит - план Б:
Создаете заказ
Выбираете исполнителя
Готовый результат
Исполнители предлагают свои условия
Автор работает
Заказать
Не подходит данная работа?
Вы можете заказать написание любой учебной работы на любую тему.
Заказать новую работу
* Данная работа не является научным трудом, не является выпускной квалификационной работой и представляет собой результат обработки, структурирования и форматирования собранной информации, предназначенной для использования в качестве источника материала при самостоятельной подготовки учебных работ.
Очень похожие работы

26






Введение


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

Священные книги Древнего Егип­та, Древ­ней Индии тому примеры.

С широким распространением письменности криптография стала формироваться как самостоятельная наука. Первые криптосистемы встречаются уже в начале нашей эры. Так, Цезарь в своей переписке использовал уже более менее систематический шифр, получивший его имя.

Бурное раз­ви­тие крип­то­гра­фи­че­ские сис­те­мы по­лу­чи­ли в го­ды пер­вой и второй ми­ро­вых войн. Начиная с послевоенного времени и по нынешний день появление вычислительных средств ускорило разработку и совершенствование криптографических методов.

По­че­му про­бле­ма ис­поль­зо­ва­ния крип­то­гра­фи­че­ских ме­то­дов в информационных системах (ИС) ста­ла в на­стоя­щий мо­мент осо­бо ак­ту­аль­на?

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

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

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

Во второй главе работы с протоколами распределения криптографических ключей, понятием электронной подписи и протоколами электронной подписи..

Третья глава данной работы рассказывает о хэш-функциях и (методах) алгоритмах их построения.

В четвертой главе будет рассказано о модернизации электронной подписи Эль Гамаля и задаче дискретного логарифмирования.



























Глава 1. Основные понятия современной криптографии


Про­бле­мой защиты информации путем ее преобразования за­ни­ма­ет­ся

крипто­ло­гия (kryptos - тай­ный, logos - нау­ка). Криптология раз­де­ля­ет­ся на два

на­прав­ле­ния - крип­то­гра­фию и крип­тоа­на­лиз. Це­ли этих на­прав­ле­ний прямо

про­ти­во­по­лож­ны.

Крип­то­гра­фия за­ни­ма­ет­ся по­ис­ком и ис­сле­до­ва­ни­ем ма­те­ма­ти­че­ских методов преоб­ра­зо­ва­ния ин­фор­ма­ции.

Сфе­ра ин­те­ре­сов криптоанализа - ис­сле­до­ва­ние воз­мож­но­сти расшифровывания ин­фор­ма­ции без зна­ния клю­чей.

В этой работе ос­нов­ное вни­ма­ние бу­дет уде­ле­но крип­то­гра­фи­че­ским методам.

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

  1. Симметричные криптосистемы.

  1. Криптосистемы с открытым ключом.

  1. Системы электронной подписи.

  1. Управление ключами.

Основные направления использования криптографических методов - передача конфиденциальной информации по каналам связи (например, электронная почта), установление подлинности передаваемых сообщений, хранение ин­фор­ма­ции (докумен­тов, баз данных) на но­си­те­лях в за­шиф­ро­ван­ном ви­де.

Криптография дает возможность преобразовать информацию таким образом, что ее прочтение (восстановление) возможно только при знании ключа.

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

Алфавит - конечное множество используемых для кодирования информации знаков.

Текст - упорядоченный набор из элементов алфавита.

В качестве примеров алфавитов, используемых в современных ИС можно привести следующие:

  1. алфавит Z33 - 32 буквы русского алфавита и пробел;

  2. алфавит Z256 - символы, входящие в стандартные коды ASCII и КОИ-8;

  3. бинарный алфавит - Z2 = {0,1};

  4. восьмеричный алфавит или шестнадцатеричный алфавит;

Шиф­ро­ва­ние - пре­об­ра­зо­ва­тель­ный про­цесс: ис­ход­ный текст, ко­то­рый носит так­же на­зва­ние от­кры­то­го тек­ста, за­ме­ня­ет­ся шиф­ро­ван­ным тек­стом.

Дешифрование - обратный шифрованию процесс. На основе ключа шифрованный текст преобразуется в исходный.

Ключ - ин­фор­ма­ция, не­об­хо­ди­мая для бес­пре­пят­ст­вен­но­го шиф­ро­ва­ния и дешифрова­ния тек­стов.

Крип­то­гра­фи­че­ская сис­те­ма пред­став­ля­ет со­бой се­мей­ст­во T преобразований откры­то­го тек­ста. Чле­ны это­го се­мей­ст­ва ин­дек­си­ру­ют­ся, или обо­зна­ча­ют­ся символом k; па­ра­метр k яв­ля­ет­ся клю­чом. Про­стран­ст­во клю­чей K - это на­бор возмож­ных зна­че­ний клю­ча. Обыч­но ключ пред­став­ля­ет со­бой последова­тель­ный ряд букв ал­фа­ви­та.

Криптосистемы разделяются на симметричные и с открытым ключом.

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

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

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

Крип­то­стой­ко­стью на­зы­ва­ет­ся ха­рак­те­ри­сти­ка шиф­ра, оп­ре­де­ляю­щая его стой­кость к де­шиф­ро­ва­нию без зна­ния клю­ча (т.е. крип­тоа­на­ли­зу). Имеется несколько показателей криптостойкости, среди которых:

  • количество всех возможных ключей;

  • среднее время, необходимое для криптоанализа.

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

Требования к криптосистемам

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

Для со­вре­мен­ных крип­то­гра­фи­че­ских сис­тем за­щи­ты ин­фор­ма­ции сформулиро­ва­ны сле­дую­щие об­ще­при­ня­тые тре­бо­ва­ния:

  • за­шиф­ро­ван­ное сообщение дол­жно под­да­вать­ся чте­нию толь­ко при наличии клю­ча;

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

  • чис­ло опе­ра­ций, не­об­хо­ди­мых для рас­шиф­ро­вы­ва­ния ин­фор­ма­ции пу­тем пере­бо­ра все­воз­мож­ных ключей долж­но иметь стро­гую ниж­нюю оцен­ку и выхо­дить за пре­де­лы воз­мож­но­стей со­вре­мен­ных ком­пь­ю­те­ров (с учетом возможности использования сетевых вычислений);

  • зна­ние ал­го­рит­ма шиф­ро­ва­ния не долж­но вли­ять на на­деж­ность за­щи­ты;

  • не­зна­чи­тель­ное из­ме­не­ние клю­ча долж­но при­во­дить к су­ще­ст­вен­но­му измене­нию ви­да за­шиф­ро­ван­но­го сообщения да­же при ис­поль­зо­ва­нии од­но­го и то­го же клю­ча;

  • струк­тур­ные эле­мен­ты ал­го­рит­ма шиф­ро­ва­ния долж­ны быть неизменными;

  • до­пол­ни­тель­ные би­ты, вво­ди­мые в сообщение в про­цес­се шиф­ро­ва­ния, должен быть пол­но­стью и на­деж­но скры­ты в шиф­ро­ван­ном тек­сте;

  • дли­на шиф­ро­ван­но­го тек­ста долж­на быть рав­ной дли­не ис­ход­но­го тек­ста;

  • не долж­но быть про­стых и лег­ко ус­та­нав­ли­вае­мых зависимостью ме­ж­ду клю­ча­ми, по­сле­до­ва­тель­но ис­поль­зуе­мы­ми в про­цес­се шиф­ро­ва­ния;

  • лю­бой ключ из мно­же­ст­ва возможных дол­жен обес­пе­чи­вать на­деж­ную защиту ин­фор­ма­ции;

  • ал­го­ритм должен до­пус­кать как про­грамм­ную, так и ап­па­рат­ную реализацию, при этом из­ме­не­ние длины к­лю­ча не долж­но вес­ти к качественному ухуд­ше­нию ал­го­рит­ма шифрования.













Глава 2. Протоколы распределения криптографических ключей и протоколы электронной подписи.


Сис­те­мы с от­кры­тым клю­чом.


Как бы ни бы­ли слож­ны и на­деж­ны крип­то­гра­фи­че­ские сис­те­мы - их сла­бое мест при прак­ти­че­ской реа­ли­за­ции - про­блема рас­пре­де­ле­ния клю­чей. Для то­го, чтобы был воз­мо­жен об­мен кон­фи­ден­ци­аль­ной ин­фор­ма­ци­ей ме­ж­ду дву­мя субъекта­ми ИС, ключ дол­жен быть сге­не­ри­ро­ван од­ним из них, а за­тем ка­ким-то обра­зом опять же в кон­фи­ден­ци­аль­ном по­ряд­ке пе­ре­дан дру­го­му. Т.е. в об­щем случае для пе­ре­да­чи клю­ча опять же тре­бу­ет­ся ис­поль­зо­ва­ние ка­кой-то криптосисте­мы.

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

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

Ис­ход­ный текст шиф­ру­ет­ся от­кры­тым клю­чом адресата и пе­ре­да­ет­ся ему. Зашифрован­ный текст в прин­ци­пе не мо­жет быть рас­шиф­ро­ван тем же от­кры­тым

клю­чом. Де­шиф­ро­ва­ние со­об­ще­ние воз­мож­но толь­ко с ис­поль­зо­ва­ни­ем за­кры­то­го клю­ча, ко­то­рый из­вес­тен толь­ко са­мо­му ад­ре­са­ту.


Крип­то­гра­фи­че­ские сис­те­мы с от­кры­тым клю­чом ис­поль­зу­ют так называемые не­об­ра­ти­мые или од­но­сто­рон­ние функ­ции, ко­то­рые об­ла­да­ют сле­дую­щим свойством: при за­дан­ном зна­че­нии x от­но­си­тель­но про­сто вы­чис­лить зна­че­ние f(x), од­на­ко ес­ли y=f(x), то нет про­сто­го пу­ти для вы­чис­ле­ния зна­че­ния x.

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

В са­мом оп­ре­де­ле­нии не­об­ра­ти­мо­сти при­сут­ст­ву­ет не­оп­ре­де­лен­ность. Под необратимостью понимается не теоретическая необратимость, а практическая невозможность вычислить обратное значение используя современные вычислительные средства за обозримый интервал времени. По­это­му что­бы гарантиро­вать на­деж­ную за­щи­ту ин­фор­ма­ции, к сис­те­мам с откры­тым клю­чом (СОК) предъ­яв­ля­ют­ся два важ­ных и оче­вид­ных тре­бо­ва­ния:

1. Пре­об­ра­зо­ва­ние ис­ход­но­го тек­ста долж­но быть не­об­ра­ти­мым и ис­клю­чать его вос­ста­нов­ле­ние на ос­но­ве от­кры­то­го клю­ча.

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

Ал­го­рит­мы шиф­ро­ва­ния с от­кры­тым клю­чом по­лу­чи­ли ши­ро­кое распространение в со­вре­мен­ных ин­фор­ма­ци­он­ных сис­те­мах. Так, ал­го­ритм RSA стал ми­ро­вым стан­дар­том де-фак­то для от­кры­тых сис­тем и ре­ко­мен­до­ван МККТТ.

Вообще же все предлагаемые сегодня криптосистемы с открытым ключом опираются на один из следующих типов необратимых преобразований:

  1. Разложение больших чисел на простые множители.

  1. Вычисление логарифма в конечном поле.

  1. Вычисление корней алгебраических уравнений.




Алгоритм Диф­фи-Хелл­ма­на.


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

Не­об­ра­ти­мость пре­об­ра­зо­ва­ния в этом слу­чае обес­пе­чи­ва­ет­ся тем, что достаточ­но лег­ко вы­чис­лить по­ка­за­тель­ную функ­цию в ко­неч­ном по­ле Га­луа состоя­щим из p эле­мен­тов. (p - ли­бо про­стое число, либо простое в любой степени). Вычисление же логарифмов в таких полях - значительно более трудоемкая операция.

Если y=ax,, 1 < x < p-1, где - фиксированный элемент поля GF(p), то x=loga y над GF(p). Имея x, легко вычислить y. Для этого потребуется 2 ln(x+y) операций умножения.

Обратная задача вычисления x из y будет достаточно сложной. Если p выбрано достаточно правильно, то извлечение логарифма потребует вычислений, пропорциональных

L(p) = exp { (ln p ln ln p)0.5 }

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

y1 = ax1 mod p

Аналогично поступает и второй пользователь, генерируя x2 и вычислив y2, отправляя его первому пользователю.

В результате этого они могут вычислять k12 = ax1x2 mod p.

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

Не зная x1 и x2, злоумышленник может попытаться вычислить k12, зная только перехваченные y1 и y2. Эквивалентность этой проблемы проблеме вычисления дискретного логарифма есть главный и открытый вопрос в системах с открытым ключом. Простого решения до настоящего времени не найдено. Так, если для прямого преобразования 1000-битных простых чисел требуется 2000 операций, то для обратного преобразования (вычисления логарифма в поле Галуа) - потребуется около 1030 операций.

Как видно, при всей простоте алгоритма Диффи-Хелмана, его недостатком является отсутствие гарантированной нижней оценки трудоемкости раскрытия ключа.

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

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

  1. воз­мож­ность от­ка­за от цен­тра рас­пре­де­ле­ния клю­чей;

  2. вза­им­ное под­твер­жде­ние под­лин­но­сти уча­ст­ни­ков се­ан­са;

  3. под­твер­жде­ние дос­то­вер­но­сти се­ан­са ме­ха­низ­мом за­про­са-от­ве­та,

ис­поль­зо­ва­ние для это­го про­грамм­ных или ап­па­рат­ных средств;

  1. ис­поль­зо­ва­ние при об­ме­не клю­ча­ми ми­ни­маль­но­го чис­ла со­об­ще­ний.


Иерархические схемы распределения ключей.


Рассмотрим следующую задачу.

Пусть абоненты сети связи не равноправны между собой, а разделены на "классы безопасности" C1,C2,…,Cn. На множестве этих классов определен некоторый частичный порядок; если Cj < Ci, то говорят, что Ci доминирует Cj , т.е. имеет более высокий уровень безопасности, чем Cj . Задача состоит в том, чтобы выработать секретные ключи ki для каждого класса Ci таким образом, чтобы абонент из Ci мог вычислить kj в том и только в том, когда Ci  Cj.

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

Для случая, когда частичный порядок является деревом, имеется схема Сандху [San], которая позволяет добавлять новые классы безопасности без изменения ключей существующих классов.

Приведем описание иерархической схемы распределения ключей, предложенной Ву и Чангом для случая, когда частичный порядок является деревом.

Пусть p – большое простое число, V = Zp  Zp Zp – множество всех трехмерных векторов над Zp . Если i  Zp , X = (x1,x2,x3), Y = (y1,y2,y3)  V, то определим следующие векторы из V:



Предположим, что каждому классу безопасности сопоставлен идентификатор

i  Zp \ {0}; класс с идентификатором i мы будем обозначать через Ci . Ввиду того, что частичный порядок на множестве классов безопасности является деревом, для описания протокола достаточно описать процедуры выработки секретного ключа для корневого класса безопасности (т.е. класса с наиболее высоким уровнем безопасности) и для произвольного класса Cj при условии, что секретный ключ для класса Ci , непосредственно доминирующего Cj (т.е. такого, что Cj < Ci и не существует класса Cr такого, что Cj < Cr < Ci), уже выработан.


  1. Для корневого класса безопасности (например C1) выбирается произвольный секретный ключ Ki  V \ {(0,0,0)}.

  2. Пусть класс Ci доминирует класс Cj и для Ci уже выработан секретный ключ Ki  V. Тогда в качестве секретного ключа для Cj выбирается вектор


где Pj – вектор из V, выбранный случайно так, чтобы было определено.

После чего вектор Pj делается общедоступным.

Таким образом, в процессе выполнения протокола для каждого класса безопасности Ci вырабатывается секретный ключ Ki и открытый ключ Pj (кроме корневого класса). Если теперь Cj < Ci, то абонент из Ci может вычислить Kj следующим образом.

Существует цепь классов безопасности Ci = Cro>Cr1>…>Crn = Cj, где Cl-1 непосредственно доминирует Cl для всех L = 1,…,n. Абонент Ci, зная Ki и Pr1, вычисляет по формуле (**), затем, зная Kr1 и Pr2, вычисляет Kr2 по той же формуле и т.д.; после n шагов будет вычислен Krn = Kj.








Электронная подпись


В чем со­сто­ит про­бле­ма ау­тен­ти­фи­ка­ции дан­ных?

В кон­це обыч­но­го пись­ма или до­ку­мен­та ис­пол­ни­тель или от­вет­ст­вен­ное ли­цо обыч­но ста­вит свою под­пись. По­доб­ное дей­ст­вие обыч­но пре­сле­ду­ет две це­ли.

Во-пер­вых, по­лу­ча­тель име­ет воз­мож­ность убе­дить­ся в ис­тин­но­сти пись­ма,

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

Ес­ли под­де­лать под­пись че­ло­ве­ка на бу­ма­ге весь­ма не­про­сто, а ус­та­но­вить автор­ст­во под­пи­си со­вре­мен­ны­ми кри­ми­на­ли­сти­че­ски­ми ме­то­да­ми - тех­ни­че­ская де­таль, то с под­пи­сью элек­трон­ной де­ло об­сто­ит ина­че. Под­де­лать це­поч­ку би­тов, про­сто ее ско­пи­ро­вав, или не­за­мет­но вне­сти не­ле­галь­ные ис­прав­ле­ния в до­ку­мент смо­жет лю­бой поль­зо­ва­тель.

С ши­ро­ким рас­про­стра­не­ни­ем в со­вре­мен­ном ми­ре элек­трон­ных форм до­ку­мен­тов (в том чис­ле и кон­фи­ден­ци­аль­ных) и средств их об­ра­бот­ки осо­бо ак­ту­аль­ной ста­ла про­бле­ма ус­та­нов­ле­ния под­лин­но­сти и ав­тор­ст­ва без­бу­маж­ной до­ку­мен­та­ции.

Итак, пусть име­ют­ся два поль­зо­ва­те­ля Александр и Борис.

От ка­ких на­рушений и дей­ст­вий зло­умыш­лен­ни­ка долж­на за­щи­щать сис­те­ма аутенти­фи­ка­ции.

От­каз (ре­не­гат­ст­во).

Александр за­яв­ля­ет, что он не по­сы­лал со­об­ще­ние Борису, хо­тя на са­мом де­ле он все-та­ки по­сы­лал.

Для ис­клю­че­ния это­го на­ру­ше­ния ис­поль­зу­ет­ся элек­трон­ная (или циф­ро­вая) подпись.

Мо­ди­фи­ка­ция (пе­ре­дел­ка).

Борис из­ме­ня­ет со­об­ще­ние и ут­вер­жда­ет, что дан­ное (из­ме­нен­ное) со­об­ще­ние послал ему Александр.

Под­дел­ка.

Борис фор­ми­ру­ет со­об­ще­ние и ут­вер­жда­ет, что дан­ное (из­ме­нен­ное) со­об­ще­ние послал ему Александр.

Ак­тив­ный пе­ре­хват.

Владимир пе­ре­хва­ты­ва­ет со­об­ще­ния ме­ж­ду Александром и Борисом с це­лью их скры­той мо­ди­фи­ка­ции.

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

Мас­ки­ров­ка (ими­та­ция).

Владимир по­сы­ла­ет Борису со­об­ще­ние от име­ни Александра .

В этом случае для за­щи­ты так­же ис­поль­зу­ет­ся элек­трон­ная под­пись.

По­втор.

Владимир по­вто­ря­ет ра­нее пе­ре­дан­ное со­об­ще­ние, ко­то­рое Александра по­сы­лал ранее Борису . Не­смот­ря на то, что при­ни­ма­ют­ся все­воз­мож­ные ме­ры за­щи­ты от повто­ров, имен­но на этот ме­тод при­хо­дит­ся боль­шин­ст­во слу­ча­ев не­за­кон­но­го снятия и тра­ты де­нег в сис­те­мах элек­трон­ных пла­те­жей.

Наи­бо­лее дей­ст­вен­ным ме­то­дом за­щи­ты от по­вто­ра яв­ля­ют­ся

  1. ис­поль­зо­ва­ние ими­тов­ста­вок,

  2. учет вхо­дя­щих со­об­ще­ний.


Протоколы электронной подписи


Протоколы (схемы) электронной подписи являются основными криптографическим средством обеспечения целостности информации.

Схема Эль Гамаля.

Пусть обоим участникам протокола известны некоторое простое число p, некоторой порождающей g группы Z*p и некоторая хэш-функция h.

Подписывающий выбирает секретный ключ x R Z*p-1 и вычисляет открытый ключ y = g-x mod p. Пространством сообщений в данной схеме является Zp-1 .

Для генерации подписи нужно сначала выбрать uR Zp-1. Если uR Z*p-1 (что проверяется эффективно), то необходимо выбрать новое u. Если же u R Z*p-1 , то искомой подписью для сообщения m является пара (r,s), где r = gu mod p и

s = u-1(h(m) +xr) mod (p-1). Параметр u должен быть секретным и может быть уничтожен после генерации подписи.

Для проверки подписи (r,s) для сообщения m необходимо сначала проверить условия r  Z*p и s  Zp-1 . Если хотя бы одно из них ложно, то подпись отвергается. В противном случае подпись принимается и только тогда, когда gh(m)  yrrs(mod p ).

Вера в стойкость схемы Эль Гамаля основана на (гипотетической) сложности задачи дискретного логарифмирования по основанию g.


Схема Фиата – Шамира.


Для ее обеспечения центр обеспечения безопасности должен выбрать псевдослучайную функцию f, криптографическую хэш-функцию h, а также выбрать различные большие простые числа p, q и вычислить n = pq. Число n и функции f и h являются общедоступными и публикуются центром, а числа p и q должны быть секретными. Кроме того, схема использует два натуральных параметра l и t.

Для каждого пользователя центр обеспечения безопасности генерирует идентификационную информацию I, содержащую, например, имя пользователя, его адрес, идентификационный номер и т. п., и для каждого j = 1,…,l вычисляет

yi = f(I,j), отбирает среди них квадратичные вычеты по модулю n (изменив обозначения, мы считаем, что yi для всех j = 1,…,l являются квадратичными вычетами по млдулю n), и вычисляет xi – наименьший квадратичный корень по модулю n из yi-1 mod n. Числа yi играют роль открытого ключа, а xi – секретного. Так как эти ключи вычисляются с использованием I, схема Фивта – Шамира относится к схемам, основанным на идентификационной информации (identity based). В другом варианте схемы Фиата – Шамира сразу выбираются (псевдослучайным образом) параметру yi. На практике идентификационная информация I и/или открытый ключ (y1,…,yl) каждого пользователя помещаются в некоторый справочник, доступный всем пользователям для чтения, но не доступный для записи. Для обеспечения аутентичности, данные в этом справочнике заверяются подписью центра обеспечения безопасности. Секретный ключ (x1,…,xl) и идентификационная информация I могут быть помещены на интеллектуальную карточку пользователя.

Для генерации подписи для обеспечения m подписывающий


  1. выбирает uiR n (каждое ui – независимо друг от друга) и вычисляет ri = ui2 mod n для i = 1,…,t;


  1. вычисляет h(m,r1,…,rt) и полагает биты eij(i = 1,…,t, j = 1,…,t) равными первым lt битам h(m,r1,…,rt);


  1. вычисляет для i = 1,…,t.

Искомой подписью для сообщения m является набор (eij, vi | i = 1,…,t, j = 1,…,l)

Для проверки подписи (eij, vi | i = 1,…,t, j = 1,…,l) для сообщения m подписывающий

  1. вычисляет vj = h(I,j) для j = 1,…,l или берет их из общедоступного справочника и сравнивает их с имеющимися в подписи (если обнаружено несовпадение – подпись отвергается);


  1. вычисляет для i = 1,…,t.


Подпись принимается тогда и только тогда, когда первые lt битов h(m,z1,…,zt) равны eij.

Несомненным достоинством схемы Фмата – Шамира является отсутствие дискретного экспонентрирования, что делает схему весьма эффективной. Но с другой стороны, в этой схеме длины ключей и подписи значительно больше, чем в схемах типа Эль Гамаля.


Схема стандарта электронной подписи ANSI США (DSA)

Эта схема аналогична схеме Эль Гамаля, но несколько эффективнее, так как в ней порядок g меньше, чем в схеме Эль Гамаля. Пусть в открытом доступе имеются некоторые простые числа p,q такие, что q | p-1, а также элемент g порядка q группы Z*q и хэш-функция h, действующая из пространства сообщений в Z*q .Параметры p,q,g и хэш-функция h могут быть выбраны центром обеспечения безопасности. Подписывающий выбирает секрктный ключ x R Zq и вычисляет открытый ключ y = gx mod p. Для генерации подписи для сообщения m нужно выбрать u R Z*q \{1} и вычислить r = gu mod p mod q и s = u-1 (h(m) +xr) mod q. Параметр u должен быть секретным и может быть уничтожен после вычисления r и s. Если r = 0 или s = 0, то выбираются новое значение u и процесс генерации подписи повторяется. В противном случае (r,s) – искомая подпись для сообщения m.

Для проверки подписи (r,s) для сообщения m необходимо сначала проверить условие 0 < r < q и 0 < s . Если хотя бы одно из них ложно, то подпись отвергается. В противном случае подпись принимается тогда и только тогда, когда

gvh(m)yvr mod p mod q = r, где v = s-1 mod q.


Схема стандарта электронной подписи ГОСТ.

Пусть p,q,g,h,x,y имеют тотже смысл, что и в схеме DSA. Для генерации подписи для сообщения m нужно выбрать u R Z*q \{1} и вычислить

r = gu mod p mod q и s = u-1 (h(m) +xr) mod q. Параметр u должен быть секретным и может быть уничтожен после вычисления r и s. Если r = 0 или s = 0, то выбираются новое значение u и процесс генерации подписи повторяется. В противном случае (r,s) – искомая подпись для сообщения m.

Для проверки подписи (r,s) для сообщения m необходимо сначала проверить условие 0 < r < q и 0 < s . Если хотя бы одно из них ложно, то подпись отвергается. В противном случае подпись принимается тогда и только тогда, когда

gwsy-wr mod p mod q = r, где w = h(m)-1 mod q.



Схема RSA .

В схеме RSA подписывающий выбирает два различных больших простых числа p и q, которые играют роль секретного ключа, и публикует открытый ключ (n,e), где

n = pq, а e – некоторое число, взаимно простое с (n) = (p-1)(q-1) ( - функция Эйлера). Подписью для сообщения m является s(m) = h(m)d mod n , где

d = e-1 mod (n)(очевидно, что, зная p и q, можно эффективно вычислить d) и h – хэш-функция. Проверка подписи s для сообщения m состоит в проверке сравнения

se  h(m) (mod n) .

Схема RSA достаточно эффективна и широко используется на практике. Вера в стойкость схемы основана на (гипотетической) трудности задачи факторизации целых чисел.













Глава 3. Хэш-функции.


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

В ряде криптографических приложений, особенно в схемах электронной цифровой подписи, необходимым элементом является криптографически стойкая

хэш-функция.

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

Наиболее эффективной с точки зрения программной реализации, оказываются хэш-функции построенные "с нуля".

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


Универсальные семейства хэш-функций.


Понятие универсального семейства хэш-функций было введено в 1979 г. Картером и Вегманом [CW].


Определение 1. Пусть А и В - два конечных множества и H - семейство функций из А в В. H называется универсальным семейством хэш-функций если для любых х1  х2  А и y1,y2  В


Вероятность берется по случайному равновероятному выбору функции h из семейства Н.


Обычно предполагается, что мощность образа (множества В) меньше, чем мощность прообраза (А), и что хэш-функции "сжимают" входные слова. Как правило, рассматриваются семейства хэш-функций, которые переводят множество всех двоичных строк длины п в множество всех двоичных строк длины m, где m < п. Говоря неформально, универсальное семейство хэш-функций — это метод "перемешивания" с сокращением длины строк, при котором выходные значения распределены равномерно.

Семейство хэш-функций из определения 1 принято назвать 2-универсалъным семейством. Если в этом определении заменить пары значений x и y на наборы из k значений, то получим определение k-универсального семейства хэш-функций .


Лемма о композиции [DeSY]. Пусть H1 и Н2 - 2-универсальные семейства, хэш-функций, действующих из C1 в C2 и из С2 в С3 соответственно.

Тогда

Н = {h == h2 о h1 | h1  H1, h2  H2},


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


Нас эти семейства интересуют в основном как инструмент для определения и построения семейств односторонних хэш-функций.

С прикладной точки зрения универсальные семейства хэш-функций должны удовлетворять некоторым дополнительным требованиям.

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

У каждой хэш-функции h  H имеется достаточно короткое описание h и существуют два эффективных алгоритма, первый из которых по запросу и выдает случайное h  H, а второй по h аргументу x вычисляет h{x).

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

В-третьих, для криптографических приложений иногда требуется так называемое свойство доступности коллизий (collision accessibility). Оно требует существования эффективного алгоритма, который по данным х1 и х2 выбирает h  H такую, что

h(х1) = h(х2), равновероятным образом среди всех функций из Н, удовлетворяющих этому свойству.


  1. Пусть F = GF(2k) и chop: {0,1}k  {0,1}k-1 - функция, которая просто отбрасывает последний бит. Тогда семейство хэш-функций {chop(ax+b)} является 2-универсальным и удовлетворяет свойству доступности коллизий.

  2. Пусть А = {0,1}n и В {0,1}m. Для х  {0,1}n и у  {0,1}n+m-1 определим конволюцию у о х элементов у и х как вектор длины m, i-я координата которого

определяется по формуле


Тогда семейство H = { (a о х)  b | a  {0,1}n+m-1 , b  {0,1}m} представляет собой универсальное семейство хэш-функций.

Семейства односторонних хэш-функций.


Пусть {n1i} и { n0i} - две возрастающие последовательности натуральных чисел такие) что для всех i n1i  n0i и существует такой полином q, что q(n0i,)  n1.

(такие последовательности полиномиально связаны).

Пусть Нk - коллекция функций такая, что для всех h  Hk


и пусть .


Предположим, что А - вероятностный алгоритм, работающий за поли-номиальное время, который на входе k выдает строку x  {0,1}n1k, называемую исходным значением, и затем для данной случайной h  Hk пытается найти у  {0,1}n1k такое, что h{x) = h{y), но х  у.


Определение 2. Семейство U называется универсальным семейством односторонних хэш-функций, если для всех полиномов р, для всех полиномиальных вероятностных алгоритмов А и всех достаточно больших k выполняются следующие условия:


  1. x  {0,1}n1k - исходное значение для А, то

Рг[А(h,x) = у, h{x) - h(y), у  х] < 1/p(n1k),

где вероятность берется по всем h из Hk и по всем случайным выборам алгоритма А.

2. Для любой h  Hk существует описание h. полиномиальной (от n1k) длины такое, что по этому описанию и по х значение h(x) вычислимо за полиномиальное время.


3. Коллекция Hk доступна, т. е. существует алгоритм G, который на входе k равномерно по вероятности генерирует описание функции h  Hk .

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

В данном определении А - это машина Тьюринга (однородная модель). Определение универсального семейства односторонних хэш-функций, а котором А - полиномиальная схема (неоднородная модель) формулируется аналогично, но в п. 1 вероятность берется только по выбору h из Hk.

Также заметим, что это семейство называется семейством хэш-функций с трудно обнаружимыми коллизиями.


Алгоритмы построения хэш-функций.


N –хэш.

Алгоритм разработан Nippon Telephone & Telegraph. N- хэш использует блоки длинной 128 бит, размешивающую функцию. На вход пошаговой хэш-функции в качестве аргумента поступают очередной блок сообщения Mi длинной 128 бит и хэш-код hi-1 предыдущего шага.

h0 = I, где I – синхропосылка.

hi = g(Mi,hi-1)  Mi  hi-1.

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

Функция g вначале меняет местами старшие и младшие части (по 64 бита каждая) хэш-кода предыдущего шага, покоординатно складывая полученное значение с величиной 1010…..1010 и текущим блоком текста Mi. Полученная величина поступает на вход каскада из N (n = 8) преобразующих функций. Вторым аргументом каждой из преобразующих функций является хэш-код предыдущего шага, сложенный покоординатно с одной из восьми констант.

На рисунке 1 использованы следующие условные обозначения:

EXG –старшая и младшая части входного блока меняются местами;

V =1010…1010 (128 бит) в двоичной записи.

Vj = ||Aj1||||Aj2||||Aj3||||Aj4; здесь || обозначает конкатенацию бинарных строк;

 = 00…00 в двоичной записи;

Ajk = 4 * (j-1) + k (k = 1,2,3,4: Ajk длинной 8 бит);

PS – преобразующая функция.

На рисунке 2 представлена схема преобразующей функции. Каждый из аргументов при этом разбивается на 4 блока:X1||X2||X3||X4, P= P1||P2||P3||P4, схема вычисления функции f представлена на рисунке 3.

S0(a,b) = (левый циклический сдвиг на 2 бита) ((a+b)mod256):

S1(a,b) = (левый циклический сдвиг на 2 бита) ((a+b+1)mod256):

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

Процесс, показанный на рис.1, завершается покоординатным суммированием по модулю 2 результата действия последней преобразующей функции PS, хэш-кода предыдущего шага и блока хэшируемого текста.




MD5.

В этом алгоритме размер хэш-кода равен 128 битам.

После ряда начальных действий MD5 разбивает текст на блоки длинной 512 битов, которые, в свою очередь делятся на 16 подблоков по 32 бита. Выходом алгоритма являются 4 блока по 32 бита, конкатенация которых образует 128-битовый хэш-код.

Сначала текст дополняется таким образом, чтобы длина получаемого текста, выраженная в битах, стала на 64 меньше числа, кратного 512.

Дополнение осуществляется приписыванием к концу сообщения единицы и затем необходимого числа нулей (в бинарном представлении). Затем к тексту приписывается 64-битовое представление длины исходного сообщения. Таким образом, получается текст, длина которого кратна 512 битам. Инициализируются 4 переменных размером по 32 бита;

А = 01 23 45 67;

В = 89 AB CD EF;

С = FE DC BA 98;

D = 76 54 32 10.

Далее начинает работу основной цикл алгоритма. Основной цикл повторяется столько раз, сколько блоков по 512 битов присутствует в хэшируемом сообщении.

Создаются копии инициализированных переменных: АА для А, ВВ для В, СС для С, DD для D.

Каждый основной цикл состоит из 4 раундов. В свою очередь, каждый раунд состоит из 16 операторов. Все операторы однотипны и имеют вид:

u = v + ((F(v, w, z) + Mj + tj) << Sj).

Здесь: u, v, w и z суть А, В, С и. D в зависимости от номера раунда и номера оператора в раунде.

Mj обозначает j-тый подблок обрабатываемого блока. В каждом раунде порядок обработки очередным оператором подблоков определяется задаваемой в явном виде подстановкой на множестве всех подблоков (их, также как и операторов, 16).

ti обозначают зафиксированные случайные константы, зависящие от номера раунда и номера оператора в раунде.

<i, обозначает левый циклический сдвиг аргумента на si, битов. Величины сдвигов также зависят от номера раунда и номера оператора в раунде.

F(v,w,z) - некоторая функция (фиксированная для каждого раунда), действующая покоординатно на биты своих трех аргументов..

В первом, раунде действует функция F{X,Y,Z) = XY \/ (not X)Z.

Во втором раунде действует функция G(X,Y,Z) = XZ \/ (not Z)Y.

В третьем раунде действует функция Н{Х,Y,Z) = ХY Z.

В четвертом раунде действует функция I(Х,Y,Z) = Y(X \/ (not Z)).

Функции подобраны таким образом, чтобы при равномерном и независимом распределении битов аргументов выходные биты были бы также распределены равномерно и независимо.

Основной цикл алгоритма завершается суммированием полученных А, В, С и D и накапливаемых АА, ВВ, СС и DD, после чего алгоритм переходит к обработке нового блока данных. Выходом алгоритма является конкатенация получаемых после последнего цикла А, В, С и D.


Схемы хэширования, использующие алгоритмы блочного шифрования.

Идея использовать алгоритм блочного шифрования [Schnr], для построения надежных схем хэширования выглядит естественной. Напрашивается мысль использовать алгоритм блочного шифрования в режиме "с зацеплением" при нулевой синхропосылке.

При этом считать хэш-кодом последний шифрблок. Очевидно, что на роль DES-алгоритма здесь годится произвольный блочный шифр.

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

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

1) Hi = EMi(Hi-1)  H i-1 (схема Дэвиса — Мейера);


2) Hi = Енi-1i)  H i-1  Mi (схема Миягучи);


3) Hi = Енi-1i) Мi, (схема Матиаса, Мейера, Осиаса);


4) Hi = Енi-1(H i-1  Mi)  H i-1  Mi;


5) Hi = Енi-1(H i-1  Mi)  Mi;


6) Hi = ЕMi(Mi  H i-1)  Mi H i-1;


7) Hi = ЕMi (H i-1)  Mi H i-1;


8) Hi = ЕMi (Mi  H i-1)  H i-1;


9) Hi = Енi-1 Mi(Mi)  Hi-1;


10) Hi = Енi-1 Mi(Hi-1)  Hi-1;


11) Hi = Енi-1 Mi(Mi)  Mi;


12) Hi = Енi-1 Mi(Hi-1)  Mi;


где Ek(M) обозначает результат применения алгоритма блочного шифрования с ключом k к блоку М.

Во всех подобных схемах полагают Н0 = Iн, где Iн начальное значение. Для алгоритмов блочного шифрования с размером ключа в два раза большим чем размер шифруемого блока (например, IDEA) в 1992 году была предложена модифицированная схема Дэвиса—Мейера:

Н0 = , где начальное значение;

Нi = Енi-1,Mi(Hi-1).

Стойкость подобных схем зависит от криптографических и иных свойств алгоритмов блочного шифрования, лежащих в их основе. В частности, даже если алгоритм шифрования является стойким, некоторые из предложенных схем обладают коллизиями [MOI]. К подобным эффектам могут приводить такие свойства алгоритма шифрования как комплиментарность

(шифрование инвертированного открытого текста на инвертированном ключе приводит к инвертированному шифртексту), наличие слабых и полуслабых ключей и т. п.

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

Чаще всего размер блока недостаточен для того, чтобы схема была стойкой против атаки на базе "парадокса дня рождения". Поэтому были предприняты попытки построения хэш-алгоритмов на базе блочного шифра с размером хэш-кода в k раз (как правило, k = 2) большим, чем размер блока алгоритма шифрования:

Схема Приниля — Босселэра — Гувертса — Вандервалле [PrBGV]

где Li, Ri, левая и правая половины очередного блока хэшируемого текста. Хэш-кодом является конкатенация последних значений Gi, Hi.







































Глава 4. Модернизация электронной подписи Эль Гамаля. Задача дискретного логарифмирования.


Модернизация электронной подписи Эль Гамаля.


Также, как и в обычной схеме, секретный ключ x R Z*p-1 и открытый ключ y = g-x mod p. Пространством сообщений в данной схеме является Zp-1 .

Подписывающие выбирают случайные u1,…un , так, чтобы они были взаимно простые (т.е gcd (un,p-1) = 1).

Тогда


Подписью в этом случае является набор (r1,…,rn,s) .

Для проверки подписи (r1,…,rn,s) для сообщения m необходимо сначала проверить условия r1,…,rn  Z*p и s  Zp-1 . Если хотя бы одно из них ложно, то подпись отвергается. В противном случае подпись принимается и только тогда, когда .

Идея метода состоит в том, что можно подписывать коллективом из n человек, что значительно усложнит задачу раскрытия этой подписи т.к. нам неизвестны все u1,…un .






Задача дискретного логарифмирования.


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

Постановка задачи.

Пусть G – некоторая мультипликативно записываемая группа, а a и b – некоторые элементы этой группы, связанные равенством b = an при некотором целом n. Любое целое x, удовлетворяющее уравнению b = ax, называется дискретным логарифмом элемента b по основанию a. Задача дискретного логарифмирования в группе G состоит в отыскании по данным a и b вышеуказанного вида некоторого дискретного логарифма b по основанию a. Если a имеет бесконечный порядок, то дискретный логарифм любого элемента по основанию a определен однозначно. В противном случае все дискретные логарифмы b по основаниям a можно получить из некоторого такого дискретного логарифма x0 по формуле x = x0 + km, где km – порядок элемента a, а параметр k пробегает Z.

Для криптографических приложений наиболее важна задача дискретного логарифмирования в мультипликативных группах конечных полей GF(q) и колец Zn Как известно, группа GF(q)* циклическая и имеет порядок q –1, поэтому если в качестве a берется некоторый порождающий этой группы, то дискретный логарифм любого элемента GF(q)* по основанию a существует и определен однозначно. Если логарифмировать по фиксированному основанию, которое является порождающим g группы GF(q)*, то можно находить дискретные логарифмы по произвольному основанию. Действительно, чтобы найти дискретный логарифм x элемента b по основанию a, достаточно вычислить дискретные логарифмы y и z элементов a и b по основанию a и решить уравнение xy = z(mod q – 1) относительно z. Для краткости обозначим дискретный логарифм y произвольного элемента gGF(q)* по основанию a, удовлетворяющий неравенству 0 < y < q – 2, через log. Очевидно, что log – взаимно однозначное отображение GF(q)* на Zq-1, удовлетворяющее обычному свойству логарифма: log gh = (log g + log h) mod (q-1) для произвольных g,h GF(q)*.


Алгоритм Гельфонда.

В настоящее время не известно полиномиальных алгоритмов дискретного логарифмирования в произвольной группе GF(q)*. Изложенный ниже алгоритм применим к произвольной группе GF(q)* и имеет сложность O(q0,5+)

  1. Положить

  2. Вычислить c = aH .

  3. Построить наборы (cu|u{0,1,…,H}) и (bav|u{0,1,…,H}) элементов GF(q)*.

  4. Найти некоторый элемент, входящий в оба набора. Если cu = bav – такой элемент, то это значит, что и log b = (Hu –v) mod (q – 1) – искомый дискретный логарифм b по основанию a.

Отметим, что любой элемент x{0,1,…,q-2} представим в виде x = Hu-v при некоторых u,v{0,1,…,H}.Поэтому элемент входящий в оба набора из этапа 3 алгоритма, существуют.
















За­клю­че­ние


Выбор для кон­крет­ных ИС дол­жен быть ос­но­ван на глу­бо­ком ана­ли­зе сла­бых

и силь­ных сто­рон тех или иных ме­то­дов за­щи­ты. Обос­но­ван­ный вы­бор той

или иной сис­те­мы защиты, в общем-то, дол­жен опи­рать­ся на ка­кие-то кри­те­рии

эф­фек­тив­но­сти. К со­жа­ле­нию, до сих пор не раз­ра­бо­та­ны под­хо­дя­щие ме­то­ди­ки оцен­ки эф­фек­тив­но­сти крип­то­гра­фи­че­ских сис­тем.

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

Од­на­ко этот кри­те­рий не учи­ты­ва­ет других важных требований к криптосистемам:

  1. невоз­мож­ность рас­кры­тия или ос­мыс­лен­ной мо­ди­фи­ка­ции ин­фор­ма­ции на осно­ве ана­ли­за ее струк­ту­ры,

  2. со­вер­шен­ст­во ис­поль­зуе­мых про­то­ко­лов за­щи­ты,

  3. минимальный объ­ем ис­поль­зуе­мой клю­че­вой ин­фор­ма­ции,

  4. минимальная слож­ность реа­ли­за­ции (в ко­ли­че­ст­ве ма­шин­ных опе­ра­ций), ее стои­мость,

  5. высокая опе­ра­тив­ность.

Же­ла­тель­но ко­неч­но ис­поль­зо­ва­ние не­ко­то­рых ин­те­граль­ных по­ка­за­те­лей, учиты­ваю­щих ука­зан­ные фак­то­ры.

Час­то бо­лее эф­фек­тив­ным при вы­бо­ре и оцен­ке крип­то­гра­фи­че­ской сис­те­мы яв­ля­ет­ся ис­поль­зо­ва­ние экс­перт­ных оце­нок и ими­та­ци­он­ное мо­де­ли­ро­ва­ние.

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


Автор выражает благодарность своему научному руководителю Блинкову Юрию Анатольевичу за неоценимую помощь в написании данной работы.

Литература:

  1. Diffie W., Hellman M. E. New directions in cryptography. IEEE transactions on Information Theory IT-22. 1976. 644-654 p.

  2. Buchberger B. Groebner Bases: on Algorithmic Method in Polynomial Ideal Theory. In: Recent Trends in Multidimensional System Theory, Bose, N.K. (ed.), Reidel, Dordrecht. 1985. 184-232 p.

  3. Rivest R. L., Shamir A., Adleman L., method for obtaining digital signatures and public-key cryptosystems, Commun. ACM, v. 21, №2, 1978, 120-126

  4. Rivest R. L., The MD5 messege digest algorythm, RFC 1321, April, 1992

  5. Блинков Ю. А., Мыльцин В. Л. Использование базисов полиномиальных идеалов при построении односторонних функций. В кн.: Современные проблемы теории функций и их приложения.– Саратов: Изд-во Сарат. ун-та, 1997.