Вы находитесь на странице: 1из 19

8.

Коды аутентификации сообщений:


Аутентификация — установление подлинности. В общем случае этот термин
может относиться ко всем аспектам информационного взаимодействия.

Аутентификация сообщений представляет собой процедуру проверки того, что


полученные сообщения пришли от указанного источника и не были изменены в
пути следования. В аутентификации сообщений могут быть выделены два
основных уровня:
1. На низшем уровне должна выполняться некоторая функция, порождающая
аутентификатор (удостоверение, используемое для подтверждения
подлинности субъекта).
2. Аутентификатор затем используется как примитив в протоколе
аутентификации высшего уровня, дающем получателю сообщения
возможность проверить достоверность сообщения.
Функции, которые могут служить для создания аутентификатора, можно разделить
на три класса:
1. Шифрование сообщения.
В качестве аутентификатора используется шифрованный текст всего сообщения.
1. Вычисление кода аутентичности сообщения. В качестве аутентификатора
выступает значение фиксированной длины, генерируемое некоторой
открытой функцией сообщения и секретным ключом.
2. Вычисление функции хэширования (хэш-код).В качестве аутентификатора
используется значение фиксированной длины, генерируемое некоторой
открытой функцией, противопоставляющей любому сообщению
произвольной длины значение фиксированной длины, называемое значением
хэш-функции.

MAC (Message authentication code)


MAC = Hash (Key | Msg)
MAC = Hash (Msg | Key)
MAC = Hash (Msg | const | Key)

MAC (message authentication code — код аутентичности сообщения) средство


обеспечения имитозащиты сообщений. Обычно применяется для обеспечения
целостности и защиты от фальсификации передаваемой информации. В качестве
значение HASH может выступать любая хеш-функция или функция проверки
целостности, хоть CRC32. А если мы говорим о криптографической защите, то в
качестве хеш-функции должны выбираться исключительно криптографически
стойкие.
На вход всегда подается защищаемое сообщение Msg и секретный параметр Key.
Стойкость имитовставки напрямую зависит от стойкости выбранного секретного
параметра Key, т.е. его длины и "структурной сложности" (использование
разнообразного алфавита или байтовых последовательностей). Как применять и в
какой последовательности склеивать данные определяется в процессе реализации
или на стадии разработки.

MAC (Message authentication code)


Важно понимать, что входной блок рассматривается как одно большое сообщение
склеенное («|» конкатениция) из разных параметров, частью из которых должны
обладать только проверяющие и подписывающие лица.
Процесс формирования MAC:

a.HMAC;
HMAC (hash-based message authentication code)
HMAC =H ((K ⊕Opad )|| H ((K ⊕ Ipad ) || M ))
Н – функция хеширования.
64 байтовые константы:
Оpad = 0x5c5c...5c
Ipad = 0x3636...36
Является более продвинутой версией MAC. На вход всегда подается защищаемое
сообщение Msg и секретный параметр Key. Получила большую популярность в
сетевых протоколах, а также среди алгоритмов генерации ключей для
симметричных блочных шифров. Независимо от длины ключа и сообщения,
практически всегда будет выполняться минимум 4 итерации хеширования, т.к.
блоки сложения ключа с ipad и opad всегда 64 байта. (см. лекция хеш-функции)

