Иерархия ключевой информации. Распределение ключей

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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). Однако создание подобного канала и поддержание его в оперативной готовности на случай экстренной необходимости передачи ключа является довольно трудоемким и затратным делом.

Рис. 1.

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

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

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


Рис. 2.

Проблемы асимметричной криптографии

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

Другая угроза современным криптосистемам исходит от так называемых квантовых компьютеров -- устройств обработки информации, построенных на принципах квантовой механики, идея которых впервые была предложена известным американским физиком Р. Фейнманом. В 1994 г. П. Шор предложил алгоритм факторизации для квантового компьютера, который позволяет разложить число на множители за время, зависящее полиномиальным образом от размера числа . А в 2001 г. этот алгоритм был успешно реализован на созданном специалистами фирмы IBM и Стэнфордского университета первом действующем макете квантового вычислителя .

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

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

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

Аннотация: В предыдущих лекциях мы обсуждали криптографию с симметричными ключами и с асимметричными ключами. Однако мы еще не обсудили, как распределяются и обслуживаются ключи засекречивания в криптографии с симметричными ключами и открытые ключи в криптографии с асимметричными ключами. Эта лекция затрагивает эти две проблемы. Во-первых, мы поговорим о распределении симметричных ключей, с использованием третьего лица, которому доверяют. Во-вторых, мы покажем, как две стороны могут установить симметричный ключ между собой, не используя третье лицо, которому доверяют. В-третьих, мы рассмотрим систему Цербер (Kerberos), центры распределения ключей KDC и протокол определения подлинности объекта. В-четвертых, мы обсудим сертификацию общедоступных ключей, используя центры сертификации (CA), на основе рекомендаций X.509. Наконец, мы кратко рассмотрим идею относительно Инфраструктуры Общедоступного ключа (PKI) и расскажем о некоторых из ее режимов работы.

5.1. Распределение с симметричными ключами

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

Если Алиса должна обмениваться конфиденциальными сообщениями с N людьми, она нуждается в N различных ключах. А что, если N людей должно общаться друг с другом? Тогда необходимое общее количество ключей равно N (N - l) . Если мы позволяем Алисе и Бобу использовать два одинаковых ключа для двунаправленной связи для обоих направлений, тогда нужно только N (N - 1)/2 ключей. Это означало бы, что если один миллион человек связывается друг с другом, каждый человек имеет почти один миллион различных ключей. Всего необходим почти один триллион ключей. Это называется N -проблемой, потому что число требуемых ключей для N объектов - N 2 .

Число ключей - не единственная проблема; распределение ключей - другая беда. Алиса и Боб хотят связаться между собой. Им нужен способ обмена ключами засекречивания. Если Алиса хочет связаться с одним миллионом человек, как она может обменяться одним миллионом ключей с одним миллионом человек? Использование Internet - явно не безопасный метод . Очевидно, что мы нуждаемся в эффективном способе поддерживать и распределять ключи засекречивания.

Центр Распределения Ключей: KDC

Практическое решение - привлечение третьего лица, которому доверяют. Оно называется здесь центром распределения ключей (KDC - Key-Distribution Center) . Чтобы уменьшать число ключей, каждый человек устанавливает открытый ключ засекречивания с KDC , как показано на рис. 5.1 .


Рис. 5.1.

Ключ засекречивания установлен между KDC и каждым членом сообщества. Алиса имеет ключ засекречивания с KDC , который мы называем K Alice . Боб имеет ключ засекречивания с KDC , который мы называем K Bob . Теперь вопрос - то, как Алиса может передать конфиденциальное сообщение Бобу. Процесс следующий:

  1. Алиса передает запрос KDC - заявление, что она нуждается в сеансе (временно) и ключе засекречивания между собой и Бобом.
  2. KDC сообщает Бобу о запросе Алисы.
  3. Если Боб соглашается, между ними создается ключ сеанса .

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

