Gerçek ve Sözde Rastgelelik: Sayı Üreticileri Nasıl Çalışır
Bir web sitesindeki "üret" düğmesine tıkladığınızda sonucun tamamen rastgele olmasını beklersiniz. Ancak bilgisayar bilimi dünyasında gerçek rastgeleliğe ulaşmak şaşırtıcı derecede zordur. Dijital rastgeleliğin çoğu aslında "sözde rastgele"dir. Bu rehberde Gerçek Rastgele Sayı Üreticileri (TRNG) ile Sözde Rastgele Sayı Üreticileri (PRNG) arasındaki farkı ve bu ayrımın neden siber güvenlik için kritik olduğunu açıklayacağız.
Kendiniz Deneyin
Sözde rastgele bir algoritmayı iş başında görmek ister misiniz? Özel dizileri anında üretmek için ücretsiz Rastgele Sayı Üretici ile üretin.
İçindekiler
Rastgelelik Nedir?
Matematikte bir sayı dizisi, tanınabilir hiçbir örüntü veya düzen içermiyorsa rastgele kabul edilir. Gerçek rastgelelik, dizideki önceki sayıları bilmenin bir sonraki sayıyı tahmin etmede size kesinlikle hiç avantaj sağlamadığı anlamına gelir.
İnsanların rastgele sayı üretmede kötü olduğu bilinir (rakamları tekrar etmekten kaçınır ve belirli örüntüleri yeğleriz); bilgisayarlar ise doğası gereği deterministik makinelerdir. Talimatları tam olarak programlandığı gibi yürütürler. Peki yalnızca "1" ve "0" anlayan bir makine nasıl rastgelelik üretir?
Sözde Rastgele Sayı Üreticileri (PRNG)
Web araçlarının, video oyunlarının ve yazılım uygulamalarının büyük çoğunluğu PRNG kullanır. Bir PRNG, bir başlangıç değeri ("tohum" denen) alıp karmaşık denklemlerden geçirerek rastgele görünen bir sayı dizisi üreten matematiksel bir algoritmadır.
PRNG'ler matematiğe dayandığından deterministiktirler. Bir PRNG'ye bugün, yarın ve on yıl sonra tam olarak aynı tohumu verirseniz, her seferinde tam olarak aynı sayı dizisini çıktı olarak verir.
Bu son derece verimlidir. PRNG'ler inanılmaz hızlıdır ve saniyede milyonlarca sayı üretebilir. Bir Spotify çalma listesini karıştırmak, bir oyunda dijital zar atmak veya istatistiksel simülasyonlar çalıştırmak gibi şeyler için bir PRNG tamamen uygundur. JavaScript'teki standart Math.random() işlevi bir PRNG'dir. Bunu 1-10 Arası Rastgele Sayı Üreticimizle test edebilirsiniz.
Parola mı Üretiyorsunuz?
Güvenlik gerçek öngörülemezlik gerektirir. Parolalar için asla standart bir PRNG kullanmayın. Bunun yerine güvenli Parola Üreticimizi kullanın.
Gerçek Rastgele Sayı Üreticileri (TRNG)
Gerçek Rastgele Sayı Üreticileri matematiğe dayanmaz. Bunun yerine, rastgeleliği gerçek dünyadaki öngörülemez fiziksel olgulardan çıkarırlar.
Modern TRNG'ler elektronik devrelerdeki termal gürültü, fotoelektrik etki, hatta kullanıcı tuş vuruşlarının zamanlaması gibi şeyleri ölçer. En ünlü TRNG hizmeti olan Random.org, sayılarını üretmek için atmosferik gürültü (radyo paraziti) kullanır.
Bu fiziksel olaylar kuantum mekaniği tarafından yönetildiğinden temelde öngörülemezdirler. Bir TRNG tohum kullanmaz ve sayı dizisi ne olursa olsun yeniden üretilemez.
Fark Güvenlik İçin Neden Önemlidir
Yalnızca bir çekiliş kazananı seçiyor veya Rastgele Takım Üreticimizle oyuncuları takımlara ayırıyorsanız bir PRNG tamamen güvenlidir. "Sözde" rastgelelik önemli değildir.
Ancak kriptografide öngörülebilirlik güvenlik açığı demektir. Bir korsan PRNG'nizin kullandığı matematiksel tohumu çözebilirse, bilgisayarınızın ürettiği her "rastgele" sayıyı—özel şifreleme anahtarlarınız ve parolalarınız dahil—yeniden üretebilir.
Bu yüzden tarayıcılar, window.crypto.getRandomValues() gibi Kriptografik Olarak Güvenli Sözde Rastgele Sayı Üreticileri (CSPRNG) geliştirdi. Bu algoritmalar hâlâ matematik kullanır; ancak "tohumlarını" son derece öngörülemez sistem değişkenlerinden (fare hareketleri veya CPU sıcaklığı gibi) toplar ve sıkı istatistiksel rastgelelik testlerinden geçmeleri matematiksel olarak garanti edilir. Bu, Parola Üreticimiz gibi güvenli araçları güçlendiren arka uç teknolojisidir.
Bir etkinlik için tekrarsız, garantili benzersiz sayılar üretmeniz gerekiyorsa PRNG'ler idealdir. Bunu Tekrarsız Rastgele Sayı Üretici aracımızla deneyebilirsiniz.
Sıkça Sorulan Sorular (SSS)
JavaScript'teki Math.random() işlevi gerçekten rastgele mi?
Hayır, Math.random() bir Sözde Rastgele Sayı Üreticisidir (PRNG). Rastgele görünen ama aslında bütünüyle deterministik ve öngörülebilir bir sayı dizisi üretmek için matematiksel bir algoritma ve bir başlangıç tohum değeri kullanır.
PRNG ile TRNG arasındaki fark nedir?
PRNG'ler (Sözde Rastgele Sayı Üreticileri) rastgele görünen ama deterministik olan sayılar oluşturmak için matematik kullanır. TRNG'ler (Gerçek Rastgele Sayı Üreticileri) rastgeleliği, onları gerçekten öngörülemez kılan atmosferik gürültü veya radyoaktif bozunma gibi öngörülemez fiziksel olgulardan çıkarır.
Parolalar için sözde rastgele sayı üretici kullanabilir miyim?
Hayır, parolalar veya kriptografik anahtarlar için asla standart bir PRNG kullanmamalısınız. PRNG'ler deterministik olduğundan tohumu tahmin edebilen bir korsan kesin parolanızı yeniden üretebilir. Her zaman Kriptografik Olarak Güvenli bir Sözde Rastgele Sayı Üretici (CSPRNG) veya bir TRNG kullanın.