
Реферат / 1(1)
.pdfГлава 7
Криптосистемы с открытым ключом
72
Разработка средств криптографии с открытым ключом явилась величайшей и, возможно, единственной революцией во всей истории криптографии. От самых истоков криптографии до настоящего времени практически все криптографические системы базировались на использовании элементарных средств подстановки и перестановки. После тысяч лет работы с алгоритмами, которые должны были, по сути, использоваться вручную, существенным продвижением вперед в области традиционной криптографии оказалось изобретение барабанных шифровально-дешифровальных машин. Электромеханический барабан открыл возможности для разработки ужасно сложных систем шифрования. С появлением компьютеров появились еще более сложные системы, наиболее яркой из которых оказался алгоритм LUCIFER фирмы IBM, из которого впоследствии возник стандарт шифрования данных (DES). Но и барабанные шифровальные машины, и DES, хотя и знаменовали истинно значительное продвижение в деле шифрования, в своей основе использовали прозаические средства подстановки и перестановки. Криптография с открытым ключом обеспечивает радикальный поворот в сторону от всего, что делалось прежде.
Прежде всего, алгоритмы криптографии с открытым ключом используют математические функции, отличные от подстановок и перестановок. Но более важно то, что методы криптографии с открытым ключом являются асимметричными в том смысле, что они предполагают использование двух разных ключей, в отличие от методов симметричного традиционного шифрования, где предполагается только один ключ. Как мы увидим ниже, идея применения двух ключей повлекла глубокие изменения и в подходах к обеспечению конфиденциальности, и в области распределения ключей, и в процедурах аутентификации.
Перед тем как приступить к рассмотрению этого вопроса, мы должны сказать несколько слов о некоторых из широко распространенных заблуждений, касающихся шифрования с открытым ключом. Одним из таких заблуждений является утверждение, что шиф-
рование с открытым ключом более защищено от криптоанализа, чем традиционное шифрование. Подобное заявление было сделано, например, в знаменитой статье Гарднера (Gardner) из популярного журнала Scientific American. На самом же деле защита любой схемы шифрования зависит от длины ключа и объема вычислительной работы, требуемой для взлома шифра. В этом смысле нет принципиального различия между традиционным шифрованием и шифрованием с открытым ключом, и ни одна из этих схем не имеет преимущества перед другой с точки зрения криптоанализа.
Вторым заблуждением является утверждение, что шифрование с открытым клю-
чом оказывается универсальным подходом, делающим традиционное шифрование безнадежно устаревшим. Напротив, ввиду слишком высоких требований со стороны схем шифрования с открытым ключом к вычислительным ресурсам, отказ от схем традиционного шифрования кажется весьма маловероятным. Одним из открывателей метода шифрования с открытым ключом, "почти повсеместно применение шифрования с открытым ключом ограничивается сферой управления ключами и приложениями цифровой подписи".
Наконец, считается, что распределение ключей при шифровании с открытым ключом является тривиальной задачей по сравнению с достаточно запутанной процедурой квитирования (подтверждение установления связи), используемой в случае традиционного шифрования. На самом деле в случае шифрования с открытым ключом для этого требуется специальный протокол, вообще говоря, предполагающий существование некоторого центрального агента, а применяемые при этом процедуры не являются ни более простыми, ни более эффективными, чем те, которые требуются для традиционного шифрования.
Эта глава посвящена шифрованию с открытым ключом. Сначала мы опишем соответ-
73

