Hash sistemleri hakkında!

madBüyük büyük dosyalar yapıyoruz, indiriyoruz.. Sağlam mı acaba indirdiğimiz kopyaladığımız bu dosya diye düşündüğümüzde aklımıza hemen tek bir değer geliyomd5sum! Dosyanın md5sum kontrol numarasını alıyoruz, karşıdaki ile karşılaştırıyoruz, aynıysa dosya sağlam diyoruz.. (Pek bilinmiyor da sha1sumkullananlar da var..)
Neyse, aklıma takılan nokta bu hash sistemlerinin yöntemi..
Biraz kafa yordum da, “Dosyanın rastgele yerlerinden bir değer seçip ona bir değer atayabilir mi?” dedim,olmaz.. Çünkü bir rastgele sayacı kolay kolay aynı numarayı döndermez ki dosyada yeri (doğal olarak kontrol numarası) tutsun..
Belli yerlerinden değer alması tek mantıklı yol, tabi bunun da güvenliğinin sağlanması için dosya boyutunun (byte cinsinden) değişken rol oynatması olabilir, (ancak aynı byte boyutundaki 2 büyük dosyadan bir harfin yeri değişik olsun hash değeri farklı çıkıyor, bu konuya girersek iyice az sonraki teorimi desteklemiş oluruz)..
Diyeceğim şudur ki:
Diyelim ki elimizde 10.999.200 Byte değerinde bir dosya var ve karşı tarafa yolladık. Karşı tarafta hash değeri alınırken byte değerine ve dosyanın belirli yerlerinden alınan örnekler kullanıldı ve her ne kerametse dosya sağlam gönderildiği için bu değerler tuttu..
Hash sistemlerine güvenmemek gerek, ki fazla belge okumadım büyük ihtimalle üreticileri de bunu yazmışlardır, %100 doğru çalışan bir sistem değil, olmaması gerek..
Neden mi? Tersi durumda, yani hash sistemi %100 güvenli, en ufak bir değişiklikte kontrol numarası da değişecek olsa..
10.999.200 byte değerindeki bütün diğer dosyalarda farklı bir hash kontrol numarası değerini vermesi gerekecekti. Bu da o bayt değeri için o hash kontrol numarasını özel yapardı.
O zaman bütün 10.999.200 byte’lık dosyayı yollamamıza gerek kalmazdı :)

Sadece hash kontrol numarası ve “10.999.200″ sayısını gönderirdik, karşı tarafta (teorik bir) reverse-md5 betiği bu değerlerin özel olduğu asıl göndermek istediğimiz dosyayı kendisi üretirdi..
Düşünsene bütün harddiski kopyalayacağına sadece 2 kb veri yolla, karşı taraf üretir..
Hash sistemlerinde hata payı azaldıkça benim dediğim teoriye yaklaşır, çoğaldıkça da güvenilirlik riske girer.. “Çok çok az” hata payı var derseniz, o zaman teorikreverse-md5 betiğimiz o bayt değerinde, aynı md5sum’a sahip 4-5 dosya üretir (olasılıkları). Sonra da sha1sum ya da başka bi ölçüt kullanarak doğruyu eleyip diğerlerini silebiliriz. Yine indirme sıfır, dosya elimde..

Umarım sıkılmadan ve demek istediğimi anlayarak okuyabildiniz. Eğer varsa bilen bi eleman, bunların çalışma-kontrol sisteminin nasıl işlediğini ve güvenlik durumunu anlatırsa çok iyi olur. Gördüğünüz gibi çıldıracam.. deli

Comments (3)

Aydin Tarik ZenginNovember 28th, 2009 at 8:09 am

Tami tamina ayni buyuklukte 2 dosya ayni hash sonucunu verecek diye bir kural yok. Md5 ya da SHA1 sonuclari dosyanin buyukluguyle degil icerigiyle alakali. Soyledigin gibi 100% guvenli degil. Guvenli olmamasinin sebebi de su, algoritmanin ayni hash degerini verdigi farkli dosyalarin tanimlanabilecegi yakin gecmiste ispatlandi. Bu yuzden hash degerlerinin unique oldugunu soylemek mumkun degil. Fakat bu demek degil ki kolayca yapilabilir.
Diger yandan, belirttigin fikrin tikanma noktasi da, hash algoritmalarinin tek yonlu calismasi. Geri cozulemezler. Matematiksel olarak mumkun degil.
Ornegin GRUB bootloader kullanici sifreleri MD5 kullaniyor (Degismedi ise). Kullanici kullanmak istedigi sifrenin hash degerini olusturup config dosyasina giriyor. Ardindan boot sirasinda gercek sifreyi girdiginde, o an girdigi sifre de MD5 ile sifrelenip, config dosyasindaki yine sifreli hali ile karsilastiriliyor. Nedeni az once soyledigim gibi, sifrelenmis verinin geri cozulememesi.

seqizzNovember 28th, 2009 at 1:47 pm

Matematiksel olarak oluşmuş bir değerin geri çözülememesi kafamı karıştırıyor. Bu yazıyı yazdığım zamanlarda öğrenmiştim. Sanırım bir ara birkaç belge okumak giderir bulanıklığı.

cazimDecember 25th, 2009 at 1:25 pm

seqizz geri çözülememe olayı basit
söyle düşün X= 3 mod(12)
X 3,15,27,…. sonsuz olabilir.
geri dönme mekanizması hangisini alacak ?
Yani birkaç ihtimalle olmaz birde iç içe mod gibi bir
durum olduğunda işin içinden çıkılmaz.
Ha imkansız değil ama biraz zaman alır :)

Leave a comment

Your comment