Состояние brng-ctr -- это тройка (K, s, r), в которой K -- ключ, s -- счетчик, r -- память. Модель безопасности, в которой оценивалась стойкость brng-ctr, предполагает, что ключ K неизвестен противнику. Существует более жесткая модель -- противнику становится известным состояние. Например, противник получает доступ к внутренней памяти СКЗИ, в котором реализован генератор на основе brng-ctr.
Если
- противник знает состояние (
K, s, r) в определенный момент времени и
- противник знает количество сгенерированных к этому моменту псевдослучайных чисел (32-байтовых блоков) и
- при генерации не использовалась дополнительные данные (блоки
X_i),
то противник может определить все сгенерированные случайные числа. Для этого следует вычесть из s из количество и повторить генерацию.
Для защиты от подобного рода атак по "чтению назад" следует предусмотреть механизм необратимого изменения состояния. Один из вариантов -- сгенерировать 32-байтовый блок K' и заново инициализировать brng-ctr, используя K' в качестве ключа. Этот вариант реализован в библиотеке Bee2 (см. функцию rngRekey()).
Рекомендуется учитывать сказанное, при проектировании генераторов случайных чисел на основе brng-ctr.
Предлагается добавить в раздел 5.3 стандарта (СТБ 34.101.47) следующий абзац:
Ключ K, построенный по генерируемым псевдослучайным числам, может заменять собой текущий ключ генерации. После такой замены псевдослучайные числа, сгенерированные ранее K, становится вычислительно трудно определить даже при компрометации K. Рекомендуется выполнять смену ключа всякий раз после генерации критических объектов в тех случаях, когда гарантии защиты ключа недостаточно высоки.
Отметим, что в системе команд автомата СТБ 34.101.77, который в том числе может использоваться для генерации псевдослучайных чисел, есть команда ratchet. Она отвечает за необратимое изменение состояния автомата.
Состояние
brng-ctr-- это тройка (K,s,r), в которойK-- ключ,s-- счетчик,r-- память. Модель безопасности, в которой оценивалась стойкостьbrng-ctr, предполагает, что ключKнеизвестен противнику. Существует более жесткая модель -- противнику становится известным состояние. Например, противник получает доступ к внутренней памяти СКЗИ, в котором реализован генератор на основеbrng-ctr.Если
K,s,r) в определенный момент времени иX_i),то противник может определить все сгенерированные случайные числа. Для этого следует вычесть из
sиз количество и повторить генерацию.Для защиты от подобного рода атак по "чтению назад" следует предусмотреть механизм необратимого изменения состояния. Один из вариантов -- сгенерировать 32-байтовый блок
K'и заново инициализироватьbrng-ctr, используяK'в качестве ключа. Этот вариант реализован в библиотеке Bee2 (см. функциюrngRekey()).Рекомендуется учитывать сказанное, при проектировании генераторов случайных чисел на основе
brng-ctr.Предлагается добавить в раздел 5.3 стандарта (СТБ 34.101.47) следующий абзац:
Отметим, что в системе команд автомата СТБ 34.101.77, который в том числе может использоваться для генерации псевдослучайных чисел, есть команда
ratchet. Она отвечает за необратимое изменение состояния автомата.