ствующий подход на концептуальном уровне. Интересно то, что идея этого подхода была развита и опубликована еще до того, как была доказана его практическая эффективность. Затем мы перейдем к алгоритму RSA, наиболее важному из всех алгоритмов шифрования/дешифрования, доказавших свою эффективность в схемах шифрования с открытым ключом. После этого мы обсудим распределение ключей и управление ключами в криптосистемах с открытым ключом, включая процедуру обмена ключами по Диффи и Хеллману (Di e, Hellman).
Многие результаты теории криптосистем на основе шифрования с открытым ключом вытекают из результатов теории чисел. Если вы достаточно подготовлены, чтобы разобраться в системах криптографии, представленных в этой главе, глубокого понимания соответствующих результатов теории чисел вам не потребуется. Однако для лучшего уяснения сути алгоритмов шифрования все же требуется понимание некоторых результатов теории чисел.
7.1Принципы построения криптосистем с открытым ключом
Идея применения методов криптографии с открытым ключом возникла из попыток найти решение двух из наиболее сложных проблем, возникающих при использовании традиционного шифрования. Первой проблемой является распределение ключей, которое уже рассматривалось в определенных деталях ранее.
Как вы уже видели, распределение ключей при традиционном шифровании требует, чтобы обе участвующие в обмене данными стороны либо (1) уже имели общий ключ, который каким-то образом был им доставлен, либо (2) использовали услуги некоторого центра распределения ключей. Уитфилд Диффи (Whitfield Di e), один из открывателей метода шифрования с открытым ключом (вместе с Мартином Хеллманом (Martin Hellman), оба в то время работали в Станфордском университете), считал, что второе из этих требований противоречит самой сущности криптографии – возможности обеспечить полную секретность вашей собственной корреспонденции. Как он заметил: "Какой смысл имеет разработка неприступной криптосистемы, если ее пользователи должны использовать свои секретные ключи совместно с некоторым центром распределения ключей, который может быть скомпрометирован либо взломщиком, либо судебным решением?"
Второй проблемой, которую сформулировал Диффи и которая, очевидно, не связана с первой, является проблема "цифровых подписей". Если использование криптографии получило очень широкое распространение, и не только в области военного дела, но и в области коммерции и частных коммуникаций, то электронные сообщения и документы нуждаются в эквивалентах подписей, используемых в бумажных документах. Иными словами, можно ли разработать метод, с помощью которого обе стороны могли бы убедиться в том, что цифровое сообщение было отправлено данным конкретным лицом? Это требование оказывается несколько шире, чем требование аутентификации.
Диффи и Хеллман пришли к своему открытию в 1976 году, разработав метод, с помощью которого решались обе вышеупомянутые проблемы и который радикально отличался от всех известных ранее подходов в криптографии за всю ее четырехтысячелетнюю историю 1.
1Диффи и Хеллман были первыми, кто публично изложил принципы криптографии с открытым ключом
74

В следующем разделе мы рассмотрим общую схему криптографического подхода, построенного на использовании открытых ключей. Затем мы разберемся в особенностях алгоритма шифрования/дешифрования, являющегося сердцем этой схемы.
7.2Криптосистемы с открытым ключом
Алгоритмы шифрования с открытым ключом зависят от одного ключа для шифрования и другого, связанного с первым, ключа для дешифрования. Эти алгоритмы имеют следующую важную особенность.
•С точки зрения вычислений нереально определить ключ дешифрования, зная только используемый криптографический алгоритм и ключ шифрования.
Кроме того, некоторые алгоритмы (например, RSA) имеют следующее свойство.
•Любой из этих двух связанных ключей может служить для шифрования, и тогда другой может применяться для дешифрования.
На рис. 7.1. показана общая схема процесса шифрования с открытым ключом, которая выглядит следующим образом.
1.Каждая конечная система в сети генерирует пару ключей для шифрования и дешифрования получаемых сообщений.
2.Каждая из систем публикует свой ключ шифрования, размещая его ключ в открытом для всех реестре или файле. Этот и есть открытый ключ. Второй ключ, соответствующий открытому, остается в личном владении.
3.Если пользователь A собирается послать сообщение пользователю B, он шифрует сообщение, используя открытый ключ пользователя B.
4.Когда пользователь B получит сообщение, он дешифрует его с помощью своего личного ключа. Другой получатель не сможет дешифровать сообщение, поскольку личный ключ B знает только B.
Врамках этого подхода все участники имеют доступ к открытым ключам, а личные ключи генерируются на месте каждым участником для себя и поэтому их никогда не приходится распределять. До тех пор пока системе удается сохранять свой личный ключ в секрете, поступающие сообщения оказываются защищенными. В любой момент система может изменить свой личный ключ и опубликовать соответствующий ему открытый ключ, заменяющий старый открытый ключ.
Втабл. 7.1 сравниваются некоторые важные характеристики традиционного шифрования и шифрования с открытым ключом. Чтобы различать эти два подхода, мы будем называть ключи, предназначенные для традиционного шифрования, секретными ключами.
(это произошло в 1976 году). Однако не это событие следует считать истинным началом истории криптографии с открытым ключом. Адмирал Бобби Инман (Bobby Inman), бывший в то время Директором NSA (Агентство национальной безопасности США), заявил, что метод криптографии с открытым ключом был разработан в NSA еще в средине 60-х. Первое документальное упоминание об этом методе появилось в 1970 году в секретном отчете Джеймса Эллиса (James Ellis) из Группы защиты электронных коммуникаций Службы безопасности Великобритании. Эллис относил данную технологию к несекретным методам шифрования.
75

