Какие требования предъявляются к функциям хеширования. Универсальное хеширование

Введение

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

Требования к хэш-функции

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

Хэш-код создается функцией Н:

Где М является сообщением произвольной длины и h является хэш-кодом фиксированной длины.

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

Хэш-функция Н, которая используется для аутентификации сообщений, должна обладать следующими свойствами:

  • 1. Хэш-функция Н должна применяться к блоку данных любой длины.
  • 2. Хэш-функция Н создает выход фиксированной длины.
  • 3. Н (М) относительно легко (за полиномиальное время) вычисляется для любого значения М.
  • 4. Для любого данного значения хэш-кода h вычислительно невозможно найти M такое, что Н (M) = h.
  • 5. Для любого данного х вычислительно невозможно найти, что H (y) = H (x).
  • 6. Вычислительно невозможно найти произвольную пару (х, y) такую, что H (y) = H (x).

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

Четвертое свойство определяет требование односторонности хэш-функции: легко создать хэш-код по данному сообщению, но невозможно восстановить сообщение по данному хэш-коду. Это свойство важно, если аутентификация с использованием хэш-функции включает секретное значение. Само секретное значение может не посылаться, тем не менее, если хэш-функция не является односторонней, противник может легко раскрыть секретное значение следующим образом. При перехвате передачи атакующий получает сообщение М и хэш-код С = Н (SAB || M). Если атакующий может инвертировать хэш-функцию, то, следовательно, он может получить SAB || M = H-1 (C). Так как атакующий теперь знает и М и SAB || M, получить SABсовсем просто.

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

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

Как производится формирование «Базы данных открытых ключей», ее функциональное назначение в системе «Криптон®Подпись»

Пакет программ «КРИПТОН® Подпись» предназначен для использования электронной цифровой подписи (ЭЦП) электронных документов.

ЭЦП обеспечивает:

  • · установление авторства документов;
  • · проверку целостности документов.

Для штатной работы с программами пакета «КРИПТОН® Подпись» каждый пользователь, предполагающий использовать ЭЦП в электронном документообороте, снабжается парой ключей - секретным и открытым. Пары ключей создаются на подготовительном этапе с помощью программы «Мастер ключей» либо самостоятельно пользователем, либо специально выделенным администратором.

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

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

Используемые пакетом «КРИПТОН® Подпись» ключевые схемы подробно описаны ниже. Кроме того, даны практические рекомендации по защите секретных ключей ЭЦП от несанкционированного копирования или подмены.

Все действия, выполняемые пользователем с помощью программ пакета «КРИПТОН® Подпись», заносятся в специальный журнал, который может быть просмотрен с помощью программы «Менеджер журнала операций».

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

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

Таблица 1

В ЭЦП записывается следующая информация:

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

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

Способ подписывания определяется при настройке программ пакета с помощью программы «КРИПТОН® Подпись - Конфигурация».

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

sk - для секретного ключа;

pk - для открытого ключа.

Генерация случайного кода для создания открытого ключа выполняется аппаратно устройством криптографической защиты данных (УКЗД) серии «Криптон» или программно драйвером-эмулятором УКЗД (Crypton Emulator).

Для формирования подписи файла необходимо выбрать этот файл и затем выполнить команду «Поставить подпись».

Команда «Проверить подпись» используется для проверки наличия и подлинности подписи у файла, а также для получения дополнительной информации об авторе документа. Данные команды также выполняются после выбора проверяемого файла.

При необходимости можно удалить последнюю подпись или группу последних подписей. Для этого в программе используется команда «Удалить подпись». Для ее выполнения необходимо также выбрать документы-файлы, у которых удаляются подписи.

Пакет «КРИПТОН® Подпись» предоставляет также разнообразную справочную информацию, которая может быть получена как с помощью пунктов «Справка» или «Помощь» меню программ, так и с помощью кнопок «Справка» различных диалоговых окон. В последнем случае на экран выводится контекстная справочная информация, поясняющая работу именно в данном диалоговом окне, что наиболее удобно при работе с программами пакета.

Пакет программ «КРИПТОН® Подпись» предназначен для использования в операционных системах Windows-95/98/NT, поэтому программы данного пакета функционируют на компьютере, удовлетворяющем следующим требованиям:

  • · наличие операционной системы Windows-95/98 или Windows NT 4.0;
  • · наличие УКЗД серии «Криптон» с соответствующим драйвером для Windows-95/98/NT или его программного драйвера-эмулятора для Windows - Crypton Emulator версии 1.4;
  • · наличие Crypton API для Windows версии 2.25 (входит в поставку УКЗД серии «Криптон» и содержит также драйвер поставляемого УКЗД);
  • · наличие манипулятора «мышь».

Пакет программ «КРИПТОН® Подпись» поставляется на отдельной дискете емкостью 1,44Мб. На магнитном носителе записаны несколько файлов, названия которых состоят из цифр, и файлы Setup.exe и Readme.txt. Кроме того, на дискете содержатся также ключи для инициализации УКЗД серии «Криптон» или ПО Crypton Emulator - файлы uz.db3 и gk.db3.

При работе с программами пакета «КРИПТОН® Подпись» используется стандартное программное обеспечение, состоящее из Crypton API и Crypton Emulator (при отсутствии УКЗД). Данные продукты должны быть инсталлированы на компьютер до начала инсталляции пакета программ «КРИПТОН® Подпись». Для инсталляции пакета «КРИПТОН® Подпись» следует запустить программу Setup.exe. При запуске программы на экране появится окно стандартной процедуры установки программного обеспечения.

