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

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

Contents

Постановка задачи защиты информации

Протоколы открытого распределения ключей появились в связи с необходимостью реализовать обмен ключами без использования защищённого канала связи . Два или более участников в результате выполнения действий, предписанных протоколом, получают одинаковые ключи, которые затем используются в схемах симметричного шифрования. Первые исследования в этой области были выполнены Уитфилдом Диффи (Whitfield Diffie) и Мартином Хеллманом (Martin Hellman), которые в 70-х годах XX века опубликовали свой протокол открытого распределения ключей. Это была первая криптосистема, которая позволяла защищать информацию без использования секретных ключей, передаваемых по защищенным каналам.

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

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

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

Теоретические основы решения задачи

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

Общая схема протокола выглядит следующим образом:

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

  • получить p – большое простое число;
  • получить полное разложение числа (p –1) на множители;
  • вычислить первообразный корень r по модулю p (r mod p).

Составное число раскладывается на простые множители (на простые числа или их положительные целые степени, возможно нулевые), где p i – простые числа; b i – степени простых чисел.

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

Рабочий этап

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

1. генерирует элемент , вычисляет и отправляет результат

2. генерирует элемент , вычисляет и отправляет результат

3. вычисляет значение

4. вычисляет значение

После получения значения и необходимо уничтожить.

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

Основные криптографические конструкции и их стойкость

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

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

Протокол Диффи-Хеллмана не обеспечивает ни аутентификацию , ни подтверждение ключа, ни аутентификацию участников протокола. Активный противник может построить атаку на протокол методом включения в канал (атака "Человек посередине").

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

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

Cхема Эль-Гамаля

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

Практические применения криптографических конструкций, особенности их реализации

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

IKE (Internet Key Exchange)

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

IPsec (IP Security) - набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP. Позволяет осуществлять подтверждение подлинности (аутентификацию), проверку целостности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами Диффи-Хеллмана в сети Интернет.

Протоколы IKE решают три задачи:

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

Управляют параметрами соединения и защитой от некоторых типов атак, контролируют выполнение всех достигнутых соглашений;

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

PGP (Pretty Good Privacy)

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

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

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

Криптографические методы защиты применяют для надежной защиты информации, передаваемой по открытому каналу связи. Чтобы пользоваться этими методами, нужно выполнить первоначальный выбор и установку ключей. Обычно для первоначальног8о распределения ключей нужен защищенный канал связи.
Самый надежный способ первоначального распределения ключей - личная встреча всех взаимодействующих сторон, фельдъегерская связь. При большом числе пользователей требуется предварительная рассылка значительного объема ключевой информации и ее дальнейшее хранение.
На практике используют специальные системы предварительного распределения ключей. Эти системы предусматривают распределение и хранение не самих ключей, а некоторой меньшей по объему информации, на основе которой каждая сторона может вычислить сеансовый ключ.
Имеется два алгоритма предварительного распределения ключей:
  • передается информация, включающая открытую часть, которая может помещена на общедоступном сервере, а также секретные части, предназначенные для каждой стороны;
  • вычисляется действующее значение ключа для взаимодействия между абонентами по имеющейся у абонентов секретной и общей открытой части исходной ключевой информации.
Имеются два требования к системе предварительного распределения ключей:
  • она должна быть устойчивой , т.е. учитывать возможность раскрытия части ключей при компрометации, обмане или сговоре абонентов;
  • она должна быть гибкой - допускать возможность быстрого восстановления путем исключения скомпрометированных и подключения новых абонентов.

Пересылка ключей

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

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

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

Схема разделения секрета

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

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

Сертификаты

Проблема сертификации цифровой подписи заключается в следующем. Прежде чем использовать открытый ключ, абонент должен быть уверен, что открытый ключ принадлежит именно получателю. Открытые ключи хранятся на общедоступном сервере и нарушитель имеет возможность, подменив открытый ключ одного из абонентов, выступать от его имени.
Для защиты открытых ключей созданы специальные центры сертификации, которые играют роль третьей стороны и заверяют открытые ключи каждого из абонентов своими цифровыми подписями.
Сертификат представляет собой набор данных, заверенный цифровой подписью центра, и включает открытый ключ и список атрибутов, принадлежащих абоненту. В этот список входят атрибуты:
  • имя пользователя и центра сертификации;
  • номер сертификата;
  • время действия сертификата;
  • назначение открытого ключа (шифрование , цифровая подпись) и др.
Международный стандарт ISO X.509 определяет общую структуру сертификатов открытых ключей и протоколы их использования для аутентификации в сетях.

Центры сертификации

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

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

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

Исключительно простая схема представлена на рис. 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 , он сможет дешифровать любое сообщение, а участники А и В даже не будут подозревать о существовании проблемы. Таким образом, этот простой протокол оказывается полезным только в случае, когда единственной возможной угрозой является пассивный перехват сообщений.

Управление ключами

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

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

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

Генерация ключей

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

взаимное подтверждение подлинности участников сеанса

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

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

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

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

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

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

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

Использование центра распределения ключей основано на использовании иерархии ключей. Как минимум используется два типа ключей: мастер-ключи и ключи сессии .

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

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