С помощью обобщенного алгоритма Евклида найдите числа х и у, удовлетворяющие уравнению 30х +12y = НОД(30,12). х=1, у=-2, НОД = 6. Где ошибка? |
Поточные шифры и генераторы псевдослучайных чисел. Часть 2
Управление секретными ключами
Рассмотрим еще раз общую структуру секретной системы, представленную в "Простейшие методы шифрования с закрытым ключом" . Схема структуры такой системы изображена на рис. 8.3.
Отправитель, представляющий собой источник сообщений, и получатель (приемник зашифрованных сообщений) договариваются о выборе приемлемого шифра и ключа. Затем отправитель шифрует свое сообщение с использованием выбранного алгоритма шифрования и ключа и пересылает полученный шифротекст по (открытому) каналу связи. Получатель расшифровывает его, используя шифр и ключ.
Противник, скорее всего, может перехватить зашифрованное сообщение, так как предполагается, что оно передается по открытому каналу связи. В этом случае криптоаналитик противника может попытаться вскрыть шифротекст. Будем предполагать, что отправитель и получатель сообщения используют достаточно надежный шифр, и что вероятность его вскрытия невысока. В этом случае безопасность шифрования полностью зависит от безопасности ключа. Раскрытие ключа приведет к раскрытию передаваемых данных. Таким образом, ключ должен храниться в секрете до тех пор, пока он используется для закрытия данных. Поэтому для первоначального распределения ключей необходим надежный канал связи.
Таким образом, принципиальной является надежность канала передачи ключа участникам секретных переговоров. Самым надежным способом первоначального распределения ключей является обмен ключами при личной встрече абонентов сети передачи данных. Для доставки ключей можно также использовать специальных курьеров. Если в обмене секретными сообщениями планируется участие небольшого количества сторон, например, двух или трех, то оба указанных способа вполне допустимы. Если же количество взаимодействующих абонентов велико, то задача распределения ключей превращается в настоящую проблему.
При использовании секретных ключей существуют и другие трудности. Например, ключи должны время от времени меняться. Это связано с тем, что чем дольше используется ключ, тем больше вероятность его компрометации (раскрытия). Чем дольше используется ключ, тем больше потери от его компрометации, так как тем большее количество сообщений сможет раскрыть злоумышленник при получении ключа. Даже если ключ не будет раскрыт, проводить криптоанализ противнику удобнее, имея в своем распоряжении достаточное количество сообщений, зашифрованных одним и тем же ключом. Оптимальным считается использовать для каждого сеанса обмена зашифрованными сообщениями свой уникальный ключ – так называемый сеансовый ключ. Но где взять такое количество ключей для большой телекоммуникационной сети и как их распределять?
Таким образом, при большом числе взаимодействующих сторон требуется предварительная рассылка значительного количества ключей, а также последующее их хранение и при необходимости – смена. Предположим, в локальной сети имеется 100 пользователей. Пусть пользователи сети желают обмениваться секретными данными друг с другом по принципу "каждый с каждым". В этом случае для каждой пары пользователей необходим свой секретный ключ для шифрования сообщений. Из ста пользователей можно составить 100x99/2=4950 пар, следовательно, в системе передачи данных будут использоваться 4950 разных секретных ключей. Все эти ключи должны быть сгенерированы и распределены надежным образом. Кроме того, каждый из ста пользователей должен помнить 99 разных ключей, каждый для определенного абонента. Если же в обмене сообщениями участвует не сто, а тысяча человек, то задача управления ключами становится чрезвычайно сложной.
В связи с указанными трудностями на практике применяются специальные автоматизированные системы управления ключами. Такие системы позволяют генерировать ключи, хранить их и архивировать, восстанавливать утерянные ключи, заменять или изымать из обращения старые и ненужные ключи. Важнейшей частью системы управления ключами является центр распределения ключей (Key Distribution Center – KDC), функциями которого являются генерация, распределение и передача ключей.
Специалистами разработаны специальные процедуры (или протоколы), которые позволяют центру распределения ключей доставлять пользователям ключи для проведения отдельных сеансов связи ( сеансовые ключи ). К сожалению, все протоколы с использованием симметричного шифрования имеют те или иные недостатки. Рассмотрим один из возможных протоколов обмена ключами.
Предположим, при вступлении в сообщество пользователей сети обмена данными центром распределения ключей всем новым абонентам выдается индивидуальный секретный ключ. Вот как может выглядеть процедура распределения секретных ключей для проведения сеанса связи между двумя абонентами сети с использованием центра распределения ключей (для краткости будем называть его просто Центром):
- Абонент А обращается в Центр и запрашивает сеансовый ключ для связи с абонентом Б.
- В Центре создается случайный сеансовый ключ. Зашифровываются две копии этого сеансового ключа – одна с использованием секретного ключа абонента А, другая – с использованием секретного ключа абонента Б. Затем обе зашифрованные копии пересылаются из Центра абоненту А.
- Абонент А расшифровывает свою копию сеансового ключа и пересылает вторую зашифрованную копию абоненту Б.
- Абонент Б расшифровывает свою копию сеансового ключа.
- Абоненты А и Б используют полученный сеансовый ключ для секретного обмена информацией.
Указанный протокол достаточно прост и может быть автоматизирован с помощью, например, программы передачи данных. Однако приведенная процедура распределения сеансовых ключей имеет несколько явных недостатков.
Первым недостатком данной системы является то, что Центр участвует во всех обменах. Сбои в работе Центра нарушат работу всей системы.
Вторым недостатком является то, что центр распределения ключей должен хранить в каком-либо виде секретные ключи всех абонентов сети. Если злоумышленник найдет доступ к секретным ключам пользователей системы ("взломает" систему, подкупит администратора и т.д.), то он сможет читать и изменять все передаваемые сообщения.
И, наконец, остается проблема первоначального распределения секретных ключей при вступлении пользователя в сеть. Первоначальный секретный ключ должен быть доставлен по абсолютно надежному каналу связи, иначе весь протокол теряет всякий смысл. Хорошо, если первоначальный ключ может быть выдан лично новому пользователю, однако в некоторых случаях это невозможно, например, при территориальной распределенности сети передачи данных.
Эти и другие недостатки алгоритмов симметричного шифрования обнаружились разработчиками телекоммуникационных сетей при первых попытках построения защищенных систем передачи данных в 70-х годах XX века. Решением проблемы распределения ключей (а также некоторых других серьезных проблем) стало использование несимметричных алгоритмов шифрования, с которыми мы начнем знакомиться уже в следующей лекции.
Ключевые термины
CTR – режим работы блочного шифра, который позволяет генерировать ключи при поточном шифрования информации.
LFSR (linear feedback shift register ) – линейный сдвиговый регистр с обратной связью.
OFB – режим работы блочного шифра, который позволяет генерировать ключи при поточном шифрования информации.
Алгоритм RC4 – алгоритм генерации псевдослучайных чисел. Может использоваться для генерации ключей при поточном шифровании.
Линейный сдвиговый регистр с обратной связью (linear feedback shift register – LFSR) – вариант сдвигового регистра с обратной связью. Обратная связь в таком регистре реализуется просто как сумма по модулю 2 всех (или некоторых) битов регистра.
Сдвиговый регистр с обратной связью состоит из n-битного сдвигового регистра и устройства обратной связи. Когда нужно извлечь бит, все биты регистра сдвигаются вправо на одну позицию. Новый крайний слева бит определяется функцией обратной связи от остальных битов. Сдвиговые регистры с обратной связью могут применяться для получения потока псевдослучайных бит.
Краткие итоги
Для генерации ключевого потока при поточном шифровании могут использоваться сдвиговые регистры с обратной связью. Сдвиговый регистр с обратной связью состоит из n-битного сдвигового регистра и устройства обратной связи. Когда нужно извлечь бит, все биты регистра сдвигаются вправо на одну позицию. Новый крайний слева бит определяется функцией обратной связи от остальных битов. Сдвиговые регистры с обратной связью могут применяться для получения потока псевдослучайных бит.
Можно использовать любой блочный алгоритм, например AES или ГОСТ 28147-89, для поточного шифрования информации, используя режимы OFB и CTR блочных шифров. Эти режимы позволяют на основе блочного алгоритма шифрования с использованием секретного ключа генерировать поток ключевой информации, который затем может использоваться в качестве гаммы при шифровании.
Существуют также алгоритмы генерации псевдослучайных чисел, созданные специально для криптографии. Одним из наиболее известных алгоритмов такого рода является алгоритм RC4. Это алгоритм с ключом переменной длины. На основе ключа алгоритм вырабатывает псевдослучайные числа, используя операции сложения (по некоторому модулю), перестановки и замены элементов внутреннего массива. Генераторы псевдослучайных чисел, построенные с помощью таких алгоритмов, как RC4, как правило, значительно быстрее генераторов, основанных на блочных шифрах.
Во всех системах, использующих симметричное шифрование, принципиально важной является надежность канала передачи ключа участникам секретных переговоров. Основными проблемами, возникающими в системах управления ключами, являются следующие: большое количество и территориальная распределенность взаимодействующих абонентов, необходимость смены ключей от сеанса к сеансу. Решением проблемы распределения ключей стало использование несимметричных алгоритмов шифрования.
Набор для практики
Вопросы для самопроверки
- Перечислите основные характеристики, достоинства и недостатки каждого из рассмотренных в лекции генераторов псевдослучайных чисел.
- Каким образом могут использоваться для получения псевдослучайных чисел сдвиговые регистры с обратной связью? Объясните их принцип работы.
- Каким образом блочный шифр в режиме OFB может быть использован для поточного шифрования данных?
- Как организуется режим CTR блочного шифра?
- В чем разница между генераторами случайных и псевдослучайных чисел?
- Можно ли использовать генератор настоящих случайных чисел для получения гаммы при потоковом шифровании? Почему?
- Для каких криптографических целей могут быть использованы генераторы настоящих случайных чисел?
- Какие проблемы возникают при управлении секретными ключами в системах обмена шифрованными сообщениями?
Упражнения для самопроверки
- Определите первые 16 бит псевдослучайной последовательности, получаемой с помощью генератора ПСЧ на основе
линейного сдвигового регистра, изображенного на рисунке, если начальное значение регистра следующее:
- b4=0, b3=0, b2=0, b1=1.
- b4=1, b3=1, b2=0, b1=1.
- Определите период псевдослучайных последовательностей, получаемых с помощью генератора ПСЧ на основе сдвигового регистра с обратной связью из упражнения 1.
- Продолжите вычисление псевдослучайной последовательности по алгоритму RC4, начатое в "Поточные шифры и генераторы псевдослучайных чисел. Часть 2" ( n=4, ключ – последовательность чисел 1, 2, 3, 4, 5, 6 ) и найдите z6, z7, z8, z9 и z10.
- Произведите вычисление псевдослучайной последовательности по алгоритму RC4 ( n=4 ) и найдите z1, z2, z3, z4 и z5. В качестве секретного ключа используйте последовательность: 4, 3, 2, 1.