Распределения ключей с использованием третьей доверенной стороны. Иерархия ключевой информации. Распределение ключей. Теоретические основы решения задачи

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

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

Управление ключами – информационный процесс, включающий в себя три элемента:

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

    накопление ключей;

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

Генерация ключей. В реальных системах используются специальные аппаратные и программные методы генерации случайных ключей. Как правило используют датчики случайных чисел. Однако степень случайности их генерации должна быть достаточно высокой. Идеальными генераторами являются устройства на основе “натуральных” случайных процессов. Напри­мер, генерация ключей на основе белого радиошума. Другим случайным математическим объектом являются десятичные знаки иррациональных чисел, например  или е, которые вычисляются с помощью стандартных математических методов.

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

Накопление ключей. Под накоплением ключей понимается организация их хранения, учета и удаления.

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

Секретные ключи никогда не должны записываться в явном виде на но­сителе, который может быть считан или скопирован.

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

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

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

Вопрос обновления ключевой информации связан и с третьим элементом управления ключами – распределением ключей.

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

    оперативность и точность распределения;

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

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

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

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

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

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

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

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

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

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

Для обмена ключами можно использовать криптосистемы с открытым ключом, используя тот же алгоритм RSA.

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

Алгоритм Диффи-Хеллмана. Диффи и Хелман предложили для создания криптографических систем с открытым ключом функцию дикретного возведения в степень.

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

Для обмена информацией первый пользователь выбирает случайное число x 1 , равновероятное из целых чисел от 1 до p – 1. Это число он держит в секрете, а другому пользователю посылает число y 1 = , где α – фиксированный элемент поля ГалуаGF (p ), который вместе с p заранее распространяется между пользователями.

Аналогично поступает и второй пользователь, генерируя x 2 и вычислив y 2 , отправляя его первому пользователю. В результате этого они оба могут вычислить общий секретный ключ k 12 =
.

Для того, чтобы вычислить k 12 , первый пользователь возводит y 2 в степень x 1 и находит остаток от деления на p . То же делает и второй пользователь, только используя y 1 и x 2 . Таким образом, у обоих пользователей оказывается общий ключ k 12 , который можно использовать для шифрования информации обычными алгоритмами. В отличие от алгоритма RSA, данный алгоритм не позволяет шифровать собственно информацию.

Не зная x 1 и x 2 , злоумышленник может попытаться вычислить k 12 , зная только перехваченные y 1 и y 2 . Эквивалентность этой проблемы проблеме вычисления дискретного логарифма есть главный и открытый вопрос в системах с открытым ключом. Простого решения до настоящего времени не найдено. Так, если для прямого преобразования 1000-битных простых чисел требуется 2000 операций, то для обратного преобразования (вычисления логарифма в поле Галуа) – потребуется около 1030 операций.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 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, призваны обеспечить функцию аутентификации.

Лекция 6: Управление криптографическими ключами. Криптографические протоколы.

Вопросы:

1. Криптографические протоколы.

2. Распределение секретных ключей.

3. Распределение открытых ключей.

4. Распределение секретных ключей с помощью системы с открытым ключом.

1 Криптографические протоколы.

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

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

· при игре в карты;

· при заказе товаров по телефону.

Эти протоколы вырабатываются в течение длительного времени и работают достаточно надежно.

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

Для облегчения демонстрации работы протоколов используют несколько участников:

· Алиса – первый участник.

· Боб – второй участник.

· Кэрол – участник в трехсторонних протоколах.

· Дэйв – четырехсторонний протокол.

· Ева – перехватчик сообщений.

· Мэллори – активный взломщик.

· Трэнт – доверенный посредник.

· Уолтер –надзиратель (стережет Алису и Боба).

· Пэгги – претендент (пытается что-то доказать).

· Виктор – верификатор (проверяет Пэгги).

Различают:

· самодостаточные протоколы ;

· протоколы с посредником ;

· протоколы с арбитром.

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

Алиса Боб

Протоколы с посредником.

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

В обыденной жизни посредником может быть адвокат, агенство, банк и т.д. С компьютерными сетями дело обстоит сложнее.


Протоколы с арбитром.


