|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 12:08 am
генератор на случайни числа
| Автор |
Съобщение |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
Нещо не мога да ти схвана идеята - би ли я обяснил по-подробно?
|
| Вто Окт 20, 2009 10:25 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Ми толкова елементарно нещо едва ли му трябва много дълго обяснение, ама
ето го.
Еднобитов брояч се върти непрекъснато наклочен с 1 мегахерц. При всяко регистриране
на натиснат клавиш на клавиатурата се взима стойността на брояча - ето ти един случаен бит.
За 100 натиснати клавиша имаш 100 случайни бита или 100 битово число. За 1000 натиснати
клавиша - 10 100 битови числа. Архивираш непрекъснато и ползваш последните няколко
назад според нуждите. Как и с какъв софтуер ще ги процесираш нататък е отделна
работа, в която няма нищо случайно вече.
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Вто Окт 20, 2009 10:42 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
Сега вече го схванах - до сега си мислех, че (понеже ти спомена 8 битов таймер) при всяко натискане на клавиш или мърдане на мишката просто четеш 8 битовия таймер и ето ти едно 8 битово случайно число  . С новото обяснение нещата вече изглеждат по-различно  .
|
| Вто Окт 20, 2009 10:46 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Не съм сигурен доколко е голяма разликата между 8 бита наклочени с 256 мегахерца
и един бит, наклочен с 1. Би трябвало да е все тая, но не бих си заложил главата, че е така,
поне не в момента (водя други битки и не ми е до тия смятания и чудения).
[edit] Някой-друг час по-късно това явно остана в background и резултатът е, че можеш
да вземеш колкото си искаш битов таймер и да получиш случайно число, стига най-старшият
бит от тези, които взимаш, да се върти достатъчно бързо. Какво е "достатъчно" наизуст
не мога да кажа, очевидно 1 микросекунда е достатъчно бързо, и 10 вероятно е така;
към 1 милисекунда бих се замислил, може и да не е. [/quote]
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Вто Окт 20, 2009 10:53 pm |
|
 |
|
741
Ранг: Форумен бог
Регистриран на: Вто Сеп 15, 2009 10:44 am Мнения: 1034
|
Абе и с това трябва да се внимава. Натискането на клавиш е случайно събитие, обработването на натиснатия клавиш обикновено не е. Ти сканирай клавиатурата в прекъсване на таймер, дето се тактува от същия клок, и чакай да получиш случайна стойност.
Особено весело се получава, ако избереш периодът на таймера да е степен на 2. Тогава при натисват клавиш винаги ще четеш една и съща стойност за младшите битове на брояча, плюс/минус неопределеността на латенцията на таймеровото прекъсване 
|
| Сря Окт 21, 2009 8:42 am |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
tgi, каква клавиатура те гони? колко %та от микроконтролерните приложения имат клавиатура и въобще човешко участие?
нищо не си схванал от проблема. ето, трябва ми генератор който да изкара 1000 случайни числа за една милисекунда. айде кажи как това нещо се прави с концепцията с таймерите и бутоните?
и въобще който каже че генератор за случайни числа е просто нещо, говори пълни ГЛУПОСТИ. таймери, ацпта, всичко това може да се ползва САМО за инициализатор на случайния генератор, но не и само по себе си като случаен генератор, освен за най-най-примитивните и неотговорни приложения. а между другото, за отговорни приложения дори и само като инициализатор, таймер е непрепоръчителен. знам за една система, която разбиха точно щото гениите решили да ползват таймер като инициализатор на рнд генератора, хакерите усетили това и засекли трансфера при логване точно фиксирано време след подаване на захранването.
|
| Сря Окт 21, 2009 9:42 am |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Е не съм твърдял, че методът е идиотоустойчив. Човек трябва да знае какво прави. Но не е ракетна
наука да се гарантира липсата на корелация между даден бит и клавиатурата, много по-трудното би
било да се гарантира, че я има.
Зейфоде, бе нали направих изричната уговорка в първия си пост, че става дума за системи с
човешки интерфейс. Без него методът естествено е неприложим.
Не ми е ясно за какви генератори говориш, но *какъвто* и софтуер да пишеш, който да
обработва случйното число (без друг случаен вход), резултатът от него няма да е случаен.
Разбирам, че много пъти случайното число трябва да е гарантирано
поразкрасено (примерно да не е почти само нули), та да става за шифриращи цели, но това
няма нищо общо със случайните числа. Сега доколко това е проста работа или не е
разбира се въпрос на критерии, може и да си прав, знам ли.
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Сря Окт 21, 2009 10:20 am |
|
 |
