СВИФФТ
Общий | |
---|---|
Дизайнеры | Вадим Любашевский, Даниэле Мичиансио, Крис Пейкерт, Алон Розен |
Впервые опубликовано | 2008 |
Связано с | Алгоритмы на основе БПФ |
В криптографии . SWIFFT собой набор доказуемо безопасных хеш-функций представляет Он основан на концепции быстрого преобразования Фурье (БПФ). SWIFFT — не первая хэш-функция, основанная на БПФ, но она выделяется тем, что предоставляет математическое доказательство своей безопасности. Он также использует алгоритм сокращения базиса LLL . Можно показать, что поиск коллизий в SWIFFT по крайней мере так же сложен, как и поиск коротких векторов в циклических/ идеальных решетках в худшем случае . Предоставляя снижение безопасности для наихудшего сценария сложной математической задачи, SWIFFT дает гораздо более надежную гарантию безопасности, чем большинство других криптографических хеш-функций .
В отличие от многих других доказуемо безопасных хеш-функций, этот алгоритм довольно быстр, обеспечивая пропускную способность 40 Мбит/с на процессоре Intel Pentium 4 с тактовой частотой 3,2 ГГц. Хотя SWIFFT удовлетворяет многим желаемым криптографическим и статистическим свойствам, он не был разработан как «универсальный». цель» криптографическая хэш-функция. Например, это не псевдослучайная функция и не будет подходящим экземпляром случайного оракула . Алгоритм менее эффективен, чем большинство традиционных хеш-функций, которые не доказывают свою устойчивость к коллизиям. Следовательно, его практическое использование будет в основном в приложениях, где доказательство устойчивости к коллизиям особенно ценно, например, в цифровых подписях, которые должны оставаться надежными в течение длительного времени.
Модификация SWIFFT под названием SWIFFTX была предложена в качестве кандидата на функцию SHA-3 на конкурсе хеш-функций NIST. [1] и был отклонен в первом туре. [2]
Алгоритм [ править ]
Алгоритм следующий: [3]
- Пусть полиномиальная переменная называется
- Ввод : сообщение длины
- Конвертировать в коллекцию полиномы в некотором кольце полиномов с двоичными коэффициентами.
- Вычислите коэффициенты Фурье каждого с помощью СВИФФТ.
- Определим коэффициенты Фурье , так что они фиксированы и зависят от семейства SWIFFT.
- Поточечное умножение коэффициентов Фурье с коэффициентами Фурье для каждого .
- Используйте обратное БПФ для получения полиномы степени .
- Вычислить модуль и .
- Конвертировать к бит и выведите его.
- Операцию БПФ на шаге 4 легко инвертировать, и она выполняется для достижения диффузии , то есть смешивания входных битов.
- Линейная комбинация на шаге 6 приводит к путанице , поскольку сжимает входные данные.
- Это всего лишь высокоуровневое описание того, что делает алгоритм. Некоторые более сложные оптимизации используются для того, чтобы в конечном итоге получить высокопроизводительный алгоритм.
Пример [ править ]
Мы выбираем конкретные значения параметров n , m и p следующим образом: n = 64, m = 16, p = 257. Для этих параметров любая фиксированная функция сжатия в семействе принимает двоичный вход длиной mn = 1024 бит ( 128 байт), на выход в диапазоне , который имеет размер . Выход в можно легко представить с помощью 528 бит (66 байт).
Алгебраическое описание [ править ]
Функции SWIFFT можно описать как простое алгебраическое выражение над некоторым кольцом полиномов. . Семейство этих функций зависит от трех основных параметров: пусть будет степенью 2, пусть — небольшое целое число, и пусть быть модулем (не обязательно простым , но удобно выбрать его простым). Определять быть кольцом , т. е. кольцо полиномов от имеющие целые коэффициенты по модулю и . Элемент можно записать в виде многочлена степени имеющие коэффициенты в . Определенная функция в семействе SWIFFT определяется фиксированные элементы кольца , которые называются множителями. Функция соответствует следующему уравнению над кольцом R :
The являются полиномами с двоичными коэффициентами и соответствуют двоичному входу длины .
Вычисление полиномиального произведения [ править ]
Основная проблема при вычислении приведенного выше выражения состоит в вычислении полиномиальных произведений . Быстрый способ вычисления этих произведений дает теорема о свертке . Это говорит о том, что при определенных ограничениях справедливо следующее:
Здесь обозначает преобразование Фурье и обозначает поточечное произведение. В общем случае теоремы о свертке означает не умножение, а свертку . Однако можно показать, что полиномиальное умножение является сверткой.
Быстрое Фурье преобразование
Для нахождения преобразования Фурье мы будем использовать БПФ ( быстрое преобразование Фурье ), которое находит преобразование в время. Алгоритм умножения теперь выглядит следующим образом:Мы используем БПФ для вычисления (всех сразу) коэффициентов Фурье каждого многочлена. Затем мы поточечно умножаем соответствующие коэффициенты Фурье двух полиномов и, наконец, используем обратное БПФ, чтобы получить полином степени .
Теоретико-числовое преобразование [ править ]
Вместо обычного преобразования Фурье SWIFFT использует теоретико-числовое преобразование . Теоретико-числовое преобразование использует корни из единицы в вместо сложных корней единства. Чтобы это работало, нам нужно убедиться, что — конечное поле , и эта примитивная 2 n й В этой области существуют корни единства. Это можно сделать, взяв простое такое, что делит .
Выбор параметра [ править ]
На параметры m , p , n распространяются следующие ограничения:
- n должно быть степенью 2
- p должно быть простым
- p -1 должно быть кратно 2 n
- должно быть меньше m (иначе выходное значение не будет меньше входного)
Возможный выбор: n =64, m =16, p =257. Получаем пропускную способность около 40 Мбит/с, безопасность около операции по поиску коллизий и размер дайджеста 512 бит.
Статистические свойства [ править ]
- (Универсальное хеширование). Семейство функций SWIFFT универсально . Это означает, что для любого фиксированного отдельного , вероятность (при случайном выборе из семьи), что является обратной величиной размера диапазона.
- (Регулярность). Семейство функций сжатия SWIFFT является регулярным. Функция называется регулярным, если для входного выбранных равномерно случайным образом из области определения, выход распределяется равномерно по диапазону.
- (экстрактор случайностей). SWIFFT — это экстрактор случайных чисел . Для хеш-таблиц и связанных с ними приложений обычно желательно, чтобы выходные данные хеш-функции распределялись равномерно (или как можно ближе к равномерному), даже если входные данные не являются однородными. Хэш-функции, дающие такие гарантии, известны как экстракторы случайности , поскольку они очищают неравномерную случайность входных данных до (почти) равномерно распределенных выходных данных. Формально извлечение случайности на самом деле является свойством семейства функций, из которого случайным образом (и не обращая внимания на входные данные) выбирается одна функция.
и Криптографические безопасность свойства
- SWIFFT не является псевдослучайным из-за линейности. Для любой функции от нашей семьи и любых двух входов , такой, что также является допустимым вводом, у нас есть это . Это соотношение вряд ли будет соблюдаться для случайной функции, поэтому злоумышленник может легко отличить наши функции от случайной функции.
- Авторы не утверждают, что функции SWIFFT ведут себя как случайный оракул . Говорят, что функция ведет себя как случайный оракул, если она действует как действительно случайная функция. Это отличается от псевдослучайности тем, что функция фиксированная и общедоступная.
- Семейство SWIFFT доказуемо устойчиво к коллизиям (в асимптотическом смысле) при относительно мягком предположении о наихудшей сложности поиска коротких векторов в циклических/идеальных решетках. Это означает, что семейство также устойчиво ко второму прообразу.
Теоретическая безопасность [ править ]
SWIFFT — это пример доказуемо безопасной криптографической хэш-функции . Как и большинство доказательств безопасности, доказательство безопасности SWIFFT основано на сведении к определенной трудной для решения математической задаче. Обратите внимание, что это означает, что безопасность SWIFFT во многом зависит от сложности этой математической задачи.
Сведение в случае SWIFFT сводится к проблеме поиска коротких векторов в циклических/ идеальных решетках . Можно доказать, что справедливо следующее:Предположим, у нас есть алгоритм, который для случайной версии SWIFFT, заданной формулой можно найти коллизии в в течение некоторого возможного времени , и с вероятностью . Допускается, что алгоритм работает только в небольшой, но заметной части семейства SWIFFT. Тогда мы также можем найти алгоритм который всегда может найти короткий вектор в любой идеальной решетке над кольцом в какое-то возможное время , в зависимости от и .Это означает, что поиск коллизий в SWIFFT по меньшей мере так же сложен, как и наихудший сценарий поиска коротких векторов в решетке по . На данный момент все самые быстрые алгоритмы поиска коротких векторов являются экспоненциальными. . Обратите внимание, что это гарантирует отсутствие значительного набора «слабых случаев», в которых безопасность SWIFFT является слабой. Эту гарантию не дают большинство других доказуемо безопасных хеш-функций.
Практическая безопасность [ править ]
Известные рабочие атаки — это обобщенная атака дня рождения , которая занимает 2 106 операции и инверсионные атаки, которые занимают 2 448 операции по выбору стандартных параметров. Обычно этого считается достаточным, чтобы сделать атаку противника невозможной.
Ссылки [ править ]
- ^ Даниэле Миччанчо; Юрий Арбитман; Гиль Догон; Вадим Любашевский; Крис Пейкерт; Алон Розен (30 октября 2008 г.). «SWIFFTX: предложение по стандарту SHA-3» (PDF) . Проверено 3 марта 2017 г.
- ^ «Кандидаты второго тура» . Национальный институт стандартов и технологий . 16 июля 2009 г. Архивировано из оригинала 4 июня 2017 г. Проверено 3 марта 2017 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ Вадим Любашевский; Даниэле Миччанчо; Крис Пейкерт; Алон Розен (21 февраля 2008 г.). «SWIFFT: скромное предложение по хешированию БПФ» (PDF) . Проверено 3 марта 2017 г.