Арбитр – посредник особого типа. Это незаинтересованная и доверенная третья сторона. В отличие от посредника он не обязательно участвует в исполнении каждого протокола, а только в том случае, когда между сторонами возникают разногласия.

В качестве примера можно назвать судей.

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

Организация связи с помощью симметричной криптографии.

Модель симметричной криптосистемы:

1. Алиса и Боб выбирают криптосистему.

2. Алиса и Боб выбирают ключ.

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

4. Алиса посылает шифротекст Бобу.

5. Боб расшифровывает шифротекст, используя ключ и получая открытый текст.

Ева, находясь между Алисой и Бобом, может подслушать передачу только на этапе 4, тогда ей придется подвергнуть шифртекст криптоанализу. Это пассивная атака с использованием только шифротекста.

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

Активный взломщик Мэллори может пойти дальше. На этапе 4 он может нарушить линию связи. Либо перехватить сообщение Алисы и заменить его собственным. У Боба нет никакой возможности распознать, что сообщение отправлено не Алисой.

Алиса или Боб могут передать копию ключа Еве и т.д.

Подводя итоги, перечислим недостатки симметричных криптосистем :

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

2. При получении ключа возможно создание ложных сообщений.

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

n пользователей - n (n – 1) / 2 – ключей,

10 пользователей - 45 ключей,

100 пользователей - 4950 ключей и т.д.

Организация связи с помощью криптографии с открытым ключом.

1. Алиса и Боб договариваются использовать криптосистему с открытым ключом.

2. Боб посылает Алисе свой открытый ключ.

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

4. Боб расшифровывает сообщение своим закрытым ключом.

Таким образом устраняется болезненная для симметричных криптосистем проблема распределения ключей.


2. Распределение секретных ключей.

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

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

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

1. Ключ выбран стороной А и физически доставлен В.

2. Ключ выбирает третья сторона и физически доставляет А и В.

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

4. Третья сторона С доставляет ключ А и В по защищенным каналам связи, т.е. используется некий Центр распределения ключей (ЦРК).

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

Рассмотрим п.4.

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

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

Сценарий распределения ключей (Централизованная схема).

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

При этом пользователь А имеет секретный ключ К a , известный только ему и ЦРК, а пользователь В имеет К b (К a и К b –главные ключи, К s – одноразовый сеансовый ключ).

Обмен информацией происходит следующим образом:

1. Пользователь А посылает запрос в ЦРК на получение сеансового ключа для защиты связи с В.

Посылаемый запрос должен включать:

- информацию, позволяющую однозначно определить А и В ( ID A , ID В );

- некоторый идентификатор N 1 , уникальный для каждого запроса и называемый оказией . Оказией может быть время, счетчик, случайное число.

2. ЦРК отвечает на запрос пользователя А, шифруя ответ ключом К a (главным А). Единственным пользователем, кто сможет прочесть ответ, является А (следовательно, А уверен, что сообщение пришло от ЦРК).

Сообщение-ответ включает следующие элементы:

· Предназначенные для А :

S (для связи А с В).

- Запрос с оказией N 1 , чтобы пользователь А мог сопоставить ответ с запросом.

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

· Предназначенные для В .

Одноразовый сеансовый ключ К s .

Идентификатор пользователя А - ID A (например, сетевой адрес А).

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

E Ka [ K S ||Запрос|| N 1 || E Kb (K S , ID A )]

3. Пользователь А сохраняет свой сеансовый ключ и пересылает стороне В информацию от ЦРК, предназначенную для В.

Пользователь В получает К s и знает, что полученная информация пришла от ЦРК (так как она зашифрована К В, который знают только В и ЦРК).

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

4. Используя полученный сеансовый ключ К s пользователь В посылает пользователю А новую оказию N 2 .

5. С помощью К s пользователь А в ответ возвращает f (N 2 ). Это необходимо, чтобы убедить В в том, что первоначально полученное им сообщение не было воспроизведено злоумышленником.

Таким образом, обеспечивается не только передача ключа, но и аутентификация (шаги 4 и 5).


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

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

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

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


1) А посылает запрос на получение К s + оказия N 1 .

2) В отвечает, шифруя ответ с использованием общего у А и В главного ключа Е МК m .