Когда число людей, использующих KDC (Центр распределения ключей ), увеличивается, система становится неуправляемой и срабатывает ее узкое место - число ключей может кончиться. Чтобы решить проблему, мы должны иметь много KDC . Мы можем разделить мир на домены. Каждый домен может иметь один или более KDCs (для резервной избыточности в случае отказа). Теперь, если Алиса хочет передать конфиденциальное сообщение Бобу, который принадлежит к другому домену, она входит в контакт со своим KDC , который, в свою очередь, входит в контакт с KDC в домене Боба. Два KDCs могут создать ключ засекречивания между Алисой и Бобом.

Одной из самых сложных задач управления ключами, возни-кающих в криптографии, является формирование общих секретных ключей участников криптосистем. В этом разделе мы кратко позна-комимся с основными способами решения этой задачи, отметим их достоинства, недостатки, сферы возможного применения.
2.2.1. Основные понятия и определения
Протокол распределения ключей (key establishment protocol) - это криптографический протокол, в процессе выполнения которого общий секрет становится доступен двум или более сторонам для по-следующего использования в криптографических целях.
Протоколы распределения ключей подразделяются на два класса: протоколы транспортировки ключей и обмена ключами.
Протоколы транспортировки ключей (key transport) - это про-токолы распределения ключей, в которых один участник создает или другим образом приобретает секрет и безопасным образом передает его другим участникам.
Протоколы обмена ключами (key agreement, key exchange) - это протоколы распределения ключей, в которых общий секрет выраба- тывается двумя или более участниками как функция от информации, вносимой каждым из них (или ассоциированной с ними) таким образом, что (в идеале) никакая другая сторона не может предопределить их общий секрет.
Выделяют две дополнительные формы протоколов распределения ключей. Говорят, что протокол осуществляет обновление ключей (key update), если в протоколе вырабатывается совершенно новый ключ, не зависящий от ключей, выработанных в прошлых сеансах выполнения протокола. Протокол выполняет выработку производ-ных ключей (key derivationJ, если новый ключ «выводится» из уже существующих у участников криптосистемы.
Протоколы распределения ключей можно классифицировать и по другому признаку.
Протоколы с предраспределенньши ключами (key pre-distribu-tion) - протоколы распределения ключей, в которых результирующие ключи полностью определены априори начальным ключевым материалом. К особому виду таких протоколов можно отнести схемы разделения секрета.
Протоколы динамического распределения ключей (dynamic key establishment) - протоколы распределения ключей, в которых ключи, вырабатываемые фиксированной парой (или группой) участников различны в разных сеансах протокола. Этот процесс называют также распределением сеансовых ключей.
Протоколы распределения ключей можно также классифицировать по признаку использования в них симметричных либо асиммет-ричных криптосхем.
Классификация рассматриваемых далее протоколов распределения ключей по перечисленным выше признакам показана в табл. 2.1.
Таблица 2.1. Классификация протоколов распределения ключей Классы протоколов Протоколы распределения ключей Транспортировка ключей Обмен ключами Протоколы, основанные на симметричных криптосхемах Needham - Schroeder, Otway - Rees, Kerbe- ros, трехэтапный протокол Шамира Шарады Меркле Схема Бпома Схемы разде-ления секрета
Классы протоколов Протоколы распределения ключей Транспортировка ключей Обмен ключами Протоколы, основанные на асимметричных крип- тосхемах Needham - Schroeder, Х.509, Beller-Yacobi, SSL Diffie- Hellman, ElGamal, MTl, STS, Gunther Схемы разде-ления секрета Динамическое распределение ключей Протоколы с предраспределен- ными ключами
Протоколы распределения ключей могут строиться как без участия «третьей стороны», так и с ее участием. Доверенная «третья сторона» может выполнять различные функции: сервер аутентификации, центр распределения ключей, центр трансляции ключей, удо-стоверяющий центр и др.