Как иначе называется симметричное шифрование
Перейти к содержимому

Как иначе называется симметричное шифрование

  • автор:

Как иначе называется симметричное шифрование

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

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

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

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

Угрозы

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

  • нарушение конфиденциальности информации, т.е. несанкционированное ознакомление с ней;
  • нарушение целостности информации, т.е. ее несанкционированная модификация.

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

  • шифрование информации для обеспечения ее конфиденциальности;
  • применение электронной цифровой подписи (ЭЦП) для обеспечения ее целостности.

Шифрование

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

С = E k1 (M)

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

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

M’ = D k2 (C)

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

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

  • симметричное шифрование;
  • асимметричное шифрование.

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

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

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

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

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

K ij = K ji

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

Каждая 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. Подготовительный этап:
  • Абонент i генерирует пару ключей: секретный ключ K si и открытый ключ K pi .
  • Открытый ключ K pi рассылается остальным абонентам (или делается доступным, например, на разделяемом ресурсе).
  1. Использование – обмен информацией между абонентами j и i:
  • Абонент j зашифровывает сообщение с помощью открытого ключа абонента iK pi .
  • Абонент i расшифровывает сообщение с помощью своего секретного ключа K si . Никто другой (в том числе, абонент j) не может расшифровать данное сообщение, так как не имеет секретного ключа абонента i.

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

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

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

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

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

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

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

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

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

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

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

  • Проблема распространения ключей симметричного алгоритма устраняется тем, что ключ K simm , на котором шифруются собственно сообщения, передается по открытым каналам связи в зашифрованном виде; для зашифрования ключа K simm используется асимметричный алгоритм.
  • Проблемы медленной скорости асимметричного шифрования в данном случае практически не возникает, поскольку асимметричным алгоритмом шифруется только короткий ключ K simm , а все данные шифруются быстрым симметричным алгоритмом.

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

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

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

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

  1. Подготовительный этап:
  • Абонент i генерирует пару ключей: секретный ключ K si и открытый ключ K pi . Открытый ключ вычисляется из парного ему секретного ключа.
  • Открытый ключ K pi рассылается остальным абонентам (или делается доступным, например, на разделяемом ресурсе).
  1. Использование:
  • Абонент i подписывает сообщение с помощью своего секретного ключа K si .
  • Остальные абоненты могут проверить подпись сообщения с помощью открытого ключа абонента i K pi .

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

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

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

  • прочитать из файла, в котором содержится K pi , идентификационную информацию об абоненте i;
  • сгенерировать собственную пару ключей K sn и K pn , записав в них идентификационную информацию абонента i;
  • подменить хранящийся у абонента j ключ K pi своим ключом K pn , но содержащим идентификационную информацию абонента i.

После этого злоумышленник n может посылать документы абоненту j, подписанные своим ключом K sn . При проверке подписи этих документов абонент 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 открытый ключ K p вычисляется из секретного ключа K s следующим образом:

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

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

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

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

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

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

  1. Подготовительный этап: распределение ключей ЭЦП.
  2. Использование: обмен информацией между абонентами i и j:
  • Абонент i подписывает сообщение с помощью своего секретного ключа K si по алгоритму ГОСТ Р 34.10-94.
  • Абонент i вычисляет ключ парной связи K по алгоритму Диффи-Хеллмана из своего секретного ключа K si и открытого ключа абонента jK pj .
  • Абонент i зашифровывает сообщение на полученном ключе парной связи K по алгоритму ГОСТ 28147-89 (см. рис. 6).
  • Абонент j по получении сообщения вычисляет ключ парной связи K по алгоритму Диффи-Хеллмана из своего секретного ключа K sj и открытого ключа абонента iK pi .
  • Абонент j расшифровывает сообщение на ключе K.
  • Абонент j проверяет подпись расшифрованного сообщения с помощью открытого ключа абонента iK pi .

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

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

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

  1. Подготовительный этап: генерация, сертификация и распределение ключей ЭЦП:
  • АБ генерирует пары ключей абонентов i и j: K si и K pi , K sj и K pj .
  • АБ генерирует пару ключей для сертификации открытых ключей: K scert и K pcert .
  • АБ подписывает открытые ключи K pi и K pj секретным ключом K scert .
  • АБ распределяет ключи следующим образом:

абонент i получает ключи K si , K pj , K pcert ;
абонент j получает ключи K sj , K pi , K pcert .

  1. Использование: обмен информацией между абонентами i и j:
  • Абонент i подписывает сообщение своим секретным ключом K si .
  • Абонент j проверяет подпись сообщения с помощью открытого ключа абонента iK pi .
  • Абонент j проверяет подпись открытого ключа абонента iK pi с помощью открытого ключа K pcert .

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

  • верна ЭЦП самого документа;
  • верна сертифицирующая ЭЦП открытого ключа, с помощью которого проверялась ЭЦП документа.

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

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

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

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

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

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

  • Номер версии стандарта, которой соответствует ключ. На данный момент существует 3 версии стандарта.
  • Серийный номер ключа. Уникальный номер, присваиваемый конкретному ключу.
  • Код алгоритма ЭЦП, в котором используется конкретный ключ.
  • Наименование центра генерации ключей, выпустившего данный ключ.
  • Срок действия ключа. Указывается диапазон, т.е. дата начала и дата окончания.
  • Имя абонента, которому принадлежит ключ.
  • Сертифицирующая подпись данного открытого ключа, поставленная центром сертификации ключей.

Версия 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.

НАУКА и ОБРАЗОВАНИЕ

Файл статьи: 1О©╫О©╫О. ©╫_P.pdf (440.29Кб)

автор: Гончаров Н. О.

МГТУ им. Н.Э. Баумана

Введение

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

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

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

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

Методов шифрования было придумано множество – от шифров простой замены (наиболее известный пример – «Пляшущие человечки» Конан Дойля) до принципиально невскрываемого шифра Вернама (двоичное сложение исходного текста с однократно используемой случайной последовательностью).

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

Самыми известными блочными шифрами являются отечественный шифр, определённый стандартом ГОСТ 28147-89 и американский стандарт DES ( D ata Encryption Standard) , у которых длина блока n равна 64 и 256 соответственно.

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

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

В процессе выполнения работы выполнен анализ известных данных о методах симметричного шифрования. Рассмотрен метод классического шифрования Шеннона [1], блочные шифры — американский шифр DES [2] и отечественный шифр, определённый стандартом ГОСТ 28147-89, IDEA ( International Data Encryption Algorithm ), CAST , Шифр Skipjack , RC 2 и RC 4 и др. [3]

Кроме того, выполнена опытно-экспериментальная работа по разработке программного обеспечения по реализации алгоритма шифрования, основанного на гаммировании. Используя при этом язык объектно-ориентированного программирования Visual Basic [4].

1. Симметричное шифрование (гаммирование)

Симметричное шифрование — это метод шифрования, при котором для защиты информации используется ключ, зная который любой может расшифровать или зашифровать данные [2].

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

Гаммированием (gamma xoring) называется процесс «наложения» гамма-последовательности на открытые данные. Обычно это суммирование по какому-либо модулю, например, по модулю два, такое суммирование принимает вид обычного «исключающего ИЛИ» суммирования.

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

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

Описание: C:\Users\Николай\Desktop\статьи\1.jpg

Рисунок 1. Схема распределения ключей при симметричном шифровании

2. Схемы и принципы симметричного шифрования

В общедоступной литературе математические задачи криптографии на современном уровне впервые были рассмотрены К. Шенноном в работе [1], хотя по некоторым данным в России аналогичные результаты были известны и раньше. В этой работе К. Шеннон с помощью предложенного им теоретико-информационного подхода решил некоторые из важнейших проблем теоретико-информационной криптографии. В частности, им показано, что абсолютной надежностью могут обладать только те шифры, у которых объем ключа не меньше объема шифруемой информации, а также приведены примеры таких шифров. Там же были предложены и принципы построения криптографически надежных преобразований с помощью композиции некоторых разнородных отображений и т. п.

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

Прежде всего, Шеннон сделал вывод, что во всех, даже очень сложных шифрах, в качестве типичных компонентов можно выделить шифры замены и перестановки.

Математическое описание шифра замены выглядит следующим образом. Пусть Х и Y — два текста (открытый и шифрованный соответственно), Х взаимно однозначно отображается в текст Y. Действие шифра замены можно представить как преобразование открытого текста X = (x1,x2,…xn) в шифрованныйтекст Y = g ( X )=g (x1,x2,…,x n ).

