Извините, я опоздал на эту дискуссию (сколько ей сейчас 3 с половиной года?), Но у меня вновь возник интерес к генерации PRN и альтернативным источникам энтропии. Разработчик ядра Linux Расти Рассел недавно обсуждал в своем блоге альтернативные источники энтропии (кроме /dev/urandom
).
Но я не так впечатлен его выбором; MAC-адрес сетевой карты никогда не меняется (хотя он уникален среди всех остальных), и PID кажется слишком малым для возможного размера выборки.
Я баловался с Mersenne Twister (на моем компьютере с Linux), который был засеян по следующему алгоритму. Я прошу любые комментарии / отзывы, если кто-то хочет и заинтересован:
- Создать буфер массива из 64 бит + 256 бит * число файлов
/proc
ниже.
- Поместить значение счетчика меток времени (TSC) в первые 64 бита этого буфера.
Для каждого из следующих файлов /proc
рассчитайте сумму SHA256:
- Создайте хэш SHA256 для всего этого буфера. ПРИМЕЧАНИЕ: Я мог (и, вероятно, должен) использовать другую хеш-функцию, полностью независимую от SHA-функций - этот метод был предложен в качестве «защиты» от слабых хеш-функций.
Теперь у меня есть 256 бит НАДЕЖДА случайных (достаточно) энтропийных данных, чтобы заполнить мой тварь Мерсенна. Я использую вышеупомянутое, чтобы заполнить начало массива MT (624 32-разрядных целых числа), а затем инициализировать остаток этого массива с кодом автора MT. Кроме того, я мог бы использовать другую хеш-функцию (например, SHA384, SHA512), но мне понадобился бы буфер массива другого размера (очевидно).
Оригинальный код Mersenne Twister требовал одного 32-битного начального числа, но я чувствую, что это ужасно неадекватно. Запуск «просто» 2 ^ 32-1 разных МТ в поисках взлома криптографии не выходит за рамки практической возможности в наше время.
Я бы с удовольствием прочитал чей-либо отзыв об этом. Критика приветствуется. Я буду защищать свое использование файлов /proc
, как указано выше, потому что они постоянно меняются (особенно файлы /proc/self/*
, а TSC всегда выдает другое значение (разрешение наносекунды [или лучше], IIRC). Diehard тестирует на этом (к мелодии в несколько сотен миллиардов битов), и кажется, что это проходит с летающими цветами. Но это, вероятно, больше свидетельствует о надежности Mersenne Twister как ГНЕЗД, чем то, как я его сею.
Конечно, они не полностью невосприимчивы к тому, что кто-то их взламывает, но я просто не вижу, чтобы все они (и SHA *) были взломаны и взломаны моя жизнь.