1 (1131253), страница 49
Текст из файла (страница 49)
Рисунок 7-7. Поблочная передача зашифрованного текста
Для устранения второго недостатка используется т.н. обратная связь по шифру (рисунок 7-8). На рисунке 7-8 (а) показана ситуация, когда первые 10 байт текста уже были закодированы, а последние 8 из них сохранены в сдвиговом регистре. Когда поступает очередной байт, выбирается самый левый байт 64-разрядного шифра, и над ними выполняется EXCLUSIVE OR, результат посылается по линии как шифр байта. Этот шифрованный байт посылается в сдвиговый регистр, а левый байт выталкивается из регистра. На стороне получателя над поступившим байтом выполняют ту же самую операцию. Этот алгоритм работает хорошо, пока оба сдвиговых 64-разрядных регистра одинаковы. Если при передаче шифрованного байта произойдет однобитовая ошибка, то пока испорченный байт не вытолкнут из регистра, расшифрованный текст пойдет с ошибкой. После этого ошибка исчезнет. Таким образом, одна битовая ошибка приведет к порче 64 бит текста. Этот алгоритм также предполагает наличие некоторого инициирующего блока, который обеспечивает работу алгоритма, пока все 8 правых байт не поступили.
Рисунок 7-8. Обратная связь по шифру
Раскрытие DES.
В 1977 году Диффи и Хеллман из Стэнфорда опубликовали проект машины стоимостью в 20 миллионов долларов, которая вскрывала DES. Достаточно было подать на вход этой машине небольшой фрагмент зашифрованного текста и соответствующий фрагмент исходного текста, как эта машина в течение дня находила ключ шифра. Существует много способов атаковать шифр. Все они основаны на распараллеливании перебора множества возможных ключей. Например, 140000 человек, вооруженных компьютерами, способными выполнять 250000 шифрований с секунду, смогут перебрать пространство 7х1016 ключей за месяц.
Основной вывод - DES не является надежным шифром и его нельзя использовать для ответственных документов. Удвоение длины ключа до 112 бит кардинально меняет ситуацию. Теперь, если использовать даже миллиард аппаратных дешифраторов, выполняющих по миллиард операций в секунду, потребуется 100 миллионов лет, чтобы перебрать пространство из 1016х1016 112-разрядных ключей. Эти рассуждения наталкивают на идею увеличения длины ключа за счет двукратного применения DES с разными ключами К1 и К2.
Однако в 1981 году Хеллман и Меркл обнаружили, что простое использование двух ключей не дает надежной схемы. Дело в том, что применение дешифрации к зашифрованному тексту дает шифр, который получается после применения первого ключа к исходному тексту. Эту мысль поясняют следующие формулы:
Ci = EK2(EK1(Pi )); DK2(Ci) = EK1(Pi)
В этом случае можно предложить следующую процедуру взлома:
-
Вычислить все возможные применения функции Е к шифруемому тексту.
-
Вычислить все возможные дешифрации зашифрованного текста однократным применением дешифрирующей функции.
-
Отсортировать полученные таблицы и искать совпадающие строки.
-
Полученная пара номеров строк – пара ключей.
-
Проверить эту пару на совпадение шифрования; если неудачный результат, продолжить с шага 1.
Тройное шифрование совершенно меняет дело. На рисунке 7-9 показана модификация схемы шифрования с двумя ключами в три этапа - EDE-схема. Ее никому еще не удалось вскрыть. Она была положена в основу международного стандарта. Здесь может возникнуть два вопроса. Первый: почему в этой схеме используются 2, а не 3 ключа. Второй: почему используется схема EDE, а не EEE? Ответ на первый вопрос состоит в том, что двух ключей более чем достаточно для большинства применений. Использование схемы EDE вместо ЕЕЕ связано с особенностями организации алгоритма DES.
Рисунок 7-9. Тройное шифрование с помощью алгоритма DES
Алгоритмы с открытыми ключами.
Идея алгоритмов шифрования с открытыми ключами была предложена в 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 – он работает медленно.
Билет № 44.
Безопасность и способы защиты данных в сетях ЭВМ: протоколы установления подлинности документов и пользователей (аутентификация на основе закрытого разделяемого ключа, установка разделяемого ключа, проверка подлинности через центр раздачи ключей, установление подлинности протоколом Цербер, установление подлинности, используя шифрование с открытым ключом). Электронная подпись (подпись с секретным ключом, подпись на основе открытого ключа). Сокращение сообщения.
Протоколы установления подлинности (аутентификации) позволяют процессу убедиться, что он взаимодействует с тем, с кем должен, а не с тем, кто лишь представляется таковым.
Общая схема всех протоколов аутентификации такова: сторона А и сторона В начинают обмениваться сообщениями между собой или с Центром раздачи ключей (ЦРК). ЦРК - всегда надежный партнер. Протокол аутентификации должен быть устроен так, что даже если злоумышленник перехватит сообщения между А и В, то ни А, ни В не спутают друг друга со злоумышленником.
Аутентификация на основе закрытого разделяемого ключа.
Основная идея первого протокола аутентификации, так называемого «протокола ответ по вызову», состоит в том, что одна сторона посылает некоторое число (вызов), другая сторона, получив это число, преобразует его по определенному алгоритму и отправляет обратно. Посмотрев на результат преобразования и зная исходное число, инициатор может судить, правильно сделано преобразование или нет. Алгоритм преобразования является общим секретом взаимодействующих сторон. Будем предполагать, что стороны А и В имеют общий секретный ключ 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 и информацию о тех, кто хочет с ним соединиться.















