Database - Veritabanı
Database Şifre Saklama Ve Okuma Mantığı Hakkında Merak Ettiklerim
Database Şifre Saklama Ve Okuma Mantığı Hakkında Merak Ettiklerim
-
Şimdi hocalar Veriatabanı ve şifre algoritmaları üzerine bilgili arkadaşlara kafama takılan bir kaç soruyu sormak sitiyorum beni bilgilendirirlerse sevinirim yazılım tarafıyla pek alakam olmadığından bilmiyorum veritabanı ve algoratima üzerinede hiç eğitimim yok matematiğimde iyi değil baştan söyleyeyim dalga geçmeyin bu konuyla şimdi sorum şu
şimdi diyelim şifrem serdar ve yazılımda md5 ile şifreleme sistemi var ve buna çevirdi "11a37959e906860a34392f586e544fd3"database de sakladı şifre alanına serdar yazdığımızda md5 li halinin bu olduğunu kurulu yazılım script vs her neyse biliyor değilmi sistem şu şekilmi çalışıyor
Atıyorum sisteme her giriş yaptığımızda sistem otomatik "serdar" olan şifremizi md5 e çevirip veritabanında var olan sütun satırda bu "11a37959e906860a34392f586e544fd3" md5 le eşleştiğini görüp mü bizi içeri alıyor ?
yoksa başka bir yöntemimi var bu olayın ?
şimdi serdar kelimesini md5, sha1, sha2 base64 vs vs hepsine çeviren yazılım ve scriptler hazırlanabiliyorda bunun tam tersini çözecek vericek scriptler yazılımlar neden hazırlanamıyor ters işlem yaptırılmıyor
"11a37959e906860a34392f586e544fd3" neden serdar a çeviremiyoruz ? da brute force ile doğrulatarak buluyoruz ? -
tek yönlü diye biliyorum yanlışım olabilir ama anlatayım hocam. şifreler sayı olsun ve iki haneli olsunlar.
yani 57 diyelim şifreye
hash işlemi yaparken modülüs işlemi yapıyor türkçede mod galiba. bu benim hash yöntemim
senin şifren 57 ise ben mod 7 alıyorum şifren ne olursa olsun. sonuç 1 değil mi? bu 1 sonucu hash yani çıkan şifre. ben eğer 57 i elde etmeye çalışırsam denemek zorundayım. senin şifren 15 ,22,29,36,43,50,57,64 olabilir ve bu devam eder. yani iki farklı şifrenin tek hash sonucu olabilir. bu rastanmış bir şeydir , iki pdf dosyasının tek md5 çıktısı bulunmuştur. bu verdiğim örnek bir ara incelediğim basit bir örnekten aklımda kalanlar. md5 vs daha karmaşık olsa da mantık aynı.
KizilS tarafından 25/May/15 22:15 tarihinde düzenlenmiştir -
Kafan şurada karışmış, Hash ve Encryptionun mantığı konusunda sıkıntıların var.
Hash : boyutu veya uzunluğu sabit olmayan bir verinin, tek yönlü bir fonksiyona sokulup, sabit boyutlu bir veri elde etme işlemi.
Encryption : Yani şifreleme, verinin, bir şifre ile (tabi şifresiz de olabilir) çift yönlü bir fonksiyona sokulması sonucu oluşan anlamlı olmayan veri bütünü.
Sen serdardan 32 karakter elde ettiğin için, lan bu buna geri dönüşebilirmiş gibi görünüyor diyorsun, bende diyorumki windows 8 in 4 gblık isosunu aynı fonksiyona soktuğumda da 32 karakterli aynı boyutta bir değer elde edebiliyorum
Bu mantıkla, windows 8 isosunun SHA'sı 22D680EC53336BEE8A5B276A972CEBA104787F62
al hadi bul bakalım yukardaki değerden isoyu geri :)
Not: Login işlemleri içinde evet, ilk kayıt sırasında, şifreni md5 e tabi tutarız ve veritabanına kaydederiz, sonraki her loginde de post ettiğin şifreyi md5 e sokarız ve karşılaştırırız. (Burada ekstra güvenlik önlemleri de var, saltlama gibi ama koumuz bu değil)
Hash ile, verinin doğruluğunu teyit edebilirsin, bozulmadığını teyit edebilirsin fakat veriye geri dönüş yapamazsın, matematiksel olarak mümkün değil
Örnek
X işlemi + Y işlemi = 5 ise X ve Y işleminin ne olduğunu söyleyebilir misin? Hayır, aynı bunun gibi, sadece sonucunu bildiğimiz bir fonksiyon cıktısından bahsediyoruz hashing de.
-
anladım şimdi hocalar ben işlemin boyutu ve biçimi konusunu anlayamamışım düz mantık sayı ve karakter olarak sadece şifre olarak değerlendirmişim dediğin gibi
SeRDaR tarafından 25/May/15 22:28 tarihinde düzenlenmiştir
peki 1-2 sorum daha var
verdiğin örnekte 4 gb lık iso daki veriden sanırım ufacık bir şey bile değiştirsek oynama yapsak hash karşılığı farklı olacaktır doğru mu?
yada bunu sınırı kısıtı var mı? -
SeRDaR bunu yazdı
anladım şimdi hocalar ben işlemin boyutu ve biçimi konusunu anlayamamışım düz mantık sayı ve karakter olarak sadece şifre olarak değerlendirmişim dediğin gibi
peki 1-2 sorum daha var
verdiğin örnekte 4 gb lık iso daki veriden sanırım ufacık bir şey bile değiştirsek oynama yapsak hash karşılığı farklı olacaktır doğru mu?
yada bunu sınırı kısıtı var mı?yok hocam tek bir bit değişse doğal olarak hash da değişiyor. yukarda bahsetmiştim farklı dosyaların aynı hash i olabiliyor diye teorik olarak böyle bol sıfırlı bir ihtimalde bir olabilir oynadıktan sonra aynı kalması.
-
Teorik olarak kendinde test edebilirsin,
büyük bir word dosyası bul internetten, yada büyük bir text dosyası
http://www.nullriver.com/ dan md5 toolunu bul, ben bunu kullanırım hep
bununla md5ini al.
sonra textin içinden bir harfi değiştir, sonra yeniden al md5 ini o zaman anlayacaksın.
Pratik olarak, karışma mevzusu var, ingilizce wikide bunula ilgili örnek var, Collision vulnerabilities bölümüne baktığında
d131dd02c5e6eec4 693d9a0698aff95c 2fcab58712467eab 4004583eb8fb7f89 55ad340609f4b302 83e488832571415a 085125e8f7cdc99f d91dbdf280373c5b d8823e3156348f5b ae6dacd436c919c6 dd53e2b487da03fd 02396306d248cda0 e99f33420f577ee8 ce54b67080a80d1e c69821bcb6a88393 96f9652b6ff72a70
d131dd02c5e6eec4 693d9a0698aff95c 2fcab50712467eab 4004583eb8fb7f89 55ad340609f4b302 83e4888325f1415a 085125e8f7cdc99f d91dbd7280373c5b d8823e3156348f5b ae6dacd436c919c6 dd53e23487da03fd 02396306d248cda0 e99f33420f577ee8 ce54b67080280d1e c69821bcb6a88393 96f965ab6ff72a70
her iki dosyanında md5 inin 79054025255fb1a26e4bc422aef54eb4 olduğunu söylüyor, bu bir karışıklık durumu örneğin.
http://en.wikipedia.org/wiki/MD5 burada ayrıntısı yazıyor.
renegadealien tarafından 25/May/15 22:38 tarihinde düzenlenmiştir -
Ahha tam benlik bir konu :)
Uzuun uzun anlatayım...
Soru 1) şimdi diyelim şifrem serdar ve yazılımda md5 ile şifreleme sistemi var ve buna çevirdi "11a37959e906860a34392f586e544fd3"
database de sakladı şifre alanına serdar yazdığımızda md5 li halinin bu olduğunu kurulu yazılım script vs her neyse biliyor değilmi sistem şu şekilmi çalışıyor
Atıyorum sisteme her giriş yaptığımızda sistem otomatik "serdar" olan şifremizi md5 e çevirip veritabanında var olan sütun satırda bu "11a37959e906860a34392f586e544fd3" md5 le eşleştiğini görüp mü bizi içeri alıyor ?
yoksa başka bir yöntemimi var bu olayın ?Cevap 1) İlk önce MD5 nedir onu anlatayım.
MD5 dediğimiz aslında bir hash (karıştırma) algoritmasıdır. Asıl amacı, veri bütünlüğünü sorgulamaya imkan vermektir.
Veri bütünlüğü ne demektir ? Mesela bazen internette gördüğümüz program download sitelerinde, programın yanında MD5 bilgisini de verirler.
MD5 öyle bir algoritmadır ki, sorgulanacak olan nesnenin 1 bit inde değişiklik olması halinde MD5 sonucu çok değişik olmaktadır.
Bu nedenledir ki, MD5 bilgisiyle indirmekte olduğumuz dosyanın üzerinde herhangi bir değişiklik yapılıp yapılmadığını sorgulayabiliriz.
Wikipedia da MD5 maddesi http://tr.wikipedia.org/wiki/MD5Türkçe Wiki de pek detaylı bilgi yok ama asıl detaylı bilgi ingilizce wiki de. http://en.wikipedia.org/wiki/MD5Şimdi gelelim senin login soruna.
Kullanıcı adları ve şifreleri bir tablo da tutulur.
Kullanıcı adları düz metin olarak tutulurken, şifreler MD5 ile hash lenerek tabloya yazılır.
Kullanıcı adı - şifre girdiğimizde, girilen şifre MD5 ile hashlenerek veritabanındaki değer ile karşılaştırılır.
Kullanıcıadı ve MD5 ile hashlenmiş şifre veritabanındaki ile uyumlu ise sistem kullanıcıyı içeri alır.
Soru 2 ) şimdi serdar kelimesini md5, sha1, sha2 base64 vs vs hepsine çeviren yazılım ve scriptler hazırlanabiliyorda bunun tam tersini çözecek vericek scriptler yazılımlar neden hazırlanamıyor ters işlem yaptırılmıyor
"11a37959e906860a34392f586e544fd3" neden serdar a çeviremiyoruz ? da brute force ile doğrulatarak buluyoruz ?Cevap 2) MD5, Sha-1 ve Sha-2 de kullanılan algoritmalar, tek yönlü çalışan algoritmalardır.
Yani çıktıyı tersine takip ederek şifreyi bulamıyoruz.
Bu aynen, suya şeker atmaya benzer, şekeri suda erittikten sonra su ile şekeri nasıl ayıramıyorsak, tek yönlü çalışan algoritmalarda da çıktıyı tersine çalıştırarak şifreyi bulamıyoruz.
Gerekli kaynaklar. http://tr.wikipedia.org/wiki/SHA-1http://tr.wikipedia.org/wiki/SHA-2
http://bidb.itu.edu.tr/seyirdefteri/blog/2013/09/08/sha1-%C5%9Fifreleme-metoduBurada yalnız Base64 için ayrı bir parantez açmalıyım.
Base64 in asıl amacı, modem ile internete girildiği çağlarda özellikle emaillerde veri kaybını önlemekti.
Base64 geri dönüşümlü bir algoritmadır. Yani bir veriyi Base64 ile dönüştürüp, geri dönüşüm yapabiliyoruz. -
Anlıyorum çözdüm olayı
SeRDaR tarafından 25/May/15 22:50 tarihinde düzenlenmiştir
birde bu Karışma mevzusu çok sık değilse binde birse hiçbir sıkıntı zaten yaratmaz diye düşünüyorum
Çok Teşekkür ederim cevaplarınız için
Not: o yüzden paylaşılan programlara ek olarak hash inide yazıyorlar mesela totalvirus scannerde bile var adam kriptoladıysa yada içeri değiştirip bir şey eklediyse farklı bir program olarak değendiriyor ve yeniden tarıyor fakat program değişmediyse aynı hash ile eşleştiğini görünce aynı sonucu çıkartıyor -
konuyla alakası pek yok ama merak ettiğim bir soru var tek exelik bir yazılımı hex editörü ile açıp hex kodlarını alsak daha sonra başka bir pc de hex editörüne bu kodları yapıştırıp kaybetsek uygulama çalışırmı ?
-
Tahribatta özlenen başlıklardan biri :) Verilen cevaplar döküman bölümüne eklense yeridir... Soruyu okuyunca aynı sorunların bendede var olduğunu farkettim, o ana kadar farkında değildim veya soruyu soran arkadaş iyi yönlendirdi kendi bilinmezliğine beni..
Neyse Teşekküler...
-
furkiak bunu yazdı
konuyla alakası pek yok ama merak ettiğim bir soru var tek exelik bir yazılımı hex editörü ile açıp hex kodlarını alsak daha sonra başka bir pc de hex editörüne bu kodları yapıştırıp kaybetsek uygulama çalışırmı ?
Çalışır. Sonuçta o hex kodları makina komutları ve datalar. Sırasını bozmaz, hiçbir hex bitini değiştirmezsen çalışır. Olası bir değişiklikte ne olur? : Herşeyin sırası kayar, çok fantastik şeyler olabilir :D
Ekleme yapayım biraz:
http://en.wikipedia.org/wiki/List_of_file_signatures
Şurda yazanlar dosya başlıkları, yani şöyleki burdaki değerlerden exeye bakarsan "4D 5A"yı görürsün, sen hangi exeyi açarsan aç ilk 4 hex biti budur, dosyanın executable olduğunu belirtir. Devamındaki hex kodlarıda işlemcinin komut setinde kayıtlı olan komutlar ve datalardır. Mesela atıyorum INC komutu, "INC R1" dediğimde register 1 içindeki değeri bir arttır demiş oluyorum, işlemci INC komutundan sonra sadece değeri arttırılacak olan değişkenin geleceğini biliyor ona göre bu işlemi yapıyor, R1 yazan bellek gözünden sonraki bellek gözün de de kesinlikle bir komut olacağını biliyor. Ha bir sonraki bellek hanesinde komut olmaması durumu? İllaki vardır, en kötü NOP yazar bir hane boşluk olması için :D Hani oturup "Hadi hex olarak bir program yazayım" demedim, ama çalışması bu şekilde diye biliyorum.
wasd tarafından 26/May/15 01:00 tarihinde düzenlenmiştir