Математическое описание шифра перестановки выглядит следующим образом. Пусть длина отрезков, на которые разбивается открытый текст, равна m , а S — взаимно однозначное отображение X = (x1,x2,…x m ) в себя. Шифр перестановки преобразует отрезок открытого текста x1,x2,…x m в отрезок шифрованного текста S (x1,x2,…,x m ) (рисунок 2).

Описание: C:\Users\Николай\Desktop\статьи\2.jpg

Рисунок 2. Общая схема шифрования

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

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

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

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

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

3. Классическое шифрование

Шифр DES работает следующим образом [2]. Данные представляются в цифровом виде и разбиваются на блоки длинной 64 бита, затем поблочно шифруются. Блок разбивается на левую и правую части. На первом этапе шифрования вместо левой части блока записывается правая, а вместо правой — сумма по модулю два левой и правой частей. На втором этапе по определенной схеме выполняются побитовые замены и перестановки. Ключ DES имеет длину 64 бита, из которых 56 битов — случайные, а 8 — служебные, используемые для контроля ключа.

IDEA [5] — блочный шифр с длиной ключа 128 бит. Этот европейский стандарт предложен в 1990 году. Шифр IDEA по скорости и стойкости к анализу не уступает шифру DES.

CAST [5] — это блочный шифр, использующий 128-битовый ключ в США и 40-битный — в экспортном варианте. CAST используется компанией Northern Telecom (Nortel).

Шифр Skipjack [5], разработанный Агентством национальной безопасности США (National Security Agency — NSA), использует 80-битовые ключи.

Шифры RC2 и RC4 [5] разработаны Роном Рейвестом — одним из основателей компании RSA Data Security, и запатентованы этой компанией. Они используют ключи разной длины, а в экспортируемых продуктах заменяют DES. Шифр RC2 — блочный, с длиной блока 64 бита; шифр RC4 — поточный. По замыслу разработчиков, производительность RC2 и RC4 должна быть не меньше, чем у алгоритма DES.

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

В 1976 году была опубликована работа молодых американских математиков У. Дифффи и М.Э. Хеллмана «Новые направления в криптографии» [6]. В данной работе центральными являются два определения: односторонняя функция и функция с секретом.

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

Функцией с секретом называется функция F k зависящая от параметра k и обладающая следующими свойствами: существует полиномиальный алгоритм вычисления значения F k (Х) для любых k и Х; не существует полиномиального алгоритма инвертирования F k при неизвестном k ; существует полиномиальный алгоритм инвертирования F k при известном k .

Шифрование при помощи функции с секретом получило также название асимметричного шифрования.

На рисунке 3 представлена блок-схема алгоритма шифрования, основанного на гаммировании.

Рисунок 3. Блок-схема алгоритма

На рисунке 4 представлена блок-схема полного алгоритма шифрования, основанного на гаммировании.

Заключение

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

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

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

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

Всем системам открытого шифрования присущи следующие основные недостатки: ключ должен передаваться по секретному каналу; к службе генерации ключей предъявляются повышенные требования, обусловленные тем, что для n абонентов при схеме взаимодействия «каждый с каждым» требуется n*(n-1)/2 ключей, то есть зависимость числа ключей от числа абонентов является квадратичной. Основным недостатком симметричного шифрования является то, что секретный ключ должен быть известен и отправителю, и получателю.

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

В перспективах возможно: Осуществить передачу ключей на основе квантовой криптографии; разработать методы и их программно-аппаратную реализацию по увеличению длины псевдослучайной последовательности.

Литература:

1. Шеннон К. Э. Работы по теории информации и кибернетике, М.: ИЛ, 1963. 832 с.

2. A . B . Аграновский, Р.А. Хади. Практическая криптография (серия «Аспекты защиты»), М.: Солон-Пресс, 2002. 254 с.

3. Т.Л. Партыка, И.И. Попов. Информационная безопасность. М.: Форум-Инфра, 2007. 368 с.

4. С.В. Глушаков А.С.Сурядный. Программирование на Visual Basic 6. Х.: Фалио, 2004. 497с.

5. Брюс Шнайер. Прикладная криптография, 2е изд, изд.Триумф,2002. 816 с.

6. У.Диффи и М.Э.Хеллман. Новые направления в криптографии,1976 . 654 с.

  • IBM Lotus Domino Enterprise Server and Notes v.7.0.2. получил сертификат соответствия ФСТЭК России
  • Обзор моделей и программ мониторинга безопасного поведения пользователей
  • 77-30569/340943 О периоде обобщённых клеточных автоматов

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

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

