LINUX.ORG.RU

Генерация реально случайного пароля


0

0

Я так понимаю, что если знать, чем и как генеришь пароль, то можно подобрать все возможные значения seed (какой принцип генерации /dev/(u)random и сколько бит он выдаёт?), и при одном из них пароль должен совпасть. Как этого избежать?


>какой принцип генерации /dev/(u)random и сколько бит он выдаёт?

cat /dev/urandom

сиди и считай биты!

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

Я неправильно сказал - я имел ввиду: как инициализируется /dev/urandom - seed длиной сколько бит ему даётся при инициализации? Потому что при использовании seed от времени перебор seed'ов для взлома элементарный. Просто думал в тот момент о других вещах. :)

Под словами "реально случайный" я имел ввиду "не взламываемый легко".

mikhail
() автор топика
Ответ на: комментарий от mikhail

> как инициализируется /dev/urandom

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

> seed длиной сколько бит ему даётся при инициализации

это зависит от размера пула энтропии. обычно это 512 байт.

> Потому что при использовании seed от времени перебор
> seed'ов для взлома элементарный.

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

> Под словами "реально случайный" я имел ввиду
> "не взламываемый легко".

используйте системы с нормальным пулом энтропии. например
OpenBSD. в grsecurity тоже были потуги сделать тоже самое
для Linux. вроде бы даже сделали.

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

>> Потому что при использовании seed от времени перебор >> seed'ов для взлома элементарный.

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

Если в программе используется srand(time(NULL)), разве сложно запустить генерацию пароля (и сразу логиниться с ним) в цикле, а time(NULL) заменить на счётчик цикла?

mikhail
() автор топика

Там используются события от реально случайных устройств. Клавиатура, мышь, сеть.
Попробуй попытаться учесть и воспроизвести всё это при взломе.

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

>Там используются события от реально случайных устройств. Клавиатура, мышь, сеть.

Спасибо!

mikhail
() автор топика
Ответ на: комментарий от mikhail

> Если в программе используется srand(time(NULL))...

в нормальной программе это не используется.
есть более другие вещи, i.e. arc4random(3).

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

signal11
()
Ответ на: комментарий от Pi

> cat /dev/urandom

кстати, в дополнение к вышесказанному, хочу привести часть мана по
устройству random(4) из OpenBSD:

  The various random devices produce random output data with different ran-
  dom qualities.  Entropy data is collected from system activity (like disk
  and network device interrupts and such), and then run through various
  hash or message digest functions to generate the output.

  /dev/random    This device is reserved for future support of hardware
                 random generators.

  /dev/srandom   Strong random data.  This device returns reliable random
                 data.  If sufficient entropy is not currently available
                 (i.e., the entropy pool quality starts to run low), the
                 driver pauses while more of such data is collected.  The
                 entropy pool data is converted into output data using MD5.

  /dev/urandom   Same as above, but does not guarantee the data to be
                 strong.  The entropy pool data is converted into output
                 data using MD5.  When the entropy pool quality runs low,
                 the driver will continue to output data.

  /dev/prandom   Simple pseudo-random generator.

  /dev/arandom   As required, entropy pool data re-seeds an ARC4 generator,
                 which then generates high-quality pseudo-random output da-
                 ta.


Суть такая что если хотите надежных случайных последовательностей,
используйте /dev/srandom, или /dev/arandom. При этом /dev/urandom
не гарантирует редкой повторяемости и не должен быть использован
при генерации ключей и прочего барахла...

signal11
()

Вот ведь, запарщики?

1. /dev/random может быть у вас как программным, так и аппаратным, зависит от того, что у вас в ядре/модулях (для Intel i8xx, Via Nehemiah и AMD 76x есть встроенные в чипсет/процессор RNG).
2. Для проверки качества RNG есть замечательные rng-tools, они вам и напишут кто сколько раз и как повторялся, какие закономерности есть в выдаваемых последовательностях.
3. В качестве программного можно использовать отдельный демон энтропии, кажется entopyd (но мы его не используем в своих продуктах ввиду подбора хорошего аппаратного из п.1).
4. Используйте /dev/random в Linux (проверьте /dev/urandom через rng-tools :).

saper ★★★★★
()

cat /dev/random|uuencode -m -
после этого елозить мышкой :) вообще этот пример кажется был в LOR-Security-FAQ от oxonian-a.

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

> /dev/random может быть у вас как программным, так и аппаратным, зависит от того, что у вас в ядре/модулях (для Intel i8xx, Via Nehemiah и AMD 76x есть встроенные в чипсет/процессор RNG).

Витус Вагнер как-то проболтался, вроде, что его контора делает rng, подключаемый к usb. Тоже вариант, в принципе.

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

почему нереально, реально, берешь ризистор к lpt-порту прикрепляешь, ставишь усилитель белого шума(дробового или иначе электронного, когда электроны проводимости стукаются об атомы) и получаешь идеально случайное число.

vilfred ☆☆
()
Ответ на: комментарий от anonymous

а че так дорого, детектор распада это ведь ФЭУ надо, по видимому ставить....

блин, в предыдущую надо писать резистор.

vilfred ☆☆
()
Ответ на: комментарий от morge

почему не реально? останавливаешь любую женщину и спрашиваешь назвать рандомные восемь буков или цифер .. :)

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

> почему не реально? останавливаешь любую женщину и спрашиваешь назвать рандомные восемь буков или цифер .. :)

По статистике, на предложение назвать случайное число от 1 до 10, порядка половины людей называют число 7. А от 1 до 100 - 37.

Плохой из человека ГСЧ.

anonymous
()
Ответ на: комментарий от ivlad

> Витус Вагнер как-то проболтался, вроде, что его контора делает rng, подключаемый к usb. Тоже вариант, в принципе.

Некоторые платы аппаратного шифрования содержат в себе аппаратный же ГСЧ.

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