Кездейсоқ RNG тізбектері туралы деректер
Кездейсоқ кезектілік - бұл «хаос» емес, тексерілетін қасиеттері бар мәндер ағыны. Ойын жүйелерінде бұл ағынның сапасына спиндердің, таратулардың, мультипликаторлардың адалдығы байланысты. Төменде - RNG жүйелілігі қандай болу керектігі және оны қалай тексеру керектігі туралы негізгі фактілер.
1) Тәуелсіздік «сұлулықтан» маңызды
i.i.d. (тәуелсіз және бірдей бөлінген) - алтын стандарт.
Көрінетін паттерндердің болмауы кездейсоқтыққа кепілдік бермейді; «көзбен» емес, корреляция және сериялылық тестілері маңызды.
2) Бөлу хаттамамен берілген
«Шикі» ағында көбінесе біркелкілік болжанады (мысалы, 32-биттік сөздер тепе-тең болуы ықтимал).
Ойында біркелкі сандар оқиғаларға: слоттың символдары, «виртуалды қалта» карталары, доңғалақ секторы. Дұрыс мэппинг = «өлі аймақтар» мен қисаюлардың болмауы.
3) Кезең әрқашан бар - мәселе оның ұзындығында
PRNG соңғы кезеңі (циклділігі). Жақсы генератордың ұзақтығы соншалық, оны іс жүзінде пайдалана алмайсыз.
«Күйдің» (state/nonce reuse) сәйкес келуінен аулақ болу керек, әйтпесе ішкі бірізділік қайталанады.
4) Led (seed) - болжауға болмайтын тамыр
Ойдағыдай емес инициализация қайталанатын немесе болжамды шығыстарды береді.
Сенімді жүйе көп арналы энтропияны және мерзімді reseeding (құжатталған) пайдаланады.
5) Энтропия - «шу» сияқты емес
Биттік энтропия ағынның қаншалықты болжауға болмайтынын өлшейді.
Аппараттық энтропия (шу) әдетте жылдам және тұрақты ағынды алу үшін криптографиялық DRBG (CSPRNG) арқылы сіңіріледі.
6) p-values «әдемі» болмауы тиіс
Тесттердің батареяларында (жиіліктер, сериялар, «туған күндер», матрица дәрежелері және т.б.) p-values біркелкі [0; 1], 0-ге жуық жиналыңыз. 5».
Бір «қызыл» тест проблеманы дәлелдемейді: тексерулердің көптігін ескереді және басып озуды қайталайды.
7) Жергілікті «жолақ» - қате емес
Кез келген шынайы кездейсоқ кезектілікте кластерлер (нөлдердің/бірліктердің ұзын сериялары, символдардың қайталанулары) пайда болады.
Жолақтар - қалыпты; жүйелік тәуекел - үлкен терезелер үшін тұрақты ауытқулар.
8) Сызықтық - жасырын жау
LCG түріндегі қарапайым желілік генераторлар базалық сынақтардан өте алады, бірақ күрделі (матрица дәрежесі, сызықтық күрделілігі, DFT) сынақтарға «төгіледі».
Ойын индустриясында стандарт - крипто төзімді DRBG (мысалы, блоктық шифрларда/хэшаларда).
9) Мэппинг стационарлық және нұсқаланған болуы тиіс
Сәйкестік кестесінің кез келген өзгерісі «сан → оқиға» = ойынның жаңа нұсқасы және қайта тексеру.
Жақсы тәжірибе - хэш-сомалары мен сандық қолтаңбалары бар мэппингті қатаң бекіту.
10) «Дерлік ұтыс» - ағын туралы емес, интерфейс туралы
Near-miss - көрнекі драматургияның бір бөлігі; үлесін және мінез-құлқын ойын математикасы береді.
RNG санды береді, ал интерфейс осы қабаттарды ажырату керектігін көрсетеді.
11) Жаңғыртылуы ≠ болжамдылығы
Аудит үшін әрбір раунд нәтижені (раундтың ID, led/nonce, хеш) ойнатуға болатындай етіп логикаланады.
Бұл ойын кезінде ағынды болжауға болмайды: құпиялар (сид) және жай-күйлер қорғалған.
12) «Жақсы» дәйектіліктер сынамада бақылауда тұрады
Релизден кейін мониторинг жүргізу маңызды: RTP сертификатталғандарға сәйкес келе ме, символдардың жиілігі дрейфі, қайталаулар, «ыстық» нөмірлер жоқ па.
Табалдырықтар бойынша алерта → тайтлды оқшаулау және техникалық тексеру.
13) Жай-күйі және ағындары - бөлек
Әртүрлі ойындар/үстелдер/инстанциялар RNG тәуелсіз күйін пайдаланады.
Бір ағынды бірнеше өнімге «бөлуге» болмайды - айқаспалы корреляциялар пайда болады.
14) Forward/Backward-security қарағанда маңызды
Ағымдағы күйді бұзғанда жақсы CSPRNG жүйеліліктің өткенін (backtracking resistance) және болашағын (forward security) ашпауы керек.
Бұған криптопримитивтер мен тұрақты reseeding қол жеткізеді.
15) «Provably fair» ауыстырылуға жатпайтынын дәлелдейді
Коммит-ревил (хеш серверлік сида → ашу) + клиенттік сид ойыншыға нәтижені қайта санауға мүмкіндік береді.
Бұл бірізділіктің тұтастығына кепілдік береді, бірақ ойын математикасы мен мэппинг аудитін алмастырмайды.
Нашар бірізділік қалай көрінеді (белгілер)
Бірдей кірістерде нәтижелерді қайталау/nonce →.
Үлкен терезелердегі жиіліктердің тұрақты қисаюы (жеке кластер емес).
DFT-дегі анықталатын кезеңдер, TestU01/BigCrush-дағы «сәтсіздіктер».
Эмпирикалық RTP дрейфі ақылға қонымды көлемдер үшін мәлімделген.
Жақсы бірізділік қандай көрінеді
Сенімді интервалдар шегіндегі тегіс жиілік және сериялылық; p-values біркелкі.
Көршілес және тұрған элементтер арасында корреляциялардың болмауы.
Эмпирикалық RTP/оқиғалар жиілігінің модельге ұқсастығы.
Өнімді бинар мен сертификатталған арасындағы нөлдік айырмашылық (хеш бақылау).
Шағын шпаргалкалар
Студиялар/провайдерлер үшін
Көп арналы энтропиядан CSPRNG + құжатталған reseeding қолданыңыз.
Күйді ағындар/ойындар бойынша бөліңіз; nonce журналын жүргізіңіз.
RTP жиналысына дейін NIST/Dieharder/TestU01, плюс мэппинг массимуляциясын айдаңыз.
Сандық қолтаңбамен мэппинг пен бинарийді белгілеңіз; қол қойылмаған релиздерге тыйым салыңыз.
Өнімдегі дрейф метригіне алерттерді теңшеңіз; оқшаулау және роллбэк жоспары.
Операторлар үшін
Ойынның нұсқалары мен хештерін сертификатталған нұсқалармен салыстырыңыз.
RTP/жиілік/қайталау мониторингі; табалдырықтар мен авто-алерттерді ұстаңыз.
Тикет бойынша жылдам экспорттау мүмкіндігімен өзгермейтін раундтар логтарын сақтаңыз.
Ойыншылар үшін
RTP, ережелер, нұсқасы, max win.
Кластерлерді «айналдырумен» шатастырмаңыз: жолақтар қалыпты.
Дауыста раундтың ID және үзінді сұраңыз - нәтиже ойнатылуы тиіс.
Кездейсоқ RNG тізбегі - бұл тексерілетін қасиеттері бар инженерлік артефакт: тәуелсіздік, дұрыс бөлу, ұзақ мерзім, сауатты сидинг және компрометацияға төзімділік. Ойындарда адалдық сапа ағыны дұрыс мэппингпен және бақылау рәсімдерімен қосылған жерде пайда болады: релизге дейін сертификаттау, логи және кейінгі мониторинг. Үш қабат бір орында тұрғанда, «кездейсоқтық» уәдеден сенімді тәжірибеге айналады.