Принцип работы симметричных алгоритмов

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

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

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

Поэтому современные симметричные алгоритмы считаются надежными, если отвечают следующим требованиям:

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

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

Виды алгоритмов симметричного шифрования

В зависимости от принципа работы алгоритмы симметричного шифрования делятся на два типа:

Блочные алгоритмы шифруют данные блоками фиксированной длины (64, 128 или другое количество бит в зависимости от алгоритма). Если все сообщение или его финальная часть меньше размера блока, система дополняет его предусмотренными алгоритмом символами, которые так и называются дополнением.

К актуальным блочным алгоритмам относятся:

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

Потоковое шифрование в настоящее время используют следующие алгоритмы:

Достоинства и недостатки симметричного шифрования

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

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

Область применения симметричного шифрования

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

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

Публикации на схожие темы

  • Правильное хранение паролей — основа безопасности
  • Как выглядит будущее без паролей?
  • Сквозное шифрование: что это и зачем оно нужно вам
  • Luna и Black Basta — новые шифровальщики для Windows, Linux и ESXi
  • ToddyCat: неизвестная APT-группа, нацеленная на организации Европы и Азии
  • ISaPWN – исследование безопасности ISaGRAF Runtime

Руководство по выживанию — шифрование, аутентификация

Это руководство по выживанию охватывает такие ошеломительные темы как криптография, шифрование, авторизация и аутентификация. Для тех, кто сомневается в своей математической подготовке (и даже для тех, кто не сомневается) хочется отметить, что используемая в криптографии математика может ужаснуть кого угодно, и в этом руководстве она либо вообще не рассматривается, либо рассматривается поверхностно. Данное руководство сконцентрировано на функциональности системы и состоит исключительно из описаний и разъяснений, а не из конкретных команд или реализаций. Большинство из рассматриваемых здесь вопросов служат основой для материалов статьи «SSL/TLS и сертификаты X.509», где есть такие описания реализаций и команды, которые способны надолго вывести кого угодно из состояния душевного равновесия.

Содержание:
  • Терминология
  • Общий обзор криптографии
  • Симметричное шифрование
  • Асимметричное шифрование
  • Отпечатки и хэши
  • Аутентификационный код сообщения (MAC)
  • Цифровые подписи

Терминология

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

Аутентификация (Authentication) Процесс или процедуры, используемые для проверки того, что данные или информация, заявленные как поступившие из какого-то источника, могли поступить только из этого источника. Методы, используемые для аутентификации, включают цифровые подписи , MAC и даже добрые старые пароли. Как правило, после аутентификации Вам ещё нужно быть авторизованным для доступа к ресурсам или информации.
Авторизация (Authorization) После того, как пользователи прошли аутентификацию, они, как правило, авторизованы (на основании их учётных данных для входа или свойств учетной записи) на получение или запрет доступа к определённым системным ресурсам, таким как файлы, приложения или сетевые ресурсы. Термин привилегия иногда используется как синоним авторизации. Так, пользователь может иметь достаточно привилегий для доступа к ресурсу X, но не к ресурсу Y, или, иными словами, они авторизованы на доступ к X, но не авторизованы на доступ к Y.
Битовая сложность, битовая стойкость (Bit Strength) Определяется в битах и является мерой объема работ, которые необходимо выполнить для взлома криптографического алгоритма. Битовая сложность предоставляет метод, с помощью которого можно измерить относительную стойкость одного алгоритма шифрования к другому. В зависимости от алгоритма, размер ключа и битовая сложность могут совпадать или не совпадать. В разделе 5.6.1 части первой публикации NIST SP 800-57 битовая сложность определяется в умопомрачительных подробностях. Согласно текущих рекомендаций NIST (на 2010-2030 годы), минимальная битовая сложность алгоритма шифрования должна составлять не менее 112 бит.
Шифр, шифрование (Cipher) Шифр иначе называется алгоритмом шифрования. В английском языке под этим термином также иногда понимается процесс шифрования.
Открытый текст (Clear Text или Plain Text) Блок данных, к которому не применялся процесс шифрования, либо блок данных, полученный в результате операции расшифрования или дешифрования.
Удостоверяющие данные (Credentials) Причудливое название того, что большинство из нас назвало бы паролем (хотя они могут принимать и иные формы, такие как аппаратный токен или биометрические данные). Ваши удостоверяющие данные являются одним из способов доказать, что Вы именно тот, за кого себя выдаёте. Так как Вы должны быть единственным человеком (или, в некоторых случаях, группой лиц) кто знает или имеет доступ к Вашим удостоверяющим данным, то когда Вы предоставляете их в системе или в сети это доказывает, что Вы именно тот, за кого себя выдаёте. После выполнения неких форм обмена данными, которые будут включать в себя предоставление Ваших удостоверяющих данных (например, набор пароля) Вы становитесь аутентифицированы. Как правило, после аутентификации Вам ещё нужно быть авторизованным для доступа к ресурсам или информации.
Расшифрование (Decipher) Применение алгоритма дешифрования к зашифрованному блоку или тексту с предоставлением соответствующих ключей, в результате чего он превращается в открытый текст. Многие (но не все) шифры используют один и тот же алгоритм для шифрования и дешифрования.
Шифрование (Encryption) Процесс преобразования данных с использованием шифра (или алгоритма шифрования). Используемые методы могут быть симметричными или асимметричными.
Хэш (Hash) Он же — отпечаток (digest или fingerprint), или односторонний хэш (one-way hash). Алгоритм для уменьшения бесконечно большого блока данных до уникальной строки октетов значительно меньшего и фиксированного размера, например, 128 или 256 бит (16 или 32 байт). Хэши используются для обеспечения целостности сообщений, а также в MAC или цифровых подписях. Термин fingerprint (дословно отпечаток пальца) иногда используется в том смысле, что отпечаток пальца в определённых случаях может заменить всего человека, то есть хэш становится тем отпечатком, который может храниться и передаваться независимо от сообщения или данных, но всегда может быть использован для проверки целостности этого сообщения или данных.
Размер ключа (Key Size) Иначе называется длиной ключа. Количество бит, используемых для ключа алгоритма шифрования. В общем случае, чем больше бит, тем более стойким является алгоритм. Многие алгоритмы могут принимать ключи переменного размера, что позволяет им время от времени постепенно увеличивать свою стойкость. Длина (размер) ключа могут не совпадать с битовой сложностью алгоритма, их не следует путать. Так, в RSA длина (размер) ключа — 2048 бит, а битовая сложность — 112 бит.

Общий обзор криптографии

Согласно словарю Уэбстера криптография — это «шифрование и дешифрование сообщений с помощью секретного кода или шифра; также: компьютеризированное кодирование и декодирование информации».

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

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

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

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

Если злоумышленники получили секретный ключ или ключи (путём воровства, подбора, удачи или иных мелкопакостных средств), они конечно же не станут трубить об этом на весь мир, чтобы пользователь сразу же поменял ключ (ключи). Вместо этого они продолжат тихо и спокойно прослушивать якобы безопасные коммуникации. Это, конечно же, является серьёзной проблемой и обычно решается некоей комбинацией содержания ключей в среде «доказанного вмешательства (tamper-proof)» (которая уничтожит ключи при попытке компрометации) или «оповещения о вмешательстве (tamper-aware)» (она же HSM, которая предупредит пользователя, если ключ скомпрометирован), либо путём регулярной смены ключей, — так называемым обслуживанием ключей, — которая просто минимизирует потенциальные риски.

Замечание по эксплуатации криптосистем: Многие криптографические алгоритмы существуют и остаются неизменными на протяжении многих лет (в некоторых случаях больше десятка лет). Было написано много стандартов, предлагающих ряд криптографических алгоритмов, но, как правило, обязательным из них являлся только один, а остальные нужны лишь для поддержания некоторой формы «общего знаменателя». Однако, поскольку скорости вычислений возрастают, а криптоатаки учащаются (иногда от источников, никогда не вызывавших опасений), всё большее значение приобретает необходимость менять либо алгоритмы, либо размеры ключей. Этот процесс, на жаргоне называемый алгоритмической гибкостью, может стать серьёзной проблемой в эксплуатации систем, в которых используются «старые» версии алгоритмов или ключей.

Криптография может использоваться для решения трёх задач:

  1. Конфиденциальность: Только стороны, участвующие в коммуникации, могут понять сообщения или данные, посылаемые между этими сторонами.
  2. Аутентификация: Данные могут поступать только из распознанного источника.
  3. Целостность: Данные, полученные одной стороной, являются именно теми данными, которые были отправлены другой стороной; во время передачи они не подвергались манипуляциям или компрометации.

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

Сначала обратимся к основным методам. Современные криптографические методы могут быть симметричными или асимметричными.

Примечание: Один из лучших источников информации по криптографии — публикации Национального Института стандартов и технологий США (NIST). В частности, в первой части SP800-57 (на текущий момент ревизия 3, 2012 год) обсуждается управление ключами и приводится превосходный и тщательный анализ как методов криптографии, так и угроз. Кроме того, там даны (в таблицах 2 и 4) практические рекомендации по размерам ключей для различных алгоритмов. Заинтересованным читателям мы настоятельно рекомендуем хорошенько изучить этот достойный, хотя и большой, документ, как основательное и весьма практичное посвящение в тайные знания криптографии. На этой странице мы ссылаемся также на ряд других документов NIST SP.

Симметричная криптография

Симметричные алгоритмы шифрования, называемые также системами с одним ключом (single-key), с общим секретом (shared-secret), или даже системами с закрытым ключом (private-key), используют единственный ключ (или набор ключей) для шифрования и дешифрования данных. Единственный ключ (общий секрет) должен быть безопасным образом распространён между сторонами, которые будут его использовать, перед началом самих безопасных коммуникаций. У систем с общим секретом существует как минимум два узких места. Во-первых, ключ должен быть распространён безопасным способом с помощью процесса, называемого управлением ключами, который сам по себе нетривиален. Во-вторых, ответственность за безопасность уже распространённого ключа лежит на всех сторонах коммуникации: «Самому себе я доверяю, но могу ли я доверять всем остальным сторонам, что они не допустили огласки ключа?». Если ключ, являющийся общим секретом, скомпрометирован на любой из сторон, то он скомпрометирован для всех использующих его сторон. Симметричные алгоритмы используют значительно меньше вычислительных ресурсов, нежели их асимметричные коллеги. Как правило, они являются единственным приемлемым способом шифрования объемных потоков данных.

Примеры распространённых симметричных алгоритмов шифрования: DES (Data Encryption Standard, он же Data Encryption Algorithm (DEA)), Triple DES (TDES, он же TDEA (Triple DEA)), AES (Advanced Encryption Standard), IDEA (International Data Encryption Algorithm), а также RC4 (Rivest Cipher 4 — по состоянию на 2013 год рассматривается как потенциально подверженный взлому, хотя факты успешных атак ещё не доказаны и не опубликованы), типичные размеры ключей 64, 128, 192 или 256 бит. На рисунке 1 демонстрируется рабочее применение общего секрета в классических конфиденциальных коммуникациях. Примечание: Термин «общий секрет (shared secret)», описывающий единственный ключ (или набор ключей), используемый или разделяемый обеими сторонами коммуникации, не следует путать с «разделением секрета (secret sharing)», описывающим процесс, при котором общий или единственный секретный ключ разбивается на части и распределяется между несколькими лицами, чтобы сделать его более защищённым.

Симметричная криптография

Рисунок 1 — Симметричная криптография

Асимметричная криптография

Асимметричные алгоритмы шифрования используют пару ключей, — открытый и закрытый, — и обычно называются криптографическими системами с открытым ключом или, иногда, несекретным шифрованием (своего рода оксюморон). В таких системах данные (на жаргоне — открытый текст), зашифрованные одним ключом, могут быть расшифрованы только парным ему ключом. Имея один ключ, вычислительно невозможно вывести парный ему ключ. Принцип работы асимметричной криптографии заключается в предоставлении одного ключа, называемого открытым, в широкий доступ, при сохранении другого ключа, называемого (сюрприз!) закрытым, в тайне. У этой технологии есть интересный побочный эффект. Если сообщение было зашифровано закрытым ключом и может быть расшифровано парным ему открытым ключом, то только владелец закрытого ключа мог произвести шифрование. Это свойство используется в цифровых подписях и описано ниже. По сравнению со своими симметричными коллегами, асимметричные алгоритмы потребляют значительное количество вычислительных ресурсов и потому обычно не применяются для шифрования объёмных потоков данных.

Наиболее широкое распространение среди криптосистем с открытым ключом получили RSA (по первым буквам фамилий разработчиков: Rivest, Shamir и Adelman), DSA (Digital Signature Algorithm, алгоритм цифровой подписи) и Криптография на основе эллиптических кривых (Elliptic Curve Cryptography, ECC). Типичные размеры ключа в системах с открытым ключом RSA — 512, 1024, а в последнее время 2048 бит (текущие рекомендации US NIST на период с 2010 по 2030 год), а то и больше, если кому-то доставляет удовольствие чрезмерно перегружать процессор. Размеры ключа в ECC — 112, 224, 256, 384 или 512 бит. Открытый ключ из пары закрытого и открытого ключей может без нарушений безопасности храниться в общедоступных сервисах, таких как DNS, а закрытый ключ должен храниться в надёжном защищённом месте (возможно даже в аппаратных модулях безопасности (Hardware Security Modules, HSMs)). На рисунке 2 демонстрируется использование криптографии с открытым ключом для классических конфиденциальных коммуникаций.

Асимметричная криптография

Рисунок 2 — Асимметричная криптография

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

У систем с открытым ключом есть одно существенное ограничение. Они полагаются на знание или доверие тому, что открытый ключ, который будет использоваться в коммуникациях с человеком и организацией, действительно является открытым ключом человека и организации и не был подменён злонамеренной третьей стороной. Обычно это достигается двумя основными методами: инфраструктурой открытых ключей (Public Key Infrastructure, PKI), или, в более общем случае, использованием доверенной третьей стороны. Третья сторона безопасно управляет открытыми ключами и подтверждает их подлинность. Если некто запрашивает у третьей стороны (в контексте сертификатов X.509 называемой удостоверяющим центром (Certificate Authority, CA)) открытый ключ объекта X, он доверяет, что ему был предоставлен корректный открытый ключ. Третья сторона, на основании проведенных проверок подлинности (аттестаций, нотариальных заверений и других), достоверно заявляет, что X — это единственный глобально-уникальный объект X. Наиболее распространённый способ информирования о том, что открытые ключи были удостоверены третьей стороной — встраивание их в сертификаты X.509 (или SSL), подписанные цифровой подписью издателя сертификата (обычно удостоверяющего центра).

Отпечатки сообщений (хэши)

Для обеспечения целостности данных сообщение можно просто зашифровать. Чтобы изменить содержащиеся в сообщении данные, злоумышленник должен обладать единственным ключом (в симметричных системах) или закрытым ключом (в асимметричных системах). Однако алгоритмы шифрования/дешифрования используют сложные математические функции и потому потребляют много ресурсов процессора. Шифрование всех сообщений подряд приводит к неприемлемо высокому потреблению ресурсов, и это особенно неприятно, когда конфиденциальность данных не требуется. К счастью, для уменьшения нагрузки можно использовать другие методы. Самый распространённый — нересурсоёмкая процедура, называемая односторонним хэшем, просто хэшем, или чаще отпечатком сообщения (message digest) (в обиходе просто digest). Алгоритм хэшей или отпечатков создаёт уникальный и относительно небольшого фиксированного размера (независимо от исходной длины сообщения) отпечаток (digest), вернуть который в исходное состояние невозможно. Полученные хэши или отпечатки иногда называются отпечатками пальцев, поскольку они уникально описывают исходный открытый текст. Отправляемое сообщение включает сразу и открытый (незашифрованный) текст и отпечаток этого сообщения. Алгоритм хэширования применяется к полученному открытому тексту, и, если результат совпадает с полученным отпечатком сообщения, значит данные не были изменены. В некотором смысле отпечатки сообщений аналогичны по концепции с контрольными суммами, но значительно отличаются от них математическими свойствами.

Самые распространённые формы отпечатков сообщений — MD5 (Message Digest 5) и SHA-1, а в последнее время SHA-224, SHA-256, SHA-384 и SHA-512 (последние четыре — представители семейства алгоритмов SHA-2 (Secure Hash Algorithm 2)). В августе 2015 года NIST представил алгоритм SHA-3. Рисунок 3 демонстрирует использование отпечатков сообщений.

Отпечатки сообщений или односторонние хэши

Рисунок 3 — Отпечатки сообщений

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

Примечание: Таблица 1 документа NIST SP800-107 содержит оценку относительной «силы» каждого алгоритма создания хэшей или отпечатков сообщений.

Аутентификационный код сообщения (Message Authentication Code, MAC)

Для аутентификации и поддержания целостности данных может использоваться так называемый аутентификационный код сообщения (MAC). MAC сочетает в себе отпечаток сообщения и общий (секретный) ключ. Часть, являющаяся ключом, аутентифицирует отправителя, а часть, представляющая собой хэш или отпечаток, обеспечивает целостность данных. Существуют две формы MAC. MAC, основанный на симметричном блочном шифре (таком как TDEA или AES), называется CMAC. MAC, основанный на алгоритме хэширования (создания отпечатка сообщения), называется Hashed MAC (HMAC) и, вероятно, используется наиболее широко.

Самые распространённые формы HMAC — HMAC-MD5, HMAC-SHA-1, а в последнее время HMAC-SHA-224, HMAC-SHA-256 и HMAC-SHA-384. На рисунке 4 показано, как используется MAC. Применяемый в HMAC закрытый ключ может быть сгенерирован различными методами (определёнными в SP 800-107, ревизия 1). На упрощённом уровне этот ключ HMAC может быть рассмотрен как простая «соль», назначение которой — аутентифицировать источник. Примечание: Алгоритм хеширования MD5 и, косвенно, любые использующие его алгоритмы, такие как HMAC-MD5, получили в большинстве документов IETF статус «нерекомендуемые» в связи с некоторыми теоретическими уязвимостями, опубликованными в начале 2005 года. Тем не менее, наличие этих недостатков не говорит о том, что использовать данные алгоритмы нельзя. Скорее это значит, что, как только появится возможность, следует перейти на более безопасные HMAC (семейство HMAC-SHA-2). К сожалению, во многих старых системах единственным поддерживаемым алгоритмом HMAC может быть HMAC-MD5.

Message Authentication Code (MAC)

Рисунок 4 — Аутентификационный код сообщения (MAC)

Секретный ключ (2) распространяется с помощью некой процедуры распространения ключей (3) до начала взаимодействия. Открытый текст (1) обрабатывается алгоритмом хеширования (4) для создания отпечатка отправляемого сообщения (5), который затем шифруется (8) с использованием выбранного алгоритма и ключа (2). Затем сообщение и его зашифрованный отпечаток отправляется получателю по незашифрованному каналу передачи (6). Получатель берёт открытый текст (1) и пропускает его через тот же алгоритм хэширования (4) для создания отпечатка полученного сообщения (7). Принятый зашифрованный отпечаток отправляемого сообщения (5) расшифровывается (9) с использованием выбранного алгоритма и ключа (2), и полученный в результате отпечаток отправляемого сообщения (в открытом виде) сравнивается с отпечатком полученного сообщения (7). Совпало — все в шоколаде, не совпало — сами знаете в чём.

На рисунке 4 показано шифрование только отпечатка или хэша. В результате мы получаем гарантию целостности сообщения. Если требуется также обеспечение конфиденциальности сообщения, то можно зашифровать его целиком (сразу и открытый текст, и хэш, или отпечаток). Протокол TLS (SSL) обеспечивает эту (последнюю) возможность в фазе записи данных.

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

Цифровые подписи

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

Наиболее распространённые алгоритмы цифровых подписей — RSA-MD5, RSA-SHA-1, RSA-SHA-256, RSA-SHA-384, DSA (Digital Signature Architecture, стандарт правительства США, определён в FIPS-186, ревизия 4) и ECDSA (Elliptic Curve Digital Signature Algorithm, определён в FIPS-186, ревизия 4). Типичные размеры ключа для систем цифровых подписей RSA и DSA — 768, 1024, а в последнее время 2048 бит (текущие рекомендации US NIST на период с 2010 по 2030 год), а то и больше. Размеры ключа цифровых подписей ECDSA для аналогичного уровня обеспечения безопасности значительно меньше и обычно составляют 112, 128, 192 или 256 бит. На рисунке 5 показано, как используется цифровая подпись. Примечание: Алгоритм хеширования MD5 и, косвенно, любые использующие его алгоритмы, такие как RSA-MD5, получили в большинстве документов IETF статус «нерекомендуемые» в связи с некоторыми теоретическими уязвимостями, опубликованными в начале 2005 года. Тем не менее, наличие этих недостатков не говорит о том, что использовать данные алгоритмы нельзя.

Цифровая подпись

Рисунок 5 — Цифровая подпись

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

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

Copyright © 1994-2017 ZyTrax, Inc. Все права защищены. Последнее изменение страницы: 8 декабря 2015 г.
Переведено участниками проекта Pro-LDAP.ru в 2013-2017 г.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *