Симметричное шифрование опирается на использование одного общего
секретного ключа для обеих сторон взаимодействия. В экосистеме
TweetNaCl.js этот подход реализован через nacl.secretbox,
представляющий собой комбинацию потокового шифра XSalsa20 и
аутентифицирующего кода Poly1305.
Основной характеристикой симметричного шифрования является необходимость заранее распределённого секрета. Без безопасного канала передачи ключа вся модель теряет смысл, поскольку компрометация ключа полностью раскрывает все зашифрованные данные.
В TweetNaCl.js функция secretbox работает по следующей
схеме:
Ключ имеет фиксированную длину 32 байта. Nonce — 24 байта и обязан быть уникальным для каждой операции шифрования с одним и тем же ключом. Нарушение уникальности nonce приводит к катастрофическим последствиям с точки зрения безопасности, включая возможность восстановления ключа или исходного текста.
Шифрование через secretbox формирует структуру:
Проверка целостности выполняется до расшифровки. Если тег не совпадает, операция немедленно прерывается.
Симметричное шифрование в NaCl ориентировано на высокую производительность и минимальные накладные расходы. Алгоритмы XSalsa20 и Poly1305 оптимизированы для программной реализации, что делает их применимыми в браузерной среде без аппаратного ускорения.
Асимметричная криптография в TweetNaCl.js реализуется через примитив
nacl.box, основанный на комбинации:
В отличие от симметричной модели, здесь используются две пары ключей: публичный и приватный.
Каждый участник генерирует пару ключей:
Публичный ключ может свободно распространяться, в то время как приватный остаётся строго конфиденциальным.
Функция nacl.box реализует гибридную схему:
Таким образом, асимметричная криптография используется только на этапе установления общего секрета, а основное шифрование выполняется симметричным алгоритмом.
Как и в secretbox, nonce имеет длину 24 байта. Однако в
box он дополняется контекстом публичных ключей отправителя
и получателя. Это позволяет каждому сообщению быть криптографически
уникальным даже при повторном использовании ключевых пар.
Дополнительной особенностью модели является встроенная проверка подлинности отправителя. Поскольку shared secret зависит от пары ключей, подделка сообщения без знания приватного ключа становится невозможной.
Симметричное шифрование требует единого секрета, что создаёт проблему распределения ключей. Асимметричная модель решает эту задачу за счёт публичных ключей, устраняя необходимость предварительного секретного канала.
Симметричные алгоритмы значительно быстрее, так как не требуют сложных математических операций эллиптических кривых. Асимметричная часть используется только один раз — для установления общего секрета.
Симметричная схема зависит от безопасности ключа и уникальности nonce. Асимметричная схема добавляет защиту на уровне идентичности участников и устойчивость к перехвату сообщений без приватного ключа.
Библиотека NaCl следует гибридному подходу, в котором асимметричная криптография применяется исключительно для обмена ключами, а симметричная — для основного потока данных.
Такая архитектура обеспечивает:
Потоковый шифр, обеспечивающий генерацию псевдослучайного потока байт, который XOR-ится с данными. Обладает высокой скоростью и устойчивостью к известным атакам при корректном использовании nonce.
Код аутентификации сообщений (MAC), проверяющий целостность данных. Используется вместе с XSalsa20 для формирования конструкции AEAD (Authenticated Encryption with Associated Data).
Эллиптическая кривая, используемая для безопасного обмена ключами. Обеспечивает стойкость к известным атакам на дискретный логарифм при высокой производительности в программной реализации.
Симметричная модель применяется там, где:
Асимметричная модель применяется там, где:
TweetNaCl.js объединяет оба подхода в единую систему. Асимметричное шифрование служит инфраструктурным уровнем, а симметричное — транспортным.
Такое разделение позволяет достигать баланса между криптографической стойкостью и практической производительностью, что особенно критично в средах с ограниченными ресурсами, таких как браузеры и мобильные устройства.