Безпека телекомунікаційних систем Лекція №6 Шифрование, использующее современные шифры с симметричным ключом Режимы работы Режим электронной кодовой книги (ECB — ELECTRONIC CODEBOOK) Этот режим называется режимом электронной кодовой книги, потому что он может быть представлен 2K кодовыми книгами (одной на каждый кодовый ключ). Каждая кодовая книга имеет 2n входов и две колонки. Каждый вход сопоставляет исходному тексту соответствующий зашифрованный текст. Однако если K и n очень велики, кодовая книга будет слишком велика и ее компоновка и эксплуатация — неудобны. Проблемы безопасности ECB 1. 2. Образцы на уровне блока сохраняются. Например, одинаковые блоки в исходном тексте имеют одинаковый вид в соответствующих блоках зашифрованного текста. Если злоумышленник узнает, что в зашифрованном тексте блоки 1, 5 и 10 одинаковы, она поймет, что блоки исходного текста 1, 5 и 10 — тоже одинаковые. Это —"дырочка" в безопасности. Например, злоумышленник может выполнить исчерпывающий поиск и расшифровать только один из этих блоков, чтобы найти содержание всех их. Независимость блоков создает злоумышленнику возможность для замены некоторых блоков зашифрованного текста без знания ключа. Например, если она знает, что блок 8 всегда передает некоторую заданную информацию, она может заменить этот блок соответствующим блоком в предварительно перехваченном сообщении. Пример уезвимости ECB Предположим, что Ева (злоумышленник) работает в компании месяц, несколько часов в неделю (ее ежемесячная оплата очень низкая). Она знает, что компания использует несколько блоков информации для каждого служащего, в котором седьмой блок является суммой денег, которая будет депонирована в учетной записи служащего. Ева может прервать зашифрованный текст, передаваемый банку в конце месяца, заменить блок информацией о ее оплате с копией блока с информацией об оплате полной рабочей недели её коллеги. Каждый месяц Ева может получать больше денег, чем она этого заслуживает. Распространение ошибки ECB Единственный бит ошибки в передаче может создать ошибки в нескольких битах (обычно половине битов или всех битах) в соответствующих блоках. Однако ошибка не имеет никакого воздействия на другие блоки. Захват зашифрованного текста ECB В режиме ECB может потребоваться дополнение, которое добавляется к последнему блоку, если он содержит менее n бит. Такое дополнение не всегда возможно. Например, рассмотрим ситуацию, когда зашифрованный текст должен быть сохранен в буфере, где до этого был предварительно сохранен исходный текст. В этом случае исходный текст и зашифрованный текст должны быть одинаковой длины. Техника, которая называется захват зашифрованного текста (CTS — CipherText Stealing) позволяет использовать режим ECB без указанного выше дополнения. В этой методике последние два блока исходного текста PN-1 и PN, зашифрованы раздельно по-другому и в другом порядке. Приложения ECB Режим работы ECB не рекомендуется для шифрования сообщений, содержащих больше чем один блок, который будет передан через несекретный канал. Независимость между блоками зашифрованного текста полезна, если информация будет зашифрована прежде, чем она будет сохранена в базе данных, или расшифрована прежде, чем она будет извлечена из памяти. Поскольку порядок шифрования и дешифрования блоков не важен, в этом режиме доступа к базе данных он может быть случаен, если каждая запись — блок или множество блоков. Запись может быть извлечена из середины, расшифрована, и зашифрована, не затрагивая другие записи. Второе преимущество: можно использовать параллельную обработку, если нужно, например, создать огромную зашифрованную базу данных. Режим сцепления блоков шифрованного текста (CBC ) Описание CBC (Cipher Block Chaining) Режим сцепления блоков шифрованного текста (CBC — Cipher Block Chaining). В режиме CBC каждый блок исходного текста, прежде чем быть зашифрованным, обрабатывается с помощью проведения операции ИСКЛЮЧАЮЩЕЕ ИЛИ с предыдущим блоком шифра. Когда блок зашифрован, блок передают, но копия сохраняется в памяти, которая используется в шифровании следующего блока. Начальный блок складывается с фальшивым блоком, называемым вектор инициализации (IV). Передатчик и приемник согласуют заданный заранее IV. Другими словами, IV используется вместо несуществующего C0. На передающей стороне операция ИСКЛЮЧАЮЩЕЕ ИЛИ проводится перед шифрованием; а на стороне приемника дешифрование проводится перед операцией ИСКЛЮЧАЮЩЕЕ ИЛИ. Вектор инициализации (IV) Вектор инициализации (IV) должен быть известен передатчику и приемнику. Хотя сохранение этого вектора в тайне не требуется, целостность вектора играет важную роль в безопасности режима CBC; IV помогает сохранить безопасность изменения информации. Если злоумышленник может изменить значения бит IV, это может изменить значения бит первого блока. Для того чтобы использовать IV, рекомендовано несколько методов. Передатчик может выбрать псевдослучайное число и передать его через безопасный канал (например, использующий режим ECB). Фиксированное значение может быть согласовано отправителем и получателем как IV, когда ключ засекречивания установлен. Это может быть часть ключа засекречивания, и так далее. Проблемы безопасности CBC 1. 2. Одинаковые блоки исходного текста, принадлежащие тому же самому сообщению, зашифровываются в различные блоки зашифрованного текста. Другими словами, отдельные образцы в блоке не сохраняются. Однако когда два сообщения равны, их шифрованный текст одинаковый, если они используют те же самые IV. Фактически, если первые M блоков в двух различных сообщениях равны и IV совпадает, они будут зашифрованы в одинаковые блоки. По этой причине некоторые специалисты рекомендуют использование для IV метки времени. Злоумышленник может добавить некоторые блоки зашифрованного текста в конце потока зашифрованного текста. Распространение ошибки CBC В режиме CBC единственный бит ошибки в блоке Cj зашифрованного текста в процессе передачи — в процессе дешифрования может создать ошибку в большинстве битов блока Pj исходного текста. Однако эта одиночная ошибка изменяет только один бит в исходном тексте блока Pj+1 (бит в том же самом местоположении). Исходный текст блоков от Pj+2 до PN не затрагивается этим единственным битом ошибки. Единственный бит ошибки в зашифрованном тексте — самовосстанавливаемый Приложения СВС Режим работы CBC может использоваться, чтобы зашифровать сообщения. Однако из-за механизма формирования цепочки параллельная обработка невозможна. Режим CBC не используется при шифровании и дешифровании массивов файлов с произвольным доступом, потому что шифрование и дешифрование требуют доступа к предыдущим массивам. Режим СВС применяется для установления подлинности сообщения. Режим кодированной обратной связи (CFB) Описание CFB В режиме кодированной обратной связи (CFB). В этом режиме размер блока, используемого в DES, — n, но размер исходного текста или блока зашифрованного текста — r, где r <n. Идея состоит в том, что DES используются не для того, чтобы зашифровать исходный текст или расшифровывать зашифрованный текст, а для того, чтобы зашифровать или расшифровывать содержание регистра сдвига, S, размером n. Шифрование сделано с применением операции ИСКЛЮЧАЮЩЕЕ ИЛИ к r-битовому блоку исходного текста с r-битовым регистром сдвига. Дешифрование сделано с применением операции ИСКЛЮЧАЮЩЕЕ ИЛИ к r-битовому блоку зашифрованного текста с rбитовым регистром сдвига. Для каждого блока регистр сдвига Si выполняет сдвиг регистра Si-1 (предыдущий регистр сдвига) на r бит влево, заполняя самые правые r битов с Ci-1. Тогда Si зашифрован в Ti. Только самые правые r битов Ti обрабатываются с помощью ИСКЛЮЧАЮЩЕГО ИЛИ с исходным текстом, из блока Pi получая Ci. Обратите внимание, что Si, для первого блока — это IV — не сдвигается. CFB как шифр потока Проблемы безопасности CFB Точно так же как CBC, образцы на уровне блока не сохраняются. Одинаковые блоки исходного текста, принадлежащие одному и тому же самому сообщению, зашифровываются в различные блоки. Одним и тем же ключом может быть зашифровано больше чем одно сообщение, но тогда значение IV должно быть изменено для каждого сообщения. Это означает, что отправитель должен использовать различные IV каждый раз, когда она передает сообщение. Злоумышленник может добавить некоторый блок зашифрованного текста к концу потока зашифрованного текста. Распространение ошибки CFB В CFB ошибка в единственном бите в зашифрованном тексте блока Cj в процессе передачи создает единственный бит ошибки (в той же самой позиции) в исходном тексте блока Pj. Однако большинство битов в следующих блоках исходного текста будут с ошибкой (с 50-процентной вероятностью), пока биты Cj все еще находятся в регистре сдвига. Вычисление числа затронутых блоков оставляем как упражнение. После того как регистр сдвига полностью регенерирован, система избавляется от ошибок Приложение CFB Режим работы CFB может использоваться, чтобы зашифровать блоки небольшого размера, такие как один символ или бит. Нет необходимости в дополнении, потому что размер блока исходного текста обычно устанавливается (8 для символа или 1 для бита). Режим внешней обратной связи (OFB) Режим внешней обратной связи (OFB — OUTPUT FEEDBACK) очень похож на режим CFB, с одной особенностью: каждый бит в зашифрованном тексте независим от предыдущего бита или битов. OFB как шифр потока Проблемы безопасности OFB Точно так же как в режиме CFB, образцы на уровне блока не сохраняются. Одинаковые блоки исходного текста, принадлежащие тому же самому сообщению, зашифровываются в различные блоки. Любое изменение в зашифрованном тексте затрагивает исходный текст, зашифрованный в приемнике. Распространение ошибки Единственная ошибка в зашифрованном тексте затрагивает только соответствующий бит в исходном тексте. Режим счетчика (CTR). Описание В режиме счетчика (CTR — Counter) нет информации обратной связи. Псевдослучайный ключевой поток достигается с помощью счетчика. Счетчик на n бит инициализируется в заранее определенное значение (IV) и увеличивается по основному и заранее определенному правилу (mod 2n). Чтобы обеспечивать случайность, величина приращения может зависеть от номера блока. Исходный текст и блок зашифрованного текста имеют один и тот же размер блока, как и основной шифр (например, DES). Блоки размера n исходного текста зашифрованы так, чтобы создать зашифрованный текст с блоком размера n. Режим счетчика (CTR) CTR как шифр потока Проблемы безопасности CTF Проблемы безопасности для режима CTR те же самые, что и для режима OFBбит в исходном тексте. Единственная ошибка в зашифрованном тексте затрагивает только соответствующий бит в исходном тексте. Итоги режимов работы Режим Описание работы ECB CBC CFB OFB CTR Каждый n-битовый блок шифруется независимо тем же самым ключом То же самое, что и в ECB, но каждый блок сначала складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) с предыдущим зашифрованным текстом Каждый r-битовый блок складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) с r-битовым ключом, который является частью предыдущего текста шифра То же самое, что и в CFB, но регистр сдвига модифицирован с помощью предыдущего r-битового ключа То же самое, как в OFB, но счетчик используется вместо регистра сдвига Тип результата Размер блока Блочный шифр Блочный шифр n Шифр потока rn Шифр потока Шифр потока rn n n Шифр потока RC4 RC4 — потоковый шифр, который был разработан в 1984 г. Рональдом Ривестом. RC4 используется во многих системах передачи данных и протоколах организации сети, например, SSL/TLS и IEEE 802.11 (беспроводный стандарт LAN). RC4 — байт-ориентированный шифр потока, в котором байт (8 битов) исходного текста складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) с байтом ключа, чтобы получить байт зашифрованного текста. Ключ засекречивания, из которого сгенерированы однобайтовые ключи в потоке ключей, может содержать от 1 до 256 байтов. Матрица состояний RC4 базируется на понятии матрицы состояний. В каждый момент матрица состояний 256 байтов активизируется, из нее случайным образом выбирается один байт, чтобы служить ключом для шифрования Идея может быть показана в виде массива байтов: S [0] S [l] S [2] ••• S [255] Заметим, что индексы диапазона элементов — между 0 и 255. Содержание каждого элемента — байт (8 битов), который может интерпретироваться как целое число от 0 до 255. Инициализация. 1. На первом шаге матрица состояний инициализируется для значений 0, 1..., 255. Создается также массив ключей K [0], K [1] ..., K [255]. Если ключ засекречивания имеет точно 256 байтов, байты копируются в массив K; иначе — байты повторяются, пока не заполнится массив K. 2. На втором шаге инициализированная матрица проходит перестановку (скрэмблирование элементов), основанную на значении байтов в K[i]. Ключевой байт используется только на этом шаге, чтобы определить, какие элементы должны быть заменены. После этого шага байты матрицы полностью перетасованы. Генерация ключевого потока Ключи k в ключевом потоке генерируются один другим. Сначала элементы матрицы состояний переставляются на основе значений своих элементов и значений двух индивидуальных переменных i и j. Затем значения двух элементов матрицы состояний в позициях i и j используются, чтобы определить индекс элемента матрицы состояний, который служит как ключ k. Следующий код повторяется для каждого байта исходного текста, чтобы создать новый ключевой элемент в ключевом потоке. Переменные i и j инициализируются в 0 прежде, чем будет проведена первая итерация, но значение копируется от одной итерации к следующей. Проблемы безопасности RC4 Известно, что шифр безопасен, если размер ключа — по крайней мере, 128 битов (16 байтов). Это подтверждается сообщениями о некоторых атаках для малых размеров ключей (меньше, чем 5 байтов). Протоколы, которые сегодня использует RC4, устанавливают размеры ключей, которые делают RC4 безопасным. Однако, как и для многих других шифров, рекомендуется, чтобы для различных сеансов использовались различные ключи. Это препятствует злоумышленникам использовать дифференциальный криптоанализ шифра. Потоковый шифр A5/1 A5/1 (член семейства шифров A5) используется в Глобальной Системе Мобильной связи (GSM). Телефонная связь в GSM осуществляется как последовательность кадров на 228 битов, при этом каждый кадр длится 4,6 миллисекунды. A5/1 создает поток бит, исходя из ключа на 64 бита. Разрядные потоки собраны в буфере по 228 битов, чтобы складывать их по модулю два с кадром на 228 битов, Общий вид A5/1 Генератор ключей Три линейных регистра сдвига для AS/5 Инициализация (1/2) Инициализация выполняется для каждого кадра шифрования (или дешифрования). Она использует ключ засекречивания на 64 бита и 22 бита соответствующего номера кадра. Следующие шаги: 1. Сначала все биты в трех линейных регистрах сдвига устанавливаются в 0. 2. Второй: ключ на 64 бита смешивается со значением регистра согласно следующему коду. Каждый линейный регистр смещается на один шаг (синхронизация). For (i = 0 to 63) { Сложение по модулю 2 K[i] с крайними левыми битами всех трех регистров. Синхронизация всех трех линейных регистров сдвига } 3. Повторить предыдущий процесс, но использовать 22-битовый кадр. for (i = 0 to 22) { Сложение по модулю 2 номера кадра [i] с крайними левыми битами всех трех регистров. Синхронизация всех трех линейных регистров сдвига } Инициализация (2/2) 4. В течение 100 циклов синхронизируется весь генератор. При этом используется мажоритарная функция (см. далее), для того чтобы определить, какой линейный регистр сдвига должен быть синхронизирован. Обратите внимание, что иногда синхронизация здесь означает, что два, а то и все три линейных регистра сдвига проходят процесс смещения. for (i = 0 to 99) { Синхронизация всего генератора, на основе мажоритарной функции } Мажоритарная функция Значение мажоритарной функции (majority) с параметрами (b1 b 2, b3) равно 1, если значение большинства битов — 1; если это — 0, то ее значение — 0. Например, majority (1, 0, 1) = 1, но majority (0, 0, 1) = 0. Значение мажоритарной функции определяется перед поступлением тактового импульса; три входных бита названы синхронизирующими битами: если самый правый бит равен нулю, это — биты линейных регистров LFSR1 [10], LFSR2 [11] и LFSR3 [11]. Пример. В некоторый момент времени биты синхронизации — 1, 0 и 1. Какой должен быть LFSR? Решение Результат Majority (1, 0, 1) = 1. LFSR1 и LAFS3 сдвигаются, а LFSR2 — нет. Ключевые биты потока Генератор ключей создает ключевой поток в один бит при каждом тактовом импульсе. Прежде чем ключ создан, вычисляется мажоритарная функция. Затем каждый линейный регистр сдвига синхронизируется, если его бит синхронизации соответствует результату мажоритарной функции; иначе — он не синхронизируется. Проблемы безопасности Хотя GSM продолжает использовать A5/1, уже были зарегистрированы несколько атак на GSM. Две из них были упомянуты. В 2000 году Алекс Бирюков, Дэвид Вагнер и Эди Шамир показали, что атака в реальном масштабе времени находит ключ за несколько минут на основе известных малых исходных текстов, но это требует этапа предварительной обработки с 248 шагами. В 2003 Экдахи и Джонсон (Ekdahi и Johannson) опубликовали атаку, которая вскрывала A5/1 за несколько минут, используя анализ исходного текста в течение 2-5 минут. Имея в виду некоторые новые атаки GSM, возможно, в будущем нужно будет сменить или укрепить A5/1. Итоги (1/3) В реальных приложениях зашифрованный текст имеет переменные размеры и обычно намного большие, чем размер блока, определенный для современных блочных шифров. Режимы работы были изобретены, чтобы зашифровать текст любого размера, который обслуживается современными блочными шифрами. В этой лекции были рассмотрены пять режимов работы. Самый простой режим работы называется режимом электронной кодовой книги (ECB — ELECTRONIC CODEBOOK). Исходный текст разделен на N блоков. Размер блока — n бит. Каждый блок использует для шифрования и дешифрования один и тот же ключ. В режиме сцепления блоков шифротекста (CBC — Cipher Block Chaining) каждый блок исходного текста прежде чем зашифровывать, складывают по модулю два с предыдущим блоком зашифрованного текста. Когда блок зашифрован, его передают, но его копия сохраняется в памяти, чтобы ее можно было использовать для шифрования следующего блока. Передатчик и приемник согласуют заранее заданный вектор инициализации (IV), чтобы складывать его по модулю два с первым блоком зашифрованного текста. Итоги (2/3) Чтобы шифровать маленькие модули данных в реальном масштабе времени, применяется режим кодированной обратной связи (CFB — CIPHER FEEDBACK), CFB применяет стандартные блочные шифры, такие как DES или AES, регистр сдвига, но использует операцию сложения по модулю два, чтобы зашифровать или расшифровывать модули данных. Режим CFB использует блочные шифры, но в результате — это шифр потока, потому что каждый модуль данных зашифровывается своим ключом. Режим внешней обратной связи (OFB) очень похож на режим CFB, с одной разницей — каждый бит в зашифрованном тексте независим от предыдущего бита или битов. Это позволяет избежать распространения ошибки. Вместо того чтобы использовать предыдущий блок зашифрованного текста, OFB берет предыдущий ключ как информацию обратной связи. В режиме счетчика (CTR) нет информации обратной связи. Псевдослучайность в потоке достигается с помощью счетчика. Счетчик на n битов инициализируется установкой заранее заданного значения (IV) и увеличивается по заранее заданному правилу. Итоги (3/3) Чтобы зашифровать маленькие единицы данных, такие как символы или биты, были разработаны для испытаний несколько шифров потока. Эти шифры потока более эффективны для обработки в реальном масштабе времени. В этой лекции рассматривались только два шифра потока — RC4 и A5/l. RC4 — шифр потока, ориентированный на байт, в котором байт (8 битов) исходного текста надо сложить по модулю два с байтом ключа, чтобы создать байт зашифрованного текста. Секретный ключ, из которого генерируются однобайтовые ключи в ключевом потоке, может содержать от 1 до 256 байтов. Ключевой генератор потока базируется на перестановке 256 байтов. A5/1 — шифр потока, используемый для мобильной телефонной связи. A5/1 создает поток бит из ключа на 64 бита, используя три линейных регистра сдвига.