«КРИПТОН® Подпись» поставляется в двух вариантах: вариант для администратора («КРИПТОН® Подпись - Администратор») и вариант для пользователя. Вариант для администратора является полнофункциональным.

После установки пакета программ «КРИПТОН® Подпись» на персональном компьютере, если использовать предлагаемые инсталляционной программой пути и названия, в пусковое меню Windows в группу «ПрограммыAncud Software» добавляется новая группа «Signature».

Кроме того, после инсталляции пакета в контекстное меню Windows Explorer («Проводник Windows»), вызываемое по нажатию правой кнопки мыши, добавится расширение, позволяющее подписывать документы-файлы и проверять их ЭЦП, а также в каталоге установки пакета «КРИПТОН® Подпись» будет доступна утилита командной строки SgnCmd.exe.

Работа с ключами электронной цифровой подписи в пакете программ «КРИПТОН® Подпись».

При работе с пакетом «КРИПТОН® Подпись» каждый пользователь должен иметь, как минимум, один секретный ключ для формирования своей подписи и множество открытых ключей для проверки чужих подписей. Понятно, что секретный ключ должен быть недоступен для других. Иначе любой имеющий его может вместо вас подписывать документы.

Открытые ключи не являются секретными, но существует опасность их подмены. Рассмотрим следующую ситуацию.

У других пользователей есть доступ к вашему компьютеру, на котором вы храните открытые ключи. Один из них читает данные (Ф.И.О., должность...) из интересующего его открытого ключа. Далее генерирует секретный и открытый ключи с этими данными, заменяет на вашем компьютере открытый ключ, архивирует любой документ и присылает вам. В этом случае проверка подписи дает результат «подпись лица (Ф.И.О., должность...) верна», что может, мягко говоря, ввести вас в заблуждение. Таким образом, необходима защита и открытых ключей. Такую защиту можно обеспечить несколькими способами.

Таблица 2. Состав персональной дискеты

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

В минимальной конфигурации на персональной дискете могут находиться только два собственных ключа. В этом случае в качестве ключа-сертификата (при отсутствии последнего) может использоваться собственный открытый ключ. На этой же дискете рекомендуется хранить файлы для инициализации УКЗД «Криптон» или драйвера-эмулятора: gk.db3, uz.db3.


Рис. 1.

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

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

Таким образом, на персональной дискете будут находиться:

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

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

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


Рис. 2.

Предлагается следующий вариант обмена (см. рис. 2):

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

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

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

Организуется центр для сертификации пользователей. В СЦ поступают открытые ключи и сопровождающие их документы (см. рис. 3). В ответ пользователь получает:

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

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

Время от времени СЦ должен пополнять вашу базу данных открытых ключей и полномочий.

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

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

Пакет программ «КРИПТОН® Подпись» обеспечивает возможность организации работы по всем описанным выше вариантам.

парольный защита ключ программа

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

Что это такое?

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

Характеристики

Рассмотрим ключевые характеристики исследуемых алгоритмов. В числе таковых:

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

В числе иных важнейших свойств хэш-функции:

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

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

Требования к хэш-функциям

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

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

Структура

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

В какой структуре может быть представлена используемая в подобных целях хеш-функция? Пример ее составления может быть таким: H (hash, то есть, хэш) = f (T (текст), H1), где H1 — алгоритм обработки текста T. Данная функция хеширует T таким образом, что без знания H1 открыть его как полноценный файл будет практически невозможно.

Использование хэш-функций на практике: скачивание файлов

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

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

Хэш-функция и ЭЦП

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

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

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

Проверка паролей

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

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

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

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

Коллизии хэш-функций

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

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

История появления

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

Популярные стандарты хеширования

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

В свою очередь, при шифровании достаточно широкое применение находят стандарты MD4 и MD5. Еще один популярный криптографический алгоритм — SHA-1. В частности, он характеризуется размером хэша 160 бит, что больше, чем у MD5 — данный стандарт поддерживает 128 бит. Есть российские стандарты, регулирующие использование хэш-функций, — ГОСТ Р 34.11-94, а также заменивший его ГОСТ Р 34.11-2012. Можно отметить, что величина хэша, предусмотренная алгоритмами, принятыми в РФ, составляет 256 бит.

Стандарты, о которых идет речь, могут быть классифицированы по различным основаниям. Например, есть те, что задействуют алгоритмы блочные и специализированные. Простота вычислений на основе стандартов первого типа часто сопровождается их невысокой скоростью. Поэтому в качестве альтернативы блочным алгоритмам могут задействоваться те, что предполагают меньший объем необходимых вычислительных операций. К быстродействующим стандартам принято относить, в частности, отмеченные выше MD4, MD5, а также SHA. Рассмотрим специфику специальных алгоритмов хеширования на примере SHA подробнее.

Особенности алгоритма SHA

Применение хэш-функций, базирующихся на стандарте SHA, чаще всего осуществляется в области разработки средств цифровой подписи документов DSA. Как мы отметили выше, алгоритм SHA поддерживает хэш 160 бит (обеспечивая так называемый «дайджест» последовательности символов). Изначально рассматриваемый стандарт делит массив данных на блоки по 512 бит. При необходимости, если длина последнего блока не дотягивает до указанной цифры, структура файла дополняется 1 и необходимым количеством нулей. Также в конце соответствующего блока вписывается код, фиксирующий длину сообщения. Рассматриваемый алгоритм задействует 80 логических функций, посредством которых обрабатывается 3 слова, представленные в 32 разрядах. Также в стандарте SHA предусмотрено использование 4 констант.

