ЧаЧа20-Поли1305
ChaCha20-Poly1305 — это алгоритм аутентифицированного шифрования с дополнительными данными (AEAD) , который сочетает в себе поточный шифр ChaCha20 с кодом аутентификации сообщения Poly1305 . Его использование в протоколах IETF стандартизировано в RFC 8439. [1] Он имеет высокую производительность программного обеспечения и без аппаратного ускорения обычно быстрее, чем AES-GCM. [2]
История [ править ]
Два строительных блока конструкции, алгоритмы Poly1305 и ChaCha20, были независимо разработаны в 2005 и 2008 годах Дэниелом Дж. Бернштейном . [3] [4]
В 2013–2014 годах вариант исходного алгоритма ChaCha20 (с использованием 32-битного счетчика и 96-битного одноразового номера) и вариант исходного алгоритма Poly1305 (аутентификация двух строк) были объединены в проект IETF. [5] [6] для использования в TLS и DTLS , [7] и выбран Google по соображениям безопасности и производительности в качестве нового поддерживаемого шифра. [8] Вскоре после принятия Google TLS, ChaCha20, Poly1305 и комбинированный режим AEAD добавляются в OpenSSH через [email protected]
аутентифицированный шифр шифрования [9] [10] но сохранил исходный 64-битный счетчик и 64-битный одноразовый номер для алгоритма ChaCha20.
В 2015 году алгоритм AEAD стандартизирован в RFC 7539. [11] и RFC 7905 [12] будет использоваться в TLS 1.2 и DTLS 1.2 и в RFC 7634. [13] для использования в IPsec. В том же году он был интегрирован Cloudflare в качестве альтернативного набора шифров. [14]
В июне 2018 года RFC 7539 был обновлен и заменен на RFC 8439. [1]
Описание [ править ]
Алгоритм ChaCha20-Poly1305, описанный в RFC 8439. [1] принимает на вход 256-битный ключ и 96-битный одноразовый номер для шифрования открытого текста с расширением зашифрованного текста на 128 бит (размер тега). В конструкции ChaCha20-Poly1305 ChaCha20 используется в режиме счетчика для получения потока ключей, который подвергается операции XOR с открытым текстом. Зашифрованный текст и связанные с ним данные затем аутентифицируются с использованием варианта Poly1305, который сначала кодирует две строки в одну. Способ объединения шифра и одноразового аутентификатора точно идентичен конструкции AES-GCM в том, как первый блок используется для заполнения аутентификатора и как затем аутентифицируется зашифрованный текст с помощью 16-байтового тега.
Основным внешним отличием ChaCha20 является размер блока 64 байта (512 бит) по сравнению с 16 байтами (128 бит) как у AES-128, так и у AES-256. Больший размер блока обеспечивает более высокую производительность современных процессоров и позволяет обрабатывать более крупные потоки до переполнения 32-битного счетчика.

Варианты [ править ]
XChaCha20-Poly1305 — расширенный вариант nonce [ править ]
Конструкция XChaCha20-Poly1305 представляет собой расширенный 192-битный вариант nonce конструкции ChaCha20-Poly1305, в котором используется XChaCha20 вместо ChaCha20 . При случайном выборе одноразовых номеров конструкция XChaCha20-Poly1305 обеспечивает лучшую безопасность, чем исходная конструкция. Срок действия проекта попытки стандартизировать строительство истек в июле 2020 года. [15]
Salsa20-Poly1305 и XSalsa20-Poly1305 [ править ]
Salsa20-Poly1305 и XSalsa20-Poly1305 являются вариантами алгоритмов ChaCha20-Poly1305 и XChaCha20-Poly1305 , используются Salsa20 и XSalsa20 в которых вместо ChaCha20 и XChaCha20 . Они реализованы в NaCl. [16] и либнатрий [17] но не стандартизировано. На практике предпочтительны варианты с использованием ЧаЧа, поскольку они обеспечивают лучшую диффузию за раунд, чем Сальса. [3]
Варианты с уменьшенным раундом [ править ]
ChaCha20 можно заменить вариантами с уменьшенным количеством раундов ChaCha12 и ChaCha8, что дает ChaCha12-Poly1305 и ChaCha8-Poly1305. Эту же модификацию можно применить и к XChaCha20-Poly1305. Они реализованы командой RustCrypto и не стандартизированы. [18]
Используйте [ править ]
ChaCha20-Poly1305 используется в IPsec , [2] СШ , [19] ТЛС 1.2 , ДТЛС 1.2, ТЛС 1.3 , [12] [19] ВайрГард , [20] S/MIME 4.0 , [21] ОТР v4 [22] и множество других протоколов, реализованных в OpenSSL и libsodium . Кроме того, алгоритм используется в программе резервного копирования Borg. [23] для обеспечения стандартного шифрования данных и в копирования при записи файловой системе Bcachefs с целью дополнительного шифрования всей файловой системы. [24]
Производительность [ править ]
ChaCha20-Poly1305 обычно обеспечивает более высокую производительность, чем более распространенный AES - GCM, алгоритм даже в системах, где процессоры имеют расширение набора команд AES-NI . [ не удалось пройти проверку ] [2] Скорость шифрования и дешифрования в программных реализациях уже превышает 1 ГБ/с, если выполняется на одном ядре, и увеличивается почти линейно, если параллельно используется больше ядер. AES-NI достигает примерно такой же скорости на одном ядре, но не так хорошо масштабируется для нескольких процессоров, и без расширения набора команд его трудно реализовать эффективно. В результате ChaCha20-Poly1305 иногда предпочтительнее AES-GCM из-за схожего уровня безопасности и в некоторых случаях использования с мобильными устройствами , которые в основном используют процессоры на базе ARM . Поскольку у ChaCha20-Poly1305 меньше накладных расходов, чем у AES-GCM, ChaCha20-Poly1305 на мобильных устройствах может потреблять меньше энергии, чем AES-GCM.
Безопасность [ править ]
Конструкция ChaCha20-Poly1305, как правило, безопасна в стандартной модели и в идеальной модели перестановки для однопользовательской и многопользовательской настройки. [25] Однако, как и в случае с GCM , безопасность основана на выборе уникального nonce для каждого зашифрованного сообщения. По сравнению с AES-GCM реализации ChaCha20-Poly1305 менее уязвимы к атакам по времени .
Следует отметить, что когда протокол SSH использует ChaCha20-Poly1305 в качестве базового примитива, он уязвим для атаки Terrapin .
См. также [ править ]
Внешние ссылки [ править ]
- RFC 8439 : ChaCha20 и Poly1305 для протоколов IETF.
- RFC 7634 : ChaCha20, Poly1305 и их использование в протоколе обмена ключами в Интернете (IKE) и IPsec.
- RFC 7905 : Наборы шифров ChaCha20-Poly1305 для безопасности транспортного уровня (TLS)
- RFC 8103 : Использование шифрования с проверкой подлинности ChaCha20-Poly1305 в синтаксисе криптографических сообщений (CMS)
Ссылки [ править ]
- ↑ Перейти обратно: Перейти обратно: а б с Нир, Йоав; Лэнгли, Адам (июнь 2018 г.). ChaCha20 и Poly1305 для протоколов IETF . дои : 10.17487/RFC8439 . RFC 8439 .
- ↑ Перейти обратно: Перейти обратно: а б с Нир, Йоав; Лэнгли, Адам (июнь 2018 г.). «Измерения производительности ChaCha20» . ChaCha20 и Poly1305 для протоколов IETF . сек. Б. дои : 10.17487/RFC8439 . RFC 8439 .
- ↑ Перейти обратно: Перейти обратно: а б Бернштейн, диджей (январь 2008 г.). ЧаЧа, вариант Salsa20 (PDF) . Современное состояние потоковых шифров. Том. 8. С. 3–5.
- ^ Бернштейн, Дэниел Дж. (2005), «Код аутентификации сообщения Poly1305-AES», Быстрое программное шифрование , Конспекты лекций по информатике, том. 3557, Берлин, Гейдельберг: Springer Berlin Heidelberg, стр. 32–49, doi : 10.1007/11502760_3 , ISBN 978-3-540-26541-2
- ^ Лэнгли, Адам (сентябрь 2013 г.). Наборы шифров на основе ChaCha20 и Poly1305 для TLS . Идентификатор проекта-agl-tls-chacha20poly1305-00.
- ^ Нир, Йоав (27 января 2014 г.). ChaCha20 и Poly1305 для протоколов IETF . Идентификатор проекта-nir-cfrg-chacha20-poly1305-00.
- ^ Лэнгли, Адам; Чанг, Ван-Те; Маврояннопулос, Никос; Стромбергсон, Иоахим; Йозефссон, Саймон (24 января 2014 г.). Потоковый шифр ChaCha для безопасности транспортного уровня . Идентификатор проекта-mavrogiannopoulos-chacha-tls-01.
- ^ Бурштейн, Эли (24 апреля 2014 г.). «Ускорение и усиление HTTPS-соединений для Chrome на Android» . Блог Google по онлайн-безопасности . Архивировано из оригинала 28 сентября 2016 г. Проверено 27 декабря 2021 г.
- ^ Миллер, Дэмиен. «Перекрестная ссылка BSD суперпользователя: /OpenBSD/usr.bin/ssh/PROTOCOL.chacha20poly1305» . bxr.su. Архивировано из оригинала 13 декабря 2013 г. Проверено 28 декабря 2021 г.
- ^ Миллер, Дэмиен (29 ноября 2013 г.). «ChaCha20 и Poly1305 в OpenSSH» . Архивировано из оригинала 13 декабря 2013 г. Проверено 28 декабря 2021 г.
- ^ Нир, Йоав; Лэнгли, Адам (май 2015 г.). ChaCha20 и Poly1305 для протоколов IETF . дои : 10.17487/RFC7539 . РФК 7539 .
- ↑ Перейти обратно: Перейти обратно: а б Лэнгли, Адам; Чанг, Ван-Те; Маврояннопулос, Никос; Стромбергсон, Иоахим; Йозефссон, Саймон (июнь 2016 г.). ChaCha20-Poly1305 Наборы шифров для безопасности транспортного уровня (TLS) . дои : 10.17487/RFC7905 . РФК 7905 .
- ^ Нир, Йоав (август 2015 г.). ChaCha20, Poly1305 и их использование в протоколе обмена ключами в Интернете (IKE) и IPsec . дои : 10.17487/RFC7634 . РФК 7634 .
- ^ «Сделайте ChaCha: лучшая производительность мобильных устройств с помощью криптографии» . Блог Cloudflare . 23 февраля 2015 г. Проверено 28 декабря 2021 г.
- ^ Арчишевски, Скотт (10 января 2020 г.). XChaCha: ChaCha с расширенным одноразовым номером и AEAD_XChaCha20_Poly1305 . Идентификатор проекта-irtf-cfrg-xchacha.
- ^ «NaCl: библиотека сетей и криптографии — шифрование с аутентификацией секретным ключом» . Архивировано из оригинала 30 июня 2009 г.
- ^ «libsodium — шифрование с аутентификацией» . Архивировано из оригинала 4 августа 2020 г.
- ^ «chacha20poly1305 — Ржавчина» . docs.rs.
ChaCha8Poly1305 / ChaCha12Poly1305 - нестандартные варианты с уменьшенным раундом (закрыты под функцию груза с уменьшенным раундом). Дополнительную информацию и обоснование того, когда можно использовать эти конструкции, см. в документе Too Much Crypto. Если сомневаетесь, отдайте предпочтение ChaCha20Poly1305. XChaCha8Poly1305/XChaCha12Poly1305 — то же, что и выше, но с расширенным 192-битным (24-байтовым) nonce.
- ↑ Перейти обратно: Перейти обратно: а б Томсон, Мартин; Тернер (май 2021 г.). Использование TLS для защиты QUIC . дои : 10.17487/RFC9001 . РФК 9001 .
- ^ Доненфельд, Джейсон А. «Протокол и криптография — WireGuard» . www.wireguard.com . Проверено 28 декабря 2021 г.
- ^ Хаусли, Расс (февраль 2017 г.). Использование шифрования с проверкой подлинности ChaCha20-Poly1305 в синтаксисе криптографических сообщений (CMS) . дои : 10.17487/RFC8103 . RFC 8103 .
- ^ OTRv4 , OTRv4, 25 декабря 2021 г. , получено 28 декабря 2021 г.
- ^ borg rcreate , borgbackup, 3 августа 2022 г. , получено 28 января 2023 г.
- ^ Оверстрит, Кент (11 сентября 2024 г.). «Шифрование» . bcachefs . Архивировано из оригинала 26 мая 2024 года . Проверено 8 июня 2024 г.
- ^ Дегабриэль, Жан Поль; Говинден, Жером; Гюнтер, Феликс; Патерсон, Кеннет Г. (12 ноября 2021 г.), «Безопасность ChaCha20-Poly1305 в многопользовательской среде» , Материалы конференции ACM SIGSAC 2021 года по компьютерной и коммуникационной безопасности , Нью-Йорк, штат Нью-Йорк, США: Ассоциация по Вычислительная техника, стр. 1981–2003, doi : 10.1145/3460120.3484814 , ISBN. 978-1-4503-8454-4 , S2CID 244077782 , получено 27 декабря 2021 г.