kauno technologijos universitetas - atsitiktiniai … · web viewaišku, kad sveikųjų skaičių...

52
KAUNO TECHNOLOGIJOS UNIVERSITETAS FUNDAMENTALIŲJŲ MOKSLU FAKULTETAS TAIKOMOSIOS MATEMATIKOS KATEDRA P160D003 TAIKOMOSIOS STATISTIKOS METODAI IR PROGRAMINĖS PRIEMONĖS ATSITIKTINIŲ SKAIČIŲ SEKŲ GENERATORIŲ SAVYBIŲ ANALIZĖ Referatas Atliko: dokt. Aleksejus Michalkovič Priemė: doc. V. Janilionis

Upload: others

Post on 16-Feb-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

KAUNO TECHNOLOGIJOS UNIVERSITETAS

FUNDAMENTALIŲJŲ MOKSLU FAKULTETAS

TAIKOMOSIOS MATEMATIKOS KATEDRA

P160D003 TAIKOMOSIOS STATISTIKOS METODAI IR PROGRAMINĖS

PRIEMONĖS

ATSITIKTINIŲ SKAIČIŲ SEKŲ GENERATORIŲ SAVYBIŲ ANALIZĖ

Referatas

Atliko: dokt. Aleksejus Michalkovič

Priemė: doc. V. Janilionis

KAUNAS, 2010

Page 2: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Turinys1. Atsitiktiniai skaičių generatoriai..............................................................................................................................3

2. Atsitiktinumo testai.................................................................................................................................................4

2.1. Statistiniai testai..............................................................................................................................................4

2.1.1. Pirsono kriterijus.....................................................................................................................................5

2.1.2. Knuto testai..............................................................................................................................................5

2.1.3. DIEHARD testai....................................................................................................................................11

2.1.4. NIST testai.............................................................................................................................................16

2.2. Statistinių testų rezultatų vertinimas..........................................................................................................29

2.3. Grafiniai testai...............................................................................................................................................30

2.3.1. Elementų pasiskirstymo histograma......................................................................................................30

2.3.2. Pasiskirstymas plokštumoje...................................................................................................................30

2.3.3. Serijų testas............................................................................................................................................31

2.3.4. Monotoniškumo testas...........................................................................................................................31

2.3.5. Autokoreliacinė funkcija........................................................................................................................31

2.3.6. Tiesinio sudėtingumo profilis................................................................................................................32

2.3.7. Grafinis spektrų testas............................................................................................................................32

Išvados..........................................................................................................................................................................34

Priedas. Atsitiktinių skaičių generatorių testų programinė realizacija...........................................................................35

2

Page 3: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

1. Atsitiktiniai skaičių generatoriai

Modeliuojant matematinį uždavinį dažnai tenka generuoti atsitiktinius skaičius bei jų sekas naudojant

programines priemones, kurios yra vadinamos atsitiktinių skaičių generatoriais. Jų pagrindinė paskirtis yra

generuoti skaičius ir jų sekas taip, kad sekos nariai būtų nepriklausomi nuo kitų jos narių. Dažniausiai yra

naudojami pseudoatsitiktinių skaičių generatoriai. Esminis šių generatorių skirtumas nuo atsitiktinių skačių

generatorių yra tas, jog sekos nariai yra pasiskirstę pagal tam tikrą skirstinį (tolygųjį, normalųjį ir t.t). Šių

generatorių taikymo įvairovė yra labai plati: nuo informatikos uždavinių iki kosminių ryšių.

Viena iš matematinių sričių, kurioje pseudoatsitiktinių skaičių generatoriai (PASG) yra ypač svarbūs,

yra kriptografija. Šie generatoriai yra viena iš svarbiausių bet kokios informacijos saugos sistemos dalių ir

yra naudojami įvairiems kriptografiniams uždaviniams spręsti bei kriptografiniam saugumui užtikrinti, todėl

jiems yra keliami tokie reikalavimai:

kriptografinis saugumas;

geros statistinės savybės, t.y sugeneruota skaičių seka turi mažai skirtis nuo atsitiktinės sekos;

didelis generuojamos sekos periodas;

efektyvus programinis realizavimas.

Tarkime, kad piktavalis žino fiksuoto ilgio PASG sugeneruotos sekos fragmentą γi γi+1…γ j. Vienas iš

reikalavimų, kad PASG būtų kriptografiškai saugus yra sekančio bito testas (angl. next-bit test). Šio testo

principas yra toks: piktavalis negali suprognozuoti sekančio bito γ j+1 su tikimybe 0,5 per polinominį laiką.

Buvo įrodyta, jog PASG, kuris išlaiko sekančio bito testą, taip pat išlaiko ir kitus per polinominį laiką

realizuojamus statistinius atsitiktinumo testus. Tačiau tenkinantis sekančio bito testą PASG nebūtinai yra

kriptografiškai saugus. Nagrinėkime tokį pavyzdį:

Pavyzdys PASG generuoja skaičiaus π bitus pradedant nuo tam tikro nežinomo bito. Šis generatorius

išlaiko sekančio bito testą, tačiau nėra kriptografiškai saugus, nes turint informaciją koks sekos bitas yra

naudojamas duotuoju laiko momentu, galima surasti visus bitus, kurie buvo sugeneruoti prieš šį bitą.

Taigi matome, kad kriptografiškai saugus PASG turi tenkinti reikalavimą, jog piktavalis negali gauti

sekos narių nuo γ1 iki γ i−1 per polinominį laiką. Taip pat vienas iš reikalavimų kriptografiškai saugiam

algoritmui yra tas, kad šį algoritmą galima būti naudoti generuojant pseudoatsitiktinių skaičių seką. Tai

reiškia, kad šios sekos turi būti testuojamos taikant statistinius atsitiktinumo testus. Dėl šios priežasties

kriptografinį PASG saugumą taip pat galima suformuluoti ir nagrinėjant jo statistines savybes. Tokiu atveju

generatoriaus kriptografinis saugumas yra suprantamas tokiu būdu:

3

Page 4: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

jokie statistiniai atsitiktinumo testai negali aptikti dėsningumo tarp sugeneruotų sekos narių;

jeigu pradinės reikšmės yra atsitiktinės, tai PASG generuoja statistiškai nepriklausomas sekas

PASG, tenkinantis šiuos reikalavimus yra vadinamas statistiškai saugiu.

2. Atsitiktinumo testai

Kadangi bet kokios informacijos saugos sistemos kriptografinis saugumas gali stipriai priklausyti nuo

PASG savybių, yra būtina užtikrinti, jog šio generatoriaus sugeneruotos skaičių sekos būtų atsitiktinės. Tai ir

yra pagrindinis statistinių atsitiktinumo testų tikslas. Taikant šiuos testus yra keliama hipotezė H, jog skaičių

seka yra atsitiktinė. Alternatyvioji hipotezė H a – seka yra neatsitiktinė. Apskaičiuojama skaitinė sekos

charakteristika (ši charakteristika yra vadinama statistika) ir tikimybė pvalue, kuri reiškia tikimybę, jog

idealus atsitiktinių skaičių generatorius gali sugeneruoti seką, kuri būtų mažiau atsitiktinė, negu nagrinėjama

atliekamo testo atžvilgiu. Testas yra išlaikytas, jeigu tikimybė pvalue yra didesnė už fiksuotą pirmos rūšies

klaidos tikimybę α. Dažniausiai yra naudojami šie atsitiktinumo testų rinkiniai:

DIEHARD testai

Knuto testai

NIST testai

DIEHARD testai pirmą karta buvo aprašyti 1995 metais ir šiuo metu manoma, kad šis testų rinkinys

yra vienas iš griežčiausių testų rinkinių. Dažniausiai yra naudojami 12 DIEHARD testų.

Visi Donaldo Knuto testai remiasi Pirsono kriterijumi ir pirmą kartą buvo paskelbti jo monografijoje

„Programavimo menas“ (angl. „The Art Of Computer Programming“) 1969 metais. Taip pat Knutas pasiūlė

kelis originalius algoritmus, kurie žymiai sumažina laiką, kuris yra reikalingas testui naudoti. Šiame darbe

yra nagrinėjami 7 Knuto testai.

NIST testai remiasi statistinėmis atsitiktinių sekų savybėmis. Šiuos testus sukūrė JAV Nacionalinio

standartų ir technologijų instituto (angl. The National Institute of Standards and Technology (NIST))

mokslininkai. Iš viso yra 15 NIST testų.

Tačiau yra ir dar viena atsitiktinių testų grupė – grafiniai testai. Šių testų rezultatai yra pateikiami

grafiškai ir vartotojas turi pats interpretuoti šiuos rezultatus. Iš viso yra 7 grafiniai testai. Vienas iš šių testų

trūkumų yra tai, kad skirtingi vartotojai gali skirtingai interpretuoti tuos pačius rezultatus.

4

Page 5: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

2.1. Statistiniai testai

PASG sugeneruotos skaičių sekos atsitiktinumui nustatyti gali būti taikomi įvairūs statistiniai testai.

Kadangi atsitiktinumas gali būti aprašytas naudojant tikimybių teoriją bei statistiką, tai egzistuoja begalinis

skaičius pačių įvairiausių statistinių testų, kurie įvertina sugeneruotą seką ir pagal nustatytus šablonus gali

pateikti vienareikšmį atsakymą ar ši seka yra atsitiktinė. Taigi bet koks baigtinis statistinių testų rinkinys

negali būti pavadintas „užbaigtu“. Todėl bet kokio statistinio testo rezultatai turi būti interpretuojami taip,

