Получение linux в буфер / dev / random - PullRequest
2 голосов
/ 12 апреля 2011

Мне нужно разумное количество высококачественных случайных данных для приложения, которое я пишу.Linux предоставляет файл / dev / random для этой цели, что идеально;однако, поскольку мой сервер представляет собой виртуальную машину с одним сервисом, он имеет очень ограниченные источники энтропии, что означает, что / dev / random быстро истощается.

Я заметил, что если я читаю из / dev / random,Я получу только 16 или около того случайных байтов до того, как устройство заблокируется, пока оно ожидает большей энтропии:

[duke@poopz ~]# hexdump /dev/random
0000000 f4d3 8e1e 447a e0e3 d937 a595 1df9 d6c5
<process blocks...>

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

Однако - если вместо этого я оставлю команду работать в течение того же промежутка времени, будет собрано гораздо больше случайных данных.Исходя из этого, я предполагаю, что в течение определенного периода времени система производит много энтропии, но Linux использует ее, только если вы на самом деле читаете из / dev / random, и отбрасывает ее, если нет.Если это так, мой вопрос:

Можно ли настроить Linux для буферизации / dev / random, чтобы при чтении из него были получены гораздо большие пакеты высококачественных случайных данных?

Для меня не составило бы труда запаковать / dev / random как часть моей программы, но я чувствую, что делать это на системном уровне было бы более элегантно.Мне также интересно, будет ли иметь в буфере Linux случайные данные в памяти, что может повлиять на безопасность.

Ответы [ 3 ]

2 голосов
/ 12 апреля 2011

Похоже, вам нужен энтропийный демон , который питает энтропийный пул из других источников.

1 голос
/ 12 апреля 2011

У вас есть или вы можете купить совместимый с Linux аппаратный генератор случайных чисел?Это может быть решением вашей основной проблемы.Смотри http://www.linuxcertified.com/hw_random.html

1 голос
/ 12 апреля 2011

Использование /dev/urandom.

Аналогом / dev / random является / dev / urandom ("разблокировано" / неблокирующее случайный источник [4]), который повторно использует внутренний бассейн, чтобы произвести больше псевдослучайные биты. Это означает, что вызов не будет блокироваться, но выход может содержать меньше энтропии, чем соответствующее чтение из / DEV / случайным образом. Пока еще предназначен как псевдослучайное число генератор подходит для большинства в криптографических целях, это не рекомендуется для генерации долгосрочные криптографические ключи.

...