Коды проверки подлинности сообщения

Код проверки подлинности сообщения(message authentication code, MAC), известный также как код про-


верки подлинности данных (data authentication code, DAG), представляет собой однонаправленную хэш-функцию с добавлением секретного ключа (см. раздел 18.14). Значение хэш-функции является функцией и прообраза, и ключа. Теория остается той же, что и для хэш-функций, но только тот, кто знает ключ, может проверить значе­ние хэш-функции. MAC можно создать с помощью хэш-функции или блочного алгоритма шифрования, сущест­вуют также и специализированные MAC.

2.5 Передача информации с использованием криптографии с открытыми клю­чами

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

В 1976 году Уитфилд Диффи и Мартин Хеллман навсегда изменили эту парадигму криптографии [496]. (NSA заявило, что знало о такой возможности еще в 1966 году, но доказательств не представило .) Они описали криптографию с открытыми ключами,используя два различных ключа - один открытый и один закрытый. Определение закрытого ключа по открытому требует огромных вычислительных затрат. Кто угодно, используя открытый ключ может зашифровать сообщение, но не расшифровать его. Расшифровать сообщение может только владелец закрытого ключа. Это похоже на превращение криптографического сейфа в почтовый ящик. Шифрование с открытым ключом аналогично опусканию письма в почтовый ящик, любой может сделать это, опустив письмо в прорезь почтового ящика. Дешифрирование с закрытым ключом напоминает извлечение по ч-ты из почтового ящика. Обычно это гораздо сложнее - вам может понадобиться сварочный агрегат . Однако, если вы знаете секрет (у вас есть ключ от почтового ящика), вы без труда достанете вашу почту.

Математической основой процесса являются ранее обсуждавшиеся однонаправленные хэш-функции с люком. Шифрование выполняется в прямом направлении. Указания по шифрованию открыты, каждый может зашифровать сообщение. Дешифрирование выполняется в обратном направлении. Оно настолько трудоемко, что, не зная секрета, даже на компьютерах Cray за тысячи (и миллионы) лет невозможно расшифровать соо б-щение. Секретом, или люком, и служит закрытый ключ, он делает дешифрирование таким же простым, как и шифрование. Вот как, используя криптографию с открытыми ключами, Алиса может послать сообщение Бобу :

(1) Алиса и Боб согласовывают криптосистему с открытыми ключами.

(2) Боб посылает Алисе свой открытый ключ.

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

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

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

Обычно целая сеть пользователей согласовывает используемую криптосистему . У каждого из них есть от­крытый и закрытый ключ, открытые ключи помещаются в общедоступной базе данных . Теперь протокол вы­глядит еще проще:

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

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

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

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