kad galima būtų išvengti neteisingų išvadų apie nagrinėjamo PASG statistines savybes.

Atliekant bet kokį statistinį testą labai svarbu yra pasirinkti tinkamą statistiką. Kadangi statistika yra

atsitiktinis dydis, tai ji yra pasiskirsčiusi pagal tam tikrą skirstinį. Tai reiškia, jog galima nustatyti griežtą

matematinę taisyklę (kuri vadinama kriterijumi), kuri pateikia vienareikšmį atsakymą ar hipotezė H 0 yra

priimtina.

2.1.1. Pirsono kriterijus

Vienas iš dažniausiai taikomų kriterijų hipotezei apie skirstinio funkciją tikrinti yra chi-kvadrato ( χ2)

kriterijus. Taikant šį kriterijų atsitiktinio dydžio X stebėjimų imtį (X1 , X2 ,…, Xn) skaidome į k intervalų.

Tegu pi – teorinė tikimybė, kad stebėjimas priklauso i-tajam intervalui, o Y i – stebėjimų, kurie priklauso i-

tajam intervalui skaičius. Tada statistikos

χ2 (obs )=∑i=1

k (Y i−np i )2

n pi

reikšmė turi būti mažesnė už chi-kvadrato skirstinio su k-1 laisvės laipsniu α kvantilį χα , k−12 .

Šį kriterijų Donaldas Knutas panaudojo aprašant savo atsitiktinumo testų rinkinį. Taip pat šį kriterijų

naudoja ir kai kurie DIEHARD bei NIST testai.

2.1.2. Knuto testai

Knuto testų rinkinį sudaro testai, kurie yra tradiciškai naudojami PASG statistinių savybių analizei.

Šiame skyrelyje paminėsime dažniausiai naudojamus Knuto testus.

5

Page 6: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

2.1.2.1. Nesikertančių serijų testas

Šio testo tikslas yra nustatyti bitų sekos atsitiktinumą analizuojant nesikertančių serijų ilgius. Šis testas

gali būti naudojama kai sugeneruojama sveikųjų skaičių arba bitų seka.

Tarkime turime dvejetainę seką ε=ε1 ε2…ε n. Šią seką suskaidome į nesikertančias serijas, kurių ilgis

yra m (jeigu paskutinės serijos ilgis yra mažesnis už m, tai ji yra išmetama). Nesikertančių serijų dažnius

žymėkime νi1 i2…im. Apskaičiuojame statistiką

χ2 (obs )=∑ν i1i2…im

(νi1 i2…im−[ nm ] ∙ 12m )

2

[ nm ] ∙ 12m

Testas yra išlaikytas, jeigu šios statistikos reikšmė yra mažesnė už χα , 2m−12 prie fiksuoto rekšmingumo

lygmenio α.

Tarkime turime sveikųjų skaičių seką ε=ε1 ε2…ε n. Tokiu atvėju kiekvienai sveikųjų skaičių porai

(q ,r ) (kategorijai), čia 0≤q , r ≤d, o skaičius d pasirenkamas taip, kad galiotų nelygybė n≥5d2,

apskaičiuojame dažnį νqr. Apskaičiuojame statistiką

χ2 (obs )=∑ν i1i2…im

(νqr−[ n2 ] ∙ 1d2 )

2

[ n2 ] ∙ 1d2

Testas yra išlaikytas, jeigu šios statistikos reikšmė yra mažesnė už χα , d2−12 prie fiksuoto reikšmingumo

lygmenio α.

Aišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir

t.t. Tačiau, kadangi taikant Pirsono kriterijų skaičius n turi būti pakankamai didelis lyginant su k, tai tokiu

atveju skaičiaus d reikšmę reikėtų mažinti tam, kad kategorijų skaičius nebūtų per didelis. Dėl šios

priežasties, kai serijos dydis yra didesnis už 3 taikomi kiti kriterijai.

Pavyzdys Įvestis: bitų seka ε=11001001000011111101101010100010001000010110100011,

sekos ilgis n=50, serijos ilgis m=3.

Testas: Suskaidome nagrinėjamą seką į serijas:

ε=110010 010 000 111111 011010101 000 100 010 000 101101 00011

6

Page 7: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Matome, kad paskutinės serijos ilgis yra 2. Taigi šios serijos nenagrinėjame. Apskaičiuojame

kiekvienos serijos dažnį:

ν000=4 ν001=0 ν010=4 ν011=1

ν100=1 ν101=3 ν110=1 ν111=2

Statistikos reikšmė χ2 (obs )=8. Kadangi χ0,05 ;72 =14,07, tai testas yra išlaikytas, kai reikšmingumo

lygmuo α=0,05.

2.1.2.2. Intervalų testas

Intervalų testas tikrina ar sugeneruotos sekos simboliai yra pasiskirstę tolygiai. Testo tikslas yra

pasiekiamas atliekant posekių, kurių elementai priklauso fiksuotam intervalui, ilgių analizę. Nemažindami

bendrumo tarkime, kad visi sekos ε=ε1 ε2…ε n nariai yra tarp 0 ir 1.

Atsitiktinai pasirenkame du skaičius α ir β tokius, kad 0≤α<β ≤1. Skaičius p=β−α yra tikimybė, kad

sekos narys ε i∈ ¿. Išskirkime nagrinėjamos sekos posekį ε '=ε j ε j+1…ε j+ r taip, kad paskutinis posekio narys

ε j+ r∈ ¿, o likusieji posekio nariai ε s∉¿. Ši posekį vadinsime intervalu, kurio ilgis yra r. Kiekvienam skaičiui

r nuo 0 iki t=max r apskaičiuojame dažnį νr (kiek nagrinėjama seka turi ilgio r intervalų). Apskaičiuojame

statistiką (η – bendras intervalų skaičius)

χ2 (obs )=∑i=1

t−1 (νi−η p (1−p )i )2

η p (1−p )i+

(ν t−η (1−p )t )2

η (1−p )t

Testas yra išlaikytas, jeigu šios statistikos reikšmė yra mažesnė už χα , t2 prie fiksuoto rekšmingumo

lygmenio α.

Naudojant intervalų testą dažnai pasirenkamos reikšmės α=0 arba β=1. Atsikirais atvėjais

(α ; β )=(0 ;0,5) ir (α ; β )=(0,5 ;1) sakoma, kad testuojamas „nukrypimas nuo vidurkio“.

Šio testo trūkumas yra tai, kad neatsitiktinė seka gali turėti per mažai intervalų ir dėl to testas gali būti

neefektyvus.

Pavyzdys: Įvestis: ε=(0 ;0,625; 0,5;0,125 ;0 ;0,5 ;0,75 ;0,125), α=0, β=0,25.

Testas: Ši seka turi 2 nulinio ilgio intervalus (šie intervalai yra pastorinti) ir 2 intervalus, kurių ilgis yra

r=2. Taigi turime tokius dažnius: ν0=2, ν1=0 ir ν2=2. Iš viso turime 4 intervalus.

7

Page 8: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Statistikos reikšmė χ2 (obs )=3,111. Kadangi χ0,05 ;22 =5,99, tai testas yra išlaikytas, kai reikšmingumo

lygmuo α=0,05.

2.1.2.3. Kombinacijų testas

Šis testas nagrinėja ar sugeneruotos sekos elementai yra tolygiai pasiskirstę, analizuodamas įvairias

elementų kombinacijas posekiuose.

Tarkime turime skaičių seką ε=ε1 ε2…ε n. Kiekvieną sekos narį sudaro m bitų. Šią seką suskaidome į

vienodo ilgio posekius (šį ilgį žymėkime t). Likusių bitų nenagrinėjame. Posekių, kuriuose skirtingų

elementų skaičius yra lygus i, skaičių žymėkime νi (r=max i). Apskaičiuojame statistiką

χ2 (obs )=∑i=1

r (ν i−[nt ] ∙ pi)2

[ nt ] ∙ pi

čia pi=d (d−1 )…(d−i+1)

dk {ki } – tikimybė kad posekį sudaro i skirtingų elementų , d=2m−1, o {ki } –

Stirlingo skaičiai, kurie yra apibrėžiami taip:

