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

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

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

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

  • целостность и конфиденциальность распределяемых ключей
  • оперативность и точность распределения

При распределении ключей есть 2 подхода:

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

При первом подходе, центру распределения ключей известно какие ключи и кому были пересланы. При втором подходе, нужно удостовериться в подлинности субъектов сети. Задача распределения ключей сводится к созданию , который реализует:

  • подтверждения подлинности участников сеанса
  • подтвержения достоверности сеанса
  • реализация минимального числа передачи сообщений при обмене ключами

Явным примером реализации центров распределения ключами является система Kerberos. Здесь мы рассмотрим второй подход. Для этого используют:

  • асимметричную криптосистему с открытым ключом для защиты секретного ключа симметричной криптосистемы
  • системы открытого распределения ключей Диффи-Хеллмана

Реализация комбинированной криптосистемы управления распределением

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

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

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

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

  • Действия пользователя А:
    • Создает (любым способом) сеансовый секретный ключ K s , который нужен в симметричном шифровании для зашифровывания пакетов
    • Шифрует пакет М симметричным алгоритмом на сеансовом секретном ключе K s
    • Зашифровывает асимметричным алгоритмом секретный сеансовый ключ K s на открытом ключе K B пользователя В
    • Отправляет по открытому каналу пользователю В зашифрованный пакет М вместе с зашифрованным сеансовым ключом K s
  • Действия пользователя В(при получении электроннго цифрового конверта):
    • расшифровать асимметричным алгоритмом сеансовый ключ K s с помощью своего секретного ключа K B
    • Расшифровать симметричным алгоритмом пакет М с помощью расшифрованного ключа K s
    • Действия пользователей показаны на рис.1

Рисунок — 1

При реализации цифрового конверта минусы асимметричного и симметричного алгоритмов компенсируются из-за:

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

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

Таблица 1 — Длины ключей для асимметричных и симметричных систем при одинаковой криптостойкости

Метод распределения ключей Диффи-Хеллмана

У.Диффи и М.Хеллман создали метод открытого распределения ключей в 1976 году. Метод разрешает пользователям обмениваться ключами через незащищенный канал связи. Его безопасность основана на сложности вычисления дискретных логарифмов в конечном поле, в отличии от легкости решения прямой задачи дискретного возведения в степень в этом же поле. Схема работы метода показана на рис.2.

Рисунок — 2

Пользователи А и В при обмене данными генерируют свои случайные секретные ключи K A и K B (ключи — случайные большие целые числа). ЗАтем пользователь А и В вычисляет открытые ключи:

  • J A,B = g K A,B (mod N)

N, g — большие целые простые числа. Эти числа не секретные, и известны всем пользователям системы. Затем пользователи А и В реализуют обмен ключами J по незащищенному каналу и реализуют их для вычисления общего сессионного ключа J:

  • пользователь А: J = (J B) K A (mod N) = (g K B) K A (mod N)
  • пользователь B: J` = (J A) K B (mod N) = (g K A) K B (mod N)
  • J = J`, так как (g K B) K A = (g K A) K B

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

Метод комплексной защиты конфиденциальности и аутентичности передаваемых данных

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

  • пользователь А подписывает пакет М с помощью своего секретного ключа K A , реализуя стандартный алгоритм цифровой подписи
  • пользователь А вычисляет общий секретный ключ K по принципу Диффи-Хеллмана, из своего открытого ключа и открытого ключа пользователя В
  • пользователь А зашифровывает пакет М на общем секретном ключе К, с помощью симметричного шифрования
  • пользователь В получив пакет М, вычисляет общий ключ К и расшифровывает пакет М
  • пользователь В проверяет подпись расшифрованного пакета М с помощью открытого ключа пользователя K A

На основе алгоритма Диффи-Хеллмана работают протоколы управления криптоключами SKIP, IKE.

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

y 2 = x 3 + ax + b,

а также бесконечно удаленная точка. Для точек на кривой довольно легко вводится операция сложения, которая играет ту же роль, что и операция умножения в криптосистемах RSA и Эль-Гамаля.

