Главная страница Proton

Что такое ChaCha20?

ChaCha20 помогает защитить ваши данные, когда вы отправляете сообщения, сохраняете файлы или конфиденциально просматриваете веб-страницы в приложении или службе.

Это современный алгоритм шифрования, разработанный для сохранения конфиденциальности информации при обеспечении высокой скорости и эффективности работы на самых разных устройствах.

Узнайте, как работает ChaCha20, почему этот алгоритм важен в современной криптографии и как он сопоставим с AES.

Что такое ChaCha20?

ChaCha20 — это высокоскоростной, легковесный и высокозащищенный 256-битный шифр с симметричным ключом, используемый для зашифрования и расшифрования данных. Он был разработан Дэниелом Дж. Бернштейном как улучшенная версия более раннего шифра под названием Salsa20. Цель состояла в том, чтобы создать алгоритм, который был бы одновременно эффективным и безопасным, особенно в программном обеспечении.

Как работает ChaCha20

ChaCha20 зашифровывает данные путем генерации потока безопасных псевдослучайных байтов и объединения этого потока с исходным сообщением. В результате получаются зашифрованные данные, которые кажутся случайными для всех, у кого нет секретного ключа.

Поскольку для зашифрования и расшифрования данных используется один и тот же ключ, ChaCha20 работает намного быстрее, чем RSA — асимметричный алгоритм, в котором используются открытый ключ и закрытый ключ. RSA полезен для обмена ключами и создания подписей, но ChaCha20 лучше подходит для зашифрования больших объемов интернет-трафика.

На высоком уровне ChaCha20 принимает три входных параметра: секретный ключ, одноразовый номер (nonce — уникальное значение, используемое для каждого шифрования) и счетчик (помогающий генерировать различные выходные блоки). Он использует эти значения для инициализации внутреннего состояния, которое затем многократно перемешивается для создания потока безопасных псевдослучайных байтов, известного как ключевой поток.

Этот процесс перемешивания основан на трех простых операциях — сложении, XOR и побитовом сдвиге, — которые применяются в течение 20 раундов для тщательного перемешивания данных. Полученный ключевой поток затем объединяется с простым текстом для получения шифротекста — зашифрованных данных.

Почему ChaCha20 важен

ChaCha20 решает практическую проблему современной безопасности: как получить надежное шифрование, эффективное и стабильное на многих устройствах. Он очень быстро работает в программном обеспечении, хорошо показывает себя на телефонах, небольших устройствах и старых процессорах, а также основан на простых операциях, которые компьютеры выполняют эффективно (сложение, XOR, сдвиг).

Эти функции делают его привлекательным для использования в таких системах, как TLS, VPN(новое окно), SSH и приложениях для обмена сообщениями. Например, ChaCha20 используется в VPN-протоколе(новое окно) WireGuard®(новое окно) для обеспечения быстрого и безопасного шифрования с высокой производительностью даже на устройствах, не имеющих специализированного аппаратного ускорения AES.

ChaCha20 против AES

Вот как ChaCha20 сопоставим с AES:

ChaCha20 против AES

Аспект

ChaCha20

AES

Тип шифра

Поточный шифр

Блочный шифр

Базовая операция

Сложение/XOR/сдвиг на 32-битных словах

Подстановка-перестановка на 128-битных блоках

Стандартные размеры ключей

256-битный

128-, 192-, 256-битный

Производительность на процессорах без специализированного оборудования

Обычно очень высокая

Часто ниже, чем у ChaCha20

Производительность на процессорах с аппаратным ускорением

Обычно уступает AES с криптографическими расширениями AES-NI / ARM

Часто чрезвычайно высокая

Типичный режим с аутентификацией

ChaCha20-Poly1305

AES-GCM

Общие сценарии использования

TLS на мобильных/встроенных устройствах, исключительно программное шифрование, WireGuard®

TLS, шифрование диска, корпоративные системы, шифрование с аппаратной поддержкой

Лучше всего подходит для

Портативность, стабильная скорость работы программного обеспечения, более безопасная программная реализация

Максимальная скорость на современном оборудовании, широкая совместимость/поддержка

Шифрование AES является давно признанным стандартом и работает чрезвычайно быстро на процессорах со встроенной аппаратной поддержкой AES. Благодаря этому оно особенно хорошо работает на многих настольных компьютерах, серверах и новых мобильных чипах. Однако без аппаратной поддержки AES программная реализация AES может быть медленнее и иногда ее сложнее реализовать безопасно. В отличие от этого, ChaCha20 разработан для очень быстрой работы в обычном программном обеспечении, поскольку использует простые операции, такие как сложение, XOR и сдвиг, которые эффективно работают практически на любом процессоре.

Если приложение предлагает как AES, так и ChaCha20, вам обычно не нужно выбирать один из них вручную, поскольку большинство современных приложений автоматически выбирают оптимальный вариант в зависимости от вашего устройства и процессора. В целом, AES работает лучше всего на более новых устройствах со встроенной поддержкой AES, в то время как ChaCha20 является более предпочтительным выбором на устройствах, где шифрование выполняется в основном программно, например на некоторых телефонах, маломощном оборудовании или старых процессорах.

Безопасен ли ChaCha20?

ChaCha20 считается безопасным по современным стандартам при правильной реализации и использовании уникального одноразового числа для каждого шифрования.

Надёжное шифрование

ChaCha20 использует 20 раундов операций сложения-сдвига-XOR и считается устойчивым к известным практическим атакам.

Хорошая безопасность программного обеспечения

Благодаря простому дизайну оно эффективно работает в программном обеспечении и может снизить некоторые риски побочных каналов, характерные для определенных реализаций AES.

Широко применяется

ChaCha20 поддерживается основными браузерами и используется в современных HTTPS/TLS-подключениях, SSH и WireGuard®.

Обычно используется в паре с Poly1305

Оно часто используется в виде ChaCha20-Poly1305, что защищает как конфиденциальность, так и целостность сообщений. ChaCha20-Poly1305 — один из основных вариантов симметричного шифрования, используемых в TLS 1.3.

Proton VPN и ChaCha20

Благодаря протоколу WireGuard®(новое окно) от Proton VPN, ChaCha20-Poly1305 помогает защитить VPN-туннель, чтобы ваш интернет-трафик оставался конфиденциальным без снижения скорости, независимо от того, просматриваете ли вы веб-страницы в конфиденциальном режиме, пользуетесь ли стримингом контента или используете общедоступный WiFi в пути.

Подробнее о шифровании