Поли1305
Poly1305 — это универсальное семейство хэшей, разработанное Дэниелом Дж. Бернштейном для использования в криптографии . [1]
Как и любое универсальное семейство хешей, Poly1305 можно использовать в качестве одноразового кода аутентификации сообщения для аутентификации одного сообщения с использованием секретного ключа, совместно используемого отправителем и получателем. [2] аналогично тому, как одноразовый блокнот можно использовать для сокрытия содержимого одного сообщения с использованием секретного ключа, совместно используемого отправителем и получателем.
Первоначально Poly1305 был предложен как часть Poly1305-AES. [3] аутентификатор Картера-Вегмана [4] [5] [1] который сочетает в себе хэш Poly1305 с AES-128 для аутентификации многих сообщений с использованием одного короткого ключа и отдельных номеров сообщений.Позже Poly1305 был применен с одноразовым ключом, сгенерированным для каждого сообщения с использованием XSalsa20 в аутентифицированном шифре NaCl crypto_secretbox_xsalsa20poly1305, [6] а затем использовать ChaCha в ChaCha20-Poly1305. аутентифицированном шифре [7] [8] [1] развернут в TLS в Интернете. [9]
Описание [ править ]
Определение Poly1305 [ править ]
Poly1305 принимает 16-байтовый секретный ключ. и -байтовое сообщение и возвращает 16-байтовый хэш .Для этого Poly1305: [3] [1]
- интерпретирует как 16-байтовое целое число с прямым порядком байтов.
- Нарушает сообщение на последовательные 16-байтовые фрагменты.
- Интерпретирует 16-байтовые фрагменты как 17-байтовые целые числа с прямым порядком байтов, добавляя 1 байт к каждому 16-байтовому фрагменту, который будет использоваться в качестве коэффициентов полинома.
- Оценивает полином в точке по модулю простого числа .
- Уменьшает результат по модулю закодированные с прямым порядком байтов, возвращают 16-байтовый хэш.
Коэффициенты полинома , где , являются:
за исключением того, что если , затем:
Секретный ключ ограничено наличием байтов , т. е . очистить четыре старших бита; и иметь байты , т. е . очистить два младших бита.Таким образом, существуют различные возможные значения .
Использовать в качестве одноразового аутентификатора [ править ]
Если — это секретная 16-байтовая строка, интерпретируемая как целое число с прямым порядком байтов, затем
называется аутентификатором сообщения .Если отправитель и получатель используют общий 32-байтовый секретный ключ заранее выбран равномерно случайным образом, тогда отправитель может передать аутентифицированное сообщение .Когда получатель получает предполагаемое проверенное сообщение (который мог быть изменен противником при передаче), они могут проверить его подлинность, проверив, является ли
Однако тот же ключ не должен использоваться повторно для двух сообщений.Если противник узнает
для , они могут вычесть
и найдите корень полученного полинома, чтобы восстановить небольшой список кандидатов на секретную оценочную точку. , и оттуда секретный блокнот .Затем злоумышленник может использовать это для подделки дополнительных сообщений с высокой вероятностью.
Картера- Использование в Poly1305-AES в качестве аутентификатора . Вегмана
Исходное предложение Poly1305-AES [3] использует структуру Картера – Вегмана [4] [5] для аутентификации многих сообщений, принимая быть аутентификатором i- го сообщения , где является универсальным семейством хешей и — это независимое однородное случайное значение хеш-функции, которое служит одноразовым блокнотом для его сокрытия.Poly1305-AES использует AES-128 для генерации , где кодируется как 16-байтовое целое число с прямым порядком байтов.
В частности, ключ Poly1305-AES представляет собой 32-байтовую пару. 16-байтовой оценочной точки , как указано выше, и 16-байтовый ключ AES. .Аутентификатор Poly1305-AES в сообщении является
где 16-байтовые строки и целые числа идентифицируются с помощью кодировки с прямым порядком байтов.Обратите внимание, что повторно используется между сообщениями.
Без знания , злоумышленник имеет низкую вероятность подделать любые аутентифицированные сообщения, которые получатель примет за подлинные.Предположим, противник видит аутентифицированные сообщения и попытки подделки и может отличить из равномерной случайной перестановки с преимуществом не более .(Если AES не сломан, очень маленький.)Шансы противника на успех при одной подделке не превышают:
Номер сообщения никогда не должно повторяться с одним и тем же ключом .Если это так, злоумышленник может восстановить небольшой список кандидатов на и , как и в случае с одноразовым аутентификатором, и использовать его для подделки сообщений.
Использование в NaCl и ChaCha20-Poly1305 [ править ]
Аутентифицированный шифр NaCl crypto_secretbox_xsalsa20poly1305 использует номер сообщения. с помощью потокового шифра XSalsa20 для каждого сообщения для генерации потока ключей , первые 32 байта которого принимаются как одноразовый ключ Poly1305 а остальная часть используется для шифрования сообщения.Затем он использует Poly1305 в качестве одноразового аутентификатора зашифрованного текста сообщения. [6] ChaCha20-Poly1305 делает то же самое, но с ChaCha вместо XSalsa20 . [8]
Безопасность [ править ]
Безопасность Poly1305 и его производных от подделки вытекает из его ограниченной вероятности разности как универсального хеш-семейства :Если и являются сообщениями до байт каждый, и любая 16-байтовая строка, интерпретируемая как целое число с прямым порядком байтов, тогда
где — это единый случайный ключ Poly1305. [3] : Теорема 3.3, с. 8
Это свойство иногда называют -почти-Δ-универсальность по , или -АΔU , [10] где в этом случае.
Одноразового аутентификатора [ править ]
С одноразовым аутентификатором , вероятность успеха злоумышленника при любой попытке подделки в сообщении до байты:
Здесь арифметика внутри считается, что он находится в для простоты.
NaCl и ChaCha20-Poly1305 [ править ]
Для NaCl crypto_secretbox_xsalsa20poly1305 и ChaCha20-Poly1305 вероятность успеха злоумышленника при подделке одинакова для каждого сообщения независимо, как и для одноразового аутентификатора, плюс отличительное преимущество злоумышленника. против XSalsa20 или ChaCha как псевдослучайных функций, используемых для генерации ключа для каждого сообщения.Другими словами, вероятность того, что злоумышленнику удастся совершить одну подделку после попытки сообщений до байт не более:
Poly1305-AES [ править ]
Безопасность Poly1305-AES от подделки следует из структуры Картера-Вегмана-Шоупа, которая создает экземпляр аутентификатора Картера-Вегмана с перестановкой для создания панели для каждого сообщения. [11] Если противник увидит аутентифицированные сообщения и попытки подделки сообщений размером до байт, и если противник имеет отличительное преимущество не более против AES-128 как псевдослучайной перестановки , то вероятность того, что противник добьется успеха в любом из подделки – это максимум: [3]
Например, если предположить, что сообщения представляют собой пакеты размером до 1024 байт; что злоумышленник видит 2 64 сообщения, аутентифицированные ключом Poly1305-AES; что злоумышленник пытается совершить колоссальные 2 75 подделки; и что злоумышленник не может взломать AES с вероятностью выше δ; тогда с вероятностью не менее 0,999999 − δ все 2 75 отклонены
- Бернштейн, Дэниел Дж. (2005) [3]
Скорость [ править ]
Poly1305-AES может вычисляться с высокой скоростью на различных процессорах: для n не более 3,1 n + 780 тактов Athlon, -байтового сообщения необходимо [3] например.Автор выпустил оптимизированный исходный код для Athlon , Pentium Pro/II/III/M, PowerPC и UltraSPARC , а также неоптимизированные эталонные реализации на C и C++ в качестве общедоступного программного обеспечения . [12]
Реализации [ править ]
Ниже приведен список библиотек шифрования, поддерживающих Poly1305:
- Ботан
- Надувной замок
- Крипто++
- Libgcrypt
- либнатрий
- Крапива
- OpenSSL
- LibreSSL
- волкСклеп
- ГнуTLS
- mbed TLS
- МатрицаSSL
См. также [ править ]
- ChaCha20-Poly1305 - схема AEAD, сочетающая поточный шифр ChaCha20 с вариантом Poly1305.
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б с д Омассон, Жан-Филипп (2018). «Глава 7: Хеширование с ключами». Серьезная криптография: практическое введение в современное шифрование . Нет крахмального пресса. стр. 136–138. ISBN 978-1-59327-826-7 .
- ^ Бернштейн, Дэниел Дж. (1 мая 2008 г.). «Защита коммуникаций от подделки». В Бюлере, Джо; Стивенхаген, Питер (ред.). Алгоритмическая теория чисел: решетки, числовые поля, кривые и криптография . Публикации НИИ математических наук. Том. 44. Издательство Кембриджского университета. стр. 535–549. ISBN 978-0521808545 . Проверено 14 октября 2022 г.
- ^ Jump up to: Перейти обратно: а б с д и ж г Бернштейн, Дэниел Дж. (29 марта 2005 г.). «Код аутентификации сообщения Poly1305-AES» . В Гилберте, Анри; Хандшу, Хелена (ред.). Быстрое программное шифрование: 12-й международный семинар . ФШЭ 2005. Конспекты лекций по информатике. Париж, Франция: Спрингер. дои : 10.1007/11502760_3 . ISBN 3-540-26541-4 . Проверено 14 октября 2022 г.
- ^ Jump up to: Перейти обратно: а б Вегман, Марк Н.; Картер, Дж. Лоуренс (1981). «Новые хэш-функции и их использование для аутентификации и установления равенства». Журнал компьютерных и системных наук . 22 (3): 265–279. дои : 10.1016/0022-0000(81)90033-7 .
- ^ Jump up to: Перейти обратно: а б Боне, Дэн ; Шуп, Виктор (январь 2020 г.). Аспирантура по прикладной криптографии (PDF) (изд. версии 0.5). §7.4 MAC Картера-Вегмана, стр. 262–269 . Проверено 14 октября 2022 г.
- ^ Jump up to: Перейти обратно: а б Бернштейн, Дэниел Дж. (10 марта 2009 г.). Криптография в NaCl (Технический отчет). Идентификатор документа: 1ae6a0ecef3073622426b3ee56260d34.
- ^ Нир, Ю.; Лэнгли, А. (май 2015 г.). ChaCha20 и Poly1305 для протоколов IETF . дои : 10.17487/RFC7539 . РФК 7539 .
- ^ Jump up to: Перейти обратно: а б Нир, Ю.; Лэнгли, А. (июнь 2018 г.). ChaCha20 и Poly1305 для протоколов IETF . дои : 10.17487/RFC8439 . RFC 8439 .
- ^ Лэнгли, А.; Чанг, В.; Маврояннопулос, Н.; Стромбергсон, Дж.; Йозефссон, С. (июнь 2016 г.). ChaCha20-Poly1305 Наборы шифров для безопасности транспортного уровня (TLS) . дои : 10.17487/RFC7905 . РФК 7905 .
- ^ Халеви, Шай ; Кравчик, Хьюго . «MMH: Программная аутентификация сообщений со скоростью Гбит/секунда». В Бихаме, Эли (ред.). Быстрое программное шифрование . ФШЭ 1997. Конспекты лекций по информатике. Спрингер. дои : 10.1007/BFb0052345 . ISBN 978-3-540-63247-4 .
- ^ Бернштейн, Дэниел Дж. (27 февраля 2005 г.). «Более строгие границы безопасности для аутентификаторов Wegman-Carter-Shoup» . В Крамере, Рональде (ред.). Достижения в криптологии — EUROCRYPT 2005, 24-я ежегодная международная конференция по теории и применению криптографических методов . EUROCRYPT 2005. Конспекты лекций по информатике. Орхус, Дания: Springer. дои : 10.1007/11426639_10 . ISBN 3-540-25910-4 .
- ^ Современный код аутентификации сообщений на cr.yp.to.
Внешние ссылки [ править ]
- Эталон Poly1305-AES и оптимизированная реализация автора DJ Bernstein
- Быстрая реализация Poly1305 на C на github.com
- NaCl Одноразовый аутентификатор и шифр с аутентификацией с использованием Poly1305