Не из лк: Алгоритм HMAC (Hash-based Message Authentication Code – код


аутентификации сообщения на основе хэширования). Данный вид аутентификации
подразумевает наличие у клиента и сервера некоего секретного ключа, который
известен только им двоим. То есть это механизм, который использует
криптографические хеш-функции в сочетании с секретным ключом. HMAC
является одним из вариантов MAC и, следовательно, используется для контроля
целостности сообщений. В данном случае в основе алгоритма лежит функция
хэширования, которая позволяет вычислить код аутентификации сообщения.
Принцип работы
• Размер ключа выравнивается с размером блока используемого алгоритма
хэширования;
• если ключ key длиннее блока, он укорачивается путем применения к нему
используемого алгоритма хэширования hash:
key = hash(key);
отметим, что размер выходного значения алгоритма хэширования обычно много
меньше размера блока хэшируемых данных – например, соответственно 128 и 512
битов для алгоритма MD4; рекомендуется минимальный размер ключа, равный
размеру выходного значения алгоритма хэширования;
• если размер ключа меньше размера блока, то выровненный ключ k
получается путем дополнения до размера блока нулевыми битами исходного
(или укороченного) ключа key.
• Выровненный ключ k складывается по модулю 2 с константой C1, которая
представляет собой блок данных, заполненный байтами с
шестнадцатеричным значением 36; аналогичным образом ключ k также
складывается с константой C2, которая представляет собой блок данных,
заполненный байтами с шестнадцатеричным значением 5С:
ki = k ⊕ C1; ko = k ⊕ C2.
• Вычисляется хэш-значение от результата конкатенации модифицированного
ключа ki и сообщения m:
t = hash(ki || m).
• Выходным значением алгоритма HMAC является хэш-значение от результата
конкатенации модифицированного ключа ko и полученного на предыдущем
шаге значения t:
hmac = hash(ko || t).
Таким образом, при вычислении HMAC используемый алгоритм хэширования
применяется дважды; каждый раз с участием модифицированного ключа. Размер
выходного значения алгоритма HMAC равен размеру выходного значения
алгоритма хэширования, а общая формула вычисления HMAC (без учета
выравнивания ключа) выглядит следующим образом:
HMAC =H ((K ⊕Opad )|| H ((K ⊕ Ipad ) || M ))
Алгоритмы, построенные с помощью HMAC, традиционно называют следующим
образом:
• «HMAC-x», где «x» – используемый алгоритм хэширования, например,
HMAC-MD4;
• «HMAC-x-k» в тех случаях, где выходное значение алгоритма хэширования
может быть усечено (т. е. может использоваться частично); в данном случае
«k» – размер выходного значения алгоритма HMAC в битах; пример –
алгоритм HMAC-SHA1-80.

Принцип использования и быстродействие


Использование алгоритма позволяет убедиться в целостности данных, отсутствие
каких-либо изменений с момента создания, передачи или сохранения доверенным
источником. Для проверки такого рода необходимо, чтобы две стороны,
участвующие в процессе обмена, доверяли друг другу и заранее договорились об
использовании секретного ключа, который известен только им. Тем самым
гарантируется аутентичность источника и сообщения. Недостаток этого подхода
— необходимо наличие двух доверяющих друг другу сторон.
Быстродействие HMAC не намного хуже, чем у используемой функции
хэширования, что особенно заметно при хэшировании длинных сообщений,
поскольку само сообщение при использовании HMAC обрабатывается однократно.

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

b.OMAC;
OMAC (One-Key CBC-MAC)

M – аутентифицируемое сообщение;
M = m1 | m2 | ... | mx
Е – функция шифрования;
F – функция выработки
доп. ключа(ей)
k – секретный ключ.
Более устойчива к различным атакам за счет использования блока tweak (значение
поправки). Рекомендуется к использованию стандартизирующей организацией
NIST. Очевидно вычислительно нагружена.

OMAC (от англ. One-Key CBC-MAC) – вариация технологии CBC-MAC,


работающая с сообщениями любой длины.

c.NMAC;
Алгоритм NMAC был также предложен авторами алгоритма HMAC. Данный
алгоритм позволяет использовать при аутентификации сообщений два ключа: k1 и
k2. Формула вычисления NMAC крайне проста:
NMAC(k1, k2, m) = hash(k2, hash(k1, m)),
где второй параметр функции hash() обозначает хэшируемое сообщение, а первый
параметр – нестандартный вектор инициализации, в качестве которого
используется ключ (соответственно, k1 и k2 обозначают уже выровненные до
размера вектора инициализации ключи). NMAC является, фактически,
обобщением HMAC, поскольку ключи k1 и k2 можно использовать независимо, а
можно представить как производные от единственного ключа k, вычисляемые
следующим образом:
k1 = h(k ⊕ C1); k2 = h(k ⊕ C2),
где h() – функция сжатия используемого алгоритма хэширования; в данном случае
применяется стандартный вектор инициализации алгоритма.

d.CMAC;
Также существуют по способу вычислений:

СMAC (CBC Message authentication code)


M – аутентифицируемое
сообщение;
M = m1 | m2 | ... | mx
Е – функция шифрования;
k – секретный ключ.
Обратите внимание, что в отличие от режима шифрования CBC, здесь нет входных
блоков. Все вычисленные значения как бы подмешиваются к следующему блоку. И
лишь после последнего преобразования получается «заветный» MAC.

