часть проблемы. Злоумышленник Е все еще может помешать общению поль-
зователей А и Б или задержать доставку сообщений, удаляя их и пересылая
пользователю Б позднее. Однако этим круг возможностей злоумышленника
ограничивается.
Для большей наглядности представьте себе случай, когда пользователь А
отсылает последовательность сообщений
m
1
, m
2
, m
3
, . . .
. Пользователь Б при-
нимает только те сообщения, которые имеют правильное значение MAC и по-
44
Глава 3. Введение в криптографию
рядковый номер которых строго больше
1
порядкового номера последнего
принятого сообщения. Таким образом пользователь Б получает последова-
тельность сообщений, которая является
подпоследовательностью
последо-
вательности сообщений, отправленных пользователем А. Подпоследователь-
ность — это та же последовательность, из которой были удалены нуль или
более сообщений.
Описанная схема аутентификации и нумерации сообщений — это все, чем
криптография может помочь в данной ситуации. Пользователь Б будет по-
лучать подпоследовательность сообщений, отправленных пользователем А,
однако злоумышленник Е не сможет нанести трафику сообщений никако-
го ущерба, кроме удаления некоторых или всех сообщений. Чтобы избежать
потери информации, пользователи А и Б могут применить схему повторной
отправки утерянных сообщений, однако это зависит от особенностей конкрет-
ного приложения, применяемого для отправки сообщений, и не относится
к криптографии.
Разумеется, во многих случаях пользователям А и Б придется применять
и шифрование и аутентификацию. Более подробно сочетание шифрования
и аутентификации рассматривается несколько позднее, а пока хотим вас пре-
дупредить: никогда не путайте эти понятия! Шифрование сообщения не ме-
шает злоумышленнику манипулировать его содержимым, а аутентификация
сообщения не обеспечивает его секретности. Одна из классических ошибок
криптографии — думать, что шифрование сообщения помешает злоумыш-
леннику изменить его. Это не так.
3.3
Шифрование с открытым ключом
Чтобы использовать схему шифрования, описанную в разделе 3.1, поль-
зователи А и Б должны обладать общим ключом
K
e
. А как договориться
о применении этого ключа? Пользователь А не может отослать ключ поль-
зователю Б по каналу общения, потому что ключ тут же попадет в руки
злоумышленника Е. В действительности проблема распространения ключей
и управления ими является одной из наиболее сложных проблем криптогра-
фии, для которой существуют лишь частичные решения.
Пользователи А и Б могут обменяться ключом, встретившись где-нибудь
за чашечкой кофе. Однако, если они являются частью группы из 20 друзей,
которые хотят общаться между собой, каждому члену группы понадобится
обменяться 19 ключами с остальными ее членами. Всего для такой группы
понадобится 190 ключей. Это слишком сложно, а с возрастанием количества
людей в группе сложность обмена ключами еще более возрастет.
1
“Строго больше” означает “больше и не равно”.
3.3. Шифрование с открытым ключом
45
Пользователь А
Пользователь Б
m, c
:=
E
(
P
B
, m
)
c
c, m
:=
D
(
S
B
, c
)
Рис. 3.5.
Общая схема шифрования с открытым
ключом
Проблема распространения криптографических ключей стара как мир.
Одной из важных попыток ее решения является применение криптографии
с открытым ключом. Рассмотрим схему шифрования с открытым ключом
(рис. 3.5). На схеме не показан злоумышленник Е; в дальнейшем будем про-
сто предполагать, что сообщения, которыми обмениваются пользователи А
и Б, всегда доступны злоумышленнику Е. Во всем остальном эта схема весьма
напоминает схему, представленную на рис. 3.2. Разница состоит лишь в том,
что пользователи А и Б больше не применяют один и тот же ключ шифрова-
ния. Они используют
разные
ключи. В этом и состоит революционная идея
криптографии с открытым ключом.
Вначале пользователь Б с помощью специального алгоритма генерирует
пару ключей
(
S
B
, P
B
)
. Это секретный ключ
S
B
и открытый ключ
P
B
. Затем
пользователь Б делает удивительную вещь: он публикует ключ
P
B
. (Иначе
почему бы этот ключ назывался открытым?)
Когда пользователь А хочет послать сообщение пользователю Б, он нахо-
дит открытый ключ
P
B
, опубликованный пользователем Б. Пользователь А
зашифровывает сообщение
m
с помощью открытого ключа
P
B
и посылает
пользователю Б полученный шифрованный текст
c
. Пользователь Б приме-
няет к полученному тексту свой секретный ключ
S
B
и алгоритм дешифрова-
ния, в результате он получает исходное сообщение
m
.
Чтобы этот метод действительно работал, алгоритмы генерации пары
ключей, шифрования и дешифрования должны гарантировать, что в процес-
се расшифровки всегда будет получено исходное сообщение. Другими слова-
ми, равенство
D
(
S
B
, E
(
P
B
, m
)) =
m
должно выполняться для всех возмож-
ных значений
m
. Мы еще вернемся к этому вопросу немного позднее.
Пользователи А и Б применяют не только разные ключи, но и совер-
шенно разные алгоритмы шифрования и дешифрования. Все схемы шифро-
вания с открытым ключом имеют серьезную математическую основу. Одно
из очевидных требований к подобным схемам состоит в том, чтобы на основе
открытого ключа нельзя было вычислить соответствующий секретный ключ.
Этот тип шифрования называется
асимметричным шифрованием (asym-
metric-key encryption)
или
шифрованием с открытым ключом (public-key en-
cryption)
в противоположность
симметричному шифрованию (symmetric-key
|