Уменьшение энтропии при генерации числа больше предыдущего
От: vsb Казахстан  
Дата: 04.01.23 22:44
Оценка:
Предположим я генерирую неотрицательное число x1 из 64 битов неким псевдорандомным генератором. Далее я генерирую число x2 из 64 битов в цикле, пока оно не станет больше числа x1. Далее я генерирую число x3 больше x2 и так далее. И так генерирую чисто xn. Предположим, что мне это удалось, т.е. ситуацию, когда очередной xi равен 2^64 — 1 не рассматриваем.

Некая энтропия (не уверен, что правильно пользуюсь этим термином) для x1 очевидно равна 64 бита. Т.е. имеется 2^64 вариантов.

Чему равна энтропия для xn при таком алгоритме?

Интуитивно кажется, что 64 — n + 1. Но хочется быть уверенным.
Re: Уменьшение энтропии при генерации числа больше предыдущего
От: Sharowarsheg  
Дата: 04.01.23 22:53
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Предположим я генерирую неотрицательное число x1 из 64 битов неким псевдорандомным генератором. Далее я генерирую число x2 из 64 битов в цикле, пока оно не станет больше числа x1. Далее я генерирую число x3 больше x2 и так далее. И так генерирую чисто xn. Предположим, что мне это удалось, т.е. ситуацию, когда очередной xi равен 2^64 — 1 не рассматриваем.


vsb>Некая энтропия (не уверен, что правильно пользуюсь этим термином) для x1 очевидно равна 64 бита. Т.е. имеется 2^64 вариантов.


Какая энтропия? Вовсе не очевидно, что она равна 64 бита. Зависит, например, от псевдорандомного генератора. Вообще, определений разных куча, так что определяй.

vsb>Интуитивно кажется, что 64 — n + 1. Но хочется быть уверенным.


Можно сгенерировать 100 чисел таким методом, и тогда 64-100+1 < 0. Отрицательной энтропии не бывает.
Re[2]: Уменьшение энтропии при генерации числа больше предыд
От: vsb Казахстан  
Дата: 04.01.23 23:42
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

vsb>>Некая энтропия (не уверен, что правильно пользуюсь этим термином) для x1 очевидно равна 64 бита. Т.е. имеется 2^64 вариантов.


S>Какая энтропия? Вовсе не очевидно, что она равна 64 бита. Зависит, например, от псевдорандомного генератора. Вообще, определений разных куча, так что определяй.


Генератор будем считать рандомным.

Ну можно так определить. Пусть есть злоумышленник, который хочет подобрать это число. Если это x1, то ему надо перебрать числа и в среднем ему понадобится 2^63 попыток. Для xn очевидно перебирать нужно с конца (можно переформулировать задачу зеркально отразив для упрощения рассуждений). То бишь надо определить, сколько в среднем понадобится попыток злуомышленнику, чтобы найти число xn.

Если заменить формулировку задачи с 64 на 8 битов, n = 2, x2 < x1. Получается, что x1 генерируется от 1 до 255 (0 опускаем, чтобы не было ситуации с невозможным x2). Для каждого равновероятного x1 от 1 до 255 рассматриваем равновероятные x2 от 0 до (x1 — 1). Далее находим среднее арифметическое всех таких x2 и это кажется будет тем самым числом попыток (минус один), с которых в среднем злоумышленник будет угадывать x2, перебирая с 0. Получается [(0) + (0 + 1) + (0 + 1 + 2) + ... + (0 + ... + 254)] / (1 + 2 + ... + 255) = [0 * 1 / 2 + 1 * 2 / 2 + 2 * 3 / 2 + ... + 254 * 255 / 2] / [(1 + 255) * 255 / 2] = [\sum_{i = 0}^{254} i * (i + 1) / 2] / (256 * 255 / 2)

Как это посчитать я не знаю. Если просто посчитать — получится 84.(6). То бишь на подбор первого числа в среднем нужно 128 попыток, на подбор второго — 85.(6) попытки. Если я нигде не напутал. Ну да — явно не минус один бит.

Для n = 3 и 8 битов получается 63.25, для 4 битов получается 50.4. Это я просто перебором сделал. В принципе формула очевидная — (256 — n) / (n + 1). Хм. Сам решил что-ли, методом подбора. Если так, то выходит, что от исходного числа битов "энтропии" отнимается примерно log2(n) битов (ну там +-1, лень думать). То бишь если вернуться к исходной постановке задачи, то можно сгенерировать 1024 таких чисел и отнимется всего 10 битов энтропии. Неплохо.
Отредактировано 05.01.2023 0:06 vsb . Предыдущая версия . Еще …
Отредактировано 04.01.2023 23:51 vsb . Предыдущая версия .
Отредактировано 04.01.2023 23:50 vsb . Предыдущая версия .
Отредактировано 04.01.2023 23:49 vsb . Предыдущая версия .
Отредактировано 04.01.2023 23:48 vsb . Предыдущая версия .
Re[3]: Уменьшение энтропии при генерации числа больше предыд
От: Sharowarsheg  
Дата: 05.01.23 14:33
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Для n = 3 и 8 битов получается 63.25, для 4 битов получается 50.4. Это я просто перебором сделал. В принципе формула очевидная — (256 — n) / (n + 1). Хм. Сам решил что-ли, методом подбора. Если так, то выходит, что от исходного числа битов "энтропии" отнимается примерно log2(n) битов (ну там +-1, лень думать).


Ну да, плюс-минус примерно так и есть.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.