Протоколы рукопожатия

Пусть существуют два абонента – A и B. Каждый из них обладает секретной информацией k (тот, кто обладает такой информацией, считается «своим», тот, кто не обладает – «чужим»). Допустим, абоненты A и B хотят начать взаимодействие, но предварительно им надо убедиться, что предполагаемый партнер является «своим», то есть обладает той же секретной информацией k. При этом ни один из абонентов не хочет раскрывать k ни своему vis-à-vis, ни предполагаемому злоумышленнику, который может прослушивать канал связи.

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

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

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

Протокол рукопожатия 1:

Е k (x) – шифрование текста x на ключе k (с использованием симметричной криптосистемы);

k – секретный ключ, которым обладают только «свои» абоненты.

A→B: случайное число r 1

B→A: s 1=E k (r 1)

A: вычисляет s 1*=E k (r 1) и проверяет равенство s 1= s 1*. Если равенство неверно, то A определяет В как «чужого» и прерывает протокол. Иначе A определяет B как «своего».

В→A: случайное число r 2

A→B: s 2=E k (r 2)

B: вычисляет s 2*=E k (r 2) и проверяет равенство s 2= s 2*. Если равенство неверно, то B определяет A как «чужого». Иначе B определяет A как «своего».

В приведенном протоколе секретный параметр k не фигурирует в канале связи в открытом виде, а используется только в качестве ключа шифрования. Стойкость данного протокола основана на стойкости использованной в ней системы шифрования. Если криптосистема стойка против атаки с известной парой «открытый текст – шифрованный текст», то сторонний противник, прослушивающий канал двух легальных абонентов, не сможет восстановить k с достаточной вероятностью.

Если шифрование одного и того же текста на разных ключах приводит к разным шифрованным текстам, то противник, пытающийся выдать себя за «своего», скорее всего, не сможет угадать правильное значение si (i =1,2).

Если криптосистема E – детерминированная (то есть паре x, k соответствует один и только один шифртекст y), то легальные абоненты A и B (обладающие общим секретным параметром k) всегда будут получать совпадение s 1= s 1*, s 2= s 2*. А значит, легальные абоненты при каждом выполнении протокола будут определяться друг другом как «свои». Итак, пришли к следующему

Замечанию:

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

Заметим также, что сторонний противник, способный вносить искажения в передаваемую информацию, вполне может нарушить взаимодействие A и B путем искажения параметров ri или si (i =1,2), заставив абонентов определить друг друга как «чужой».

Случайность чисел ri (i =1,2) важна. Шанс повторить уже однажды использованное число ri (i =1,2) должен быть близок к нулю, иначе противник, однажды перехватив сообщения двух легальных абонентов, может пройти идентификацию, просто посылая эти сообщения повторно.

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

Протокол рукопожатия 2:

Е k (x) – шифрование текста x на ключе k (с использованием симметричной криптосистемы);

k – секретный ключ, которым обладают только «свои» абоненты.

A→B: случайное число r 1

B→A: s 1=E k (r 1, r 2, B*), где r 2 – случайное число, B – идентификатор B

(* указывает на то, что этот параметр необязательный);

A: вычисляет (r 1´, r 2´, B*)=D k (s 1) и проверяет равенство r 1= r 1´. Если равенство неверно, то A определяет В как «чужого» и прерывает протокол. Иначе A определяет B как «своего».

A→B: s 2=E k (r 2, r 1);

B: вычисляет (r 2´, r 1´)=D k (s 2) и проверяет равенства r 1= r 1´, r 2= r 2´. Если равенства неверны, то B определяет A как «чужого». Иначе B определяет A как «своего».

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: