A következő bit tesztje ( eng. next-bit test ) egy olyan teszt, amely a pszeudo-véletlenszám-generátorok kriptográfiai erősségének tesztelésére szolgál . A teszt azt mondja, hogy nem szabad olyan polinomiális algoritmusnak lennie, amely egy véletlen sorozat első k bitjével k + 1 bitet tud előre jelezni ½ valószínűséggel.
A kriptográfia elméletében külön probléma annak meghatározása, hogy egy generátor által generált szám- vagy bitsorozat mennyire véletlenszerű. Általában különféle statisztikai teszteket használnak erre a célra, például a DIEHARD teszteket vagy a NIST teszteket . Andrew Yao 1982-ben bebizonyította [1] , hogy az a generátor, amely átmegy a "következő bitteszten", minden más statisztikai véletlenszerűségi teszten is megfelel, amely polinomiális időben elvégezhető.
Egy bináris generátor megfelel a tesztnek a következő bitre, ha: bármely és bármely valószínűségi polinomiális idő algoritmusra A: -> {0,1} (Algoritmus, amely kezdeti adatként egy bit hosszúságú sorozatot tartalmaz , és egy bitet állít elő kimenet), a következő valódi egyenlőtlenség:
ahol az n fokú inverz polinomnál gyorsabban csökkenő függvény megnevezése .
Érdemes megjegyezni, hogy a következő bit tesztjének meghatározása nem ad semmilyen algoritmust ennek a tesztnek a végrehajtására.
Az S forrástól kapott bináris sorozatot úgy tekintjük, hogy átment a kiterjesztett teszten a ->következő bitre, ha: bármely i és l esetén: 1 < i, l < n és bármely A valószínűségi polinomiális idő algoritmus:
Bebizonyosodott, hogy a következő bitre vonatkozó kiterjesztett teszt és a következő bit tesztje egyenértékű. [2]
Bár a következő bitteszt egy univerzális módszer egy sorozat kimeneti bitjei függetlenségének ellenőrzésére, csak torzítatlan sorozatokra alkalmas, vagyis olyanokra, amelyekben az egy előfordulási valószínűsége megegyezik a nulla előfordulási valószínűségével. .
Ha a kimeneti sorozatnak nyilvánvalóan bizonyos torzítása kell , hogy legyen, azaz , akkor ez a teszt nem alkalmas.
Ezért az ilyen sorozatok kimeneti bitjei függetlenségének teszteléséhez más teszteket kell használni. Különösen javasolták a teszt kiterjesztését a következő bitre - egy összehasonlító tesztet a következő bitre [3] . A teszt lényege, hogy kezdetben azt hisszük, hogy a kimeneti sorozat eloszlását valamilyen matematikai modell írja le, és a teszt arra szolgál, hogy ellenőrizze, hogy a generátor megfelel-e ennek a modellnek.
Egy bináris generátor megfelel az S következő bites összehasonlító tesztnek az M modellhez képest, ha: bármely i és bármely valószínűségi polinomiális idő algoritmus (vagyis olyan algoritmus esetén, amelynek i hosszúságú bitsorozata van bemenetként és egy bitet ad ki) esetén a következő egyenlőtlenség érvényes: :
ahol annak a valószínűsége, hogy az algoritmus megjósolja a következő bitet a modellgenerátor számára.
Nyilvánvaló, hogy egy valóban véletlenszerű sorozatot reprezentáló M modellt kapunk , vagyis a következő bit klasszikus tesztjét. Adott a modell és a -val , megkapjuk a kívánt tesztesetet egy adott torzítású kiegyensúlyozatlan sorozathoz .
Ez a teszt kihasználja a fastruktúra előnyeit , amely képes tárolni az összes információt a teljes sorozat részsorozatairól.
Az m-bites sorozatok kiszámítására szolgáló algoritmus egy súlyozott élekkel rendelkező bináris faként ábrázolható. Ebben a fában minden l mélységben lévő levél információt tárol arról, hogy az adott l-bites sorozattal hányszor találkoztak. Mivel a fa súlyozott, minden éléhez hozzá van rendelve a gyermeklapra írt összeg és a szülőben írt összeg aránya. Megfelelően nagy véletlenszerű sorozat esetén feltételezzük, hogy az éleknek megfelelő számok megközelítőleg egyenlőek lesznek 1/2-vel.
A Sadeghian-Mahaery algoritmus lépéseiAz r értéket annak valószínűségeként állítjuk be, hogy az ideális generátor a vizsgáltnál kevésbé véletlenszerű sorozatot generált. Általában r értéket [0,001; 0,01]. Ekkor ha a P-érték nagyobb, mint r, akkor a vizsgált sorozatot véletlenszerűnek tekintjük, és fordítva.
A Sadeghyan-Mohaeri teszt nem ad egyértelmű és pontos kritériumot egy sorozat véletlenszerűségének meghatározására. Ehelyett az algoritmus megalkotói azt feltételezik, hogy képesek következtetéseket levonni a sorozat általános viselkedéséről. Amikor az algoritmus sikeresen előrejelzi az (l+1) bitet, úgy tekintjük, hogy helyi determinizmus történt.
Ennek a tesztnek az a célja, hogy meghatározza az eltéréseket egy részsorozat következő bit előfordulási statisztikájában. Ha van ilyen eltérés, a teszt megpróbálja ezt felhasználni a következő bit előrejelzésére. Egy sorozatot nem véletlenszerűnek tekintünk, ha túl sok olyan részsorozatot tartalmaz, amelyek utolsó bitje megjósolható.
A gyakorlati teszt ésszerűbb eredményeket mutat az eredeti Sadeghyan-Mokhaeri teszthez képest.
A PNB algoritmus lépéseiMeg kell jegyezni, hogy nincs ismert elmélet [4] , amely lehetővé tenné az algoritmus utolsó lépésében használt μ és σ pontos értékeinek kiszámítását. Ezért ezeket az értékeket hozzávetőlegesen számítják ki.