Два ключа, с помощью которых осуществляется шифрование с открытым ключом, будут называться, соответственно, открытым ключом и личным ключом 2. Личный ключ, конечно же, тоже должен храниться в секрете, но называется личным ключом, а не секретным ключом во избежание путаницы с ключом схемы традиционного шифрования.
Рис. 7.1 Шифрование с открытым ключом
2Предлагается использовать следующую согласованную систему обозначений. Секретный ключ обозначается Km, где m является некоторым модификатором: например, Ks, обозначает сеансовый ключ. Для пользователя A его открытый ключ обозначается KUa„ а соответствующий личный ключ – KRa. Шифрование открытого текста P может быть выполнено с секретным ключом, открытым ключом или личным ключом, что обозначается EKm[P], EKUa[P] или EKRa[P] соответственно. Точно так же дешифрование шифрованного текста C может быть выполнено с помощью секретного ключа, открытого ключа, или личного ключа, что обозначается соответственно DKm[C], DKUa[C] или DKRa[C].
76

Таблица 7.1 Традиционное шифрование и шифрование с открытым ключом
Традиционное шифрование |
Шифрование с открытым ключом |
Необходимо для работы
1.Один алгоритм с одним и тем же ключом служит для шифрования, и для дешифрования.
2.Отправитель и получатель должны использовать одинаковый алгоритм и ключ
Необходимо для защиты
1.Ключ должен сохранятся в секрете.
2.Должно быть невозможно или, по крайней мере, практически невозможно расшифровать сообщение при отсутствии дополнительной информации.
3.Знания алгоритма и наличия образцов шифрованого текста должно быть недостаточно, чтобы восстановить ключ.
Необходимо для работы
1.И для шифрования, и для дешифрования исползуется один алгоритм, но два ключа: один ключ для шифрования, а другой
– для дешифрования.
2.Отправитель и получатель должны иметь по одному из пары соответствующих ключей (не один и тот же).
Необходимо для защиты
1.Одиин из двух ключей должен храниться в секрете.
2.Должно быть невозможно или, по крайней мере, практически невозможно расшифровать сообщение при отсутствии дополнительной информации.
3.Знания алгоритма и одного из ключей и наличия образцов
шифрованого текста |
долж- |
но быть недостаточно, |
чтобы |
восстановить второй ключ.
Давайте рассмотрим основные элементы схемы шифрования с открытым ключом более подробно, используя рис. 7.2. Итак, имеется некоторый источник сообщений A, создающий сообщение X = [X1, X2, . . . , XM ] в виде открытого текста. Все M элементов X являются буквами некоторого конечного алфавита. Сообщение адресовано получателю B. Адресат B генерирует связанную пару ключей: открытый ключ KUb и личный ключ KRb. Ключ KRb остается известным только пользователю B, тогда как ключ KUb публично доступен и, таким образом, оказывается доступным отправителю A.
Имея сообщение X и ключ шифрования KUb в качестве входных данных, отправитель A формирует шифрованный текст Y = [Y1, Y2, . . . , YN ] следующим образом:
Y = EKUb(X).
Предполагаемый получатель, владея соответствующим личным ключом, сможет обратить это преобразование:
X = DKRb(Y ).
77

