LINUX.ORG.RU

генераторы случайных чисел

 ,


0

2

Я понимаю, тема рваный баян, но всё-таки.
Одни говорят, что /dev/urandom использовать безопасно в криптографических целях (CSPRNG), и вообще стоит использовать только его.
И как подтверждение, во многих программах ключи генерируются быстро, например, openssh при первом запуске - сразу тебе и RSA, и ECDSA, и все прочие за доли секунды, из /dev/random так быстро не сгенерировались бы. LUKS тоже инициализируется довольно быстро, а там мастер-ключ не зависит от пароля, т.е. генерируется с нуля.

Но например, при создании ключей gpg просят подвигать мышкой и постучать по клавиатуре (так вроде бы быстрее набирается энтропия в /dev/random), и ключ генерируется довольно долго.
И в некоторых статьях (та же википедия) говорится, что для создания ключей всё-таки /dev/random.

Может кто-нибудь пояснить за криптографию, когда всё-таки нужно использовать /dev/random?

Может кто-нибудь пояснить за криптографию, когда всё-таки нужно использовать /dev/random?

random и urandom в линуксе берут энтропию из одного источника

для ключей, особенно для длительного использования, желательно таки использовать random.

то, что на практике используют urandom - жертвуют безопасностью ради удобства, чтоб не зависнуть на полчаса-час

openssh при первом запуске - сразу тебе и RSA, и ECDSA, и все прочие за доли секунды

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

Harald ★★★★★ ()
Ответ на: комментарий от Harald

для ключей, особенно для длительного использования, желательно таки использовать random

Так почему тогда большинство софта его не использует?
openssl genrsa тоже отрабатывает быстро

Из известных мне по умолчанию это только gpg, собственно, почему и возник этот вопрос.

TheAnonymous ★★★★★ ()
Ответ на: комментарий от TheAnonymous

Так почему тогда большинство софта его не использует?

openssl genrsa тоже отрабатывает быстро

Чтоб не зависать надолго. Для openssl можешь указать -rand /dev/random

Harald ★★★★★ ()
Ответ на: комментарий от Harald

random и urandom в линуксе берут энтропию из одного источника

Да, точнее они отличаются только тем, что random лочится (причём не когда «энтропия» «кончится», а по гаданию на кофейной гуще), а urandom — нет.

для ключей, особенно для длительного использования, желательно таки использовать random.

Нет, нет разницы. Если ключи программно генерируются в процессе работы, например, сервера — то лучше брать urandom, по двум причинам: во-первых, random может нам обеспечить DOS уязвимость, во-вторых, пользователи могут попытаться «ускорить» random засовыванием «энтропии» в систему, на самом деле сделав её предсказуемой.

то, что на практике используют urandom - жертвуют безопасностью ради удобства, чтоб не зависнуть на полчаса-час

Нет. Зависание на полчаса-час как раз может стать проблемой именно безопасности. urandom — нет. Ты правда думаешь, что, скажем, 2048 бит достаточно, чтобы шифровать сколько угодно сообщений, но недостаточно, чтобы сгенерить сколько угодно непредсказуемых данных?

ChALkeR ★★★★★ ()
Последнее исправление: ChALkeR (всего исправлений: 1)
Ответ на: комментарий от TheAnonymous

только gpg

Кусок говна. Как раз с месяц назад там прикрыли эпичных размеров дыру в их генераторе псевдослучайных чисел.

По-хорошему, им тоже надо взять /dev/urandom (с небольшими оговорками, зависящими от системы).

ChALkeR ★★★★★ ()

ТС, если тебе ручками сгенерировать один раз — то разницы между /dev/random и /dev/urandom для тебя нет (кроме небольших оговорок о платформо-специфичных багах если вдруг твоя штука работает в момент загрузки системы до наполнения пула).

Если ты генерируешь программно на сервере или в приложении с которым имеют дело пользователи — бери urandom, т.к. блокировки random опасны DoS и кривыми руками пользователей, пытающихся его ускорить.

ChALkeR ★★★★★ ()
Последнее исправление: ChALkeR (всего исправлений: 1)
Ответ на: комментарий от ChALkeR

Кусок говна. Как раз с месяц назад там прикрыли эпичных размеров дыру в их генераторе псевдослучайных чисел.

можешь дать ссылку?

Harald ★★★★★ ()
Ответ на: комментарий от ChALkeR

во-вторых, пользователи могут попытаться «ускорить» random засовыванием «энтропии» в систему, на самом деле сделав её предсказуемой.

Например, чем?

Harald ★★★★★ ()
Ответ на: комментарий от Harald

На всякий случай: «кусок говна» — это я не про сам gpg, а про его подход к генерированию ключей. Не стоит на него ровняться, чесслово.

ChALkeR ★★★★★ ()
Ответ на: комментарий от Harald

Например, катить что-нибудь в /dev/random, чтобы твоя программулина быстрее работала.

Тут даже на лоре такое недавно предлагали из-за «нехватки» «энтропии». Ссылку искать лень.

ChALkeR ★★★★★ ()
Последнее исправление: ChALkeR (всего исправлений: 1)
Ответ на: комментарий от Harald

Ничего про них конкретно не скажу, надо смотреть на каком уровне это всё работает.

Но в общем случае заполнение пула _предсказуемой_ фигнёй может быть опасно, и не следует думать, что добавление «энтропии» всегда улучшает ситуацию — оно может портить ситуацию, если эти данные были на самом деле предсказуемы.

ChALkeR ★★★★★ ()
Последнее исправление: ChALkeR (всего исправлений: 1)
Ответ на: комментарий от ChALkeR

Но в общем случае заполнение пула _предсказуемой_ фигнёй может быть опасно, и не следует думать, что добавление «энтропии» всегда улучшает ситуацию — оно может портить ситуацию, если эти данные были на самом деле предсказуемы.

нуу, тут когда-то срачик один обсуждался, насчёт выкидывания из ядра аппаратного ГСЧ интеловских процессоров как источника энтропии для random, и Торвальдс сказал «пусть остаётся», мотивировав тем, что дополнительный предсказуемый источник чисел ситуацию не испортит, если хотя бы один из имеющихся безопасных источников работает

это если обсуждать конкретную реализацию в линуксе

Harald ★★★★★ ()

Может кто-нибудь пояснить за криптографию, когда всё-таки нужно использовать /dev/random?

Вот. И не слушать всяких идиотов.

И я даже уже разбирался раз.

atrus ★★★★★ ()
Последнее исправление: atrus (всего исправлений: 1)
Ответ на: комментарий от Harald

Ага, особенно Бернштейн. (А судя по фамилии, он ещё и жЫд)

atrus ★★★★★ ()
Ответ на: комментарий от atrus

Особенно Бернштейн, да! Явно мутный чувак! Судя по тому, как он свои поделия активно пропихивает везде, в тот же OpenSSH

Harald ★★★★★ ()
Ответ на: комментарий от atrus

Кто-то пытался делать openhardware-гсч. Не знаю только насколько продвинулись.

imul ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.