Сравнение алгоритмов хеширования

Изучим то, как соотносятся свойства хэш-функций, относящихся к разным стандартам, на примере сопоставления характеристик российского стандарта ГОСТ Р 34.11-94 и американского SHA, который мы рассмотрели выше. Прежде всего, следует отметить то, что алгоритм, разработанный в РФ, предполагает осуществление 4 операций по шифрованию в расчете на 1 цикл. Это соответствует 128 раундам. В свою очередь, в течение 1 раунда при задействовании SHA предполагается вычисление порядка 20 команд, при том что всего раундов 80. Таким образом, использование SHA позволяет в течение 1 цикла обработать 512 бит исходных данных. В то время как российский стандарт способен осуществить операции за цикл в 256 бит данных.

Специфика новейшего российского алгоритма

Выше мы отметили, что стандарт ГОСТ Р 34.11-94 был заменен более новым — ГОСТ Р 34.11-2012 «Стрибог». Исследуем его специфику подробнее.

Посредством данного стандарта могут быть реализованы, как и в случае с алгоритмами, рассмотренными выше, криптографические хеш-функции. Можно отметить, что новейший российский стандарт поддерживает блок входных данных в объеме 512 бит. Основные преимущества ГОСТ Р 34.11-2012:

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

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

Специфика криптографических хэш-функций

Рассмотрим более подробно, каким образом исследуемые нами типы алгоритмов могут задействоваться в сфере криптографии. Ключевое требование к соответствующим функциям — стойкость к коллизиям, о которых мы сказали выше. То есть не должны формироваться повторяющиеся значения хеш-функции, если значения эти уже присутствуют в структуре соседствующего алгоритма. Прочим отмеченным выше критериям криптографические функции также должны соответствовать. Понятно, что всегда есть некая теоретическая возможность восстановления исходного файла на основе хэша, особенно если в доступе есть мощный вычислительный инструмент. Однако подобный сценарий предполагается свести к минимуму, благодаря надежным алгоритмам шифрования. Так, вычислить хэш-функцию будет очень сложно, если ее вычислительная стойкость соответствует формуле 2^{n/2}.

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

Итеративные схемы

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

Разумеется, сжимающая функция обязана соответствовать необходимым критериям криптостойкости. При интеративной схеме первая операция по обработке потока входных данных делится на блоки, размер которых исчисляется в битах. Соответствующий алгоритм также задействует временные переменные величиной в заданном количестве бит. В качестве первого значения задействуется общеизвестное число, в то время как последующие блоки данных объединяются со значением рассматриваемой функции на выходе. Значением хэша становятся выходные показатели бит для последней итерации, в которых учитывается весь входной поток, включая первое значение. Обеспечивается так называемый «лавинный эффект» хеширования.

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

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

Блочный алгоритм

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

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

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

Требования

