Я писал о том, зная приватную и публичную пару ключей (аутпут) и что подбирая входные параметры (инпут) и добившись в этом результата, ты сможешь подобрать приватники к другим адресам, сгенерированным на этом же железе.
Ну, так я так и написал. Только ты не понимаешь, о чем говоришь и как генерируются числа, поэтому тебе кажется, что есть некий магический набор данных (далее энтропия), из которых потом можно сгенерировать все числа, которые могут быть сгенерированы на этом устройстве. Но это не так. Потому что:
1) ты читаешь не про криптографически стойкие генераторы
2) ты читаешь про восстановление последовательности случайных чисел и различные способы анализа для этого. А в нашем случае никто не генерирует последовательность чисел, в нашем случае каждый раз генерируется одно случайное число с помощью алгоритма с энтропией. В чем разница? ГПСЧ используется, чтобы сгенерировать сразу несколько чисел с равномерным (иначе оговаривается) распределением. Для этого используется формула для нахождения следующего числа из предыдущего.
Например, ты получаешь последовательность:
7 16 3 7 16
В нашем случае я использовал такую формулу:
xn+1 = (a * xn + c) % m
где,
xn+1 - следующее случайное число в последовательности;
xn - предыдущее число;
a = 7, c = 5, m = 19 - коэффициенты от которых зависит период повторения последовательности
поздравляю, ты познакомился с линейным гонгруэнтным методом Мерсенна
Если ты попробуешь получить самостоятельно мою последовательность "7 16 3 7 16", то ты вдруг поймешь, что у тебя нет нулевого члена, из которого я сгенерировал эту последовательность. Этот член называется сидом, в моем случае он равен 3. Теперь ты можешь повторить мой результат и построить последовательность не из 5 чисел, а хоть из 105. И будешь уверен, что если я буду генерировать рандомные числа из этого же сида и этим же методом, то я всегда буду получать на первом, втором, ..., энном месте в последовательности точно те же числа, что и ты.
Для проверки можешь использовать любой веб интерпретатор для питона
seed = 3
a = 7; c = 5; m = 19
for i in range(5):
seed = (a * seed + c) % m
print(seed, sep = ' ')
Методы атаки, про которые ты читаешь, пытаются из обрывка такой последовательности, например, "16 3 7" восстановить и формулу, и сид, чтобы иметь возможность сгенерировать любой по счету член этой последовательности (хоть первый, хоть сто первый). На этом месте тебе как раз резонно говорят "зачем ебаться с анализом приватников, когда у тебя под рукой есть алгоритм". Это примерно как у тебя есть черная коробка, из которой достали три бочонка с цифрами и ты пытаешься понять по этим бочонкам, как работает эта коробка, когда у тебя под рукой детальное описание работы этой коробки. Если тебе нравится искать проблемы на ровном месте, я не против, но зачем ты на нас спускаешь собак? Мы только лишь хотели тебе облегчить задачу.
В нашем же случае с криптой все по-другому. У тебя никто не генерирует последовательность случайных чисел. У тебя каждый раз генерируется одно случайное число из одного случайного сида, который еще и получают с помощью источника энтропии, чтобы не наебаться. Возьмем, например, за источник энтропии количество свободной оперативной памяти. Я генерирую ключ, у меня запущен ряд программ, получаю приватник. Потом я через какое-то время генерирую новый приватник и у меня новое состояние оперативной памяти, потому что запущен другой набор программ. Ты, например, получаешь первый мой приватник. Даже если ты каким-то чудом догадаешься по одному числу (одному приватнику) сколько у меня там было свободно оперативной памяти, как ты по этому числу попытаешься сгенерировать второй мой приватник? Это число одноразовое. Я не генерирую на основании него ряд случайных чисел. Понимаешь разницу?
Ответь мне пожалйста, что из этого "Текущее время, размер жёсткого диска, размер свободной памяти, номер процесса и NETBIOS-имя компьютера" нельзя подобрать?
Все очень просто. Например, жесткий диск:
1) разные объемы
2) разные сектора
3) разные файловые системы и разный размер кластеров, который измеряется в целом числе секторов
4) разное количество порнушки, закаченное на этот хард
Представь, какое это количество вариантов?
Теперь оперативка: разные объемы от 8 гигов до 64 гигов в среднем. Каждый раз количество программ в памяти разное и они разный объем памяти сами по себе жрут.
Попробуй хотя бы для этих двух параметров посчитать количество вариантов, а потом их перебрать для каждой миллисекунды времени. Я посмотрю, как у тебя это получится. Более того, если я тебе отдам приватник, сгенерированный с такой машины, ты никак не узнаешь энтопию/сид/магический набор данных, о котором ты говоришь для следующего сида, потому что у меня будет другое количество места на диске, другое количество программ в оперативке и тп и тд. Ты путаешься между детерменированным ГПСЧ и криптографическим, между генерацией последовательности чисел и генерацией одного случайного числа.
Надеюсь, я тебе помог не заколоть девственницу.
***
Кстати, чтобы ты понимал на сколько все плохо. Для MD5 до сих пор нет четкого алгоритма для генерации коллизий. Лет 5 назад выкатили алгоритм для коллизии хэша файлов и то все ссались кипятком. Криптография это не магия. В ней даже ничего сложного нет, это совершенно тупая и простая вещь, как чугунная сковородка. Весь фокус, что ты быстрее заебешься, чем найдешь ответ. Это как искать записку посреди леса. Можно нанять миллиард человек и ее найти, на зачем, если в ней будет написано "ты ебанутый?!".