Kriptografik rasgele sayı üretimi ve rasgelelik testleri üzerine bir çalışma
A study on cryptographic random number 
generation and randomness tests
Yazar: NİHAN BİTİRİM
Danışman: DOÇ. DR. HAYDAR DEMİRHAN
Hacettepe Üniversitesi / Fen Bilimleri Enstitüsü / İstatistik Ana Bilim Dalı / İstatistik Bilim Dalı
Derece: Yüksek Lisans, 2015
Konu: İstatistik = Statistics

Özet:
Bir kriptografik uygulamada anahtar kelime güvenliktir. Uygulamanın güvenliği ise şifreleme mekanizmasının rasgelelik düzeyi ile ilişkilidir. İstatistiğin kriptografide kullanımı kendi içinde rasgele sayı üretimi ve istatistiksel rasgelelik testleri olmak üzere iki dala ayrılır. Rasgele sayı üreteçleri şifreleme aşamasında gerekli anahtarın üretilmesi gibi birçok kriptografik uygulamada kullanılırken, rasgelelik testleri ise rasgele sayı üreteçlerinin rasgelelik düzeylerinin ve kriptografik uygulamalar için kullanılabilirliğinin değerlendirilmesi aşamasında devreye girer. Çalışma kapsamında rasgele sayı üreteçlerinin rasgelelik düzeylerinin değerlendirilmesi için kullanılan temel istatistiksel testlerin çeşitli uyum iyiliği testleriyle birlikte incelenmesi amaçlanmaktadır.

Çalışmada, rasgele sayı üreteci çıktılarının öngörülemez olması için sağlaması gereken özellikler açıklanmış, literatürde yer alan temel rasgele sayı üreteçlerine ilişkin bilgiler verilmiş ve üreteçler kullanılarak rasgele sayı üretimi üzerine örnekler sunulmuştur.

İstatistiksel hipotez testleri, hem gerçek hem yapay rasgele sayı üreteçlerinin rasgelelik durumunu test etmek için bilimsel bir yaklaşım sunar. Çalışmada, kriptografik rasgelelik testlerinin uygulanışı açıklanmış, güncel olarak önerilen ve kullanılagelen temel kriptografik rasgelelik testlerinden bazıları ele alınmıştır. Bu testlerin uygulanışına ilişkin algoritmalar oluşturulmuş ve testler R yazılımında bir paket oluşturacak şekilde kodlanmıştır. Sonuçta elde edilen R paketine CryptRndTest adı verilmiş ve 1.1.5 sürüm numarası ile Comprehensive R Archive Network (CRAN) alanında yayımlanmıştır. Çalışmada, CryptRndTest paketinde yer verilen testler için hazırlanan fonksiyonların kullanımı ve parametrelerinin belirlenmesi ayrıntılı bir şekilde açıklanmış ve çeşitli örneklere yer verilmiştir.

Bir rasgelelik testinin rasgele olarak kabul ettiği bir üreteci bir başka rasgelelik testi reddedebilmektedir. Dolayısıyla bazı şartlarda rasgelelik testleri arasında bir diğerine üstün olma durumu söz konusu olabilir. Çalışmanın uygulama aşamasında, R yazılımında bulunan rasgele sayı üreteçlerinin rasgelelik düzeylerinin test edilmesi için CryptRndTest paketi kullanılmıştır. Çeşitli üreteç – test kombinasyonları üzerinden, tez kapsamında ilgilenilen rasgele sayı üreteçlerine daha önce uygulanmamış olan testlerin sonuçları elde edilmiş, CryptRndTest'in farklı senaryolar altında performansı gözlenmiş ve göz önünde bulundurulan senaryolar için test parametreleri belirlenmiştir.

Ele alınan tüm testler 0,01 ve 0,05 anlamlılık düzeylerinde, 8, 16, 32, 64 ve 128 bit uzunluklarında ve kısa, orta ve uzun dizi uzunluklarında uygulanmıştır. Sonuçlar her iki anlamlılık düzeyinde testler bazında benzerlik gösterirken, üreteçler bazında birbirinden ayrılmaktadır. 0,01 anlamlılık düzeyinde Mersenne – Twister, Marsaglia – Multicarry veya Knuth – TAOCP üreteçlerinin, 0,05 anlamlılık düzeyinde Marsaglia – Multicarry, L'Ecuyer, Knuth – TAOCP veya Knuth – TAOCP – 2002 üreteçlerinin uygun rasgelelik düzeyine sahip olmaları bakımından kullanışlı olduğu değerlendirilebilir.

Abstract:
In a cryptographic application, the main focus is security. The security level of the application is related to randomness level of the employed encryption mechanism. Statistics is used in two areas of cryptography namely random number generation and statistical randomness tests. While random number generators are used for many cryptographic applications such as producing the key needed at the encryption phase, randomness tests step in to evaluate randomness and usability of random number generators for cryptographic applications.

In this study, requirements for random number generators to be unpredictable are explained, foremost random number generators in literature are described, and examples on random number generation are presented by using considered generators.

Statistical hypothesis tests put forward a scientific approach to test randomness of both true and pseudo random number generators. In this study, implementation of cryptographic randomness tests are explained, recently proposed and classical cryptographic randomness tests are focused on. Algorithms regarding to implementation of the considered tests are constituted and coded as to build up a package in R software. Eventually, acquired R package has been entitled as CryptRndTest and published in Comprehensive R Archive Network (CRAN) under version number 1.1.5. In this study, usage and determination of parameters of the functions prepared for the tests that are included in CryptRndTest are represented in detail and several examples are given place to.

While a randomness test may reject the randomness of a generator, another randomness test may qualify it as random. Therefore, in some conditions related to the randomness tests, a test may outperform another one. As a numerical application, CrypRndTest package is employed to test randomness of generators of R software. For various generator – test

combinations of interest, results of randomness tests which have not been applied to the random number generators considered within the context of thesis are obtained. Additionally, performance of CryptRndTest is evaluated under various scenarios and values of test parameters are determined for considered scenarios.

All of the tests being handled are applied at 0,01 and 0,05 significance levels, 8, 16, 32, 64 and 128 bit lengths, and short, medium and long sequence lengths. While results resemble on the basis of tests, they diverge on the basis of generators. At 0,01 level of significance, Mersenne – Twister, Marsaglia – Multicarry or Knuth – TAOCP generators and at 0,05 level of significance, Marsaglia – Multicarry, L'Ecuyer, Knuth – TAOCP or Knuth – TAOCP-2002 generators are found useful in terms of having appropriate randomness level.