3) А возвращает f (N 2 ), шифруя с помощью К s .

3. Распределение открытых ключей.

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

1. распределение открытых ключей;

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

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

1. публичное объявление;

2. публично доступный каталог;

4. сертификаты открытых ключей.

1)Публичное объявление открытых ключей (Неконтролируемое распределение) .

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

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

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

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

1. Уполномоченный объект, поддерживающий каталог с записями вида {имя, открытый ключ} для каждого из участников.

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

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

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

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

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

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

(1) Инициатор А посылает сообщение с меткой даты/времени (оказией N 1 ) авторитетному источнику открытых ключей с запросом о текущем открытом ключе участника В.

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

· Открытый ключ участника В , KU b ;

· Оригинальный запрос , чтобы сторона А имела возможность убедиться, что запрос не был изменен на пути к авторитетному источнику.


· Оригинальную метку даты/времени (оказия N 1 ), чтобы отправитель А мог удостовериться, что это ответ именно на данный запрос.

(3) Инициатор А сохраняет открытый ключ участника В и использует его для шифрования сообщения, направляемого получателю В и содержащего идентификатор отправителя А ( ID A ) и оказию N 1 .

(4) (5) Респондент В получает открытый ключ участника А от авторитетного источника точно таким же способом, каким отправитель А получил открытый ключ получателя В.

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

(6) Респондент В посылает сообщение инициатору А, шифрованное с помощью KU A и содержащее оказию отправителя А ( N 1 ), а также новую оказию, сгенерированную участником В ( N 2 ). Присутствие N 1 в сообщении (6) убеждает участника А в том, что отправителем полученного сообщения был В.

(7) Инициатор А возвращает N 2 шифрованное с помощью открытого ключа участника В, чтобы тот мог убедиться в том, что отправителем ответа является А.

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

4) Сертификаты открытых ключей .

Альтернативный подход предложил Конфельдер. Он основан на сертификатах.

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

Требования к системе :

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

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

4. Деннинг добавил следующее требование – любой участник должен иметь возможность проверить срок действия сертификата.


Рис. Обмен сертификатами открытых ключей.

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

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

А может переслать сертификат любому участнику.

Получатель использует открытый ключ KU auth АИС, чтобы прочитать сертификат. Это дает гарантию, что сертификат пришел именно от него.

D KU [ C A ]= D KU [ E KR [ T , ID A , KU A ]]=(T , ID A , KU )

4. Распределение секретных ключей с помощью системы с открытым ключом.

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

1)Схема Меркла (самодостаточный протокол)

Если инициатор А намерен обменяться данными с пользователем В, для этого предполагается следующая процедура:


1. Сторона А генерирует пару открытый/личный ключи { KU A , KR A } и передает сообщение стороне В, содержащее KU A и идентификатор отправителя А, ID A .

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

3. Пользователь А вычисляет D KRa [ E KUa [ K S ]], чтобы восстановить секретный ключ. Поскольку только участник А может дешифровать это сообщение, только участники обмена А и В будут знать значение K S .

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

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

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

1. Участник А генерирует пару открытый/личный ключи { KU A , KR A KU A и идентификатор участника А, ID A .

2. Противник Е перехватывает сообщение, создает собственную пару открытый/личный ключи { KU Е , KR Е } и передает сообщение адресату В, содержащее KU Е || ID A .

3. В генерирует секретный ключ K S и передает E KUe [ K S ].

4. Противник Е перехватывает это сообщение и узнает K S , вычисляя D KRe [ E KUe [ K S ]].

5. Противник Е передает участнику А сообщение E KU а [ K S ].

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

2)Распределение секретных ключей с обеспечением конфиденциальности и аутентификации.

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


(1) Сторона А использует открытый ключ стороны В, чтобы переслать стороне В шифрованное сообщение, содержащее идентификатор участника А ( ID A ) и оказию (N 1 ), используемую для идентификации данной конкретной транзакции.

(2) Пользователь В дешифрует (1) с использованием KR В . Пользователь В посылает сообщение пользователю А, зашифрованное с помощью KU А и содержащее полученную от него оказию ( N 1 ) и новую оказию (N 2 ). Ввиду того, что только участник В мог дешифровать сообщение (1), присутствие N 1 в сообщении (2) убеждает участника А в том, что респондентом является сторона В.

