Главная страница

Криптография 2е издание Протоколы, алгоритмы и исходные тексты на языке С


Скачать 3.25 Mb.
НазваниеКриптография 2е издание Протоколы, алгоритмы и исходные тексты на языке С
Дата29.04.2022
Размер3.25 Mb.
Формат файлаpdf
Имя файлаShnayer_Prikladnaya-kriptografiya.352928.pdf
ТипПротокол
#504484
страница7 из 78
1   2   3   4   5   6   7   8   9   10   ...   78
E
K
(M), E
B
(K)
Для дополнительной защиты от вскрытия "человек-в-середине" Алиса подписывает передачу.
(5) Боб расшифровывает сеансовый ключ Алисы, K, используя свой закрытый ключ.
(6) Боб, используя сеансовый ключ, расшифровывает сообщение Алисы.
Подобная смешанная система и употребляется чаще всего в системах связи . Ее можно соединить с цифро- выми подписями, метками времени и другими протоколами обеспечения безопасн ости.
Широковещательная рассылка ключей и сообщений
Не существует причин, запрещающих Алисе посылать шифрованное сообщение нескольким людям . В сле- дующем примере Алиса посылает шифрованное сообщение Бобу, Кэрол и Дэйву :
(1) Алиса генерирует случайный сеансовый ключ, K, и зашифровывает M этим ключом.
E
K
(M)
(2) Алиса получает из базы данных открытые ключи Боба, Кэрол и Дэйва.
(3) Алиса шифрует K открытыми ключами Боба, Кэрол и Дэйва.