В реальных криптосистемах на базе эллиптических уравнений используется уравнение

y 2 = x 3 + ax + b mod p,

где р - простое.

Проблема дискретного логарифма на эллиптической кривой состоит в следующем: дана точка G на эллиптической кривой порядка r (количество точек на кривой) и другая точка Y на этой же кривой. Нужно найти единственную точку x такую, что Y = x G, то есть Y есть х -я степень G.

Открытое распределение ключей

Пока преимущества методов шифрования с открытым ключом не были очевидны. Однако на их основе легко решать задачу выработки общего секретного ключа для сеанса связи любой пары пользователей информационной системы. Еще в 1976 году Диффи и Хеллман предложили для этого протокол открытого распределения ключей. Он подразумевает независимое генерирование каждым из пары связывающихся пользователей своего случайного числа, преобразование его посредством некоторой процедуры, обмен преобразованными числами по открытому каналу связи и вычисление общего секретного ключа на основе информации, полученной в процессе связи от партнера. Каждый такой ключ существует только в течение одного сеанса связи или даже части его. Таким образом, открытое распределение ключей позволяет каждой паре пользователей системы самим выработать свой общий секретный ключ, упрощая тем процедуру распределения секретных ключей. Хотя все не так просто - отсутствие у абонентов перед сеансом связи заблаговременно распределенного общего секретного ключа в принципе не дает им возможности удостовериться в подлинности друг друга при помощи обмена сообщениями по открытому каналу. Например, пересылать ключи можно и по описанному выше алгоритму ЭльГамаля в модификации Шамира, но как убедиться в том, что имеешь дело с партнером, а не перехватчиком? Для подтверждения подлинности каждый из участников секретной сети все же должен иметь собственный секретный ключ, известный только ему и отличающий его от всех других абонентов. В этом случае алгоритмом Диффи-Хеллмана будет обеспечена такая процедура предъявления пароля, что его многократное использование не снижает надежности доказательства подлинности владельца. В результате такие две функции общего секретного ключа, обычно доставляемого по секретному каналу, как защита информации в канале связи от третьей стороны и подтверждение подлинности каждого из абонентов партнеру, разделяются.

Алгоритм открытого распределения ключей Диффи-Хеллмана выглядит так:

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

    Абонент A посылает B x mod р , а абонент B посылает A шифровку своего ключа Z"=D**y mod p .

    После этого общий ключ Z они вычисляют как Z=Z"**y =Z""**x .

При помощи специальных приемов время формирования общего ключа в системе Диффи-Хеллмана может быть сокращено в 5 раз по сравнению с системой ЭльГамаля в модификации Шамира, и в 30 раз по сравнению с RSA при том же уровне стойкости. Это, с точки зрения большинства практических приложений, оказывается заметным преимуществом, так как шифрование и расшифровывание по алгоритму RSA примерно в тысячу раз медленнее классических алгоритмов типа DES. Отметим, что для многих применений криптографических систем с открытым ключом время вычислений при криптографических преобразованиях не имеет большого значения. Например, при идентификации пользователей по кредитным карточкам не будет разницы - потребует ли она одну микросекунду или одну секунду. То же относится и к выбору общего ключа шифрования для другой, более быстродействующей, но не обладающей способностью обмена ключами криптографической системы.

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