Для того, чтобы хеш-функция H считалась криптографически стойкой, она должна удовлетворять трём основным требованиям, на которых основано большинство применений хеш-функций в криптографии:

  • Необратимость или стойкость к восстановлению прообраза : для заданного значения хеш-функции m не должен быть вычислен блок данных X , для которого {H(X)=m}.
  • Стойкость к коллизиям первого рода или восстановлению вторых прообразов : для заданного сообщения M должно быть вычислительно невозможно подобрать другое сообщение N , для которого H(N)=H(M).
  • Стойкость к коллизиям второго рода : должно быть вычислительно невозможно подобрать пару сообщений (M, M"), имеющих одинаковый хеш.

Данные требования не являются независимыми:

  • Обратимая функция нестойка к коллизиям первого и второго рода.
  • Функция, нестойкая к коллизиям первого рода, нестойка к коллизиям второго рода; обратное неверно.

Принципы построения

Итеративная последовательная схема

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

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

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

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

Сжимающая функция на основе симметричного блочного алгоритма

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

Обычно при построении хеш-функции используют более сложную систему. Обобщённая схема симметричного блочного алгоритма шифрования изображена на рис. 2.

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

Основным недостатком хеш-функций, спроектированных на основе блочных алгоритмов, является низкая скорость работы. Необходимую криптостойкость можно обеспечить и за меньшее количество операций над входными данными. Существуют более быстрые алгоритмы хеширования, спроектированных самостоятельно, с нуля, исходя из требований криптостойкости (наиболее распространенные из них - MD5 , SHA-1 , SHA-2 и ГОСТ Р 34.11-94).

Применения

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

Пусть некий клиент, с именем name , производит аутентификацию по парольной фразе, pass , на некоем сервере. На сервере хранится значение хеш-функции H (pass , R 2) , где R 2 - псевдослучайное, заранее выбранное число. Клиент посылает запрос (name , R 1 ), где R 1 - псевдослучайное, каждый раз новое число. В ответ сервер посылает значение R 2 . Клиент вычисляет значение хеш-функции H (R 1 , H (pass , R 2)) и посылает его на сервер. Сервер также вычисляет значение H (R 1 , H (pass , R 2)) и сверяет его с полученным. Если значения совпадают - аутентификация верна.

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

См. также

Напишите отзыв о статье "Криптографическая хеш-функция"

Отрывок, характеризующий Криптографическая хеш-функция

Наполеон с своей уверенностью в том, что не то хорошо, что хорошо, а то хорошо, что ему пришло в голову, написал Кутузову слова, первые пришедшие ему в голову и не имеющие никакого смысла. Он писал:

«Monsieur le prince Koutouzov, – писал он, – j"envoie pres de vous un de mes aides de camps generaux pour vous entretenir de plusieurs objets interessants. Je desire que Votre Altesse ajoute foi a ce qu"il lui dira, surtout lorsqu"il exprimera les sentiments d"estime et de particuliere consideration que j"ai depuis longtemps pour sa personne… Cette lettre n"etant a autre fin, je prie Dieu, Monsieur le prince Koutouzov, qu"il vous ait en sa sainte et digne garde,
Moscou, le 3 Octobre, 1812. Signe:
Napoleon».
[Князь Кутузов, посылаю к вам одного из моих генерал адъютантов для переговоров с вами о многих важных предметах. Прошу Вашу Светлость верить всему, что он вам скажет, особенно когда, станет выражать вам чувствования уважения и особенного почтения, питаемые мною к вам с давнего времени. Засим молю бога о сохранении вас под своим священным кровом.
Москва, 3 октября, 1812.
Наполеон. ]

«Je serais maudit par la posterite si l"on me regardait comme le premier moteur d"un accommodement quelconque. Tel est l"esprit actuel de ma nation», [Я бы был проклят, если бы на меня смотрели как на первого зачинщика какой бы то ни было сделки; такова воля нашего народа. ] – отвечал Кутузов и продолжал употреблять все свои силы на то, чтобы удерживать войска от наступления.
В месяц грабежа французского войска в Москве и спокойной стоянки русского войска под Тарутиным совершилось изменение в отношении силы обоих войск (духа и численности), вследствие которого преимущество силы оказалось на стороне русских. Несмотря на то, что положение французского войска и его численность были неизвестны русским, как скоро изменилось отношение, необходимость наступления тотчас же выразилась в бесчисленном количестве признаков. Признаками этими были: и присылка Лористона, и изобилие провианта в Тарутине, и сведения, приходившие со всех сторон о бездействии и беспорядке французов, и комплектование наших полков рекрутами, и хорошая погода, и продолжительный отдых русских солдат, и обыкновенно возникающее в войсках вследствие отдыха нетерпение исполнять то дело, для которого все собраны, и любопытство о том, что делалось во французской армии, так давно потерянной из виду, и смелость, с которою теперь шныряли русские аванпосты около стоявших в Тарутине французов, и известия о легких победах над французами мужиков и партизанов, и зависть, возбуждаемая этим, и чувство мести, лежавшее в душе каждого человека до тех пор, пока французы были в Москве, и (главное) неясное, но возникшее в душе каждого солдата сознание того, что отношение силы изменилось теперь и преимущество находится на нашей стороне. Существенное отношение сил изменилось, и наступление стало необходимым. И тотчас же, так же верно, как начинают бить и играть в часах куранты, когда стрелка совершила полный круг, в высших сферах, соответственно существенному изменению сил, отразилось усиленное движение, шипение и игра курантов.

Русская армия управлялась Кутузовым с его штабом и государем из Петербурга. В Петербурге, еще до получения известия об оставлении Москвы, был составлен подробный план всей войны и прислан Кутузову для руководства. Несмотря на то, что план этот был составлен в предположении того, что Москва еще в наших руках, план этот был одобрен штабом и принят к исполнению. Кутузов писал только, что дальние диверсии всегда трудно исполнимы. И для разрешения встречавшихся трудностей присылались новые наставления и лица, долженствовавшие следить за его действиями и доносить о них.
Кроме того, теперь в русской армии преобразовался весь штаб. Замещались места убитого Багратиона и обиженного, удалившегося Барклая. Весьма серьезно обдумывали, что будет лучше: А. поместить на место Б., а Б. на место Д., или, напротив, Д. на место А. и т. д., как будто что нибудь, кроме удовольствия А. и Б., могло зависеть от этого.
В штабе армии, по случаю враждебности Кутузова с своим начальником штаба, Бенигсеном, и присутствия доверенных лиц государя и этих перемещений, шла более, чем обыкновенно, сложная игра партий: А. подкапывался под Б., Д. под С. и т. д., во всех возможных перемещениях и сочетаниях. При всех этих подкапываниях предметом интриг большей частью было то военное дело, которым думали руководить все эти люди; но это военное дело шло независимо от них, именно так, как оно должно было идти, то есть никогда не совпадая с тем, что придумывали люди, а вытекая из сущности отношения масс. Все эти придумыванья, скрещиваясь, перепутываясь, представляли в высших сферах только верное отражение того, что должно было совершиться.
«Князь Михаил Иларионович! – писал государь от 2 го октября в письме, полученном после Тарутинского сражения. – С 2 го сентября Москва в руках неприятельских. Последние ваши рапорты от 20 го; и в течение всего сего времени не только что ничего не предпринято для действия противу неприятеля и освобождения первопрестольной столицы, но даже, по последним рапортам вашим, вы еще отступили назад. Серпухов уже занят отрядом неприятельским, и Тула, с знаменитым и столь для армии необходимым своим заводом, в опасности. По рапортам от генерала Винцингероде вижу я, что неприятельский 10000 й корпус подвигается по Петербургской дороге. Другой, в нескольких тысячах, также подается к Дмитрову. Третий подвинулся вперед по Владимирской дороге. Четвертый, довольно значительный, стоит между Рузою и Можайском. Наполеон же сам по 25 е число находился в Москве. По всем сим сведениям, когда неприятель сильными отрядами раздробил свои силы, когда Наполеон еще в Москве сам, с своею гвардией, возможно ли, чтобы силы неприятельские, находящиеся перед вами, были значительны и не позволяли вам действовать наступательно? С вероятностию, напротив того, должно полагать, что он вас преследует отрядами или, по крайней мере, корпусом, гораздо слабее армии, вам вверенной. Казалось, что, пользуясь сими обстоятельствами, могли бы вы с выгодою атаковать неприятеля слабее вас и истребить оного или, по меньшей мере, заставя его отступить, сохранить в наших руках знатную часть губерний, ныне неприятелем занимаемых, и тем самым отвратить опасность от Тулы и прочих внутренних наших городов. На вашей ответственности останется, если неприятель в состоянии будет отрядить значительный корпус на Петербург для угрожания сей столице, в которой не могло остаться много войска, ибо с вверенною вам армиею, действуя с решительностию и деятельностию, вы имеете все средства отвратить сие новое несчастие. Вспомните, что вы еще обязаны ответом оскорбленному отечеству в потере Москвы. Вы имели опыты моей готовности вас награждать. Сия готовность не ослабнет во мне, но я и Россия вправе ожидать с вашей стороны всего усердия, твердости и успехов, которые ум ваш, воинские таланты ваши и храбрость войск, вами предводительствуемых, нам предвещают».
Но в то время как письмо это, доказывающее то, что существенное отношение сил уже отражалось и в Петербурге, было в дороге, Кутузов не мог уже удержать командуемую им армию от наступления, и сражение уже было дано.
2 го октября казак Шаповалов, находясь в разъезде, убил из ружья одного и подстрелил другого зайца. Гоняясь за подстреленным зайцем, Шаповалов забрел далеко в лес и наткнулся на левый фланг армии Мюрата, стоящий без всяких предосторожностей. Казак, смеясь, рассказал товарищам, как он чуть не попался французам. Хорунжий, услыхав этот рассказ, сообщил его командиру.

9.1. Хэш-функции на основе блочных шифров

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

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

См. подробнее в хрестоматии

Хэш-функция — это преобразование, получающее из данных произвольной длины некое значение (свертку) фиксированной длины. Простейшими примерами являются контрольные суммы (например, crc32). Бывают криптографические и программистские хэши. Криптографический хэш отличается от программистского следующими двумя свойствами: необратимостью и свободностью от коллизий. Обозначим m – исходные данные, h(m) – хэш от них. Необратимость означает, что если известно число h0, то трудно подобрать m такое, что h(m) = h0. Свободность от коллизий означает, что трудно подобрать такие m1 и m2, что m1 не равно m2, но h(m1) = h(m2).

Криптографические хэш-функции разделяются на два класса:

  • хэш-функции без ключа (MDC (Modification (Manipulation) Detect Code) - коды),
  • хэш-функции c ключом (MАC (Message Authentication Code) - коды).
  • Хэш-функции без ключа разделяются на два подкласса:
  • слабые хэш-функции,
  • сильные хэш-функции.

Слабой хэш-функцией называется односторонняя функция H(x), удовлетворяющая следующим условиям:

  1. аргумент x
  2. значение H (x)
  3. значение H (x) легко вычислить;
  4. для любого фиксированного x вычислительно невозможно найти другой x"!=x , такой что H(x")=H(x) . Пара x"!=x , когда H(x")=H(x) называется коллизией хэш-функции.

