Русская Википедия:Уровень криптостойкости

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Уровень криптостойкости (англ. security level) — показатель криптостойкости криптографического алгоритма, связанный с вычислительной сложностью выполнения успешной атаки на криптосистему наиболее быстрым из известных алгоритмов[1][2]. Обычно измеряется в битах. Шаблон:Math-битный уровень криптостойкости криптосистемы означает, что для её взлома потребуется выполнить 2N вычислительных операций. Например, если симметричная криптосистема взламывается не быстрее, чем за полный перебор значений Шаблон:Math-битного ключа, то говорят, что уровень криптостойкости равен Шаблон:Math. Увеличение же в Шаблон:Math раз количества операций, требуемых для взлома, прибавляет <math>\log_2 x</math> к уровню криптостойкости[3].

Существуют и другие методы, более точно моделирующие требуемое количество операций для взлома, что позволяет удобнее сравнивать криптографические алгоритмы и их гибриды.[4] Например, AES-128 (размер ключа 128 бит) предназначен для обеспечения 128-битного уровня криптостойкости, который считается примерно эквивалентным 3072-битному RSA.

В симметричной криптографии

У симметричных алгоритмов уровень криптостойкости обычно строго определён, но изменится, если появится более успешная криптоатака. Для симметричных шифров он в общем случае равен размеру ключа шифрования, что эквивалентно полному перебору значений ключа.[5][6] Для криптографических хеш-функций с длиной значений Шаблон:Math бит атака "дней рождения" позволяет находить коллизии в среднем за <math>2^{n/2}</math> вычислений хеш-функции. Таким образом, уровень криптостойкости при нахождении коллизий равен Шаблон:Math, а при нахождении прообраза — Шаблон:Math.[7] Например, SHA-256 предоставляет 128-битную защиту от коллизий и 256-битную защиту от нахождения прообраза.

Есть и исключения. Например, Phelix и Helix — 256-битные шифры, обеспечивающие 128-битный уровень криптостойкости.[5] SHAKE варианты SHA-3 также различны: для 256-битного размера возвращаемых данных SHAKE-128 обеспечивает 128-битный уровень криптостойкости и при нахождении коллизий, и при нахождении прообраза.[8]

В асимметричной криптографии

В асимметричной криптографии, например, в криптосистемах с открытым ключом, используются односторонние функции, то есть функции, легко вычисляемые по аргументу, но с высокой вычислительной сложностью нахождения аргумента по значению функции, однако атаки на существующие системы с открытым ключом обычно быстрее, чем полный перебор пространства ключей. Уровень криптостойкости таких систем неизвестен во время разработки, но предполагается по самой известной на текущий момент криптоатаке.[6]

Существуют различные рекомендации оценки уровня криптостойкости асимметричных алгоритмов, отличающиеся в силу различных методологий. Например, для криптосистемы RSA на 128-битном уровне криптостойкости NIST и ENISA рекомендуют использовать 3072-битные ключи[9][10] и IETF 3253.[11][12] Эллиптическая криптография позволяет использовать более короткие ключи, поэтому рекомендуются 256—383 бит (NIST), 256 бит (ENISA) и 242 бит (IETF).

Эквивалентность уровней криптостойкости

Две криптосистемы обеспечивают одинаковый уровень криптостойкости, если ожидаемые усилия, необходимые для взлома обеих систем, эквивалентны.[6] Поскольку понятие усилия можно интерпретировать несколькими способами, существуют два пути сравнения:[13]

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

Сравнительный список уровней криптостойкости алгоритмов

В таблице приведены оценки максимальных уровней криптостойкости, которые могут быть предоставлены симметричными и асимметричными криптографическими алгоритмами, с учетом ключей определённой длины на основании рекомендаций NIST.[9]

Уровень криптостойкости Симметричные криптосистемы FFC IFC ECC
<math>80</math> 2TDEA <math>L</math> = 1024, <math>N</math> = 160 <math>k</math> = 1024 <math>f</math> = 160—223
<math>112</math> 3TDEA <math>L</math> = 2048, <math>N</math> = 224 <math>k</math> = 2048 <math>f</math> = 224—255
<math>128</math> AES-128 <math>L</math> = 3072, <math>N</math> = 256 <math>k</math> = 3072 <math>f</math> = 256—383
<math>192</math> AES-192 <math>L</math> = 7680, <math>N</math> = 384 <math>k</math> = 7680 <math>f</math> = 384—511
<math>256</math> AES-256 <math>L</math> = 15360, <math>N</math> = 512 <math>k</math> = 15360 <math>f</math> = 512+

Где <math>L</math> — длина открытого ключа, <math>N</math> — длина закрытого ключа, <math>k</math> — размер модуля n, <math>f</math> — размер порядка <math>q</math> точки <math>G</math>.

См. также

Примечания

Шаблон:Примечания