Из практически действующих сетей связи, использующих систему открытого распределения ключей, наиболее серьезно защищенной является телефонная государственная сеть США на основе аппаратов STU-III. Она начала функционировать в 1987 году и содержит сейчас более 150 тысяч абонентов. В России аналогичная сеть, называемая еще АТС-1 или "вертушкой", тоже надежно защищена, но абонентов там в сотни раз меньше. К началу восьмидесятых годов криптологи пришли к пониманию преимущества так называемых гибридных систем, в которых процедуры шифрования с открытым ключом используются лишь для передачи ключей и цифровой подписи. А информация, которую нужно передать, защищается классическим алгоритмом типа DES, ключ для которого передан с помощью шифрования с открытым ключом. Первым серийным устройством данного типа был Datacryptor фирмы Racal- Milgo, выпущенный в 1979 году. Аппарат управления ключами шифрования Datacryptor предназначен в основном для правительственных сетей связи и аттестован на соответствие английскому стандарту защиты не секретной, но важной информации. В нем предусмотрены сигнализация о нарушениях криптографических требований и извещения об ошибках. В этом аппарате используется алгоритм установления шифрованной связи при помощи выработки и передачи общего секретного ключа по алгоритму RSA. В дальнейшем аппаратов подобного типа для защиты информации было выпущено очень много. Другие примеры использования новых криптографических идей демонстрируют многие коммерческие сети, особенно банковские, такие как SWIFT. Кроме того, система цифровой подписи RSA применяется в аппаратуре проверки соблюдения договора об ограничении ядерных испытаний, разработанной Sandia Laboratories в 1982 году, сети BPMIS и других системах.

Распределение ключей - самый ответственный процесс в управлении ключами. К нему предъявляются два требования:

1.Оперативность и точность распределения

2.Скрытность распределяемых ключей.

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

Распределение ключей между пользователями реализуются двумя разными подходами:

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

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

В этом случае проблема состоит в том, чтобы надежно удостоверить подлинность субъектов.

В обоих случаях должна быть гарантирована подлинность сеанса связи. Это можно обеспечить двумя способами:

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

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

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

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

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

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

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

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

Идея метода достаточно проста. После того, как ключ использован в одном сеансе по некоторому правилу он сменяется другим.

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

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

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

Наиболее доступным является использование полей Галуа. За счет возведения в степень порождающего элемента можно последовательно переходить от одного числа к другому. Эти числа принимаются в качестве ключей.

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

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

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

Протоколы распределения ключей делят на два класса:

    Протоколы транспортировки ключей;

    Протоколы обмена ключами.

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

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

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

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

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

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

Явная аутентификация ключа (explicit key authentication) - свойство, которое выполняется, когда имеют место (неявная) аутентификация ключа и подтверждение ключа одновременно.

    1. Протокол Нидхема-Шрёдера (Needham-Schroeder protocol) на симметричных ключах

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

    Протокол Нидхема-Шрёдера на симметричных ключах;

    Протокол Нидхема-Шрёдера на ассиметричных ключах.

Протокол на симметричных ключах работает следующим образом:

Предварительный этап:

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

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

Для двух сторон, А и В, как указано далее, распределение ключей можно организовать различными способами:

  • 1. Ключ может быть выбран стороной А и физически доставлен стороне В.
  • 2. Ключ может выбрать третья сторона и физически доставить его участникам А и В.
  • 3. Если участники обмена А и В уже используют некоторый общий ключ, одна из сторон может передать новый ключ второй стороне в шифрованном виде, используя старый ключ.
  • 4. Если обе из сторон А и В имеют криптографически защищенные каналы связи с третьей стороной С, то последняя может доставить ключ участникам А и В по этим защищенным каналам.

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

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

Масштаб проблемы зависит от числа контактирующих пар, которые приходится обслуживать. Если сквозное шифрование осуществляется на сетевом уровне или на уровне IP, то потребуется по одному ключу для каждой пары ведущих узлов в сети, обменивающихся данными. Поэтому, если имеется N ведущих узлов, число необходимых ключей будет равно / 2. Если шифрование осуществляется на уровне приложения, то свой ключ потребуется для каждой пары пользователей или процессов, выходящих на связь. При этом сеть может иметь сотни ведущих узлов и тысячи пользователей и процессов. На рис. 6.2 для случая сквозного шифрования показана зависимость сложности задачи распределения ключей от числа пар, участвующих в обмене данными. Например, в сети, насчитывающей 1000 узлов, где шифрование осуществляется на уровне узла, скорее всего придется распределять около полумиллиона ключей. А если в такой сети поддерживается около 10 000 приложений, то при шифровании на уровне приложений может потребоваться распределение около 50 миллионов ключей.