Противник, наблюдая Y и имея доступ к KUb, но не к KRb или X, должен будет пытаться восстановить X и/или KRb. Предполагается, что противник знает алгоритмы шифрования (E) и дешифрования (D). Если противника интересует только данное конкретное сообщение, то он сосредоточит свои усилия на восстановлении X с помощью получения
оценок ˆ для открытого текста. Но часто противник бывает заинтересован в возможности
X
чтения и последующих сообщений. В таком случае будет предпринята попытка восстано-
вить ключ путем генерирования для него оценки ˆ .
KRb KRb
Рис. 7.2 Криптосистема с открытым ключом: защита.
Мы уже упоминали выше, что любой из двух связанных ключей может применяться для шифрования, при этом предполагается, что другой будет служить для дешифрования. Это дает возможность реализовать различные криптографические схемы. Й если схема, показанная на рис. 7.2, обеспечивает конфиденциальность, то рис. 7.1(б) и рис. 7.3 показывают, как использовать шифрование с открытым ключом для аутентификации:
Y =EKRa(X),
X=DKUa(Y ).
Вэтом случае отправитель A готовит сообщение адресату B и перед отправлением шифрует это сообщение с помощью личного ключа пользователя A. Получатель B может дешифровать это сообщение, используя открытый ключ A. Ввиду того что сообщение было зашифровано личным ключом отправителя A, только он и мог подготовить это сообщение. Поэтому в данном случае все шифрованное сообщение выступает в качестве цифровой подписи. Кроме того, невозможно изменить сообщение без доступа к личному ключу пользователя A, поэтому сообщение решает и задачу идентификации отправителя, и задачу подтверждения целостности данных.
Всхеме, о которой идет речь, шифруется все сообщение, которое, хотя и идентифицирует отправителя, и подтверждает целостность содержимого, требует достаточно много памяти. Каждый документ, чтобы его можно было использовать, должен храниться в виде открытого текста. Еще один экземпляр документа должен сохраняться в виде шифрованного текста, чтобы в случае спора можно было бы восстановить источник и содержимое
78

оригинала. Более эффективным способом достижения того же результата является шифрование небольшого блока битов, являющегося функцией документа. Такой блок, называемый аутентификатором (authenticator), должен иметь такое свойство, чтобы нельзя было изменить документ без изменения аутентификатора. Если аутентификатор будет зашифрован с использованием личного ключа отправителя, он будет служить подписью, удостоверяющей источник, содержимое и порядок отправки сообщений.
Важно подчеркнуть, что только что описанный процесс шифрования не обеспечивает конфиденциальности. Это означает, что пересылаемому таким образом сообщению гарантирована защита от изменения, но не от перехвата. Это очевидно в том случае, когда для форматирования подписи используется только часть сообщения, поскольку тогда остаток сообщения передается открытым текстом. Но даже в случае полностью зашифрованного сообщения, как показано на рис. 7.3, конфиденциальность не обеспечивается ввиду того, что любой сторонний наблюдатель может расшифровать передаваемое сообщение с помощью открытого ключа отправителя.
Рис. 7.3 Криптосистема с открытым ключом: аутентификация.
Однако, можно обеспечить как аутентификацию, так и конфиденциальность повторным использованием схемы шифрования с открытым ключом (рис. 7.4):
Z =EKUb[EKRa(X)],
X=EKUa[EKRb(Z)].
Вданном случае мы начинаем, как и прежде, с шифрования сообщения с помощью личного ключа отправителя. Это обеспечивает цифровую подпись. Затем мы шифруем результат снова, но уже используя открытый ключ получателя. Конечный шифрованный текст сможет дешифровать только предполагаемый адресат, поскольку только он один имеет соответствующий личный ключ. Таким образом, конфиденциальность обеспечивается. Неудобство этого подхода заключается в том, что алгоритм шифрования с открытым ключом, который оказывается весьма сложным, должен при каждой передаче данных применяться четыре раза, а не два.
79

