Skip to content

Необратимое изменение состояния в brng-ctr #1

Description

@agievich

Состояние brng-ctr -- это тройка (K, s, r), в которой K -- ключ, s -- счетчик, r -- память. Модель безопасности, в которой оценивалась стойкость brng-ctr, предполагает, что ключ K неизвестен противнику. Существует более жесткая модель -- противнику становится известным состояние. Например, противник получает доступ к внутренней памяти СКЗИ, в котором реализован генератор на основе brng-ctr.

Если

  1. противник знает состояние (K, s, r) в определенный момент времени и
  2. противник знает количество сгенерированных к этому моменту псевдослучайных чисел (32-байтовых блоков) и
  3. при генерации не использовалась дополнительные данные (блоки X_i),

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

Для защиты от подобного рода атак по "чтению назад" следует предусмотреть механизм необратимого изменения состояния. Один из вариантов -- сгенерировать 32-байтовый блок K' и заново инициализировать brng-ctr, используя K' в качестве ключа. Этот вариант реализован в библиотеке Bee2 (см. функцию rngRekey()).

Рекомендуется учитывать сказанное, при проектировании генераторов случайных чисел на основе brng-ctr.

Предлагается добавить в раздел 5.3 стандарта (СТБ 34.101.47) следующий абзац:

Ключ K, построенный по генерируемым псевдослучайным числам, может заменять собой текущий ключ генерации. После такой замены псевдослучайные числа, сгенерированные ранее K, становится вычислительно трудно определить даже при компрометации K. Рекомендуется выполнять смену ключа всякий раз после генерации критических объектов в тех случаях, когда гарантии защиты ключа недостаточно высоки.

Отметим, что в системе команд автомата СТБ 34.101.77, который в том числе может использоваться для генерации псевдослучайных чисел, есть команда ratchet. Она отвечает за необратимое изменение состояния автомата.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions