Testet för nästa bit ( eng. next-bit test ) är ett test som tjänar till att testa pseudoslumptalsgeneratorer för kryptografisk styrka . Testet säger att det inte bör finnas en polynomalgoritm som, givet de första k bitarna i en slumpmässig sekvens, kan förutsäga k + 1 bitar med en sannolikhet som inte är lika med ½.
I teorin om kryptografi är ett separat problem att bestämma hur slumpmässig en sekvens av tal eller bitar som genereras av en generator är. I regel används olika statistiska tester för detta ändamål, såsom DIEHARD-testen eller NIST-testerna . Andrew Yao bevisade [1] 1982 att en generator som klarar "nästa bit-testet" kommer att klara alla andra statistiska slumpmässighetstest som kan göras i polynomtid.
En binär generator klarar testet för nästa bit om: för vilken som helst probabilistisk polynom-tidsalgoritm A: -> {0,1} (Algorithm som har som initial data en sekvens av bitar av längd , och producerar en bit vid dess output), är följande sann ojämlikhet:
där är beteckningen på en funktion som minskar snabbare än det inversa polynomet av grad n .
Det är värt att notera att definitionen av ett test för nästa bit inte tillhandahåller någon algoritm för att utföra detta test.
Den binära sekvensen , mottagen från källan S, anses ha klarat det utökade testet för nästa bit om: för någon i och l: 1 < i, l < n och eventuell probabilistisk polynom-tidsalgoritm A: ->
Det är bevisat att det utökade testet för nästa bit och testet för nästa bit är ekvivalenta. [2]
Även om nästa bittest är en universell metod för att kontrollera oberoendet av utgångsbitarna i en sekvens, är det endast lämpligt för opartiska sekvenser, det vill säga de där sannolikheten för förekomst av en är ekvivalent med sannolikheten för förekomst av noll .
Om utgångssekvensen uppenbarligen måste ha en viss förspänning , det vill säga, är detta test inte lämpligt.
För att testa oberoendet av utbitarna i sådana sekvenser måste därför andra tester användas. I synnerhet föreslogs en utvidgning av testet till nästa bit - ett jämförande test till nästa bit [3] . Tanken med testet är att vi initialt tror att fördelningen av utdatasekvensen beskrivs av någon matematisk modell, och testet tjänar till att kontrollera generatorns överensstämmelse med denna modell.
En binär generator klarar S nästa-bits-jämförelsetestet mot modell M om: för valfritt i och någon probabilistisk polynom-tidsalgoritm (dvs en algoritm som har en sekvens av bitar med längden i som ingång och utmatning av en bit), följande ojämlikhet gäller: :
var är sannolikheten för att algoritmen förutsäger nästa bit för modellgeneratorn.
Givet en modell M som representerar en verkligt slumpmässig sekvens får vi givetvis , det vill säga ett klassiskt test för nästa bit. Givet modellen med och får vi det önskade testfallet för en obalanserad sekvens med en given bias .
Detta test drar fördel av trädstrukturen , som kan lagra all information om delsekvenser i den övergripande sekvensen.
Algoritmen för att beräkna m-bitars sekvenser kan representeras som ett binärt träd med viktade kanter. I detta träd lagrar varje löv på djupet l information om hur många gånger den givna l-bitarssekvensen har påträffats. Eftersom trädet är viktat tilldelas var och en av dess kanter förhållandet mellan det belopp som skrivs i det underordnade arket och det belopp som skrivs i det överordnade. För en tillräckligt stor slumpmässig sekvens antas det att talen som motsvarar kanterna kommer att vara ungefär lika med 1/2.
Steg i Sadeghian-Mahaery-algoritmenVi satte värdet r som sannolikheten att den ideala generatorn genererade en sekvens som är mindre slumpmässig än den som studeras. Vanligtvis väljs r inom [0,001; 0,01]. Om sedan P-värdet är större än r, så anses den studerade sekvensen vara slumpmässig och vice versa annars.
Sadeghyan-Mohaeri-testet ger inte ett tydligt och exakt kriterium för att bestämma slumpmässigheten i en sekvens. Istället antar skaparna av algoritmen förmågan att dra några slutsatser om sekvensens övergripande beteende. När algoritmen framgångsrikt förutsäger (l+1) bitar, anses det att lokal determinism har inträffat.
Syftet med detta test är att bestämma avvikelser i nästa bitförekomststatistik för en undersekvens. Om det finns en sådan avvikelse försöker testet använda den för att förutsäga nästa bit. En sekvens anses icke-slumpmässig om den innehåller för många delsekvenser vars sista bit är förutsägbar.
Det praktiska testet visar mer rimliga resultat i jämförelse med det ursprungliga Sadeghyan-Mokhaeri-testet.
Steg för PNB-algoritmenDet bör noteras att det inte finns någon känd teori [4] som gör att man kan beräkna de exakta värdena på μ och σ som används i det sista steget i algoritmen. Därför beräknas dessa värden ungefär.