E
B
(K), E
C
(K), E
D
(K)
(4) Алиса широковещательно посылает шифрованное сообщение и все шифрованные ключи своим корре с- пондентам.
E
K
(M), E
B
(K), E
C
(K), E
D
(K)
(5) Только Боб, Кэрол и Дэйв могут, каждый при помощи своего закрытого ключа, расшифровать ключ K.
(6) Только Боб, Кэрол и Дэйв могут расшифровать сообщ ение Алисы, используя K.
Этот протокол может быть реализован для сетей электронной почты . Центральный сервер может отправить сообщение Алисы Бобу, Кэрол и Дэйву вместе с конкретным шифрованным ключом. Сервер не должен быть надежным и безопасным, так как он не может расшифровать ни одно из сообщений.
3.2 Удостоверение подлинности
Когда Алиса подключается к главному компьютеру (или к автоматическому, или к телефонной банковской системе, или к какому-нибудь другому терминалу ), как главный компьютер узнает, кто она? Откуда главный компьютер узнает, что это не Ева, пытающаяся выдать себя за Алису ? Обычно эта проблема решается с помо- щью паролей. Алиса вводит свой пароль, и главный компьютер проверяет его правильность . Таким образом, и
Алисе, и главному компьютеру известна некоторая секретная информация, которую главный компьютер з а- прашивает всякий раз, когда Алиса пыт ается подключится.
Удостоверение подлинности с помощью однонаправленных функций
Роджер Неедхэм (Roger Needham) и Майк Гай (Mike Guy) показали, что главному компьютеру не нужно знать сами пароли, вполне достаточно, чтобы главный компьютер мог отличать правильные пароли от непр а- вильных. Этого легко достичь с помощью однонаправленных функций [1599, 526,1274, 1121]. При этом на главном компьютере хранятся значения однонаправленных функций паролей, а не сами пароли .
(1) Алиса посылает главному компьютеру свой пароль.
(2) Главный компьютер вычисляет однонаправленную функцию пароля.
(3) Главный компьютер сравнивает полученное значение с хранящимся.
Раз главный компьютер больше не хранит таблицу правильных паролей всех пользователей, снижается у г- роза того, что кто-то проникнет в главный компьютер и выкрадет таблицу паролей . Список паролей, обработан- ный однонаправленной функцией, бесполезен, так как однонаправленную функцию не удастся инвертировать для получения паролей.
Вскрытия с помощью словаря и "соль"
Файл паролей, зашифрованных однонаправленной функцией, тем не менее, уязвим. Имея запас времени,
Мэллори может составить список из миллиона наиболее часто встречающихся паролей . Он обработает весь миллион однонаправленной функцией и сохранит результат . Если каждый пароль состоит из восьми байт, ра з- мер получившегося файла не превысит 8 Мбайт, и этот файл может быть размещен всего на нескольких на ди с- кетах. Теперь Мэллори добывает шифрованный файл паролей . Он сравнивает этот файл со своим файлом ши ф- рованных возможных паролей и ищет совпадения .
Это вскрытие с помощью словаря может быть удивительно успешным (см. раздел 8.1). "Соль" - это спо- соб затруднить его. "Соль" представляет собой случайную строку, добавляемую к паролям перед обработкой их однонаправленной функцией. Затем в базе данных главного компьютера сохраняются и значение "соли", и р е- зультат однонаправленной функции. Использование достаточно большого числа возможных значений "соли"
практически устраняет возможность вскрытия с помощью словаря, так как Мэллори придется вычислять знач е- ние однонаправленной хэш-функции для каждого возможного значения "сол и". Это простейший пример ис- пользование вектора инициализации (см. раздел 9.3).
Идея состоит в том, чтобы заставить Мэллори выполнить пробное шифрование каждого пароля из его сл о- варя при каждой попытке узнать чей-то чужой пароль вместо одноразовой обработки всех возможных паролей .
Для этого нужно много "соли". Большинство UNIX-систем используют для "соли" 12 бит. Несмотря на это
Дэниел Кляйн (Daniel Klein) написал программу разгадывания паролей, которая в некоторых системах за нед е- лю часто вскрывала 40 процентов паролей [847,848] (см. раздел 8.1). Дэвид Фельдмайер (David Feldmeier) и
Филип Кан (Philip Karn) составили список из 732000 наиболее часто используемых паролей, присоединив к к а- ждому из них 4096 возможных значений "соли". По их оценкам 30 процентов паролей на любом главном ко м- пьютере могут быть взломаны с помощью этого списка [561].
"Соль" не является панацеей, увеличение числа бит "соли" не решит всех проблем . "Соль" предохраняет
только от самых обычных вскрытий файла паролей с использованием словаря, а не от согласованной атаке о д- ного пароля. Она защищает людей, использующих один и тот же пароль на различных машинах, но не делает лучше плохо выбранный пароль.
SKEY
SKEY - это программа удостоверения подлинности, обеспечивающая безопасность с помощью однонапра в- ленной функции. Это легко объяснить.
Регистрируясь в системе, Алиса задает случайное число , R. Компьютер вычисляет f(R), f(f(R)), f(f(f(R))), и так далее, около сотни раз. Обозначим эти значения как x
1
, x
2
, x
3
, ..., x
100
. Компьютер печатает список этих чисел, и
Алиса прячет его в безопасное место. Компьютер также открытым текстом ставит в базе данных подключения к системе в соответствие Алисе число x
101
Подключаясь впервые, Алиса вводит свое имя и x
100
. Компьютер рассчитывает f(x
100
) и сравнивает его с x
101
,
если значения совпадают, права Алисы подтверждаются . Затем компьютер заменяет в базе данных x
101
на x
100
Алиса вычеркивает x
100
из своего списка.
Алиса, при каждом подключении к системе, вводит последнее невычеркнутое число из своего списка: x i
Компьютер рассчитывает f(x i
) и сравнивает его с x i+1
, хранившемся в базе данных. Так как каждый номер ис- пользуется только один раз, Ева не сможет добыть никакой полезной информации . Аналогично, база данных бесполезна и для взломщика. Конечно же, как только список Алисы исчерпается ей придется перерегистрир о- ваться в системе.
Удостоверение подлинности с помощью криптографии с открытыми ключами
Даже с использованием "соли" у первого протокола есть серьезные проблемы с безопасностью . Когда Алиса посылает свой пароль главному компьютеру, любой, у кого есть доступ пути передачи ее данных, может пр о- честь пароль. Она может получить доступ к своему главному компьютеру посредством запутанного пути пер е- дачи информации, проложив его через четырех промышленных конкурентов, три других страны и два перед о- вых университета. Ева может находиться в любой из этих точек, подслушивая передаваемую Алисой послед о- вательность. Если у Евы есть доступ к оперативной памяти главного компьютера, она сможет подсмотреть п а- роль до того, как главный компьютер сможет его хэшировать .
Криптография с открытыми ключами может решить эту проблему . Главный компьютер хранит файл откры- тых ключей всех пользователей, а все пользователи хранят свои закрытые ключи . Вот как выглядит упрощенная попытка организовать протокол подключения:
(1) Главный компьютер посылает Алисе случайную строку.
(2) Алиса шифрует эту строку своим закрытым ключом и посылает ее обратно главному компьютеру вместе со своим именем.
(3) Главный компьютер находит в базе данных открытый ключ Алисы и дешифрирует сообщение, используя этот открытый ключ.
(4) Если отправленная сначала и расшифрованная строки совпадают, главный компьютер предоставляет
Алисе доступ к системе
Никто другой не может воспользоваться закрытым ключом Алисы, следовательно никто не сможет выдать себя за нее. Что более важно, Алиса никогда не посылает на компьютер свой закрытый ключ . Ева, подслушивая взаимодействие, не получит никаких сведений , которые позволили бы ей вычислить закрытый ключ Алисы и выдать себя за нее.
Закрытый ключ должен быть достаточно длинным и не должен быть мнемоническим. Он будет автоматич е- ски обрабатываться аппаратурой пользователя или программным обеспечением связи . Это требует использова- ния "умного" терминала, которому Алиса доверяет, но не главный компьютер, ни линии связи не обязаны быть безопасными.
Глупо шифровать произвольные строки - не только посланные подозрительным авторов, но и вообще любые .
Иначе может быть использовано схема вскрытия, обсуждаемая в разделе 19.3. Безопасные идентификационные протоколы имеют следующую, более сложную форму :
(1) Алиса выполняет вычисление, основанное на некоторых случайных числах и своем закрытом ключе, и п о- сылает результат на главный компьютер.
(2) Главный компьютер посылает другое случайное число.
(3) Алиса выполняет некоторое вычисление, основанное на случайных числах (как созданном ею, так и пол у- ченном от главного компьютера) и своем закрытом ключе, и посылает результат на главный компьютер.

(4) Главный компьютер выполняет некоторое вычисление для различных чисел, полученных от Алисы, и ее открытого ключа, проверяя, что ей известен ее закрытый ключ.
(5) Если проверка завершается успешно, личность Алисы подтверждается.
Если Алисы доверяет главному компьютеру не в большей степени, чем тот доверяет Алисе, то она должна потребовать подтверждения подлинности главного компьютера аналогичным образом .
Этап (1) может показаться ненужным и запутанным, но он необходим для защиты протокола от вскрытия .
Различные протоколы и алгоритмы подтверждения подлинности математически подробно описываются в ра з- делах 21.1 и 21.2. См. также [935].
Обоюдное удостоверение подлинности с использованием протокола "держась за руки"
Пусть два пользователя, Алиса и Боб, хотят проверить подлинность друг друга . У каждого из них есть па- роль, известный другому пользователю: P
A
у Алисы и P
B
у Боба. Вот как выглядит протокол, который не будет работать:
(1) Алиса и Боб обмениваются открытыми ключами.
(2) Алиса шифрует P
A
открытым ключом Боба и посылает его ему.
(3) Боб шифрует P
B
открытым ключом Алисы и посылает его ей.
(4) Алиса расшифровывает полученное на этапе (3) и подтверждает правильность пароля.
(5) Боб расшифровывает полученное на этапе (2) и подтверждает правильность пароля.
Мэллори может предпринять успешное вскрытие "человек-в-середине" (см. раздел 3.1):
(1) Алиса и Боб обмениваются открытыми ключами. Мэллори перехватывает оба сообщения, и посылает обоим корреспондентам свой собственный открытый ключ, подменив им их ключи.
(2) Алиса шифрует P
A
открытым ключом "Боба" и посылает его ему. Мэллори перехватывает сообщение,
расшифровывает P
A
с помощью своего закрытого ключа, снова шифрует P
A
открытым ключом Боба и по- сылает его ему.
(3) Боб шифрует P
B
открытым ключом "Алисы" и посылает его ей. Мэллори перехватывает сообщение, ра с- шифровывает P
B
с помощью своего закрытого ключа, снова шифрует P
B
открытым ключом Алисы и по- сылает его ей.
(4) Алиса расшифровывает P
B
и подтверждает его правильность.
(5) Боб расшифровывает P
A
и подтверждает его правильность.
Для Алисы и Боба ничего не изменилось. Однако, Мэллори знает и P
A
, и P
B
. Дональд Дэвис (Donald Davies)
и Вильям Прайс (William Price) описывают, как протокол "держась-за-руки" (см. раздел 3.1) противодействует такому вскрытию [435]. Стив Белловин (Steve Bellovin) и Майкл Мерритт (Michael Merritt) рассматривают спо- собы вскрытия этого протокола в [110]. Если Алиса - это пользователь, а Боб - хост-компьютер , Мэллори может предпочесть быть Бобом, выполнить первые этапа протокола с Алисой и разорвать соединение . Симулирование шума на линии или сетевого отказа потребует от Мэллори настоящего артистизма, но в результате Мэллори получит пароль Алисы. Затем он сможет соединиться с Бобом и завершить протокол, получая и пароль Боба .
Протокол можно изменить так, чтобы Боб передавал свой пароль перед Алисой в предположении, что п а- роль пользователя более важен чем пароль главного компьютера . Это приведет к усложнению способа вскр ы- тия, также описанного в [110].
SKID
SKID2 и SKID3 - это симметричные криптографические протоколы идентификации, разработанные для пр о- екта RACE RIPE [1305] (см. раздел 25.7). Они используют MAC (см. раздел 2.4) для обеспечения безопасности и предполагают, что Алиса и Боб используют общий секретный ключ , K. SKID2 позволяет Бобу доказать свою подлинность Алисе. Вот этот протокол:
(1) Алиса выбирает случайное число, R
A
. (Документами RIPE определяется 64-битовое число). Она посылает это число Бобу.
(2) Боб выбирает случайное число, R
B
. (Документами RIPE определяется 64-битовое число). Он посылает
Алисе.
R
B
, H
K
(R
A
, R
B
, B)
H
K
- это MAC. (В документах RIPE предлагается функция RIPE-MAC, см. раздел 18.4.) B - это имя Боба.