{ab}={1 , kaia=b arbab=1 ir a>00 , kai b=0arbaa<b

b {a−1b }+{a−1

b−1}, kitaip

Testas yra išlaikytas, jeigu statistikos reikšmė yra mažesnė už χα , r−12 prie fiksuoto rekšmingumo

lygmenio α. Kai t=5 testo idėja primena pokerio žaidimą, todel kartais šį testą vadina pokerio testu (arba

pokerio kriterijumi)

Kadangi tikimybės pi yra labai mažos kai i=1 arba i=2, tai kartais šiuos dažnius apjungia su kitais į

vieną bendrą rezultatą (pvz ν123 ar pan.).

2.1.2.4. Kuponų testas

Šis testas nagrinėja ar sugeneruotos sekos elementai yra tolygiai pasiskirstę, analizuodamas įvairias

elementų kombinacijas posekiuose.

8

Page 9: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Tarkime turime skaičių seką ε=ε1 ε2…ε n. Kiekvieną sekos narį sudaro m bitų. Formuojami ilgio r,

r=2m ,t (t=max r) posekiai, kuriuos sudaro pilnas skaičių nuo 0 iki 2m−1 rinkinys. Kiekvienam posekiui

apskaičiuojamas dažnis νr. Apskaičiuojame statistika

χ2 (obs )=∑i=1

r (ν i−s ∙ pi )2

s ∙ pi

čia s=∑j=d

t

ν j , pr=d !dr {r−1

d−1}, r=d ,(t−1), pt=1− d!d t−1 {t−1

d }, d=2m−1.

Testas yra išlaikytas, jeigu statistikos reikšmė yra mažesnė už χα , t−2m+12 prie fiksuoto rekšmingumo

lygmenio α.

Kuponų testas yra specifinis, nes jis atlieka ne visos sekos, o t ilgio rinkinių analizę. Šį testą lengvai

gali išlaikyti bet koks PASG, jeigu šio generatoriaus sugeneruotos sekos bet kokiam d ilgio posekiui galioja

savybė, kad kiekvienam skaičiui iš intervalo [0 ;d−1] tikimybė priklausyti posekiui yra artima 1.

2.1.2.5. Kėlinių testas

Testas nagrinėja sekos elementų tolygiškumą, atlikdamas skaičių tarpusavio padėties (t.y ε i<ε j<…<ε k

) posekiuose analizę.

Tarkime turime skaičių seką ε=ε1 ε2…ε n. Kiekvieną sekos narį sudaro m bitų. Šią seką suskaidome į

vienodo ilgio posekius (šį ilgį žymėkime t). Likusių bitų nenagrinėjame. Kievienas posekis turi lygiai t !

skirtingų skaičių tarpusavio padėties variantų. Kiekvienai skaičių tarpusavio padėčiai apskaičiuojamas

dažnis νi , i=1 ,t ! ir apskaičiuojama statistika

χ2 (obs )=∑i=1

t ! (ν i−[ nt ] ∙ 1t ! )

2

[ nt ] ∙ 1t !

Testas yra išlaikytas, jeigu statistikos reikšmė yra mažesnė už χα , t !−12 prie fiksuoto rekšmingumo

lygmenio α.

Pavyzdys Įvestis: ε=35 4 21 46 1 0, sekos ilgis n=9, posekio ilgis t=2.

Testas: Suskaidome seką į posekius. Paskutinio skaičiaus nenagrinėjame. Kiekvienai skaičių

tarpusavio padėčiai apskaičiuojame dažnį. Šiuo atveju turime 2 !=2 variantus:

9

Page 10: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

ν1 ( pirmasskai č iusmažesnis už antrąjį )=2

ν2 ( pirmasskai č ius didesnis už antrąjį )=2

Statistikos reikšmė χ2 (obs )=0. Kadangi χ0,05 ;12 =3,84, tai testas yra išlaikytas, kai reikšmingumo

lygmuo α=0,05.

2.1.2.6. Monotoniškumo testas

Monotoniškumo testas tikrina ar nagrinėjamos sekos elementai yra pasiskirstę tolygiai, atlikdamas

nedidėjimo arba nemažėjimo atkarpų analizę.

Tarkime turime skaičių seką ε=ε1 ε2…ε n. Ilgio i monotoninių atkaipų skaičių žymėkime νi (t=max i).

Apskaičiuojame statistiką (bendrą atkarpų skaičių žymėkime η)

χ2 (obs )=∑i=1

t (ν i−η ∙( 1i !

− 1(1+i )! ))

2

η ∙( 1i !

− 1(1+i )! )

Testas yra išlaikytas, jeigu statistikos reikšmė yra mažesnė už χα , t−12 prie fiksuoto rekšmingumo

lygmenio α.

Pavyzdys Įvestis: ε=35 4 21 46 1 0

Testas: nedidėjimo intervalai: ε=|3|5 4 21|4|6 1 0. Taigi turime tokius dažnius:

ν1=2 ν2=0 ν3=1 ν4=1

Bendras atkarpų skaičius η=4.

Statistikos reikšmė χ2 (obs )=4,65. Kadangi χ0,05 ;32 =7,82, tai testas yra išlaikytas, kai reikšmingumo

lygmuo α=0,05.

2.1.2.7. Koreliacijos testas

Šis testas tikrina nagrinėjamos sekos elementų nepriklausomumą.

10

Page 11: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Tarkime turime skaičių seką ε=ε 0 ε1…εn−1. Įveskime žymėjimus shif t j (εi )=ε ( i+ j)mod n s=∑j=0

n−1

ε j,

S=∑j=0

n−1

ε j2. Apskaičiuojame statistiką

C j=n ∙∑

i=0

n−1

[εi ∙ shif t j(εi) ]−s2

nS−s2

Šios statistikos reikšmė bet kokiai j reikšmei turi priklausyti intervalui

[ −1n−1

−2,43σn ;−1

n−1+2,43σn]

čia σ n2= n2

(n−1 )2(n−2) .

Pavyzdys Įvestis: ε=1323 2, sekos ilgis n=2, j=2.

Testas: Statistikos reikšmė C2=1, σ 52=0,52. Kadangi statistikos reikšmė patenka į intervalą

[−2,002 ;1,502 ], tai testas yra išlaikytas.

2.1.2.8. Knuto testų trūkumai

Nors Knuto testai yra pakankamai greiti jų esminiai trūkumai yra šie:

Testai neturi rekomenduojamų parametrų reikšmių, todėl kai kurių testų rezultatai gali

priklausyti nuo nagrinėjamos sekos ilgio.

Testai neturi programinės realizacijos

2.1.3. DIEHARD testai

DIEHARD testų rinkinys buvo pasiūlytas Dž. Marsaljos 1995 metais. Šiuos testus Marsalja naudojo

kongruentinių generatorių statistinėms savybėms tirti.

2.1.3.1. Tarpų tarp gimtadienių testas

11

Page 12: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Šio testo tikslas yra analizuojant intervalų tarp „gimtadienių“ ilgius nustatyti ar nagrinėjamos sekos

elementai yra pasiskirstę tolygiai.

Tarkime turime skaičių seką ε=ε1 ε2…ε n. Kiekvieną sekos elementą sudaro m bitų. Šios sekos

elementus surūšiuokime nemažėjimo tvarka. Taip gauname gimtadienių seką Y= y1 y2… yn. Suformuokime

tarpų tarp gimtadienių seką W= y1− y2 , y3− y2 ,…, yn− yn−1 , y1+2m− yn. Žymėkime ni tarpų, paskartojančių

sekoje i (i=0 , n) kartų, skaičių. Apskaičiuojame statistiką

χ2 (obs )=∑i=0

k (ni−npi )2

n p i

čia pi=λi e− λ

i !, λ= n3

4 ∙2m .

Testas yra išlaikytas, jeigu statistikos reikšmė yra mažesnė už χα , k2 prie fiksuoto rekšmingumo

lygmenio α.

Šio testo esminis trūkumas yra tas, kad jį yra sunku taikyti didelio ilgio sekoms. Taip yra todėl, kad

parametro λ reikšmė turi būti artima 1 (kitaip testo rezultatas bet kuriai sekai pasidaro neigiamas, nes

tikimybės pi tokiu atvėju artėja į 0), o tai reiškia kad pasirinkti parametrų n ir m reikšmes yra pakankamai

sunku, nes parametro n reikšme priklauso tik nuo parametro m reikšmės. Iš žemiau pateiktos lentelės galime

matyti, kad tokia priklausomybė tarp parametrų n ir m žymiai sumažina testuojamos sekos dydį.

1 lentelė. Parametrų n, m ir λ tarpusavio priklausomybė

m 8 16 25 32

n 16 64 512 4096

λ 2 2 1 4

Dėl šių apribojimų programa DIEHARD atlikdama šį testą tikrina tik pirmuosius 500 32 bitų skaičius

(o tiksliau šių skaičių 24 bitų rinkinius: 1-24, 2-25, ..., 9-32). Minimalus testuojamos sekos ilgis yra 16000

baitų.

2.1.3.2. Susikertančių kėlinių testas

Šis testas tikrina sekos elementų tolygiškumą analizuodamas m ilgio rinkinių dažnius sekoje.

12

Page 13: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Tarkime turime skaičių seką ε=ε1 ε2…ε n. Kiekvieną sekos elementą sudaro m bitų. Šią seką

suskaidome į N=[ n−1k−1 ] susikertančių rinkinių. Kiekvieną rinkinį sudaro k skaičių. Likusieji skaičiai

nenagrinėjami. Kiekvienas rinkinys turi lygiai k ! skirtingų skaičių išsidėstymo (<, >) galimybių (būsienų).

Teatas nenagrinėja rinkinių, kurių bet kokie du elementai yra lygūs (daroma prielaida, kad tokio įvykio

tikimybė yra pakankamai maža ir neįtakoja testo rezultato). Apskaičiuojame kiekvienos būsienos dažnį νi ir

statistiką

χ2 (obs )=∑i=1

k ! (ν i−Nk ! )

2

Nk !

Testas yra išlaikytas, jeigu statistikos reikšmė yra mažesnė už χα , k !−12 prie fiksuoto rekšmingumo

lygmenio α.

DIEHARD sistemoje analizuojama seka yra skaidoma į du posekius, kurios sudaro 1 000 000

susikertančių kėlinių po penkis 32 bitų skaičių. Taigi minimalus nagrinėjamos sekos ilgis yra 32 000 008

baitai.

2.1.3.3. Matricų rangų testai

Testų tikslas yra nustatyti, ar nagrinėjamos sekos nariai yra pasiskirstę tolygiai analizuojant skirtingų

rangų matricas.

Tarkime turime skaičių seką ε=ε1 ε2…ε n. Kiekvieną sekos elementą sudaro m bitų. Šią seką

pavazduojame N=[ nQR ] dvejetainių Q×R formato matricų pavidalu. Likusieji nariai nenagrinėjami. Šią

procedūrą pavaizduosime tokiu pavyzdžiu:

Pavyzdys Įvestis: ε=A25Ch24B1h E923h

Šios sekos dvejetainis pavidalas yra:

ε=1010 0010 01011100 00100100 10110001 11101001 0010 0011

Kiekvieną šios sekos skaičių pavaizduokime ketvirtos eilės matricos pavidalu:

13

Page 14: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

A25Ch=(1 0 1 00 0 1 00 1 0 11 1 0 0

),

24 B1h=(0 0 1 00 1 0 01 0 1 10 0 0 1

),

E923h=(1 1 1 01 0 0 10 0 1 00 0 1 1

)Apskaičiuojame gautų matricų rangus. Rango i (i=1 ,min(Q ,R)) matricų skaičių žymėkime νi.

Apskaičiuojame statistiką

χ2 (obs )= ∑i=1

min(Q, R) (ν i−N p i )2

N p i

pi=2i (Q+R−i)−QR∏j=0

i−1 (1−2 j−Q ) (1−2 j−R )1−2 j−i

Testas yra išlaikytas, jeigu statistikos reikšmė yra mažesnė už χα , min(Q ,R )−12 prie fiksuoto rekšmingumo

lygmenio α.

DIEHARD sistemoje yra realizuoti 3 šio testo variantai:

32 eilės matricų rangų testas. 32 bitų skaičių seka yra nagrinėjama kaip 40 000 matricų.

Matricos yra formuojamos taip: imami 32 skaičių rinkiniai, kurie vaizduojami dvejetainių

pavidalu. Tada pirmojo skaičiaus dvejetainė išraiška yra pirmoji matricos eilutė, antrojo

skaičiaus – antroji eilutė ir t.t. Analizuojami šie matricos rangai: 32, 31, 30 ir ≤29. Minimalus

sekos ilgis yra 5 120 000 baitų.

31 eilės matricų rangų testas. 32 bitų skaičių seka yra nagrinėjama kaip 40 000 matricų.

Matricos yra formuojamos taip: imami 32 skaičių rinkiniai, kurie vaizduojami dvejetainių

pavidalu. Tada pirmojo skaičiaus pirmieji 31 bitai yra pirmoji matricos eilutė, antrojo skaičiaus

pirmieji 31 bitai – antroji eilutė ir t.t. Analizuojami šie matricos rangai: 31, 30, 29 ir ≤28.

Minimalus sekos ilgis yra 5 120 000 baitų.

6×8 matricų rangų testas. 32 bitų skaičių seka yra nagrinėjama kaip 100 000 matricų.

Matricos yra formuojamos taip: imami 6 skaičių rinkiniai, kurie vaizduojami dvejetainių

pavidalu. Tada pirmojo skaičiaus pirmieji 8 bitai yra pirmoji matricos eilutė, antrojo skaičiaus

pirmieji 8 bitai – antroji eilutė ir t.t. Analizuojami šie matricos rangai: 6, 5 ir ≤4. Minimalus

sekos ilgis yra 2 400 000 baitų.

2.1.3.4. Beždžionės testai

14

Page 15: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Šių testų tikslas yra nustatyti, ar nagrinėjamos sekos nariai yra pasiskirstę tolygiai atsižvelgiant į

nepriklausančius sekai posekius. Testai turi tokį pavadinimą, nes Marsalja pasiūlė žiūrėti į generatorių kaip į

beždžionę, kuri spaudo spausdinimo mašinos klavišus, ir analizuoti praleistų žodžių kiekį gautoje sekoje.

Tarkime turime skaičių seką ε=ε1 ε2…ε n. Kiekvieną sekos elementą sudaro m bitų. Šią seką

pertvarkome į eilutę ε ¿, kurią sudaro N žodžių. Kiekvieną žodį sudaro k raidžių po l bitų (raidės ir žodžiai

pradinėje sekoje nebūtinai eina tokią pačią tvarką). Praleistų žodžių skaičius yra aproksimuojamas

normaliuoju skirstiniu su parametrais

μ=2kl eN2kl

σ=√∑i1=1

2l

∑i2=1

2l

…∑ik=1

2l

cov (ni1, ni2

,…,nik)

ni={ 1 , jei raidė 2i priklauso žodžiui0 , jei raidė2i nepriklauso žodžiui

Kadangi σ skaičiavimas yra pakankamai sudėtingas, praktikoje naudoja eksperimentiškai gautas

parametro reikšmes.

DIEHARD sistemoje yra realizuoti 4 šio testo variantai:

Bitų srauto testas. Seką ε=ε1 ε2…ε n pavaizduokime bitų seka b=b1b2…b32 n. Gautą seką b

pertvarkome į eilutę, kurią sudaro 20 raidžių (viena raidė – vienas bitas) susikertantys žodžiai.

Eilutė turi tokį pavidalą:

b¿=b1b2…b20b2b3…b21…b32 n−19b32n−18b32n

Šią eilutę sudaro 221 susikertantys 20 raidžių žodžiai. Praleistų žodžių skaičius

aproksimuojamas normaliuoju skirstiniu su parametrais μ=141909 ir σ=428. Testas

kartojamas 20 kartų. Minimalus sekos ilgis yra 5 242 800 baitų.

Susikertančių porų testas. Iš kiekvieno pradinės sekos skaičiaus imame po 10 bitų (viena

raidė) ir formuojame 2 raidžių žodžius. Eilutėje, kurią sudaro 221 susikertančių 20 raidžių

žodžių, praleistų žodžių skaičius aproksimuojamas normaliuoju skirstiniu su parametrais

μ=141909 ir σ=209. Testas kartojamas 23 kartus. Minimalus sekos ilgis yra 8 388 612 baitų.

Susikertančių ketvertų testas. Iš kiekvieno pradinės sekos skaičiaus imame po 5 bitus (viena

raidė) ir formuojame 4 raidžių žodžius. Eilutėje, kurią sudaro 221 susikertančių 20 raidžių

žodžių, praleistų žodžių skaičius aproksimuojamas normaliuoju skirstiniu su parametrais

μ=141909 ir σ=339. Testas kartojamas 28 kartus. Minimalus sekos ilgis yra 8 388 620 baitų.

15

Page 16: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Susikertančių dešimtukų testas. Iš kiekvieno pradinės sekos skaičiaus imame po 2 bitus

(viena raidė) ir formuojame 10 raidžių žodžius. Eilutėje, kurią sudaro 221 susikertančių 20

raidžių žodžių, praleistų žodžių skaičius aproksimuojamas normaliuoju skirstiniu su

parametrais μ=141909 ir σ=339. Testas kartojamas 31 kartus. Minimalus sekos ilgis yra

8 388 644 baitai.

2.1.3.5. Vienetų testas

Šių testų tikslas yra nustatyti, ar nagrinėjamos sekos nariai yra pasiskirstę tolygiai remiantis baitų,

turinčių skirtingą vienetų skaičių, analize.

Tarkime turime seką ε=ε1 ε2…ε n, kurios elementai yra m bitų skaičiai. Šią seką pavaizduokime baitų

seka b=b1b2…b4 n. Įveskime tokius žymėjimus:

2 lentelė. Įvykių žymėjimai ir jų tikimybės

Žymėjimas Vienetų skaičius Tikimybė

A 0 – 2 37/256

B 3 56/256

C 4 70/256

D 5 56/256

E 6 – 8 37/256

Seką b pavaizduokime eilute, kurią sudaro k-raidžiai žodžiai. Kiekvienam tipui (pvz. AAA, AAB ir t.t

iki EEE) apskaičiuokime dažnį νik , i=1 ,5k. Apskaičiuojame statistiką

χ2 (obs )=∑i=1

5k (νik−N p ik )2

N p ik −∑

i=1

5k−1 (ν ik−1−N p i

k−1)2

N pik−1

Testas yra išlaikytas, jeigu statistikos reikšmė yra mažesnė už χα , 5k−5k −12 prie fiksuoto rekšmingumo

lygmenio α.

DIEHARD sistemoje naudojami šie parametrai: N=256 000 ir k=5. Minimalus sekos ilgis yra 1 024

001 baitas.

Kartais yra naudojama šio testo modifikacija. Tokiu atveju iš kiekvieno skaičiaus yra pasirenkami 8

bitai, kurie yra naudojami sudarant žodžius. Testas yra kartojamas 25 kartus. Jeigu statistikos reikšmė yra

16

Page 17: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

mažesnė už χα , 72 prie fiksuoto rekšmingumo lygmenio α, testas yra išlaikytas. Minimalus sekos ilgis yra

4 096 004 baitai.

2.1.3.6. DIEHARD testų trūkumai

Galima išskirti šiuo DIEHARD sistemos trūkumus:

Testų parametrai yra griežtai fiksuoti, o tai reiškia, kad nepriklausomai nuo failo dydžio yra

nagrinėjamas fiksuotas duomenų kiekis.

Dauguma testų remiasi eksperimentų rezultatais, o ne teoriniais skaičiavimais.

2.1.4. NIST testai

NIST testai remiasi tuo, jog PASG turi tenkinti šios 3 esminius principus:

Tolygiškumas. Kiekvienas sugeneruotos sekos bitas gali įgyti reikšmę 0 arba 1 su tikimybe 0.5

Tikėtinas nulių (arba vienetų) skaičius sekoje turi būti n2 kai sekos ilgis yra n.

Vientisumas. Kadangi bet koks testas gali būti taikomas ne tik visai sekai, bet ir bet kokiam

šios sekos posekiui, tai bet kuris atsitiktinės sekos posekis taip pat turi būti atsitiktinis, t.y

privalo išlaikyti visus atsitiktinumo testus

Pilnumas. Negalima prieiti vienareikšmių išvadų apie PASG statistines savybes atlikus tik

vienos sekos analizę. Taip pat kadangi PASG sugeneruoti duomenys priklauso nuo pradinių

sąlygų, negalima prieiti vienareikšmių išvadų apie PASG statistines savybes atlikus duomenų

analizę tik prie tam tikrų fiksuotų pradinių sąlygų.

2.1.4.1. Dažnių testas

Testas tikrina 0 ir 1 pasiskirstymo sekoje tolygiškumą.

Tarkime turime dvejetainę seką ε=ε1 ε2…ε n. Apskaičiuokime skirtumą Sn tarp vienetų ir nulių

skaičiaus (atitinkamai n1 ir n0) sekoje

Sn=n1−n0

17

Page 18: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Apskaičiuojame statistiką

s (obs )=|Sn|√n

ir tikimybę pvalue

pvalue=erfc ( s (obs )√2 )

erfc ( x )= 2√ π∫x

e−u2

du

Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Rekomenduojamas sekos ilgis – 100 bitų.

2.1.4.2. Dažnių testas posekiuose

Testas tikrina 0 ir 1 pasiskirstymo sekos posekiuose tolygiškumą.

Tarkime turime dvejetainę seką ε=ε1 ε2…ε n. Šią seką suskaidome į N=[ nM ] nesikertančių M bitų

posekių. Likusieji bitai nenagrinėjami. Apskaičiuokime, kokia dalį kiekviename posekyje sudaro vienetai:

π i=∑j=1

M

εM ( i−1)+ j

M

Apskaičiuojame statistiką

χ2 (obs )=4 M∑i=1

M

(π i−0,5 )2

ir tikimybę pvalue

pvalue=igamc( N2 , χ2 (obs )

2 )igamc (a , x )=1−

Γ x (a)Γ (a)

Γ x ( a )=∫0

x

t p−1e−t dt Γ (a )=∫0

t p−1 e−tdt

18

Page 19: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

FunkcijaΓ (a ) yra vadinama pilnąja gama funkciją (arba tiesiog gama funkcija), o funkcija Γ x (a )

vadinama nepilnąja gama funkcija.

Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Rekomenduojamas sekos ilgis – 100 bitų. Taip pat

turi galioti šie sąryšiai: n>MN , M≥20, M>0,01n, N<100.

Pavyzdys Įvestis:

ε=110010010000111111011010101000 1000100001 0110100011

00001000110100110001 0011000110 01100010100010111000

Sekos ilgis n=100, M=10.

Testas: Suskaidome seką į N=[10010 ]=10 posekių (šie posekiai yra išskirti tarpais). Turime tokias π i

reikšmes:

π1=0,4 π2=0,7 π3=0,4 π4=0,3 π5=0,5

π6=0,3 π7=0,4 π8=0,4 π9=0,4 π10=0,4

Statistikos reikšmė χ2 (obs )=7.2, o tikimybė pvalue=0,706438. Kadangi pvalue>0,01, testas yra

išlaikytas.

2.1.4.3. Skylių testas

Bloku vadiname sekos posekį, sudarytą tik iš vienetų, o skyle – posekį, sudarytą tik iš nulių. Šio testo

tikslas yra nustatyti, ar nuliai ir vienetai yra pasiskirstę tolygiai sekoje remiantis skylių analizę.

Tarkime turime dvejetainę seką ε=ε1 ε2…ε n. Prieš taikydami testą apskaičiuokime, kokią dalį sekos

sudaro vienetai:

π=∑j=1

n

ε j

n

Jei π> 2√n , testas yra neišlaikytas. Priešingu atvėju apskaičiuojame statistiką (blokų ir skylių kiekis)

νn (obs )=∑k=1

n−1

r (k )+1

19

Page 20: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

čia r (k )={1 , jei εk=εk+1

0 , jei ε k≠ε k+1.

ir tikimybę pvalue:

pvalue=erfc ¿

Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Rekomenduojamas sekos ilgis – 100 bitų.

Pavyzdys Įvestis:

ε=110010010000111111011010101000 1000100001 0110100011

00001000110100110001 0011000110 01100010100010111000

Sekos ilgis n=100.

Testas: Statistikos π reikšmė yra π=0,42>0,2. Statistika ν100=52, o tikimybė pvalue=0,50079. Kadangi

pvalue>0,01, testas yra išlaikytas.

2.1.4.4. Blokų testas posekiuose

Testo tikslas yra nustatyti, ar nuliai ir vienetai yra pasiskirstę tolygiai sekoje remiantis blokų

posekiuose analizę.

Tarkime turime dvejetainę seką ε=ε1 ε2…ε n. Šią seką suskaidome į N=[ nM ] nesikertančių M bitų

posekių. Parametro M reikšmė pasirenkama iš 3 lentelės. Likusieji bitai nenagrinėjami.

3 lentelė. Santykis tarp minimalaus sekos ilgio ir parametro M

minn 128 6772 750 000

M 8 128 104

Posekių, kuriuose maksimalus bloko ilgis yra l, skaičių priskirkime vienai iš kategorijų, kurios yra

pavaizduotos 4 lentelėje.

4 lentelė. Posekių pasiskirstymai į kategorijas priklausomai nuo didžiausio bloko ilgio

νi M=8 M=128 M=104

ν0 l ≤1 l ≤4 l ≤10

20

Page 21: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

ν1 l=2 l=5 l=11

ν2 l=3 l=6 l=12

ν3 l ≥4 l=7 l=13

ν4 l=8 l=14

ν5 l ≥9 l=15

ν6 l ≥16

Apskaičiuojame statistiką

χ2 (obs )=∑i=1

K (ν i−N π i )2

N π i

ir tikimybę pvalue

pvalue=igamc( K2 , χ2 (obs )

2 )Parametro K reikšme yra pasirenkama iš 5 lentelės, o parametro π – iš 6 lentelės

5 lentelė. Santykis tarp minimalaus sekos ilgio ir parametro M

M 812

8104

K 3 5 6

6 lentelė. Parametro π i priklausomybė nuo parametrų M ir νi

M=8

ν0 ν1 ν2 ν3

0,2148 0,3672 0,2305 0,1875

M=128

ν0 ν1 ν2 ν3 ν4 ν5

0,1174 0,2430 0,2493 0,1752 0,1027 0,1124

M=104

ν0 ν1 ν2 ν3 ν4 ν5 ν6

0,0882 0,2092 0,2483 0,1933 0,1208 0,0675 0,0727

Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Rekomenduojamas sekos ilgis – 128 bitai21

Page 22: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

2.1.4.5. Matricų rangų testai

Testų tikslas yra nustatyti, ar nagrinėjamos sekos nariai yra pasiskirstę tolygiai analizuojant skirtingų

rangų matricas.

Tarkime turime dvejetainę skaičių seką ε=ε1 ε2…ε n. Kiekvieną sekos elementą sudaro m bitų. Šią

seką pavazduojame N=[ nMR ] dvejetainių M×R formato matricų pavidalu. Likusieji nariai nenagrinėjami.

Apskaičiuojame matricų rangus. Sugrupuokime matricas į tris grupes pagal jų rangą: M rango matricas (jų

kiekį žymėkime FM), (M−1) rango matricas (FM−1) ir mažesnio rango matricas (jų kiekis yra

F≤M=N−FM−FM−1). Apskaičiuojame statistiką

χ2 (obs )=(FM−0,2888 N )2

0,2888N +(FM−1−0,5776 N )2

0,5776N +(F≤M−0,1336 N )2

0,1336 N

ir tikimybę pvalue

pvalue=igamc(1, χ2 (obs )

2 )Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Rekomenduojamas sekos ilgis –38 ∙M ∙R bitų.

2.1.4.6. Spektrų testas

Testo tikslas yra nustatyti ar nuliai ir vienetai nagrinėjamoje sekoje yra pasiskirstę tolygiai remiantis

sekos diskrečiosios Furjė transformacijos amplitudžių analize.

Tarkime turime dvejetainę skaičių seką ε=ε1 ε2…ε n. Naudojant vaizdavimą

f ( x )={ 1 , jei x=1−1 , jei x=0

nagrinėjamą seką pertvarkome į seką x=x1 x2…xn ir atliekame sekos x diskrečiąją Furjė

transformaciją

S=DFT ( x )=∑n=1

xk (cos(2πjL

(k−1))+sin( 2πjL )(k−1))

22

Page 23: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Tegu S ' yra sekos S posekis, kurį sudaro pirmieji n2 sekos S elementai. Kiekvienam posekio S '

elementui suraskime jo modulį M i. Taip gauname DFT amplitudžių seką. Raskime sekos M elementų,

mažesnių už √3n, kiekį N. Apskaičiuojame statistiką

d= N−0,425n√0,95 ∙0,025n

ir tikimybę pvalue

pvalue=erfc (|d|√2 )Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Rekomenduojamas sekos ilgis – 1000 bitų.

2.1.4.7. Susikertančių šablonų testas

Testo tikslas yra nustatyti, ar nuliai ir vienetai yra pasiskirstę tolygiai sekoje remiantis iš anksto

nustatytų šablonų analizę.

Tarkime turime dvejetainę seką ε=ε1 ε2…ε n. Šią seką suskaidome į N=[ nM ] nesikertančių M bitų

posekių. Likusieji bitai nenagrinėjami.

Posekių, kuriuose šablonas sutinkamas i (i=0 , K ,) kartų, kiekį žymėkime νi. K – laisvės laipsnių

kiekis (šiai kategorijai priskiriame visas sekas, kuriose šablonas sutinkamas K arba daugiau kartų). Šablonų

paieška vykdoma taip: nagrinėjant j-ąjį sekos posekį ( j=1 ,N ) yra tikrinami susikertantys m ilgio rinkiniai,

čia m – šablono ilgis. Apskaičiuojame statistiką

χ2 (obs )=∑i=0

K (ν i−N π i )2

N π i

π i=e

−λ2

2i ∑l=1

i

(i−1l−1)∙

( λ2 )l

l !

čia (nk)= n !k !(n−k )! , λ=

M−m+12m . Apskaičiuojame tikimybę pvalue

pvalue=igamc( K2 , χ2 (obs )

2 )23

Page 24: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Rekomenduojami testo parametrai: n≥ MN ,

N ∙minπ i>5, λ≈2, m≈ log2M , K ≈2 λ.

2.1.4.8. Universalus Maurerio testas

Testo tikslas yra nustatyti, ar nuliai ir vienetai yra pasiskirstę tolygiai sekoje remiantis atstumų tarp

šablonų analizę.

Tarkime turime dvejetainę seką ε=ε1 ε2…ε n. Šią seką suskaidome į 2 segmentus: pradinį ir

testuojamą. Pirmajį segmentą sudaro Q blokų po L bitų (šis segmentas yra pradinis), o antrąjį – K=[ nL ]−Q

blokų po L bitų (šis segmentas yra testuojamas). Likusieji bitai nenagrinėjami. Pradinis segmentas

naudojamas lentelei T gauti. Kiekvienam skaičiui i=0 ,Q T j=i, čia j – i-tojo bloko dvejetainė išraiška.

Toliau tokiu pačiu principu yra tikrinamas testuojamas segmentas bei nustatomas atstumas i−T j.

Apskaičiuojame statistiką

f n=1K ∑

i=Q+1

Q+K

log2(i−T j)

ir tikimybę pvalue

pvalue=erfc ( f n−eval(L)σ √2 )

σ=[0,7−0,8L

+(4+ 32L ) K

−3L

15 ]√ var (L )K

Parametrų eval(L) ir var (L) reikšmės yra fiksuotos ir pasirenkamos pagal parametro L reikšmes.

Testo parametrai L ir Q taip pat yra fiksuotos ir pasirenkamos pagal parametro n reikšmes.

Rekomenduojamos tokios testo parametrų reikšmės: n≥387840, tada L=6, Q=10 ∙2L=640,

eval (L )=5,2177, var (L )=2,954.

Testas yra išlaikytas, jeigu tikimybė pvalue>0,01.

2.1.4.9. Lempelo-Zivos suspaudimo testas

24

Page 25: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Testo tikslas yra nustatyti, ar nuliai ir vienetai yra pasiskirstę tolygiai sekoje remiantis sekos

suspausdimo laipsnio analizę.

Tarkime turime dvejetainę seką ε=ε1 ε2…ε n. Iš šios sekos išskirkime nuoseklius nesikertančius bei

nesikartojančius žodžius, kurie sudaro žodyną W obs. Apskaičiuojame tikimybę pvalue

pvalue=12erfc( μ−W obs

σ √2 )Šiuo metu nėra žinomi teoriniai metodai, leidžiantys apskaičiuoti parametrus µ ir σ. Taikant testą šie

parametrai gaunami naudojant generatorių Blum-Blum-Shub arba generatorių, kuris grįžtamojo ryšio

grandinėje taiko SHA-1 funkciją.

Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Rekomenduojamas sekos ilgis – virš milijono bitų.

2.1.4.10. Tiesinio sudėtingumo testas

Šio testo tikslas yra ištirti sekos atsitiktinumą analizuojant tiesinį jos posekių sudėtingumą.

Tarkime turime dvejetainę seką ε=ε1 ε2…ε n. Šią seką suskaidome į N=[ nM ] nesikertančių M bitų

posekių. Likusieji bitai nenagrinėjami.

Nustatykime kiekvieno posekio tiesinį sudėtingumą Li ,i=1 , N , t.y minimalų LSFR (Linear shift

feedback register – liet. Postūmio registras su tiesiniu grįžtamuoju ryšiu) reikalingo šiam posekiui generuoti,

ilgį. Šiam tikslui galima panaudoti Berlekampo-Mesės algoritmą.

Raskime vidurkį

μ=M2

+(9+(−1 )M +1 )

36+(M3 + 2

9 )2M

Kiekvienam posekiui apskaičiuojame statistiką

T i=(−1 )M (Li−μ )+ 29

Šios reikšmės yra skirstomos į K+1 kategoriją ν0, ν1 ,…,νk (Testo kūrėjai nenurodė skirstimo

algoritmo) ir apskaičiuojama statistika

25

Page 26: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

χ2 (obs )=∑i=0

K (ν i−N π i )2

N π i

bei tikimybę pvalue

pvalue=igamc( K2 , χ2 (obs )

2 )Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Rekomenduojami parametrai: n≥1000 000,

500≤M ≤5000, N ≥200.

2.1.4.11. Serijų testas

Šio testo tikslas yra ištirti sekos atsitiktinumą analizuojant skirtingų ilgių serijas.

Tarkime turime dvejetainę seką ε=ε1 ε2…ε n, o serijos dydis yra m. Formuokime naują seką

ε '=ε1 ε2…εn ε1 ε2…εm−1. Nagrinėkime susikertančias m ilgio serijas. Tipo i (i=0 ,2m) serijų kiekį žymėkime

¿ i. Apskaičiuokime papildomus dydžius:

C im=¿ i

n

φ (m )=∑i=0

2m−1

Cim lnC i

m

Darome prielaidą, kad 0 ∙ ln 0=0. Analaogiškus veiksmus atliekame su susikertančiomis m+1 ilgio

serijomis. Apskaičiuojame statistiką

χ2 (obs )=2n (ln 2−φ(m )+φ(m+1 ))

ir tikimybę pvalue

pvalue=igamc(2m−1, χ2 ( obs )

2 )Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Parametro m reikšmė turi būti mažesnė už [ log2n ]−2.

2.1.4.12. Kumuliacinių sumų testas

26

Page 27: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Šio testo tikslas yra ištirti sekos atsitiktinumą analizuojant maksimalų normuotos sekos elementų

sumos nuokrypį nuo nulio.

Tarkime turime dvejetainę skaičių seką ε=ε1 ε2…ε n. Naudojant vaizdavimą

f ( x )={ 1 , jei x=1−1 , jei x=0

nagrinėjamą seką pertvarkome į seką x=x1x2…xn. Apskaičiuokime dydžius

z1=maxk

∑i=1

k

x i

z2=maxk

∑i=n−k +1

n

xi

z3=|mink ∑i=1

k

x i|z4=|mink ∑

i=n−k+1

n

x i|NIST testų kūrėjai dėl neaiškių priežasčių nenaudoja dydžių z3 ir z4, nors pagal savo reikšmingumą šie

dydžiai nesiskiria nuo dydžių z1 ir z2.

Apskaičiuojame tikimybę pvalue kiekviemam dydžiui

pvalue=1− ∑k=

1− nz

4

nz −1

4

(Φ((4 k+1) z√n )−Φ ((4k−1) z

√n ))+ ∑k=

−nz

−3

4

nz −1

4

(Φ ((4 k+3) z√n )−Φ ((4 k+1)z

√n ))

Testas yra išlaikytas, jeigu visos keturios tikimybės pvalue>0,01. Rekomenduojamas sekos ilgis – 100

bitų.

2.1.4.13. Pirmasis atsitiktinių nuokrypių testas

Šio testo tikslas yra ištirti sekos atsitiktinumą analizuojant maksimalų normuotos sekos elementų

sumos nuokrypį nuo nulio.

Tarkime turime dvejetainę skaičių seką ε=ε1 ε2…ε n. Naudojant vaizdavimą

27

Page 28: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

f ( x )={ 1 , jei x=1−1 , jei x=0

nagrinėjamą seką pertvarkome į seką x=x1 x2…xn. Suformuokime dvi sekas:

S= {S i } :S i=∑j=1

i

x j

S'=0 , S1 , S2,…,Sn ,0

Seką S ' suskaidome į blokus, kuriu pavidalas yra

{0 , S j , S j+1 ,…,S j+k ,0}

Laikysime, kad bet kurio nenulinio x bloko elemento būsena gali įgyti reikšmes iš intervalo nuo -4 iki

4. Bendrą blokų skaičių žymėkime J.

Blokų, kuriuose reikšmė x sutinkama k (k=0 ,5) kartų, kieki žymėkime νk (x). Jei reikšmė x

sutinkama daugiau negu 5 kartus, tai bloką priskiriame kategorijai ν5( x). Kiekvienam x apskaičiuojame

statistiką

χ2 (obs )=∑k=0

5 (νk (x)−J πk (x ))2

J πk (x )

Reikia pastebėti, jog NIST testų kūrėjai supaprastino x reikšmių aibę, nors dėl šios priežasties

nežymiai sumažėjo testo tikslumas. Statistikos parametro πk (x ) reikšmės imamos iš 7 lentelės.

7 lentelė. πk (x ) reikšmės

x π0 ( x ) π1 ( x ) π2 ( x ) π3 (x ) π4 ( x ) π5(x)

±1 0,5 0,25 0,125 0,0625 0,0312 0,0312

±2 0,75 0,0625 0,0469 0,0352 0,0264 0,0791

±3 0,8333 0,0278 0,0231 0,0193 0,0161 0,0804

±4 0,8750 0,0156 0,0137 0,0120 0,0105 0,0733

Apskaičiuojame tikimybę pvalue

pvalue=igamc( 52, χ

2 (obs )2 )

Testas yra išlaikytas, jeigu tikimybė pvalue>0,01.

28

Page 29: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

2.1.4.14. Antrasis atsitiktinių nuokrypių testas

Šio testo tikslas yra ištirti sekos atsitiktinumą analizuojant maksimalų normuotos sekos elementų

sumos nuokrypį nuo nulio.

Tarkime turime dvejetainę skaičių seką ε=ε1 ε2…ε n. Naudojant vaizdavimą

f ( x )={ 1 , jei x=1−1 , jei x=0

nagrinėjamą seką pertvarkome į seką x=x1 x2…xn. Suformuokime dvi sekas:

S= {S i } :S i=∑j=1

i

x j

S'=0 , S1 , S2,…,Sn ,0

Seką S ' suskaidome į blokus, kuriu pavidalas yra

{0 , S j , S j+1 ,…,S j+k ,0}

Laikysime, kad bet kurio nenulinio x bloko elemento būsena gali įgyti reikšmes iš intervalo nuo -9 iki

9. Taigi, kaip ir pirmojo atsitiktinių nuokrypių testo atveju, NIST testų kūrėjai supaprastino x įgyjamas

reikšmes.

Bendrą blokų skaičių žymėkime J, o būsenos x dažnį visuose blokuose žymėkime ξ (x). Kiekvienam x

apskaičiuokime tikimybę pvalue

pvalue=erfc ( |ξ ( x )−J|√2J (4|x|−2))

Testas yra išlaikytas, jeigu tikimybė pvalue>0,01. Abiejų testų atvėju rekomenduojamos sekos ilgis yra

virš milijono bitų.

2.2. Statistinių testų rezultatų vertinimas

PASG statistinių savybių vertinimas vykdomas naudojant 4 etapus:

29

Page 30: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Atsitiktinių sekų generavimas. Generuojama m sekų. Kiekvienos sekos ilgis yra n. Šis

parametras yra parenkamas taip, kad sugeneruotos sekos galėtų išlaikyti bet kurį testą.

Statistinių testų rinkinio taikymas. Kiekviena sugeneruota seka yra testuojama kiekvienu

testu iš pasirinkto rinkinio. Kiekvieno testo rezultatas yra statistikos s(obs) reikšmė. Jei rinkinį

sudaro t testų, tai gaunamos mt statistikų reikšmių.

Statistinių testų išlaikymo analizė. Yra analizuojama gauta statistikos reikšmė. Tai gali būti

daroma 3 būdais:

1. Naudojant kritines reikšmes (statistikos reikšmė turi buti didesnė arba mažesnė už

nustatytą reikšmę).

2. Naudojant fiksuotus intervalus (statistikos reikšmė turi priklausyti fiksuotam intervalui)

3. Naudojant tikimybę pvalue (statistikos reikšmė turi būti didesnė už pasirinktą

reikšmingumo lygmenį α)

Galutinio sprendimo priėmimas

Kadangi analizuojant gautas statistikos reikšmes naudojant kritines reikšmes arba fiksuotus intervalus

yra būtina iš anksto apskaičiuoti šiuos parametrus, žymiai patogiau yra naudoti trečiąjį vertinimo būdą, t.y

apskaičiuoti tikimybę pvalue. Ši tikimybė yra apskaičiuojama kiekvienai statistikai. Gautos tikimybės gali buti

vertinamos naudojant Pirsono kriterijų arba skaičiuojant, kokią dalį sudaro sekos, tenkinančios testą t i. Šie

rezultatai gali būti surašomi į lentelę, analogišką 8 lentelei, ir tokiu būdu priimamas galutinis sprendimas.

8 lentelė. Rinkinio iš t testų rezultatų analizė

Seka Testas 1 Testas 2 ... Testas t

ε (1)išlaikė/ neišlaikė išlaikė/ neišlaikė ... išlaikė/ neišlaikė

ε (2)išlaikė/ neišlaikė išlaikė/ neišlaikė ... išlaikė/ neišlaikė

... ... ... ... ...ε (m )

išlaikė/ neišlaikė išlaikė/ neišlaikė ... išlaikė/ neišlaikė

Jei koks nors testas yra neišlaikomas, tai PASG gali turėti statistinių silpnumų.

2.3. Grafiniai testai

2.3.1. Elementų pasiskirstymo histograma

30

Page 31: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Šis testas tikrina, ar elementai sekoje yra pasiskirstę tolygiai. Šiam tikslui yra braižoma histograma,

kuri vertina kiek kartų kiekvienas elementas yra sutinkamas sekoje. Seka yra atsitiktinė, jeigu elementų

dažnių sekoje išsibarstymas yra artimas 0. Tai reiškia, kad seka turi neturėti elementų, kurie yra sutinkami

labai dažnai. Testas yra naudingas ir tuo atveju, kai reikia įvertinti sekos, kurios elementai yra pasiskirstę

netolygiai (pvz. pagal normalųjį skirstinį), kokybę.

2.3.2. Pasiskirstymas plokštumoje

Testas yra skirtas priklausomybėms tarp elementų nustatyti. Grafinis vaizdas yra gaunamas braižant

taškus (2R−1 )× ( 2R−1 ) plokštumoje, čia R – kiekvieną elementą sudarančių bitų skaičius. Yra nagrinėjami

taškai ( εi , ε i+1 ), čia i=1 ,(n−1). Jei šie taškai plokštumoje yra pasiskirstę chaotiškai, seka laikoma atsitiktine.

Esant dideliam sekos ilgiui geru rezultatu laikomas visiškai juodas laukas.

2.3.3. Serijų testas

Šiame darbe jau buvo nagrinėjami panašūs testai. Grafinis vaizdas gaunamas analizuojant skirtingų

serijų dažnius. Apskaičiuojame nulių ir vienetų kiekius, dvejetų serijų kiekius (00, 01, 10 ir 11), trejetų

serijų kiekius ir t.t. Šiuos duomenis vaizduojame grafiškai atskirai kiekvienam serijos ilgiui. Atsitiktinės

sekos atvėju visi grafikai turi rodyti, jog serijų kiekių išsibarstymas yra artimas 0.

2.3.4. Monotoniškumo testas

Monotoniškumo testas tikrina ar nagrinėjamos sekos elementai yra pasiskirstę tolygiai, atlikdamas

nedidėjimo arba nemažėjimo atkarpų analizę. Grafiškai vaizduojami šių atkarpų ilgiai. Jei seka yra

atsitiktinė, tai kuo didesnė yra monotoniškumo atkarpa tuo mažesnė yra jos pasirodymo tikimybė.

2.3.5. Autokoreliacinė funkcija

Šis testas yra skirtas koreliacijoms tarp pastumtų nagrinėjamos sekos kopijų vertinti. Testas gali aptikti

priklausomybę tarp nagrinėjamos sekos posekių. Yra du šio testo variantai:

31

Page 32: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Bitų autokoreliacinė funkcija. Tarkime turime skaičių seką ε=ε1 ε2…ε n. Ši seka yra pertvarkoma į

dvejetainę seką ir normuojama naudojant vaizdavimą

f ( x )={ 1 , jei x=1−1 , jei x=0

Taip gauname seką x=x1x2…xn. Įveskime tokį žymėjimą:

shif t j (xi )=x (i+ j)mod n.

Apskaičiuojame koreliacijos šuoliuos:

c j=∑j=0

n−1

xi⋅shift j( x i )

∑i=0

n−1

xi2

Šiuos šuolius vaizduojame grafiškai.

Simbolių autokoreliacinė funkcija. Tarkime turime skaičių seką ε=ε1 ε2…ε n. Tegu kiekvieną

sekos narį sudaro m bitų, o i-tojo nario dvejetainė išraiška yra am−1am−2…a0. Naudojame tokį sekos

normavimą:

b i=∑j=0

m−1

(−1 )a j ∙2 j

Taip gauname seką b=b1b2…bn. Apskaičiuojame koreliacijos šuoliuos:

c j=∑j=0

n−1

bi⋅shift j(bi )

∑i=0

n−1

bi2

Šiuos šuolius vaizduojame grafiškai.

Jei koreliacijos šuoliai yra artimi 0 visuose taškuose išskyrus tuos, kurių reikšmės yra kartotinos sekos

ilgiui simboliais, kai naudojama simbolių autokoreliacinė funkcija, ir sekos ilgiui bitais, kai naudojama bitų

autokoreliacinė funkcija, tai seka yra atsitiktinė. Žymesnių šuolių egzistavimas reiškia, kad tarp sekos

elementų yra priklausomybė.

2.3.6. Tiesinio sudėtingumo profilis

Testo tikslas yra nustatyti sekos atsitiktinumą remiantis tiesinio sekos sudėtingumo priklausomybės

nuo sekos ilgio analize.

32

Page 33: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Tarkime turime dvejetainę skaičių seką ε=ε1 ε2…ε n. Nagrinėkime šios sekos posekius, kuriuos sudaro

pirmieji k sekos elementų. Tiesinio sudėtingumo profilis gaunamas braižant grafiką, kuris parodo tiesinio

sudėtingumo L priklausomybę nuo posekio ilgio k. Jei seka yra atsitiktinė, tai grafiko linija turi artėti prie

tiesės L=k2 .

2.3.7. Grafinis spektrų testas

Testo tikslas yra nustatyti ar nuliai ir vienetai nagrinėjamoje sekoje yra pasiskirstę tolygiai remiantis

sekos diskrečiosios Furjė transformacijos amplitudžių analize.

Tarkime turime dvejetainę skaičių seką ε=ε1 ε2…ε n. Naudojant vaizdavimą

f ( x )={ 1 , jei x=1−1 , jei x=0

nagrinėjamą seką pertvarkome į seką x=x1x2…xn ir atliekame sekos x diskrečiąją Furjė

transformaciją

S=DFT ( x )

Grafiškai pavaizduojame pirmąsias n2 harmonikų. Jeigu hamonikų, kurių ilgis žymiai viršija vidutinį

harmonikų ilgį, skaičius artėja į 0, tai seka yra atsitiktinė.

33

Page 34: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Išvados

Atsitiktinių skaičių generatoriai yra svarbūs daugelyje sričių. Tačiau norint sudaryti gerą generatorių,

reikia laikytis kelių svarbių taisyklių:

1. Nagrinėdami statistinius atsitiktinumo testus matėme, kad kai kurie iš jų reikalauja, jog

generuojamos sekos ilgis būtų pakankamai didelis, todėl labai svarbu, kad PASG generuojama

seka turėtų kiek įmanoma didesnį periodą. Didelis periodas – viena iš esminių PASG savybių.

2. Daryti išvadas apie PASG kokybę galima tik remiantis kompleksinio tyrimo rezultatais.

Tyrimas turi būti atliekamas nagrinėjant ne tik pačias sekas, bet ir jų posekius. Testai turi būti

pasirenkami taip, kad galima būtų kuo išsamiau išnagrinėti PASG kokybę.

3. Nors grafiniai testai yra naudingi analizuojant PASG bei kriptoalgoritmų savybes, šie testai turi

būti naudojami kartu su kitais statistiniais testais, dėl jų nevienareikšmingumo.

34

Page 35: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Priedas. Atsitiktinių skaičių generatorių testų programinė realizacija

Naudojant programinį paketą SAS buvo sukurta monotoniškumo testų (grafinio ir statistinio)

programinė realizacija. Sintaksė yra tokia:

%let sequance_size = 1000;%let gen_seed = 0;

data new;array x{&sequance_size};do i = 1 to &sequance_size;

x{i} = ranuni(&gen_seed);end;drop i;

run;

data lengths;set new;array x{&sequance_size};length = 0;k = 0;do i = 2 to &sequance_size;

if (x{i} - x{i - 1}) <= 0then

length = length + 1;else do;

if length ~= 0then do;

k = k + 1;output;

end;length = 0;

end;end;keep k length;

run;

proc freq data = lengths;table length / out = frequancies;

run;

data parameters;set frequancies end = tmp;array sum{1} (0);sum{1} = sum{1} + count;if tmp then do;

suma = sum1;size = _N_;output;

end;keep suma size;

run;

data suma;set parameters;do i = 1 to size;

total = suma;output;

35

Page 36: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

end;keep total;

run;

data test;set suma;set frequancies end = tmp;array chisq{1} (0);fact = 1;do i = 1 to length;

fact = fact * i;end;p = 1/fact - 1/(fact * (length + 1));chisq{1} = chisq{1} + ((count - total * p)**2)/(total * p);if tmp then do;

c = cinv(0.99, length - 1);output;

end;keep chisq1 c;

run;

proc gplot data = lengths; plot length*k;

run;

Testo parametrai yra paduodami programai makrokomandų pagalba:

%let sequance_size = 1000;%let gen_seed = 0;

Pirmoji komanda nustato imties dydį, antroji – atsitiktinių skaičių generatoriaus pradinę reikšmę.

Kitos makrokomandos nurodo konkretaus generatoriaus parametrus. Naudojamas PASG nustatomas eilutėjex{i} = <generatorius>(<pradinė reikšmė>, <parametrai>);

Pavyzdžiui eilutė x{i} = ranuni(&gen_seed); rodo, kad šiuo metu yra naudojamas tolygusis

PASG. SAS paketas turi šiuos atsitiktinių skaičių generatorius:

Pavadinimas Generatorius

RANBIN(seed, n, p) Binominis

RANCAU(seed) Koši

RANEXP(seed) Eksponentinis

RANGAM(seed, a) Gama

RANNOR(seed) Normalusis

RANPOI(seed, m) Puasono

RANTRI(seed, h) Trikampinis

RANUNI (seed) Tolygusis

Be to šis paketas turi funkciją RAND, kuri gali būti naudojama kaip bet kuris iš minėtų generatorių.

Šios funkcijos sintaksė yra tokia:

36

Page 37: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

x{i} = rand(<generatoriaus tipas>, <pradinė reikšmė>, <parametrai>);

Ši funkcija taip pat realizuoja ir kitų tipų PASG, pvz Erlango, Veibulo, Fišerio ir t.t. Tačiau šių

generatorių atsitiktinumo savybės nėra tobulos, nes sugeneruotos sekos elementai yra visuomet pasiskirstę

pagal tam tikrą skirstinį (priklausomai nuo PASG tipo). Šį faktą patvirtina ir monotoniškumo testo rezultatai.

Patikrinkime ar monotoniškumo testą išlaiko tolygusis, eksponentinis bei normalusis generatoriai.

Pasirinksime penkias pradines reikšmes (0, 1, 2, 3, 4). Generuosime 500 narių sekas. Rezultatus surašykime

į lentelę (išvada – taip, jei testas išlaikytas, ne, jei neišlaikytas):

Pradinė

reikšmė

Tolygusis generatorius Normalusis generatorius Eksponentinis generatorius

Statistikos

reikšmėχ0,01 ;t−1

2 Išvada Statistikos

reikšmėχ0,01 ;t−1

2 Išvada Statistikos

reikšmėχ0,01 ;t−1

2 Išvada

0 15.0193 13.2767 Ne 16.5131 11.3449 Ne 15.6132 11.3449 Ne

1 5.71428 13.2767 Taip 15.0602 11.3449 Ne 9.62732 13.2767 Taip

2 2.03722 11.3449 Taip 7.51612 13.2767 Taip 11.7391 11.3449 Ne

3 14.3667 13.2767 Ne 18.4208 11.3449 Ne 0.73205 13.2767 Taip

4 8.36484 13.2767 Taip 9.44666 11.3449 Taip 31.5143 11.3449 Ne

Matome, kad kiekvieno nagrinėjamo generatoriaus atveju bent dvi iš penkių nagrinėjamų sekų

išlaiko monotoniškumo testą. Vienas iš šių generatorių trūkumų yra tai, kad testo rezultatas priklauso nuo

generuojamos sekos ilgio. Padidinus generuojamos sekos ilgį nuo 500 iki 1000 tiktai eksponentinio

generatoriaus sugeneruota seka, kai pradinė reikšmė yra 3, išlaiko monotoniškumo testą. Šios sekos

rezultatai yra (chisq1 – stebėta statistikos reikšmė, c= χ0,01 ;t−12 ):

Obs chisq1 c

1 6.89630 13.2767

PASG galima sudaryti ir patiems. Tam tikslui pakeiskime data new žingsnį:

data new;array x{&sequance_size};do i = 1 to &sequance_size;

if i = 1then do;

x{i} = mod(&a * &gen_seed + &b, &m); end;

37

Page 38: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

else do;x{i} = mod(&a * x{i - 1} + &b, &m); end;

end;drop i;run;

Sakiniai ciklo do viduje aprašo kongruentinį pseudoatsitiktinių skaičių generatorių. Šio generatoriaus

bendroji išraiška yra

x i+1=( A x i+B )mod M

čia operacija mod M reiškia, kad rezultatas bus apskaičiuojamas moduliu M. Pasirinksime tokias

parametrų reikšmes: A=101, B=53, M=256. Šiuos parametrus paduodame programai per

makrokomandas:

%let a = 101;%let b = 53;%let m = 2 ** 8;

Patikrinsime, ar šis generatorius išlaiko monotoniškumo testą, kai generuojamos sekos ilgis yra 500.

Pradinė reikšmė x0=0.

length Frequency Percent CumulativeFrequency

CumulativePercent

1 93 56.71 93 56.71

2 57 34.76 150 91.46

3 12 7.32 162 98.78

4 2 1.22 164 100.00

Obs chisq1 c

1 7.29797 11.3449

Pirmoje lentelėje matome informaciją apie monotoniškumo intervalų ilgius: kiekvieno intervalų ilgio

dažnis ir jo procentinė dalis. Antroji lentelė parodo, kad stebėta statistikos reikšmė yra 7.29797, o

χ0,01 ;32 =11.3449. Taigi testas yra išlaikytas.

Testo rezultatus galima pavaizduoti ir grafiškai. Tada turime tokį vaizdą:

38

Page 39: Kauno technologijos universitetas - Atsitiktiniai … · Web viewAišku, kad sveikųjų skaičių atveju dažnius galima skaičiuoti ne tik skaičių poroms, bet ir trejetams ir t.t

Kadangi didelių išskirčių nematome, tai monotoniškumo testas yra išlaikytas.

39