Рис. 7.4 Криптосистема с открытым ключом: защита и аутентификация.
7.3Применение криптосистем с открытым ключом
Прежде чем перейти к следующим вопросам, необходимо разъяснить один аспект криптосистем с открытым ключом, который в противном случае может породить недоразумения. Криптосистемы с открытым ключом характеризуются использованием криптографического алгоритма с двумя ключами, один из кото рых остается в личном пользовании, а второй открыт для всех. В зависимости от приложения отправитель использует либо свой личный ключ, либо открытый ключ получателя, либо же оба, если требуется выполнить какуюто специальную криптографическую функцию. В самых широких пределах использование крип тосистем с открытым ключом можно отнести к трем категориям.
•Шифрование/дешифрование. Отправитель шифрует сообщение с использованием открытого ключа получателя.
•Цифровая подпись. Отправитель "подписывает" сообщение с помощью своего личного ключа. Подпись получается в результате применения криптографического алгоритма к сообщению или к небольшому блоку данных, являющемуся функцией сообщения.
•Обмен ключами. Две стороны взаимодействуют, чтобы обменяться сеансовым ключом. При этом возможно несколько различных подходов, предполагающих применение личных ключей одной или обеих сторон.
Одни алгоритмы подходят для всех трех типов применения, тогда как другие предназначены только для одной или двух из этих категорий. Для алгоритмов, описываемых в этой книге, возможности их применения указаны в табл. 7.2.
80

Таблица 7.2 Применение криптосистем с открытым ключом
Алгоритм Шифрование/ Цифровая подпись Обмен ключами дешифрование
RSA |
Да |
Да |
Да |
Диффи-Хеллмана |
Нет |
Нет |
Да |
DSS |
Нет |
Да |
Нет |
|
|
|
|
7.4Условия применения методов криптографии с открытым ключом
Криптосистема, варианты которой показаны на рис. 7.2-7.4, зависит от криптографического алгоритма, предполагающего применение двух связанных ключей. Диффи и Хеллман предположили без доказательства, что такие алгоритмы существуют. Однако они указали условия, которым должны удовлетворять такие алгоритмы.
1.Для стороны B процесс генерирования пары ключей (открытый ключ KUb, личный ключ KRb) не должен вызывать вычислительных трудностей.
2.Для отправителя A не должен вызывать вычислительных трудностей процесс создания шифрованного текста при наличии открытого ключа и сообщения M, которое требуется зашифровать:
C= EKUb(M).
3.Для получателя B не должен вызывать вычислительных трудностей процесс дешифрования полученного шифрованного текста с помощью личного ключа с целью восстановления оригинального сообщения:
M= DKRb(C) = DKRb[EKUb(M)].
4.Для противника должно быть невозможным с точки зрения вычислительных возможностей восстановление личного ключа KRb из имеющегося открытого ключа KUb.
5.Для противника должно быть невозможным с точки зрения вычислительных возможностей восстановление оригинального сообщения M из имеющихся открытого ключа KUb и шифрованного текста C. К этим требованиям’ можно добавить еще одно, которое, хотя и представляется, в общем, полезным, не является необходимым для всех приложений, реализующих криптосистемы с открытым ключом.
6.Функции шифрования и дешифрования могут применяться в любом порядке:
M = EKUb[DKRb(M)].
Перечисленные требования в своей совокупности весьма сложны для выполнения, что, очевидно, подтверждается тем, что за несколько десятилетий, прошедших со времени открытия метода криптографии с открытым ключом, только один такой алгоритм получил широкое признание.
81