id: Гость   вход   регистрация
текущее время 23:14 28/04/2024
Автор темы: Гость, тема открыта 13/06/2009 06:10 Печать
Категории: софт
создать
просмотр
ссылки

rand() – можно ли предугадать?


Привет.


Можно ли предугадать rand() в линупсе(юнипсе, винде)? Можно получить сколько угодно значений, может даже сколько угодно последовательных.


 
На страницу: 1, 2 След.
Комментарии
— Гостb (13/06/2009 20:58)   <#>
rand() – можно ли предугадать?

можно
— DDRTL (14/06/2009 00:28)   профиль/связь   <#>
комментариев: 212   документов: 27   редакций: 20
http://www.google.com/search? H.....2Frand&aq=f&oq=&aqi=

http://www.google.com/search? H.....crypto%2Frand&aqi=g3

http://www.google.com/search? H.....=crypto+rando&aqi=g3

ну чтойти такое могу предложить)
— unknown (15/06/2009 09:15)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
For some time the ANSI C standard restricted the C language random number routine output to a single precision integer, for most implementations that would be 16-bits, giving at most 32768 different values before repeating (assuming a cyclical algorithm, as is common, but not mandatory). This is entirely insecure and is easily breakable by exhaustive test (for perspective, a 1 GHz computer which takes 10,000 clock cycles to check an offset within the RNG's cycle would take under a third of a second to check every possible offset). Standard computer random number generators are not suitable for cryptographic purposes

— DDRTL (16/06/2009 20:10, исправлен 16/06/2009 20:20)   профиль/связь   <#>
комментариев: 212   документов: 27   редакций: 20
Есть схожая тема :
/comment31126
— Гость (19/06/2009 21:36)   <#>
DDRTL (14/06/2009 00:28)

меня интересовало, можно ли его отломать, и если да, то как, а не как сделать надежный генератор.

Так как его сломать?
— SATtva (19/06/2009 21:48)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Перебрать весь несчастный 16-битовый регистр.
— Гость (21/06/2009 04:40)   <#>
поконкретнее можно?
— SATtva (21/06/2009 11:17)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Что значит конкретнее? Вам программу написать?
— Гость (21/06/2009 17:20)   <#>
Хотя бы алгоритм...
— Гость (21/06/2009 17:21)   <#>
Еще я где-то нагуглил, что на юнипсах rand() берет из /dev/urandom, там этот фокус пройдет?
— SATtva (21/06/2009 18:34)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Хотя бы алгоритм...

for i in [ 1..2**16 ]?

Еще я где-то нагуглил, что на юнипсах rand() берет из /dev/urandom, там этот фокус пройдет?

Вам unknown выше привёл цитату, что в ней непонятно? Какая разница, каков источник случайности, если значение пишется в целое единичной точности, имеющее длину 16 бит? Перебрать эти 16 бит — доля секунды на любом современном ПК.
— Гость (21/06/2009 22:22)   <#>
А кто сказал, что я подбираю локально?

Я по сети получаю с сервака значение, из него можно получить результат выполнения rand() на серваке. Есть возможность получить несколько последовательных значений (но не 2**16 есесно). По ним потом надо получить (предугадать) следующие (предыдущие значения). Можно ли так сделать?

Я думал, что я плохо сформулировал вопрос, но слово "предугадать" в теме как бы намекает..
— Гость (21/06/2009 22:39)   <#>
Узнайте, какой на сервере rand() и гоняйте его локально :)
— SATtva (21/06/2009 22:47)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
А кто сказал, что я подбираю локально?

А кто-то сказал, что нет?

По ним потом надо получить (предугадать) следующие (предыдущие значения). Можно ли так сделать?

А это уже зависит от источника энтропии в конкретной реализации функции. Но если сервер не ограничивает число попыток, выполняемых клиентом, опять же, достаточно перебрать всё пространство комбинаций.
— Гость (21/06/2009 23:21)   <#>
Угу, блжад. Число возвращается 32битное, меняются все байты. Это ж долго перебирать придется.

Так конкретных советов никто не даст (кроме невыполнимого брутефорса)?
На страницу: 1, 2 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3