Bilgisayarlar Nasıl Rastgele Sayılar Oluşturur?

Bilgisayarlar, kriptografiden video oyunlarına ve kumara kadar her şey için rastgele sayı üretir. İki rasgele sayı kategorisi vardır - "gerçek" rasgele sayılar ve sözde rasgele sayılar - ve aradaki fark, şifreleme sistemlerinin güvenliği için önemlidir.

Bilgisayarlar, öngörülemeyen fare hareketleri veya fan gürültüsü gibi bazı dış verileri gözlemleyerek ve ondan veri oluşturarak gerçekten rastgele sayılar üretebilirler. Bu entropi olarak bilinir. Diğer zamanlarda, bir algoritma kullanarak "sözde rasgele" sayılar üretirler, böylece sonuçlar olmasa bile rasgele görünür.

Bu konu son zamanlarda daha tartışmalı hale geldi ve birçok kişi Intel'in yerleşik donanım rastgele sayı üreteci yongasının güvenilir olup olmadığını sorguladı. Neden güvenilir olmayabileceğini anlamak için, ilk etapta rastgele sayıların nasıl üretildiğini ve ne için kullanıldığını anlamanız gerekir.

Rastgele Sayılar Ne İçin Kullanılır?

Rastgele sayılar binlerce yıldır kullanılmaktadır. İster yazı tura atmak ister zar atmak olsun, amaç nihai sonucu rastgele şansa bırakmaktır. Bir bilgisayardaki rastgele sayı üreteçleri benzerdir - öngörülemeyen, rastgele bir sonuç elde etme girişimidir.

İLGİLİ: Şifreleme Nedir ve Nasıl Çalışır?

Rastgele sayı üreteçleri birçok farklı amaç için kullanışlıdır. Kumar oynamak veya bir bilgisayar oyununda öngörülemeyen sonuçlar oluşturmak için rastgele sayılar üretme gibi bariz uygulamaların yanı sıra, rasgelelik kriptografi için önemlidir.

Kriptografi, saldırganların tahmin edemeyeceği sayılar gerektirir. Aynı sayıları defalarca kullanamayız. Saldırganların tahmin edememesi için bu sayıları tahmin edilemez bir şekilde üretmek istiyoruz. Bu rastgele sayılar, ister kendi dosyalarınızı şifreliyor olun, ister sadece İnternette bir HTTPS web sitesi kullanıyor olun, güvenli şifreleme için gereklidir.

Gerçek Rastgele Sayılar

Bir bilgisayarın aslında nasıl rastgele bir sayı üretebileceğini merak ediyor olabilirsiniz. Bu "rastgelelik" nereden geliyor? Bu sadece bir bilgisayar koduysa, bilgisayarın ürettiği sayıların tahmin edilebilir olması mümkün değil mi?

Bilgisayarların ürettiği rastgele sayıları, nasıl oluşturulduklarına bağlı olarak genellikle iki tür halinde gruplandırırız: "Doğru" rasgele sayılar ve sözde rasgele sayılar.

"Gerçek" bir rastgele sayı oluşturmak için bilgisayar, bilgisayarın dışında gerçekleşen bir tür fiziksel olguyu ölçer. Örneğin, bilgisayar bir atomun radyoaktif bozunmasını ölçebilir. Kuantum teorisine göre, radyoaktif bozunmanın ne zaman meydana geleceğini kesin olarak bilmenin bir yolu yoktur, bu nedenle bu aslında evrenin "saf rastgelelik" tir. Bir saldırgan, radyoaktif bozunmanın ne zaman olacağını tahmin edemez, bu yüzden rastgele değeri bilemez.

Daha günlük bir örnek için, bilgisayar atmosferik gürültüye güvenebilir veya sadece klavyenizdeki tuşlara tam olarak bastığınız zamanı tahmin edilemeyen bir veri veya entropi kaynağı olarak kullanabilir. Örneğin, bilgisayarınız öğleden sonra 2'den tam olarak 0,23423523 saniye sonra bir tuşa bastığınızı görebilir. Bu tuş basışlarıyla ilişkili belirli zamanlardan yeterince kavrayın ve "gerçek" bir rastgele sayı oluşturmak için kullanabileceğiniz bir entropi kaynağına sahip olacaksınız. Öngörülebilir bir makine değilsiniz, bu nedenle bir saldırgan bu tuşlara bastığınız anı tam olarak tahmin edemez. Linux'ta rastgele sayılar üreten, "bloklar" yapan ve gerçekten rastgele bir sayı döndürmek için yeterli entropi toplayana kadar bir sonuç döndürmeyen / dev / random aygıtı.

