Bilgisayarlar Nasıl Rastgele Sayı Üretiyor?

Son zamanlarda bilgisayarlarca üretilen rastgele sayılar ve nitelikleri sıklıkla tartışılır oldu, çünkü birçok insan Intel’in gömülü yongalarındaki rastgele sayı üretiminin yeterince güvenilir olup olmadığını sorguluyor. Peki, üretilen bir sayı nasıl “daha güvenilir” ya da “daha az güvenilir” olabilir? Bunu daha iyi anlamak için gelin rastgele sayıların nasıl üretildiğine ve ne için kullanıldıklarına yakından bakalım.

Neden İhtiyacımız Var?

Rastgele sayılar binlerce yıldır kullanılıyor. İster yazı-tura atın, ister zar kullanın, temelde amaç sonucu saf şansa bırakmaktır. Bilgisayardaki rastgele sayı üreteçleri de aynıdır, amaç tahmin edilemeyen, rastgele bir sonuca ulaşmaktır.

Rasgele sayıların kullanım alanları sandığımızdan çok daha fazladır. En belirgin olan şans ve video oyunlarındaki uygulamalarının yanı sıra şifreleme bilimi için de oldukça önemlidir.

Şifreleme biliminde (kriptografi) olası bir saldırı durumunda saldırganın tahmin edemeyeceği bir sayı kullanmanız gerekir. Bu sebeple aynı sayıyı defalarca kullanamazsınız. Dolayısıyla bu sayıları saldırganın tahmin etmesinin güç olduğu bir şekilde üretmelisiniz. İster kendi dosyalarınızı şifreleyin, ister HTTPS protokolü kullanan bir internet sitesi kullanın, bu rastgele sayılara fazlasıyla ihtiyacınız var.

crypto - Bilgisayarlar Nasıl Rastgele Sayı Üretiyor?

Gerçek Rastgele Sayılar

Peki, bir bilgisayar bunları nasıl üretir? Bu “rastgelelik” özelliği nereden geliyor? Bu yalnızca bir kod parçasıysa ortaya çıkan sayının tahmin edilebilir olması gerekmez mi?

Dediğimiz gibi, üretim şekillerine göre rastgele sayıları ikiye ayırıyoruz: gerçek ve sözde rastgele sayılar.

Bir gerçek rastgele sayı üretmek için bilgisayar, kendisinin dışında gerçekleşen bir fiziksel fenomeni ölçer. Örneğin bir radyoaktif atomun bozunmasını. Kuantum teorisine göre radyoaktif bozunmanın ne zaman gerçekleşeceğini bilmenin hiçbir yolu yoktur. Yani bu “saf rastgelelik”tir. Bir saldırgan bozunumun ne zaman gerçekleşeceğini bilemeyeceğinden oluşturulan rastgele sayıyı da bilemeyecektir.

Elbette kişisel bilgisayarımızda rastgele sayı üretmek için cebimizde radyoaktif atom taşımamıza gerek yok. Bilgisayarlar atmosferik gürültüyü veya klavyenizdeki herhangi bir tuşa basma anınızı tahmin edilemeyen verinin kaynağı olarak veya entropi olarak kullanabilirler. Diyelim ki klavyenizdeki bir tuşa saat sabaha karşı 02.00’den tam olarak 0.23423523 saniye sonra bastınız. Bilgisayarınız bu tuşa basma verilerini toplayarak bir entropi kaynağı oluşturup buradan gerçek rastgele sayılar üretebilir. Sonuçta siz tahmin edilebilir bir makine değilsiniz, dolayısıyla bir saldırgan tam olarak hangi anda tuşa basacağınızı bilemez ve böylece bu bilgiyi kaynak alarak üretilen rastgele sayıyı da tahmin edemez.

numbers 1024x683 - Bilgisayarlar Nasıl Rastgele Sayı Üretiyor?

Sözde Rastgele Sayılar

Sözde rastgele sayılar gerçek rastgele sayılara alternatif olarak üretilen sayılardır. Bilgisayar çevreden herhangi bir veri almaksızın, “tohum(seed)” olarak verilen bir değer üzerinden bir algoritma kullanarak özünde tahmin edilebilen ama ilk bakışta rastgele görünen sayılar üretebilir.

Aslında bu her zaman için kötü bir uygulama sayılmaz. Bir video oyunu oynuyorsanız gelişen olayların gerçek rastgele sayıla kullanılarak mı yoksa sözde rastgele sayılarla mı oluşturulduğunun çok önemi yoktur. Fakat şifreleme işlemleri yapıyorsanız kullandığınız sayıların bir saldırgan tarafından tahmin edilmesini istemezsiniz.

Diyelim ki bir verinizi şifrelemek için oluşturduğunuz anahtarı gerçek rastgele sayıları kullanmak yerine sözde rastgele sayıları kullanarak oluşturdunuz. Bu rastgele sayıları üretmek için bir tohuma (basitçe, sözde rastgele sayılarınızı üreten algoritmada kullanmak için seçtiğiniz ilk sayı olarak düşünebiliriz) ve bir rastgele sayı üreten algoritmaya ihtiyacınız var. Eğer verinizin peşindeki saldırgan yeterince uğraşırsa kullandığınız sözde rastgele sayı üretici algoritmayı ve tohumu bulup şifreleme anahtarınızı hesap edip şifreli verinizden asıl veriye ulaşabilir.

NSA ve Intel’in Donanım Temelli Rastgele Sayı Üreteci

Geliştiricilerin işlerini kolaylaştırmak ve güvenilir rastgele sayı üretebilmek için Intel yongalarında RdRand isimli donanım temelli bir sistem bulunur. Bu yonga, işlemci üzerindeki bir entropi kaynağını kullanır ve istendiğinde yazılıma rastgele sayı sağlar. Fakat problem şu ki, bu rastgele sayı üreteci adeta bir kara kutu ve içinde neler döndüğünü bilemiyoruz. Eğer bu sistem Amerikan Ulusal Güvenlik Dairesi’ne (NSA) bir arka kapı sağlıyorsa, bu Amerikan hükûmet yalnızca bu sistemden sağlanan rastgele sayılar kullanılarak oluşturulmuş anahtarlarla yaratılan şifreleri çözebilir demektir.

Böyle bir güvenlik açığının olma ihtimali birçok insanı endişelendirmeye yetiyor. Bazı geliştiriciler sadece bu sistemden sağlanan rastgele sayıları direkt olarak kullanmamayı tercih ediyorlar. Linux böyle çalışanlar arasında. RdRand ile gelen rastgele sayıları daha da rastgele hale getirerek hükûmet sağlanmış bir arka kapı olması ihtimaline karşı verilerini korumaya çalışıyor.  

Orijinal Metin: How Computers Generate Random Numbers

Matematiksel

Rumeysa Aslıhan Ertürk

Vefa Lisesi 143. dönem mezunu, İTÜ Bilgisayar Mühendisliği anadal, Fizik bölümü yandal öğrencisi. Küçük yaşlarda bilimin büyülü dünyası başını döndürmüş olacak ki tüm hayallerini onun peşinden koşmak üzerine kurdu. Cehaletin mutluluk olduğuna inanmadığı gibi bilmekten ve öğrendiklerini paylaşmaktan çok keyif alıyor. Okuyucusuna keyifli dakikalar dilerken kendilerinin olumlu veya olumsuz görüşlerini de dört gözle bekliyor.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

İlgili Makaleler

Başa dön tuşu
Kapalı