age имеет 128-бит ключи

Что: 4adf9b82dc1c86d787ca0a56f0d37b924877277c

Когда: 2023-05-09 10:42:14+03:00

Темы: crypto hate

age имеет 128-бит ключи

https://words.filippo.io/dispatches/post-quantum-age/
https://eprint.iacr.org/2019/1492
В 4674ad351dcb1f018d2392bc03fb0692e101e229 глянул на age утилиту. Сейчас
попристальнее посмотрел на её формат, который уже стал доступен в
https://github.com/C2SP/C2SP репозитории, а не на Google Docs.

И сильно поразился: для шифрования используется 128-бит ключ. В начале
шифротекста добавляется 128-бит nonce. HKDF-SHA-256 на вход принимает
ключ, nonce и выдаёт 256-бит ключ для ChaCha20. Но ведь энтропии на вход
всей этой симметричной схеме шифрования было подано всего 128-бит.

Я не могу сказать что это не безопасно на практике *сейчас*. Но я не
понимаю почему так сделано. Ведь ничто не мешает использовать 256-бит:
шифр и так 256-битный, SHA-256 имеет размер блока (внутреннее состояние)
в 512-бит, что достаточно для потребления энтропии и 256-бит ключа и
nonce-а. Если иметь 256-бит ключи, то ничего нигде не станет медленнее
(захэшировать несколько раз дополнительные 128-бит перед шифрованием
всего файла -- ничего не стоит). Ведь для квантовоустойчивых схем нужны
в два раза более длинные ключи, то бишь 256-бит.

Я понимаю, что если и будут созданы квантовые компьютеры общего
назначения, то ломать будут не симметричную часть age, а его X25519 и
там уже без разницы какой длины ключи. Но на пустом месте убрали
бесплатный запас прочности.

В блоге Filippo Valsorda описано почему не стоит воспринимать эти
128-бит как проблему: алгоритм Гровера всё равно медленный, не
распараллеливается и там "сила ключа" не просто делится пополам.

    Why 128 bits? Because the file key is wrapped in each recipient
    stanza, so adding 16 more bytes to the file key would add 16 bytes
    to the file size per recipient. Instead, we have a 128-bit per-file
    nonce to provide a comfortable margin against multi-user attacks,
    where a shared search space of only 128 bits would be too tight.

Всё это всё равно выглядит как экономия на копейках. Мне не нравится.
Это всё из серии "Too much crypto" статьи, где говорят о том, что
консерватизм в криптографии приводит к ужасно завышенным запасам
прочности алгоритмов, уничтожая производительность. В BLAKE3 поэтому
вообще сократили количество round-ов в два раза относительно
оригинального BLAKE, который стал финалистом SHA3. Но если BLAKE3 ещё
можно применять где не так критична криптографическая сила, зато получая
лютый прирост производительности, то в age это экономия в 16 байт на
каждого получателя (всего то!).

оставить комментарий

Сгенерирован: SGBlog 0.34.0