Не из лк: CMAC представляет собой блочный шифр на основе алгоритма MAC.


Он может быть использован для обеспечения гарантии подлинности и,
следовательно, целостности двоичных данных. Этот режим работы исправляет
недостатки CBC-MAC (CBC-MAC является безопасным только для сообщений
фиксированной длины).
По сути алгоритм CMAC является разновидностью CBC-MAC, предложенное и
описанное Блэком Рогвеем, под названием XCBC. Алгоритм XCBC эффективно
устраняет недостатки безопасности CBC-MAC, но требует трех ключей. В своих
работах Ивата и Куросава предложили улучшение XCBC и назвали полученный
алгоритм One-Key CBC-MAC (OMAC). Позже они представили OMAC1,
улучшение OMAC, с дополнительным анализом безопасности. Алгоритм OMAC
уменьшает количество ключевого материала, необходимого для XCBC. CMAC
эквивалентно OMAC1.
Для создания ℓ-битного CMAC-тега (Т) в сообщении (m) с помощью B-битного
блочного шифра (E) и секретного ключа (K), сначала генерируются два B-
разрядных подключа (K1 и K2) используя следующий алгоритм (это эквивалентно
умножению на х и х2 в конечном поле GF (2b)). Пусть ≪ означает стандартный
оператор сдвига влево:
1. Рассчитать временное значение k0 = Ek(0).
2. Если msb(k0) = 0, k1 = k0 ≪ 1, то k1 = (k0 ≪ 1)⊕C; где С-некоторая
постоянная, зависящая только от b.
3. Если msb(k1) = 0, то k2 = k1 ≪ 1, иначе k2 = (k1 ≪ 1) ⊕ C.
4. Вывод ключей (k1, 2) для процесса генерации MAC.

В качестве небольшого примера, предположим, что b = 4, C = 00112, and k0 = Ek(0)


= 01012. Тогда k1 = 10102 and k2 = 0100 ⊕ 0011 = 01112.

Процесс генерации CMAC-тега заключается в следующем:


1. Разделить сообщение b-битные блоки m = m1 ∥ … ∥ mn−1 ∥ mn′ являются
полными блоками. (Пустое сообщение рассматривается как 1 неполный
блок.)
2. Если mn′ является полным блоком, то mn = k1 ⊕ mn′ else mn = k2 ⊕ (mn′∥
10…02).
3. Пусть c0 = 00…02.
4. Для i = 1,…, n, вычислить ci = Ek(ci−1 ⊕ mi).
5. Вывод t = msbℓ(cn).

Процесс проверки состоит в следующем:


1. Используйте алгоритм выше для генерации тега.
2. Убедитесь, что сгенерированный тег равен полученной метке.

9.Протоколы безопасности и аутентификации:


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

1. Корректность: В случае честных участников A (доказывающего) и B


(проверяющего), А может успешно доказать свою идентичность участнику B, то
есть B завершит протокол, приняв доказательство A
2. Нетранзитивность: Обеспечение того, что В не может использовать
сообщения, которыми он обменивался с A, для того, чтобы выдать себя за A перед
третьей стороной C.);
3. Невозможность маскировки: Вероятность того, что любая сторона C, отличная
от A, выполняющая протокол вместо A, может убедить B завершить протокол с
положительным исходом, пренебрежимо мала. (понятие пренебережимо малой
вероятности зависит от приложения) (невозможность маскировки);

Указанные свойства должны выполняться, если злоумышленник C имеет


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

• Протоколы, основанные на известной обеим сторонам информации. Такой


информацией могут быть пароли, личные идентификационные номера (PIN-
коды от англ. Personal identification number), секретные или открытые ключи,
знание которых демонстрируется во время выполнения протокола.
• Протоколы, использующие некоторые физические приборы, имеющиеся у
доказывающего, с помощью которых и проводится идентификация. Таким
прибором может быть магнитная или интеллектуальная пластиковая карта
или прибор, генерирующий меняющиеся со временем пароли.
• Протоколы, использующие физические параметры, составляющие
неотъемлемую принадлежность доказывающего. В качестве таковых могут
выступать подписи, отпечатки пальцев, характеристики голоса, геометрия
руки и т. д. (биометрические протоколы). Обычно имеют
некриптографический характер и далее не рассматриваются .

