Амелин Р.В.

Информационная безопасность

электронный учебник

Оглавление Установочный модуль

Модуль 1

Глава 1.
Введение в информационную безопасность
Глава 2.
Принципы построения защищенной АИС
Глава 3.
Модели безопасности
Тест к модулю 1

Модуль 2

Глава 4.
Введение в криптографию. Симметричное шифрование
Тест к модулю 2

Модуль 3

Глава 5.
Шифрование с открытым ключом. ЭЦП
Глава 6.
Криптографические протоколы
Тест к модулю 3

Модуль 4

Глава 7.
Парольная защита
Глава 8.
Компьютерные вирусы и борьба с ними
Глава 9.
Средства защиты сети
Тест к модулю 4
Практические задания
Глоссарий Список литературы
Актуальные проблемы уголовно-правовой борьбы с посягательствами на компьютерную информацию по УК РФ

Глава 5. Шифрование с открытым ключом. ЭЦП

5.1. Алгоритмы шифрования с открытым ключом

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

Если пользователь A хочет отправить зашифрованное послание пользователю B, он шифрует его с помощью открытого ключа B. Теперь текст не сможет прочесть никто, кроме B (даже сам A), поскольку для дешифрования нужен закрытый ключ.

Схему шифрования можно записать в следующем виде:

M' = E(M, Kоткр)

