Иллюстрированный самоучитель по Protection to information

Основные криптографические протоколы


Обмен ключами

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

сеансовым,

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

Обмен ключами для симметричных криптосистем

Предположим, что Антон и Борис, являющиеся пользователями компьютерной сети, получили секретные ключи от Дмитрия (доверенного липа, наделенного правами арбитра). Секретные ключи попали к Антону и Борису еще до начала сеанса связи, а злоумышленник Зиновий ровным счетом ничего не знает о том, какие это ключи. Тогда для обмена шифрованными сообщениями по компьютерной сети Антон и Борис могут воспользоваться следующим криптографическим протоколом:

1. Антон связывается с Дмитрием и запрашивает у него сеансовый ключ для связи с Борисом.

2. Дмитрий генерирует случайный сеансовый ключ и создает две шифрованных копии этого ключа — один раз Дмитрий шифрует сеансовый ключ с помощью секретного ключа Антона, второй — с помощью секретного ключа Бориса. Затем Дмитрий отсылает обе копии Антону.

3. Антон расшифровывает свою копию сеансового ключа.



4. Антон отправляет Борису его копию сеансового ключа.

5. Борис расшифровывает свою копию сеансового ключа.

6. Антон отправляет Борису сообщение, зашифрованное с использованием сеансового ключа, копия которого имеется у них обоих.

И Антон, и Борис полностью полагаются на честность Дмитрия. Если Зиновию удастся его подкупить или обмануть, ни о какой секретности обмена сообщениями между Антоном и Борисом не может быть и речи. В этом ел у чае Зиновий получит доступ ко всем ключам, используемым абонентами компьютерной сети, и сможет прочесть шифрованные сообщения, которыми они обмениваются по сети. Для этого Зиновию достаточно аккуратно копировать всю передаваемую через нее информацию.

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



Обмен ключами для криптосистем с открытым ключом



Обычно Антон и Борис используют криптографический алгоритм с открытым ключом, чтобы договориться о сеансовом ключе, при помощи которого они будут шифровать свои данные. В этом случае протокол обмена сеансовыми ключами значительно упрощается, и Антон может послать шифрованное сообщение Борису, даже если Борис и не слышал о существовании Антона:

1. Антон находит открытый ключ Бориса в справочнике, в базе данных или получает его от Дмитрия.

2. Антон генерирует случайный сеансовый ключ, шифрует его при помощи открытого ключа Бориса и отправляет ему в зашифрованном виде.

3. Борис расшифровывает сообщение Антона с использованием своего тайного ключа.

4.

Антон и Борис обмениваются сообщениями, зашифрованными на одном и том же сеансовом ключе.



Атака методом сведения к середине



Петр, возможности которого ограничены лишь перехватом передаваемых сообщений, может попытаться вскрыть применяемый криптографический алгоритм с открытым ключом или организовать атаку со знанием только шифртекста. По сравнению с Петром у Зиновия выбор гораздо богаче: он ' может не только "подслушивать" за Антоном и Борисом, но также видоизменять и даже уничтожать сообщения, которыми они обмениваются между собой. Более того, Зиновий может перевоплотиться в Антона, когда общается с Борисом. Он также может попытаться выдать себя за Бориса, вступая в контакт с Антоном. При этом Зиновий может действовать, например, следующим образом:

1. Антон посылает Борису свой открытый ключ. Зиновий перехватывает этот ключ, а вместо него отсылает Борису свой собственный открытый ключ.

2. Борис посылает Антону свой открытый ключ. Зиновий перехватывает лог ключ, а вместо него отсылает Антону свой собственный открытый ключ.

3. Антон шлет Борису сообщение, зашифрованное с помощью открытого ключа, который Антон ошибочно считает принадлежащим Борису.


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

4.

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

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

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



Блокировочный протокол



Блокировочный протокол, изобретенный американскими криптологами Р. Райвестом и А. Шамиром, позволяет существенно осложнить жизнь Зиновию и ему подобным личностям:

1. Антон посылает Борису свой открытый ключ.

