Передача ключей с использованием асимметричного шифрования
Рассмотрим варианты использования асимметричного шифрования для передачи секретных ключей симметричныхкриптосистем.
Протоколы без использования цифровой подписи
Для передачи ключа k можно использовать следующий одношаговый протокол:
где Е — алгоритм шифрования с открытым ключом, t — метка времени, вставляемая для предотвращения возможности повторного использования ключа.
Протоколы с использованием цифровой подписи
При использовании цифровой подписи аутентифицированный протокол передачи ключей может содержать только одно сообщение и иметь, например, один из следующих трех видов:
(шифрование подписанного ключа);
(зашифрование и подпись ключа);
(подпись зашифрованного ключа).
Вопрос 30. Открытое и предварительное распределение ключей.
Открытое распределение ключей позволяет двум абонентам выработать общий секретный ключ путем динамического взаимодействия на основе обмена открытыми сообщениями без какой-либо общей секретной информации, распределяемой заранее. Важным преимуществом открытого распределения является также то, что ни один из абонентов заранее не может определить значения ключа, так как ключ зависит от сообщений, передаваемых в процессе обмена.
Первый алгоритм открытого распределения ключей был предложен У. Диффи и М.Хеллманом. Для его выполнения стороны должны договориться о значениях большого простого числа р и образующего элемента а мультипликативной группы . Для выработки общего ключа k они должны сгенерировать случайные числа
х, , и
у, ,
соответственно. Затем они должны обменяться сообщениями в соответствии с протоколом:
(1) | |
(2) |
Искомый общий ключ теперь вычисляется по формуле:
Предварительное распределение ключей
Большинство криптографических систем требуют проведения предварительного распределения секретных ключей. Для предварительного распределения стороны могут обменяться ключами при личной встрече, либо поручить доставку ключей специально назначенному доверенному курьеру, либо использовать для передачи некоторый выделенный защищенный канал. В зависимости от назначения криптографической системы иногда оказывается удобным распределять не сами ключи, а некоторые вспомогательные ключевые материалы, на основании которых каждый участник или группа участников могут самостоятельно вычислить необходимый ключ, используя для этого некоторую установленную заранее процедуру-
Рассмотрим ситуации, в которых необходимо проводить предварительное распределение ключей.
Схемы предварительного распределения ключей в сети связи
Если число абонентов сети засекреченной связи невелико, то и число распределяемых ключей также невелико. Для больших же сетей распределение ключей становится очень серьезной проблемой. Она заключается в том, что для сети, в которой работают п абонентов, необходимо выработать заранее и хранить в дальнейшем n(n-1)/2 ключей. Кроме того, каждому абоненту сети необходимо передать ключи для связи с остальными n - 1 абонентами, которые абонент должен постоянно хранить. Например, для сети со 100 абонентами нужно сгенерировать и хранить почти 5000 ключей, причем каждый абонент при этом должен хранить у себя 99 ключей.
Для уменьшения объема хранимой ключевой информации применяются различные схемы предварительного распределения ключей в сети связи. Их суть заключается в том, что в действительности вначале происходит распределение не самих ключей, а некоторых вспомогательных ключевых материалов, занимающих меньшие объемы. На основании этих материалов каждый абонент сети может самостоятельно вычислить по некоторому алгоритму необходимый для связи ключ. Такой подход позволяет уменьшить объемы как хранимой, так и распределяемой секретной информации.
В качестве примера рассмотрим схему предварительного распределения ключей, которая также позволяет значительно сократить общее число хранимых и передаваемых секретных ключей. Она называется KDP(key distribution patterns) и основана на схеме пересечений множеств.
Пусть имеется n, n> 2 , абонентов (пользователей) и множество секретных ключей К, |К| = q. Будем считать, что все ключи перенумерованы числами 1,2,..., q. Выберем некоторое семейство {S1...,Sn} подмножеств множества {1,2,..., q}. Предварительно абоненту i по защищенному каналу передается множество секретных ключей с номерами из подмножества . Таким образом, семейство {S1,...,Sn} представляет собой таблицу с номерами ключей каждого пользователя. Хотя данная таблица является несекретной, она должна быть защищена от модификаций и подделок.
Если абонент i хочет связаться с абонентом j, то он использует для выработки общего ключа множество ключей, номера которых содержатся в пересечении Если каждый ключ представлен некоторой битовой строкой, то для формирования общего связного ключа можно взять, например, их сумму, или значение некоторой хэш-функции от строки, составленной из ключей, номера которых входят в пересечение множеств
Схемой распределения ключей типа KDP, или KDP(n,q)- схемой, назовем всякое семейство {S1...,Sn}подмножеств множества К, удовлетворяющее следующему условию:
если при некоторых выполнено включение , то либо i = r, либо j = r.
Это условие означает, что общий ключ двух абонентов не должен быть известным никакому другому абоненту.
Схемы разделения секрета
Схема разделения секрета представляет собой схему предварительного распределения ключей между уполномоченными группами пользователей, в которой ключ заранее определен и одинаков для каждой уполномоченной группы. При этом каждый пользователь получает свою долю или “часть секрета”. Схема включает два протокола:
- протокол формирования долей (разделения секрета) и распределения их между пользователями;
- протокол восстановления секрета группой пользователей.
Схема должна позволять восстанавливать ключ только тем группам пользователей, которые имеют на это полномочия, и никакая другая группа не должна иметь возможности для восстановления ключа или получения о нем какой-либо информации.
Основное назначение схемы разделения секрета — защита ключа от потери. Обычно для защиты от потери делают несколько копий ключа. С возрастанием числа копий ключа возрастает вероятность его компрометации. Если число копий мало, то велик риск потери ключа. Поэтому лучше “разделить” ключ между несколькими лицами так, чтобы допускалась возможность восстановления ключа при различных обстоятельствах несколькими уполномоченными группами с заранее оговоренным составом участников. Тем самым исключается риск безвозвратной потери ключа.
Еще одно положительное качество схем разделения секрета заключается в разделении ответственности за принятие решения, которое автоматически вводится при определении состава уполномоченных групп. Такая коллективная ответственность нужна для многих приложений, включая принятие важных решений, касающихся применения систем оружия, подписания корпоративных чеков или допуска к банковскому хранилищу.
В простейшем случае, когда имеется только одна группа, состоящая из tпользователей, уполномоченная формировать ключ, схему разделения секрета можно построить следующим образом. Предположим, к примеру, что ключ представляет собой двоичный вектор s длины m. Выберем случайным образом t векторов s1,…st, так, чтобы их сумма совпадала с вектором s и распределим их между пользователями. Теперь, собравшись вместе, они могут легко восстановить значение ключа s, в то время как никакая группа, состоящая из меньшего числа пользователей, не сможет этого сделать. Действительно, в данном случае отсутствие хотя бы одной доли приводит к полной неопределенности относительно значения секрета, поскольку для каждого значения искомого секрета найдется возможный вариант значения отсутствующей доли.