CoderTools

Шифрование Salsa20

Высокоскоростной поточный шифр с расширенным вариантом nonce

Безопасность на стороне клиента

Все операции шифрования и дешифрования выполняются локально в вашем браузере. Никакие данные никогда не отправляются на сервер.

Salsa20: 256-битный поточный шифр с 64-битным nonce и 20 раундами. Быстрый и безопасный для большинства приложений.

Начальное значение счётчика блоков (обычно 0 для шифрования, то же значение для дешифрования)

Параметры формата
🔒 100% Локальная обработкаВаши файлы обрабатываются полностью в вашем браузере. Никакие данные не отправляются на сервер.

О Salsa20

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

Salsa20 был представлен в проект eSTREAM и выбран финалистом в программном профиле. Он является основой семейства шифров ChaCha.

Сравнение алгоритмов

Алгоритм Раунды Длина Nonce Скорость Лучшее применение
Salsa20/20 20 64 bits (8 bytes) Стандартный Общее шифрование, высокая безопасность
Salsa20/12 12 64 bits (8 bytes) Быстрый Приложения, критичные к производительности
Salsa20/8 8 64 bits (8 bytes) Самый быстрый Сценарии максимальной скорости
XSalsa20 20 192 bits (24 bytes) Стандартный Случайный nonce, NaCl/libsodium

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

Salsa20 работает с матрицей 4×4 из 32-битных слов (всего 512 бит). Начальное состояние состоит из ключа (256 бит), nonce (64 бита), счётчика (64 бита) и четырёх константных слов, образующих строку 'expand 32-byte k'.

Основная функция применяет 20 раундов операции quarterround, которая использует только операции сложения-вращения-XOR (ARX). Это делает Salsa20 эффективным в программном обеспечении и устойчивым к атакам по времени.

XSalsa20 расширяет nonce до 192 бит с помощью HSalsa20 — варианта, который выводит подключ из первых 128 бит nonce, оставляя 64 бита для фактического nonce. Это позволяет безопасно генерировать случайный nonce.

Варианты раундов

  • Salsa20/20 (20 раундов) — Стандартный вариант с полным запасом безопасности. Рекомендуется для большинства приложений.
  • Salsa20/12 (12 раундов) — Выбор портфолио eSTREAM. Обеспечивает хороший баланс между скоростью и безопасностью.
  • Salsa20/8 (8 раундов) — Самый быстрый вариант. Нет известных практических атак, но уменьшенный запас безопасности.

Ключевые особенности

  • Высокая производительность: Оптимизирован для программного обеспечения, достигает 3-4 цикла на байт на современных CPU
  • Простой дизайн: Использует только ARX операции, легко реализуется без таблиц поиска
  • Постоянное время: Устойчив к атакам по побочным каналам времени кэша
  • Большой счётчик: 64-битный счётчик позволяет шифровать до 2^70 байт на пару ключ-nonce
  • Расширенный Nonce: 192-битный nonce XSalsa20 позволяет генерировать случайный nonce

Соображения безопасности

  • Никогда не используйте nonce повторно с тем же ключом — это полностью нарушает безопасность
  • Salsa20 обеспечивает только шифрование, не аутентификацию — комбинируйте с Poly1305 для AEAD
  • Для случайных nonce используйте XSalsa20, чтобы минимизировать вероятность коллизий
  • Используйте правильный KDF (HKDF, Argon2) для получения ключей из паролей

Реальное использование

  • NaCl/libsodium: XSalsa20-Poly1305 — конструкция AEAD по умолчанию
  • Инструменты шифрования: Многие утилиты шифрования файлов используют варианты Salsa20
  • Менеджеры паролей: Некоторые используют Salsa20 для шифрования сохранённых учётных данных
  • Игровые движки: Используется для быстрого шифрования в сетевых играх

Ссылки

Часто задаваемые вопросы

В чём разница между Salsa20 и ChaCha20?

ChaCha20 — это модификация Salsa20 с улучшенной диффузией за раунд. ChaCha20 достигает лучшей безопасности за раунд, поэтому он стал стандартом IETF. Для новых проектов обычно предпочитают ChaCha20.

Какой вариант раундов мне использовать?

Используйте Salsa20/20 для максимальной безопасности. Salsa20/12 — хороший баланс между скоростью и безопасностью. Используйте Salsa20/8 только когда производительность абсолютно критична и ваша модель угроз допускает уменьшенный запас безопасности.

Когда мне следует использовать XSalsa20?

Используйте XSalsa20, когда нужно генерировать случайные nonce. Его 192-битное пространство nonce делает коллизии практически невозможными при случайной генерации. 64-битный nonce стандартного Salsa20 требует тщательного управления счётчиком.

Безопасен ли Salsa20 без аутентификации?

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

Могу ли я использовать этот инструмент в продакшене?

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