Сильной хэш-функцией называется односторонняя функция H(x), удовлетворяющая условиям 1–3 для слабой хэш-функции и свойству 4": 4") вычислительно невозможно найти любую пару x"!=x, такой что H(x")=H(x).

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

Хэш-функцией с ключом (MAC) называется функция H(k,x), удовлетворяющая свойствам:

  1. аргумент х функции H(k, x) может быть строкой бит произвольной длины;
  2. значение H(k, x) должно быть строкой бит фиксированной длины;
  3. при любых k и x легко вычислить H(k, x) ;
  4. для любого х должно быть трудно вычислить H(k, x), не зная k ;
  5. должно быть трудно определить k даже при большом числе неизвестных пар {x, H(k, x)} при выбранном наборе х или вычислить по этой информации H(k, x") для x"!=x .

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

Некоторые алгоритмы хэш-функций:

  • MD 2. Message Digest. Алгоритм криптографической сверки. Порождает 128- bit блок от сообщения произвольной длины.
  • MD 4. Другой алгоритм свертки. Порождает 128-bit блок.
  • MD 5. Существенно переделанный MD 4. Автор тот же – Риверст.
  • SHA. Результирующий хэш равен 160-bit.
  • ГОСТ Р34.11–94. Российский алгоритм. Длина свертки – 256 бит (очень удобно для формирования по паролю ключа для ГОСТ 28147–89).

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

— множество двоичных строк длиной n бит;

— двоичная строка, состоящая из n нулей;

— сложение двоичных слов A и B по .

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

  • последовательного (итерационного);
  • параллельного.

9.2. Важнейшие практически используемые стойкие хэш-функции

Создатели ГОСТ Р34.11–94 пошли по первому пути и использовали метод последовательного хэширования использующий хэш-функцию с фиксированным размером входа (см. рис. 1), т. е. функцию сжатия с коэффициентом 2.

Рис. 1. Метод последовательного хэширования.

Если необходимо хэшировать сообщение , то хэширование выполняется следующим образом:

Здесь – функция сжатия, а – переменная сцепления.

Если последний блок содержит меньше чем n бит, то он «набивается» до достижения длины n . В отличие от стандартных предпосылок, предполагающих, что сообщение предварительно уже было разбито на блоки и произведена «набивка» последнего блока (это соответствует форматированию входного сообщения априори) до начала хэширования, в ГОСТ Р34.11–94 процедура хэширования ожидает конца сообщения (форматирование входного сообщения апостериори). «Набивка» производится следующим образом: последний блок сдвигается вправо, а затем освободившиеся разряды заполняются нулями до достижения длины в 256 бит. Алгоритм хэширования по ГОСТ Р34.11–94 можно классифицировать как устойчивый к столкновениям (n = 256, следовательно атака по парадоксу дней рождения потребует приблизительно операций хэширования) код, а также выявляющий модификации (Collision Resistant Hash Function , CRHF ). Хэш-функцию по ГОСТ Р34.11–94 можно легко преобразовать в код аутентификации сообщения любым известным методом (например, HMAC, методом секретного префикса, суффикса, оболочки и т. д.).

См. подробнее в хрестоматии

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

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

Рис. 2. Общая схема функции хэширования по ГОСТ Р34.11– 94.

Замечание 1 («набивка»). Указывать в передаваемом сообщении, сколько было добавлено нулей к последнему блоку, не требуется, т. к. длина сообщения участвует в хэшировании.

Рис. 3. «Набивка» сообщения.

Замечание 2 . Согласно ГОСТ Р34.11–94, начальный вектор IV произвольное фиксированное слово длиной 256 бит ). В таком случае, если он априорно не известен верифицирующему целостность сообщения, то он должен передаваться вместе с сообщением с гарантией целостности. Для сообщений небольших объемов задачу противнику можно усложнить, если вектор IV выбирать из небольшого множества допустимых величин (но при этом увеличивается вероятность угадывания хэш-величины противником). Также он может задаваться в рамках организации, домена как константа (обычно, как в тестовом примере).

