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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 является отсутствие гарантированной нижней оценки трудоемкости раскрытия ключа.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: