Глава 3
Введение в криптографию
В этой главе рассматриваются основные понятия криптографии, а также
предоставлена дополнительная информация, которая понадобится вам при
изучении последующих глав книги.
3.1
Шифрование
Шифрование — это и есть первоначальное назначение криптографии. На
рис. 3.1 изображена общая схема обмена данными, требующая применения
шифрования. Пользователи А и Б хотят общаться друг с другом. (В англо-
язычной литературе по криптографии для обозначения пользователей и зло-
умышленников принято применять личные имена, в частности Alice, Bob
и Eve.) К сожалению, в общем случае канал общения не является безопас-
ным. Он прослушивается злоумышленником Е. Каждое сообщение
m
, кото-
рое пользователь А отсылает пользователю Б, получает и злоумышленник Е.
(Это же справедливо и для сообщений, которые пользователь Б отсылает
пользователю А, за исключением того, что пользователи А и Б меняются ме-
стами. Если удастся защитить сообщения пользователя А, то это же решение
можно применить и для защиты сообщений пользователя Б, поэтому в даль-
нейшем будем говорить только о сообщениях, отсылаемых пользователем А
пользователю Б.) Что же нужно сделать, чтобы злоумышленник Е не смог
читать сообщения?
Чтобы злоумышленник Е не смог понять сообщения, которыми обмени-
ваются пользователи А и Б, применяется схема шифрования, представлен-
ная на рис. 3.2. Вначале пользователи А и Б договариваются о применении
секретного ключа
K
e
. Для этого им следует воспользоваться каналом об-
щения, который не может прослушиваться злоумышленником Е (например,
39
40
Глава 3. Введение в криптографию
Пользователь А
Злоумышленник Е
Пользователь Б
m
m
m
m
Рис. 3.1.
Как обеспечить безопасность общения пользователей А и Б?
Пользователь А
Злоумышленник Е
Пользователь Б
m, c
:=
E
(
K
e
, m
)
c
c
c, m
:=
D
(
K
e
, c
)
Рис. 3.2.
Общая схема шифрования
пользователь А может отослать копию ключа пользователю Б по почте или
поступить другим подобным образом).
Когда пользователь А хочет отослать сообщение
m
, он вначале зашифро-
вывает его с помощью функции шифрования. Обозначим функцию шифрова-
ния как
E
(
K
e
, m
)
, а результат применения этой функции назовем
шифрован-
ным текстом (ciphertext)
c
. (Исходное сообщение
m
называется
открытым
текстом (plaintext)
.) Вместо того чтобы посылать пользователю Б сообще-
ние
m
, пользователь А посылает ему шифрованный текст
c
:=
E
(
K
e
, m
)
.
Когда пользователь Б получает сообщение
c
, он может расшифровать его
с помощью функции дешифрования
D
(
K
e
, c
)
и получить исходный откры-
тый текст
m
, который ему хотел отослать пользователь А.
Злоумышленник Е не знает ключ
K
e
, поэтому если он перехватит шифро-
ванный текст
c
, то не сможет его расшифровать. Хорошая функция шифрова-
ния делает невозможным определение открытого текста
m
по шифрованному
тексту
c
без ключа
K
e
.
Описанная схема шифрования может применяться не только для обмена
сообщениями электронной почты (наиболее очевидная область применения),
но и для хранения данных. Хранение информации можно рассматривать как
процесс передачи сообщения не в пространстве, а во времени. В этом случае
пользователи А и Б зачастую являются одним и тем же лицом, однако сама
схема шифрования остается неизменной.
3.1. Шифрование
41
3.1.1
Принцип Кирхгофа
Для расшифровки шифрованного текста пользователю Б нужны две ве-
щи: алгоритм дешифрования
D
и ключ
K
e
. Знаменитый принцип Кирхгофа
формулируется следующим образом: надежность схемы шифрования долж-
на зависеть только от секретности ключа
K
e
и не зависеть от секретности
алгоритмов шифрования и дешифрования.
Для появления данного правила были весьма серьезные основания. Изме-
нять алгоритмы сложно. Они встраиваются в аппаратное или программное
обеспечение, которое может с трудом поддаваться обновлению. На практи-
ке один и тот же алгоритм используется довольно долгое время. Это всего
лишь суровая правда жизни. Кроме того, даже простой ключ трудно со-
хранить в секрете. Обеспечить же секретность целого алгоритма намного
сложнее (и потому намного дороже). Никто не станет разрабатывать крип-
тографическую систему только для двух пользователей. Каждый участник
системы (а таких могут быть миллионы) использует один и тот же алгоритм.
Злоумышленнику Е достаточно всего лишь получить алгоритм от одного из
них, а найти незащищенного пользователя среди миллионов не так уж труд-
но. В конце концов, можно просто украсть ноутбук с установленным на нем
алгоритмом. А помните нашу параноидальную модель? Злоумышленник Е
может оказаться одним из остальных пользователей системы или даже од-
ним из ее разработчиков.
Существует еще несколько аргументов в пользу публикации алгоритмов
шифрования. Опыт подсказывает, что достаточно сделать маленькую ошиб-
ку — и созданный криптографический алгоритм окажется совершенно ни-
кудышным. Если алгоритм не является открытым, никто не обнаружит эту
ошибку, пока на систему не нападет злоумышленник. Последний сможет ис-
пользовать найденный недостаток для взлома системы. Как консультантам,
нам не раз доводилось анализировать секретные алгоритмы шифрования,
и
все
они были слабыми. Вот почему в наших кругах распространено здоро-
вое недоверие ко всем закрытым, конфиденциальным или другим в той или
иной мере секретным алгоритмам. Не поддавайтесь старому заблуждению:
“Если мы сохраним в секрете и алгоритм, то только увеличим безопасность”.
Это неправда. Потенциальное повышение безопасности, вызванное сохране-
нием алгоритма в секрете, невелико, а вот потенциальное снижение — огром-
но. Большинство секретных алгоритмов настолько плохи, что любые громкие
утверждения наподобие приведенного выше граничат с демонстрацией соб-
ственной некомпетентности.
|