Безопасный хэш-алгоритм SHA-1 (Secure Hash Algorithm – 1) был разработан национальным институтом стандартов и технологии (NIST) и опубликован в качестве федерального информационного стандарта (FIPS PUB 180) в 1993 г.

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

Шаг 1 : добавление недостающих битов. Сообщение добавляется таким образом, чтобы его длина была кратна 448 по модулю 512 (длина448 mod 512). Добавление осуществляется всегда, даже если сообщение уже имеет нужную длину. Таким образом, число добавляемых битов находится в диапазоне от 1 до 512. Добавление состоит из единицы, за которой следует необходимое количество нулей.

Шаг 2 : добавление длины. К сообщению добавляется блок из 64 битов. Этот блок трактуется как беззнаковое 64-битное целое число и содержит длину исходного сообщения до добавления. Результатом первых двух шагов является сообщение, длина которого кратна 512 битам. Расширенное сообщение может быть представлено как последовательность 512-битных блоков Y 0, Y 1,..., YL -1. Таким образом, общая длина расширенного сообщения есть L * 512 бит (результат кратен шестнадцати 32-битным словам).

Шаг 3 : инициализация SHA-1 буфера. Используется 160-битный буфер для хранения промежуточных и окончательных результатов расчета хэш-функции. Буфер может быть представлен как пять 32-битных регистров для хранения чисел A, B, C, D и E. Эти регистры инициализируются следующими шестнадцатеричными числами: A=67452301; B=EFCDAB 89; C=98 BADCFE; D=10325476; E=C 3 D 2 E 1 F 0.

Шаг 4 : обработка сообщения в 512-битных (16-словных) блоках. Основой алгоритма является модуль, состоящий из 80 циклических обработок, обозначенный как HSHA. Все 80 циклов обработки каждого блока имеют одинаковую структуру.

Рис. 4. Обработка очередного 512-битного блока.

Каждый цикл получает на входе текущий 512-битный обрабатываемый блок и 160-битное значение буфера ABCDE и изменяет содержимое этого буфера. В каждом цикле используется дополнительная константа , которая принимает только четыре различных значения:

5A827999 (целая часть числа );

6 ED 9 EBA 1 (целая часть числа );

8 F 1 BBCDC (целая часть числа );

CA 62 C 1 D 6 (целая часть числа ).

Для получения выход 80-го цикла складывается со значением . Сложение по модулю выполняется независимо для каждого из пяти слов в буфере с каждым из соответствующих слов в .

Шаг 5 : выход. После обработки всех 512-битных блоков сообщения выходом L-й стадии алгоритма является 160-битный дайджест сообщения. Рассмотрим более детально логику работы в каждом из 80-и циклов обработки для одного 512-битного блока. Новые (рассчитанные) значения для переменных A, B, C, D, E на выходе каждого цикла обработки можно представить так:

Здесь: A, B, C, D, E – пять 32-битных слов из буфера; t – номер цикла 0 ≤t ≤79; – элементарная логическая функция; – циклический левый сдвиг 32-битного аргумента на s битов; – 32-битное слово, полученное из текущего входного 512-битного блока; – дополнительная константа; знак «+» – сложение по модулю .

Рис. 5. Логика выполнения отдельного цикла.

Каждая элементарная функция получает на входе три 32-битных слова и создает на выходе одно 32-битное слово. Элементарная функция выполняет набор побитных логических операций, т. е. n-й бит выхода является функцией от n-х битов трех входов. Функции ft (B, C, D) следующие:

Номер цикла

ft (B , C , D )

На практике используются только три различные функции. Для 0 ≤t ≤19 функция является условной: if B then C else D. Для 20 ≤t ≤39 и 60 ≤t ≤79 функция создает бит четности. Для 40 ≤t ≤59 функция является истинной, если два или три аргумента истинны. 32-битные слова получаются из очередного 512-битного блока сообщения следующим образом.

