> ChaCha20 и Poly1305 можно рассматривать, как более быстрые и безопасные аналоги AES-256-CTR и HMACЕсть ощущение, что мы имеем дело с очередным внедрением бэкдора от АНБ. Протокол https создает защищенный канал связи между компьютерами в сети, сохраняя анонимность клиента. Это кроме всего прочего позоляет запутывать трафик, используя луковичную маршрутизацию. У АНБ стоит задача собрать досье на каждого человека, для чего нужно контролировать весь трафик в сети. На 2013 год они уже читали трафик, проходящий через серверы в своей юрисдикции, вымогали закрытые ключи, взламывали устаревшие версии TLS.
Если у АНБ есть возможность вскрывать ChaCha20, и он станет применяться повсеместно, то проблемы https для них больше не будет (а из интернета уйдут остатки приватности).
Несколько лет назад АНБ представило на стандартизацию свой блочный шифр Speck конструкции Add-Rotate-Xor. Известных атак на полнораундовую версию не существует. Однако можно предположить, что они есть у АНБ и возможно требуют специализированных суперкомпьютеров, а может и нет.
ChaCha20 это так же Add-Rotate-Xor.
Что, кроме разработки шифра Speck такой же конструкции, намекает на вмешательство АНБ? Попробую коротко объяснить разницу между AES и ChaCha20.
Раундовая функция AES (Substitution-Permutation-Network):
1. Substitution
Побайтовая подстановка через S-Box конструкции Ниберг, состоящий из нелинейной части (возведение байта в степень 11111110 в поле Галуа GF(2^8), что эквивалентно взятию обратного элемента поля) и линейной (XOR каждого бита с 4 битами справа от себя).
2. Permutation
Блок представляется как матрица 4x4 байта, строки циклически сдвигаются на номер строки влево.
Блок представляется как набор 32-битных чисел. Каждое число умножается на определенную MDS матрицу в поле Галуа.
Раундовая функция ChaCha20 (Add-Rotate-Xor):
1. Add сложение 32-битных чисел.
2. Rotate сдвиги битов.
3. Xor побитовое сложение по модулю 2.
Допустим, у атакующего есть какое-то количество пар открытый текст - шифртекст. Что отделяет его от раскрытия вашего ключа? Нелинейность (при условии, что остальные элементы шифра подобраны правильно).
Нелинейное преобразование AES хорошо изучено в теории, менять его имеет смысл только при увеличении размерности (2 байта вместо одного), оно оптимально.
Нелинейное преобразование ChaCha20 это обычное сложение двух 32-битных чисел.