a.Основные свойства протоколов аутентификации


1 . Взаимность аутентификации – идентификация может быть односторонней и
двухсторонней; (аутентификации односторонняя, когда, например, вы
подключаетесь к доверенному серверу и передаете ему все необходимые
параметры и он их проверяет, но при этом сервер вам ничего кроме доступа не
предоставляет (в случае легитимности ваших данных). Аутентификация
двухсторонняя, подразумевает предоставление необходимых параметров с двух
сторон: сервер вам свои, а вы серверу свои. После всех проверок вы решаете
общаться дальше с сервером или нет, а сервер решает пустить вас или нет.)
2. Вычислительная эффективность – количество операций, требуемых для
исполнения протокола; (алгоритмические вычисления должны быть минимальны
и оправданны по нагрузке. В противном случае процесс согласования (например,
доступа) может быть очень затянут или компьютер абонента не сможет вычислить
какие-либо секретные параметры.
3. Коммуникационная эффективность – количество сообщений и объем
передаваемых данных. (тут очевидно, количество пересылаемых данных должно
быть конечно и передаваться должны исключительно необходимые данные)
4. Участие третьих сторон в реальном времени; На третью сторону (если она
используется) возлагается функция распределения ключей, верификации
(проверки данных) и т.д. и она всегда должна быть доступна и предоставлять
только актуальную (на момент соединения) информацию.
5. Природа доверия к третьей стороне; Если в информ. обмене участвует 3
сторона, то оба абонента должны полностью (беспрекословно) доверять ей и
предоставлять все свои параметры, необходимые для верификации и общения с
ними.
6 . Природа гарантий безопасности – примером могут служить свойства
доказанной стойкости и свойство нулевого разглашения. Доверие всем
используемым криптографическим алгоритмам и базовым принципам
положенным в основу того или иного протокола. Зачастую без предоставление
возможности проверить стойкость и корректность работы.
7 . Хранение секретов – место и метод хранения критически важного ключевого
материала. У абонентов и третье стороны должно быть всегда обеспечение место
хранения секретной информации, доступ к которой есть только у владельца этой
информации. Также третья сторона должна отвечать за актуальность, целостность
и не возможность подмены на другую информации.
Виды парольных схем (основные)
1. Обычная парольная схема. Основная проблема – качество паролей. Сложный
пароль трудно запомнить, для простых паролей реализуются переборные атаки.
2. Использование PIN. Применяется совместно с другими способами, обычно
только для разблокирования устройства аутентификации (смарт-карты), т.к. PIN
обычно очень короткий (4-8 символов). Используется с ограничением на
количество попыток подбора PIN. Либо двух факторная аутентификация, через
альтернативные каналы связи.
3. Схемы с одноразовыми паролями.

Схемы с одноразовыми паролями


1. Пользователи имеют общий список одноразовых паролей, который
предварительно им доставляется и затем каждый новый сеанс связи начинается с
нового пароля из списка. (необходима синхронизация и ответственное хранение
списка)
2. Очередной пароль вычисляется путем зашифрования предыдущего пароля на
общем секретном ключе.
3. Схема Лэмпорта. H() – хэш-функция. w – общее секретное значение. t –
предусматриваемое количество раундов аутентификации (количество сеансов).
Вычисляется последовательность w, H(w), H(H(w)),...,H t (w)
Пароль для сеанса с номером i: H t–i+1 (w)
После исчерпания паролей или случайного зацикливания выбирается
новое секретное значение.
4. Схема со случайными числами: P – общий секрет; H() – хэш-функция; r –
случайное число (или отметка времени).
Пароль: <r, H(P||r)>
На приемной стороне проверяющий вычисляет хэш, пользуясь локальной копией
секретного значения P.

Предполагают использование меняющегося от сеанса к сеансу запроса, на


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

Параметры, используемые для генерации запросов


1. Временные метки. В запрос включается метка времени доказывающего.
Используются для предотвращения повтора и обеспечения своевременности
сообщений. Для реализации схемы требуется наличие службы единого времени в
системе.
2. Последовательные номера. Используются в тех же целях. Недостаток: на
сервере требуется хранить таблицу последовательных номеров сообщений для
каждого клиента.
3. Случайные числа. При включении в запрос обеспечивают его уникальность.
Предотвращают повторное использование сообщений протокола аутентификации.

Замечание: односторонний протокол не подразумевает передачи только в одну


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

Не стоит воспринимать эти протоколы как реальные криптографические


инструментарии, это лишь модели (базовые основы)

b.Одно-, дву-, трех-сторонние протоколы;

Аутентификация на основе симметричных алгоритмов


Предполагается, что обе стороны обладают одним и тем же секретным ключом K.
Стандарт ISO/IEC 9798-2
1. Односторонняя аутентификация с использованием меток времени (А владеет
индетифиатором В и доказывает ему, путем закрытой пересылки):
A → B : E K (t A ;B) (1)
После получения и расшифрования B проверяет, что временная метка tA
приемлема и дополнительно может проверить, что полученный идентификатор
является его собственным.
2. Односторонняя аутентификация с использованием случайных чисел.
Временные метки заменяются случайными числами ценой дополнительного
сообщения.
A ←B: r B (1)
A → B: EK (rB ; B) (2)
B расшифровывает полученное сообщение и сравнивает число rB в ответе с
запросом
3. Взаимная аутентификация с использованием случайных чисел:
A ← B: rB (1)
A → B: EK (rA ; rB ;B) (2)
A ← B: EK (rB ; rA ) (3)

Стандарт ISO/IEC 9798-4


A) функция шифрования EK заменяется на алгоритм вычисления MAC hK();
B) вместо расшифрования и проверки совпадения полей получатель
самостоятельно вычисляет значение MAC по известным величинам, и
принимает сообщение, если вычисленное значение совпадает с принятым;
C) чтобы дать возможность получателю вычислить MAC, при однораундо-
вом механизме в сообщение (1) добавляется незашифрованное поле tA , а в
трехраундовых механизмах rA должно быть переслано незашифрованным в
качестве дополнительного поля в сообщении (2).
Модифицированный протокол взаимной аутентификации SKID3 (Secret Key
IDentification), выглядит так:
A ← B: rB (1)
A → B: rA ; hK (rA ; rB ;B) (2)
A ← B : hK (rB ; rA ;A) (3)
Каждая из сторон обладая всеми необходимыми данными, вычисляет хеш
для верификации и убеждается в подлинности абонента.

