Кража зашифрованного текста
Эта статья включает список литературы , связанную литературу или внешние ссылки , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( Апрель 2009 г. ) |
В криптографии текста кража зашифрованного текста ( CTS ) — это общий метод использования режима работы блочного шифрования , который позволяет обрабатывать сообщения, которые не делятся поровну на блоки, не приводя к какому-либо расширению зашифрованного , за счет незначительного увеличения сложности.
Общие характеристики
[ редактировать ]Кража зашифрованного текста — это метод шифрования открытого текста с использованием блочного шифра без заполнения сообщения кратным размеру блока, поэтому зашифрованный текст имеет тот же размер, что и открытый текст.
Это достигается путем изменения обработки двух последних блоков сообщения. Обработка всех блоков, кроме двух последних, не изменилась, но часть зашифрованного текста предпоследнего блока «украдена» для дополнения последнего блока открытого текста. Дополненный последний блок затем шифруется как обычно.
Окончательный зашифрованный текст для последних двух блоков состоит из частичного предпоследнего блока (без «украденной» части) плюс полного финального блока, который имеет тот же размер, что и исходный открытый текст.
Для расшифровки необходимо сначала расшифровать последний блок, а затем восстановить украденный зашифрованный текст в предпоследнем блоке, что можетзатем расшифровать как обычно.
В принципе, можно использовать любой режим работы блочного блочного шифрования , но режимы, подобные потоковому шифру, уже могут применяться к сообщениям произвольной длины без заполнения, поэтому они не получают преимуществ от этого метода. Распространенными режимами работы , связанными с кражей зашифрованного текста, являются электронная кодовая книга (ECB) и цепочка блоков шифров (CBC).
Для кражи зашифрованного текста в режиме ECB требуется, чтобы открытый текст был длиннее одного блока . Возможным обходным решением является использование режима работы блочного шифрования, подобного потоковому шифру , когда длина открытого текста составляет один блок или меньше, например режимы CTR, CFB или OFB.
Кража зашифрованного текста в режиме CBC не обязательно требует, чтобы открытый текст был длиннее одного блока . В случае, когда длина открытого текста составляет один блок или меньше, вектор инициализации (IV) может действовать как предшествующий блок зашифрованного текста. В этом случае модифицированный IV должен быть отправлен получателю. Это может оказаться невозможным в ситуациях, когда IV не может быть свободно выбран отправителем при отправке зашифрованного текста (например, когда IV является производным или заранее установленным значением), и в этом случае кража зашифрованного текста для режима CBC может быть осуществлена только встречаются в открытых текстах длиной более одного блока.
Чтобы реализовать шифрование или дешифрование CTS для данных неизвестной длины, реализация должна задержать обработку (и буферизацию) двух самых последних блоков данных, чтобы их можно было правильно обработать в конце потока данных.
Формат зашифрованного текста
[ редактировать ]Существует несколько различных способов организации зашифрованного текста для передачи. Биты зашифрованного текста во всех случаях одинаковы, просто передаются в разном порядке, поэтому выбор не имеет последствий для безопасности; это просто удобство реализации.
Нумерация здесь взята у Дворкина, который их все описывает. Третий — самый популярный, описанный Дэменом и Шнайером ; Мейер описывает похожую, но несовместимую схему (относительно порядка битов и использования ключей).
CS1
[ редактировать ]Вероятно, наиболее очевидный способ упорядочить зашифрованный текст — это передать усеченный предпоследний блок, за которым следует полный финальный блок. Это не удобно для приёмника по двум причинам:
- В любом случае получатель должен сначала расшифровать последний блок, а
- Это приводит к тому, что последний блок не выравнивается по естественной границе, что усложняет аппаратную реализацию.
Это имеет то преимущество, что, если окончательный блок открытого текста оказывается кратным размеру блока, зашифрованный текст идентичен зашифрованному тексту исходного режима работы без кражи зашифрованного текста.
CS2
[ редактировать ]Часто бывает удобнее поменять местами два последних блока зашифрованного текста, чтобы зашифрованный текст заканчивался полным последним блоком, за которым следовал усеченный предпоследний блок. Это приводит к естественно выровненным блокам зашифрованного текста.
Чтобы обеспечить совместимость с режимами без кражи, опция CS2 выполняет эту замену только в том случае, если количество украденного зашифрованного текста не равно нулю, т. е. исходное сообщение не было кратно размеру блока.
Это обеспечивает естественное выравнивание и совместимость с режимами без кражи, но требует разного подхода к случаям выровненного и невыровненного размера сообщения.
CS3
[ редактировать ]Самая популярная альтернатива безоговорочно меняет местами последние два блока зашифрованного текста. Именно этот порядок используется в описаниях ниже.
Описание режима кражи зашифрованного текста
[ редактировать ]Чтобы зашифровать или расшифровать данные, используйте стандартный режим блочного шифрования для всех блоков данных, кроме двух последних.
Следующие шаги описывают, как обрабатывать последние два блока открытого текста, называемые P n -1 и P n , где длина P n -1 равна размеру блока шифра в битах, B ; длина последнего блока P n равна М битам; и K — ключ, который используется. M может принимать значения от 1 до B включительно, поэтому P n может быть полным блоком. В описании режима CBC также используется блок зашифрованного текста, расположенный непосредственно перед соответствующими блоками, C n -2 , который фактически может быть IV, если открытый текст умещается в два блока.
Для этого описания используются следующие функции и операторы:
- Head (data, a ): возвращает первые биты строки данных.
- Tail (data, a ): возвращает последние биты строки данных.
- Шифрование ( K , data): используйте базовый блочный шифр в режиме шифрования строки данных с использованием ключа K .
- Расшифровать ( K , data): использовать базовый блочный шифр в режиме расшифровки строки данных с использованием ключа K .
- XOR : побитовое исключающее ИЛИ. Эквивалентно побитовому сложению без использования бита переноса.
- ||: оператор конкатенации. Объедините строки по обе стороны от оператора.
- 0 а : строка из 0 бит.
Кража зашифрованного текста ЕЦБ
[ редактировать ]Кража зашифрованного текста в режиме ECB приводит к межблочной зависимости внутри последних двух блоков, что приводит к изменению поведения распространения ошибок для последних двух блоков.
Этапы шифрования ECB (см. рисунок)
[ редактировать ]- E n -1 = Зашифровать ( K , P n -1 ). Зашифруйте P n −1 , чтобы создать E n −1 . Это эквивалентно поведению стандартного режима ECB.
- C n знак равно Глава ( E n -1 , M ). Выберите первые M бит En чтобы −1, создать C n . Последний блок зашифрованного текста, C n , состоит из ведущих M бит предпоследнего блока зашифрованного текста. Во всех случаях последние два блока отправляются в другом порядке, чем соответствующие блоки открытого текста.
- Д п знак равно п п || Хвост ( E п -1 , B - M ). Заполните P n младшими битами En из −1 .
- C n -1 = Зашифровать ( K , D n ). Зашифруйте D n , чтобы создать C n −1 . Для первых M бит это эквивалентно тому, что произошло бы в режиме ECB (кроме порядка зашифрованного текста). Что касается последних битов B - M , это второй раз, когда эти данные шифруются этим ключом (он уже был зашифрован при создании En - 1 на шаге 2).
Этапы расшифровки ЕЦБ
[ редактировать ]- D n = Расшифровать ( K , C n -1 ). Расшифруйте C n −1 , чтобы создать D n . Это отменяет шаг 4 процесса шифрования.
- Е п -1 знак равно С п || Хвост ( D п , B - M ). Заполните C n извлеченным зашифрованным текстом в конце D n (помещенным туда на этапе 3 процесса шифрования ECB).
- P n = Руководитель ( D n , M ). Выберите первые M бит D n, чтобы создать P n . Как описано на этапе 3 процесса шифрования ECB, первые M бит D n содержат P n . Ставим этот последний (возможно, частичный) блок в очередь для окончательного вывода.
- P n -1 = Расшифровать ( K , E n -1 ). Расшифруйте E n −1 , чтобы создать P n −1 . Это отменяет шаг шифрования 1.
Распространение ошибок кражи зашифрованного текста ЕЦБ
[ редактировать ]Битовая ошибка при передаче C n -1 привела бы к искажению как P n -1, так и P n в масштабе всего блока .Битовая ошибка при передаче C n приведет к искажению P n -1 в масштабе всего блока . Это существенное изменение по сравнению с поведением ЕЦБ по распространению ошибок.
Кража зашифрованного текста CBC
[ редактировать ]В CBC уже существует взаимодействие между обработкой различных соседних блоков, поэтому в этом режиме CTS оказывает меньшее концептуальное влияние. Это влияет на распространение ошибок.
Этапы шифрования CBC
[ редактировать ]- Икс п -1 знак равно п п -1 XOR C п -2 . Исключающее ИЛИ P n -1 с предыдущим блоком зашифрованного текста C n -2 , чтобы создать X n -1 . Это эквивалентно поведению стандартного режима CBC.
- E n -1 = Зашифровать ( K , X n -1 ). Зашифруйте X n −1 , чтобы создать E n −1 . Это эквивалентно поведению стандартного режима CBC.
- C n знак равно Глава ( E n -1 , M ). Выберите первые M бит En чтобы −1, создать C n . Последний блок зашифрованного текста, C n , состоит из ведущих M бит предпоследнего блока зашифрованного текста. Во всех случаях последние два блока отправляются в другом порядке, чем соответствующие блоки открытого текста.
- п = п п || 0 Б - М . Дополните P n нулями в конце, чтобы создать P длины B . Заполнение нулями на этом этапе важно для шага 5.
- D п знак равно E п -1 XOR п . Исключающее ИЛИ −1 En с P для создания D n . Для первых M бит блока это эквивалентно режиму CBC; первые M бит зашифрованного текста предыдущего блока, En -1 M , подвергаются операции XOR с битами открытого текста последнего блока открытого текста. Заполнение нулями P на шаге 4 было важным, поскольку оно делает эффект операции XOR на последние B - M бит эквивалентным копированию последних B - M бит E n -1 в конец D n . Это те же самые биты, которые были удалены из En -1 создании на этапе 3 при n . C
- C n -1 = Зашифровать ( K , D n ). Зашифруйте D n , чтобы создать C n −1 . Для первых M бит это эквивалентно тому, что произошло бы в режиме CBC (кроме порядка зашифрованного текста). Что касается последних битов B - M , это второй раз, когда эти данные шифруются этим ключом (он уже был зашифрован при создании En - 1 на шаге 2).
Этапы расшифровки CBC
[ редактировать ]- D n = Расшифровать ( K , C n -1 ). Расшифруйте C n −1 , чтобы создать D n . Это отменяет шаг 6 процесса шифрования.
- С знак равно С п || 0 Б - М . Дополните C n нулями в конце, чтобы создать C длины B. блок Мы дополняем C n нулями, чтобы облегчить выполнение шага 3.
- Икс п знак равно D п XOR C . Исключающее ИЛИ D n с C для создания X n . Глядя на первые M шаг имеет результат операции XOR n ( первые M бит процесса шифрования ' En -1 бит, этот ) с (теперь расшифрованной) P n XOR Head ( En -1 , C M ) ( см. шаги 4–5 процесса шифрования). Другими словами, у нас есть CBC, расшифровавший первые M бит P n . Глядя на последние B - M бит, это восстанавливает последние B - M бит E n -1 .
- п п = руководитель ( Икс п , M ). Выберите первые M бит X n, чтобы создать P n . Как описано на этапе 3, первые M битов X n содержат P n . Ставим этот последний (возможно, частичный) блок в очередь для окончательного вывода.
- Е п -1 знак равно С п || Хвост ( Икс п , B - M ). Добавьте хвостовые биты ( B − M ) X n к C n, чтобы создать E n −1 . Как описано на шаге 3, E n -1 состоит из всех C n ( длиной M битов), к которым добавляются последние B - M бит X n . Мы повторно собираем En - 1 (это тот же En - 1, который использовался в процессе шифрования) для обработки на шаге 6.
- Икс п -1 = Расшифровать ( К , Е п -1 ). Расшифруйте E n −1 , чтобы создать X n −1 . Это отменяет шаг шифрования 2. X n -1 такой же, как и в процессе шифрования.
- п п -1 знак равно Икс п -1 XOR C п -2 . Исключающее ИЛИ X n -1 с предыдущим блоком зашифрованного текста C n -2 , чтобы создать P n -1 . Наконец, мы отменяем шаг XOR с шага 1 процесса шифрования.
Замечания по реализации CBC
[ редактировать ]Для кражи зашифрованного текста CBC существует умный (но непрозрачный) метод реализации описанного процесса кражи зашифрованного текста с использованием стандартного интерфейса CBC. Использование этого метода приводит к снижению производительности на этапе расшифровки на одну дополнительную операцию расшифровки блока по сравнению с тем, что было бы необходимо при использовании специальной реализации.
Зашифрованный текст CBC, кража шифрования с использованием стандартного интерфейса CBC
[ редактировать ]- Дополните последний частичный блок открытого текста цифрой 0.
- Зашифруйте весь дополненный открытый текст, используя стандартный режим CBC.
- Поменяйте местами два последних блока зашифрованного текста.
- Усеките зашифрованный текст до длины исходного открытого текста.
Дешифрование зашифрованного текста CBC с использованием стандартного интерфейса CBC
[ редактировать ]- D n = Расшифровать ( K , C n -1 ). Расшифруйте предпоследний блок зашифрованного текста, используя режим ECB.
- С п = С п || Хвост ( D п , B - M ). Дополните зашифрованный текст до ближайшего числа, кратного размеру блока, используя последние B - M бит расшифровки блочного шифра предпоследнего блока зашифрованного текста.
- Поменяйте местами два последних блока зашифрованного текста.
- Расшифруйте (измененный) зашифрованный текст, используя стандартный режим CBC.
- Усекать открытый текст до длины исходного зашифрованного текста.
Распространение ошибок кражи зашифрованного текста CBC
[ редактировать ]Битовая ошибка при передаче C n -1 привела бы к искажению как P n -1, так и P n в масштабе всего блока .Битовая ошибка при передаче C n приведет к соответствующей битовой ошибке в P n в масштабе всего блока и к искажению P n -1 .
Ссылки
[ редактировать ]- Дэмен, Джоан (1995). «2.5.1 и 2.5.2». Разработка шифров и хеш-функций, стратегии на основе линейного и дифференциального криптоанализа (PDF) (кандидатская диссертация). Католический университет Левена.
- Шнайер, Брюс (1995). Прикладная криптография (2-е изд.). John Wiley & Sons, Inc., стр. 191, 195. ISBN. 978-0-471-12845-8 .
- Мейер, Карл Х.; Матьяс, Стивен М. (1982). Криптография: новое измерение в безопасности компьютерных данных . John Wiley & Sons, Inc., стр. 77–85. ISBN 978-0-471-04892-3 .
- Р. Болдуин; Р. Ривест (октябрь 1996 г.). Алгоритмы RC5, RC5-CBC, RC5-CBC-Pad и RC5-CTS . дои : 10.17487/RFC2040 . РФК 2040 .
- Дворкин, Моррис (октябрь 2011 г.). Рекомендации по режимам работы блочного шифрования: три варианта кражи зашифрованного текста для режима CBC (PDF) . Национальный институт стандартов и технологий США (NIST). Дополнение к NIST Special Pub 800-38A.