Тип подписания хеш что это
Перейти к содержимому

Тип подписания хеш что это

  • автор:

Алгоритмы хэша и подписи

Следующие алгоритмы вычисляют хэши и цифровые подписи. Каждый из этих алгоритмов поддерживается поставщиками microsoft Base, Strong и Enhanced Cryptographic Providers. Внутренние сведения об этих алгоритмах выходят за рамки область этой документации. Список дополнительных источников см. в статье Дополнительная документация по шифрованию.

Алгоритмы Описание
Mac-адрес цепочки блоков шифров (CBC) Одним из алгоритмов (CALG_MAC), реализованных поставщиками Майкрософт, является код проверки подлинности сообщенийблочного шифра (MAC). Этот метод шифрует базовые данные с помощью блочного шифра, а затем использует последний зашифрованный блок в качестве хэш-значения . Алгоритм шифрования, используемый для сборки MAC, указан при создании ключа сеанса.
Код проверки подлинности сообщений с помощью хэш-функций Алгоритм (CALG_HMAC), реализованный поставщиками Майкрософт. Этот алгоритм также использует симметричный ключ для создания хэша, но он является более сложным, чем простой алгоритм MAC-цепочки блоков шифров (CBC). Его можно использовать с любым итерированным алгоритмом криптографического хэширования, например MD5 или SHA-1. Дополнительные сведения см. в разделе Создание HMAC.
MD2, MD4 и MD5 Все эти алгоритмы хэширования были разработаны компанией RSA Data Security, Inc. Эти алгоритмы были разработаны в последовательном порядке. Все они создают 128-разрядные хэш-значения. Известно, что все они имеют слабые места и должны использоваться только в тех случаях, когда это необходимо для обеспечения совместимости. Для нового кода рекомендуется использовать семейство хэшей SHA-2.
Эти алгоритмы хорошо известны и могут быть подробно рассмотрены в любом справочнике по шифрованию.
Код проверки подлинности сообщения (MAC) Алгоритмы MAC похожи на хэш-алгоритмы , но вычисляются с помощью симметричного ключа (сеанса). Для повторного вычисление хэш-значения требуется исходный ключ сеанса . Повторно вычисляемое хэш-значение используется для проверки того, что базовые данные не были изменены. Эти алгоритмы иногда называют хэш-алгоритмами с ключами. Сведения о том, какие поставщики Майкрософт поддерживают MAC, см. в статье Поставщики служб шифрования Майкрософт.
Безопасный хэш-алгоритм (SHA-1) Этот алгоритм хэширования был разработан Национальным институтом стандартов и технологий (NIST) и Агентством национальной безопасности (АНБ). Этот алгоритм был разработан для использования с DSA (алгоритм цифровой подписи) или DSS (стандарт цифровой подписи). Этот алгоритм создает 160-битовое хэш-значение . Известно, что SHA-1 имеет слабые места и должен использоваться только в тех случаях, когда это необходимо для обеспечения совместимости. Для нового кода рекомендуется использовать семейство хэшей SHA-2.
Алгоритм безопасного хэша — 2 (SHA-2) Этот алгоритм хэширования был разработан в качестве преемника SHA-1 Национальным институтом стандартов и технологий (NIST) и Агентством национальной безопасности (АНБ). Он имеет четыре варианта — SHA-224, SHA-256, SHA-384 и SHA-512, которые называются в соответствии с количеством битов в выходных данных. Из них SHA-256, SHA-384 и SHA-512 реализованы в поставщике шифрования Microsoft AES.
Алгоритм авторизации клиента SSL3 Этот алгоритм используется для проверки подлинности клиента SSL3. В протоколе SSL3 объединение хэша MD5 и хэша SHA подписывается закрытым ключом RSA. CryptoAPI 2.0 и базовые и расширенные поставщики шифрования Майкрософт поддерживают это с типом хэша CALG_SSL3_SHAMD5. Дополнительные сведения см. в разделе Создание хэша CALG_SSL3_SHAMD5.

Обратная связь

Были ли сведения на этой странице полезными?

Применение хеш-функции в создании электронной цифровой подписи

Высокая практическая значимость Высокая теоретическая значимость Актуальная тема исследования

Трубникова, Е. А. Применение хеш-функции в создании электронной цифровой подписи / Е. А. Трубникова, В. П. Батунина. — Текст : непосредственный // Юный ученый. — 2020. — № 7 (37). — С. 19-22. — URL: https://moluch.ru/young/archive/37/2117/ (дата обращения: 22.02.2024).

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

Целью аутентификации электронных документов является их защита от возможных видов вредоносных действий:

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

направляет документ абоненту

от имени абонента

утверждает, что не направлял документ абоненту

, хотя в действительности посылал;

– подмена — абонент

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

повторяет от своего имени ранее переданный документ, который абонент

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

шифрует документ своим секретным ключом и отправляет получателю

дешифрует документ с помощью открытого ключа отправителя

. Если это ему удается, то документ считается истинным. Если получатель

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

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

– показывает, что подписанный документ получен от лица, поставившего свою подпись;

– не дает возможности лицу, поставившему свою подпись, отказаться от подписанного документа;

– является неотъемлемой частью данного документа и не может быть использована для подписания другого документа;

– гарантирует целостность подписанного документа.

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

1) для документа

, который должен быть подписан, отправитель

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

шифрует своим личным секретным ключом и получает число, которое считается подписью документа;

3) зашифрованное хэш-значение вместе с документом

сначала сам вычисляет хэш-значение

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

