Поли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 как псевдослучайных функций, используемых для генерации ключа для каждого сообщения.Другими словами, вероятность того, что злоумышленнику удастся совершить одну подделку после попытки сообщений до байт не более:
Поли1305-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 г.). «Более строгие границы безопасности для аутентификаторов Вегмана-Картера-Шоупа» . В Крамере, Рональде (ред.). Достижения в криптологии — 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