Криптография, защита компьютерных данных: информация, исследования, аналитика, экспертиза

Rambler's Top100

OZON.ru

Перейти на главную страницу

Карта сайта

Список статей

Криптографические методы защиты информации

© Сергей Панасенко, 2006.

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

 Не претендуя на полноту, опишем основные современные криптографические методы, призванные защитить компьютерную информацию. За более подробной информацией рекомендую обращаться к изданиям [2, 4, 5], ставшими классикой.

 Угрозы

 Существует два основных вида угроз компьютерной информации:

Соответственно угрозам, существует два основных метода противостояния им:

 Шифрование

 Шифрование информации – это процесс преобразования открытой информации (исходный текст) в зашифрованную (зашифрование) и наоборот (расшифрование). Исходный текст передаваемого сообщения (или хранимой информации) M с помощью криптографического преобразования Ek1 зашифровывается с получением в результате шифртекста С:

С = Ek1(M)

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

Обратное преобразование информации выглядит следующим образом:

M’ = Dk2(C)

Функция D является обратной к функции E и производит расшифрование шифртекста. Она также имеет дополнительный параметр в виде ключа k2. Ключ k2 должен однозначно соответствовать ключу k1, в этом случае полученное в результате расшифрования сообщение M’ будет эквивалентно M. При отсутствии верного ключа k2 получить исходное сообщение M’ = M с помощью функции D невозможно.

Алгоритмы шифрования можно разделить на две основные категории:

 Симметричное шифрование

 Схема симметричного шифрования приведена на рис. 1. В алгоритмах симметричного шифрования используется один и тот же ключ шифрования как для зашифрования, так и для расшифрования сообщения. Это означает, что любой, кто имеет доступ к ключу шифрования, может расшифровать сообщение. Алгоритмы симметричного шифрования именно поэтому и называют “алгоритмами с секретным ключом” – ключ шифрования должен быть доступен только тем, кому предназначено сообщение. Таким образом, задача обеспечения конфиденциальности электронных документов сводится к обеспечению конфиденциальности ключа шифрования, что сделать несравнимо проще. Обычно ключ шифрования представляет собой файл или массив данных и хранится на персональном ключевом носителе, например, дискете или смарт-карте; обязательно принятие мер, обеспечивающих недоступность персонального ключевого носителя кому-либо, кроме его владельца.

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

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

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

Матрица ключей представляет собой таблицу, содержащую ключи парной связи абонентов. Каждый элемент таблицы Kij предназначен для связи абонентов i и j и доступен только двум данным абонентам. Соответственно, соблюдается равенство:

Kij = Kji

для всех элементов матрицы ключей.

Каждая i-я строка матрицы представляет собой набор ключей конкретного абонента i для связи с остальными N-1 абонентами. Наборы ключей (сетевые наборы) распределяются между всеми абонентами криптографической сети. Аналогично сказанному выше, сетевые наборы должны распределяться по закрытым каналам связи или “из рук в руки”. За исключением данного недостатка, на мой взгляд, ключевая система “полная матрица” наиболее удобна для организации защищенного обмена данными по сети.

В качестве примеров симметричных алгоритмов шифрования можно привести наиболее известный стандарт шифрования DES (Data Encryption Standard), долгое время являвшийся основным стандартом шифрования в мире, и отечественный стандарт ГОСТ 28147-89. Стандарт DES на настоящий момент не актуален из-за короткого ключа (56 значащих бит), дающего возможность осуществить взлом прямым перебором ключей. Российский стандарт шифрования ГОСТ 28147-89 не имеет данного недостатка, длина его ключа – 256 бит.

На рис. 3 приведена упрощенная схема типичного алгоритма симметричного шифрования. Смысл симметричного шифрования состоит в рассеивании и перемешивании исходных данных [2]. Коротко можно описать алгоритмы ГОСТ 28147-89 и DES следующим образом:

  1. Исходные данные разбиваются на блоки фиксированной длины, может осуществляться начальная перестановка данных в каждом блоке.
  2. Данные преобразуются использованием ключа шифрования (сам ключ шифрования также предварительно преобразовывается).
  3. Преобразование производится определенное число раз (раундов), после каждого преобразования может производиться перестановка данных (для определения параметров перестановки в ГОСТ 28147-89 служит дополнительный ключевой элемент – “узел замены”); в качестве исходного результата для преобразования используется результат предыдущего преобразования и перестановки.
  4. После определенного числа раундов (в DES – 16, в ГОСТ 28147-89 – 32) производится финальная перестановка, полученный после этого результат становится шифртекстом.

Как DES, так и ГОСТ 28147-89, имеют по несколько режимов шифрования с различным назначением, отличающихся, в основном, следующим:

 Асимметричное шифрование

Схема асимметричного шифрования приведена на рис. 4. Принципиальное отличие от симметричного шифрования в том, что для зашифрования информации и ее последующего расшифрования используются различные ключи шифрования:

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

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

  1. Подготовительный этап:
  1. Использование – обмен информацией между абонентами j и i:

Математическая основа асимметричного шифрования состоит в использовании однонаправленных функций с секретом [2, 4]. В качестве такой функции, например, в алгоритме RSA, применяется следующая операция для каждого i-го блока открытого текста:

Алгоритм шифрования RSA

где e – открытый ключ некоего пользователя.

Обратная операция – вычисление Mi из Ci со знанием e является невозможной (т.е. нерешаемой в течение какого-либо реального временного интервала). Однако, владелец секретного ключа d (из которого вычислен открытый ключ e) легко может выполнить следующую операцию:

Алгоритм шифрования RSA

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

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

  1. На настоящий момент нет математического доказательства необратимости используемых в асимметричных алгоритмах функций [4].
  2. По сравнению с симметричным шифрованием, асимметричное существенно медленнее, поскольку при зашифровании и расшифровании используются весьма ресурсоемкие операции (в частности, в RSA это возведение одного большого числа в степень, являющуюся другим большим числом). По этой же причине реализовать аппаратный шифратор с асимметричным алгоритмом существенно сложнее, чем реализовать аппаратно симметричный алгоритм.
  3. Необходимо защищать открытые ключи от подмены.

Последнее стоит рассмотреть особо. Предположим, на компьютере абонента j хранится открытый ключ абонента i Kpi. Злоумышленник n имеет доступ к открытым ключам, хранящимся у абонента j. Он генерирует свою пару ключей Ksn и Kpn и подменяет у абонента j открытый ключ абонента i Kpi на свой открытый ключ Kpn. Для того, чтобы отправить некую информацию абоненту i, абонент j зашифровывает ее на ключе Kpn, думая, что это ключ Kpi. Соответственно, это сообщение не сможет прочитать абонент i, но зато легко расшифрует и прочитает абонент n.

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

Комбинированный метод

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

  1. Абонент j перед передачей сообщения M абоненту i генерирует случайный ключ Ksimm, который будет использован в алгоритме симметричного шифрования для зашифрования конкретного сообщения или цепочки сообщений.
  2. Абонент j зашифровывает асимметричным алгоритмом ключ Ksimm на ключе Kpi и отправляет его абоненту i.
  3. Абонент j зашифровывает симметричным алгоритмом сообщение на ключе Ksimm и отправляет его абоненту i.
  4. Абонент i расшифровывает асимметричным алгоритмом ключ Ksimm с помощью своего секретного ключа Ksi.
  5. Абонент i расшифровывает симметричным алгоритмом сообщение M с помощью полученного ключа Ksimm.

Недостатки алгоритмов компенсируются следующим образом:

В результате получаем быстрое шифрование в сочетании с удобным обменом ключами.

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

Помимо защиты от несанкционированной модификации ЭЦП позволяет также установить авторство подписанного электронного документа. Схема использования ЭЦП приведена на рис. 5.

Процесс использования ЭЦП:

  1. Подготовительный этап:
  1. Использование:

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

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

Аналогично асимметричному шифрованию, необходимо обеспечить невозможность подмены открытого ключа ЭЦП. Если предположить, что злоумышленник n имеет доступ к открытым ключам, которые хранит на своем компьютере абонент j, в том числе, к открытому ключу абонента i Kpi, то он может выполнить следующие действия:

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

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

Сущестувет масса стандартов ЭЦП, в том числе отечественный стандарт ГОСТ Р 34.10-94.

Функции хэширования

Как видно из схемы на рис. 5, в качестве исходного значения для вычисления ЭЦП берется не сам электронный документ, а его хэш. Хэш представляет собой последовательность (большое число) фиксированной длины, однозначно соответствующую исходному тексту. Функции вычисления хэша (хэш-функции) являются однонаправленными, т.е. зная хэш некоего сообщения M, невозможно вычислить другое сообщение M’, отвечающее следующему условию:

h(M’) = h(M)

где h() – хэш-функция.

При этом любое изменение документа влечет за собой изменение его хэша.

Отечественный стандарт хэш-функции – ГОСТ Р 34.11-94. Коротко можно описать алгоритм ГОСТ Р 34.11-94 следующим образом:

  1. Инициализация регистра хэш-значения. Если длина сообщения не превышает 256 бит, переход к шагу 3, иначе – переход к шагу 2.
  2. Итеративное вычисление хэш-значения блоков исходного текста по 256 бит с использованием хранящегося в регистре хэш-значения предыдущего блока. Вычисление включает в себя следующие действия:

Вычисление производится до тех пор, пока длина необработанных входных данных не станет меньше или равной 256 бит. В этом случае – переход к шагу 3.

  1. Дополнение битовыми нулями необработанной части сообщения до 256 бит. Вычисление хэш-значения аналогично шагу 2. В результате в регистре оказывается хэш исходного текста.

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

Комплексный метод защиты

Для одновременной защиты целостности и конфиденциальности данных следует использовать ЭЦП и шифрование в комплексе. Существует алгоритм Диффи-Хеллмана, позволяющий, кроме того, использовать одни и те же ключи для ЭЦП и симметричного шифрования. Суть алгоритма Диффи-Хеллмана – в следующем [5]:

  1. Согласно ГОСТ Р 34.10-94 открытый ключ Kp вычисляется из секретного ключа Ks следующим образом:

Вычисление открытого ключа из секретного

где a и p – константные значения, не являющиеся секретными.

Пусть пользователи i и j генерируют свои пары ключей ЭЦП, т.е. секретные ключи Ksi и Ksj, а также открытые ключи:

Вычисление открытого ключа из секретного

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

Алгоритм Диффи-Хеллмана

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

Таким образом, комплексный метод защиты информации может работать по следующей схеме (в [3] подробно описан реальный комплекс Crypton ArcMail, работающий по такой схеме):

  1. Подготовительный этап: распределение ключей ЭЦП.
  2. Использование: обмен информацией между абонентами i и j:

Проблемы распределения и хранения ключей

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

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

  1. Подготовительный этап: генерация, сертификация и распределение ключей ЭЦП:

абонент i получает ключи Ksi, Kpj, Kpsert;
абонент j получает ключи Ksj, Kpi, Kpsert.

  1. Использование: обмен информацией между абонентами i и j:

При использовании ключей-сертификатов следует предполагать, что ЭЦП какого-либо документа верна только в том случае, когда:

В случае, если ЭЦП открытого ключа неверна, следует считать, что открытый ключ был подменен, а подпись документа – фальсифицирована.

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

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

В статье [3] подробно описано использование ключей-сертификатов, там же приведены рекомендации по централизованной генерации и сертификации ключей и их безопасному распределению.

    X.509 и PKI

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

    Минимальный набор полей формата сертифицированного открытого ключа, в соответствии с версией 1 стандарта X.509, выглядит так [1]:

    Версия 2 стандарта X.509 содержит следующие дополнительные поля:

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

    Следующий шаг на пути стандартизации обмена защищенными сообщениями – определение инфраструктуры открытых ключей (PKI – Public Key Infrastructure). PKI представляет собой набор агентов и правил, предназначенных для управления ключами, политикой безопасности и собственно обменом защищенными сообщениями. Структура PKI приведена на рис. 7. В PKI используются ключи, соответствующие описанному выше стандарту X.509.

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

    Заключение

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

    Литература

    1. RFC 2459. Internet X.509 Public Key Infrastructure, January 1999.
    2. Брассар Ж. “Современная криптология”. Москва, “Полимед”, 1999 г.
    3. Панасенко С. “Защита электронных документов: целостность и конфиденциальность”. “Банки и технологии” № 4/2000, стр. 82-87.
    4. Петров А. А. “Компьютерная безопасность: криптографические методы защиты”. Москва, ДМК, 2000 г.
    5. Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. “Защита информации в современных компьютерных системах”. Москва, “Радио и связь”, 1999 г.

    Рисунки

    1. Симметричное шифрование.
    2. Ключевая система "Полная матрица".
    3. Обобщенная схема алгоритма симметричного шифрования.
    4. Асимметричное шифрование.
    5. Использование ЭЦП.
    6. Комплексный метод.
    7. Структура PKI.