Электронная цифровая подпись
Алгоритмы электронной подписи. Методы использования функции цифровой подписи. Прямая и арбитражная цифровые подписи, их различия. Средства работы с электронной подписью: пакет PGP, GNU Privacy Guard (GnuPG), "Криптон". Правовое регулирование ЭЦП в России.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 02.06.2010 |
Размер файла | 68,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
ЭЛЕКТРОННАЯ ЦИФРОВАЯ ПОДПИСЬ
1. ОБЩИЕ СВЕДЕНИЯ
Представим себе следующую ситуацию: по электронной почте получен документ с конфиденциальной информацией по финансированию на следующий год. Получателю необходима абсолютная уверенность в том, что полученный файл совершенно идентичен оригиналу и содержащиеся в нем цифры не были изменены в пути. Подозрение, что документ в пути был подделан, появляется, если некоторые цифры не сходятся, а электронная передача велась через внешнюю почтовую систему. Как убедиться в том, что полученный документ - абсолютная копия необходимого оригинала?
Рассмотренная ситуация не настолько искусственна, как может показаться с первого взгляда. В век, когда цифровая коммерция быстро становится реальностью, доверие пользователей к подобного рода системам целиком зависит от безопасности таких транзакций. Если отправить по электронной почте или передать на гибком диске файл с электронной таблицей, то каким образом получатель узнает о том, что никто, через кого эта информация прошла, не внес каких-либо изменений? Если переслать по сети Internet номер своей кредитной карточки, то как адресат убедится в том, что именно вы сделали этот заказ?
Решение этих вопросов придется искать в специальном разделе математики, который называют криптографией. Часто под этим термином подразумевается обычное кодирование, однако область криптографии не ограничена лишь теорией шифрования данных. Она также охватывает вопросы, связанные с подменностью цифровых данных - как проверить достоверность цифровых данных и как по аналогии с рукописной подписью на бумаге проставить визу на электронных документах, имея в распоряжении лишь последовательности нулей и единиц [2].
Электронная цифровая подпись (ЭЦП)-- реквизит электронного документа, предназначенный для защиты данного электронного документа от подделки, полученный в результате криптографического преобразования информации с использованием закрытого ключа электронной цифровой подписи и позволяющий идентифицировать владельца сертификата ключа подписи, а также установить отсутствие искажения информации в электронном документе, а также обеспечивает неотказуемость подписавшегося [3].
Цифровая подпись должна обладать следующими свойствами:
1. Должна быть возможность проверить автора, дату и время создания подписи.
2. Должна быть возможность аутентифицировать содержимое во время создания подписи.
3. Подпись должна быть проверяема третьей стороной для разрешения споров.
На основании этих свойств можно сформулировать следующие требования к цифровой подписи:
1. Подпись должна быть битовым образцом, который зависит от подписываемого сообщения.
2. Подпись должна использовать некоторую уникальную информацию отправителя для предотвращения подделки или отказа.
3. Создавать цифровую подпись должно быть относительно легко.
4. Должно быть вычислительно невозможно подделать цифровую подпись как созданием нового сообщения для существующей цифровой подписи, так и созданием ложной цифровой подписи для некоторого сообщения.
5. Цифровая подпись должна быть достаточно компактной и не занимать много памяти.
Сильная хэш-функция, зашифрованная закрытым ключом отправителя, удовлетворяет перечисленным требованиям [1].
1.1 ОБЩАЯ СХЕМА РАБОТЫ
Схема электронной подписи обычно включает в себя:
Алгоритм генерации ключевых пар пользователя
Функцию вычисления подписи
Функцию проверки подписи
Функция вычисления подписи на основе документа и секретного ключа пользователя вычисляет собственно подпись. В зависимости от алгоритма функция вычисления подписи может быть детерминированной или вероятностной. Детерминированные функции всегда вычисляют одинаковую подпись по одинаковым входным данным. Вероятностные функции вносят в подпись элемент случайности, что усиливает криптостойкость алгоритмов ЭЦП. Однако, для вероятностных схем необходим надёжный источник случайности (либо аппаратный генератор шума, либо криптографически надёжный генератор псевдослучайных бит), что усложняет реализацию. В настоящее время детерминированные схемы практически не используются. Даже в изначально детерминированные алгоритмы сейчас внесены модификации, превращающие их в вероятностные (так, в алгоритм подписи RSA вторая версия стандарта PKCS#1 добавила предварительное преобразование данных (OAEP), включающее в себя, среди прочего, зашумление).
Функция проверки подписи проверяет, соответствует ли данная подпись данному документу и открытому ключу пользователя. Открытый ключ пользователя доступен всем, так что любой может проверить подпись под данным документом.
Поскольку подписываемые документы -- переменной (и достаточно большой) длины, в схемах ЭЦП зачастую подпись ставится не на сам документ, а на его хэш. Для вычисления хэша используются криптографические хэш-функции, что гарантирует выявление изменений документа при проверке подписи. Хэш-функции не являются частью алгоритма ЭЦП, поэтому в схеме может быть использована любая надёжная хэш-функция.
Алгоритмы ЭЦП делятся на два больших класса: обычные цифровые подписи и цифровые подписи с восстановлением документа. Обычные цифровые подписи необходимо пристыковывать к подписываемому документу. К этому классу относятся, например, алгоритмы, основанные на эллиптических кривых (ECDSA, ГОСТ Р 34.10-2001, ДСТУ 4145-2002). Цифровые подписи с восстановлением документа содержат в себе подписываемый документ: в процессе проверки подписи автоматически вычисляется и тело документа. К этому классу относится один из самых популярных алгоритмов -- RSA.
Алгоритмы ЭЦП делятся на два больших класса: обычные цифровые подписи и цифровые подписи с восстановлением документа. Обычные цифровые подписи необходимо пристыковывать к подписываемому документу. К этому классу относятся, например, алгоритмы, основанные на эллиптических кривых (ECDSA, ГОСТ Р 34.10-2001, ДСТУ 4145-2002). Цифровые подписи с восстановлением документа содержат в себе подписываемый документ: в процессе проверки подписи автоматически вычисляется и тело документа. К этому классу относится один из самых популярных алгоритмов -- RSA [4].
2. АЛГОРИТМЫ ЭЛЕКТРОННОЙ ПОДПИСИ
Отсутствие электронного эквивалента подписи в 60-70 годы являлось фактором, сдерживавшим широкое применение безбумажной технологии обработки документов. Общепризнанные приемы установления подлинности физической подписи под документами абсолютно не пригодны при обработке документов в электронной форме. Необходимо было другое решение.
Такое решение впервые было предложено в 1977 году в виде так называемой системы «электронного подписывания документов» или, короче говоря, «электронной подписи».
Процедура электронной подписи включает в себя пару алгоритмов, один из которых (подписывание) хранится в секрете, а второй (проверка) выдается всем, кому будут адресоваться подписанные документы. Подписывание документа - файла состоит в вычислении с помощью программы «подпись» по содержимому файла некоторого большого числа, которое и называется его электронной подписью. Программа проверки по содержимому файла и его числу-подписи быстро и надежно удостоверяет, что подпись вычислена именно из этого документа-файла и именно данной конкретной программой подписывания. Принципиальным моментом в электронной подписи является невозможность ее подделывания без секретной программы подписывания [5].
2.1 КОНТРОЛЬНЫЕ СУММЫ
Наиболее простой способ проверки целостности данных, передаваемых в цифровом представлении, - это метод контрольных сумм. Под контрольной суммой понимается некоторое значение, рассчитанное путем сложения всех чисел из входных данных. Если сумма всех чисел превышает максимально допустимое значение, заранее заданное для этой величины, то величина контрольной суммы равна коэффициенту полученной суммы чисел - то есть это остаток от деления итоговой суммы на максимально возможное значение контрольной суммы, увеличенное на единицу. Если сказанное записать в виде формулы, то для расчета контрольной суммы будет использоваться следующее выражение:
Checkssum = Total % (MaxVal + 1)
где Total - итоговая сумма, рассчитанная по входным данным, и MaxVal - максимально допустимое значение контрольной суммы, заданное заранее.
Допустим, документ, содержимое которого предстоит верифицировать, представляет собой следующую последовательность величин, длиной 10 байт: 36 211 163 4 109 192 58 247 47 92
Если контрольная сумма 1 байт величина, то максимальное число, которое она может содержать, равно 255.Для приведенного выше документа сумма всех его чисел равно 1159. Таким образом, 8-разрядов контрольной суммы будут содержать остаток от деления числа 1159 на 256, то есть 135. Если контрольная сумма, рассчитана отправителем документа, равнялась, скажем, 246, а после получения она имеет значение 135, значит, информация подверглась изменению. Метод контрольных сумм - это наиболее простая форма цифровой идентификации (digital fingerprint); то есть величина, полученная в результате подсчета содержимого некоторых других данных, изменяется при коррекции данных, на основе которых он получен. Использование алгоритма контрольных сумм началось еще на заре вычислительной техники и до сих пор он является базовым при проверке на ошибки в некоторых версиях широко распространенного протокола передачи данных XMODEM.
Недостаток метода контрольных сумм заключается в том, что хотя несовпадение значений этих сумм служит верным доказательством, что рассматриваемый документ подвергся изменению, равенство сравниваемых значений еще не дает гарантии, что информация осталась неизменной. Можно произвольным образом изменить порядок следования чисел в документе, а контрольная сумма при этом сохранит прежнее значение. И что еще хуже - можно изменить отдельные числа в документе и подогнать остальные таким образом, чтобы обеспечить прежнее значение контрольной суммы.
При использовании дл контрольных сумм 8-разрядной переменной вероятность того, что контрольные суммы двух совершенно случайно выбранных последовательностей данных будут одинаковы, равна 1/256. При увеличении длины переменной под контрольную сумму до 16 или 32 разрядов, вероятность совпадений уменьшается, однако этот механизм все равно слишком чувствителен к возможным ошибкам, чтобы обеспечить высокую степень доверия к представленным данным [2].
2.2 КОНТРОЛЬ CRC
Более совершенный способ цифровой идентификации некоторой последовательности данных - это вычисление контрольного значения ее циклического избыточного кода (cyclic redundancy check - CRC). Алгоритм контроля CRC уже в течение длительного времени широко используется в системах сетевых адаптеров, контроллеров жесткого диска и других устройств для проверки идентичности входной и выходной информации. А также этот механизм применяется во многих из ныне существующих коммуникационных программ для выявления ошибок при пакетной передаче по телефонным линиям связи.
Механизм CRC основан на полиномиальном распределении, где каждый разряд некоторой порции данных соответствует одному коэффициенту большого полиномиального выражения. Напомним, что полиномом называется математическое выражение, представленное следующим образом:
f(x) = 4x3 + x2 + 7
Для выполнения расчетов контроля CRC полином, представляющий байт данных со значением 85 (8-разрядный двоичный эквивалент которого - 01010101) выглядит так:
0x7 + 1x6 + 0x5 + 1x4 + 0x3 + 1x2 + 0x1 + 1x0
или просто
x6 + x4 + x2 + 1
Ключевым принципом вычислений для механизма CRC является то, что операции умножения и деления этих полиномов выполняются точно так же, как с обычными числами. Если некоторый "магический" полином (коэффициенты которого получены в соответствии с используемым алгоритмом CRC) разделить на полином, представляющий какую-то последовательность данных, то в результате получается полином-частное и полином-остаток. Второе из этих значений служит основой для создания контрольного параметра CRC. Так же, как и для контрольных сумм, параметром CRC не требуется много места (обычно их длина составляет 16 или 32 разряда); однако по сравнению с ними, надежность обнаружения небольших изменений входной информации теперь значительно выше. Если в некотором огромном блоке данных лишь один разряд стал другим, то и контрольный параметр CRC со 100-процентной вероятностью также будет иметь другое значение. Если же изменятся два разряда, то вероятность обнаружения ошибки при длине параметра CRC в 16-разрядов, составляет более 99,99%. В отличие от контрольных сумм метод CRC сможет распознать всякие фокусы с перестановкой двух байт либо с добавлением 1 к одному из них и вычитанием 1 из другого.
Механизм CRC чрезвычайно полезен для проверки файлов, загружаемых из сетевых информационных служб. Если кто-то сообщает мне, что переданная ему через сеть ZD Net утилита вдруг без видимой причины перестает работать, то первым делом я прошу его создать ее архивный файл с помощью программы PKZIP и набрать команду PKZIP -V для просмотра созданного .ZIP файла. Среди прочих параметров он увидит также 32-разрядное значение параметра CRC, рассчитанное программой PKZIP для несжатого файла. Если вычисленное значение параметра CRC для gjkextyyjq утилиты не совпадает со значением для исходного варианта файла, значит, при загрузке его произошла необнаруженная ошибка передачи данных (такое иногда случается).
Можно организовать собственный контроль CRC для идентификации файлов; для этого потребуется переписать через службу PC Magazine Online файл CRC.COM. CRC.COM - это утилита DOS, которой в качестве входного параметра указывается имя файла. Исходя из содержащейся в нем информации, она рассчитывает 32-разрядное значение контроля CRC. В программе использован известный алгоритм расчета параметра CRC-32, применяемый PKZIP и сетевых адаптерах Token-Ring фирмы IBM. Этот алгоритм отличается высоким быстродействием (исходный текст полностью написан на языке ассемблера; производится буферизация при чтении/записи с диска; прекрасно реализован алгоритм расчета CRC-32 - все это позволяет сократить до минимума объем производимых вычислений) и обработает файлы любого размера.
Теперь при пересылке файлов через модем утилита CRC.COM сможет оказать вам неоценимую услугу - дать уверенность, что информация передана без искажений. Получив по сети файл CRC.COM, первым делом проверьте сам этот файл, набрав в строке DOS команду: CRC CRC.COM. Если полученное значение параметра CRC не равно 86C23FA, значит файл следует загрузить снова [2].
2.3 АЛГОРИТМ RSA
Первой и наиболее известной во всем мире системой электронной подписи стала система RSA, разработанная в 1977 году в Массачусетском технологическом институте (MIT) и названая так по первым буквам фамилий авторов: R. Rivest, A. Shamir, L. Adleman [5]
RSA использует операцию возведения в степень (в дальнейшем будет обозначена символом ^) по модулю для шифровки и дешифровки сообщения, которое получается путем перевода текста в цифровую форму (если речь идет о компьютерах, то текст и так имеет цифровую форм.
Функция шифровки, используемая в RSA выглядит так: C = T^E mod N, где T представляет собой шифруемый текст, C - зашифрованный текст, а E представляет собой открытый ключ. Другими словами, T возводится в степень E по модулю N. Для примера, 2 в степени 3 дает 8, а 2 в степени3 по модулю 7 есть 8 mod 7, что равно 1. Функция дешифрования выглядит так: T = C^D mod N где D представляет собой секретный ключ. Пара ключей E и D должна быть выбрана так, что E является обратным к D по отношению к операции возведения в степень по модулю N. Иными словами, (T^E mod N)^D mod N = T^ED mod N = T.
Для того, чтобы найти подходящую пару, для которой это равенство верно, надо знать функцию Эйлера переноса, J(N) для данного значения модуля N. Функция Эйлера представляет собой количество чисел в интервале от 1 до N-1, которые являются простыми относительно N. Для нахождения функции J(N) , в свою очередь, найти простые факторы N.
Фундаментальная теорема арифметики: Любое не простое число может быть представлено как произведение уникального набора простых чисел.
Относительно простые числа: Два числа называются относительно простыми, если среди их простых факторов нет одинаковых.
Итак, необходимо найти набор простых факторов числа N для того, чтобы вычислить функцию Эйлера. J(N). Нахождение этих факторов является задачей чрезвычайно сложной - практически абсолютно невозможно для достаточно больших N. И именно этот факт и делает PGP таким надежным методом шифрования. Для заданных N и E вы не можете найти D (и, таким образом, расшифровать сообщение) не зная простых факторов числа N, что настолько трудно, что PGP является виртуально невскрываемой при достаточно больших N.
Практический способ сгенерировать пару ключей - это сначала сгенерировать само N путем умножения двух больших простых чисел P и Q, так что простые факторы N мы уже знаем. Для числа, которое имеет только два простых фактора (как в нашем случае), функция Эйлера равна:
J(N) = (P-1)(Q-1)
Теперь выбирается некоторое число E, которое является простым относительно J(N) (почему именно простым, будет показано ниже). Задача - найти D, которое является обратным к E по отношению к операции возведения в степень по модулю N. Это можно сделать, зная J(N).
Имеется правило в модульной арифметике, гласящее, что если операция возведения в степень использует модуль N, то показатели экспонент должны использовать модуль J(N). Например:
(T^E mod N)^D mod N = T^ED mod N
Оказывается, что умножать показатели степени E и D нужно с использованием mod J(N), а не mod N. Для того, чтобы для заданного показателя шифровки E найти подходящее обратное число D, нам следует удовлетворить равенство:
T^ED mod N = T
Для этого достаточно, чтобы ED mod J(N) = 1, так как T^1 mod N = T. Так что проблема нахождения D сводится к проблеме нахождения числа, обратного E по модулю J(N), что с вычислительной точки зрения тривиально. Следует отметить, что в модульной арифметике есть закон, гласящий, что для заданного модуля M число может иметь обратное относительно операции умножения по модулю M только если оно является относительно простым по отношению к M. Вот почему E выбиралось как не имеющее общих простых факторов с J(N), так, чтобы у него имелось обратное D по модулю J(N). Тривиальные комбинации E и D (например E = D) отбрасываются как неподходящие с точки зрения секретности, и тогда берется новое E.
Когда значение N выбрано, а ключи E и D сгенерированы, можно забыть о P, Q и J(N) так как они «сделали свое дело». Теперь есть в наличии подходящие ключи шифровки и дешифровки E и D
C = T^E mod N and T = C^D mod N
(на самом деле совершенно не важно, какой из ключей D или E считается ключом шифровки). Не зная чисел P и Q практически невозможно вычислить J(N) и, следовательно, найти D по заданному E при больших значениях N, так что шифрование является надежным.
Итоговый список шагов, необходимых для генерации ключа:
*Выбираем пару произвольных больших простых чисел P и Q и находим N путем умножения
*Вычисляем функцию Эйлера числа
N, J(N) = (P-1)(Q-1)
*Выбираем число E так, чтобы оно было относительно простым по отношению к J(N)
*Находим D, обратное число к E по отношению к операции умножения по модулю J(N), и тривиальные значения отбраковываем как несекретные (E=D)
*Найдя подходящую пару ключей, ключ E объявляем открытым и его можно использовать для шифровки сообщений, адресованных владельцу пары E и D:
C = T^E mod N
*Ключ D держится в секрете и используется для дешифровки полученных сообщений:
T = C^D mod N
Надежность RSA
Факторизация N приведет к вскрытию алгоритма RSA. Не было доказано, что нет полиномиального по затратам времени решения задачи нахождения простых факторов большого числа (то есть возможно, что в будущем будет найден алгоритм, который факторизует N достаточно быстро для вскрытия RSA). Однако, несмотря на постоянное продвижение в алгоритмах факторизации, ни один из них не удовлетворяет критерию полиномиальности по времени, что сделало бы проблему RSA разрешимой.
Важно отметить, что не было доказано, что безопасность RSA целиком зависит от проблемы нахождения простых факторов большого числа. Однако все другие способы нахождения D по заданному E оказались эквивалентны по затратам задаче факторизации N.
Есть вероятность, что будет найден алгоритм для нахождения E-того корня по модулю N более простым путем, чем факторизация N. Тем не менее, до сих пор не был найден такой алгоритм и RSA выдержал огромное число попыток вскрытия [6].
2.4 АЛГОРИТМ DSA
Национальный институт стандартов и технологии США (NIST) разработал федеральный стандарт цифровой подписи DSS. Для создания цифровой подписи используется алгоритм DSA (Digital Signature Algorithm). В качестве хэш-алгоритма стандарт предусматривает использование алгоритма SHA-1 (Secure Hash Algorithm). DSS первоначально был предложен в 1991 году и пересмотрен в 1993 году в ответ на публикации, касающиеся безопасности его схемы.
DSS использует алгоритм, который разрабатывался для использования только в качестве цифровой подписи. В отличие от RSA, его нельзя использовать для шифрования или обмена ключами. Тем не менее, это технология открытого ключа.
Рассмотрим отличия подхода, используемого в DSS для создания цифровых подписей, от применения таких алгоритмов как RSA.
В подходе RSA подписываемое сообщение подается на вход сильной хэш-функции, которая создает хэш-код фиксированной длины. Для создания подписи этот хэш-код шифруется с использованием закрытого ключа отправителя. Затем сообщение и подпись пересылаются получателю. Получатель вычисляет хэш-код сообщения и проверяет подпись, используя открытый ключ отправителя. Если вычисленный хэш-код равен дешифрованной подписи, то считается, что подпись корректна.
Подход DSS также использует сильную хэш-функцию. Хэш-код является входом функции подписи вместе со случайным числом k, созданным для этой конкретной подписи. Функция подписи также зависит от закрытого ключа отправителя KRa и множества параметров, известных всем участникам. Можно считать, что это множество состоит из глобального открытого ключа KUG. Результатом является подпись, состоящая из двух компонент, обозначенных как s и r.
Для проверки подписи получатель также создает хэш-код полученного сообщения. Этот хэш-код вместе с подписью является входом в функцию верификации. Функция верификации зависит от глобального открытого ключа KUG и от открытого ключа отправителя KUa. Выходом функции верификации является значение, которое должно равняться компоненте r подписи, если подпись корректна. Функция подписи такова, что только отправитель, знающий закрытый ключ, может создать корректную подпись.
DSS основан на трудности вычисления дискретных логарифмов и базируется на схеме, первоначально представленной ElGamal и Schnorr [1].
2.5 ОТЕЧЕСТВЕННЫЙ СТАНДАРТ ЦИФРОВОЙ ПОДПИСИ ПО ГОСТ 3410
В отечественном стандарте ГОСТ 3410, принятом в 1994 году, используется алгоритм, аналогичный алгоритму, реализованному в стандарте DSS. Оба алгоритма относятся к семейству алгоритмов ElGamal.
В стандарте ГОСТ 3410 используется хэш-функция ГОСТ 3411, которая создает хэш-код длиной 256 бит. Это во многом обуславливает требования к выбираемым простым числам p и q:
1. р должно быть простым числом в диапазоне:2509 < p < 2512, либо 21020 < p < 21024
2. q должно быть простым числом в диапазоне: 2254 < q < 2256
q также должно быть делителем (р-1).
Аналогично выбирается и параметр g. При этом требуется, чтобы gq (mod p) = 1.
В соответствии с теоремой Ферма это эквивалентно условию в DSS, что
g = h(p-1)/q mod p.
Закрытым ключом является произвольное число х:
0 < x < q
Открытым ключом является число y:
y = gx mod p
Для создания подписи выбирается случайное число k:
0 < k < q
Подпись состоит из двух чисел (r, s), вычисляемых по следующим формулам:
r = (gk mod p) mod q
s = (k H(M) + xr) mod q
Конкретные отличия DSS и ГОСТ 3410:
Используются разные хэш-функции: в ГОСТ 3410 применяется отечественный стандарт на хэш-функции ГОСТ 3411, в DSS используется SHA-1, которые имеют разную длину хэш-кода. Отсюда и разные требования на длину простого числа q: в ГОСТ 3410 длина q должна быть от 254 бит до 256 бит, а в DSS длина q должна быть от 159 бит до 160 бит.
По-разному вычисляется компонента s подписи. В ГОСТ 3410 компонента s вычисляется по формуле:
s = (k H(M) + xr) mod q
В DSS компонента s вычисляется по формуле:
s = [k-1 (H(M) + xr)] mod
Последнее отличие приводит к соответствующим отличиям в формулах для проверки подписи.
Получатель вычисляет:
w = H(M)-1 mod q
u1 = w s mod q
u2 = (q-r) w mod q
v = [(gu1 yu2) mod p] mod q
Подпись корректна, если v = r.
Структура обоих алгоритмов довольно интересна. Заметим, что значение r совсем не зависит от сообщения. Вместо этого r есть функция от k и трех общих компонент открытого ключа. Мультипликативная инверсия k (mod p) (в случае DSS) или само значение k (в случае ГОСТ 3410) подается в функцию, которая, кроме того, в качестве входа имеет хэш-код сообщения и закрытый ключ пользователя. Эта функция такова, что получатель может вычислить r, используя входное сообщение, подпись, открытый ключ пользователя и общий открытый ключ.
В силу сложности вычисления дискретных логарифмов нарушитель не может восстановить k из r или х из s.
Другое важное замечание заключается в том, что экспоненциальные вычисления при создании подписи необходимы только для gk mod p. Так как это значение от подписываемого сообщения не зависит, оно может быть вычислено заранее. Пользователь может заранее просчитать некоторое количество значений r и использовать их по мере необходимости для подписи документов. Еще одна задача состоит в определении мультипликативной инверсии k-1 (в случае DSS). Эти значения также могут быть вычислены заранее.
Подписи, созданные с использованием стандартов ГОСТ 3410 или DSS, называются рандомизированными, так как для одного и того же сообщения с использованием одного и того же закрытого ключа каждый раз будут создаваться разные подписи (r,s), поскольку каждый раз будет использоваться новое значение k. Подписи, созданные с применением алгоритма RSA, называются детерминированными, так как для одного и того же сообщения с использованием одного и того же закрытого ключа каждый раз будет создаваться одна и та же подпись [1].
2.6 ОБЩИЕ СВЕДЕНИЯ О ХЭШИРОВАНИИ
Хэширование, вообще говоря, это преобразования массива данных произвольного размера в блок данных фиксированного размера, служащий (в некоторых случаях) заменителем исходного массива. Хэширование выполняется с помощью хэш-функций.
Проблема в том, что даже контроль с помощью 32-разрядного значения CRC обладает определенными недостатками - он устойчиво обнаруживает случайные изменения во входной информации (например, возникающие в результате сбоев при передаче данных), однако недостаточно надежен в случае преднамеренных действий. Если для идентификации некоторого файла вы используете его 32-разрядный параметр CRC, то для кого-то не так уж сложно с помощью компьютера создать совершенно другой файл с тем же значением CRC.
Более высокой надежности, чем при контроле CRC, можно достичь при использовании односторонних алгоритмов хеширования; результатом их работы являются особые "хешированные" значения. Под термином "односторонние" понимается следующее: имея на входе А, можно без особого труда получить на выходе В, но сделать обратное - то есть из В получить А - невозможно, или, во всяком случае, практически невозможно. Важная отличительная особенность любого хорошего алгоритма хеширования заключается в том, что генерируемые с его помощью значения настолько уникальны и трудноповторимы, что вряд ли кто-то даже с помощью серии суперкомпьютеров, затратив колоссальное количество времени, сможет найти два набора входных данных, имеющих одинаковые значение хеширования. Как правило, эти параметры занимают не менее 128 разряды. Чем больше их длина, тем труднее воспроизвести входной набор данных, то есть найти последовательность, обеспечивающую соответствующий результат.
Среди односторонних алгоритмов хэширования наибольшей известностью пользуются два из них: алгоритм MD5 (message digest), разработанный профессором Массачусетского технологического института Роном Ривестом (Ron Rivest) (один из авторов популярной криптосистемы с ключом общего пользования RSA), и алгоритм Secure Hash Algorithm (SHA), созданный совместными усилиями Национального института по стандартизации и технологическим разработкам (NIST) и Управления национальной безопасности США (NSA). Результат анализа последовательности входных данных с помощью алгоритма MD5 - 128-разрядный цифровой идентификатор, а при использовании алгоритма SHA - 160-разрядное значение. Учитывая, что пока никому не удалось подобрать ключ ни к одному из названных алгоритмов, можно считать, что восстановление исходных данных по некоторому хешированному значению, являющемуся результатом работы алгоритма SNA либо по некоторому коэффициенту алгоритма MD5 нереально.
Таким образом, если вам отправили какой-то файл и идентификатор, полученный в результате применения к нему алгоритма MD5 или SHA, и если вы выполнили с ним тот же алгоритм хеширования и ваш результат совпал с исходным значением, определенно можно быть уверенным, что принятый вами файл не подвергся искажениям [2].
3. МЕТОДЫ ИСПОЛЬЗОВАНИЯ ФУНКЦИИ ЦИФРОВОЙ ПОДПИСИ
Существует несколько подходов к использованию функции цифровой подписи. Все они могут быть разделены на две категории: прямые и арбитражные.
3.1 ПРЯМАЯ И АРБИТРАЖНАЯ ЦИФРОВЫЕ ПОДПИСИ
При использовании прямой цифровой подписи взаимодействуют только сами участники, т.е. отправитель и получатель. Предполагается, что получатель знает открытый ключ отправителя. Цифровая подпись может быть создана шифрованием всего сообщения или его хэш-кода закрытым ключом отправителя.
Конфиденциальность может быть обеспечена дальнейшим шифрованием всего сообщения вместе с подписью открытым ключом получателя (асимметричное шифрование) или разделяемым секретным ключом (симметричное шифрование). Заметим, что обычно функция подписи выполняется первой, и только после этого выполняется функция конфиденциальности. В случае возникновения спора некая третья сторона должна просмотреть сообщение и его подпись. Если функция подписи выполняется над зашифрованным сообщением, то для разрешения споров придется хранить сообщение как в незашифрованном виде (для практического использования), так и в зашифрованном (для проверки подписи). Либо в этом случае необходимо хранить ключ симметричного шифрования, для того чтобы можно было проверить подпись исходного сообщения. Если цифровая подпись выполняется над незашифрованным сообщением, получатель может хранить только сообщение в незашифрованном виде и соответствующую подпись к нему.
Все прямые схемы, рассматриваемые далее, имеют общее слабое место. Действенность схемы зависит от безопасности закрытого ключа отправителя. Если отправитель впоследствии не захочет признать факт отправки сообщения, он может утверждать, что закрытый ключ был потерян или украден, и в результате кто-то подделал его подпись. Можно применить административное управление, обеспечивающее безопасность закрытых ключей, для того чтобы, по крайней мере, хоть в какой-то степени ослабить эти угрозы. Один из возможных способов состоит в требовании в каждую подпись сообщения включать отметку времени (дату и время) и сообщать о скомпрометированных ключах в специальный центр.
Другая угроза состоит в том, что закрытый ключ может быть действительно украден у Х в момент времени Т. Нарушитель может затем послать сообщение, подписанное подписью Х и помеченное временной меткой, которая меньше или равна Т.
Проблемы, связанные с прямой цифровой подписью, могут быть частично решены с помощью арбитра. Существуют различные схемы с применением арбитражной подписи. В общем виде арбитражная подпись выполняется следующим образом. Каждое подписанное сообщение от отправителя Х к получателю Y первым делом поступает к арбитру А, который проверяет подпись для данного сообщения. После этого сообщение датируется и посылается к Y с указанием того, что оно было проверено арбитром. Присутствие А решает проблему схем прямой цифровой подписи, при которых Х может отказаться от сообщения.
Арбитр играет важную роль в подобного рода схемах, и все участники должны ему доверять.
Рассмотрим некоторые возможные технологии арбитражной цифровой подписи.
3.2 СИММЕТРИЧНОЕ ШИФРОВАНИЕ, АРБИТР ВИДИТ СООБЩЕНИЕ
Х A: M || EKxa [ IDX || H (M)]
Предполагается, что отправитель Х и арбитр А разделяют секретный ключ KАY и что А и Y разделяют секретный ключ KАY. Xсоздает сообщение М и вычисляет его хэш-значение Н (М). Затем Х передает сообщение и подпись А. Подпись состоит из идентификатора Х и хэш-значения, все зашифровано с использованием ключа KХА. А дешифрует подпись и проверяет хэш-значение.
A Y: ЕКay [ IDX || M ||
EKxa [IDX || H (M)], T ]
Затем А передает сообщение к Y, шифруя его KAY.. Сообщение включает IDX, первоначальное сообщение от Х, подпись и отметку времени. Y может дешифровать его для получения сообщения и подписи. Отметка времени информирует Y о том, что данное сообщение не устарело и не является повтором. Y может сохранить М и подпись к нему. В случае спора Y, который утверждает, что получил сообщение М от Х, посылает следующее сообщение к А:
ЕКay [ IDX || M || EKxa [IDX || H (M)] ]
Арбитр использует KAY для получения IDХ, М и подписи, а затем, используя KХА, может дешифровать подпись и проверить хэш-код. По этой схеме Y не может прямо проверить подпись Х; подпись используется исключительно для разрешения споров. Y считает сообщение от Х аутентифицированным, потому что оно прошло через А. В данном сценарии обе стороны должны иметь высокую степень доверия к А:
1. Х должен доверять А в том, что тот не будет раскрывать KХА и создавать фальшивые подписи в форме
ЕKка [IDX || H (M)].
2. Y должен доверять А в том, что он будет посылать
ЕKay [ IDX || M || EKxa [IDX || H (M)] ]
только в том случае, если хэш-значение является корректным и подпись была создана Х.
3.Обе стороны должны доверять А в решении спорных вопросов [1].
3.3 СИММЕТРИЧНОЕ ШИФРОВАНИЕ, АРБИТР НЕ ВИДИТ СООБЩЕНИЕ
Если арбитр не является такой доверенной стороной, то Х должен добиться того, чтобы никто не мог подделать его подпись, а Y должен добиться того, чтобы Х не мог отвергнуть свою подпись.
Предыдущий сценарий также предполагает, что А имеет возможность читать сообщения от Х к Y и что возможно любое подсматривание. Рассмотрим сценарий, который, как и прежде, использует арбитраж, но при этом еще обеспечивает конфиденциальность. В таком случае также предполагается, что Х и Y разделяют секретный ключ KXY.
X A: IDX || EKхy [M] ||
EKxa [IDX || H (EKXY [M]) ]
Х передает А свой идентификатор, сообщение, зашифрованное KXY, и подпись. Подпись состоит из идентификатора и хэш-значения зашифрованного сообщения, которые зашифрованы с использованием ключа KХА. А дешифрует подпись и проверяет хэш-значение. В данном случае А работает только с зашифрованной версией сообщения, что предотвращает его чтение.
A Y: EKay [ IDX || EKXY[M] ||
EKxa [ IDX || H ( EKXY [M])], T]
А передает Y все, что он получил от Х плюс отметку времени, все шифруя с использованием ключа KAY.
Хотя арбитр и не может прочитать сообщение, он в состоянии предотвратить подделку любого из участников, Х или Y. Остается проблема, как и в первом сценарии, что арбитр может сговориться с отправителем, отрицающим подписанное сообщение, или с получателем, для подделки подписи отправителя [1].
3.4 ШИФРОВАНИЕ ОТКРЫТЫМ КЛЮЧОМ: АРБИТР НЕ ВИДИТ СООБЩЕНИЕ
Все обсуждаемые проблемы могут быть решены с помощью схемы открытого ключа.
X A: IDX || EKRх [ IDX || EKUy [EKRx [M] ] ]
В этом случае Х осуществляет двойное шифрование сообщения М, сначала своим закрытым ключом KRX, а затем открытым ключом Y KUY. Получается подписанная секретная версия сообщения. Теперь это подписанное сообщение вместе с идентификатором Х шифруется KRX и вместе с IDX посылается А. Внутреннее, дважды зашифрованное, сообщение недоступно арбитру (и всем, исключая Y). Однако А может дешифровать внешнюю шифрацию, чтобы убедиться, что сообщение пришло от Х (так как только Х имеет KRX). Проверка дает гарантию, что пара закрытый/открытый ключ законна, и тем самым верифицирует сообщение.
A Y: EKRa [ IDX || EKUy [EKRx [M] ] || T ]
Затем А передает сообщение Y, шифруя его KRА. Сообщение включает IDX, дважды зашифрованное сообщение и отметку времени.
Эта схема имеет ряд преимуществ по сравнению с предыдущими двумя схемами. Во-первых, никакая информация не разделяется участниками до начала соединения, предотвращая договор об обмане. Во-вторых, некорректные данные не могут быть посланы, даже если KRX скомпрометирован, при условии, что не скомпрометирован KRА. В заключение, содержимое сообщения от Х к Y неизвестно ни А, ни кому бы то ни было еще [1].
3.5 ОБЩИЕ КОМПОНЕНТЫ ПОДПИСЫВАНИЯ
Существует три параметра, которые являются открытыми и могут быть общими для большой группы пользователей.
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 q
s = [ k-1 (H (M) + xr) ] mod q
Подпись = (r, s)
Проверка подписи
Получатель выполняет проверку подписи с использованием следующих формул. Он создает величину v, которая является функцией от компонент общего открытого ключа, открытого ключа отправителя и хэш-кода полученного сообщения. Если эта величина равна компоненте r в подписи, то подпись считается действительной:
w = s-1 mod q
u1 = [ H (M) w ] mod q
u2 = r w mod q
v = [ (gu1 yu2) mod p ] mod q
подпись корректна, если v = r [1].
4. СРЕДСТВА РАБОТЫ С ЭЕЛКТРОННОЙ ПОДПИСЬЮ
4.1 ПАКЕТ PGP
Наиболее известный - это пакет PGP (Pretty Good Privacy), - без сомнений являющийся на сегодня самым распространенным программным продуктом, позволяющим использовать современные надежные криптографические алгоритмы для защиты информации в персональных компьютерах.
К основным преимуществам данного пакета, выделяющим его среди других аналогичных продуктов следует отнести следующие:
Открытость. Исходный код всех версий программ PGP доступен в открытом виде. Любой эксперт может убедиться в том, что в программе эффективно реализованы криптоалгоритмы. Так как сам способ реализации известных алгоритмов был доступен специалистам, то открытость повлекла за собой и другое преимущество - эффективность программного кода.
Стойкость. Для реализации основных функций использованы лучшие (по крайней мере на начало 90-х) из известных алгоритмов, при этом допуская использование достаточно большой длины ключа для надежной защиты данных.
Бесплатность. Готовые базовые продукты PGP (равно как и исходные тексты программ) доступны в Интернете в частности на официальном сайте PGP.
Поддержка как централизованной (через серверы ключей) так и децентрализованной (через «сеть доверия») модели распределения открытых ключей.
Удобство программного интерфейса. PGP изначально создавалась как продукт для широкого круга пользователей, поэтому освоение основных приемов работы отнимает всего несколько часов.
4.2 GNU Privacy Guard (GnuPG)
GnuPG (www.gnupg.org ) - полная и свободно распространяемая замена для пакета PGP. Этот пакет не использует патентованный алгоритм IDEA, и поэтому может быть использован без каких-нибудь ограничений. GnuPG соответсвует стандарту RFC2440 (OpenPGP).
4.3 «КРИПТОН»
Пакет программ Криптон (www.ancud.ru) предназначен для использования электронной цифровой подписи (ЭЦП) электронных документов.
В стандартной поставке для хранения файлов открытых ключей используются дискеты. Помимо дискет, пакет Криптон дает возможность использования всех типов ключевых носителей (смарт-карт, электронных таблеток Touch Memory и др.) [4].
5. ПРАВОВОЕ РЕГУЛИРОВАНИЕ ЭЦП В РОССИИ
В развитых странах мира, в том числе и в Российской Федерации, электронная цифровая подпись широко используется в хозяйственном обороте. Банк России и другие банки Российской Федерации эффективно используют ЭЦП для осуществления своих операций путем пересылки банковских электронных документов по корпоративным и общедоступным телекоммуникационным сетям.
Для преодоления всех существующих в данной области отношений препятствий необходимо создание унифицированных правил, при помощи которых страны могут в национальном законодательстве решить основные проблемы, связанные с юридической значимостью записей в памяти ЭВМ, письменной формой электронных данных (в том числе и документов), подписью под такими данными, оригиналом и копиями электронных данных, а также признанием в качестве судебных доказательств электронных данных, заверенных электронной подписью.
Федеральный Закон РФ от 10.01.2002 № 1-ФЗ «ОБ ЭЛЕКТРОННОЙ ЦИФРОВОЙ ПОДПИСИ» закладывает основы решения проблемы обеспечения правовых условий для использования электронной цифровой подписи в процессах обмена электронными документами, при соблюдении которых электронная цифровая подпись признается юридически равнозначной собственноручной подписи человека в документе на бумажном носителе.
Федеральный Закон «Об электронной цифровой подписи» определяет условия использования ЭЦП в электронных документах органами государственной власти и государственными организациями, а также юридическими и физическими лицами, при соблюдении которых:
средства создания подписи признаются надежными;
сама ЭЦП признается достоверной, а ее подделка или фальсификация подписанных данных могут быть точно установлены;
предоставляются юридические гарантии безопасности передачи информации по открытым телекоммуникационным каналам;
соблюдаются правовые нормы, содержащие требования к письменной форме документа;
сохраняются все традиционные процессуальные функции подписи, в том числе удостоверение полномочий подписавшей стороны, установление подписавшего лица и содержания сообщения, а также роль подписи в качестве судебного доказательства;
обеспечивается охрана персональной информации.
В Законе устанавливаются права и обязанности обладателя электронной цифровой подписи.
В соответствии с законом владельцем сертификата ключа подписи (обладателем электронной цифровой подписи) является физическое лицо, на имя которого удостоверяющим центром выдан сертификат ключа подписи и которое владеет соответствующим закрытым ключом электронной цифровой подписи, позволяющим с помощью средств электронной цифровой подписи создавать свою электронную цифровую подпись электронных документах (подписывать электронные документы).
Владелец сертификата ключа подписи обязан:
Хранить в тайне закрытый ключ электронной цифровой подписи;
Не использовать для электронной цифровой подписи открытые и закрытые ключи электронной цифровой подписи, если ему известно, что эти ключи используются или использовались ранее;
Немедленно требовать приостановления действия сертификата ключа подписи при наличии оснований полагать, что тайна закрытого ключа электронной цифровой подписи нарушена.
Согласно ст. 6 данного Закона сертификат ключа подписи должен содержать следующие сведения:
Уникальный регистрационный номер сертификата ключа подписи, даты начала и окончания срока действия сертификата ключа подписи, находящегося в реестре удостоверяющего центра;
Фамилия, имя, отчество владельца сертификата ключа подписи или псевдоним владельца;
Открытый ключ электронной цифровой подписи;
Наименование и место нахождения удостоверяющего центра, выдавшего сертификат ключа подписи;
Сведения об отношениях, при осуществлении которых электронный документ с электронной цифровой подписью будет иметь юридическое значение [4,7].
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
«Криптографические основы безопасности». Интернет-Университет Информационных Технологий. 2003-2009;
«Технология использования цифровой подписи, открытого распределения ключей и шифрования в банковских расчетах». «ЛАН КРИПТО», Москва, 1993;
«Цифровая подпись: принципы работы». Джефф Просис. ©СК Пресс 12/96 PC. Magazine, April 9, 1996, p. 237;
«Электронная подпись и шифрование». МО ПНИЭИ (http//www.security.ru/el.wrigt.html);
Методические материалы для выполнения лабораторных работ по курсу «Вычислительные машины, системы и сети». МАИ, кафедра 304;
Федеральный закон от 10.01.2002 № 1-ФЗ «Об электронной цифровой подписи».
Подобные документы
Схема формирования электронной цифровой подписи, её виды, методы построения и функции. Атаки на электронную цифровую подпись и правовое регулирование в России. Средства работы с электронной цифровой подписью, наиболее известные пакеты и их преимущества.
реферат [27,8 K], добавлен 13.09.2011Правовое регулирование отношений в области использования электронной цифровой подписи. Понятие и сущность электронной цифровой подписи как электронного аналога собственноручной подписи, условия ее использования. Признаки и функции электронного документа.
контрольная работа [34,5 K], добавлен 30.09.2013Организационно-правовое обеспечение электронной цифровой подписи. Закон "Об электронной цифровой подписи". Функционирование ЭЦП: открытый и закрытый ключи, формирование подписи и отправка сообщения. Проверка (верификация) и сфера применения ЭЦП.
курсовая работа [22,9 K], добавлен 14.12.2011Назначение электронной цифровой подписи как реквизита электронного документа, предназначенного для его защиты с помощью криптографического ключа. Асимметричные алгоритмы шифрования и атаки на электронную подпись. Средства работы с цифровой подписью.
реферат [20,6 K], добавлен 09.10.2014Основные алгоритмы реализации электронной цифровой подписи. Понятие секретного и открытого ключа. Программные модули, сроки действия и порядок функционирования электронной подписи. Технология работы с информационной системой "ЭЦП", перспективы развития.
курсовая работа [1,1 M], добавлен 07.12.2010Закон "Об электронной подписи". Определение, технологии применения и принципы формирования электронной подписи. Стандартные криптографические алгоритмы. Понятие сертификата ключа подписи и проверка его подлинности. Системы электронного документооборота.
презентация [219,0 K], добавлен 19.01.2014Сфера правоотношений по применению электронной подписи в новом федеральном законе. Шифрование электронного документа на основе симметричных алгоритмов. Формирование цифровой подписи, схема процесса проверки, ее равнозначность бумажным документам.
курсовая работа [224,2 K], добавлен 12.11.2013Назначение и применение электронной цифровой подписи, история ее возникновения и основные признаки. Виды электронных подписей в Российской Федерации. Перечень алгоритмов электронной подписи. Подделка подписей, управление открытыми и закрытыми ключами.
курсовая работа [604,0 K], добавлен 13.12.2012Назначение электронной цифровой подписи. Использование хеш-функций. Симметричная и асимметричная схема. Виды асимметричных алгоритмов электронной подписи. Создание закрытого ключа и получение сертификата. Особенности электронного документооборота.
реферат [43,2 K], добавлен 20.12.2011Общая характеристика электронной подписи, ее признаки и составляющие, основные принципы и преимущества применения. Использование электронной цифровой подписи в России и за рубежом. Правовое признание ее действительности. Сертификат ключа проверки ЭЦП.
курсовая работа [27,2 K], добавлен 11.12.2014