|
MYXATA
Ранг: Форумен бог
Регистриран на: Пон Юни 05, 2006 1:48 pm Мнения: 4906 Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
|
tgi,
като написа за клавишите и клавиатурата...
има един статистически тест, който за яснота е сравнен с това ако дадеш на 100 маймуни пишещи машини, и те почнат да тракат по тях, след колко време ще има изречението "to be or not to be"
като цяло това дето го говориш, го има на повечето софтове за криптиране на пц като PGP например.
но ако се задълбочиш изследвания ще разбереш, че това и дава краен брой комбинации, а оттам следва, че не е съсвем случайна последвателността дето я генерираш.
Друг е въпроса в обикновенния живот на човек ползващ компютър и софтуер доколко надеждно криптиране му трябва.
_________________ ... ако трети ден не ти се работи... това означава, че е сряда !
|
| Сря Окт 21, 2009 10:21 am |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
добре че ми каза. айде да те шокирам малко - това не само че не е недостатък, ами е абсолютно задължително условие. 
|
| Сря Окт 21, 2009 11:56 am |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
Хайде недей да ни шокираш джанъм
Нито е абсолютно, нито е задължително... Няма такова животно дето да няма "случаен елемент".
Знам че в твоя свят "ОС" и "контролер" са две несъвместими понятия, демек бачкаш с достатъчно елементарни чипове. Но дори и при тях има "случайност" - примерно ако бачкаш с неинициализирана памет... Някои приложения използват точно тоя номер - чек сума на RAM паметта след включване на захранването.
А като отиваш към по-съвременни чипове, "случайностите" стават повече от ежедневие, Примерно ако сложиш PLL... при повечето процесори тръгваш на някакъв бавен клок, пускаш и проверяваш дали се е стабилизирал. Времето за това си зависи от температура, шумове в захранването и кво ли не... Демек случайности да търсиш!
А още по-нагоре като тръгнеш стигаш до контролери с повече от един клок домейн. Примерно ядрото бачка на една честота, шината на друга... И като сложиш и таскове и таймери, веднъж един таск отнема един брой клокове на ядрото, веднъж друг... (при все че като код може да са абсолютно еднакви). И ако нямаш читава синхронизация между тасковете до такива "случайности" може да се натъкнеш че живота ти да се стъжни...
Иначе идеята да разчиташ на клавиатура за случайности е добра само докато хакерите не разберат че там си заровил ключа на бараката... След което твоята клавиатура се подменя и край на "случайностите"... Затова като източник е добре да се ползват само неща върху което един хакер не би могъл да има контрол (примерно трудно се бъзика вътрешен PLL, или пък закъсненията в тактове между клок домейни). Друг пример пускам таймер от един домейн и таск дето цикли през 1mS и взема стойността на таймера. Това нещо ако си мислиш че ще дава една и съща поредица имаш много здраве от мен 
|
| Сря Окт 21, 2009 12:28 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
Едно време бейсика за осмаците си имаше вградена функция RND, която по спомени връщаше случайно число в диапазона 0..1. Някъде бях срещал и описание на принципа на работа, вероятно в старите книжки за тези компютри, но не го помня вече.....
Ама ако питаш Google, вероятно ще имаш успех.
|
| Сря Окт 21, 2009 12:38 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Аз имам една разработка за USB донгъл. При него търсих надежден метод за инициализиране на генератора на случайни числа. Стигнах до дoбре работещо решение на базата на най младшия бит на ADC-to. Самото ADC съм го пуснал някъде над максималната честота на клока която му дават в документацията и двата най младши бита си играят както дойде. Това е доста близко до инициализиране с генератор на бял шум. Иначе не съм виждал някъде написано нещо за такъв метод. Но мисля че е доста читаво решение.
Всъщност като се замисля ако някой ми откачи входа на ADC-то и ми подаде напрежение над опорното на пина ще стане съвсем стабилен бит 0. Добре че рекох да споделя опит в тази тема че да си хвана бъга  :):). Ще сложа защита от това  :):):)
|
| Сря Окт 21, 2009 12:55 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Никола, ми то твоят метод си е "идеален", базиран е на бял шум. Е, трябва да имаш
повече от 1 LSB шум по трасето ама това е лесно за уреждане. Освен да те насити
някой, та да те пробие, ако ползваш шума на самото ADC, може и производителят
в някакъв момент като го подобри и му намали шума под 1 LSB да те накара да
изпищиш, ама това ще стане при тебе а не при клиента. А и де тоя ден, дето на
MCU-тата 12 бита ADC-тата ще имат под 1 LSB шум... (то може и да има някои, ама
повечето дето съм ги виждал са реално 10 бита та са идеални за такива цели  ).
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Сря Окт 21, 2009 3:10 pm |
|
 |
|
woody
Ранг: Форумен бог
Регистриран на: Вто Юли 31, 2007 2:55 pm Мнения: 1792 Местоположение: София
|
Achtung, ентропията може да е доста под един бит.
|
| Пет Окт 23, 2009 4:12 pm |
|
 |
|
bongo_x2
Ранг: Форумен бог
Регистриран на: Вто Яну 20, 2009 11:54 pm Мнения: 11338 Местоположение: "Занзибар"
|
Мии, ценерите нали бяха доста шумящи, особено в микротоков режим - над 6 волтовите, де. Навремето го бях измислил: ценер след малко аналогова химия да задейства стандартен цифров "случаен" генератор в хардуерно изпълнение, т.е. да го играе "натискане на клавиш". Ама сега като са еФтини АЦП-тата...
|
| Пон Ное 30, 2009 9:58 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 0 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|