Рис. 6.2.

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

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

Рис. 6.3.

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

Для каждой конечной системы или конечного пользователя создается уникальный главный ключ, который применяется совместно с центром распределения ключей. Конечно, эти главные ключи тоже должны быть каким-то образом распределены. Однако эта проблема по своей сложности значительно проще. Как уже упоминалось, для N объектов, попарно обменивающихся данными, требуется / 2 сеансовых ключей. А главных ключей требуется всего N, по одному на каждый объект. Поэтому главные ключи могут быть распределены некоторым некриптографическим образом, например, физической доставкой адресату.

Распределение ключей можно реализовать разными способами. Типичный сценарий показан на рис. 6.4. Этот сценарий предполагает, что каждый пользователь имеет уникальный главный ключ, используемый совместно с центром распределения ключей (ЦРК).

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

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

Система обмена информацией выглядит следующим образом.

  • 1. Инициатор А посылает запрос в ЦРК на получение сеансового ключа для защиты логического соединения с В. Посылаемое при этом сообщение должно включать информацию, позволяющую однозначно определить А и В, а также некоторый идентификатор N1, уникальный для данного запроса, обычно называемый оказией (попсе- данный случай, данное время (англ.)). Такими идентификаторами могут быть текущее время, некоторый счетчик или случайное число - как минимум, этот идентификатор должен быть уникальным для каждого запроса. Кроме того, чтобы предотвратить возможность фальсификации сообщения противником, последнему- должно быть непросто угадать этот идентификатор. Поэтому хорошим выбором для оказии можно считать случайное число.
  • 2. ЦРК отвечает на запрос сообщением, шифрованным с использованием ключа Ка. Единственным пользователем, кто может получить и прочитать это сообщение, является А, и поэтому А может быть уверенным, что это сообщение пришло от ЦРК. Сообщение включает два элемента, предназначенных для А:
    • - одноразовый сеансовый ключ Ks, который будет использоваться в сеансе связи;
    • - оригинальное сообщение запроса, включающее оказию, чтобы у пользователя А была возможность сопоставить ответ с соответствующим запросом.
  • 3. Таким образом, А может удостовериться, что его первоначальный запрос не был изменен на пути к ЦРК, а оказия не позволит перепутать ответ на данный запрос с ответом на какой-либо из предыдущих запросов.

Рис. 6.4.

  • 1. Кроме того, сообщение включает и два элемента, предназначенные для В :
    • - одноразовый сеансовый ключ К. у, который будет использоваться в сеансе связи;
    • - идентификатор ГО А пользователя А (например, его сетевой адрес).
  • 2. Оба элемента шифруются с помощью ключа К ь (главного ключа, применяемого совместно ЦРК и В), и предполагается, что они должны быть впоследствии отправлены В, чтобы установить соединение и идентифицировать А.
  • 3. Сторона А сохраняет сеансовый ключ для предстоящего сеанса связи и пересылает стороне В информацию, полученную от ЦРК и предназначенную для В (а именно, информацию Екь[К Л ||ГО А ]). Поскольку эта информация шифрована с использованием К ь, она оказывается защищенной. Теперь получатель В знает сеансовый ключ (K s) и знает, что полученная информация пришла от ЦРК (поскольку эта информация оказывается зашифрованной с использованием ключа Кь).

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

  • 1. Используя только что полученный сеансовый ключ К, для шифрования, сторона В посылает стороне А новую оказию Л/
  • 2. С помощью того же ключа K s сторона А в ответ возвращает /{N 2 ), где /является функцией, выполняющей некоторое преобразование N 2 (например, добавление единицы).

Эти действия призваны убедить адресата В в том, что первоначально полученное им сообщение (п. 3) не было воспроизведено.

Следует обратить внимание на то, что сам процесс передачи ключа фактически выполняется в п. 1-3, а п. 4 и 5, так же как отчасти и п. 3, призваны обеспечить функцию аутентификации.