![]()
From: Serdar KÖYLÜ (serdarkoylu@fisek.com.tr)
Date: Mon 11 Aug 2003 - 13:05:22 EEST
Selamlar..
Pentium ve ustu sistemlerde, TSC diye bir sey vardir. 32 Bitlik bir
counter, sistem saatini (jiffies) sayar. Bu islerde kullanilan deger
genellikle bu olur, RTC degil. RTC -> Real Time Clock, TSC - TimeStamp
Counter.
TSC digeri kadar hassas degildir, her X vurusu bir saniye etmez.
Bilhassa isidan cok etkilenir. Bu yuzden seed degeri olarak kullanmak
daha akillicadir.
Random sayi meselesinde bazi arkadaslar ornegin kullanicinin bir onceki
login zamani uzerinden calismak vs. gibi islevlerle ugrasmis.
Burada kacirdigimiz husus su. Matematikte random sayi kavrami yoktur. Bu
gerci agir bir tartisma. Ama genel egilim bu yondedir. Kisacasi
matematik hic bir seyin tesadufi olmadigin iddia eden kaos teorisi ile
bogusmaktadir. Yani siz piyangonun donen toplarinin agirligini, donmeye
baslama konumunu vs. bilyiorsaniz, delikten hangi topun dusecegini
kestirebilirsiniz. Fakat bilmeniz gereken cok sey vardir, bunlarin
hepsini bulamayabilirsiniz. Bu durumda cesitli seylere bakarak hangi
topun dusme olasiliginin daha yuksek oldugunu kestirmeye calisirsiniz.
Iste burada rasgele sayilardan kastedilen sayilar, aslinda tam anlamiyla
rasgele olan demek degil, onceden kestirilmesi cok daha zor olan sayilar
anlamina gelir. Eger urettiginiz sayi az sayida parametreden
etkileniyorsa ve bu parametrelerin kestirilebilirligi yuksekse,
sayinizin da kestirilebilir olmasi daha buyuktur.
Rasgele sayi elde ederken asla tespit edilebilir giris parametreleri
kullanmayin. Su bir onceki login zamani. Cracker bir login yapar zamani
kaydeder, sonra ikinci bir login icin elinde parametrenin biri hazir
olur.
Sistem saatinden alinan seed degerleride cok guvenilir olmaz asla.
uptime komutu, TSC degerinin yaklasik kestirilmesine, date komutda RTC
Degerinin yaklasik kestirilmesine cok faydalidir.
Simdi bunlar rasgelemidir ? Evet, ama bunlarin uretecekleri sayilarin
marjlari onceden kestirilebilir. Yani, 128 Bit sifreleme var ama, siz
bunun 90 Bitini zaten biliyorsunuz gibi bir durum olusur. Bu nedenle
onceden kestirelemeyen ve cok buyuk aralikta degisen degerleri rasgele
sayi olarak kullanmalisiniz.
Burada pratik yontemler, uzun muddet icinde sabit degerli gorunmesine
karsin anlik olarak kestirilemeyen ve hic bir zaman bir formule bagli
olarak artip azalmayan degerleri kullanmaktir. Ornegin bir onceki
mesajimda yazdigim ses karti konusu. RTC veya TSC den elde edilecek
degere gore cok daha rasgeledir. Ama bu deger kartta kullanilan chip'in
giris devresine baglidir. f = 2*SQR(Delta T + Delta C) gibi formullerle
T zaman araliginda C sicakliginda bu isil gurultusu tayin edilebilir.
Sonrada bu degere bakarak olasi degerlerin sayisi cok daha asagiya
cekilebilir. Ama parazitli bir radyodan gelen canli yayinda o anda hangi
sarkinin hangi notasi caldigi kestirilemez. Dahasi TV icin bu cok daha
zordur. Oyleki, 20 M araliktaki iki televizyon CPU'nun olcebilecegi
aralikta resimleri farkli zamanlarda gosterir. gozunuz gormez ama birine
ulasan sinyal otekine daha gec/erken ulasir. Isin icine giren o kadar
bozucu etken olurki, bunlarin hepsini birden parameterize edebilmek
mumkun olmaz. Biz elektronikciler buna gurultu der geceriz. Ama su
rasgele sayi ureten kartlar filan hep bu mantikla is yaparlar.
Ne yapacakmisiz, tek parametreye bagli olmayan, parametre sayisi ve
degerlerinin onceden kestirilmesi olabildigince zor olan, saldirganin
etkileme ve parametreleri zorlama imkani dusuk olan degerleri
kullanarak, bunlarinda mumkun oldugu kadar anlik, genis zamana yayilan
deger degil, degisim yasandigi araligin en kucuk degeri surecini olcerek
rasgele sayi olarak kullanmak gerekiyormus.
Bu tanima en guzel uyan sey bir TV kartidir. Bilhassa kurcalanip tuneri
biraz bozulmus bir TV karti. Bu size son derece rasgele degerler
verebilir. Ama en buyuk dezavantaji, yavas olmasidir. Sizin 4 Frame
uzerinden, 1,2,3,4 H Satirlarindan alacaginiz degerleri satir secme icin
kullanip 128 Satira gore bir hash cikarirsaniz, binlerce dolara satilan
RNG'lerden daha random bir deger elde etmis olursunuz. Fakat bu
saniyeler surebilirki, yukteki bir serveri perisan etmeye yetebilir.
Saygi ve sevgiler..
On Mon, 11 Aug 2003 11:51:27 +0300
"a.kadir altan" <e108193@metu.edu.tr> wrote:
> cok kaba bir hesap yapacagim bakalim ne cikacak:
>
> saat 24*60*60=86400 degisik deger verecektir, gun ise yaklasik (son 1
> yili goz onunde bulundurursan) sana 365 farkli deger verecektir o
> zaman 86400*365=31536000 eder, bu da 25 bitlik bir sayi... gozden
> kacirdigim birsey var mi ? onceki bir mesajda bunu geri donu
su
> olmayan bir fonksiyon(kasit burada hashler sanirim) ile kullanimi
> soylenmisti... hashin ne kadar ongorulemez olmasi onemini yitirecektir
> o zaman... onemli olan girdi uzayinin entropisidir, ki burada 25
> bit...
![]()