Управление криптографическими ключами для симметричных шифров

 

 

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

- генерация ключей;

- хранение ключей;

- распределение ключей.

- Генерация ключей должна производиться таким образом,чтобыпредугадать значение ключа (даже зная, как он будет генерироваться) было практически невозможно. В идеальном случае, вероятность вы-бора конкретного ключа из множества допустимых равна 1/N, где N – мощность ключевого множества (число его элементов).

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

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

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

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

- главный ключ;

- ключ шифрования ключей;

- ключ шифрования данных (сеансовый ключ).

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

При распределении ключей необходимо выполнить следующие требования:

- обеспечить оперативность и точность распределения ключей;

- обеспечить секретность распределения ключей. Распределение ключей может производиться:

- с использованием одного или нескольких центров распределения ключей (централизованное распределение);

- прямым обменом сеансовыми ключами между пользователями сети (децентрализованное распределение ключей).

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

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

 

Протокол Kerberos

 

Протокол Kerberos был разработан в Массачусетском технологическом институте в середине 1980-х годов и сейчас является фактическим стандартом системы централизованной аутентификации и распределения ключей симметричного шифрования. Поддерживается операционными системами семейства Unix, Windows (начиная с Windows’2000), есть реализации для Mac OS.

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

Серверная часть Kerberos называется центром распределения ключей (англ. «Key Distribution Center», сокр. KDC) и состоит из двух компонент:

- сервер аутентификации (англ. «Authentication Server», сокр.

AS);

- сервер выдачи разрешений (англ. «Ticket Granting Server»,

сокр. TGS).

Пусть клиент C собирается начать взаимодействие с сервером SS (от англ. «Service Server» –сервер,предоставляющий сетевые сер-висы). В несколько упрощенном виде, протокол предполагает следующие шаги [10,11].

1). C->AS: {c}.

Клиент C посылает серверу аутентификации AS свой идентификатор c (идентификатор передается открытым текстом).

2). AS->C: {{TGT}KAS_TGS, KC_TGS}KC,

– основной ключ C;

– ключ, выдаваемый C для доступа к серверу выдачи разрешений TGS;

{TGT} ––билет на доступ к серверу выдачи разрешений(англ. «TicketGranting Ticket»); {TGT}={c,tgs,t1,p1, KC_TGS}, где tgs – идентификатор сервера выдачи разрешений, t1 – отметка времени, p1 – период действия билета. Запись {…}KX здесь и далее означает, что содержимое фигурных скобок зашифровано на ключе KX.

На этом шаге сервер аутентификации AS, проверив, что клиент C имеется в его базе,возвращает ему билет для доступа к серверу выдачи разрешений и ключ для взаимодействия с сервером выдачи разрешений. Вся посылка зашифрована на ключе клиента C. Таким образом, даже если на первом шаге взаимодействия идентификатор с послал не клиент С, а нарушитель X, то полученную от AS посылку X расшифровать не сможет.

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

3). C->TGS: {TGT}KAS_TGS, {Aut1} KC_TGS, {ID},

где {Aut1} – аутентификационный блок – Aut1 = {с,t2}, t2 – метка времени; ID – идентификатор запрашиваемого сервиса (в частности, это может быть идентификатор сервера SS).

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

Сервер выдачи разрешений расшифровывает билет TGT и полу-чает из него информацию о том, кому был выдан билет, когда и на ка-кой срок, ключ шифрования, сгенерированный сервером AS для взаимодействия между клиентом C и сервером TGS. С помощью этого ключа расшифровывается аутентификационный блок. Если метка в блоке совпадает с меткой в билете, это доказывает, что посылку сгенерировал на самом деле С (ведь только он знал ключ KC_TGS и мог правильно зашифровать свой идентификатор). Далее делается проверка времени действия билета и времени оправления посылки 3). Если проверка проходит и действующая в системе политика позволяет клиенту С обращаться к клиенту SS, тогда выполняется шаг 4).

4). TGS->C: {{TGS}KTGS_SS,KC_SS}KC_TGS,

– ключ для взаимодействия C и SS, {TGS} – от англ. «Ticket

Granting Service» – билет для доступа к SS (обратите внимание, что такой же аббревиатурой в описании протокола обозначается и сервер выдачи разрешений). {TGS} ={с,ss,t3,p2, KC_SS }.

Сейчас сервер выдачи разрешений TGS посылает клиенту C ключ шифрования и билет, необходимые для доступа к серверу SS. Структура билета такая же, как на шаге 2): идентификатор того, кому выдали билет; идентификатор того, для кого выдали билет; отметка времени; период действия; ключ шифрования.

5). C->SS: {TGS}KTGS_SS, {Aut2} KC_SS , где Aut2={c,t4}.

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

6). SS->C: {t4+1}KC_SS

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

Если все шаги выполнены правильно и все проверки прошли успешно, то стороны взаимодействия C и SS, во-первых, удостоверились в подлинности друг друга, а во-вторых, получили ключ шифрования для защиты сеанса связи – ключ KC_SS.

Нужно отметить, что в процессе сеанса работы клиент проходит шаги 1) и 2) только один раз. Когда нужно получить билет на доступ к другому серверу (назовем его SS1), клиент С обращается к серверу выдачи разрешений TGS с уже имеющимся у него билетом, т. е. про-токол выполняется начиная с шага 3).

При использовании протокола Kerberos компьютерная сеть логически делится на области действия серверов Kerberos. Kerberos-область –это участок сети,пользователи и серверы которого зарегистрированы в базе данных одного сервера Kerberos (или в одной базе, разделяемой несколькими серверами). Одна область может охватывать сегмент локальной сети, всю локальную сеть или объединять не-сколько связанных локальных сетей. Схема взаимодействия между Kerberos-областями представлена на рисунке 2.10.

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

После установки взаимных соглашений, клиент из области 1 (пусть это будет K11) может установить сеанс взаимодействия с клиентом из области 2 (например, К21). Для этого K11 должен получить у своего сервера выдачи разрешений билет на доступ к Kerberos-серверу, с клиентом которого он хочет установить взаимодействие (на рисунке это сервер KDC2). Полученный билет содержит отметку о том, в какой области зарегистрирован владелец билета. Билет шифруется на ключе, разделенном между серверами KDC1 и KDC2. При успешной расшифровке билета, удаленный Kerberos-сервер может быть уверен, что билет выдан клиенту Kerberos-области, с которой установлены доверительные отношения. Далее протокол работает как обычно.

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

Имеется тип билета «с правом передачи», что позволяет, например, серверу выполнять действия от имени обратившегося к нему клиента.

 

Асимметричные шифры

 

Основные понятия

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

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

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

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

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

Рассмотрим ряд определений.

Односторонней (однонаправленной) функцией называется такаяфункция F: X Y, для которой выполняются следующие условия:

1) для всякого x X легко вычислить значение функции y = F(x), где y Y;

2) для произвольного yYневозможно (чрезвычайно сложно)

найти значение x X, такое что x = F -1(y) (т. е. найти значение функции обратной F).

Односторонней функцией с секретом k,называется такая функция Fk: X Y,для которой выполняются следующие условия:

1) для всякого x X легко вычислить значение функции y = Fk(x), где y Y, даже в том случае, если значение k неизвестно;

2) не существует легкого (эффективного) алгоритма вычисления обратной функции Fk-1(y) без знания секрета k;

3) при известном k вычисление Fk-1(y) для y Y не представляет существенной сложности.

В частности, односторонняя функция с секретом может быть использована для шифрования информации. Пусть M – исходное сообщение. Получатель выбирает одностороннюю функцию с секретом, и тогда любой, кто знает эту функцию, может зашифровать сообщение для данного получателя, вычислив значение криптограммы C = Fk(M).Расшифровать данную криптограмму может только законный получатель, которому известен секрет k.

Первой публикацией в области криптографии с открытым ключом принято считать статью Уитфилда Диффи (Whitfield Diffie) и Мартина Хеллмана (Martin Hellman) «Новые направления в крипто-графии», вышедшую в свет в 1976 году.

В отличие от симметричных, в асимметричных алгоритмах ключи используются парами – открытый ключ (англ. «public key») и секретный или закрытый (англ. «private key»). Схема шифрования будет выглядеть следующим образом.

Получатель B генерирует пару ключей – открытый KB_pub и секретный KB_pr. Процедура генерация ключа должна быть такой, чтобы выполнялись следующие условия:

1) ключевую пару можно было бы легко сгенерировать;

2) сообщение, зашифрованное на открытом ключе, может быть расшифровано только с использованием секретного ключа;

3) зная только открытый ключ, невозможно рассчитать значение секретного.

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

незащищенному каналу связи. Отправитель A, зная сообщение M и открытый ключ, может рассчитать криптограмму C = E(M, KB_pub) и

передать ее получателю B. Получатель, зная секретный ключ, может расшифровать криптограмму M = D(C, KB_pr).

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

Если использовать определение односторонней функции с секретом, то алгоритм шифрования и открытый ключ задают прямое преобразование Fk, алгоритм расшифровывания задает обратное преобразование, а секретный ключ получателя играет роль «секрета» k.

 

Рисунок 2.10 - Асимметричное шифрование

 

Рассмотрим теперь вопрос аутентификации сообщений.

 

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

Функции ЭЦП аналогичны обычной рукописной подписи:

- удостоверить, что подписанный текст исходит от лица, поставившего подпись;

- не дать лицу, подписавшему документ, возможности отказаться от обязательств, связанных с подписанным текстом;

- гарантировать целостность подписанного текста.

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

Обобщенная схема системы ЭЦП представлена на рисунке 2.11.

 

 

 

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

 

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