, после чего сравнивает оба значения.

Если два полученных хэш-значения совпадают, то подпись отправителя

считается верной, а сам документ

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

Среди большого количества различных асимметричных криптосистем самой популярной является криптосистема RSA, разработанная в 1977 г. и получившая свое название в честь Рона Ривеста (Rivest), Ади Шамира (Shamir) и Леонарда Эйдельмана (Adleman). Алгоритм RSA используется в банковских компьютерных сетях, особенно для работы с удаленными клиентами (Обслуживание кредитных карточек). Надежность алгоритма основывается на трудности факторизации (разложения на множители) больших чисел и трудности вычисления дискретных алгоритмов (нахождения

Алгоритм RSA состоит из трех частей: генерации ключей, шифрования и дешифрования. Генерируют

— открытый ключ и

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

, которая используется в протоколе ЭЦП, предназначена для того, чтобы сжать подписываемый документ

произвольной длины к двоичному хэш-значению

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

Основные свойства хэш-функции:

зависит от всего документа

чрезвычайно сложным способом, благодаря чему по значению

невозможно восстановить документ

чувствительно к любым, даже незначительным, изменениям в документе

(вставки, удаления, перестановки и т. п.);

является необратимой, то есть подбор некоторого фиктивного документа

‘ с тем же самым хеш-значением

является задачей практически нерешаемой;

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

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

и работают по следующему принципу: они образуют одно хэш-значение длиной

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

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

Содержание указанных входных значений хэш-функции следующее:

1) первое входное значение представляет собой очередной блок документа

2) второе входное значение представляет собой хэш-значение

всех предыдущих блоков документа.

При исчислении хэш-значение для первого блока

документа используется некоторое начальное хэш-значение

, которое можно выбрать случайным или фиксированным (например,

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

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

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

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

Возьмем два простых числа

выбираем случайным образом, пусть оно равно 12. Слово «ТРУБНИКОВА» представим в виде последовательности чисел (20, 18, 21, 2, 15, 10, 12, 16, 3, 1) по номерам букв в русском алфавите. Тогда имеем

, получим хеш-образ сообщения «ТРУБНИКОВА»:

В итоге получаем хеш-образ сообщения «ТРУБНИКОВА», равный 9, который будем использовать для вычисления электронной цифровой подписи по схеме RSA.

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

, тогда функция Эйлера

выбираем из условий

взаимно просто с

не имеют общих делителей.

выбираем из условий

Последнее условие означает, что число

должно делиться на 352 без остатка.

Таким образом, для определения

нужно подобрать такое число

Таким образом мы сгенерировали

— открытый ключ и

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

Для проверки ЭЦП используем открытый ключ

Как видим, хеш-образ сообщения совпадает с найденным значением H, следовательно, подпись признается подлинной.

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

и алгоритма шифрования RSA. Все вычисления были выполнены в электронных таблицах Excel, в частности, с использованием формулы =ОСТАТ(

  1. Айерлэнд К. Классическое введение в современную теорию чисел / К. Айерлэнд, М. Роузен. — Пер. с англ. — М.: Мир, 1987. — 416 с.
  2. Алферов А. П. Основы криптографии / А. П. Алферов, А. Ю. Зубов, А. С. Кузьмин, А. В. Черемушкин. М.: Гелиос АРВ, 2002. — 480 с.

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

Похожие статьи

Исследование криптосистем с открытым ключом на основе.

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

RSA — криптографический алгоритм с открытым ключом

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

Создание ключей, шифрование и дешифрование сообщений.

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

Статья посвящена реализации алгоритма шифрования на открытом ключе RSA. LabVIEW (англ. RSA (аббревиатура от фамилий Rivest.

Пост-квантовый алгоритм электронноцифровой подписи на.

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

Алгоритмы шифрования данных | Статья в журнале.

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

Реализация алгоритма шифрования RSA на языке.

Статья посвящена реализации алгоритма шифрования на открытом ключе RSA. LabVIEW (англ. Laboratory Virtual Instrumentation Engineering Workbench) — это среда разработки и платформа для выполнения программ.

Анализ алгоритма RSA. Некоторые распространённые.

Атака на подпись RSA в схеме с нотариусом. Пусть — открытый ключ нотариуса.

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

Основные термины (генерируются автоматически): открытым ключом, шифрования rsa.

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

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

Шифрование и криптоанализ | Статья в журнале «Молодой. »

Основные термины (генерируются автоматически): открытым ключом, шифрования rsa, секретной экспоненты, секретную экспоненту, открытый ключ

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

Теория чисел в криптографии | Статья в журнале.

RSA, число, простое число, тест, выбор показателей, случайный сеансовый ключ, случайный образ, секретный показатель, простой перебор

Статья посвящена реализации алгоритма шифрования на открытом ключе RSA. Некоторые аспекты криптографического взлома и.

  • Как издать спецвыпуск?
  • Правила оформления статей
  • Оплата и скидки

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

1. Проблема аутентификации данных и электронная цифровая подпись

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

  • активный перехват — нарушитель, подключившийся к сети, перехватывает документы (файлы) и изменяет их;
  • маскарад — абонент С посылает документ абоненту В от имени абонента А;
  • ренегатство — абонент А заявляет, что не посылал сообщения абоненту В, хотя на самом деле послал;
  • подмена — абонент В изменяет или формирует новый документ и заявляет, что получил его от абонента А;
  • повтор — абонент С повторяет ранее переданный документ, который абонент А посылал абоненту В.

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

При обработке документов в электронной форме совершенно непригодны традиционные способы установления подлинности по рукописной подписи и оттиску печати на бумажном документе. Принципиально новым решением является электронная цифровая подпись (ЭЦП).

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

Цифровая подпись представляет собой относительно небольшое количество дополнительной цифровой информации, передаваемой вместе с подписываемым текстом.

Система ЭЦП включает две процедуры: 1) процедуру постановки подписи; 2) процедуру проверки подписи. В процедуре постановки подписи используется секретный ключ отправителя сообщения, в процедуре проверки подписи — открытый ключ отправителя.

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

При проверке ЭЦП получатель сообщения снова вычисляет хэш-функцию m = h(М) принятого по каналу текста М, после чего при помощи открытого ключа отправителя проверяет, соответствует ли полученная подпись вычисленному значению m хэш-функции.

Принципиальным моментом в системе ЭЦП является невозможность подделки ЭЦП пользователя без знания его секретного ключа подписывания.

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

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

2. Однонаправленные хэш-функции

Хэш-функция (англ. hash — мелко измельчать и перемешивать) предназначена для сжатия подписываемого документа до нескольких десятков или сотен бит. Хэш-функция h(·) принимает в качестве аргумента сообщение (документ) М произвольной длины и возвращает хэш-значение h(М)=Н фиксированной длины. Обычно хэшированная информация является сжатым двоичным представлением основного сообщения произвольной длины. Следует отметить, что значение хэш-функции h(М) сложным образом зависит от документа М и не позволяет восстановить сам документ М.

  1. хэш-функция должна быть чувствительна к всевозможным изменениям в тексте М, таким как вставки, выбросы, перестановки и т.п.;
  2. хэш-функция должна обладать свойством необратимости, то есть задача подбора документа М', который обладал бы требуемым значением хэш-функции, должна быть вычислительно неразрешима;
  3. вероятность того, что значения хэш-функций двух различных документов (вне зависимости от их длин) совпадут, должна быть ничтожно мала.

Большинство хэш-функций строится на основе однонаправленной функции f(·), которая образует выходное значение длиной n при задании двух входных значений длиной n. Этими входами являются блок исходного текста М, и хэш-значение Н i-1 предыдущего блока текста (рис.1).

Рис.1. Построение однонаправленной хэш-функции

Нi = f(Мi, Нi-1) .

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

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

Основы построения хэш-функций

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

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

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

При проектировании хэш-функции по итеративной схеме возникают два взаимосвязанных вопроса: как поступать с данными, не кратными числу (k-n), и как добавлять в хэш-сумму длину документа, если это требуется. Есть два варианта решения этих вопросов. В первом варианте в начало документа перед хэшированием добавляется поле фиксированной длины (например, 32 бита), в котором в двоичном виде записывается исходная длина текста. Затем объединенный блок данных дополняется нулями до ближайшего кратного (k-n) бит размера. Во втором варианте документ дополняется справа одним битом «1», а затем до кратного (k-n) бит размера битами «0». В этом варианте необходимость в поле длины отпадает — никакие два разных документа после выравнивания по границе порций не станут одинаковыми.

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

Рис.2. Итерактивная хэш-функция

Однонаправленные хэш-функции на основе симметричных блочных алгоритмов

Однонаправленную хэш-функцию можно построить, используя симметричный блочный алгоритм. Наиболее очевидный подход состоит в том, чтобы шифровать сообщение М посредством блочного алгоритма в режиме СВС или СFВ с помощью фиксированного ключа и некоторого вектора инициализации IV. Последний блок шифртекста можно рассматривать в качестве хэш-значения сообщения М. При таком подходе не всегда возможно построить безопасную однонаправленную хэш-функцию, но всегда можно получить код аутентификации сообщения МАС (Message Authentication Code).

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

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

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

Н0 = Iн, Нi = ЕA(В) Å С,

где Å — сложение по модулю 2 (исключающее ИЛИ); I н — некоторое случайное начальное значение; А, В, С могут принимать значения М i , Н i-1 , (М i Å Н i-1 ) или быть константами.

Рис.3. Обобщенная схема формирования хэш-функции

Сообщение М разбивается на блоки М i принятой длины, которые обрабатываются поочередно.

Три различные переменные А, В, С могут принимать одно из четырех возможных значений, поэтому в принципе можно получить 64 варианта общей схемы этого типа. Из них 52 варианта являются либо тривиально слабыми, либо небезопасными. Остальные 12 схем безопасного хэширования, у которых длина хэш-значения равна длине блока перечислены в табл.1.

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

Рис.4. Четыре схемы безопасного хэширования

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

Алгоритм MD5

Алгоритм MD5 (Message Digest №5) разработан Роналдом Риверсом. MD5 использует 4 многократно повторяющиеся преобразования над тремя 32-битными величинами U, V и W:

f(U,V,W)=(U AND V) OR ((NOT U) AND W) g(U,V,W)=(U AND W) OR (V AND (NOT W)) h(U,V,W)=U XOR V XOR W k(U,V,W)=V XOR (U OR (NOT W)).


    начальные константы промежуточных величин —

H[0]=6745230116, H[1]=EFCDAB8916, H[2]=98BADCFE16, H[3]=1032547616;
y[j]=HIGHEST_32_BITS(ABS(SIN(j+1))) j=0. 63,

где функция HIGHEST_32_BITS(X) отделяет 32 самых старших бита из двоичной записи дробного числа X , а операнд SIN(j+1) считается взятым в радианах;

z[0. 63] = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 6, 11, 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 5, 8, 11, 4, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2, 0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9);
s[0. 63] = (7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21).

На первоначальном этапе входной блок данных дополняется одним битом «1». Затем к нему добавляется такое количество битов «0», чтобы остаток от деления блока на 512 составлял 448. Наконец, к блоку добавляется 64-битная величина, хранящая первоначальную длину документа. Получившийся входной поток имеет длину кратную 512 битам.

Каждый 512-битный блок, представленный в виде 16 32-битных значений X[0]. X[15] , проходит через сжимающую функцию, которая перемешивает его со вспомогательным блоком (H[0],H[1],H[2],H[3]) :

(A,B,C,D) = (H[0],H[1],H[2],H[3]) цикл по j от 0 до 15 T = (A + f(B,C,D) + x[z[j]] + y[j]) ROL s[j] (A,B,C,D) = (D,B+T,B,C) конец_цикла цикл по j от 16 до 31 T = (A + g(B,C,D) + x[z[j]] + y[j]) ROL s[j] (A,B,C,D) = (D,B+T,B,C) конец_цикла цикл по j от 32 до 47 T = (A + h(B,C,D) + x[z[j]] + y[j]) ROL s[j] (A,B,C,D) = (D,B+T,B,C) конец_цикла цикл по j от 48 до 63 T = (A + k(B,C,D) + x[z[j]] + y[j]) ROL s[j] (A,B,C,D) = (D,B+T,B,C) конец_цикла (H[0],H[1],H[2],H[3]) = (H[0]+A,H[1]+B,H[2]+C,H[3]+D)

После того, как все 512-битные блоки прошли через процедуру перемешивания, временные переменные H[0],H[1],H[2],H[3] , а 128-битное значение подается на выход хэш-функции.

Алгоритм MD5, основанный на предыдущей разработке Роналда Риверса MD4, был призван дать еще больший запас прочности к криптоатакам. MD5 очень похож на MD4. Отличие состоит в простейших изменениях в алгоритмах наложения и в том, что в MD4 48 проходов основного преобразования, а в MD5 — 64. Несмотря на большую популярность, MD4 «медленно, но верно» был взломан. Сначала появились публикации об атаках на упрощенный алгоритм. Затем было заявлено о возможности найти два входных блока сжимающей функции MD4, которые порождают одинаковый выход. Наконец, в 1995 году было показано, что найти коллизию, т.е. «хэш-двойник» к произвольному документу, можно менее чем за минуту, а добиться «осмысленности» фальшивого документа (т.е. наличия в нем только ASCII-символов с определенными «разумными» законами расположения) — всего лишь за несколько дней.

Алгоритм безопасного хэширования SНА

Алгоритм безопасного хэширования SНА (Secure Hash Algorithm) разработан НИСТ и АНБ США в рамках стандарта безопасного хэширования SHS (Secure Hash Standard) в 1992 г. Алгоритм хэширования SНА предназначен для использования совместно с алгоритмом цифровой подписи DSА.

При вводе сообщения М произвольной длины менее 2 64 бит алгоритм SНА вырабатывает 160-битовое выходное сообщение, называемое дайджестом сообщения МD (Message Digest). Затем этот дайджест сообщения используется в качестве входа алгоритма DSА, который вычисляет цифровую подпись сообщения М. Формирование цифровой подписи для дайджеста сообщения, а не для самого сообщения повышает эффективность процесса подписания, поскольку дайджест сообщения обычно намного короче самого сообщения.

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

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

Рассмотрим подробнее работу алгоритма хэширования SНА. Прежде всего исходное сообщение М дополняют так, чтобы оно стало кратным 512 битам. Дополнительная набивка сообщения выполняется следующим образом: сначала добавляется единица, затем следуют столько нулей, сколько необходимо для получения сообщения, которое на 64 бита короче, чем кратное 512, и наконец добавляют 64-битовое представление длины исходного сообщения.

Инициализируется пять 32-битовых переменных в виде:

А = 0х67452301 В = 0хЕFСDАВ89 С = 0х98ВАDСFЕ D = 0x10325476 Е = 0хС3D2Е1F0

Затем начинается главный цикл алгоритма. В нем обрабатывается по 512 бит сообщения поочередно для всех 512-битовых блоков, имеющихся в сообщении. Первые пять переменных А, В, С, D, Е копируются в другие переменные a, b, с, d, е :

а = А, b = В, с = С, d = D, е = Е

Главный цикл содержит четыре цикла по 20 операций каждый. Каждая операция реализует нелинейную функцию от трех из пяти переменных а, b, с, d, е , а затем производит сдвиг и сложение.

Алгоритм SНА имеет следующий набор нелинейных функций:

ft (Х, Y, Z) = (X Ù Y) Ú ((Ø X) Ù Z) для t = 0. 19, ft (Х, Y, Z) =Х Å Y Å Z для t = 20. 39, ft (Х, Y, Z) = (X Ù Y) Ú (X Ù Z) Ú (Y Ù Z) для t = 40. 59, ft (Х, Y, Z) = Х Å Y Å Z для t = 60. 79,

где t — номер операции.

В алгоритме используются также четыре константы:

Кt = 0х5А827999 для t = 0. 19, Кt = 0х6ЕD9ЕВА1 для t = 20. 39, Кt = 0х8F1ВВСDС для t = 40. 59, Кt = 0хСА62С1D6 для t = 60. 79.

Блок сообщения преобразуется из шестнадцати 32-битовых слов (М 0 . М 15 ) в восемьдесят 32-битовых слов (W 0 . W 79 ) с помощью следующего алгоритма:

Wt = Мt для t = 0. 15, Wt = (Wt-3 Å Wt-8 Å Wt-14 Å Wt-16) 


где t - номер операции, W t - t -й субблок расширенного сообщения,

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

цикл по t от 0 до 79 ТЕМР = (а t (b, c, d) + е + Wt + Кt е = d d = с с = (b 

Схема выполнения одной операции показана на рис.5.

Рис.5. Схема выполнения одной операции алгоритма SHA

После окончания главного цикла значения а, b, с, d, е складываются с А, В, С, D, Е соответственно, и алгоритм приступает к обработке следующего 512-битового блока данных. Окончательный выход формируется в виде конкатенации значений А, В, С, D, Е .

  • SНА выдает 160-битовое хэш-значение, поэтому он более устойчив к атакам полного перебора и атакам "дня рождения", чем MD5, формирующий 128-битовые хэш-значения.
  • Сжимающая функция SHA состоит из 80 шагов, а не из 64 как в MD5.
  • Расширение входных данных производится не простым их повторение в другом порядке, а рекуррентной формулой.
  • Усложнен процесс перемешивания

Отечественный стандарт хэш-функции

Российский стандарт ГОСТ Р 34.11-94 определяет алгоритм и процедуру вычисления хэш-функции для любых последовательностей двоичных символов, применяемых в криптографических методах обработки и защиты информации. Этот стандарт базируется на блочном алгоритме шифрования ГОСТ 28147-89, хотя в принципе можно было бы использовать и другои блочный алгоритм шифрования с 64-битовым блоком и 256-битовым ключом.

Данная хэш-функция формирует 256-битовое хэш-значение.

  1. Генерируются 4 ключа шифрования К j , j = 1. 4, путем линейного смешивания М i , Н i-1 и некоторых констант С j .
  2. Каждый ключ К j используют для шифрования 64-битовых подслов h j слова Н i-1 в режиме простой замены:
    S i = E Kj (h j ) . Результирующая последовательность S 4 , S 3 , S 2 , S 1 длиной 256 бит запоминается во временной переменной S.
  3. Значение Н i является сложной, хотя и линейной функцией смешивания S, М i , Н i-1 .

При вычислении окончательного хэш-значения сообщения М учитываются значения трех связанных между собой переменных:


Н n - хэш-значение последнего блока сообщения;
Z - значение контрольной суммы, получаемой при сложении по модулю 2 всех блоков сообщения;
L - длина сообщения.

Эти три переменные и дополненный последний блок М' сообщения объединяются в окончательное хэш-значение следующим образом:

Н = f (Z Å М', f ( L, f( М', Нn ) ) ).

Данная хэш-функция определена стандартом ГОСТ Р 34.11-94 для использования совместно с российским стандартом электронной цифровой подписи.

3. Алгоритмы электронной цифровой подписи

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

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

Алгоритм цифровой подписи RSА

Первой и наиболее известной во всем мире конкретной системой ЭЦП стала система RSА, математическая схема которой была разработана в 1977 г. в Массачуссетском технологическом институте США.

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

N = Р * Q

и значение функции

j (N) = (Р-1)(Q-1).

Далее отправитель вычисляет число Е из условий:

Е £ j (N), НОД (Е, j (N)) = 1

и число D из условий:

D  N, Е*D º 1 (mod j (N)).

Пара чисел (Е, N) является открытым ключом. Эту пару чисел автор передает партнерам по переписке для проверки его цифровых подписей. Число D сохраняется автором как секретный ключ для подписывания.

Обобщенная схема формирования и проверки цифровой подписи RSА показана на рис.6.

Рис.6. Обобщённая схема цифровой подписи RSA

Допустим, что отправитель хочет подписать сообщение М перед его отправкой. Сначала сообщение М (блок информации, файл, таблица) сжимают с помощью хэш-функции h(·) в целое число m:

m = h(М).

Затем вычисляют цифровую подпись S под электронным документом М, используя хэш-значение m и секретный ключ D:

S = mD (mod N).

Пара (М,S) передается партнеру-получателю как электронный документ М, подписанный цифровой подписью S, причем подпись S сформирована обладателем секретного ключа D.

После приема пары (М,S) получатель вычисляет хэш-значение сообидения М двумя разными способами. Прежде всего он восстанавливает хэш-значение m', применяя криптографическое преобразование подписи S с использованием открытого ключа Е:

m' = SE (mod N).

Кроме того, он находит результат хэширования принятого сообщения М с помощью такой же хэш-функции h(·):

m = h(М).

Если соблюдается равенство вычисленных значений, т.е.

SE ( mod N ) = h ( М ),

то получатель признает пару (М,S) подлинной. Доказано, что только обладатель секретного ключа D может сформировать цифровую подпись S по документу М, а определить секретное число D по открытому числу Е не легче, чем разложить модуль N на множители.

Кроме того, можно строго математически доказать, что результат проверки цифровой подписи S будет положительным только в том случае, если при вычислении S был использован секретный ключ D, соответствующий открытому ключу Е. Поэтому открытый ключ Е иногда называют "идентификатором" подписавшего.

  1. При вычислении модуля N, ключей Е и D для системы цифровой подписи RSА необходимо проверять большое количество дополнительных условий, что сделать практически трудно. Невыполнение любого из этих условий делает возможным фальсификацию цифровой подписи со стороны того, кто обнаружит такое невыполнение. При подписании важных документов нельзя допускать такую возможность даже теоретически.
  2. Для обеспечения криптостойкости цифровой подписи RSА по отношению к попыткам фальсификации на уровне, например, национального стандарта США на шифрование информации (алгоритм DES), т.е. 10 18 , необходимо использовать при вычислениях N, D и Е целые числа не менее 2 512 (или около 10 154 ) каждое, что требует больших вычислительных затрат, превышающих на 20. 30% вычислительные затраты других алгоритмов цифровой подписи при сохранении того же уровня криптостойкости.
  3. Цифровая подпись RSА уязвима к так называемой мультипликативной атаке. Иначе говоря, алгоритм цифровой подписи RSА позволяет злоумышленнику без знания секретного кпюча D сформировать подписи под теми документами, у которых результат хэширования можно вычислить как произведение результатов хэширования уже подписанных документов.

Пример. Допустим, что злоумышленник может сконструировать три сообщения М 1 , М 2 , М 3 , у которых хэш-значения

m1 = h (М1), m2 = h (М2), m3 = h (М3) ,
m3 = m1 * m2 (mod N) .

Допустим также, что для двух сообщений М 1 и М 2 получены законные подписи

S1 = m1D (mod N) S2 = m2D (mod N) .

Тогда злоумышленник может легко вычислить подпись S 3 для документа М 3 , даже не зная секретного ключа D:

S3 = S1 * S2 (mod N).
S1 * S2 (mod N) = m1D * m2D (mod N) = (m1m2)D (mod N) = m3D (mod N) = S3 .

Более надежный и удобный для реализации на персональных компьютерах алгоритм цифровой подписи был разработан в 1984 г. американцем арабского происхождения Тахером Эль Гамалем. В 1991 г. НИСТ США обосновал перед комиссией Конгресса США выбор алгоритма цифровой подписи Эль Гамаля в качестве основы для национального стандарта.

Алгоритм цифровой подписи Эль Гамаля (ЕGSА)

Название ЕGSА происходит от слов Е_ Gаmа_ Signaturе Аlgorithm (алгоритм цифровой подписи Эль Гамаля). Идея ЕGSА основана на том, что для обоснования практической невозможности фальсификации цифровой подписи может быть использована более сложная вычислительная задача, чем разложение на множители большого целого числа,- задача дискретного логарифмирования. Кроме того, Эль Гамалю удалось избежать явной слабости алгоритма цифровой подписи RSА, связанной с возможностью подделки цифровой подписи под некоторыми сообщениями без определения секретного ключа.

Рассмотрим подробнее алгоритм цифровой подписи Эль-Гамаля. Для того чтобы генерировать пару ключей (открытый ключ - секретный ключ), сначала выбирают некоторое большое простое целое число Р и большое целое число G, причем G < Р. Отправитель и получатель подписанного документа используют при вычислениях одинаковые большие целые числа Р (~10 308 или ~2 1024 ) и G (~10 154 или ~2 512 ), которые не являются секретными.

Отправитель выбирает случайное целое число X, 1 < Х £ (Р-1), и вычисляет

Y =GX mod Р .

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

Число Х является секретным ключом отправителя для подписывания документов и должно храниться в секрете.

Для того чтобы подписать сообщение М, сначала отправитель хэширует его с помощью хэш-функции h(·) в целое число m:

m = h(М), 1 < m < (Р-1) ,

и генерирует случайное целое число К, 1 < К < (Р-1), такое, что К и (Р-1) являются взаимно простыми. Затем отправитель вычисляет целое число а:

а = GK mod Р

и, применяя расширенный алгоритм Евклида, вычисляет с помощью секретного ключа Х целое число b из уравнения

m = Х * а + К * b (mod (Р-1)) .

Пара чисел (а,b) образует цифровую подпись S:

проставляемую под документом М.

Тройка чисел (М,а,b) передается получателю, в то время как пара чисел (Х,К) держится в секрете.

После приема подписанного сообщения (М,а,b) получатель должен проверить, соответствует ли подпись S=(а,b) сообщению М. Для этого получатель сначала вычисляет по принятому сообщению М число

m = h(М) ,

т.е. хэширует принятое сообщение М.

Затем получатель вычисляет значение

А = Ya ab (mod Р)

и признает сообщение М подлинным, только если

А = Gm (mod Р) .

Иначе говоря, получатель проверяет справедливость соотношения

Ya ab (mod Р) = Gm (mod Р) .

Можно строго математически доказать, что последнее равенство будет выполняться тогда, и только тогда, когда подпись S=(а,b) под документом М получена с помощью именно того секретного ключа X, из которого был получен открытый ключ Y. Таким образом, можно надежно удостовериться, что отправителем сообщения М был обладатель именно данного секретного ключа X, не раскрывая при этом сам ключ, и что отправитель подписал именно этот конкретный документ М.

Следует отметить, что выполнение каждой подписи по методу Эль Гамаля требует нового значения К, причем это значение должно выбираться случайным образом. Если нарушитель раскроет когда-либо значение К, повторно используемое отправителем, то он сможет раскрыть секретный ключ Х отправителя.

Пример. Выберем: числа Р = 11, G = 2 и секретный ключ Х = 8. Вычисляем значение открытого ключа:

Y = GX mod Р = 28 mod 11 = 3 .

Предположим, что исходное сообщение М характеризуется хэш-значением m = 5.

Для того чтобы вычислить цифровую подпись для сообщения М, имеющего хэш-значение m = 5, сначала выберем случайное целое число К = 9. Убедимся, что числа К и (Р-1) являются взаимно простыми. Действительно, НОД (9,10) = 1. Далее вычисляем элементы а и b подписи:

а = GK mod Р = 29 mod 11 = 6 ,

элемент b определяем, используя расширенный алгоритм Евклида:

m = Х * а + К * b (mod(Р-1)).

При m = 5, а = 6, Х = 8, К = 9, Р = 11 получаем

5 = 8 * 6 + 9 * b (mod 10)
9 * b = -43 (mod 10) .

Решение: b = 3. Цифровая подпись представляет собой пару: а = 6, b = 3. Далее отправитель передает подписанное сообщение. Приняв подписанное сообщение и открытый ключ Y = 3, получатель вычисляет хэш-значение для сообщения М : m = 5, а затем вычисляет два числа:

Yaab (mod Р) = 36 * 63 (mod 11) = 10 (mod 11); Gm (mod Р) = 25 (mod 11) = 10 (mod 11).

Так как эти два целых числа равны, принятое получателем сообщение признается подлинным.

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

  1. При заданном уровне стойкости алгоритма цифровой подписи целые числа, участвующие в вычислениях, имеют запись на 25% короче, что уменьшает сложность вычислений почти в два раза и позволяет заметно сократить объем используемой памяти.
  2. При выборе модуля Р достаточно проверить, что это число является простым и что у числа (Р-1) имеется большой простой множитель (т.е. всего два достаточно просто проверяемых условия).
  3. Процедура формирования подписи по схеме Эль Гамаля не позволяет вычислять цифровые подписи под новыми сообщениями без знания секретного ключа (как в RSА).

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

Алгоритм цифровой подписи DSА

Алгоритм цифровой подписи DSА (Digital Signature Algorithm) предложен в 1991 г. в НИСТ США для использования в стандарте цифровой подписи DSS (Digital Signature Standard). Алгоритм DSА является развитием алгоритмов цифровой подписи Эль Гамаля и К.Шнорра.

Отправитель и получатель электронного документа используют при вычислении большие целые числа: G и Р - простые числа, L бит каждое (512 £ L £ 1024); q - простое число длиной 160 бит (делитель числа (Р-1)). Числа G, Р, q являются открытыми и могут быть общими для всех пользователей сети.

Отправитель выбирает случайное целое число X, 1 < Х < q. Число Х является секретным ключом отправителя для формирования электронной цифровой подписи.

Затем отправитель вычисляет значение

Y = GX mod Р.

Число Y является открытым ключом для проверки подписи отправителя и передается всем получателям документов.

Этот алгоритм также предусматривает использование односторонней функции хэширования h(·). В стандарте DSS определен алгоритм безопасного хэширования SНА (Secure Hash Algorithm).

Для того чтобы подписать документ М, отправитель хэширует его в целое хэш-значение m:

m = h(М), 1
затем генерирует случайное целое число К, 1< К< q, и вычисляет число r:
r = (GK mod Р) mod q .

Затем отправитель вычисляет с помощью секретного ключа Х целое число s:

s = ((m + r * X)/K) mod q .

Пара чисел (r,s) образует цифровую подпись

S = (r,s)

под документом М.

Таким образом, подписанное сообщение представляет собой тройку чисел (М,r,s).

Получатель подписанного сообщения (М,r,s) проверяет выполнение условий

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

w = (1/s) mod q ,

хэш-значение

m = h(М)
u1 = (m * w) mod q , u2 = (r * w) mod q .

Далее получатель с помощью открытого ключа Y вычисляет значение

v = ((Gu1 * Yu2 ) mod Р) mod q

и проверяет выполнение условия

v = r .

Если условие v = r выполняется, тогда подпись S=(r,s) под документом М признается получателем подлинной.

Можно строго математически доказать, что последнее равенство будет выполняться тогда, и только тогда, когда подпись S=(r,s) под документом М получена с помощью именно того секретного ключа X, из которого был получен открытый ключ Y. Таким образом, можно надежно удостовериться, что отправитель сообщения владеет именно данным секретным ключом Х (не раскрывая при этом значения ключа X) и что отправитель подписал именно данный документ М.

  1. При любом допустимом уровне стойкости, т.е. при любой паре чисел G и Р (от 512 до 1024 бит), числа q, X, r, s имеют длину по 160 бит, сокращая длину подписи до 320 бит.
  2. Большинство операций с числами К, r, s, Х при вычислении подписи производится по модулю числа q длиной 160 бит, что сокращает время вычисления подписи.
  3. При проверке подписи большинство операций с числами u 1 , u 2 , v, w также производится по модулю числа q длиной 160 бит, что сокращает объем памяти и время вычисления.

Недостатком алгоритма DSА является то, что при подписывании и при проверке подписи приходится выполнять сложные операции деления по модулю q:

s = ((m + rX)/K) (mod q), w = (1/s) (mod q) ,

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

Следует отметить, что реальное исполнение алгоритма DSА может быть ускорено с помощью выполнения предварительных вычислений. Заметим, что значение r не зависит от сообщения М и его хэш-значения m. Можно заранее создать строку случайных значений К и затем для каждого из этих значений вычислить значения r. Можно также заранее вычислить обратные значения К -1 для каждого из значений К. Затем, при поступлении сообщения М, можно вычислить значение s для данных значений r и К -1 . Эти предварительные вычисления значительно ускоряют работу алгоритма DSА.

Отечественный стандарт цифровой подписи

Отечественный стандарт цифровой подписи обозначается как ГОСТ Р 34.10-94. Алгоритм цифровой подписи, определяемый этим стандартом, концептуально близок к алгоритму DSА. В нем используются следующие параметры:

р - большое простое число длиной от 509 до 512 бит либо от 1020 до 1024 бит;
q - простой сомножитель числа (р-1), имеющий длину 254. 256 бит;
а - любое число, меньшее (р-1), причем такое, что а q mod p = 1;
х - некоторое число, меньшее q;
у = а x mod р.

Кроме того, этот алгоритм использует однонаправленную хэш-функцию Н(х). Стандарт ГОСТ Р 34.11-94 определяет хэш-функцию, основанную на использовании стандартного симметричного алгоритма ГОСТ 28147-89.

  1. Пользователь А генерирует случайное число k, причем k.
  2. Пользователь А вычисляет значения

r = (аk mod p) mod p , s = (х * r + k (Н(m))) mod p .

Если Н(m) mod q = 0, то значение Н(m) mod q принимают равным единице. Если r=0, то выбирают другое значение k и начинают снова.
Цифровая подпись представляет собой два числа:

r mod 2256 и s mod 2256 .
v = Н(m)q-2 mod q , z1 = (s * v) mod q , z2 = ((q-r) * v) mod q , u = ((аz1 * уz2 ) mod р) mod p .

Различие между этим алгоритмом и алгоритмом DSА заключается в том, что в DSА

s = (k-1 (х * r + (Н(m)))) mod q ,

что приводит к другому уравнению верификации.

Следует также отметить, что в отечественном стандарте ЭЦП параметр q имеет длину 256 бит. Западных криптографов вполне устраивает q длиной примерно 160 бит. Различие в значениях параметра q является отражением стремления разработчиков отечественного стандарта к получению более безопасной подписи.

Этот стандарт вступил в действие c начала 1995 г.

Литература

  1. Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. Защита информации в компьютерных системах и сетях. Под ред. В.Ф. Шаньгина. - 2-е изд., перераб. и доп. - М.: Радио и связь, 2001. - 376 с.: ил.
  2. Конеев И.Р., Беляев А.В. Информационная безопасность предприятия. - СПб.: БХВ-Петербург, 2003.

Электронная цифровая подпись и функция хэширования

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

Целью аутентификации электронных документов является их защита от возможных видов злоумышленных действий, к кото­рым относятся:

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

маскарад — абонент С посылает документ абоненту В от имени абонента А;

ренегатство — абонент А заявляет, что не посылал сообще­ния абоненту В, хотя на самом деле послал;

подмена — абонент В изменяет или формирует новый доку­мент и заявляет, что получил его от абонента А;

повтор — абонент С повторяет ранее переданный доку­мент, который абонент А посылал абоненту В.

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

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

Основные процедуры цифровой подписи

Функционально цифровая подпись аналогична обычной ру­кописной подписи и обладает ее основными достоинствами:

• удостоверяет, что подписанный текст исходит от лица, по­ставившего подпись;

• не дает самому этому лицу возможности отказаться от обя­зательств, связанных с подписанным текстом;

• гарантирует целостность подписанного текста.

Электронная цифровая подпись (ЭЦП) представляет собой от­носительно небольшое количество дополнительной цифровой информации, передаваемой вместе с подписываемым текстом.

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

Технология применения системы ЭЦП предполагает нали­чие сети абонентов, посылающих друг другу подписанные элек­тронные документы. Для каждого абонента генерируется пара ключей: секретный и открытый. Секретный ключ хранится або­нентом в тайне и используется им для формирования ЭЦП. От­крытый ключ известен всем другим пользователям и предназна­чен для проверки ЭЦП получателем подписанного электронного

Система ЭЦП включает две основные процедуры:

• формирования цифровой подписи;

• проверки цифровой подписи.

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

Процедура формирования цифровой подписи. На подготови­тельном этапе этой процедуры абонент А — отправитель сооб­щения — генерирует пару ключей: секретный ключ кА и откры­тый ключ КА. Открытый ключ КА вычисляется из парного ему секретного ключа кА. Открытый ключ Кл рассылается остальным абонентам сети (или делается доступным, например на разде­ляемом ресурсе) для использования при проверке подписи. Для формирования цифровой подписи отправитель А прежде всего вычисляет значение хэш-функции h(М) подписываемого тек­ста М (рис. 6).

Рис. 6. Схема формирования электронной цифровой подписи/

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

Процедура проверки цифровой подписи. Абоненты сети могут проверить цифровую подпись полученного сообщения М с помо­щью открытого ключа КА отправителя этого сообщения (рис. 7).

При проверке ЭЦП абонент В — получатель сообщения М — расшифровывает принятый дайджест т открытым ключом КА от­правителя А. Кроме того, получатель сам вычисляет с помощью хэш-функции h (М) дайджест т' принятого сообщения М и сравнивает его с расшифрованным. Если т и т' совпадают, то цифровая подпись является подлинной. В противном случае либо подпись подделана, либо изменено содержание сообщения.

Рис. 7. Схема проверки электронной цифровой подписи

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

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

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

• срок окончания действия ключа данной подписи;

• информацию о лице, подписавшем файл (Ф.И.О., долж­ность, краткое наименование фирмы);

• идентификатор подписавшего (имя открытого ключа);

• собственно цифровую подпись.

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

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

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

Сегодня существует несколько стандартов ЭЦП, например ГОСТ 34.10-2001.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *