Bilgisayarlar Rastgele Sayılar Nasıl Üretiyor?
Bilgisayarlar, kriptografiden video oyunlarına ve kumar oynamaya kadar her şey için rasgele sayı üretir. İki rasgele sayı kategorisi vardır - “doğru” rasgele sayılar ve sözde rasgele sayılar - ve fark şifreleme sistemlerinin güvenliği için önemlidir.
Bilgisayarlar, fare hareketleri veya fan gürültüsü gibi bazı dış verileri gözlemleyerek tahmin edilemeyen ve ondan veri oluşturarak rastgele sayılar üretebilir. Bu entropi olarak bilinir. Diğer zamanlarda bir algoritma kullanarak “psödorandom” sayıları üretiyorlar, böylece sonuçlar rastgele görünmese de.
Bu konu son zamanlarda daha tartışmalı hale geldi, birçok insan Intel'in yerleşik donanım rastgele sayı üreteci yongasının güvenilir olup olmadığını sorguluyor. Neden güvenilir olmadığının anlaşılması için, rastgele sayıların ilk olarak nasıl üretildiğini ve ne için kullanıldığını anlamak zorundasınız..
Rastgele Sayılar Ne İçin Kullanılır?
Rasgele sayılar binlerce yıldır kullanılmaktadır. Yazı tura atmak ya da zar atmak olsun, amaç sonuçtan rasgele şansa bırakmaktır. Bir bilgisayardaki rastgele sayı üreteçleri benzerdir - öngörülemeyen ve rastgele bir sonuç elde etmeye çalışırlar.
Rasgele sayı üreteçleri birçok farklı amaç için kullanışlıdır. Kumar oynamak için rastgele sayılar üretmek veya bir bilgisayar oyununda öngörülemeyen sonuçlar oluşturmak gibi açık uygulamalardan başka, rastgele şifreleme için önemlidir.
Şifreleme, saldırganların tahmin edemediği sayıları gerektirir. Aynı numaraları tekrar tekrar kullanamayız. Saldırganların onları tahmin edememesi için bu sayıları çok öngörülemeyen bir şekilde üretmek istiyoruz. Bu rasgele sayılar, kendi dosyalarınızı şifreliyorsanız veya yalnızca İnternet’te bir HTTPS web sitesi kullanıyorsanız, güvenli şifreleme için gereklidir..
Gerçek rastgele sayılar
Bir bilgisayarın nasıl rastgele bir sayı üretebileceğini merak ediyor olabilirsiniz. Bu “rastgelelik” nereden geliyor? Bu sadece bir bilgisayar kodu parçasıysa, bilgisayarın ürettiği sayıların tahmin edilebilir olması mümkün değil mi??
Genellikle bilgisayarların ürettikleri rasgele sayıları, nasıl üretildiklerine bağlı olarak iki türe ayırırız: “Gerçek” rasgele sayılar ve sözde rasgele sayılar.
“Doğru” rasgele bir sayı üretmek için, bilgisayar, bilgisayarın dışında gerçekleşen bir tür fiziksel olguyu ölçer. Örneğin, bilgisayar bir atomun radyoaktif bozulmasını ölçebilir. Kuantum teorisine göre, radyoaktif bozulmaların ne zaman gerçekleşeceğinden emin olmanın bir yolu yoktur, bu yüzden bu aslında evrenden “saf rastgelelik” tir. Saldırgan, radyoaktif bozulmanın ne zaman olacağını tahmin edemez, bu yüzden rastgele değerini bilemezler.
Daha günlük bir örnek için, bilgisayar atmosferik gürültüye güvenebilir veya klavyenizdeki tuşlara tam olarak basma süresini öngörülemeyen bir veri kaynağı veya entropi olarak kullanabilir. Örneğin, bilgisayarınız saat 2'den sonra tam olarak 0.23423523 saniyede bir tuşa bastığınızı fark edebilir ... Bu tuşa basmalarla ilişkili belirli zamanlardan yeterince yakalayın ve “gerçek” rasgele oluşturmak için kullanabileceğiniz bir entropi kaynağına sahip olacaksınız. numara. Tahmin edilebilir bir makine değilsiniz, bu nedenle bir saldırgan bu tuşlara bastığınız anı kesin olarak tahmin edemez. Linux'ta rastgele sayılar üreten / dev / random aygıtı "engeller" ve gerçekten rastgele bir sayı döndürecek kadar entropi toplayana kadar bir sonuç döndürmez.
Sahterandom Sayıları
Sahte rasgele sayılar “gerçek” rastgele sayılara bir alternatiftir. Bir bilgisayar, rastgele görünen ancak aslında tahmin edilebilir görünen sayıları üretmek için bir tohum değeri ve bir algoritma kullanabilir. Bilgisayar çevreden herhangi bir rastgele veri toplamıyor.
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ılarla mı yoksa sahte rasgele sayılarla mı kastedildiği önemli değildir. Öte yandan, şifreleme kullanıyorsanız, bir saldırganın tahmin edebileceği sahte ve sayıları kullanmak istemezsiniz..
Örneğin, bir saldırganın sözde rasgele sayı üretecinin kullandığı algoritmayı ve tohum değerini bildiğini varsayalım. Ve diyelim ki bir şifreleme algoritması bu algoritmadan sözde bir sayı alır ve herhangi bir ek rasgele eklemeden bir şifreleme anahtarı üretmek için kullanır. Eğer bir saldırgan yeterince biliyorsa, geriye doğru çalışabilir ve şifreleme algoritmasının bu durumda seçmiş olması gereken sahte numarayı belirleyebilir ve ş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 üretmeye yardımcı olmak için Intel çipleri, 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 bunları istediğinde yazılıma rastgele sayılar sağlar.
Buradaki problem, rasgele sayı üretecinin esasen kara bir kutu olmasıdır ve içinde neler olup bittiğini bilmiyoruz. RdRand bir NSA arka kapısını içeriyorsa, hükümet yalnızca bu rasgele sayı üreticisi tarafından sağlanan verilerle oluşturulan şifreleme anahtarlarını kırabilir.
Bu ciddi bir endişedir. Aralık 2013'te, FreeBSD'nin geliştiricileri RdRand'ı doğrudan rastgele bir kaynak olarak kullanma desteğini kaldırarak güvenemeyeceklerini söylediler. [Kaynak] RdRand cihazının çıktısı, rasgele sayı üretecindeki herhangi bir arka kapının önemli olmamasını sağlamak için ek entropi ekleyen başka bir algoritmaya beslenir. Linux zaten bu şekilde çalıştı, RdRand'dan gelen rastgele verileri daha da rastgele ayarlayarak bir arka kapı olsa bile tahmin edilebilir olmayacaktı. [Kaynak] Reddit hakkındaki yakın tarihli bir AMA'da (“Bana Bir Şey Sor”), Intel CEO'su Brian Krzanich bu endişelerle ilgili soruları cevaplamadı. [Kaynak]
Tabii ki, bu büyük olasılıkla Intel çiplerinde sadece bir sorun değil. FreeBSD'nin geliştiricileri Via'nın fişlerini de ismiyle çağırdı. Bu tartışma, gerçekten rastlantısal ve öngörülebilir olmayan rastgele sayılar üretmenin neden bu kadar önemli olduğunu gösteriyor.
“Gerçek” rasgele sayılar üretmek için, rastgele sayı üreteçleri etraflarındaki fiziksel dünyadan “entropi” veya görünüşte rastgele veriler toplar. Olmayan rasgele sayılar için Gerçekten mi rastgele olması gerekir, sadece bir algoritma ve bir tohum değeri kullanabilirler..
Resim Kredisi: Flickr'da rekre89, Flickr'da Lisa Brewster, Flickr'da Ryan Somma, Flickr'da huangjiahui