Рис. 6. Получение входных значений переменной для каждого цикла
из очередного (текущего) 512-битного обрабатываемого блока .

Первые 16 значений берутся непосредственно из 16 слов текущего блока . Оставшиеся значения определяются следующим образом: . В первых 16 циклах обработки вход состоит из 32-битного слова данного блока . Для оставшихся 64 циклов вход состоит из XOR нескольких слов из блока сообщения .

Алгоритм SHA-1 можно суммировать следующим образом:

где IV – начальное значение буфера переменных A, B, C, D, E;

– результат обработки q-го блока сообщения;

L – число блоков в сообщении, включая поля добавления и длины;

Σ 32 – сумма по модулю , выполняемая отдельно для каждого слова буфера;

SHA – значение дайджеста сообщения.

Хеширование паролей – метод, позволяющий пользователям запоминать не 128 байт, т. е. 256 шестнадцатеричных цифр ключа, а некоторое осмысленное выражение, слово или последовательность символов, называющееся паролем. Действительно, при разработке любого криптоалгоритма следует учитывать, что в половине случаев конечным пользователем системы является человек, а не автоматическая система. Это ставит вопрос о том, удобно и вообще реально ли человеку запомнить 128-битный ключ (32 шестнадцатиричные цифры). Предел запоминаемости лежит на границе 8–12 подобных символов, а следовательно, если мы будем заставлять пользователя оперировать именно ключом, то мы практически вынудим его к записи ключа на каком-либо листке бумаги или электронном носителе, например в текстовом файле. Это, естественно, резко снижает защищенность системы.

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

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

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

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

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

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

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

Хэш-код создается функцией Н:

Где М является сообщением произвольной длины и h является хэш-кодом фиксированной длины.

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

Хэш-функция Н, которая используется для аутентификации сообщений, должна обладать следующими свойствами:

1. Хэш-функция Н должна применяться к блоку данных любой длины.

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

3. Н (М) относительно легко (за полиномиальное время) вычисляется для любого значения М.

4. Для любого данного значения хэш-кода h вычислительно невозможно найти M такое, что Н (M) = h.

5. Для любого данного х вычислительно невозможно найти , что H (y) = H (x).

6. Вычислительно невозможно найти произвольную пару (х, y) такую, что H (y) = H (x).

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

Четвертое свойство определяет требование односторонности хэш-функции : легко создать хэш-код по данному сообщению, но невозможно восстановить сообщение по данному хэш-коду . Это свойство важно, если аутентификация с использованием хэш-функции включает секретное значение. Само секретное значение может не посылаться, тем не менее, если хэш-функция не является односторонней, противник может легко раскрыть секретное значение следующим образом. При перехвате передачи атакующий получает сообщение М и хэш-код С = Н (S AB || M). Если атакующий может инвертировать хэш-функцию , то, следовательно, он может получить S AB || M = H -1 (C). Так как атакующий теперь знает и М и S AB || M, получить S AB совсем просто.

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

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

Конец работы -

Эта тема принадлежит разделу:

Конспект лекций по дисциплине программно-аппаратные средства защиты информации основные понятия и определения

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

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

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

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

Сервисы безопасности
Основными сервисами безопасности являются следующие: Конфиденциальность - предотвращение пассивных атак для передаваемых или хранимых данных.

Модель сетевого взаимодействия
Модель безопасного сетевого взаимодействия в общем виде можно представить следующим образом:

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

Сеть Фейстеля
Блочный алгоритм преобразовывает n-битный блок незашифрованного текста в n-битный блок зашифрованного текста. Число блоков длины n равно 2n. Для того чтобы преобразование было обр

Криптоанализ
Процесс, при котором предпринимается попытка узнать Х, K или и то, и другое, называется криптоанализом. Одной из возможных атак на алгоритм шифрования является лобовая атака, т

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

Используемые критерии при разработке алгоритмов
Принимая во внимание перечисленные требования, обычно считается, что алгоритм симметричного шифрования должен: · Манипулировать данными в больших блоках, предпочтительно размером 16

Принципы разработки
Самым распространенным и наиболее известным алгоритмом симметричного шифрования является DES (Data Encryption Standard). Алгоритм был разработан в 1977 году, в 1980 г


Теперь рассмотрим последовательность преобразований, используемую в каждом раунде.

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

Недостатки двойного DES
Простейший способ увеличить длину ключа состоит в повторном применении DES с двумя разными ключами. Используя незашифрованное сообщение P и два ключа K1 и K2, зашифрова

Тройной DES с двумя ключами
Очевидное противодействие атаке "встреча посередине" состоит в использовании третьей стадии шифрования с тремя различными ключами. Это поднимает стоимость лобовой атаки до 2168

Алгоритм Blowfish
Blowfish является сетью Фейстеля, у которой количество итераций равно 16. Длина блока равна 64 битам, ключ может иметь любую длину в пределах 448 бит. Хотя перед

Генерация подключей
Подключи вычисляются с использованием самого алгоритма Blowfish. 1. Инициализировать первый Р -массив и четыре S-boxes фиксированной строкой. 2. Выполнить опе

Криптографическая стойкость
Следующие характеристики IDEA характеризуют его криптографическую стойкость: 1. Длина блока: длина блока должна быть достаточной, чтобы скрыть все статистиче

