Рейтинг:4

Почему блочные шифры в основном используются как потоковые шифры?

флаг al

Использование блочного шифра с использованием режима CTR или GCM дает нам потоковый шифр, с той лишь разницей, что CTR не включает тег MAC или AAD, а GCM включает. Я думаю, что это наиболее часто используемые режимы работы для блочных шифров, потому что ECB небезопасен, а CBC не поддается распараллеливанию.

Разве это не уменьшает эффективный размер блока алгоритма до 1 бита, поскольку один бит отображается на другой бит в зависимости от битов ключевого потока? Не было бы предпочтительнее сохранить размер блока шифра?

Рейтинг:7
флаг in

Почему блочные шифры в основном используются как потоковые шифры?

Режим CTR не нуждается в дополнении, как в режиме CBC, который на протяжении многих лет вызывал множество атак, известных как атака оракула заполнения. [1] [2]. В заключение, CBC удален из TLS, TLS 1.3 поддерживает только шифры режима CTR. (rfc 8446).

          +------------------------------+--------------+
          | Описание | Значение |
          +------------------------------+--------------+
          | TLS_AES_128_GCM_SHA256 | {0x13,0x01} |
          | | |
          | TLS_AES_256_GCM_SHA384 | {0x13,0x02} |
          | | |
          | TLS_CHACHA20_POLY1305_SHA256 | {0x13,0x03} |
          | | |
          | TLS_AES_128_CCM_SHA256 | {0x13,0x04} |
          | | |
          | TLS_AES_128_CCM_8_SHA256 | {0x13,0x05} |
          +------------------------------+--------------+

Атаки и решение TLS увеличили использование режима CTR. Помните, что почти вся интернет-безопасность основана на TLS. Согласно опросу SSLlabs, 46,6% сайтов принимают TLS 1.3 ( Поддержка протокола )

Ни режим CTR, ни CBC, ни CFB (все режимы работы с архивами) не имеют MAC по своей конструкции. Чтобы иметь Mac, используйте HMAC или GCM, CCM, Poly1305 и т. д.

Если говорить о моде, то теоретически CBC и CTR могут обеспечить только Ind-CPA. Помимо этого требуется целостность для Ind-CCAx. С другой стороны, аутентифицированное шифрование (GCM, CCM, Poly1305) обеспечивает большую безопасность, чем Ind-CCAx,

Разве это не уменьшает эффективный размер блока алгоритма до 1 бита, поскольку один бит отображается на другой бит в зависимости от битов ключевого потока?

Что ж, если вы используете CBC и применяете заполнение, то вы выполняете больше действий, чем отбрасываете ненужные биты блока. В обоих случаях количество зашифрованных блоков почти одинаково (за исключением того, что если блок полный, то для PKCS#7 нужен дополнительный блок). Затем применяются дополнительные функции заполнения и распаковки. Режим CTR требует x-или потока.

Как отмечалось в комментариях, режим CTR хорошо распараллеливается, даже допускает произвольный доступ или предварительную синхронизацию потока. Приведенные ниже характеристики OpenSLL на моей машине

скорость openssl -evp aes-128-cbc aes-128-ctr
тип 16 байт 64 байта 256 байт 1024 байта 8192 байта 16384 байта
aes-128-cbc 818912.47k 1365115.22k 1404590.75k 1409671.85k 1410523.14k 1411497.98k
aes-128-ctr 561928.57k 1899517.87k 3908505.17k 5220669.78k 5835377.32k 5876869.80k

Как мы видим, за исключением очень коротких сообщений, CTR превосходит CBC в AES-NI.

Не было бы предпочтительнее сохранить размер блока шифра?

Нет

  • Нам приходится иметь дело с отступами и проблемами с их небезопасностью, почему бы вообще не удалить их, когда у нас есть режим CTR.

  • Это также увеличивает размер данных максимум на 16 байтов для AES.

  • Режим CTR по своей конструкции использует PRF вместо PRP (блочные шифры — это PRP), что обеспечивает более широкий спектр используемых функций — так же, как мы используем ChaCha20. В режиме CBC мы должны использовать PRP.


Конечно, нет ничего идеального! У каждого режима есть свои плюсы и минусы. В зависимости от контекста можно предпочесть одно другому. По здравому смыслу в современной криптографии мы предпочитаем аутентифицированные режимы шифрования, такие как AES-GCM (вероятно, с SIV) и ChaCha20-Poly1305 (лучше xChaCha20-1305 для 192-битных одноразовых номеров).

SEJPM avatar
флаг us
Кроме того, возможность распараллеливания потоковых шифров (особенно для шифров на основе AES) также полезна при однопоточной обработке, поскольку современные процессоры _любят_ независимые инструкции. Это может легко повысить производительность AES в 4–8 раз при переходе от последовательного режима, такого как шифрование CBC, к параллельному режиму, такому как CTR. Аналогичный аргумент имеет место, когда у вас нет инструкций AES, но вместо этого у вас есть реализация AES с побитовым разделением.
kelalaka avatar
флаг in
Да, именно, так как в ОП было включено, что _CBC не параллелизуется_ (правда расшифровка не при чем), я об этом и не писал. Насколько я знаю, скобки, которые вы используете, связаны с тем, что размер блока ChaCha20, верно?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.