M = D(M', Kзакр),

где Е — функция шифрования (encrypt), D — функция дешифрования (decrypt), а Kоткр и Kзакр — соответственно открытый и закрытый ключи получателя сообщения.

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

  1. Процесс генерации пары ключей (открытый и закрытый) не должен представлять вычислительных трудностей.
  2. Процесс зашифрования текста, т.е. вычисления E(M, Kоткр), а также процесс дешифрования, т.е. вычисления D(M', Kзакр) также не должны представлять вычислительных трудностей.
  3. Для противника должно быть невозможно (с точки зрения вычислительных возможностей) вычисление закрытого ключа Kзакр по имеющемуся открытому ключу Kоткр.
  4. Для противника должно быть невозможно (с точки зрения вычислительных возможностей) вычисление открытого текста M по имеющемуся зашифрованному тексту M' и открытому ключу Kоткр.

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

5.2. Алгоритм RSA

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

Рассмотрим этот алгоритм подробно.

Для генерации ключей выбираются два больших случайных простых числа p и q и вычисляется их произведение n = pq. Затем вычисляется функция Эйлера:

Далее выбирается целое число e, такое что и e взаимно просто с . Находится число d такое, что . Это может быть сделано, например, при помощи расширенного алгоритма Евклида.

Открытым ключом является пара чисел (n, e), а закрытым ключом — пара (n, d).

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

RSA предназначен для шифрования двоичных текстов. Открытый текст разбивается на блоки и каждый блок рассматривается как двоичное число M. При этом должно соблюдаться ограничение M < n, исходя из этого условия выбираются длина блока и минимально возможные значения p и q.

Для того, чтобы зашифровать сообщение, вычисляется

M' = Me mod n

Для дешифрования необходимо вычислить

M= M'd mod n

Убедимся в корректности алгоритма.

Т.к. , то для некоторого целого k. Отсюда:

По теореме Эйлера . Т.о.:

Получили M'd mod n = M, что и требовалось доказать.

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

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

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

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

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

Для целей конфиденциальности текст шифруется открытым ключом получателя.

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

Эта идея нашла свое воплощение в концепции электронной цифровой подписи.

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

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

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

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

  1. Односторонность. Для любого хэша h должно быть практически невозможно вычислить или подобрать такое x, что H(x) = h.
  2. Стойкость к коллизиям первого рода. Для любого сообщения x должно быть практически невозможно вычислить или подобрать другое сообщение y, такое что H(x) = H(y).
  3. Стойкость к коллизиям второго рода. Должно быть практически невозможно вычислить или подобрать любую пару различных сообщений x и y для которых H(x) = H(y).

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

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

  1. Для сообщения M вычисляется хэш H(M).
  2. Хэш шифруется с помощью закрытого ключа отправителя, т.е. вычисляется E(H(M), Kзакр), где E — функция шифрования асимметричного алгоритма.
  3. Полученное значение берется в качестве электронной цифровой подписи для сообщения M. Сообщение пересылается получателю вместе с ЭЦП (при этом ЭЦП обычно пересылается отдельным файлом, хотя может и припысываться к сообщению). Если необходимо обеспечить как аутентичность, так и конфиденциальность, сообщение M предварительно зашифровывается открытым ключом получателя.

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

  1. Полученная электронная цифровая подпись h расшифровывается открытым ключом предполагаемого отправителя сообщения, т.е. вычисляется D(h, Kоткр).
  2. Вычисляется хэш полученного сообщения H(M).
  3. Если D(h, Kоткр) = H(M), то сообщение подлинно. В противном случае оно признается неаутентичным (возможно, оно было изменено при пересылке, либо создано другим лицом).

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

,

то есть практически ничтожна.

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

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

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

В федеральном законе «Об электронной цифровой подписи» устанавливаются правовой статус удостоверяющих центров (УЦ) и их функции. В частности, удостоверяющий центр выдает так называемые сертификаты ключа подписи, содержащие следующие сведения (ст. 6):

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

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

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

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

5.4. Российский стандарт электронной цифровой подписи ГОСТ Р 34.10—2001

Отечественный стандарт ГОСТ Р 34.10—2001 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи» определяет схему электронной цифровой подписи, процессы формирования и проверки цифровой подписи под заданным сообщением (документом), передаваемым по незащищенным телекоммуникационным каналам общего пользования в системах обработки информации различного назначения.

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

Пусть задано простое число p > 3. Тогда эллиптической кривой E, определенной над конечным простым полем Fp, называется множество пар чисел, удовлетворяющих тождеству:

y2 = x3 + ax + b (mod p),

где a, b < p и 4a3 + 27b2 не делится на p.

Суммой двух точек эллиптической кривой Q1 и Q2 с координатами (x1, y1) и (x2, y2) назовем точку Q3, координаты которой определяются сравнениями:

в случае, если , и сравнениями:

в противном случае.

Если выполнено условие x1 = x2, y1= -y2, то сумма точек Q1 и Q2 называется нулевой точкой O (без уточнения ее координат).

В алгоритме используются следующие параметры:

  • простое число p — модуль эллиптической кривой, удовлетворяющее неравенству p > 2255;
  • E — эллиптическая кривая, задаваемая коэффициентами a и b;
  • m — целое число; порядок группы точек эллиптической кривой E; .
  • q — простое число; порядок циклической подгруппы группы точек эллиптической кривой E, для которого выполнены следующие условия:

  • точка эллиптической кривой E, с координатами (xp, yp), .
  • Ключ подписи — целое d; 0 < d < q.
  • Ключ проверки — точка эллиптической кривой Q с координатами (xq, yq), удовлетворяющая равенству dP = Q.

Для формирования электронной цифровой подписи сообщения M применяется следующая последовательность шагов:

  1. Вычисляется хэш-код сообщения M: = h(M). Здесь h — функция хэширования, описанная в отечественном стандарте ГОСТ Р 34.11—94.
  2. Вычисляется целое число a, двоичным представлением которого является вектор , и определяется число е = a (mod q).
  3. Генерируется случайное целое число k, удовлетворяющее неравенству: 0 < k < q.
  4. Вычисляется точка эллиптической кривой С = kP и определяется r = xC (mod q), где xC — x-координата точки C. Если r = 0, возвращение к шагу 3.
  5. Вычисляется значение s = (rd + ke) (mod q). Если s = 0, возвращение к шагу 3.
  6. Вычисляются двоичные векторы, соответствующие r и s. Цифровая подпись будет представлять собой конкатенацию двух двоичных векторов.

Для проверки электронной цифровой подписи сообщения M применяется следующая последовательность шагов:

  1. По полученной подписи вычисляются r и s. Если не соблюдаются условия 0 < r < q, 0 < s < q, подпись неверна.
  2. Вычисляется хэш-код полученного сообщения M: = h(M).
  3. Вычисляется целое число a, двоичным представлением которого является вектор , и определяется число е = a (mod q). Если e = 0, берется e = 1.
  4. Вычисляется значение v = e-1 (mod q).
  5. Вычисляются значения z1 = sv (mod q), z2 = -rv (mod q).
  6. Вычисляется точка эллиптической кривой С = z1P + z2Q и определяется R = xC (mod q).
  7. Если выполнено равенство R = r, подпись принимается; в противном случае подпись неверна.

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

5.5. Российский стандарт хэширования ГОСТ Р 34.11—94

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

Коротко алгоритм хэширования можно представить следующим образом:

  1. Инициализируется так называемый регистр хэш-значения.
  2. Сообщение дополняется в конце нулями таким образом, чтобы его длина стала кратной 256.
  3. Сообщение разбивается на 256-битные блоки. На основе очередного блока вычисляется ключ шифрования. С использованием этого ключа содержимое регистра хэш-значения шифруется по алгоритму ГОСТ 28147—89. Результат подвергается функции перемешивания и помещается в регистр.
  4. Результат, полученный в регистре после обработки последнего блока сообщения, и будет искомым хэш-значением.

назад | оглавление | вперед