Протокол Kerberos (базовый вариант)


В протоколе участвует третья сторона – центр распределения ключей T.
1. Обозначения.
E – симметричный алгоритм шифрования;
NA – случайное число, выбранное A; tA – временная метка по локальным
часам A;
k – сеансовый ключ, выбранный T, который будет общим для A и B.
L – срок действия ключа;
ticketВ = EKBT (k,A,L)- "билет" или "квитанция" (ticket) для стороны B.
authenticator = Ek (k, tA , Asub ) - аутентификатор;
2. Начальная установка (выполняется один раз). A и T определяют
общий ключ KAT ; аналогично, B и T определяют KBT .
3. Сообщения в протоколе:
A → T: A; B; NA (1)
A ← T: EKAT (k, NA , L, B), ticketB ; (2)
A → B: ticketB ; authenticator (3) //квитанция передается стороне B без
расшифрования
A ← B: Ek (tA , Bsub ) (4)

Аутентификация на основе асимметричных алгоритмов


Протоколы на основе шифрования
1. Протокол односторонней аутентификации:
Пусть h(r) – функция хэширования (исключает возможность подмены
шифрованного сообщения), ЕA – функция шифрования на открытом ключе
A, r – случайное число.
А ← В: h(r), E A (r, B) (1)
А → В: r (2)
Свидетельство h(r) доказывает знание r стороной B без его раскрытия
(обеспечивает защиту от атаки по выбранному шифртексту)
2. Модифицированный протокол взаимной идентификации Нидхэма-
Шрёдера для идентификации:
A → B: EB (r1 ;A) (1)
A ← B: EA (r1 ; r2 ) (2)
A → B: r2 (3)

В качестве верифицирующих алгоритма и гаранта целостности данных


