Лекция 11.ppt
- Количество слайдов: 14
ЛЕКЦИЯ 11. Управление ключами в асимметричных криптосистемах. 11. 1. Распределение открытых ключей. 11. 2. Распределение секретных ключей с использованием криптосистемы с открытым ключом.
Методы распределения открытых ключей: публичное объявление; публично доступный каталог; авторитетный источник открытых ключей; сертификаты открытых ключей. Публичное объявление открытых ключей KUa KUb B A KUa KUb Неконтролируемое распределение открытых ключей Слабое место: такое публичное объявление может написать кто угодно.
Авторитетный источник открытых ключей Выполняются следующие действия: 1. Инициатор А посылает сообщение с меткой даты/времени авторитетному источнику открытых ключей с запросом о текущем открытом ключе участника В. 2. Авторитетный источник отвечает сообщением, которое шифруется с использованием личного ключа авторитетного источника KRauth. Это сообщение инициатор А может дешифровать, используя открытый ключ авторитетного источника. Поэтому отправитель А может быть уверенным в том, что сообщение исходит от авторитетного источника. Это сообщение должно включать следующее: открытый ключ KUb участника В, который участник А может использовать для шифрования сообщений, предназначенных для получателя В; оригинальный запрос, чтобы сторона А имела возможность сопоставить ответ с ранее отправленным запросом и убедиться, что запрос не был изменен на пути к авторитетному источнику; (1) Запрос || Время 1 Авторитетный источник открытых ключей (2) EKRauth [KUb || Запрос || Время 1] А (4) Запрос ||Время 2 (5) EKRauth [KUa || Запрос || Время 2] (3) EKUb [IDA || N 1] В (6) EKUa [N 1 || N 2] (7) EKUb [N 2] • оригинальную метку даты/времени, чтобы отправитель А мог удостовериться, что это сообщение не является одним из старых сообщений от авторитетного источника, содержащим ключ, отличный от текущего открытого ключа адресата В.
3. Инициатор А сохраняет открытый ключ участника В и использует его для шифрования сообщения, направляемого получателю В и содержащего идентификатор отправителя А (IDА) и оказию (N 1), которая выступает в качестве уникальной метки данного сообщения. 4, 5. Респондент В получает открытый ключ А от авторитетного источника точно таким же способом, каким отправитель А получил открытый ключ получателя В. К этому моменту открытые ключи оказываются доставленными участникам А и В вышеописанной защищенной процедурой, так что теперь они могут начать постепенный обмен данными. Но перед этим желательно выполнить два следующих дополнительных действия. 6. Респондент В посылает сообщение инициатору А, шифрованное с помощью KUa и содержащее оказию отправителя А (N 1), а также новую оказию, сформированную участником В (N 2). Ввиду того, что только он мог дешифровать сообщение (3), присутствие N 1 в сообщении (6) убеждает участника А в том, что отправителем полученного сообщения был В. 7. Инициатор А возвращает N 2, шифрованное с помощью открытого ключа KUb участника В, чтобы тот мог убедиться в том, что отправителем ответа является А. Обе стороны могут сохранять открытые ключи друга для дальнейшего пользования, что обычно называется кэшированием. Каталог имен и открытых ключей, поддерживаемый авторитетным источником, остается уязвимым по отношению к вмешательству с неблагоприятными намерениями.
Сертификаты открытых ключей Каждый сертификат 1. содержит открытый ключ и другую информацию, 2. создается авторитетным источником сертификатов и 3. выдается участнику вместе с соответствующим личным ключом. Требования к данной схеме: 1. Любой участник должен иметь возможность прочитать сертификат, чтобы определить имя и открытый ключ владельца сертификата. 2. Любой участник должен иметь возможность проверить, что сертификат исходит из авторитетного источника сертификатов и не является подделкой. 3. Только авторитетный источник сертификатов должен иметь возможность создавать и изменять сертификаты. 4. Любой участник должен иметь возможность проверить срок действия сертификата. Схема использования сертификатов включает операции: 1. Каждый участник обращается к авторитетному источнику сертификатов, предоставляя открытый ключ и запрашивая для него сертификат. Запрос должен предполагать либо личное обращение, либо некоторую защищенную форму связи. 2. Для участника А авторитетный источник обеспечивает сертификат вида 1. CA = EKRauth [T, IDA, KUa], 2. где KRauth обозначает личный ключ, используемый авторитетным источником. Авторитетны й источник сертификатов KUa KUb CA = EKRauth [Время 1, IDA, KUa] CB = EKRauth [Время 2, IDB, KUb] (1) CA В А (2) CB Обмен сертификатами открытых ключей
3. Теперь участник А может переслать этот сертификат любому другому участнику, который прочитывает и проверяет сертификат: DKUauth [CA] = DKUauth [EKRauth [T, IDA, KUa]] = (T, IDA, KUa). 4. Получатель использует открытый ключ авторитетного источника сертификатов KUauth, чтобы дешифровать сертификат. А) Ввиду того, что сертификат можно прочитать только с помощью открытого ключа авторитетного источника сертификатов, есть гарантия того, что сертификат пришел именно от авторитетного источника сертификатов. Б) Элементы IDA и KUa сообщают получателю имя и открытый ключ владельца сертификата. В) Наконец, метка даты/времени T определяет срок действия сертификата. Метка даты/времени должна быть защищена от следующей последовательности действий. 1. Противник узнает личный ключ А. По этой причине А генерирует вторую пару ключей (личный и открытый) и обращается к авторитетному источнику сертификатов за новым сертификатом. 2. Тем временем, противник воспроизводит сообщение со старым сертификатом и отсылает его В. Если В будет шифровать сообщения, используя старый скомпрометированный открытый ключ, противник сможет прочитать эти сообщения. Таким образом, метка даты/времени является чем-то вроде даты истечения срока действия. Если сертификат оказывается выданным достаточно давно, предполагается, что срок его действия истек.
Распределение секретных ключей с помощью системы с открытым ключом 1. Простое распределение секретных ключей (1) KUa || IDA В А (2) EKUa[Ks] Простое использование шифрования с открытым ключом при выборе сеансового ключа Для этого предполагается следующая процедура: 1. Сторона А генерирует пару открытый/личный ключи {KUa, KRa} и передает сообщение стороне В, содержащее KUa и идентификатор IDA отправителя А. 2. Получатель В генерирует секретный ключ Ks и передает этот ключ инициатору сообщения А зашифрованным с помощью открытого ключа KUa инициатора А. 3. Пользователь А вычисляет DKRa[EKUa[Ks]], чтобы восстановить секретный ключ. Поскольку только пользователь А может дешифровать это сообщение, только участники обмена данными А и В будут знать значение Ks. 4. Участник А выбрасывает ключ KRa , а участник В – выбрасывает ключ KUa.
Этот протокол уязвим в отношении активных атак. Противник Е, имея возможность внедрения в канал связи, может скомпрометировать связь следующим образом. 1. Участник А генерирует пару открытый/личный ключи {KUa, KRa} и передает сообщение стороне В, содержащее KUa и идентификатор IDA отправителя А. 2. Противник Е перехватывает сообщение, создает собственную пару открытый/личный ключи {KUе, KRе} и передает сообщение адресату В, содержащее KUе ||IDA. 3. В генерирует секретный ключ Ks и передает EKUе[Ks]. 4. Противник Е перехватывает это сообщение и узнает Ks, вычисляя DKRe[EKUе[Ks]]. 5. Противник Е передает участнику А сообщение EKUa[Ks].
2. Распределение секретных ключей с обеспечением конфиденциальности и аутентификации А и В уже обменялись открытыми ключами по одной из схем, описанных выше. (1) EKUb [N 1 || IDA] (2) EKUa [N 1 || N 2] В А (3) EKUb[N 2] (4) EKUb[EKRa [Ks]] Распределение секретных ключей с помощью шифрования с открытым ключом. 3 -х этапн ый прото кол «руко пожат ия» Далее выполняются следующие действия. Сторона А использует открытый ключ стороны В, чтобы переслать стороне В шифрованное сообщение, содержащее идентификатор участника А (IDA) и оказию (N 1), используемую для идентификации данной конкретной транзакции. 1. Пользователь В посылает сообщение пользователю А, зашифрованное с помощью KUa и содержащее полученную от него оказию (N 1) и новую оказию (N 2), сгенерированную пользователем В. Ввиду того, что только участник В мог дешифровать сообщение (1), присутствие N 1 в сообщении (2) убеждает участника А в том, что респондентом является сторона В. 2. Сторона А возвращает N 2 , шифруя сообщение открытым ключом стороны В, чтобы гарантировать то, что его респондентом является сторона А. 3. Участник А выбирает секретный ключ Ks и посылает участнику В сообщение M = EKUb[EKRa [Ks]]. Шифрование этого сообщения открытым ключом стороны В гарантирует, что только участник В сможет прочитать его, а шифрование личным ключом участника А – что только участник А мог послать его. 4. Сторона В вычисляет DKUa[EKRb [M]] , чтобы восстановить секретный ключ. Эта схема гарантирует как конфиденциальность, так и аутентификацию.
3. Гибридная схема Эта схема предполагает: 1. участие центра распределения ключей (ЦРК), с которым каждый пользователь использует свой главный секретный ключ, 2. и распределение секретных сеансовых ключей, шифруемых главным ключом. Схема шифрования с открытым ключом служит для распределения главных ключей. В основе трехуровневого подхода лежат следующие соображения. Скорость выполнения процедуры. Распределение сеансовых ключей с помощью схемы с открытым ключом могло бы сделать производительность системы слишком низкой из-за относительно высоких требований к вычислительным ресурсам при шифровании и дешифровании по такой схеме. В случае трехуровневой иерархии шифрование с открытым ключом применяется лишь иногда, чтобы изменить главный ключ, разделяемый пользователем и ЦРК. Обратная совместимость. Гибридную схему можно легко реализовать в виде расширения уже имеющейся схемы, предполагающей использование ЦРК, с минимальными изменениями предусмотренной процедуры и программного обеспечения.
4. Обмен ключами по схеме Диффи – Хеллмана Алгоритм ограничивается процедурой обмена ключами. Дискретный логарифм можно определить следующим образом: 1. Сначала определяется первообразный корень простого числа p - если a является первообразным корнем простого числа p, то все числа a mod p , (a 2) mod p, …, (ap-1) mod p должны быть разными и представлять все целые числа от 1 до p-1 в некоторой перестановке. 2. Для любого целого числа b и любого первообразного корня a простого числа p однозначно определяется показатель степени i, при котором b = (ai) mod p, где 0 ≤ i ≤ (p-1). Этот показатель степени обычно называется дискретным логарифмом, или индексом b по основанию a , рассматриваемым по модулю p. Это значение записывается в форме ind a, p(b).
Алгоритм обмена ключами по схеме Диффи-Хеллмана. 1. В схеме имеются два открытых для всех числа: простое число q и целое число , являющееся первообразным корнем q. 2. Пользователь А выбирает целое число XA < q и вычисляет YA = ( XA) mod q. 3. Пользователь В независимо выбирает случайное целое число XB < q и вычисляет YB = ( XB) mod q. 4. Каждая сторона сохраняет значение X в тайне и делает значение Y свободно доступным другой стороне. 5. Пользователь А вычисляет ключ по формуле K = (YB XA) mod q, 6. А пользователь В – по формуле K = (YA XB) mod q. Эти две формулы вычисления дают одинаковые результаты, как показано ниже. K = (YB XA) mod q = = ((( XB) mod q) XA) mod q = = (( XB XA) mod q = = (( XA) XB) mod q = = ((( XA) mod q) XB) mod q = = (YA XB) mod q. Итак, обе стороны обменялись секретным ключом. Противнику придется работать только с q, , YA и YB и вычислять дискретный логарифм, чтобы определить ключ. Например, чтобы определить ключ пользователя В, противнику нужно вычислить XB = inda, q (YB). После этого он сможет вычислить ключ К точно так же, как это делает пользователь В.
Пример. Обмен ключами строится на использовании простого числа q = 97 и его первообразного корня = 5. 1. Пользователи А и В выбирают секретные ключи XA = 36 и XB = 58 соответственно. 2. Каждый вычисляет свой открытый ключ: YA = 536 = 50 mod 97, YB = 558 = 44 mod 97. 3. После того как пользователи обменялись открытыми ключами, каждый из них может вычислить общий секретный ключ: K = (YB K = (YA XA) mod 97 = 44 XB) mod 97 = 50 Имея {50, 44}, 36 = 75 mod 97, 58 = 75 mod 97. противнику не удастся с легкостью вычислить 75. Глобальные открытые элементы q - простое число первообразный корень q, < q Вычисление ключа пользователем А Выбор секретного XA XA < q Вычисление YA YA = ( XA) mod q Вычисление ключа пользователем В Выбор секретного XB XB < q Вычисление YB YB = ( XB) mod q Вычисление секретного ключа пользователем А K = (YBXA) mod q Вычисление секретного ключа пользователем B K = (YAXB) mod q Алгоритм обмена ключами по схеме Диффи-Хеллмана
Генерировать случайное XA