Przedstawiając poszczególne metody generowania ciągów bitów loso-wych, wspominaliśmy również o kryteriach oceny ich jakości i sugerowanych metodach jej weryfikacji. Metody te były albo dostosowane do szczegól-nej postaci generatora (np. postulaty Golomba), albo stanowiły trudny do sprawdzenia wzorzec oczekiwań (np. test następnego bitu). W praktyce sto-sowane są odpowiednio dobrane zestawy testów statystycznych pozwalające zaakceptować lub odrzucić wygenerowany ciąg bitów lub sam generator. Te-sty powinny wykazać:
• zgodność rozkładu ciągu bitów z postulowanym (równomierność roz-kładu);
• losowość rozkładu (brak wzorca);
• wzajemną niezależność bitów (nieprzewidywalność kolejnych bitów).
W literaturze możemy znaleźć ogromną liczbę testów służących do bada-nia generatorów liczb losowych (na przykład w klasycznej książce [26] roz-dział dotyczący testowania generatorów jest wielokrotnie większy od opisu metod generacji; por. też [23], [65], [69]). Rozróżnić tu należy metody ogólne, dotyczące badania rozkładów liczb całkowitych w zapisie dziesięt-nym, i specyficzne metody służące do badania ciągów binarnych. Przy-gotowując zestaw testów, należy zwrócić uwagę na to, by pozwalały one wszechstronnie zweryfikować własności statystyczne generatora, a równo-cześnie ograniczyć ich liczbę tak, by mogły one służyć do weryfikowania ciągów binarnych bezpośrednio przed ich użyciem (czyli w trakcie eksplo-atacji generatora). Można też przygotować dwa zestawy testów: jeden dla etapu projektowania czy wyszukiwania parametrów generatora i drugi dla okresu normalnej eksploatacji.
Najszerzej stosowanym w świecie narzędziem weryfikacji generatorów (z racji dominowania standardów amerykańskich w dziedzinie ochrony in-formacji) jest zestaw testów podany przez normę amerykańską FIPS-140-2 [14], dotyczącą bezpieczeństwa modułów kryptograficznych. W badaniu ge-neratorów ciągów bitów losowych norma przewiduje cztery testy istotności.
Każdy z nich przeprowadzany jest dla ciągu długości 20000 bitów (w przy-padku wykorzystywania dłuższych ciągów przebadane muszą być kolejne podciągi o tej długości). Poziom istotności tych testów, czyli prawdopo-dobieństwo odrzucenia ciągu mogącego pochodzić z prawidłowego źródła bitów, jest równy 0,0001. A oto owe cztery testy, których spełnienie jest wymagane przez normę.
1
.Test monobitowy.
Jest to test oparty na statystyce chi-kwadrat. Spraw-dza on, czy liczba bitów „1
” leży w pewnych granicach, zależnych od ogólnej liczby wygenerowanych bitów. Przeprowadzany jest w kolejnych krokach:• Obliczamy
(5.1)
X =
liczba jedynek w ciągu 20000 bitów.• Uznajemy, że nie ma podstaw do odrzucenia ciągu, gdy (5.2) 9725 <
X
< 10275.2
.Test pokerowy.
Jest to test losowości wykorzystujący statystykę chi- kwadrat, który sprawdza wymaganie równomierności rozkładu segmentów czterobitowych (alfabet 24
= 16 znaków). Jego kolejne kroki to:• Dzielimy 20000 bitów na 5000 czterobitowych segmentów.
• Liczymy ilość pojawień się liczb
i =
0 ,..., 15 (zapisanych binarnie) wśród tych segmentów; wynik wpisujemy do tablicyf{i).
• Obliczamy statystykę testową
(5-3) * = ^ ( E [ / W ]
2
H000
.i = 0
• Uznajemy, że nie ma podstaw do odrzucenia ciągu, gdy (5.4) 2,16 <
X
< 46,17.3.
Test serii.
Jest to element tak zwanej analizy sekwencyjnej ciągu bi-tów. Serią nazywamy ciąg jednakowych znaków - zer lub jedynek. Sprawdza-jąc wygenerowany ciąg, wymagamy, żeby liczba serii o długości1
,2
,3,4,5 oraz6
i większej spełniała określone ograniczenia (takie jak idealny ciąg binarny). Wykonujemy więc kolejno następujące kroki:• Liczymy liczbę serii o wskazanych długościach.
Generatory liczb losowych 61
• Uznajemy, że nie ma podstaw do odrzucenia badanego ciągu, gdy uzyskane liczby serii spełniają warunki podane w tablicy:
Długość serii Liczba wystąpień
1
2343 ..26572
1135 ..13653 542 ..708
4 251 ..373
5
111 ..201
>
6 111 ..201
4.
Test długich serii.
Jest to również element analizy sekwencyjnej. Po-lega na sprawdzeniu warunku:• W ciągu 20000 bitów nie powinno być serii o długości 26 i większej.
Zastosowanie powyższego zestawy testów FIPS stanowi pewne minimum przy weryfikacji ciągu bitów. Do dokładniejszej analizy generatorów można przystosować (budując odpowiednie statystyki) każdy z występujących w li-teraturze rodzajów testów, przy czym badać można zarówno zmienne losowe jednowymiarowe, jak i wektorowe (por. np. [11]). Wśród tradycyjnych te-stów statystycznych można wyróżnić następujące grupy tete-stów, sprawdza-jących różne cechy badanej populacji generalnej, a także warunki, w jakich przeprowadzano eksperyment losowy:
• Testy losowości, które pozwalają stwierdzić, czy ciąg wyników pomia-rów może być traktowany jako ciąg realizacji zmiennych losowych. Po-magają one ustalić, czy badana próba pomiarów jest reprezentatywna.
• Testy zgodności, pozwalające stwierdzić, jaki rozkład prawdopodobień-stwa ma ciąg obserwacji, czy dwie serie pomiarów mają taki sam roz-kład itp.
• Testy normalności, pozwalające stwierdzić, czy można uznać, że ciąg obserwacji pochodzi z populacji generalnej mającej rozkład normalny;
jest to szczególny rodzaj testów zgodności, wyróżniony ze względu na swoją ważność oraz specyficzne własności obliczeniowe.
• Testy dotyczące parametrów rozkładu, które pozwalają potwierdzić wiarogodność wyestymowanych na podstawie serii pomiarów parame-trów rozkładu, takich jak momenty, statystyki pozycyjne itp.
• Testy niezależności, pozwalające stwierdzić na podstawie pomiarów, czy próbkowane (obserwowane) zmienne losowe można uznać za nieza-leżne.
Oprócz ogólnie stosowanych testów statystycznych, do weryfikacji po-prawności generatorów bitów losowych służą specjalizowane testy, które mo-żemy nazwać kryptograficznymi. Są to w szczególności:
• Testy widmowe, które badają własności widma Fouriera i Walsha wy-generowanego ciągu (por. np. [5], [64], [67]). Widmo ciągu idealnego, jako „białego szumu” , powinno być w przybliżeniu stałe dla wszystkich wartości argumentów.
• Testy złożoności liniowej. Ich celem jest oszacowanie, jaki jest najmniej-szy rząd (długość
r)
rejestru liniowego, z którego mógłby pochodzić badany ciąg bitów (por. [10
]).• Testy złożoności sekwencyjnej (maksymalnej złożoności, profilu złożo-ności itp.). Ich celem jest stwierdzenie, czy rozkład serii w wygenero-wanym ciągu nie odbiega od rozkładu serii pochodzących z idealnego źródła bitów (por. np. [33], [38], [40]).
• Testy entropijne. Badają one informacyjne własności ciągu bitów, na przykład efektywność kodową tych ciągów lub informację wzajemną oddalonych bitów. Najbardziej popularny jest test Maurera (por. [37]), z dużym prawdopodobieństwem wykrywający każde odchylenie staty-styki obliczonej dla badanego ciągu od statystaty-styki w pełni losowego ciągu bitów, a zatem, w odróżnieniu od testów klasycznych, wszelkie rodzaje defektów statystycznych. Algorytm testu związany jest z meto-dami kompresji danych. Polega na podzieleniu długiego ciągu danych na bloki o skończonej długości
N
(zwykle od8
do 16 bitów) i zbadaniu ich entropii. Entropia może przyjąć wartość od zera (dla ciągów de-terministycznych) do maksymalnej wartości logN
dla ciągów w pełni losowych. Test pozwala wyznaczyć w przybliżeniu entropię oraz efek-tywną długość klucza (czyli liczbę bitów pochodzących z ciągu w pełni losowego, która ma taką samą entropię jakN
bitów pochodzących z badanego generatora), jeżeli generator ma posłużyć jako źródło kluczy kryptograficznych.• Inne metody testowania. Tutaj należałoby umieścić metody badania, które nie są testami statystycznymi, ale pozwalają ocenić pewne wła-sności generatorów. Na przykład falki (wavelets) są uogólnieniem wid-ma ciągu pozwalającym wykryć jego niestacjonarność (por. [36], [62]).
Można również potraktować ciąg bitów jako łańcuch Markowa i estymo- wać odpowiednie prawdopodobieństwa przejścia, poszukując zależności między bitami oddalonymi o stały odstęp.
• Badanie generatorów przez zadania testowe. Dotyczy to generatorów liczb losowych o wszelkich rozkładach. Pozwala sprawdzić praktyczną szybkość działania generatora i przydatność uzyskanego ciągu w kon-kretnych zastosowaniach. Pozwala też dokonać ocen względnych róż-nych generatorów (por. np. [63]).
Generatory liczb losowych 63 Kończąc tę pracę, przytoczmy przykład praktycznej weryfikacji gene-ratora bitów losowych. Analizując działanie implementacji komputerowej generatora bitów opartego na pewnym konstruowalnym układzie dynamicz-nym [32], wykorzystaliśmy następującą sekwencję testów dla ciągów o dłu-gości 100 MB:
• testy FIPS;
• test entropijny Maurera;
• test złożoności liniowej;
• test widmowy Walsha;
• testy zgodności chi-kwadrat i Kołmogorowa-Smirnowa dla słów różnej długości.
Testy FIPS zaakceptowały wszystkie wygenerowane ciągi bitów, pozo-stałe testy sporadycznie odrzucały wygenerowaną próbę, przy czym najbar-dziej restrykcyjne były testy zgodności przeprowadzane dla długich ciągów.
Takie wyniki wskazują, że zarówno zestaw testów, jak i ich parametry mu-szą być dobrane odpowiednio do przeznaczenia badanego ciągu (tj. długo-ści wykorzystywanego ciągu, poziomu bezpieczeństwa, trybu pracy układu kryptograficznego, postulowanego poziomu istotności itp.). Dokładniejsza analiza zagadnienia badania jakości generatorów liczb losowych dla celów kryptograficznych zawarta jest w opracowaniu [
21
] (powstałym w trakcie realizacji grantu KBN 8T11 DOI 112 „Zastosowania metod stochastycznych w kryptografii” ) i w przygotowywanej na jego podstawie monografii.Bibliografia
[1] M. Abramowitz, I. A. Stegun, Handbook of Mathematical Functions with Formulas, Graphs and Mathematical Tables, National Bureau of Standards, Apllied Mathema-tics Series 55, 1964.
[2] W. B. Alexi, B. Chor, O. Goldreich, C. P. Schnorr, RSA and Rabin functions: certain parts are as hard as the whole, SIAM J. Comput. 17 (1988), 194-209.
[3] L. Blum, M. Blum, M. Shub, A simple unpredictable pseudo-random number genera-tor, SIAM J. Comput. 15 (1986), 364-383.
[4] A. Beardon, Reration of Rational Functions, Springer, New York, 1991.
[5] K. G. Beauchamp, Walsh Functions and their Applications, Academic Press, London, 1975.
[6] H. Beker, F. Piper, Cipher Systems: the Protection of Communication, Wiley, New York, 1982.
[7] E. Bollt, Y.-C. Lai, C. Grebogi, Coding, channel capacity, and noise resistance in communicating with chaos, Phys. Rev. Lett. 79 (1997), 3787-3790.
[8] R. Brown, L. O. Chua, Clarifying chaos: examples and counterexamples, Internat.
J. Bifurcation Chaos 6 (1996), 219-249.
[9] A. Compagner, Definitions of randomness, Amer. J. Phys. 59 (1991), 700-705.
[10] C. Ding, G. Xiao, W. Shan, The Stability Theory of Stream Ciphers, Springer, Berlin, 1991.
[11] Cz. Domański, Testy statystyczne, PWE, Warszawa, 1990.
[12] J. Eichenauer, J. Lehn, A non-linear congruential pseudo-random number generator, Statist. Pap. 27 (1986), 315-326.
[13] G. S. Fishman, Monte Carlo: Concepts, Algorithms, and Applications, Springer, New York, 1996.
[14] FIPS 140-2, Security Requirements for Cryptographic Modules, NIST 1999.
[15] FIPS 186-2, Digital Signature Standard, NIST 2000.
[16] J. Gawinecki, J. Szmidt, Zastosowanie ciał skończonych i krzywych eliptycznych w kryptografii, Wydawnictwo WAT, Warszawa, 1999.
[17] S. Goldwasser, M. Bellare, Lecture Notes on Cryptography, preprint, August 1999 (w internecie).
[18] S. W. Golomb, Shift Register Sequences, Holden-Day, San Francisco, 1967.
[19] J. A. Gonzalez, R. Pino, Chaotic and stochastic functions, Physica 276A (2000), 425-440.
[20] K. Górski, A. Paszkiewicz, A. Zugaj, Z. Kotulski, J. Szczepański, Własności ciągów generowanych przez najmniejsze pierwiastki pierwotne liczb pierwszych, w: Krajowe Sympozjum Telekomunikacji (Bydgoszcz, 1998), Wyd. Inst. Telekomunikacji PW, tom B, 1998, 143-151.
[21] K. Górski, Z. Kotulski, A. Paszkiewicz, J. Szczepański, A. Zugaj, Generatory losowych ciągów binarnych w kryptografii, opracowanie, 250 stron, Warszawa, 1999.
[22] T. Habutsu, Y. Nishio, I. Sasase, S. Mori, A secret key cryptosystem by iterating a chaotic map, w: Eurocrypt’91, 1991, 127-140.
[23] P. Hellekalek, Good random number generators are (not so) easy to find, Math. Corn- put. Simulation 46 (1998), 485-505.
[28] — , Algebraiczne aspekty kryptografii, WNT, Warszawa 2000.
[29] T. Kohda, A. Tsuneda, Statistic of chaotic binary sequences, IEEE Transactions on Information Theory 43, (1997), 104-112.
[30] Z. Kotulski, J. Szczepański, Discrete chaotic cryptography, Ann. Phys. 6 (1997), 381- 394.
[31] Z. Kotulski, J. Szczepański, K. Górski, A. Paszkiewicz, A. Zugaj, The application of discrete chaotic dynamical systems in cryptography—DCC Method, Internat. J.
Bifurcation Chaos 9 (1999), 1121-1135.
[32] Z. Kotulski, J. Szczepański, K. Górski, A. Górska, A. Paszkiewicz, On constructive approach to chaotic pseudorandom number generators, w: Proc. Regional Conference on Military Communication and Information Systems. CIS Solutions for an Enlarged NATO, RCMIS 2000 (Zegrze, 2000), tom 1, 191-203.
[33] L. Kuipers, H. Niederreiter, Uniform Distribution of Sequences, Wiley, New York, 1974.
[34] D. H. Lehmer, Mathematical methods in large-scale computing units, w: Proc. 2nd Sympos. on Large-Scale Digital Calculating Machinery (Cambridge, MA, 1949), Ann.
Comp. Lab. Harvard University 26 (1951), 141-146.
[35] P. L’Ecuyer, Random Number Generation, w: J. Banks (ed.), Handbook of Simula-tion, rozdział 4, Wiley, New York, 1998.
Generatory liczb losowych 65
[40] H. Niederreiter, The linear complexity profile and the jump complexity of keystream sequences, w: Advances in Cryptology (Aarhus, 1990), Lecture Notes in Comput. Sci.
473, Springer, Berlin, 1991, 174-188.
[41] — , Random Number Generation and Quasi-Monte Carlo Methods, SIAM, Philadel-phia, 1992.
[42] — , New developments in uniform pseudorandom number and vector generation, w:
H. Niederreiter, P. J.-S. Shiue (red.), Monte Carlo and Quasi-Monte Carlo Methods in Scientific Computing, Lecture Notes in Statist. 106, Springer, Heidelberg, 1995.
[43] E. Ott, C. Grebogi, J. A. Yorke, Controlling chaos, Phys. Rev. Lett. 64 (1990), 1196-1199.
[44] U. Parlitz, L. O. Chua, Lj. Kocarev, K. S. Halle, A. Shang, Transmission of digital signals by chaotic synchronization, Internat. J. Bifurcation Chaos 2 (1992), 973-977.
[45] A. Paszkiewicz, K. Górski, A. Górska, Z. Kotulski, K. Kulesza, J. Szczepański, Pro-posals of graph-based ciphers, theory and implementations, w: Proc. Regional Conf.
on Military Communication and Information Systems. CIS Solutions for an Enlarged NATO, RCMCIS 2001 (Zegrze, 2001) (w druku).
[49] O. Reingold, Pseudo-Random Synthesizers, Functions and Permutations, The Weiz- mann Institute of Science, 1998 (praca doktorska).
[50] P. Ribenboim, Mała księga wielkich liczb pierwszych, WNT, Warszawa, 1997.
[51] M. Rosenblatt, Procesy stochastyczne, PWN, Warszawa, 1967.
[52] R. Rueppel, Analysis and Design of Stream Ciphers, Springer, Berlin, 1986.
[53] B. Schneier, Kryptografia dla praktyków. Protokoły, algorytmy i programy źródłowe w języku C, W NT, Warszawa, 1995.
[54] H. G. Schuster, Chaos deterministyczny, PWN, Warszawa, 1995.
[55] J. Szczepański, Z. Kotulski, On topologically equivalent ergodic and chaotic reflection laws leading to different types of particle’s motion, Arch. Mech. 50 (1998), 865-875.
[58] J. Szczepański, Z. Kotulski, Pseudorandom number generators based on chaotic dy-namical systems, Open Systems Information Dynamics 8 (2001) (w druku).
[59] — , — , Error Analysis with Applications in Engineering, Lastran Corporation, Ro-chester, 2000.
[60] T. J. Taylor, On stochastic and chaotic motion, Stochastics Stochastics Rep. 43 (1993), 179-197.
[61] — , Time series, stochastic and chaotic, w: W. A. Barnett et al. (eds.), Nonlinear Dynamics and Economics (Florence, 1992), Cambridge Univ. Press, Cambridge, 1996.
[62] Y. Wang, Detection of jumps and curps by wavelets, Biometrics 82 (1995), 385-397.
[63] S. Wegenkittl, On empirical testing of pseudorandom number generators, w: G. De Pietro et al. (eds.), Proceedings of the international workshop Parallel Numerics’95, CEI-PACT Project, WP5.1.2.1.2., 1995.
[64] P. D. Welch, The use of fast Fourier transform for estimation of power spectra: A method based on time averaging over short, modified periodograms, IEEE Trans. Au-tomatic Control AU-15 (1973), 70-73.
[65] R. Wieczorkowski, R. Zieliński, Komputerowe metody generacji liczb losowych, WNT, Warszawa, 1997.
[66] A. C. Yao, Theory and applications of trapdoor functions, w: Proc. 23rd IEEE Sym-posium on Foundations of Computer Science, IEEE, Chicago, 1982, 80-91.
[67] C. K. Yuen, Testing random number generators by Walsh transform, IEEE Trans.
Computers C-26 (1977), 329.
[68] R. Zieliński, Metody Monte Carlo, WNT, Warszawa, 1970.
[69] — , Generatory liczb losowych, WNT, Warszawa, 1972.
[70] — , Wytwarzanie losowości, Wiad. Mat. 29 (1992), 189-203.
Instytut Podstawowych Problemów Techniki Polska Akademia Nauk
00-049 Warszawa, ul. Świętokrzyska 21 E-mail: zkotulsk@ippt.gov.pl
URL: http:/www.ippt.gov.pl/~zkotulski/