2. Борис посылает Антону свой открытый ключ.

3. Антон зашифровывает свое сообщение и отсылает половину этого сообщения Борису.

4. Борис зашифровывает свое сообщение и отсылает половину этого сообщения Антону.

5. Антон отсылает вторую половину своего сообщения Борису.

6. Борис расшифровывает сообщение Антона с помощью своего тайного ключа.


Борис отсылает вторую половину своего сообщения Антону.

7. Антон расшифровывает сообщение Бориса с помощью своего тайного ключа.

Необходимо, чтобы одну часть сообщения, посланного Антоном или Борисом, нельзя было прочитать, не имея на руках другой его части. Тогда Борис не сможет прочитать сообщение Антона до тех пор, пока не дойдет до шага 6 блокировочного протокола, а Борис не сможет ознакомиться с сообщением Антона до шага 7. Существует несколько способов добиться этого:

если для шифрования используется блочный криптографический алгоритм, то первую часть отсылаемого сообщения можно, например, составить из первых половин блоков шифртекста, а вторую — из вторых;

расшифрование сообщения можно поставить в зависимость от случайного битового вектора, который отсылается вместе со второй частью сообщения;

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

На шаге 1 блокировочного протокола Зиновий по-прежнему может подставить свой собственный открытый ключ вместо открытого ключа Антона. Однако теперь на шаге 3 Зиновий будет не в состоянии дешифровать перехваченное сообщение Антона и зашифровать его заново при помощи открытого ключа Бориса. Зиновию непременно придется придумать свое собственное сообщение (случайный битовый вектор или хэш-значение) и послан, его половину Борису. То же самое касается и сообщения Бориса Антону. которое Зиновий перехватит на шаге 4 блокировочного протокола. А после того как Зиновий получит в свое распоряжение вторые половины подлинных сообщений Антона и Бориса, будет уже слишком поздно изменить придуманные им ранее фальшивые сообщения, которые он уже отослал от их имени. Следовательно, Зиновию придется дать волю своей фантазии и продолжить вести всю переписку от имени Антона и Бориса.

Конечно, может случиться так, что, у Зиновия очень живое воображение и что, он весьма близко знаком с Антоном и Борисом. В результате они никогда не заподозрят, что на самом деле общаются не друг с другом, а с Зиновием.


Однако в любом случае Зиновию будет значительно труднее, чем тогда, когда Антон и Борис используют обычный, а не блокировочный протокол.



Протокол обмена ключами с цифровой подписью



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

В результате Зиновию придется весьма несладко. Он не сможет выдать себя

за Антона или Бориса, поскольку не знает их тайных ключей. Зиновий будет лишен возможности подменить открытые ключи Антона и Бориса на свои собственные, поскольку в его распоряжении есть только сеансовые ключи с подписью Дмитрия, удостоверяющей их принадлежность Зиновию.

Зиновию остается только перехватывать шифрованные сообщения, которыми обмениваются Антон и Борис, и пытаться их читать с помощью криптоаналитических методов.

Однако следует отметить, что в протоколе обмена сеансовыми ключами с цифровой подписью появился новый участник — Дмитрий. Если Зиновий сумеет перевоплотиться в Дмитрия, он сможет подписывать и навязывать участникам протокола известные ему фальшивые сеансовые ключи. Таким образом, несмотря ни на что, у Зиновия все же остается возможность атаковать этот протокол, воспользовавшись методом сведения к середине.



Одновременная передача ключа и сообщения



Антон и Борис совершенно необязательно передают друг другу сеансовые ключи перед тем, как приступить к обмену сообщениями. Вместо этого они могут воспользоваться следующим протоколом:

1. Антон генерирует случайный сеансовый ключ Кис помощью него зашифровывает сообщение М, получая в результате Е

К

(М).

2. Антон извлекает открытый ключ Бориса В из базы данных.

3. Антон шифрует сеансовый ключ К при помощи В, получая в результате Е

В

(К)

.

4. Антон посылает Борису Е


Содержание раздела