используются цифровая подпись
Протоколы на основе цифровой подписи
(стандарт ISO/IEC 9798-3)
SigA () – ЭЦП стороны А; SigB () – ЭЦП стороны B.
certA – сертификат открытого ключа стороны A
certB – сертификат открытого ключа стороны B.
1. Односторонняя аутентификация с временными метками:
A → B : certA ; tA ; B; SigA (tA ;B) (1)
2. Односторонняя аутентификация со случайными числами
A ←B: rB (1)
A → B: certA ; rA ; B; SigA (rA ; rB ; B) (2)
3. Взаимная аутентификация со случайными числами:
A ← B: rB (1)
A → B: certA ; rA ; B; SigA (rA ; rB ; B) (2)
A ← B: certB ; A; SigB (rB ; rA ;A) (3)
Этот протокол обеспечивает взаимную аутентификацию сторон.

Передача и выработка ключей с использованием асимметричного шифрования


Двухраундовый протокол сильной аутентификации стандарта X.509:
Пусть D A =(t A , r A , B, data 1 , E B (k 1 )), D B =(t B , r B , A, data 2 , E A (k 2 )), cert A и
cert B – сертификаты открытых ключей пользователей A и B, data 1 и data 2 –
необязательные данные, требующие аутентификации источника, и пусть A
заранее получил и аутентифицировал открытый ключ B. Сообщения протокола
будут следующими:
(1) A→B: cert A , D A , Sig A (D A )
(2) A←B: cert B , D B , Sig B (D B ).
В результате при успешном завершении протокола у обоих сторон будут общие
ключи k 1 и k 2 , и кроме того, обе стороны аутентифицируют друг друга.
Если добавить к этому протоколу еще одно сообщение, то можно будет отказаться
от использования временных штампов (в сообщениях их можно установить в 0 и
не использовать). Мы получаем
Трехраундовый протокол сильной аутентификации стандарта X.509.
(1) A→B: cert A , D A , Sig A (D A )
(2) A←B: cert B , D B , Sig B (D B ).
(3) A→B: (r B , B), Sig A (r B , B).

Трехсторонние протоколы
Использование центра передачи ключей
1. Обозначения. E – симметричный алгоритм шифрования. M может включать
сеансовый ключ K. Т – центр передачи ключей
2. Начальная установка. A и T устанавливают общий ключ K AT . Аналогично B и T
устанавливают ключ K BT .
3. Сообщения протокола.
1. A → T: A, E K AT  B,M 
2. A ← T: E K BT  M,A 
3. A → B: E K BT  M,A 
Безопасность протокола
1. Зашифрованный идентификатор А в сообщении 3 служит для В
подтверждением источника ключа.
2. Перестановка местами полей в сообщениях 1 и 2 служит для предотвращения
атаки "зеркало", т.е. возврата сообщения 1 как исходящего от пользователя B.
3. Предотвращение повторов может быть достигнуто включением в сообщение М
временной метки или последовательного номера
4. Атака по выбранному исходному тексту на K BT в сообщении 2 может быть
предотвращена использованием режима шифрования CBC и включением в
сообщение М случайного числа.
Сертификаты симметричных ключей
Центр передачи ключей T выдает каждому пользователю A сертификат
симметричного ключа
cert A = E K T ( K AT , A )
здесь K T – секретный ключ T, известный только ему. Сертификаты ключей
могут храниться в общедоступном каталоге.
При использовании сертификатов теперь нет необходимости хранить в центре все
общие ключи центра и пользователей. Этот сертификат предоставляется
пользователем центру в случае, когда необходима передача ключа.
Протокол передачи ключа изменяется только в сообщении 1, которое будет
выглядеть так:
A→T : cert A , E K (B , M ) ,cert B
AT

c.Протоколы с нулевым разглашением;

Аутентификация с нулевым разглашением


Целью стороны A является ее аутентификация путем доказательства знания
секрета s (ассоциированного с A посредством аутентичных открытых данных)
любому проверяющему B без раскрытия какой-либо информации о секрете s, не
известной или не вычислимой стороной B до исполнения протокола.
Протокол Фиата-Шамира
Стойкость основывается на сложности проблемы извлечения квадратного
корня по модулю большого составного целого числа n с неизвестным
разложением, которая эквивалентна проблеме факторизации n.
СОДЕРЖАНИЕ ПРОТОКОЛА: A доказывает знание секрета s стороне B в
t исполнениях 3-раундового протокола.

1. Инициализация (выполняется один раз)


