Конспект лекций по дисциплине «Программно-аппаратные средства защиты информации»
Тема 1.
Основные понятия и определения
За несколько последних десятилетий требования к информационной безопасности существенно изменились. До начала широкого использования автоматизированных систем обработки данных безопасность информации достигалась исключительно физическими и административными мерами. С появлением компьютеров стала очевидной необходимость использования автоматических средств защиты файлов данных и программной среды. Следующий этап развития автоматических средств защиты связан с появлением распределенных систем обработки данных и компьютерных сетей, в которых средства сетевой безопасности используются в первую очередь для защиты передаваемых по сетям данных. В наиболее полной трактовке под средствами сетевой безопасности мы будем иметь в виду меры предотвращения нарушений безопасности, которые возникают при передаче информации по сетям, а также меры, позволяющие определять, что такие нарушения безопасности имели место. Именно изучение средств сетевой безопасности и связанных с ними теоретических и прикладных проблем, составляет основной материал курса.
Термины "безопасность информации" и "защита информации" отнюдь не являются синонимами. Термин "безопасность" включает в себя не только понятие защиты, но также и аутентификацию, аудит, обнаружение проникновения.
Перечислим некоторые характерные проблемы, связанные с безопасностью, которые возникают при использовании компьютерных сетей:
1. Фирма имеет несколько офисов, расположенных на достаточно большом расстоянии друг от друга. При пересылкеконфиденциальной информации по общедоступной сети (например, Internet) необходимо быть уверенным, что никто не сможет ни подсмотреть, ни изменить эту информацию.
2. Сетевой администратор осуществляет удаленное управление компьютером. Пользователь перехватывает управляющее сообщение, изменяет его содержание и отправляет сообщение на данный компьютер.
3. Пользователь несанкционированно получает доступ к удаленному компьютеру с правами законного пользователя, либо, имея право доступа к компьютеру, получает доступ с гораздо большими правами.
4. Фирма открывает Internet-магазин, который принимает оплату в электронном виде. В этом случае продавец должен быть уверен, что он отпускает товар, который действительно оплачен, а покупатель должен иметь гарантии, что он, во-первых, получит оплаченный товар, а во-вторых, номер его кредитной карточки не станет никому известен.
5. Фирма открывает свой сайт в Internet. В какой-то момент содержимое сайта заменяется новым, либо возникает такой поток и такой способ обращений к сайту, что сервер не справляется с обработкой запросов. В результате обычные посетители сайта либо видят информацию, не имеющую к фирме никакого отношения, либо просто не могут попасть на сайт фирмы.
Рассмотрим основные понятия, относящиеся к информационной безопасности, и их взаимосвязь.
Собственник определяет множество информационных ценностей, которые должны быть защищены от различного рода атак.Атаки осуществляются противниками или оппонентами, использующими различные уязвимости в защищаемых ценностях. Основными нарушениями безопасности являются раскрытие информационных ценностей (потеря конфиденциальности ), их неавторизованная модификация (потеря целостности ) или неавторизованная потеря доступа к этим ценностям (потерядоступности ).
Собственники информационных ценностей анализируют уязвимости защищаемых ресурсов и возможные атаки, которые могут иметь место в конкретном окружении. В результате такого анализа определяются риски для данного набора информационных ценностей. Этот анализ определяет выбор контрмер, который задается политикой безопасности и обеспечивается с помощьюмеханизмов и сервисов безопасности. Следует учитывать, что отдельные уязвимости могут сохраниться и после применениямеханизмов и сервисов безопасности. Политика безопасности определяет согласованную совокупность механизмов и сервисов безопасности, адекватную защищаемым ценностям и окружению, в котором они используются.
На рис.1.1 показана взаимосвязь рассмотренных выше понятий информационной безопасности.
Рис. 1.1.Взаимосвязь основных понятий безопасности информационных систем
Дадим следующие определения:
Уязвимость - слабое место в системе, с использованием которого может быть осуществлена атака .
Риск - вероятность того, что конкретная атака будет осуществлена с использованием конкретной уязвимости . В конечном счете, каждая организация должна принять решение о допустимом для нее уровне риска. Это решение должно найти отражение вполитике безопасности, принятой в организации.
Политика безопасности - правила, директивы и практические навыки, которые определяют то, как информационные ценности обрабатываются, защищаются и распространяются в организации и между информационными системами; набор критериев для предоставления сервисов безопасности .
Атака - любое действие, нарушающее безопасность информационной системы. Более формально можно сказать, что атака - это действие или последовательность связанных между собой действий, использующих уязвимости данной информационной системы и приводящих к нарушению политики безопасности.
Механизм безопасности - программное и/или аппаратное средство, которое определяет и/или предотвращает атаку .
Сервис безопасности - сервис, который обеспечивает задаваемую политикой безопасность систем и/или передаваемых данных, либо определяет осуществление атаки. Сервис использует один или более механизмов безопасности.
Рассмотрим модель сетевой безопасности и основные типы атак, которые могут осуществляться в этом случае. Затем рассмотрим основные типы сервисов и механизмов безопасности, предотвращающих такие атаки.
Модель сетевой безопасности
Классификация сетевых атак
В общем случае существует информационный поток от отправителя (файл, пользователь, компьютер) к получателю (файл, пользователь, компьютер):
Рис. 1.2.Информационный поток
Все атаки можно разделить на два класса: пассивные и активные.
I. Пассивная атака
Пассивной называется такая атака, при которой противник не имеет возможности модифицировать передаваемые сообщения и вставлять в информационный канал между отправителем и получателем свои сообщения. Целью пассивной атаки может быть только прослушивание передаваемых сообщений и анализ трафика.
Рис. 1.3.Пассивная атака
Механизмы безопасности
Перечислим основные механизмы безопасности:
Алгоритмы симметричного шифрования - алгоритмы шифрования, в которых для шифрования и дешифрования используется один и тот же ключ или ключ дешифрования легко может быть получен из ключа шифрования.
Алгоритмы асимметричного шифрования - алгоритмы шифрования, в которых для шифрования и дешифрования используются два разных ключа, называемые открытым и закрытым ключами, причем, зная один из ключей, вычислить другой невозможно.
Хэш-функции - функции, входным значением которых является сообщение произвольной длины, а выходным значением - сообщение фиксированной длины. Хэш-функции обладают рядом свойств, которые позволяют с высокой долей вероятности определять изменение входного сообщения.
Криптография
Основные понятия
Рассмотрим общую схему симметричной, или традиционной, криптографии.
Рис. 2.1.Общая схема симметричного шифрования
В процессе шифрования используется определенный алгоритм шифрования, на вход которому подаются исходное незашифрованное сообщение, называемое также plaintext, и ключ. Выходом алгоритма является зашифрованное сообщение, называемое также ciphertext . Ключ является значением, не зависящим от шифруемого сообщения. Изменение ключа должно приводить к изменению зашифрованного сообщения.
Зашифрованное сообщение передается получателю. Получатель преобразует зашифрованное сообщение в исходное незашифрованное сообщение с помощью алгоритма дешифрования и того же самого ключа, который использовался при шифровании, или ключа, легко получаемого из ключа шифрования.
Незашифрованное сообщение будем обозначать P или M, от слов plaintext и message. Зашифрованное сообщение будем обозначать С, от слова ciphertext.
Безопасность, обеспечиваемая традиционной криптографией, зависит от нескольких факторов.
Во-первых, криптографический алгоритм должен быть достаточно сильным, чтобы передаваемое зашифрованное сообщение невозможно было расшифровать без ключа, используя только различные статистические закономерности зашифрованного сообщения или какие-либо другие способы его анализа.
Во-вторых, безопасность передаваемого сообщения должна зависеть от секретности ключа, но не от секретности алгоритма. Алгоритм должен быть проанализирован специалистами, чтобы исключить наличие слабых мест, при наличии которых плохо скрыта взаимосвязь между незашифрованным и зашифрованным сообщениями. К тому же при выполнении этого условия производители могут создавать дешевые аппаратные чипы и свободно распространяемые программы, реализующие данныйалгоритм шифрования.
В-третьих, алгоритм должен быть таким, чтобы нельзя было узнать ключ, даже зная достаточно много пар (зашифрованное сообщение, незашифрованное сообщение), полученных при шифровании с использованием данного ключа.
Клод Шеннон ввел понятия диффузии и конфузии для описания стойкости алгоритма шифрования.
Диффузия - это рассеяние статистических особенностей незашифрованного текста в широком диапазоне статистических особенностей зашифрованного текста. Это достигается тем, что значение каждого элемента незашифрованного текста влияет на значения многих элементов зашифрованного текста или, что то же самое, любой элемент зашифрованного текста зависит от многих элементов незашифрованного текста.
Конфузия - это уничтожение статистической взаимосвязи между зашифрованным текстом и ключом.
Если Х - это исходное сообщение и K - криптографический ключ, то зашифрованный передаваемый текст можно записать в виде
Y = EK[X].Получатель, используя тот же ключ, расшифровывает сообщение
X = DK[Y]Противник, не имея доступа к K и Х, должен попытаться узнать Х, K или и то, и другое.
Алгоритмы симметричного шифрования различаются способом, которым обрабатывается исходный текст. Возможно шифрование блоками или шифрование потоком.
Блок текста рассматривается как неотрицательное целое число, либо как несколько независимых неотрицательных целых чисел.Длина блока всегда выбирается равной степени двойки. В большинстве блочных алгоритмов симметричного шифрованияиспользуются следующие типы операций:
· Табличная подстановка, при которой группа бит отображается в другую группу бит. Это так называемые S-box .
· Перемещение, с помощью которого биты сообщения переупорядочиваются.
· Операция сложения по модулю 2, обозначаемая XOR или
· Операция сложения по модулю 232 или по модулю 216.
· Циклический сдвиг на некоторое число бит.
Эти операции циклически повторяются в алгоритме, образуя так называемые раунды. Входом каждого раунда является выход предыдущего раунда и ключ, который получен по определенному алгоритму из ключа шифрования K. Ключ раунда называетсяподключом . Каждый алгоритм шифрования может быть представлен следующим образом:
Рис. 2.2.Структура алгоритма симметричного шифрования
Области применения
Стандартный алгоритм шифрования должен быть применим во многих приложениях:
· Шифрование данных. Алгоритм должен быть эффективен при шифровании файлов данных или большого потока данных.
· Создание случайных чисел. Алгоритм должен быть эффективен при создании определенного количества случайных бит.
· Хэширование. Алгоритм должен эффективно преобразовываться в одностороннюю хэш-функцию.
Платформы
Стандартный алгоритм шифрования должен быть реализован на различных платформах, которые, соответственно, предъявляют различные требования.
· Алгоритм должен эффективно реализовываться на специализированной аппаратуре, предназначенной для выполнения шифрования/дешифрования.
· Большие процессоры. Хотя для наиболее быстрых приложений всегда используется специальная аппаратура, программные реализации применяются чаще. Алгоритм должен допускать эффективную программную реализацию на 32-битных процессорах.
· Процессоры среднего размера. Алгоритм должен работать на микроконтроллерах и других процессорах среднего размера.
· Малые процессоры. Должна существовать возможность реализации алгоритма на смарт-картах, пусть даже с учетом жестких ограничений на используемую память.
Дополнительные требования
Алгоритм шифрования должен, по возможности, удовлетворять некоторым дополнительным требованиям.
· Алгоритм должен быть простым для написания кода, чтобы минимизировать вероятность программных ошибок.
· Алгоритм должен иметь плоское пространство ключей и допускать любую случайную строку бит нужной длины в качествевозможного ключа. Наличие слабых ключей нежелательно.
· Алгоритм должен легко модифицироваться для различных уровней безопасности и удовлетворять как минимальным, так и максимальным требованиям.
· Все операции с данными должны осуществляться над блоками, кратными байту или 32-битному слову.
Алгоритм DES
Шифрование
Начальная перестановка
Начальная перестановка и ее инверсия определяются стандартной таблицей. Если М - это произвольные 64 бита, то X = IP (M) - переставленные 64 бита. Если применить обратную функцию перестановки Y = IP-1 (X) = IP-1 (IP(M)), то получится первоначальная последовательность бит.
Создание подключей
Ключ для отдельного раунда Ki состоит из 48 бит. Ключи Ki получаются по следующему алгоритму. Для 56-битного ключа, используемого на входе алгоритма, вначале выполняется перестановка в соответствии с таблицей Permuted Choice 1 (РС-1). Полученный 56-битный ключ разделяется на две 28-битные части, обозначаемые как C0 и D0 соответственно. На каждомраунде Ci и Di независимо циклически сдвигаются влево на 1 или 2 бита, в зависимости от номера раунда. Полученные значения являются входом следующего раунда. Они также представляют собой вход в Permuted Choice 2 (РС-2), который создает 48-битное выходное значение, являющееся входом функции F(Ri-1, Ki).
Проблемы DES
Так как длина ключа равна 56 битам, существует 256 возможных ключей. На сегодня такая длина ключа недостаточна, поскольку допускает успешное применение лобовых атак. Альтернативой DES можно считать тройной DES, IDEA, а также алгоритм Rijndael, принятый в качестве нового стандарта на алгоритмы симметричного шифрования.
Также без ответа пока остается вопрос, возможен ли криптоанализ с использованием существующих характеристик алгоритмаDES. Основой алгоритма являются восемь таблиц подстановки, или S-boxes, которые применяются в каждой итерации. Существует опасность, что эти S-boxes конструировались таким образом, что криптоанализ возможен для взломщика, который знает слабые места S-boxes. В течение многих лет обсуждалось как стандартное, так и неожиданное поведение S-boxes, но все-таки никому не удалось обнаружить их фатально слабые места.
Алгоритм тройной DES
В настоящее время основным недостатком DES считается маленькая длина ключа, поэтому уже давно начали разрабатываться различные альтернативы этому алгоритму шифрования. Один из подходов состоит в том, чтобы разработать новый алгоритм, и успешный тому пример - IDEA. Другой подход предполагает повторное применение шифрования с помощью DES с использованием нескольких ключей.
Шифрование
Входом является 64-битный элемент данных X, который делится на две 32-битные половины, Xl и Xr.
Xl = Xl XOR PiXr = F (Xl) XOR XrSwap Xl and XrФункция F
Разделить Xl на четыре 8-битных элемента A, B, C, D.
F (Xl) = ((S1,А + S2,B mod 232) XOR S3,C) + S4,D mod 232
Дешифрование отличается от шифрования тем, что Pi используются в обратном порядке.
Алгоритм IDEA
IDEA (International Data Encryption Algorithm) является блочным симметричным алгоритмом шифрования, разработанным Сюдзя Лай (Xuejia Lai) и Джеймсом Массей (James Massey) из швейцарского федерального института технологий. Первоначальная версия была опубликована в 1990 году. Пересмотренная версия алгоритма, усиленная средствами защиты от дифференциальных криптографических атак, была представлена в 1991 году и подробно описана в 1992 году.
IDEA является одним из нескольких симметричных криптографических алгоритмов, которыми первоначально предполагалось заменить DES.
Принципы разработки
IDEA является блочным алгоритмом, который использует 128-битовый ключ для шифрования данных блоками по 64 бита.
Целью разработки IDEA было создание относительно стойкого криптографического алгоритма с достаточно простой реализацией.
Шифрование
Рассмотрим общую схему шифрования IDEA. Как и в любом алгоритме шифрования, здесь существует два входа: незашифрованный блок и ключ. В данном случае незашифрованный блок имеет длину 64 бита, ключ имеет длину 128 бит.
Алгоритм IDEA состоит из восьми раундов, за которыми следует заключительное преобразование. Алгоритм разделяет блок на четыре 16-битных подблока. Каждый раунд получает на входе четыре 16-битных подблока и создает четыре 16-битных выходных подблока. Заключительное преобразование также получает на входе четыре 16-битных подблока и создает четыре 16-битных подблока. Каждый раунд использует шесть 16-битных ключей, заключительное преобразование использует четыре подключа, т.е. всего в алгоритме используется 52 подключа.
Рис. 3.1.Алгоритм IDEA
Создание случайных чисел
Случайные числа играют важную роль при использовании криптографии в различных сетевых приложениях, относящихся к безопасности. Сделаем краткий обзор требований, предъявляемых к случайным числам в приложениях сетевой безопасности, а затем рассмотрим несколько способов создания случайных чисел.
Требования к случайным числам
Большинство алгоритмов сетевой безопасности, основанных на криптографии, используют случайные числа. Например:
1. Схемы взаимной аутентификации. В большинстве сценариев аутентификации и распределения ключа используются nonсes для предотвращения атак повтора (replay-атак). Применение действительно случайных чисел в качестве nonces не дает противнику возможности вычислить или угадать nonce.
2. Ключ сессии, созданный KDC или кем-либо из участников.
Двумя основными требованиями к последовательности случайных чисел являются случайность и непредсказуемость.
Непредсказуемость
В приложениях, таких как взаимная аутентификация и генерация ключа сессии, нет жесткого требования, чтобы последовательность чисел была статистически случайной, но члены последовательности должны быть непредсказуемы. При "правильной" случайной последовательности каждое число статистически не зависит от остальных чисел и, следовательно, непредсказуемо. Однако правильные случайные числа на практике используются достаточно редко, чаще последовательность чисел, которая должна быть случайной, создается некоторым алгоритмом. В данном случае необходимо, чтобы противник не мог предугадать следующие элементы последовательности, основываясь на знании предыдущих элементов и используемого алгоритма.
Криптографически созданные случайные числа
В криптографических приложениях целесообразно шифровать получающиеся случайные числа. Чаще всего используется три способа.
Режим Output Feedback DES
Режим OFB DES может применяться для генерации ключа, аналогично тому, как он используется для потокового шифрования. Заметим, что выходом каждой стадии шифрования является 64-битное значение, из которого только левые j битов подаются обратно для шифрования. 64-битные выходы составляют последовательность псевдослучайных чисел с хорошими статистическими свойствами.
Обзор процесса разработки AES
Инициатива в разработке AES принадлежит NIST. Основная цель состояла в создании федерального стандарта (FIPS), который бы описывал алгоритм шифрования, используемый для защиты информации как в государственном, так и в частном секторе.
Конкуренция среди финалистов была достаточно серьезной, и в результате длительного процесса оценки NIST выбрал Rijndael в качестве алгоритма AES. Мы кратко рассмотрим этот процесс и суммируем различные характеристики алгоритмов, которые были описаны на данном этапе. Следующий раздел представляет собой обзор разработки AES и обсуждение деталей алгоритмов.
Результаты второго этапа обсуждения
Считается, что второй этап обсуждения начинается с официального объявления пяти финалистов AES 20 августа 1999 года и заканчивается официальным завершением обсуждений 15 мая 2000 года.
NIST выполнил анализ оптимизированных реализаций алгоритмов на ANSI C и Java, которые были предоставлены после первого этапа обсуждений. При тестировании реализаций на ANSI C основное внимание уделялось скорости выполнения на компьютерах, использующих различные комбинации процессоров, операционных систем и компиляторов. Код Java был протестирован на скорость и используемую память на различных системах. Дополнительно было выполнено статистическое тестирование.
Процесс выбора
Была проведена серия встреч, чтобы выработать стратегию выбора алгоритма AES. В результате этих встреч все пришли к выводу, что выбранный алгоритм обеспечивает достаточную безопасность на обозримое будущее, эффективен на различных платформах и в различных окружениях, обеспечивает приемлемую гибкость с учетом возможных требований в будущем.
Методология и результаты выбора
Принципы выбора алгоритма
Команда NIST до выбора алгоритма должна была принять несколько фундаментальных решений:
· Принять количественный или качественный критерий при выборе алгоритма.
· Выбрать один или несколько алгоритмов в качестве AES.
· Выбрать запасной алгоритм(ы).
· Рассмотреть предложения по модификации алгоритмов.
Кратко рассмотрим полученные результаты.
Программные реализации
Программные реализации охватывают широкий диапазон. В некоторых случаях память никак не ограничена; в других случаях RAMи/или ROM могут быть существенно ограничены. Иногда большое количество данных шифруется и дешифруется единственным ключом. В остальных случаях ключ изменяется часто, возможно, для каждого блока данных.
Скорость шифрования и/или дешифрования является прямой или косвенной противоположностью безопасности. Это означает, что число раундов, указанное для алгоритма, является фактором безопасности; скорость шифрования или дешифрованияприблизительно пропорциональна числу раундов. Таким образом, скорость не может исследоваться независимо от безопасности.
Существует много других аспектов программных реализаций. Некоторые из них будут перечислены ниже, включая скорость и стоимость.
Другие проблемы архитектуры
Как MARS, так и RC6 используют 32-битное умножение и 32-битную переменную ротацию. Эти операции, особенно ротация, не поддерживаются на некоторых 32-битных процессорах. Операции 32-битного умножения и ротации затруднены для реализации на процессорах с другой длиной слова. Более того, некоторые компиляторы на самом деле не используют операции ротации, даже если они существуют в наборе команд процессора. Следовательно, выполнение MARS и RC6 может варьироваться от платформы (процессор и компилятор) к платформе больше, чем три остальных финалиста.
Изменение скорости в зависимости от режима
Другим фактором, который может влиять на выполнение алгоритма, является используемый режим операции. Алгоритм, выполняемый в режиме non-feedback (например, ЕСВ), может быть реализован для независимой и, следовательно, одновременной, обработки блоков данных. Результаты одновременного выполнения затем собираются для создания потока информации, который должен быть идентичен потоку, создаваемому при последовательной обработке. Считается, что реализации, использующие данный подход, применяют "interleaved режим". Это противоречит режимам с обратной связью (например, Cipher Feedback, Cipher Block Chaining и т.д.), которые должны обрабатывать блоки данных последовательно. Режимыinterleaved имеют преимущества на процессорах с возможностью параллельного выполнения.
Алгоритм RSA
Диффи и Хеллман определили новый подход к шифрованию, что вызвало к жизни разработку алгоритмов шифрования, удовлетворяющих требованиям систем с открытым ключом. Одним из первых результатов был алгоритм, разработанный в 1977 году Роном Ривестом, Ади Шамиром и Леном Адлеманом и опубликованный в 1978 году. С тех пор алгоритм Rivest-Shamir-Adleman (RSA ) широко применяется практически во всех приложениях, использующих криптографию с открытым ключом.
Алгоритм основан на использовании того факта, что задача факторизации является трудной, т.е. легко перемножить два числа, в то время как не существует полиномиального алгоритма нахождения простых сомножителей большого числа.
Алгоритм RSA представляет собой блочный алгоритм шифрования, где зашифрованные и незашифрованные данные являются целыми между 0 и n -1 для некоторого n .
Вычислительные аспекты
Рассмотрим сложность вычислений в алгоритме RSA при создании ключей и при шифровании/дешифровании.
Шифрование/дешифрование
Как шифрование, так и дешифрование включают возведение целого числа в целую степень по модулю n. При этом промежуточные значения будут громадными. Для того, чтобы частично этого избежать, используется следующее свойство модульной арифметики:
[(a mod n) x (b mod n)] mod n = (a x b) mod nДругая оптимизация состоит в эффективном использовании показателя степени, так как в случае RSA показатели степени очень большие. Предположим, что необходимо вычислить х16. Прямой подход требует 15 умножений. Однако можно добиться того же конечного результата с помощью только четырех умножений, если использовать квадрат каждого промежуточного результата:х2, х4, х8, х16.
Хэш-функции
Хэш-функция MD5
Рассмотрим алгоритм получения дайджеста сообщения MD5 (RFC 1321), разработанный Роном Ривестом из MIT.
Логика выполнения MD5
Алгоритм получает на входе сообщение произвольной длины и создает в качестве выхода дайджест сообщения длиной 128 бит. Алгоритм состоит из следующих шагов:
Рис. 8.1.Логика выполнения MD5
Шаг 1: добавление недостающих битов
Сообщение дополняется таким образом, чтобы его длина стала равна 448 по модулю 512 ( ). Это означает, что длина добавленного сообщения на 64 бита меньше, чем число, кратное 512. Добавление производится всегда, даже если сообщение имеет нужную длину. Например, если длина сообщения 448 битов, оно дополняется 512 битами до 960 битов. Таким образом, число добавляемых битов находится в диапазоне от 1 до 512.
Добавление состоит из единицы, за которой следует необходимое количество нулей.
Шаг 2: добавление длины
64-битное представление длины исходного (до добавления) сообщения в битах присоединяется к результату первого шага. Если первоначальная длина больше, чем 264, то используются только последние 64 бита. Таким образом, поле содержит длину исходного сообщения по модулю 264.
В результате первых двух шагов создается сообщение, длина которого кратна 512 битам. Это расширенное сообщение представляется как последовательность 512-битных блоков Y0, Y1, . . ., YL-1, при этом общая длина расширенного сообщения равна L * 512 битам. Таким образом, длина полученного расширенного сообщения кратна шестнадцати 32-битным словам.
Рис. 8.2.Структура расширенного сообщения
Шаг 3: инициализация MD-буфера
Используется 128-битный буфер для хранения промежуточных и окончательных результатов хэш-функции. Буфер может быть представлен как четыре 32-битных регистра ( A, B, C, D ). Эти регистры инициализируются следующими шестнадцатеричными числами:
А = 01234567В = 89ABCDEFC = FEDCBA98D = 76543210Хэш-функция SHA-1
Безопасный хэш-алгоритм (Secure Hash Algorithm) был разработан национальным институтом стандартов и технологии (NIST) и опубликован в качестве федерального информационного стандарта (FIPS PUB 180) в 1993 году. SHA-1, как и MD5, основан на алгоритме MD4.
Логика выполнения SHA-1
Алгоритм получает на входе сообщение максимальной длины 264 бит и создает в качестве выхода дайджест сообщения длиной160 бит.
Алгоритм состоит из следующих шагов:
Рис. 9.1.Логика выполнения SHA-1
Шаг 1: добавление недостающих битов
Сообщение добавляется таким образом, чтобы его длина была кратна 448 по модулю 512 ( ). Добавление осуществляется всегда, даже если сообщение уже имеет нужную длину. Таким образом, число добавляемых битов находится в диапазоне от 1 до 512.
Добавление состоит из единицы, за которой следует необходимое количество нулей.
Шаг 2: добавление длины
К сообщению добавляется блок из 64 битов. Этот блок трактуется как беззнаковое 64-битное целое и содержит длину исходного сообщения до добавления.
Результатом первых двух шагов является сообщение, длина которого кратна 512 битам. Расширенное сообщение может быть представлено как последовательность 512-битных блоков Y0, Y1, . . . , YL-1, так что общая длина расширенного сообщения есть L * 512 бит. Таким образом, результат кратен шестнадцати 32-битным словам.
Шаг 3: инициализация SHA-1 буфера
Используется 160-битный буфер для хранения промежуточных и окончательных результатов хэш-функции. Буфер может быть представлен как пять 32-битных регистров A, B, C, D и E. Эти регистры инициализируются следующими шестнадцатеричными числами:
A = 67452301B = EFCDAB89C = 98BADCFED = 10325476E = C3D2E1F0Стандарт цифровой подписи DSS
Национальный институт стандартов и технологии США (NIST) разработал федеральный стандарт цифровой подписи DSS. Для создания цифровой подписи используется алгоритм DSA (Digital Signature Algorithm). В качестве хэш-алгоритма стандарт предусматривает использование алгоритма SHA-1 (Secure Hash Algorithm). DSS первоначально был предложен в 1991 году и пересмотрен в 1993 году в ответ на публикации, касающиеся безопасности его схемы.
Алгоритм цифровой подписи
DSS основан на трудности вычисления дискретных логарифмов и базируется на схеме, первоначально представленной ElGamal и Schnorr.
Общие компоненты группы пользователей
Существует три параметра, которые являются открытыми и могут быть общими для большой группы пользователей.
160-битное простое число q, т.е. 2159 < q < 2160.
Простое число р длиной между 512 и 1024 битами должно быть таким, чтобы q было делителем (р - 1), т.е. 2L-1 < p < 2L, где 512 < L < 1024 и (p-1)/q является целым.
g = h(p-1)/q mod p, где h является целым между 1 и (р-1) и g должно быть больше, чем 1,10.
Зная эти числа, каждый пользователь выбирает закрытый ключ и создает открытый ключ.
Закрытый ключ отправителя
Закрытый ключ х должен быть числом между 1 и (q-1) и должен быть выбран случайно или псевдослучайно.
x - случайное или псевдослучайное целое,0 < x < q ,Открытый ключ отправителя
Открытый ключ вычисляется из закрытого ключа как у = gx mod p. Вычислить у по известному х довольно просто. Однако, имея открытый ключ у, вычислительно невозможно определить х, который является дискретным логарифмом у по основанию g.
y = gx mod pСлучайное число, уникальное для каждой подписи.
k - случайное или псевдослучайное целое, 0 < k < q, уникальное для каждого подписывания.
Подписывание
Для создания подписи отправитель вычисляет две величины, r и s, которые являются функцией от компонент открытого ключа (p, q, g), закрытого ключа пользователя (х), хэш-кода сообщения Н (М) и целого k, которое должно быть создано случайно или псевдослучайно и должно быть уникальным при каждом подписывании.
r = (gk mod p) mod qs = [ k-1 (H (M) + xr) ] mod qПодпись = (r, s)