Функция одностороннего сжатия
В криптографии функция одностороннего сжатия — это функция, которая преобразует два входных сигнала фиксированной длины в выходные данные фиксированной длины. [1] Преобразование является «односторонним» , что означает, что для конкретного вывода сложно вычислить входные данные, которые сжимаются до этого вывода. Функции одностороннего сжатия не связаны с обычными алгоритмами сжатия данных , которые вместо этого могут быть инвертированы точно (сжатие без потерь) или приблизительно (сжатие с потерями) к исходным данным.
Функции одностороннего сжатия, например, используются в конструкции Меркла-Дамгорда внутри криптографических хеш-функций .
Функции одностороннего сжатия часто создаются на основе блочных шифров .Некоторые методы превращения любого обычного блочного шифра в функцию одностороннего сжатия: Дэвис-Мейер , Матьяс-Мейер-Осеас , Миягути-Пренель (функции сжатия единичного блока) и MDC-2/Meyer-Shilling , MDC-4. , Hirose (функции сжатия двухблочной длины). Эти методы подробно описаны далее. ( MDC-2 — это также название хеш-функции, запатентованной IBM .)
Другой метод - 2BOW (или NBOW в целом), который представляет собой «высокоскоростную хеш-функцию с несколькими блоками, основанную на блочных шифрах». [1] и обычно достигает (асимптотических) показателей от 1 до 2 независимо от размера хеша (только с небольшими постоянными издержками). Этот метод еще не подвергался серьезному анализу безопасности, поэтому с ним следует обращаться осторожно.
Сжатие
[ редактировать ]Функция сжатия смешивает два входных сигнала фиксированной длины и создает один выходной сигнал фиксированной длины того же размера, что и один из входных данных. Это также можно рассматривать как то, что функция сжатия преобразует один большой входной сигнал фиксированной длины в более короткий выходной сигнал фиксированной длины.
Например, вход A может иметь 128 бит, вход B — 128 бит, и они вместе сжимаются до одного выхода в 128 бит. Это эквивалентно сжатию одного 256-битного входного сигнала в один выходной 128-битный.
Некоторые функции сжатия сжимают не наполовину, а сжимают с некоторым другим коэффициентом. Например, вход A может иметь 256 бит, а вход B — 128 бит, которые сжимаются до одного выхода в 128 бит. То есть всего 384 входных бита сжимаются до 128 выходных битов.
Смешивание производится таким образом, чтобы полного лавинного эффекта добиться . То есть каждый выходной бит зависит от каждого входного бита.
В одну сторону
[ редактировать ]Однонаправленная функция — это функция, которую легко вычислить, но трудно обратить. Функция одностороннего сжатия (также называемая хэш-функцией) должна иметь следующие свойства:
- Легко вычислить: если у вас есть входные данные, вычислить результат легко.
- Устойчивость к прообразу: если злоумышленник знает только выходные данные, вычислить входные данные будет невозможно. Другими словами, учитывая результат , должно быть невозможно вычислить входные данные такой, что .
- Второе сопротивление прообразу: при наличии входных данных чей вывод , должно быть невозможно найти другой вход у которого такой же вывод , то есть .
- Устойчивость к коллизиям: должно быть сложно найти два разных входа, которые сжимаются до одного и того же выхода, т. е. злоумышленник не должен иметь возможности найти пару сообщений. такой, что . Из-за парадокса дня рождения (см. также «Атака дня рождения ») существует 50%-ная вероятность того, что столкновение можно будет обнаружить примерно за где — количество битов на выходе хэш-функции. Таким образом, атака на хеш-функцию не должна позволять обнаруживать коллизии менее чем с работа.
В идеале хотелось бы, чтобы «неосуществимость» сопротивления прообразу и сопротивления второму прообразу означала работу примерно где — количество битов на выходе хэш-функции. Однако, особенно для устойчивости ко второму прообразу, это представляет собой сложную проблему. [ нужна ссылка ]
Конструкция Меркле-Дамгорда
[ редактировать ]Обычно функции одностороннего сжатия используются в конструкции Меркла-Дамгорда внутри криптографических хэш-функций. Наиболее широко используемые хеш-функции, включая MD5 , SHA-1 (который устарел) [2] ) и SHA-2 используют эту конструкцию.
Хэш-функция должна иметь возможность обрабатывать сообщение произвольной длины в выходные данные фиксированной длины. Этого можно добиться, разбив входные данные на ряд блоков одинакового размера и последовательно обрабатывая их с помощью функции одностороннего сжатия. Функция сжатия может быть либо специально разработана для хеширования, либо построена на основе блочного шифра. Последний обработанный блок также должен быть дополнен по длине , что имеет решающее значение для безопасности этой конструкции.
Когда применяется дополнение длины (также называемое усилением MD), атаки не могут обнаружить коллизии быстрее, чем парадокс дня рождения ( , размер блока в битах), если используемая функция устойчив к столкновениям. [3] [4] Следовательно, хэш-конструкция Меркла-Дамгорда сводит проблему поиска правильной хеш-функции к поиску правильной функции сжатия.
Вторая атака по прообразу (при сообщении злоумышленник находит другое сообщение удовлетворить можно сделать по Келси и Шнайеру [5] для -message-блокировать сообщение вовремя . Сложность этой атаки достигает минимума для длинных сообщений, когда и подходы когда сообщения короткие.
Построение из блочных шифров
[ редактировать ]Функции одностороннего сжатия часто создаются на основе блочных шифров.
Блочные шифры принимают (как и функции одностороннего сжатия) два входных сигнала фиксированного размера ( ключ и открытый текст ) и возвращают один выходной сигнал ( зашифрованный текст ), который имеет тот же размер, что и входной открытый текст.
Однако современные блочные шифры являются лишь частично односторонними. То есть, имея открытый текст и зашифрованный текст, невозможно найти ключ, который зашифрует открытый текст в зашифрованный текст. Но, зная зашифрованный текст и ключ, соответствующий открытый текст можно найти, просто используя функцию дешифрования блочного шифра. Таким образом, чтобы превратить блочный шифр в функцию одностороннего сжатия, необходимо добавить некоторые дополнительные операции.
Некоторые методы превращения любого обычного блочного шифра в функцию одностороннего сжатия: Дэвис-Мейер, Матьяс-Мейер-Осеас, Миягути-Пренел (функции сжатия по длине блока) и MDC-2, MDC-4, Hirose (двойные функции сжатия). -функции сжатия по длине блока).
Функции сжатия по длине одного блока выводят то же количество бит, которое обрабатывается базовым блочным шифром. Следовательно, функции сжатия с двойной длиной блока выводят вдвое больше битов.
Если блочный шифр имеет размер блока , скажем, 128 бит, методы с одинарной длиной блока создают хеш-функцию с размером блока 128 бит и создают хеш из 128 бит. Методы с двойной длиной блока создают хэши с удвоенным размером хеша по сравнению с размером блока используемого блочного шифра. Таким образом, 128-битный блочный шифр можно превратить в 256-битную хеш-функцию.
Эти методы затем используются внутри конструкции Меркла-Дамгорда для построения фактической хеш-функции. Эти методы подробно описаны далее.
Использование блочного шифра для построения функции одностороннего сжатия для хеш-функции обычно несколько медленнее, чем использование специально разработанной функции одностороннего сжатия в хеш-функции. Это связано с тем, что все известные конструкции безопасности выполняют планирование ключей для каждого блока сообщения. Блэк, Кокран и Шримптон показали, что невозможно построить функцию одностороннего сжатия, которая выполняет только один вызов блочного шифра с фиксированным ключом. [6] На практике разумные скорости достигаются при условии, что планирование ключа выбранного блочного шифра не является слишком сложной операцией.
Но в некоторых случаях это проще, поскольку одна реализация блочного шифра может использоваться как для блочного шифра, так и для хеш-функции. Это также может сэкономить место для кода в очень маленьких встроенных системах, таких как, например, смарт-карты или узлы в автомобилях или других машинах.
Таким образом, скорость хеширования или скорость дают представление об эффективности хеш-функции, основанной на определенной функции сжатия. Скорость повторной хеш-функции определяет соотношение между количеством операций блочного шифрования и выходным результатом. Точнее, скорость представляет собой соотношение между количеством обработанных бит входных данных. , выходная разрядность блочного шифра и необходимые операции блочного шифра. производить эти выходные биты. Как правило, использование меньшего количества операций блочного шифрования приводит к повышению общей производительности всей хеш-функции, но также приводит к меньшему хеш-значению, что может быть нежелательно. Ставка выражается формулой:
Хэш-функция может считаться безопасной только в том случае, если выполняются как минимум следующие условия:
- Блочный шифр не имеет особых свойств, отличающих его от идеальных шифров, таких как слабые ключи или ключи, которые приводят к идентичному или связанному шифрованию (фиксированные точки или коллизии ключей).
- Полученный размер хеша достаточно велик. По дню рождения атака уровень безопасности 2. 80 (обычно считается, что сегодня невозможно вычислить) [ нужна ссылка ] желательно при этом размер хеша должен быть не менее 160 бит.
- Последний блок правильно дополняется по длине перед хешированием. (См. конструкцию Меркла – Дамгарда .) Заполнение длины обычно реализуется и обрабатывается внутри специализированных хеш-функций, таких как SHA-1 и т. д.
Представленные ниже конструкции: Дэвис-Мейер, Матьяс-Мейер-Осеас, Миягути-Пренель и Хиросе оказались безопасными при анализе черного ящика . [7] [8] Цель состоит в том, чтобы показать, что любая обнаруженная атака при определенных предположениях не менее эффективна, чем атака на день рождения . Модель черного ящика предполагает, что используется блочный шифр, случайно выбираемый из набора, содержащего все подходящие блочные шифры. В этой модели злоумышленник может свободно шифровать и расшифровывать любые блоки, но не имеет доступа к реализации блочного шифра. Функция шифрования и дешифрования представлена оракулами, которые получают пару: открытый текст и ключ или зашифрованный текст и ключ. Затем оракулы отвечают случайно выбранным открытым текстом или зашифрованным текстом, если пара задается впервые. Они оба используют общую таблицу для этих троек, пары из запроса и соответствующего ответа, и возвращают запись, если запрос был получен во второй раз. Для доказательства существует алгоритм поиска коллизий, который делает случайно выбранные запросы к оракулам. Алгоритм возвращает 1, если два ответа приводят к конфликту с участием хеш-функции, построенной на основе функции сжатия с применением этого блочного шифра (иначе 0). Вероятность того, что алгоритм вернет 1, зависит от количества запросов, определяющих уровень безопасности.
Дэвис-Мейер
[ редактировать ]Функция сжатия одного блока Дэвиса-Мейера подает каждый блок сообщения ( ) как ключ к блочному шифру. Он передает предыдущее значение хеш-функции ( ) в качестве открытого текста для шифрования. Затем выходной зашифрованный текст также подвергается операции XOR (⊕) с предыдущим значением хеш-функции ( ), чтобы получить следующее хеш-значение ( ). В первом раунде, когда предыдущего значения хеш-функции нет, используется постоянное заранее заданное начальное значение ( ).
В математических обозначениях Дэвиса – Мейера можно описать как:
Схема имеет скорость (k — размер ключа):
Если блочный шифр использует, например, 256-битные ключи, то каждый блок сообщения ( ) — это 256-битный фрагмент сообщения. Если тот же блочный шифр использует размер блока 128 бит, то входные и выходные значения хеш-функции в каждом раунде составляют 128 бит.
Вариации этого метода заменяют XOR любой другой групповой операцией, например сложением 32-битных целых чисел без знака.
Примечательным свойством конструкции Дэвиса-Мейера является то, что даже если базовый блочный шифр полностью безопасен, можно вычислить фиксированные точки для конструкции: для любого , можно найти значение такой, что : нужно просто установить . [9] Это свойство, которым случайные функции определенно не обладают. До сих пор на этом свойстве не было основано ни одной практической атаки, но об этой «особенности» следует знать. Фиксированные точки могут быть использованы во второй атаке на прообраз (при наличии сообщения , злоумышленник находит другое сообщение удовлетворить ) Келси и Шнайера [5] для -message-блокировать сообщение вовремя . Если конструкция не позволяет легко создавать фиксированные точки (например, Матьяс-Мейер-Осеас или Миягути-Пренель), то эту атаку можно выполнить в время. В обоих случаях сложность выше но ниже когда сообщения длинные и когда сообщения становятся короче, сложность атаки возрастает .
Безопасность конструкции Дэвиса-Мейера в модели идеального шифра была впервые доказана Р. Винтерницем. [10]
Матиас-Мейер-Осия
[ редактировать ]Функцию одностороннего сжатия Матьяса – Мейера – Осеаса с длиной одного блока можно считать двойственной (противоположной) функции Дэвиса – Мейера.
Он подает каждый блок сообщения ( ) в качестве открытого текста для шифрования. Затем выходной зашифрованный текст также подвергается операции XOR (⊕) с тем же блоком сообщения ( ), чтобы получить следующее хеш-значение ( ). Предыдущее значение хеш-функции ( ) подается как ключ к блочному шифру. В первом раунде, когда предыдущего значения хеш-функции нет, используется постоянное заранее заданное начальное значение ( ).
Если блочный шифр имеет разные размеры блока и ключа, хеш-значение ( ) будет иметь неправильный размер для использования в качестве ключа. Шифр также может иметь другие особые требования к ключу. Затем хэш-значение сначала передается через функцию быть преобразовано/дополнено, чтобы соответствовать ключу для шифра.
В математических обозначениях Матиаса – Мейера – Осеаса можно описать как:
Схема имеет тариф:
Вторая атака по прообразу (при сообщении злоумышленник находит другое сообщение удовлетворить ) можно сделать по Келси и Шнайеру [5] для -message-блокировать сообщение вовремя . Сложность выше. но ниже когда сообщения длинные, а когда сообщения становятся короче, сложность атаки возрастает .
Миягути-Пренель
[ редактировать ]Функция одностороннего сжатия Миягути-Пренеля с длиной одного блока представляет собой расширенный вариант функции Матьяса-Мейера-Осеаса. Его независимо предложили Сёдзи Миягути и Барт Пренил .
Он подает каждый блок сообщения ( ) в качестве открытого текста для шифрования. Затем выходной зашифрованный текст подвергается операции XOR (⊕) с тем же блоком сообщения ( ), а затем также выполняется XOR с предыдущим значением хеш-функции ( ), чтобы получить следующее хеш-значение ( ). Предыдущее значение хеш-функции ( ) подается как ключ к блочному шифру. В первом раунде, когда предыдущего значения хеш-функции нет, используется постоянное заранее заданное начальное значение ( ).
Если блочный шифр имеет разные размеры блока и ключа, хеш-значение ( ) будет иметь неправильный размер для использования в качестве ключа. Шифр также может иметь другие особые требования к ключу. Затем хэш-значение сначала передается через функцию быть преобразовано/дополнено, чтобы соответствовать ключу для шифра.
В математических обозначениях Миягути – Пренеля можно описать как:
Схема имеет тариф:
Роли и можно переключить, так что зашифрован под ключом , что делает этот метод расширением метода Дэвиса – Мейера.
Вторая атака по прообразу (при сообщении злоумышленник находит другое сообщение удовлетворить ) можно сделать по Келси и Шнайеру [5] для -message-блокировать сообщение вовремя . Сложность выше. но ниже когда сообщения длинные, а когда сообщения становятся короче, сложность атаки возрастает .
Хиросе
[ редактировать ]Хиросе [8] Функция одностороннего сжатия с двойной длиной блока состоит из блочного шифра и перестановки. . Он был предложен Сёичи Хиросе в 2006 году и основан на работе [11] Мридул Нанди .
Он использует блочный шифр, длина ключа которого больше длины блока и создает хэш размером . Например, любой из кандидатов AES со 192- или 256-битным ключом (и 128-битным блоком).
Каждый раунд принимает часть сообщения то есть бит и использует его для обновления двух -битные значения состояния и .
Первый, объединяется с изготовить ключ . Затем два значения обратной связи обновляются в соответствии с:
— произвольная перестановка без неподвижных точек на -битовое значение, обычно определяемое как для произвольной ненулевой константы (все могут быть удобным выбором).
Каждое шифрование напоминает стандартную конструкцию Дэвиса-Мейера. Преимущество этой схемы перед другими предложенными схемами с двойной длиной блока состоит в том, что оба шифрования используют один и тот же ключ, и, таким образом, усилия по планированию ключей могут быть разделены.
Окончательный результат . Схема имеет тариф относительно шифрования сообщения с помощью шифра.
Хиросе также предоставляет доказательство в модели идеального шифра.
Губка строительная
[ редактировать ]Губчатую конструкцию можно использовать для создания функций одностороннего сжатия.
См. также
[ редактировать ]- Whirlpool — криптографическая хэш-функция, построенная с использованием конструкции Миягути-Пренеля и блочного шифра, аналогичного Square и AES .
- CBC-MAC , OMAC и PMAC — методы преобразования блочных шифров в коды аутентификации сообщений (MAC).
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Перейти обратно: а б Справочник по прикладной криптографии Альфреда Дж. Менезеса, Пола К. ван Оршота, Скотта А. Ванстона. Пятое издание (август 2001 г.), стр. 328.
- ^ «Анонсируем первое столкновение SHA1» . Блог Google по онлайн-безопасности . Проверено 12 января 2020 г.
- ^ Иван Дамгорд. Принцип проектирования хэш-функций . У Жиля Брассара, редактора CRYPTO, том 435 LNCS, страницы 416–427. Спрингер, 1989.
- ^ Ральф Меркл. Односторонние хеш-функции и DES . У Жиля Брассара, редактора CRYPTO, том 435 LNCS, страницы 428–446. Спрингер, 1989.
- ^ Перейти обратно: а б с д Джон Келси и Брюс Шнайер. Вторые прообразы на n -битных хэш-функциях гораздо меньше 2 н работа . У Рональда Крамера, редактора EUROCRYPT, том 3494 LNCS, страницы 474–490. Спрингер, 2005.
- ^ Джон Блэк, Мартин Кокран и Томас Шримптон. О невозможности создания высокоэффективных хэш-функций на основе блочных шифров. Достижения в криптологии – EUROCRYPT '05, Орхус, Дания, 2005. Авторы определяют хеш-функцию как «высокоэффективную, если ее функция сжатия использует ровно один вызов блочного шифра с фиксированным ключом».
- ^ Джон Блэк, Филип Рогауэй и Том Шримптон. Анализ черного ящика конструкций хеш-функций на основе блочного шифрования из PGV. Достижения в криптологии - CRYPTO '02, Конспекты лекций по информатике, том. 2442, стр. 320–335, Springer, 2002. См. таблицу на стр. 3. Дэвис-Мейер, Матьяс-Мейер-Осеас и Миягути-Пренель пронумерованы в первом столбце как хеш-функции 5, 1 и 3.
- ^ Перейти обратно: а б Хиросе С. « Некоторые правдоподобные конструкции хеш-функций двухблочной длины» . В: Робшоу, MJB (ред.) FSE 2006, LNCS, vol. 4047, стр. 210–225, Springer, Гейдельберг, 2006.
- ^ Справочник по прикладной криптографии Альфреда Дж. Менезеса, Пола К. ван Оршота, Скотта А. Ванстона. Пятое издание (август 2001 г.), стр. 375.
- ^ Р. Винтерниц. Безопасная односторонняя хэш-функция, созданная на основе DES. В материалах симпозиума IEEE по информационной безопасности и конфиденциальности, с. 88-90. IEEE Press, 1984.
- ^ М. Нанди, К оптимальным хеш-функциям двойной длины , В: Материалы 6-й Международной конференции по криптологии в Индии (INDOCRYPT 2005), Конспекты лекций по информатике 3797, страницы 77–89, 2005.
Источники
[ редактировать ]- Менезес; ван Оршот; Ванстон (2001). «Хеш-функции и целостность данных» (PDF) . Справочник по прикладной криптографии .