(a) Доверенный центр T выбирает и публикует модуль RSA: n = pq,
сохраняя p и q в секрете.
(b) Доказывающий A выбирает секрет s, взаимно простой с n, 1 ≤ s ≤ n − 1,
вычисляет v = s2 mod n, и регистрирует v у T в качестве открытого ключа.
2. Сообщения протокола. В каждом из t раундов посылаются три сообщения:
A → B : x = r2 mod n (1)
A ← B : e ∈ {0; 1} (2)
e
A → B : y = rs mod n (3)

3. Действия протокола. Следующие шаги повторяются t раз (последовательно и


независимо). B принимает доказательство, если все t раундов успешны.
(a) A выбирает случайное (обязательство) r, 1 ≤ r ≤ n − 1, и посылает
(свидетельство)
x = r 2 mod n стороне B.
(b) B случайно выбирает (запрос) бит e = 0 или e = 1, и посылает e стороне
A.
(c) A вычисляет и посылает B (ответ) y, либо y = r (если e = 0), либо y = rs
mod n
(если e = 1).
(d) B отвергает доказательство, если y = 0, и принимает, проверив y2 = xve
(mod n).
(В зависимости от e, y 2 = x или y 2 = xv mod n, поскольку v = s 2 mod n.) Запрос e
требует, чтобы A могла ответить на два вопроса, один из которых демонстрирует
ее знание секрета s, а другой – простой вопрос (для честных доказывающих) для
предотвращения обмана. Противник, маскирующийся под A, может попытаться
обмануть, выбрав произвольное r и установив x = r 2 /v, а затем отвечая на запрос e
= 1 "правильным" ответом y = r; но он не сможет ответить на вопрос e = 0, который
требует знания квадратного корня из x mod n.
Доказывающий A, знающий s, может ответить на оба вопроса, но противник в
лучшем случае может ответить только на один вопрос и поэтому с вероятностью
только ½ может избежать обнаружения. Для уменьшения вероятности обмана до
любой произвольно малой величины 2 −t (например, t = 20 or t = 40), протокол
повторяется t раз, и B принимает доказательство A только если на все t вопросов (в
t раундах) были получены правильные ответы.

Протокол Гиллоу-Кискатера
Пусть I A – идентификационная информация стороны A (или значение хэш-
функции от нее), n – открытое произведение двух секретных простых чисел p и q,
v – открытое значение (показатель степени), s = v –1 mod φ(n) – секретное значение
доверенной стороны.
Секретный параметр s A стороны A выбирается центром T так, что I A · s A v = 1
(mod n), т.е. s A = (I A ·) –s mod n.
Сторона A отправляет B свои идентификационные данные IA . Протокол
доказательства выглядит следующим образом.
(1) А выбирает случайное целое r: такое, что 1 ≤ r ≤ n – 1 и вычисляет
v
T = r (mod n) и отправляет это значение стороне B.
(2) B выбирает случайное целое d: 1 ≤ d ≤ v и отправляет это число стороне A.
(3) A вычисляет D = r · s A d (mod n) и отправляет это значение B.
(4) B вычисляет T' = D v · I A d (mod n) и проверяет выполнение равенства T' = T.
Если оно выполняется, то проверка считается завершенной успешно.
В самом деле, T' = D v I A d = (rsA d ) v · I A d = r v s A dv I A d = r v (I A s A v ) d = r v ≡ T
(mod n).
Протокол Шнорра
Инициализация. Выбираются два больших простых числа p и q, так что q | (p – 1).
Выбирается элемент β мультипликативного порядка q. Каждая из сторон получает
копию системных параметров и открытый ключ доверенной стороны T,
позволяющий проверять подписи S T (m) под сообщениями m. Далее выбирается
параметр безопасности t: 2 t < q.
Для каждого пользователя выбираются следующие параметры:
(a) Каждому доказывающему A присваивается уникальный идентификатор I A .
(b) A выбирает секретный ключ a: 0 ≤ a ≤ q – 1, и вычисляет v = β -a mod p.
(c) A удостоверяет себя перед T обычными средствами (например, по паспорту),
передает v T и получает сертификат cert A = (I A ; v; S T (I A ; v)), связывающий IA с v.
Сообщения в протоколе. Протокол включает три сообщения:
A → B: cert A ; x = β r mod p (1)
A ← B: e: 1 ≤ e ≤ 2 t < q (2)
A → B : y = ae + r mod q (3)
Действия в протоколе. A идентифицирует себя перед B следующим образом:
(a) A выбирает случайное r (обязательство), 1 ≤ r ≤ q – 1, вычисляет свидетельство
x =  r mod p и посылает сообщение (1) B.
(b) B проверяет открытый ключ A (v), проверяя подпись T на сертификате cert A ,
затем отсылает A (никогда ранее не использовавшееся) случайное e (запрос), 1 ≤ e
≤ 2t .
(c) A проверяет 1 ≤ e ≤ 2 t и посылает B (ответ) y = ae + r mod q.
(d) B вычисляет z = β y v e и принимает A при условии, что z = x.
d.Протокол Диффи-Хеллмана