( 3) Сторона А возвращает N 2 , шифруя сообщение открытым ключом стороны В, чтобы гарантировать ей, что его респондентом является сторона А.

(4) Участник А выбирает секретный ключ K S и посылает участнику В сообщение M = E KUb [ E KRa [ K S ]]. Шифрование этого сообщения открытым ключом стороны В гарантирует, что только участник В сможет прочитать его, а шифрование личным ключом участника А – что только участник А смог послать его.

(5) Сторона В вычисляет В KU а [ E KRb [ K S ]], чтобы восстановить секретный ключ.

При обмене секретными ключами эта схема гарантирует как конфиденциальность, так и аутентификацию.

3) Гибридная схема (трехуровневая).

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

· Скорость выполнения процедуры .

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

· Обратная совместимость .

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

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

5. Обмен ключами по схеме Диффи-Хеллмана.

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

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

Криптостойкость алгоритма Диффи-Хеллмана опирается на трудность вычисления дискретных логарифмов . Формально дискретный логарифм можно определить следующим образом. Сначала определяется первообразный корень простого числа p – число а, степени которого порождают все целые числа от 1 до p -1. Это означает, что если а является первообразным корнем простого числа p , то все числа

a mod p, a 2 mod p,…, a p-1 mod p

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

Обмен ключами по схеме Диффи-Хеллмана иллюстрирован на рисунке. В этой схеме имеются два открытых для всех числа: простое число q и целое число а, являющееся первообразным корнем q . Предположим, пользователи А и В намерены обменяться ключами.

Пользователь А выбирает случайное целое число Х А < q и вычисляет Y A =а XA mod q . Точно так же пользователь В независимо выбирает случайное целое число X B < q и вычисляет Y B = a XB mod q . Каждая сторона сохраняет значение Х в тайне и делает значение Y свободно другой стороне. Пользователь А вычисляет ключ по формуле К = ( Y B ) XA mod q , а пользователь В по формуле К = ( Y А ) X В mod q . Эти две формулы вычисления дают одинаковые результаты .

Итак, обе стороны обменялись секретными ключами. А поскольку при этом Х А и Х В были только в личном использовании и поэтому сохранились в тайне, противнику придется работать только с q , a , Х А,Х B . Таким образом, ему придется вычислять дискретный логарифм, чтобы определит ключ. Например, чтобы определить ключ.

После этого он сможет вычислить ключ К точно так же, как это делает пользователь В.

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


Противник знает: q , а, Y А , Y В. Чтобы определить ключ, необходимо вычислить дискретный логарифм.

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

ПРОСТОЕ РАСПРЕДЕЛЕНИЕ СЕКРЕТНЫХ КЛЮЧЕЙ

Исключительно простая схема представлена на рис. 11.4.

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

Рис. 11.4.

  • 1. Сторона А генерирует пару открытый / личный ключи {KU a , KR a } и передает стороне В сообщение, содержащее KU a и идентификатор IDa отправителя А.
  • 2. Получатель В генерирует секретный ключ К у и передает этот ключ инициатору сообщения А зашифрованным с помощью открытого ключа KU a инициатора А.
  • 3. Пользователь А вычисляет D|a^], чтобы восстановить секретный ключ. Поскольку только пользователь А может дешифровать это сообщение, только участники обмена данными А и В будут знать значение K s .
  • 4. Участник А выбрасывает ключ KR a , а участник В выбрасывает ключ KU a .

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

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

  • 5. Участник А генерирует пару открытый / личный ключи {KU a , KR„} и передает стороне В сообщение, содержащее KU a и идентификатор Ш А отправителя А.
  • 6. Противник Е перехватывает сообщение, создает собственную пару открытый / личный ключи {KU e , KR,} и передает адресату В сообщение, содержащее KU e ||Ш А.
  • 7. В генерирует секретный ключ K v и передает ЕкиЛК,].
  • 8. Противник Е перехватывает это сообщение и узнает K v , вычисляя D KRe ].
  • 9. Противник Е передает участнику А сообщение Екиа[Ку|-

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