[linux-programlama] Re: makineler ve rasgele sayi uretimi

---------

From: Serdar KÖYLÜ (serdarkoylu@fisek.com.tr)
Date: Sun 10 Aug 2003 - 19:02:23 EEST

  • Next message: Halil Demirezen: "[linux-programlama] timer sonrasi registerler."

    Selamlar..

    On Sun, 10 Aug 2003 18:01:27 +0300
    Tongu=E7 Yumruk <tongucyumruk@interaktif.gen.tr> wrote:
    >=20
    > "Deterministik y=F6ntemlerle tesad=FCfi say=FD =FCretmeye kalkan adam
    > kesinlikle b=FCy=FCk bir g=FCnahk=E2rd=FDr"

    Haklidir. Bir seed degeri varsa, her zaman icin ayni tekrarlayan
    sayilari uretmek tek yoldur. Ama aslolan bu seed degerini olabildigince
    random uretebilmektir. Bu ise bir hayli mumkundur.

    i810+ chipsetleri, silikonun kuantum surtunmelerinden kaynaklanan anlik
    radyasyon (isi olarak belirlenir, sicaklik degil) degerlerini okuyabilen
    bir duzenege sahiptir. Bu duzenekten son derece rasgele sayilar elde
    edebilirsiniz. Yapmaniz gereken, /dev/intel_rng dosyasini okumaktir:
    major 10, minor 183. Elbette kernele gerekli modulu eklemis olmalisiniz.
    Bu pid vs. degerlerine gore cok daha tahmin edilemez hassasiyete
    sahiptir.

    Diger yandan daha farkli yontemlerle de son derece rasgele sayilar elde
    edebilirsiniz. Mesela bir TV karti. Canli yayin orani yuksek herhangi
    bir kanala ayarlayacaginiz TV kartindan capture edeceginiz herhangi bir
    kac satir, son derece rasgele olacaktir. Hatta karti hic bir kanala
    ayarlamazsaniz daha rasgele bir sonuc elde etmeniz mumkundur, ama aralik
    cok daha dardir.=20

    Aynisini radyo ile, canli yayin yapan bir istasyon icin
    deneyebilirsiniz. Radyo'yu ayarlayin. Bilhassa parazitli bir kanal
    bulun. Sonra ses kartina baglayin. 12 Bit hassasiyetinde random sayi
    elde edersiniz. Gerci dinamik mevzusu yuzunden bu 6 Bit filan civarinda
    kalir ama iki stereo kanaldan gelen 12 Bit, kisa bir bekleme (en az 3
    periyot, kabaca 2 ms) sonra okunacak bir diger degerle bunu harmanlamak
    mumkundur. Boylece sayi araligini cok daha buyutebilirsiniz.

    Tek basina ses kartida bir hayli etkili bir rasgele sayi ureteci
    olabilir. Bilhassa bir mikrofon takiliysa. Kazanci (kayit ses ayari)
    maksimuma getirip 3-5 tane degeri okuyarak bunlari rasgele sayi olarak
    kullanabilirsiniz.

    Bu ureteclerin hepsi bir tur Pembe gurultu jeneratoru gibi calisir. Buda
    yeterince rasgele degerler uretmek icin kafidir. i810 rng, digerlerinden
    cok daha hassas sekilde cok daha genis aralikta cok daha hizli random
    sayi uretebilir. Onun avantaji budur. Ama diger yontemlerde cok rasgele
    sayilar uretmenize yardimci olur. Basitce ses kartinizi radyoya
    baglayin, yada bir mikrofon takin, o da yoksa mikrofonun ses ayarini
    sonuna kadar acin sadece. Veya TV kartinizin antenini cekin. sonra cat
    /dev/dsp yazip bir bakin. TV karti icin de /dev/video deneyebilirsiniz.
    Ekranda akip giden seylerin ne kadar rasgele oldugunu gorunce
    sasiracaksiniz. Ama son derece rasgele tekrarlayan son derece kisitli
    degerler gormeniz mumkun. Demekki bir kac sample'i harmanlamak makul bir
    cozum olacaktir. Ne kadar yayinda parazit varsa, rasgelelik dereceside o
    kadar yuksek olacaktir. Ama, soyledigim gibi, dogrudan degerleri degil,
    ornegin 8 Baytin son ikiser bitlerini baz alip, 16 Bitlik bir deger elde
    edin. Bu cok daha rasgele olacaktir.=20

    Demekki bilgisayarlar kendi baslarina, en azindan multimedya olanlar,
    rasgele sayi uretebilirmis.=20

    Rasgele sayi uretmekte en emin yollar rasgele olabilen degerleri
    kullanmaktir. Ses ve goruntu icin biz buna parazit ve gurultu deriz.
    Parazitler onceden ongorulemez. Diyelimki, radyoyu temiz bir kanala
    ayarladiniz. Sizinle ayni kanali kullanan cracker sizin ureteceginiz
    sayinin cok yakininda deger uretebilir. Ama ortalikta bir parazit varsa
    sesi bozan, bu parazitin aynisini uretmesi pek mumkun degildir. Bu
    noktada uzun sureler icinde elde edeceginiz degerler dar bir bant icinde
    kalir. Yani diyelimki bu gurultu kulakla duydugunuzda hisirti olarak
    size yansir, mesela 12db yeginliginde, 6 KHz frekansinda. Ama, bunu cok
    hizli incelerseniz, yani ornekleme frekansini (44Khz Ses karti, 10+ MHz
    TV karti) yukseltirseniz, anlik degerlerin cok hizli ve kararsiz
    degistigini gorursunuz. Bilhassa dogru durust cekmeyen bir TV karti,
    mukemmel bir rasgele sayi ureteci olabilir. Ama piril piril gosteren bir
    Digital SAT karti, hic bir zaman rasgele kavramina uyan iki sayi
    uretemez kolay kolay. Burada rasgele sayi, baskalarinin tahmin
    edemeyecegi sayi demektir. Ayni kanali seyreden baskasi derhal sizin
    rasgele sayilariniza ulasabilir kolayca..

    Diger yandan, gurultu denen seyi kodla simule edemeyeceginize gore,
    sadece kod kullanarak rasgele (sahiden de rasgele) sayi uretmeniz mumkun
    degildir. Ama, ornegin dk. da 3 posta gelen mail serverinize gelen son
    10 postanin MD5 degeri bir hayli rasgele olabilir. Iste size yazilimla
    rasgele sayi uretmenin puf noktasi. Bir mailbox acin. Kernel liste, LKD
    listelerine vs. bol mesaj gelen bir kac listeye uye edin. Sonrada
    mailboxlarin hashini cikarin: md5sum
    /var/spool/mail/spamaacikmailhesabi. iste size bir hayli rasgele bir
    deger. Cunku gurultu olarak addedilebilecek onceden kestirelemeyen pek
    cok mesaj gelebilir. Mesajlarin icerikleri ayni olsa bile, alinma
    zamanlari, yollanma zamanlari, message-id'leri vs. cok cok farkli
    olacaktir. O kadarki PING bile bu iste son derece etkli olabilir. Cunku
    networkun hizi ongoremeyeceginiz kadar cok degisebilir.=20

    Diyelimki, bir suru clientiniz var. Masqueradingle internete cikiyorlar.
    Birde squid kurdunuz. Tipik bir internet paylasimi.

    cat /proc/net/ip_conntrack >dosya
    netstat -ant >>dosya

    md5sum dosya

    Son derece mukemmel bir random sayi ureteci olabilir. Apache veya SMB
    kullaniyorsunuz. Loglarini hash edin. Bilhassa su CodeRed Nimda
    kurtlari, C paylasimi arayan script kiddie'ler filan son derece rasgele
    olarak size saldirirlar. IP'ler, zamanlar vs. iste size son derece iyi
    bir rasgele sayi kaynagi. Ne kadar cok hit aliyorsaniz, standart veya
    saldiri amacli, o kadar rasgele bir deger elde edersiniz.

    Demekki, teorik olarak, rasgele sayi ureten bir algoritma yapma
    ihtimaliniz yok. Ama pratikte rasgele sayi bulabileceginiz bir ton yer
    mevcut..

    Saygi ve sevgiler..


  • Next message: Halil Demirezen: "[linux-programlama] timer sonrasi registerler."

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.