Практические реализации протоколов обеспечения безопасности с применением симметричных шифраторов.
ПротоколAKEP 2
Один из наиболее простых протоколов использующих ключевую хэш-функцию MAC и работающий с передачей трех сообщений для аутентификации пользователей на двух общих секретных ключах (один для поддержки протокола шифрования, другой для прокола аутентификации).
1) А генерирует и передает В случайное число rai.
2) В получает то А сообщение, добавляет к нему свое случайное число rbi и имя В и А. Вычисляет хэш-функцию на секретном ключе K, Hk (rbi, rai, A, B)= hk. Передает его вместе с { rbi, rai, A, B } корреспонденту А.
3) А принимает сообщение { rb’i, ra’i, A’, B’ }, h’k вычисляет Hk (rb’i, ra’i, A’, B’) сравнивает h’k = hk и rb’i = rbi, проверяя подлинность сообщения и случайного числа.
4) Оба корреспондента вычисляют Hk (rbi)= hbk, на втором секретном ключе K2 и принимают hbk за сеансовый ключ.
Протокол SKID
В данном протоколе корреспонденты также используют ключевую хэш-функцию MAC для обеспечения безопасной передачи данных и предполагают, что А и В используют общий секретный ключ, K. Одна из модификаций протокола позволяет обеспечить аутентификацию корреспондентов:
1) А генерирует случайное число r a (согласно требованиям протокола SKID-2 64-битовое число) и посылает это число В.
2) В генерирует случайное число rb (согласно требованиям протокола SKID-2 64-битовое число), вычисляет ОНФ на ключе K следующее преобразование: Hk (rb, ra, B)= hbk, где В это ID корреспондента В, и посылает А: hbk, rb
3) А вычисляет от полученных данных Hk (rb’, ra’, B)= hb’k и сравнивает результат со значением hbk, полученным от В. Если гипотеза, hb’k = hbk подтверждается, то корреспондент В аутентифицирован.
Протокол SKID3 обеспечивает двустороннюю обоюдную аутентификацию корреспондентов А и В. Итерации (1) - (3) протоколов SKID2 и SKID3 совпадают, а затем в данном протоколе, для последующей аутентификации А выполняются следующие действия:
1) А, вычисляет ОНФ Hk (rb, A)= hak посылает В hak, где А, это ID корреспондента А.
2) В рассчитывает Hk (rb, A)= ha’k и сравнивает результат со значением, полученным от А. Если гипотеза hak = ha’k подтверждается, то корреспондент А аутентифицирован.
Hk, это обозначение ОНФ на ключе K, являющееся алгоритмом вычисления ключевой хэш-функции, принятым в протоколах SKID. Но так как протокол инвариантен к процедуре вычисления ОНФ, то возможно применение любых других функций. Следовательно имеется возможность оптимизации ВВХ протокола по предъявленным требованиям стойкости.
Однако этот протокол неустойчив к атаке "внедрение в середину".
Один из вариантов подтверждения подлинности рассматривается выше при описании протоколов распределения ключа и заключается в выполнении ЭЦП под сообщением. Эти протоколы гарантируют аутентификацию легитимных пользователей со стойкостью КС, на которой выполнялась ЭЦП, при условии достоверности установленных сертификатов.
С применением симметричных алгоритмов возможна ситуация в которой аутентификация косвенно является частью протокола организации шифрованной связи (что, отчасти, было реализовано протоколе запрос-ответ). Определяется это следующим образом, при передаче зашифрованной информации противник, не обладающий секретным ключом, не может прочитать передаваемые сообщения, но если у него появляется секретный ключ, он автоматически является легитимным пользователем. В случае сетевой аутентификации, с применением разветвленной топологии организации связи, возникает необходимость в ЦРК создания матриц ключевых наборов, что также решает задачу аутентификации на общем секретном ключе шифрования.
Этот класс протоколов определен разделением процедур аутентификации и распределения ключа на подпротоколы удостоверения подлинности корреспондентов и обмена ключевым материалом для решения задачи обеспечения безопасной связи. Данные шифруются на сеансовом ключе, динамически сменяемом либо во времени, либо статичном, индивидуально ассоциируемом с каждым сеансом связи.
В большей части протоколов предполагается, что каждый абонент сети обладает некоторым секретным долгосрочным ключом, выделенным ему ЦРК по гарантировано безопасному каналу.
Практические реализации протоколов обеспечения безопасности с применением гибридных криптографических алгоритмов
Протокол Wide-Mouth Frog
Протокол Wide-Mouth Frog [M. Burrows, M. Abadi, R. Nidham “A Logic Autentification”, M. Burrows, M. Abadi, R. Nidham “Rejoiner to Nessett”], является самым простым и наиболее прозрачным протоколом поддержки протокола шифрованной связи. Корреспондент А и ЦА, совмещенный с ЦРК, имеют общий долгосрочный секретный ключ, используемый только для распределения сеансового ключа. Алгоритм работы протокола приведен ниже:
А генерирует сеансовый ключ, объединяет метку времени, имя вызываемого корреспондента В и сеансовый ключ, затем шифрует созданное сообщение общим с ЦА ключом и посылает его ЦА вместе со своим именем.
ЦА дешифрует сообщение А. Затем он добавляет новую метку времени, имя А и сеансовый ключ, далее шифрует полученное сообщение общим с В ключом. ЦА посылает криптограмму В.
Наибольшим допущением, сделанным в этом протоколе, является то, что А обладает достаточной компетентностью для генерации хороших сеансовых ключей. Необходимо помнить, случайные числа генерировать не является простой задачей.
Практические реализации протоколов обеспечения безопасности с применением симметричных шифраторов
ПротоколWide-Mouth Frog
Один из наиболее простых протоколов использующих ключевую хэш-функцию MAC и работающий с передачей трех сообщений для аутентификации пользователей на двух общих секретных ключах (один для поддержки протокола шифрования, другой для прокола аутентификации).
1) А генерирует сеансовый ключ ki, свою метку времени t ai, и выполняет шифрование на долгосрочном ключе Ka, Ea (ki, B, Ka,t ai)= c ai.
Активная часть протокола:
1) А передает ЦА криптограмму Ea.
2) ЦА дешифрует принятое сообщение c ai, на ключе Ka, Da (c ai)= { ki, B, t ai }и шифрует его на ключе Kb, добавляя к нему свою метку времени t si, Eb (ki, B, Kb,t si)= c bi и передает его В.
Таким образом корреспондент В имеет зашифрованный сеансовый ключ ему останется только дешифровать принятое от ЦРК сообщение и установить его. Однако в данной схеме имеется существенный недостаток, заключающийся в повышенной ответственности за выработку ключа у корреспондента – инициатора соединения. Если ключ окажется слабым, то сеанс зашифрованной связи окажется бесполезной тратой временного и вычислительного ресурса.
Но по причине простоты эта схема дает хороший запас по ВВХ к экстенсивному усилению шифрования стойкости за счет длины ключа и является стойкой к атаке “внедрение в середину”.
ПротоколYahalom
В этом протоколе также абоненты А и В имеют с ЦА общий секретный ключ [M. Burrows, M. Abadi, R. Nidham “A Logic Autentification”, M. Burrows, M. Abadi, R. Nidham “Rejoiner to Nessett”]. Схема организации связи соответствует предыдущему протоколу, но в данной ситуации сеансовый ключ вырабатывает не корреспондент, а ЦРК.
Алгоритм работы протокола приведен ниже:
А объединяет свое имя и случайное число, и отправляет созданное сообщение В. А корреспондент В объединяет имя А, его случайное число, свое случайное число, далее шифрует созданное сообщение на общем с ЦРК секретном ключе и посылает его ЦРК, добавляя свое имя потом ЦРК создает два сообщения. Первое включает имя В, сеансовый ключ, случайные числа В и А и шифруется секретным ключом А. Второе состоит из имени А, сеансового ключа и шифруется секретным ключом В. ЦРК посылает оба сообщения А. А дешифрует первое сообщение, извлекает сеансовый ключ и убеждается, что случайное число соответствует переданному ранее на этапе (1). А посылает В два сообщения. Одним является сообщение от ЦРК, зашифрованное на ключе В. Вторым является это ПСП корреспондента В, зашифрованная на сеансовом ключе. В дешифрует первое сообщение, извлекает сеансовый ключ и убеждается, что случайное число совпадает.
1) А генерирует случайное число r ai передает В вместе со своим именем, { B, r ai }.
2) В вырабатывает r bi случайное число выполняет шифрование Eb (A, B, Kb, r bi, r ai)= c bi и передает c bi ЦРК.
3) ЦРК генерирует сеансовый ключ k i и выполняет шифрование двух сообщений:
1. Eb (ki, A, Kb)= c s1i
2. Ea (ki, B, Ka, r bi, r ai)= c s2i
1) ЦРК передает { cs2i , c s1 i } корреспонденту A.
2) А дешифрует c s2 i, Da (Ka, c s2 i)={ ki, B,Ka, r b’ i, r a’ i } проверяет r a’ i = r a’, в случае совпадения устанавливает сеансовый ключ k i, выполняет шифрование Ek (ki, r b’ i)= c abi и передает В { cabi, c s1 i }.
3) В дешифрует c s1 i, Db (c s1 i)={ ki, A }устанавливает сеансовый ключ ki и дешифрует cabi, Dk (c abi)= r b’ i после чего проверяет равенство r b’ i =r b’ i.
В результате работы данного протокола корреспонденты А и В убеждены в авторстве сообщений получаемых от других корреспондентов и ЦРК. Также теперь ответственность за выработку сеансового ключа несет корреспондент с заведомо большим вычислительным ресурсом и возможностью централизованного упрощенного контроля и распределения ключевого материала.
В данной схеме имеется существенный недостаток, заключающийся в повышенной ответственности за выработку ключа у корреспондента – инициатора соединения. Если ключ окажется слабым, то сеанс зашифрованной связи окажется бесполезной тратой временного и вычислительного ресурса.
Но по причине простоты эта схема дает хороший запас по ВВХ к экстенсивному усилению шифрования стойкости за счет длины ключа и является стойкой к атаке “внедрение в середину”.
Протокол Needham-Schroeder
В протоколе, разработанном Роджером Нидхэмом и Майклом Шредером [R. M. Needham, M. D. Schroeder “Using Encryption of Autentifications in Large Networks of Computers”], используются симметричная криптография и ДЦ.
А посылает ЦРК сообщение, содержащее его имя, имя корреспондента В и случайное число. ЦРК генерирует сеансовый ключ и шифрует сообщение, содержащее сеансовый ключ и имя А, секретным ключом В. Затем он шифрует случайное число А, имя В, сеансовый ключ и зашифрованное сообщение секретным ключом А. После чего, он отправляет шифрованное сообщение А. А дешифрует сообщение и извлекает сеансовый ключ. Он убеждается, что случайное число совпадает со значением, отправленным ЦРК на этапе 1. Затем он посылает В сообщение, зашифрованное ЦРК секретным ключом В. В дешифрует принятое сообщение и извлекает сеансовый ключ. Затем В генерирует другое случайное число, шифрует это число сеансовым ключом и отправляет его А. А дешифрует сообщение на сеансовом ключе. Он создает число r B-1 и шифрует это число на сеансовом ключе. Затем он посылает это сообщение обратно В. В дешифрует принятое сообщение на сеансовом ключе и проверяет значение r B-1.
1) А создает сообщение { A,B, r a } и посылает его ЦРК.
2) ЦРК генерирует k i, шифрует на k b пару Ek (kb , ki, A)= c bi и добавляет { r a,B, ki,, c bi }. Передает В сообщение зашифрованное на ka Ek (kb, r a,B, ki, c bi)= c ai.
3) А принимает c ai дешифрует Dk (c ai)={ r a’,B, ki, c bi } проверяет r a =r a’. И переедет В сообщение c bi.
4) В принимает c bi и дешифрует на своем ключе k b Dk (c bi)={ ki, A }. Он генерирует случайное число r b и шифрует его на сеансовом ключе ki, Ek (ki, r b)= c b2 i и передает его А.
5) А дешифрует Dk (c b2 i)= { ki, r b }, и вычисляет (r b -1) и шифрует его на ключе ki, Ek (r b -1)= c b3 i, передает c b3 i корреспонденту В.
6) В принимает сообщение c b3 i, дешифрует его Ek (c b3 i)= (r b’ -1) сравнивает с r b -1.
Все эти операции с выработкой случайных чисел необходимы для защиты от атаки, основанной на повторной передаче. Злоумышленник, предпринимая попытку вскрытия повторной передачей, записывает сообщения от корреспондентов с целью дальнейшего их использования. Однако случайное число на этапе (2) и является подтверждает А подлинность сообщения от ЦРК и не является повторной передачей ответа от одной из пошлых итераций протокола. Аналогично обстоит и с проверкой достоверности сообщений подтверждения подлинности сообщений корреспондента В.
Таким образом применение рандомизации в данном протоколе защищает его от повторной работу на старых или заведомо подложных ключах.
Протокол Otway-Rees
Этот протокол также использует симметричную криптографию [D. Otway O. Rees “Efficient and Timely Manual Autentification”], и работает по следующей схеме:
Корреспондент А создает сообщение, состоящее из порядкового номера I, его имени, имени корреспондента В и случайного числа. Это сообщение шифруется ключом, общим для А и ЦРК. Корреспондент А посылает это сообщение В вместе с порядковым номером и их именами:
{I, A, B Ek(kat, RA, I, A, B)}
Корреспондент В создает сообщение, состоящее из нового случайного числа, порядкового номера, имени А и имени В. Сообщение шифруется ключом, общим для А и В. Корреспондент В посылает это сообщение ЦРК
вместе зашифрованным сообщением А, порядковым номером, их именами: {I, A, B, Ek(kat, RA, I, A, B), Ek(kab, RB, I, A, B)}
ЦРК генерирует сеансовый ключ ki,. Затем он создает два сообщения. Одно, состоящее из случайного числа корреспондента А и сеансового ключа, зашифрованного на общем секретном ключе, для ЦРК и А. Другое сообщение, состоящее из случайного числа корреспондента В и сеансового ключа, зашифрованное на секретном ключе, общем для ЦРК и корреспондента В. ЦРК отправляет оба сообщения вместе с порядковым номером корреспонденту В: {I, Ek(kat, RA, ki), EB(kbt,RB, ki)}
Корреспондент В отправляет А сообщение, зашифрованное его секретным ключом, и порядковый номер: {I, Ek(kab, ki, RA)}.
Корреспондент А дешифрует сообщение, получая свой ключ и случайное число. А убеждается, что входе протокола они не изменились.
Предварительные вычисления:
1) А выполняет шифрование Ek(kat, RA, I, A, B)= c ai.
2) В выполняет шифрование Ek(kbt, RB, I, A, B) =c bi
3) ЦРК генерирует сеансовый ключ.
Активная часть протокола:
1) А создает сообщение {I, A, B, c ai } и передает его корреспонденту В.
2) В принимает сообщение и добавляет к нему c bi и передает {I, A, B, c bi } ЦРК.
3) ЦРК принимает сообщения, дешифрует Dk(kat, c ai) = {RA, I, A, B}, Dk(kbt, c bi) = {RB, I, A, B}, выполняет шифрование Ek(kbt, RB, ki) =s bi, Ek(kat, RA, ki) =s ai создает два сообщения {s ai,I}, {s bi,I} и передает их корреспонденту В.
4) В принимает оба сообщения, дешифрует на своем секретном ключе Dk(s bi) ={R’B, ki }, проверяет подлинность R’B как равенство R’B = RB и передает сообщение {s ai,I}, корреспонденту А.
5) А принимает сообщение {s ai,I}, дешифрует на своем секретном ключе Dk(s ai) ={R’A, ki }, проверяет равенство R’А = RА.
Если проверка всех случайных чисел прошла успешно, и порядковый номер не изменился входе протокола, корреспонденты А и В убеждаются в подлинности друг друга и получают сеансовый ключ для организации работы протокола шифрования.
Протокол Neuman-Stubblebine
Этот протокол, является модификацией протокола Yahalom, в нем также имеется противодействие атаке на повторной передачей с подавлениям [A. Kehne, J.Schonwalder, H. Langendofer “A Nonce-Based Protocol for Multiple Autentifications” ] и позднее в [B.C. Ncuman S. Stubblebine “A Note on the Use Timestamps as Nonces”].
Корреспондент А генерирует случайное число и объединяет свое имя с ним, и отправляет созданное сообщение корреспонденту В. В объединяет имя А, его случайное число и метку времени, шифрует созданное сообщение общим с ЦРК секретным ключом и посылает его ЦРК, добавляя свое имя и новое выработанное случайное число. ЦРК принимает сообщение, генерирует сеансовый ключ. Затем он создает два сообщения. Первое включает имя В, случайное число А, сеансовый ключ, метку времени и шифруется на секретном ключе, А. Второе сообщение состоит из имени А, сеансового ключа, метки времени и шифруется на секретном ключе,
В. ЦРК посылает оба сообщения А вместе со случайным числом корреспондента В. А дешифрует сообщение, зашифрованное на его ключе, извлекает сеансовый ключ и убеждается, что случайное число совпадает со значением, отправленным на этапе (1). А посылает В два сообщения. Одним является сообщение ЦРК, зашифрованное на секретном ключе В. Второе - это случайное число корреспондента В, зашифрованное на сеансовом ключе. В дешифрует принятое сообщение, зашифрованное на его ключе, извлекает сеансовый ключ и убеждается, что значения метки времени и случайное число те же что и на этапе (2).
1) А генерирует RA и посылает свое имя и RA корреспонденту В.
2) В формирует метку времени ti, случайное число RB, выполняет шифрование Ek(kbt, RA, ti )= c bi на своем секретном ключе. После чего передает { c bi, B,RB }, ЦРК.
3) ЦРК принимает сообщение В, генерирует ki, выполняет шифрование Ek(kat, A, ki, ti )= c b2 i, Ek(kbt, B, ki,, RA, ti )= c a2 i. Передает сообщение { c a2 i, c b2 i,B} корреспонденту А.
4) А дешифрует принятое сообщение на своем ключе Dk(kat, c a2 i )= { B, R’A, ti ki }, устанавливает сеансовый ключ ki, проверяет равенство R’A = RA. Выполняет шифрование Ek(ki, ti,RB)= c a3 i. Передает корреспонденту В { c a3 i, c b2 i }
5) В принимает { c a3 i, c b2 i }, дешифрует Dk(c b2 i )= { A, ki, RA, ti } устанавливает сеансовый ключ ki, на нем выполняет дешифрование Dk(c a3 i ) = { t’ia,R’B } и проверяет метку времени и равенство RB = R’B.
Если оба случайных числа и метка времени совпадают, А и В убеждаются в подлинности дуг друга и получают сеансовый ключ. Синхронизация часов всех участников протокола не требуется, так как метка времени формируется и определяется только по часам корреспондента В и, соответственно, проверяется только им же.