Sözde Rastgele Sayılar

Sözde rasgele sayılar, "gerçek" rasgele sayılara bir alternatiftir. Bir bilgisayar, rastgele görünen, ancak gerçekte öngörülebilir olan sayılar üretmek için bir çekirdek değeri ve bir algoritma kullanabilir. Bilgisayar ortamdan rastgele herhangi bir veri toplamaz.

Bu her durumda mutlaka kötü bir şey değildir. Örneğin, bir video oyunu oynuyorsanız, o oyunda meydana gelen olayların "gerçek" rasgele sayılardan mı yoksa sözde rasgele sayılardan mı kaynaklandığı gerçekten önemli değildir. Öte yandan, şifreleme kullanıyorsanız, bir saldırganın tahmin edebileceği sahte rasgele sayılar kullanmak istemezsiniz.

Örneğin, bir saldırganın sözde rasgele sayı üretecinin kullandığı algoritmayı ve çekirdek değerini bildiğini varsayalım. Ve diyelim ki bir şifreleme algoritması, bu algoritmadan sözde rasgele bir sayı alır ve bunu herhangi bir ilave rasgelelik eklemeden bir şifreleme anahtarı oluşturmak için kullanır. Bir saldırgan yeterince bilgi sahibi olursa geriye doğru çalışabilir ve bu durumda şifreleme algoritmasının seçmiş olması gereken sahte rasgele sayıyı belirleyerek şifrelemeyi kırabilir.

NSA ve Intel'in Donanım Rastgele Sayı Üreticisi

Geliştiriciler için işleri kolaylaştırmak ve güvenli rasgele sayılar oluşturmaya yardımcı olmak için Intel yongaları, RdRand olarak bilinen donanım tabanlı bir rasgele sayı üreteci içerir. Bu çip, işlemci üzerinde bir entropi kaynağı kullanır ve yazılım talep ettiğinde yazılıma rastgele sayılar sağlar.

Buradaki sorun, rastgele sayı üretecinin aslında bir kara kutu olması ve içinde ne olduğunu bilmiyoruz. RdRand bir NSA arka kapısı içeriyorsa, hükümet yalnızca bu rastgele sayı oluşturucu tarafından sağlanan verilerle üretilen şifreleme anahtarlarını kırabilirdi.

Bu ciddi bir endişedir. Aralık 2013'te, FreeBSD'nin geliştiricileri, güvenemeyeceklerini söyleyerek RdRand'ı doğrudan bir rastgelelik kaynağı olarak kullanma desteğini kaldırdılar. [Kaynak] RdRand cihazının çıktısı, ilave entropi ekleyen başka bir algoritmaya beslenecek ve rastgele sayı üretecindeki herhangi bir arka kapının önemi olmayacaktı. Linux zaten bu şekilde çalıştı ve RdRand'den gelen rastgele verileri daha da rastgele hale getirdi, böylece arka kapı olsa bile öngörülebilir olmayacaktı. [Kaynak] Reddit'te yakın zamanda yayınlanan bir AMA'da ("Bana Her Şeyi Sor") Intel CEO'su Brian Krzanich bu endişelerle ilgili soruları yanıtlamadı. [Kaynak]

Tabii ki, bu muhtemelen Intel yongaları ile ilgili bir sorun değildir. FreeBSD'nin geliştiricileri, Via'nın çiplerini adıyla da çağırdı. Bu tartışma, gerçekten rastgele olan ve öngörülemeyen rastgele sayılar üretmenin neden bu kadar önemli olduğunu gösteriyor.

"Gerçek" rasgele sayılar üretmek için rasgele sayı üreteçleri, çevrelerindeki fiziksel dünyadan "entropi" veya görünüşte rasgele veriler toplar. Gerçekten rastgele olması gerekmeyen rastgele sayılar için, sadece bir algoritma ve bir çekirdek değeri kullanabilirler.

Resim Kredisi: Flickr'da rekre89, Flickr'da Lisa Brewster, Flickr'da Ryan Somma, Flickr'da huangjiahui