Рейтинг:1

Генерировать уникальные случайные значения для уникальных входных значений

флаг pk
VSB

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

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

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

Итак, меня беспокоит, что этот метод генерации (псевдо)случайных значений может быть достаточно безопасным?

Например. если у кого-то есть 1000 входных последовательных (незашифрованных) значений и 1000 выходных значений (зашифрованных текстов) на эти входные значения, может ли он / она предсказать выходное случайное значение для 1001й входное значение? Другими словами, может ли злоумышленник математически смоделировать этот псевдослучайный генератор для генерации новых случайных значений без использования ключа внутри блочного шифра AES?

Я знаю, что есть некоторые стандарты для "KDF", такие как определенные в НИСТ СП-800 ряд, однако уникальность случайных значений там не вызывает беспокойства (если я не ошибаюсь), но это вызывает беспокойство в моем целевом приложении.

Рейтинг:1
флаг cn

Конечно, это достаточно безопасно. Отойдите в сторону и подумайте о последствиях, если бы это было не так: взглянув на 1000 шифрований, если бы вы могли предсказать 1001-е, не зная ключа, вы бы взломали AES.

Ваша конструкция на самом деле является общепризнанным методом превращения блочного шифра в потоковый шифр, как:

прнг

Хотя существуют проблемы с эффектом «День рождения» для выходных пространств, приближающихся $2^{64}$ бит, всего 1000 из них будут неотличимы от случайных. И уникальный.

fgrieu avatar
флаг ng
Да. В последнем абзаце: поскольку AES является биекцией, итерация AES _не_ подвержена эффекту дня рождения, как это было бы при итерации хэша. Вероятность попадания в цикл, начинающийся со случайной точки после $2^{64}$ итераций, составляет около $2^{-64}$.
Paul Uszak avatar
флаг cn
@fgrieu Противоположность эффекту дня рождения? Отсутствие эффекта дня рождения? Бездетность? Я искал формулировку, что должны быть коллизии в правильно (псевдо)случайном выводе. Причина, по которой AES PRNG различима...
fgrieu avatar
флаг ng
Шифрование AES для фиксированного ключа представляет собой перестановку набора элементов $k=2^{128}$. Имеется $k!$ перестановок таких $k$ элементов. Для любой фиксированной начальной точки, для любого $\ell$ в $[1,k]$ ровно $(k-1)!=k!/k$ этих перестановок имеют цикл длины $\ell$, начиная с сказал пункт. Таким образом, при случайной перестановке и старте из случайной точки длина цикла $\ell$ равномерно распределена на $[1,k]$. А ожидаемая (средняя) длина цикла $(k+1)/2$. Это полезно для DES в [режиме OFB] (https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Output_feedback_(OFB)).

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

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