Протокол Диффи-Хеллмана
Для инициализации протокола стороны выбирают подходящее простое число p и
генератор α мультипликативной группы Z p . Затем действия протокола
следующие:
(a) А выбирает случайное секретное значение x, 1≤ x ≤ p – 2 и направляет B
сообщение (1): A → B: α x mod p;
(b) B выбирает случайное секретное значение y, 1≤ y ≤ p – 2 и направляет A
сообщение (2): A ← B: α y mod p;
(c) B получает α x и вычисляет общий ключ K по формуле K = (α x ) y mod p;
(d) A получает α y и вычисляет общий ключ K по формуле K = (αy ) x mod p;

Ключевые отношения – состояние, когда ведущие информационный обмен


стороны обладают некоторыми общими данными (ключевым мате-риалом),
служащим для реализации различных криптографических методов. Ключевой
материал может включать секретные или открытые ключи, синхропосылки и
другие несекретные параметры.
Управление ключами – это информационный процесс установления и
поддержания ключевых отношений между сторонами, охватывающий следующие
методы и процедуры:
1. генерацию, распределение и установку ключей;
2. управление использованием ключевого материала;
3. обновление, отзыв и уничтожение ключевого материала;
4. хранение, резервное копирование/восстановление и архивирование ключевого
материала.
Цель процесса управления ключами – поддержание ключевых отношений и
ключевого материала таким образом, что парируются соответствующие угрозы,
такие как:
1. компрометация секретных ключей;
2. компрометация аутентичности секретных или открытых ключей.;
3. несанкционированное использование секретных или открытых ключей.
4. на практике в качестве еще одной цели управления ключами ставится
соответствие принятой политике безопасности.

Свойства протоколов управления ключами


1 . Природа аутентификации. В протоколе может быть обеспечено выполнение
любой комбинации из следующих свойств:
- аутентификация субъекта;
- аутентификация ключа;
- подтверждение ключа;
2. Взаимность аутентификации. Аутентификация субъекта, аутентификация
ключа и подтверждение ключа могут быть односторонними и взаимными;
3. Актуальность ключа. Ключ является актуальным, когда гарантируется то, что он
не был использован ранее законной стороной или скомпрометирован
злоумышленником;
4. Контроль над ключом. В некоторых протоколах (передачи ключа) ключ
выбирается одной стороной, в других (выработки ключа) он получается из общего
информационного обмена, и ни одна из сторон не может предсказать его значение;
5. Эффективность. Включает следующие показатели:
a) количество передаваемых сообщений между сторонами;
b) общее количество передаваемых бит;
c) сложность вычислений, производимых каждой стороной;
d) возможность предварительных вычислений для ум
6. Участие третьей стороны. (классификация) Показатели включают:
a) необходимость участия третьей стороны в реальном времени, вне реального
времени, либо отсутствие такой необходимости;
b) степень доверия к третьей стороне (например, доверие в области сертификации
открытых ключей, или доверие в неразглашении долговременных секретных
ключей)
7. Тип используемого сертификата, если таковой требуется. В более общей
постановке, можно рассматривать способ распределения первоначального
ключевого материала.
8. Безотзывность. Протокол может предусматривать некоторый вид "квитанции",
подтверждающей получение ключевого материала. (Невозможность отказать от
каких-либо совершенных операций информационного обмена)
9. Опережающая секретность (forward secrecy) Протокол обладает этим свойством,
если компрометация долговременных ключей не приводит к компрометации
прошлых сеансовых ключей. (Базовый принцип на котором построены все
современные сетевые протоколы, такие как SSL\TLS, IPSec и т.д.)

Вам также может понравиться