МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное ГОСУДАРСТВЕННОЕ бюджетное ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ПОВОЛЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ»
Факультет информатики и вычислительной техники
Кафедра информационной безопасности
Расчетно-графическая работа по дисциплине
«Методы прогнозирования возможных угроз информационной безопасности»
Безопасность
и уязвимость ЭЦП
Выполнил: студент БИс-31
Скворцов А.Н.
Проверил:
Потехин Е.Н
Йошкар-Ола
2014 г.
ВВЕДЕНИЕ
Благодаря бурному развитию сферы информационных технологий, в нашу жизнь вошли и стали уже привычными технологии, без которых современный мир уже и трудно себе представить. Одной из таких технологий, которая, между прочим, стоит на страже безопасности совершаемых в сети операций, является электронная цифровая подпись (ЭЦП). Ее применение в качестве средства для идентификации и подтверждения юридической значимости документов становится стандартом цифрового мира.
Электронная цифровая подпись (ЭЦП) - реквизит электронного документа, предназначенный для удостоверения источника данных и защиты данного электронного документа от подделки. Электронная цифровая подпись представляет собой последовательность символов, полученную в результате криптографического преобразования электронных данных. ЭЦП добавляется к блоку данных и позволяет получателю блока проверить источник и целостность данных и защититься от подделки. ЭЦП используется в качестве аналога собственноручной подписи.
Благодаря цифровым подписям, многие документы -
паспорта, избирательные бюллетени, завещания, договора аренды - теперь могут
существовать в электронной форме, а любая бумажная версия будет в этом случае
только копией электронного оригинала.
1. Основные термины, применяемые
при работе с ЭЦП
Закрытый ключ - это некоторая информация длиной 256 бит, хранится в недоступном другим лицам месте на дискете, смарт-карте, touch memory. Работает закрытый ключ только в паре с открытым ключом.
Открытый ключ - используется для проверки ЭЦП получаемых документов-файлов, технически это некоторая информация длиной 1024 бита. Открытый ключ работает только в паре с закрытым ключом.
Код аутентификации - код фиксированной длины, вырабатываемый из данных с использованием секретного ключа и добавляемый к данным с целью обнаружения факта изменений хранимых или передаваемых по каналу связи данных.
Средства электронно-цифровой подписи - аппаратные и/или программные средства, обеспечивающие:
создание электронной цифровой подписи в электронном документе с использованием закрытого ключа электронной цифровой подписи; и/или
подтверждение с использованием открытого ключа электронной цифровой подписи подлинности электронной цифровой подписи в электронном документе; и/или
создание закрытых и открытых ключей электронных
цифровых подписей.
2. ЭЦП - это просто
Начнем с того, что ЭЦП - это вовсе не “зверь” и никаких специальных знаний, навыков и умений для использования ЭЦП не потребуется.
Каждому пользователю ЭЦП, участвующему в обмене электронными документами, генерируются уникальные открытый и закрытый (секретный) криптографические ключи.
Ключевым элементом является секретный ключ: с помощью него производится шифрование электронных документов и формируется электронно-цифровая подпись. Также секретный ключ остается у пользователя, выдается ему на отдельном носителе: это может быть дискета, смарт-карта или touch memory. Хранить его нужно в секрете от других пользователей сети.
Для проверки подлинности ЭЦП используется открытый ключ. В удостоверяющем центре находится дубликат открытого ключа, создана библиотека сертификатов открытых ключей. Удостоверяющий центр обеспечивает регистрацию и надежное хранение открытых ключей во избежание внесения искажений или попыток подделки.
Когда пользователь устанавливает под электронным документом свою электронную цифровую подпись, на основе секретного ключа ЭЦП и содержимого документа путем криптографического преобразования вырабатывается некоторое большое число, которое и является электронно-цифровой подписью данного пользователя под данным конкретным документом. В конец электронного документа добавляется это число или сохраняется в отдельном файле. В подпись записывается следующая информация:
имя файла открытого ключа подписи;
информация о лице, сформировавшем подпись;
дата формирования подписи.
Пользователь, получивший подписанный документ и
имеющий открытый ключ ЭЦП отправителя на основании текста документа и открытого
ключа отправителя выполняет обратное криптографическое преобразование,
обеспечивающее проверку электронной цифровой подписи отправителя. Если ЭЦП под
документом верна, то это значит, что документ действительно подписан
отправителем и в текст документа не внесено никаких изменений. В противном
случае будет выдаваться сообщение, что сертификат отправителя не является
действительным.
3. Управление ключами
Важной проблемой всей криптографии с открытым ключом, в том числе и систем ЭЦП, является управление открытыми ключами. Необходимо обеспечить доступ любого пользователя к подлинному открытому ключу любого другого пользователя, защитить эти ключи от подмены злоумышленником, а также организовать отзыв ключа в случае его компрометации.
Задача защиты ключей от подмены решается с помощью сертификатов. Сертификат позволяет удостоверить заключенные в нем данные о владельце и его открытый ключ подписью какого-либо доверенного лица. В централизованных системах сертификатов (например, PKI) используются центры сертификации, поддерживаемые доверенными организациями. В децентрализованных системах (например, PGP) путем перекрестного подписывания сертификатов знакомых и доверенных людей каждым пользователем строится сеть доверия.
Управлением ключами занимаются центры
распространения сертификатов. Обратившись к такому центру, пользователь может
получить сертификат какого- либо пользователя, а также проверить, не отозван ли
еще тот или иной открытый ключ.
4. ЭЦП под микроскопом
Рассмотрим принцип работы ЭЦП поподробней. Схема электронной подписи обычно включает в себя следующие составляющие:
алгоритм генерации ключевых пар пользователя;
функцию вычисления подписи;
функцию проверки подписи.
Функция вычисления подписи на основе документа и секретного ключа пользователя вычисляет собственно подпись. В зависимости от алгоритма, функция вычисления подписи может быть детерминированной или вероятностной. Детерминированные функции всегда вычисляют одинаковую подпись по одинаковым входным данным. Вероятностные функции вносят в подпись элемент случайности, что усиливает криптостойкость алгоритмов ЭЦП. Однако для вероятностных схем необходим надежный источник случайности (либо аппаратный генератор шума, либо криптографически надежный генератор псевдослучайных бит), что усложняет реализацию.
В настоящее время детерминированые схемы практически не используются. Даже в изначально детерминированные алгоритмы сейчас внесены модификации, превращающие их в вероятностные (так, в алгоритм подписи RSA вторая версия стандарта PKCS#1 добавила предварительное преобразование данных (OAEP), включающее в себя, среди прочего, зашумление).
Функция проверки подписи выясняет, соответствует ли данная подпись данному документу и открытому ключу пользователя. Открытый ключ пользователя доступен всем, так что любой может проверить подпись под данным документом.
Поскольку подписываемые документы - переменной (и достаточно большой) длины, в схемах ЭЦП зачастую подпись ставится не на сам документ, а на его хэш. Для вычисления хэша используются криптографические хэш-функции, что гарантирует выявление изменений документа при проверке подписи. Хэш - функции не являются частью алгоритма ЭЦП, поэтому в схеме может быть использована любая надежная хэш-функция. Что же такое хэш? Хеширование представляет собой преобразование входного массива данных в короткое число фиксированной длины (которое называется хэшем или хэш-кодом) таким образом, чтобы с одной стороны, это число было значительно короче исходных данных, а с другой стороны, с большой вероятностью однозначно им соответствовало.
Продолжим. Алгоритмы ЭЦП делятся на два больших класса:
обычные цифровые подписи;
цифровые подписи с восстановлением документа.
Обычные цифровые подписи необходимо пристыковывать к подписываемому документу. К этому классу относятся, например, алгоритмы, основанные на эллиптических кривых (ECDSA, ГОСТ Р 34.10-2001, ДСТУ 4145-2002). Цифровые подписи с восстановлением документа содержат в себе подписываемый документ: в процессе проверки подписи автоматически вычисляется и тело документа. К этому классу относится один из самых популярных алгоритмов - RSA, который мы рассмотрим в конце статьи.
Следует различать электронную цифровую подпись и код аутентичности сообщения, несмотря на схожесть решаемых задач (обеспечение целостности документа и неотказуемости авторства). Алгоритмы ЭЦП относятся к классу асимметричных алгоритмов, в то время как коды аутентичности вычисляются по симметричным схемам.
Можно сказать, что цифровая подпись обеспечивает:
удостоверение источника документа. В зависимости от деталей определения документа могут быть подписаны такие поля, как «автор», «внесенные изменения», «метка времени» и т. д.
защиту от изменений документа. При любом случайном или преднамеренном изменении документа (или подписи) изменится хэш, следовательно, подпись станет недействительной;
невозможность отказа от авторства. Так как создать корректную подпись можно лишь, зная закрытый ключ, а он известен только владельцу, то владелец не может отказаться от своей подписи под документом.
Совершенно очевидно, что ЭЦП вовсе не совершенна. Возможны следующие угрозы цифровой подписи. Злоумышленник может:
попытаться подделать подпись для выбранного им документа;
попытаться подобрать документ к данной подписи, чтобы подпись к нему подходила;
попытаться подделать подпись для хоть какого-нибудь документа;
в случае кражи ключа подписать любой документ от имени владельца ключа;
обманом заставить владельца подписать какой-либо документ, например, используя протокол слепой подписи;
подменить открытый ключ владельца на свой собственный, выдавая себя за него.
При использовании надежной хэш-функции,
вычислительно сложно создать поддельный документ с таким же хэшем, как и у
подлинного. Однако эти угрозы могут реализоваться из-за слабостей конкретных
алгоритмов хэширования, подписи или ошибок в их реализациях.
5. RSA как
фундамент ЭЦП
Не секрет, что наибольшую популярность среди криптоалгоритмов цифровой подписи приобрел RSA (применяется при создании цифровых подписей с восстановлением документа).
На начало 2001 года криптосистема RSA являлась наиболее широко используемой асимметричной криптосистемой (криптосистемой открытого (public) ключа) и зачастую называется стандартом de facto. Вне зависимости от официальных стандартов, существование такого стандарта чрезвычайно важно для развития электронной коммерции и вообще экономики. Единая система открытого (public) ключа допускает обмен документами с электронно- цифровыми подписями между пользователями различных государств, использующими различное программное обеспечение на различных платформах; такая возможность насущно необходима для развития электронной коммерции. Распространение системы RSA дошло до такой степени, что ее учитывают при создании новых стандартов. При разработке стандартов цифровых подписей, в первую очередь в 1997 был разработан стандарт ANSI X9.30, поддерживающий Digital Signature Standard (стандарт Цифровой подписи). Годом позже был введен ANSI X9.31, в котором сделан акцент на цифровых подписях RSA, что отвечает фактически сложившейся ситуации, в частности - для финансовых учреждений.
До недавнего времени главным препятствием для замены бумажного документооборота электронным были недостатки защищенной аутентификации (установления подлинности); почти везде контракты, чеки, официальные письма, юридические документы все еще выполняются на бумаге.
Появление цифровой подписи на основе RSA сделало
осуществление электронных операций достаточно безопасным и надежным.
. Как же работает алгоритм RSA
Сообщение представляется в виде числа M.
Шифрование осуществляется с помощью общедоступной функции f(M), и только
адресату известно, как выполнить операцию f-1. Адресат выбирает два больших
простых (prime) числа p и q, которые делает секретными. Он объявляет n=pq и
число d, c (d,p- 1)=(d,q-1)=1 (один из возможных способов выполнить это
условие, выбрать d больше чем p/2 и q/2). Шифрование производится по формуле
f(M) є Md mod n
где M и f(M) оба Ј n-1.
Как было показано, может быть вычислено за разумное время, даже если M, d и n содержит весьма большое число знаков. Адресат вычисляет M на основе Md, используя свое знание p и q. В соответствие со следствием 6, если dc є(p-1)1, тогда (Md)eє p1.
Исходный текст M получается адресатом из зашифрованного F(M) путем преобразования
= (F(M))e (mod pq)
Здесь как исходный текст, так и зашифрованный рассматриваются как длинные двоичные числа. Аналогично (Md)e є qM, если dc є (q-1)1. e удовлетворяет этим двум условиям, если cd є (p-1) (q-1)1. Теорема 1 гласит, что мы можем позволить e=x, когда x является решением уравнения
+ (p-1)(q-1)y = 1
Так как (Md)e - M делимо на p и q, оно делимо и на pq, следовательно, мы можем определить M, зная Md, вычислив его значение в степени e и определив остаток от деления на pq. Для соблюдения секретности важно, чтобы, зная n, было нельзя вычислить p и q. Если n содержит 100 цифр, подбор шифра связан с перебором ~1050 комбинаций. Данная проблема изучается уже около 100 лет. RSA-алгоритм запатентован (20 сентября 1983, действует до 2000 года).
Теоретически можно предположить, что возможно выполнение операции f-1, не вычисляя p и q. Но в любом случае задача эта не проста и разработчики считают ее трудно факторизуемой.
Предположим, что мы имеем зашифрованный текст f(M) и исходный текст M, и мы хотим найти значения p и q. Нетрудно показать, что таких исходных данных для решения задачи недостаточно - надо знать все возможные значения Mi.
Проясним использование алгоритма RSA на конкретном примере. Выбираем два простые числа p=7; q=17 (на практике эти числа во много раз длиннее). В этом случае n = p*q будет равно 119. Теперь необходимо выбрать e, выбираем e=5. Следующий шаг связан с формированием числа d так, чтобы d*e=1 mod [(p-1)(q-1)]. d=77 (использован расширенный алгоритм Эвклида). d - секретный ключ, а e и n характеризуют открытый ключ. Пусть текст, который нам нужно зашифровать, представляется M=19. С = Memod n. Получаем зашифрованный текст C=66. Этот “текст” может быть послан соответствующему адресату. Получатель дешифрует полученное сообщение, используя М= Cdmod n и C=66. В результате получается M=19.
На практике общедоступные ключи могут помещаться
в специальную базу данных. При необходимости послать партнеру зашифрованное
сообщение можно сделать сначала запрос его открытого ключа. Получив его, можно
запустить программу шифрации, а результат ее работы послать адресату.