(3) Алиса рассчитывает H
K
(R
A
, R
B
, B) и сравнивает результат со значением, полученным от Боба. Если р е- зультаты совпадают, Алиса убеждается в том, что она соединилась именно с Бобом.
SKID3 обеспечивает совместную проверку подлинности Алисой и Бобом . Этапы (1) - (3) совпадают с прото- колом SKID2, а затем выполняются следующие действия :
(4)
Алиса посылает Бобу:
H
K
(R
B
, A)
A - это имя Алисы.
(5)
Боб рассчитывает H
K
(R
B
, A) и сравнивает результат со значением, полученным от Алисы. Если результаты совпадают, Боб убеждается в том, что она соединилась именно с Алисой.
Этот протокол неустойчив к вскрытию "человек-в-середине" . В общем случае, вскрытие "человек-в- середине" может угрожать любому протоколу, в который не входит какой-нибудь секрет .
Удостоверение подлинности сообщений
Когда Боб получает сообщение от Алисы, как ему узнать, что это сообщение подлинно ? Если Алиса подпи- сала свое сообщение, то все просто. Цифровая подпись Алисы достаточна, чтобы подтвердить кому угодно по д- линность ее сообщения.
Некоторую проверку подлинности предоставляют и симметричные алгоритмы . Когда Боб получает сообще- ние от Алисы, шифрованное их общим ключом, он знает, что это сообщение от Алисы . Никто больше не знает их ключа. Однако, у Боба нет возможности убедить в этом кого-то еще . Боб не может показать сообщение Трен- ту и убедить его, что оно отправлено Алисой . Трент может сделать вывод, что сообщение отправлено или Ал и- сой, или Бобом (так как их секретный ключ никому больше не принадлежит ), но у него нет способа определить,
кто же конкретно автор сообщения.
Если сообщение не шифровано, Алиса может также использовать MAC. Это также убедит Боба в подлинно- сти сообщения, но возникнут те же проблемы, что и для решений симметричной криптографии .
3.3 Удостоверение подлинности и обмен ключами
Эти протоколы объединяют удостоверение подлинности и обмен ключами для решения основной компь ю- терной проблемы: Алиса и Боб хотят безопасно обмениваться сообщениями, находясь на различных концах сети. Как могут Алиса и Боб обменяться секретным ключом, при этом сохраняя уверенность, что они обмен и- ваются сообщениями друг с другом, а не с Мэллори ? В большинстве протоколов предполагается, что каждому пользователю Трент выделяет отдельный секретный ключ, и перед началом работы протокола все ключи уже находятся у пользователей. Символы, используемые в этих протоколах, сведены в 2-й.
Табл. 3-1.
Символы, используемые в протоколах удостоверения подлинности и обмена ключами
A
Имя Алисы
B
Имя Боба
E
A
Шифрование ключом, выделенном Трентом Алисе
E
B
Шифрование ключом, выделенном Трентом Бобу
I
Порядковый номер
K
Случайное сеансовое число
L
Время жизни
T
A
, T
B
Метки времени
R
A
, R
B
Случайные числа, выбранные Алисой и Бобом, соответственно
Лягушка с широким ртом
Протокол "Лягушка с широким ртом" (Wide-Mouth Frog) [283,284], возможно, является простейшим сим- метричным протоколом управления ключами, в котором используется заслуживающий доверия сервер . Алиса и
Боб делят свой секретный ключ с Трентом . Эти ключи используются только для распределения ключей, а не для шифрования пользовательских сообщений. Вот как, используя два сообщения, Алиса передает Бобу сеансовый
ключ:
(1) Алиса объединяет метку времени, имя Боба и случайный сеансовый ключ, затем шифрует созданное с о- общение общим с Трентом ключом и посылает его Тренту вместе со своим именем.
A, E
A
(T
A
, B, K)
(2) Трент расшифровывает сообщение от Алисы. Затем он добавляет новую метку времени, имя Алисы и сл у- чайный сеансовый ключ, шифрует полученное сообщение общим с Бобом ключом. Трент посылает Бобу:
E
B
(T
B
, B, K)
Наибольшим допущением, сделанным в этом протоколе, является то, что Алиса обладает достаточной ко м- петентностью для генерации хороших сеансовых ключей . Вспомните, что случайные числа генерировать совсем не просто, для этого может потребоваться кто-нибудь понадежнее Алисы .
Yahalom
В этом протоколе Алисы и Боб делят с Трентом секретный ключ [283,284].
(1) Алиса объединяет свое имя и случайное число, и отправляет созданное сообщение Бобу.
A, R
A
(2) Боб объединяет имя Алисы, ее случайное число, свое случайное число, шифрует созданное сообщение о б- щим с Трентом ключом и посылает его Тренту, добавляя свое имя:
B, E
B
(A, R
A
, R
B
)
(3) Трент создает два сообщения. Первое включает имя Боба, случайный сеансовый ключ, случайные числа
1   2   3   4   5   6   7   8   9   10   ...   78


написать администратору сайта