Почетна » како да » Како рачунари генеришу случајне бројеве

    Како рачунари генеришу случајне бројеве

    Рачунари генеришу случајни број за све, од криптографије до видео игара и коцкања. Постоје две категорије случајних бројева - "тачни" случајни бројеви и псеудослучајни бројеви - а разлика је важна за сигурност система шифровања.

    Рачунари могу генерисати заиста случајне бројеве посматрањем неких спољних података, као што су покрети миша или бука вентилатора, што није предвидљиво и креира податке из њега. То је познато као ентропија. У другим случајевима, они генеришу „псеудослучајне“ бројеве користећи алгоритам тако да се резултати појављују насумично, иако нису.

    Ова тема је недавно постала контроверзнија, а многи људи постављају питање да ли је Интелов уграђени чип генератора случајних бројева поуздан. Да бисте разумели зашто то можда није поуздано, мораћете да разумете како су насумични бројеви већ направљени и за шта се користе.

    Вхат Рандом Нумберс Аре Фор Фор

    Случајни бројеви се користе већ хиљадама година. Било да је окретање новчића или котрљање коцке, циљ је да се крајњи резултат до случајне шансе. Генератори случајних бројева у компјутеру су слични - они су покушај постизања непредвидивог, случајног резултата.

    Генератори случајних бројева су корисни за многе различите сврхе. Поред очигледних апликација као што су генерисање случајних бројева за потребе коцкања или стварање непредвидивих резултата у компјутерској игри, случајност је важна за криптографију.

    Криптографија захтева бројеве које нападачи не могу погодити. Не можемо само користити исте бројеве изнова и изнова. Желимо да генеришемо ове бројеве на веома непредвидив начин како их нападачи не би могли погодити. Ови случајни бројеви су неопходни за безбедно шифровање, без обзира да ли шифрујете сопствене датотеке или само користите ХТТПС веб локацију на Интернету..

    Труе Рандом Нумберс

    Можда се питате како рачунар заиста може генерисати случајни број. Одакле долази та "случајност". Ако је то само комад компјутерског кода, зар није могуће да бројеви које генерише рачунар могу бити предвидљиви?

    Генерално груписамо генерисане рачунаре са насумичним бројевима у два типа, у зависности од тога како су генерисани: "Труе" случајни бројеви и псеудо-случајни бројеви.

    Да би генерисао “прави” случајни број, рачунар мери неку врсту физичког феномена који се дешава изван рачунара. На пример, рачунар може да мери радиоактивни распад атома. Према квантној теорији, не постоји начин да се са сигурношћу сазна када ће доћи до радиоактивног распада, тако да је то у суштини "чиста случајност" из универзума. Нападач не би могао да предвиди када ће доћи до радиоактивног распада, тако да не знају случајну вредност.

    За свакодневни пример, рачунар се може ослонити на атмосферски шум или једноставно користити тачно време када притиснете тастере на тастатури као извор непредвидивих података или ентропије. На пример, рачунар може да примети да сте притиснули тастер тачно 0.23423523 секунди после 2 поподне ... Зграбите довољно времена везаних за ове притиске тастера и имаћете извор ентропије коју можете користити да бисте генерисали „праву“ случајност број. Ви нисте предвидљива машина, тако да нападач не може да погоди тачан тренутак када притиснете ове тастере. / Дев / рандом уређај на Линуку, који генерише случајне бројеве, "блокове" и не враћа резултат док не прикупи довољно ентропије да врати заиста случајан број.

    Псеудорандом Нумберс

    Псеудослучајни бројеви су алтернатива „правим“ случајним бројевима. Рачунар може да користи вредност семена и алгоритам за генерисање бројева који се чине насумичним, али који су у ствари предвидљиви. Рачунар не прикупља никакве случајне податке из окружења.

    Ово није нужно лоша ствар у свакој ситуацији. На пример, ако играте видео игрицу, није битно да ли су догађаји који се дешавају у тој игри попуњени „правим“ случајним бројевима или псеудослучајним бројевима. С друге стране, ако користите енкрипцију, не желите да користите псеудословне бројеве које нападач може да претпостави.

    На пример, рецимо да нападач познаје алгоритам и семенску вредност која користи генератор псеудослучајних бројева. И рецимо да алгоритам шифровања добије псеудослучајни број из овог алгоритма и користи га да генерише кључ за шифровање без додавања било какве додатне случајности. Ако нападач зна довољно, могли би да раде уназад и да одреде псеудослучајни број који је алгоритам за шифровање изабрао у том случају, разбијање енкрипције.

    НСА и Интелов хардверски генератор случајних бројева

    Да би програмери били лакши и помогли у генерисању сигурних случајних бројева, Интелови чипови укључују генератор случајних бројева заснован на хардверу познат као РдРанд. Овај чип користи извор ентропије на процесору и даје случајне бројеве софтверу када их софтвер затражи.

    Проблем је у томе што је генератор случајних бројева у основи црна кутија и не знамо шта се догађа унутар њега. Ако РдРанд садржи НСА бацкдоор, влада ће бити у стању да разбије кључеве за шифровање које су генерисане само са подацима добијеним од тог генератора случајних бројева..

    Ово је озбиљна брига. У децембру 2013, ФрееБСД-ови програмери су уклонили подршку за коришћење РдРанд директно као извор случајности, рекавши да не могу да верују. [Извор] Излаз уређаја РдРанд би био укључен у други алгоритам који додаје додатну ентропију, осигуравајући да било који бацкдоор у генератору случајних бројева не би био важан. Линук је већ радио на овај начин, даље насумичавајући насумичне податке који долазе из РдРанд-а, тако да не би било предвидиво чак и ако је постојао бацкдоор. [Извор] У недавном АМА ("Питај ме било шта") на Реддиту, директор компаније Интел Бриан Крзаницх није одговорио на питања о овим забринутостима. [Извор]

    Наравно, ово вероватно није само проблем са Интеловим чиповима. Програмери ФрееБСД-а су такође назвали Виа чипове по имену. Ова контроверза показује зашто је генерисање случајних бројева који су заиста случајни и нису предвидиви, тако важно.


    Да би генерисали „праве“ случајне бројеве, генератори случајних бројева прикупљају „ентропију“, или наизглед случајне податке из физичког света око њих. За случајне бројеве који то не чине стварно треба да буду случајни, могу користити само алгоритам и вредност семена.

    Кредит за слике: рекре89 на Флицкр, Лиса Бревстер на Флицкр, Риан Сомма на Флицкр, хуангјиахуи на Флицкр