Последовательность преобразований отдельного раунда
Рассмотрим последовательность преобразований отдельного раунда. Одним из основных элементов алгоритма, обеспечивающих диффузию, является структура, называемая МА (умножение/с

Создание подключей
Пятьдесят два 16-битных подключа создаются из 128-битного ключа шифрования следующим образом. Первые восемь подключей, которые обозначим как Z1, Z2, ...,

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

Алгоритм ГОСТ 28147
Алгоритм ГОСТ 28147 является отечественным стандартом для алгоритмов симметричного шифрования. ГОСТ 28147 разработан в 1989 году, является блочным алгоритмо

Режимы выполнения алгоритмов симметричного шифрования
Для любого симметричного блочного алгоритма шифрования определено четыре режима выполнения. ECB - Electronic Codebook - каждый блок из 64 бит незашифрова

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

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

Режим CFB
Блочный алгоритм предназначен для шифрования блоков определенной длины. Однако можно преобразовать блочный алгоритм в поточный алгоритм шифрования, используя последние два режима. Поточный

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

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


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

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

Циклическое шифрование
Рис. 3.14.Циклическое шифрование В данном случ

Генератор псевдослучайных чисел ANSI X9.17
Один из наиболее сильных генераторов псевдослучайных чисел описан в ANSI X9.17. В число приложений, использующих эту технологию, входят приложения финансовой безопасности и PGP.

Историческая справка
2 января 1997 года NIST объявил о начале разработки AES, и 12 сентября 1997 года были представлены официальные требования к алгоритмам. В этих требованиях указывалось, что целью NI

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

Критерий оценки
В сентябре 1997 года, объявив об алгоритмах кандидатов, специалисты NIST определили общий критерий, который должен использоваться при сравнении алгоритмов. Критерий оценки бы

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

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

Запасной алгоритм
Как уже отмечалось, существует взаимосвязь между обсуждениями проблемы нескольких алгоритмов AES и выбором запасного алгоритма, особенно в случае единственного алгоритма AES. Backu

Модификация алгоритмов
На первом и втором этапах обсуждения был отмечен интерес к увеличению числа раундов в некоторых алгоритмах. Во многих случаях увеличение количества раундов объяснялось. Так, про Rijndael

Размер машинного слова
Одной из проблем, которая возникает в программных реализациях, является лежащая в их основе архитектура. Платформы, на которых специалисты NIST выполняли тестирование, ориентированы н

Языки реализации ПО
Выполнение также зависит от использования конкретного языка (например, ассемблер, компилируемый или интерпретируемый язык высокого уровня). В некоторых случаях играет роль конкретное ПО. Сущ

Изменение скорости выполнения в зависимости от длины ключа
Программное выполнение MARS, RC6 и Serpent не очень сильно изменяется в зависимости от длины ключа. Однако для Rijndael иTwofish установление ключа или шиф

Краткий вывод о скорости выполнения на основных программных платформах
Огромное количество информации собрано относительно скорости финалистов на различных программных платформах. Эти платформы включают 32-битные процессоры (реализации на С и Java), 64-битные п

Окружения с ограничениями пространства
В некоторых окружениях, обладающих небольшими объемами RAM и/или ROM для таких целей, как хранение кода (обычно в ROM), представление объектов данных, таких как S-boxes (которые могут

Замечания по финалистам
MARS имеет определенные сложности в силу гетерогенной структуры раунда (четыре различных типа раунда). Для S-boxes необходимо 2 Kbytes ROM, что не является проблемой,

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

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

Основные способы использования алгоритмов с открытым ключом
Основными способами использования алгоритмов с открытым ключом являются шифрование/дешифрование, создание и проверка подписи и обмен ключа. Шифрование с о

Описание алгоритма
Алгоритм, разработанный Ривестом, Шамиром и Адлеманом, использует выражения с экспонентами. Данные шифруются блоками, каждый блок рассматривается как число, меньшее некоторого числа n. Шифро

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

Обсуждение криптоанализа
Можно определить четыре возможных подхода для криптоанализа алгоритма RSA: 1. Лобовая атака: перебрать все возможные закрытые ключи. 2. Разложить n на два простых со

Алгоритм обмена ключа Диффи-Хеллмана
Первая публикация данного алгоритма открытого ключа появилась в статье Диффи и Хеллмана, в которой вводились основные понятия криптографии с открытым ключом и в общих чертах упоминалс

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

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

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

Шаг 5: Выход
После обработки всех L 512-битных блоков выходом L-ой стадии является 128-битный дайджест сообщения. Рассмотрим более детально логику каждого из четырех циклов выполнения одного 512

Алгоритм MD4
Алгоритм MD4 является более ранней разработкой того же автора Рона Ривеста. Первоначально данный алгоритм был опубликован в октябре 1990 г., незначительно измененная версия была опубликована

Усиление алгоритма в MD5
Алгоритм MD5 имеет следующее свойство: каждый бит хэш-кода является функцией от каждого бита входа. Комплексное повторение элементарных функций fF, fG, fH

Шаг 4: Обработка сообщения в 512-битных (16-словных) блоках
Основой алгоритма является модуль, состоящий из 80 циклических обработок, обозначенный как HSHA. Все 80 циклических обработок имеют одинаковую структуру.

Шаг 5: Выход
После обработки всех 512-битных блоков выходом L-ой стадии является 160-битный дайджест сообщения. Рассмотрим более детально логику в каждом из 80 циклов обработки одного 512-битног

Сравнение SHA-1 и MD5
Оба алгоритма, SHA-1 и MD5, произошли от MD4, поэтому имеют много общего. Можно суммировать ключевые различия между алгоритмами. &nbs

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

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

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

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