Test na další bit ( angl. next-bit test ) je test, který slouží k testování generátorů pseudonáhodných čísel na šifrovací sílu . Test říká, že by neměl existovat polynomiální algoritmus, který by vzhledem k prvním k bitům náhodné sekvence mohl předpovídat k + 1 bitů s pravděpodobností ne rovnou ½.
V teorii kryptografie je samostatný problém určit, jak náhodná je sekvence čísel nebo bitů generovaných generátorem. K tomuto účelu se zpravidla používají různé statistické testy, jako jsou testy DIEHARD nebo testy NIST . Andrew Yao v roce 1982 dokázal [1] , že generátor, který projde „testem dalšího bitu“, projde jakýmkoli jiným statistickým testem náhodnosti, který lze provést v polynomiálním čase.
Binární generátor projde testem pro další bit, pokud: pro jakýkoli a jakýkoli pravděpodobnostní polynomiální-časový algoritmus A: -> {0,1} (Algoritmus, který má jako počáteční data sekvenci bitů délky a vytváří bit na svém výstup), toto je skutečná nerovnost:
kde je označení funkce klesající rychleji než inverzní polynom stupně n .
Stojí za zmínku, že definice testu pro další bit neposkytuje žádný algoritmus pro provádění tohoto testu.
Binární posloupnost přijatá ze zdroje S se považuje za prošla rozšířeným testem pro další bit, pokud: pro jakékoli i a l: 1 < i, l < n a jakýkoli pravděpodobnostní polynomický algoritmus A: ->
Je dokázáno, že rozšířený test pro další bit a test pro další bit jsou ekvivalentní. [2]
I když je test dalšího bitu univerzální metodou pro kontrolu nezávislosti výstupních bitů sekvence, je vhodný pouze pro nezaujaté sekvence, tedy takové, ve kterých je pravděpodobnost výskytu jedničky ekvivalentní pravděpodobnosti výskytu nuly. .
Pokud výstupní sekvence musí mít zjevně nějaké zkreslení , to znamená , pak tento test není vhodný.
Pro testování nezávislosti výstupních bitů takových sekvencí je proto nutné použít jiné testy. Zejména bylo navrženo rozšíření testu na další bit - srovnávací test na další bit [3] . Myšlenkou testu je, že zpočátku věříme, že rozložení výstupní sekvence je popsáno nějakým matematickým modelem a test slouží ke kontrole souladu generátoru s tímto modelem.
Binární generátor projde testem porovnání dalšího bitu S proti modelu M, pokud: pro libovolné i a jakýkoli pravděpodobnostní algoritmus polynomiálního času (tj. algoritmus, který má posloupnost bitů délky i jako vstup a výstup bit), následující platí nerovnost: :
kde je pravděpodobnost, že algoritmus předpovídá další bit pro generátor modelu.
Je zřejmé, že daný model M představující skutečně náhodnou sekvenci dostaneme , tedy klasický test pro další bit. Vzhledem k modelu s a získáme požadovaný testovací případ pro nevyváženou sekvenci s daným vychýlením .
Tento test využívá stromové struktury , která je schopna uložit všechny informace o podsekvencích v celkové sekvenci.
Algoritmus pro výpočet m-bitových sekvencí může být reprezentován jako binární strom s váženými hranami. V tomto stromě každý list v hloubce l ukládá informaci o tom, kolikrát byla daná l-bitová sekvence nalezena. Protože je strom vážený, je každé jeho hraně přiřazen poměr částky zapsané v podřízeném listu k částce zapsané v nadřazeném. Pro dostatečně velkou náhodnou posloupnost se předpokládá, že čísla odpovídající hranám budou přibližně rovna 1/2.
Kroky Sadeghian-Mahaeryho algoritmuHodnotu r jsme nastavili jako pravděpodobnost, že ideální generátor vygeneroval posloupnost méně náhodnou než studovaná. Obvykle se r volí v rozmezí [0,001; 0,01]. Pokud je pak P-hodnota větší než r, pak je studovaná posloupnost považována za náhodnou a naopak jinak.
Sadeghyan-Mohaeriho test neposkytuje jasné a přesné kritérium pro určení náhodnosti sekvence. Místo toho tvůrci algoritmu předpokládají schopnost vyvodit nějaké závěry o celkovém chování sekvence. Když algoritmus úspěšně předpovídá (l+1) bitů, má se za to, že došlo k lokálnímu determinismu.
Účelem tohoto testu je určit odchylky ve statistice výskytu dalšího bitu pro podsekvenci. Pokud existuje taková odchylka, test se ji pokusí použít k predikci dalšího bitu. Sekvence je považována za nenáhodnou, pokud obsahuje příliš mnoho podsekvencí, jejichž poslední bit je předvídatelný.
Praktický test ukazuje rozumnější výsledky ve srovnání s původním Sadeghyan-Mokhaeriho testem.
Kroky algoritmu PNBJe třeba poznamenat, že není známa žádná teorie [4] , která by umožňovala vypočítat přesné hodnoty μ a σ použité v posledním kroku algoritmu. Proto se tyto hodnoty počítají přibližně.