Nets2010 (1131259), страница 52
Текст из файла (страница 52)
Алгоритмы с открытыми ключами.
Идея алгоритмов шифрования с открытыми ключами была предложена в 1976 году Диффи и Хеллманом и состоит в следующем. Пусть у нас есть алгоритмы Е и D, которые удовлетворяют следующим требованиям:
-
D(E(P))=P
-
Чрезвычайно трудно получить D из E.
-
Е нельзя вскрыть через анализ исходных текстов.
Алгоритм шифрования Е и его ключ публикуют или помещают так, чтобы каждый мог их получить, алгоритм D также публикуют, чтобы подвергнуть его изучению, а вот ключи к последнему хранят в секрете. В этом случае взаимодействие двух абонентов А и В будет выглядеть следующим образом. Пусть А хочет послать В сообщение Р. А шифрует EВ(P), зная алгоритм и открытый ключ для шифрования. В, получив EВ(P), использует DВ с секретным ключом, т.е. вычисляет DВ(EВ(P))=P. Никто не прочтет P кроме A и B, т.к. по условию алгоритм EВ не раскрываем по условию, а DВ не выводим из EВ.
Примером такого алгоритма является алгоритм RSA, предложенный Ривестом, Шамиром и Адлеманом в 1978 году. Общая схема этого алгоритма такова:
-
Выберем два больших (больше 10100) простых числа p и q.
-
Вычислим n=pхq и z=(p-1)х(q-1).
-
Выберем d, относительно простое к z.
-
Вычислим e такое, что eхd=1 mod z.
Разбиваем исходный текст на блоки Р так, чтобы каждый блок, как число не превосходил n. Для этого выбираем наибольшее k такое, чтобы P=2k<n. Вычисляем С=Pe(mod n), чтобы зашифровать сообщение P. Для расшифровки вычисляем P=Cd(mod n).
Для шифрования нам нужны (e, n) – это открытый ключ, для расшифровки (d, n) – это закрытый ключ. Можно доказать, что для любого Р в указанном выше диапазоне функции шифрования и дешифрования взаимообратные. Безопасность этого метода основана на высокой вычислительной сложности операции разложения на множители больших чисел. Так, например, разложение на множители 200-разрядного числа потребует 4 миллиардов лет.
Рисунок 7-11. Пример использования алгоритма RSA
На рисунке 7-11 дан простой учебный пример применения RSA алгоритма для p=3, q=11, n=33, z=20, d=7, откуда e=3.
Один из основных недостатков алгоритма RSA – он работает медленно.
63. Безопасность и способы защиты данных в сетях ЭВМ: протоколы установления подлинности документов и пользователей (аутентификация на основе закрытого разделяемого ключа, установка разделяемого ключа, проверка подлинности через центр раздачи ключей, установление подлинности протоколом Цербер, установление подлинности, используя шифрование с открытым ключом). Электронная подпись (подпись с секретным ключом, подпись на основе открытого ключа). Сокращение сообщения.
Протоколы установления подлинности (аутентификации) позволяют процессу убедиться, что он взаимодействует с тем, с кем должен, а не с тем, кто лишь представляется таковым.
Общая схема всех протоколов аутентификации такова: сторона А и сторона В начинают обмениваться сообщениями между собой или с Центром раздачи ключей (ЦРК). ЦРК - всегда надежный партнер. Протокол аутентификации должен быть устроен так, что даже если злоумышленник перехватит сообщения между А и В, то ни А, ни В не спутают друг друга со злоумышленником.
Аутентификация на основе закрытого разделяемого ключа.
Основная идея первого протокола аутентификации, так называемого «протокола ответ по вызову», состоит в том, что одна сторона посылает некоторое число (вызов), другая сторона, получив это число, преобразует его по определенному алгоритму и отправляет обратно. Посмотрев на результат преобразования и зная исходное число, инициатор может судить, правильно сделано преобразование или нет. Алгоритм преобразования является общим секретом взаимодействующих сторон. Будем предполагать, что стороны А и В имеют общий секретный ключ KАВ. Этот секретный ключ взаимодействующие стороны как-то установили заранее, например, по телефону. Описанная выше процедура показана на рисунке 7-12.
Рисунок 7-12. Двусторонняя аутентификация с запросом и подтверждением
На этом рисунке:
А,В - идентификаторы взаимодействующих сторон
Ri - вызов, где индекс указывает, кто его послал
Кj - ключ, индекс которого указывает на его владельца
На рисунке 7-13 дана схема, где сокращено количество передач между сторонами по сравнению с рисунком 7-12.
Рисунок 7-13. Сокращенная двусторонняя аутентификация с запросом и подтверждением
Рисунок 7-14 показывает «дыру» в схеме 7-13 и то, как злоумышленник может этой дырой воспользоваться. Это так называемая атака отражением. Идея этой атаки состоит в том, чтобы «заставить» сторону В дать некоторое число RВ (см. шаг 2). А затем, на шаге 3, подсунуть стороне В это же число как свой вызов. На этот вызов сторона В, согласно протоколу, ответит преобразованным KАВ(RВ). В результате злоумышленник получит и RВ, и KАВ(RВ).
Рисунок 7-14. Атака отражением
Есть несколько общих правил построения протоколов аутентификации (протокол проверки подлинности или просто подлинности):
-
Инициатор должен доказать, кто он есть, прежде чем вы пошлете ему какую-либо важную информацию.
-
Инициатор и отвечающий должны использовать разные ключи.
-
Инициатор и отвечающий должны использовать начальные вызовы из разных непересекающихся множеств.
В схеме на рисунке 7-13 все эти три правила нарушены.
Установка разделяемого ключа.
До сих пор мы предполагали, что А и В имеют общий секретный ключ. Рассмотрим теперь, как они могут его установить. Например, они могут воспользоваться телефоном. Однако, как В убедится, что ему звонит именно А, а не злоумышленник? Можно договориться о личной встрече, куда принести паспорт и прочее, удостоверяющее личность. Однако есть протокол, который позволяет двум незнакомым людям установить общий ключ даже при условии, что за ними следит злоумышленник.
Это протокол обмена ключом Диффи-Хеллмана. Его схема показана на рисунке 7-15. Прежде всего, А и В должны договориться об использовании двух больших простых чисел n и g, удовлетворяющих определенным условиям. Эти числа могут быть общеизвестны. Затем, А выбирает большое число, скажем x, и хранит его в секрете. То же самое делает В. Его число – y.
Рисунок 7-15. Обмен ключом Диффи-Хеллмана
А шлет В сообщение (n, g, gx mod n), В шлет в ответ (gy mod n). Теперь А выполняет операцию (gy mod n)x, В - (gx mod n)y. Удивительно, но теперь оба имеют общий ключ - gxy mod n! Например, если n=47, g=3, x=8, y=10, то А шлет В сообщение (47, 3, 28), поскольку 38 mod 47=28. В шлет А (17). А вычисляет 178 mod 47=4, B вычисляет 2810 mod 47=4. Ключ установлен - 4!
Злоумышленник следит за всем этим. Единственно, что мешает ему вычислить x и y, – это то, что не известно алгоритма с приемлемой сложностью для вычисления логарифма от модуля для простых чисел. Однако и у этого алгоритма есть слабое место. Рисунок 7-16 показывает его. Такой прием называется чужой в середине.
Рисунок 7-16. Взлом «чужой в середине»
Проверка подлинности через центр раздачи ключей.
Договориться с незнакомцем об общем секрете можно, но вряд ли это следует делать сразу. Кроме этого, общение с n людьми потребует хранения n ключей, что для общительных или популярных личностей может быть проблемой. Другое решение можно получить, введя надежный центр раздачи ключей (KDC).
Рисунок 7-17. Проверка подлинности через центр раздачи ключей
Идея этого протокола состоит в следующем. А выбирает ключ сессии KS. Используя свой ключ KA, A шлет в центр KDC запрос на соединение с В. Центр KDC знает В и его ключ KB. С помощью этого ключа KDC сообщает В ключ сессии KS и информацию о тех, кто хочет с ним соединиться.
Однако решение с центром KDC имеет изъян. Пусть злоумышленник как-то убедил А связаться с В и скопировал весь обмен сообщениями. Позже он может воспроизвести этот обмен за А и заставить В действовать так, как если бы с В говорил А! Этот способ атаки называется атака подменой.
Против такой атаки есть несколько средств. Одно из них – временные метки. Это решение, однако, требует синхронизации часов. Поскольку в сети всегда есть расхождение в показаниях часов, то надо будет задать определенный интервал, в течение которого допустимо считать сообщение верным. Злоумышленник может использовать прием атаки подменой в течение этого интервала.
Другое решение - использование разовых меток. Однако при этом каждая из сторон должна помнить все разовые метки, использованные ранее. Это обременительно. Кроме этого, если список использованных разовых меток будет утерян по каким-либо причинам, то весь метод перестанет работать. Можно комбинировать решения разовых меток и временных меток.
Более тонкое решение установления подлинности дает многосторонний протокол «вызов-ответ». Хорошо известным примером такого протокола является протокол Нидхема-Шредера, вариант которого показан на рисунке 7-18. Вначале А сообщает KDC, что он хочет взаимодействовать с В. KDC сообщает ключ сессии, разовую метку RA, шифруя сообщение ключом А. Разовая метка защищает А от подмены. Теперь, имея ключ сессии, А начинает обмен сообщениями с В. RA2 и RB – разовые метки, защищающие А и В от подмен.
Рисунок 7-18. Протокол аутентификации Нидхема-Шредера
Хотя этот протокол в целом надежен, но и при его использовании есть небольшая опасность. Если злоумышленник раздобудет все-таки старый ключ сессии, то он сможет подменить сообщение 3 старым и убедить В, что это А! На рисунке 7-19 приведена схема исправленного протокола, который предложили Отвей и Риис. В этой модификации KDC следит, чтобы R было одним и тем же в обеих частях сообщения 2.
Рисунок 7-19. Протокол аутентификации Отвея и Рииса
Установление подлинности протоколом «Цербер».