Şifreleri şifrelemek

19 Ekim Pazar ´08 01:52
Php'de şifreleri veritabanına kaydederken kullanılan MD5, sha1 gibi fonksiyonlar var. Ama veritabanımızı bir şekilde kötü niyetli birine kaptırdık diyelim. Piyasada bu şifreleme fonksiyonlarının decoderleri var. Yani şifreleri öğrenmesi sorun olmaz değil mi?
Peki şöyle birşey yapsak? Kullanıcı şifrelerini yalnızca sayılardan oluşturulmasına izin versek ve bu şifreleri veritabanına kaydederken kafamıza göre bir işlem yaptıksak olmaz mı? Yani ne bileyim 156 ile çarpıp 342345 ile toplayıp bi daha 9 la çarpsak bilmem kaça bölsekte öyle kaydetsek, yani böyle bir fonksiyon yazıp kaydetsek ve buna göre kontrol için tekrar geri alsak olmamı?
19 Ekim Pazar ´08 06:43
decoder değil o araçlar. md5 birileri tarafından kırıldı vs deniyor ama piyasada tam bir geri çevirme durumu söz konusu değil.

decoder diye geçinene araçlar/siteler ise ellerinde milyonlarca kelime ve şifre olabilecek şeyin md5'lerinin veritabanı var. eğer hash eşlemeye uyuyorsa çözebiliyorlar. Basit bir şifreniz yoksa muhtemelen çözülmeyecektir.

Söylediğin şeyler mantıklı. Bir yandan da paranoyakça. Ama eğer alışveriş sitesi gibi kritik üye işlemleri ile hareket eden bir kod yazıyorsan yapılması mantıklı. Ama bu iş için sadece rakamdan şifre istemeye de gerek yok.
Normal karakterleri de ascii-lere çevirip üzerlerinde işlem yapabilirsin. Ne kadar paranoyak olduğuna bağlı   :-)
İstersen 1 sayfa kod yazarak çorba edebilirsin. En son da md5 + sha1 alırsın.

Ama çözülmeyecek diye birşey yok. Veritabanını çalan kodunu da çalar.
20 Ekim Pazartesi ´08 01:58
Şöyle bişe yapabilrsin piyasada Vbulletin ve Invision Power Board forum sistemleri var bunların şifreleme mantıgını kulanabilrsin suan için yaygın olan bi yöntem örnek verelim

Vbulletin için hash{hash+hew}
IPB için hash{hash*hew}

matığında dayanan bir yapı vardır bunları kullanabilrsin

HEW dediğim security ID gibi güvenlik basamğıdır fazla bu konu hakkında Ing ve Tr bilği bulamazsın ama bunu kullanmanı önerimim mantıkda şöyle

mesala senin şifren 123456
ilk önce şifren md5 şifrelem yöntemi ile hash haline yani şifrenin şifrelenmiş haline çevrilir güvenlik basamağıyla toplanır tekrar md5 hash haline dönüştürlür tabi bu IPD de çarpan şeklindedir Vbulletin in HEW üç basamklıdır ABC şeklinde düşün Mysql DB sine bakkarsan "3}C" "6&}" gibi 3 basamaklı HEW güvenlik kodlarını görebilrsin IPB ise HEW 4 basamaklıdır ve çarpan olduğu için şuan için fprum sys içinde en zor kırılabilen hash yapısına sahiptir.

Gelelim MD5 kırılmasına rainbows table dediğimiz tüm sayı fonksiyon basmak ascii charckerleri içine alan düzinlere şeklinde 200Gb boyutuna bile ulşan rainbow tabloları gördüm bunlarla hertürlü crpto yapsını kırma olasılığın var ama günümüz DB hırsızları Online MD5 Hash Databaselerini kullanır bunlarda daha önceden kırılmış hash ları içeren DB lerden sorgu şeklinde olur eğer herhangi bir MD5 kırıcı bir program ile şirfre kırmayı denersen bu işin sandığından kolay olmadığını görceksin
Çünkü hash'ın şifrelenmeden önceki basmağını ve içinde ascıı gibi özell sayı harf kombinasyonlarını bilmediğinden Dictionary Attack (Sözlük Saldırsı) yada Genelde Word List Attack olarak bilinen (Kelime Saldırsı) kullanılır bunlarda elinde nekadar daha önceden sözcük halinde bulunan sonradan hash formuna getirilmiş şifre yada kırılımış şifre sayına bağlıdır 2. Olarak Brute Force (Kaba Kuvvet) Şifre üretip deneme yanılma ile Basamak Basamak Harf,Rakam,AsCII gibi tümleşik kırdırma yaptırarak kırılabilir.

Gellelim HEW şifre kırmaya buda kırıyor ama şöyle türkçe bi kaynak yok zaten bende acıklamak istemiyorum ama şöyle diyelim normal olarak md5 lenmiş 123456 değeri ile HEW ile şifrlenmiş Hash girdisinin kırılması arasından min 4-5 saat den başalayan bir oran vardır bir Md5 in kırılma süresini 10 ğün dersen HEW li yapıya sahip bir hash ın kırılması 100 ğünden fazla anlamına gelir. Ama Bunu Yapmanın Çözüm Olduğu anlamına gelmez DB ğüvenliği için scripti php de authentication sınıfıyla güçlendirmen gerekli ve veri tabanın erişim engellemen lazım en basitinden config dosylarını crptolayarak ğüvenliğe başlamanı öneririm.
20 Ekim Pazartesi ´08 10:08
Bu yoğun bilgiler için teşekkür ederim. Benimde bahsettiğim örnek forumlardaki gibi kendine özgü bir şifreleme sistemimizin olması. Ama görünen o ki forumların şifreleme sistemi biliyor artık   :-)

"Piyasada decoder var" demiştim ilk yazımda, aslında yanlış oldu kusura bakmayın. Fazla araştırmadım çünkü. Google a yazıp çıkan başlıklara bakmıştım sadece.

Php de güvenlik başlıklı dökümanlar bekliyoruz ayrıca   :-)
25 Ekim Cumartesi ´08 17:07
Çok merak ettim bu konuda ne ilgini çekti? Google da ne aradında seni buraya gönderdi?
Üye Resmi Mehmet Tahta
25 Ekim Cumartesi ´08 19:54
Kesinlikle gerizekalı. Bence.
Bu arada bilgiler için teşekkürler
27 Ekim Pazartesi ´08 08:36
Şifrelerin şifrelenmesi konusunda bende de biraz paronayaklık var galiba (: daha önceleri senin de dediğin gibi epy şifreleme yönetimi vs. kurdum planladım; kimisini yaptım kimisini yapamadım ama olayı kasmanın da fazla bir manası olmuyor...

Olay yeterince basit düşünüldüğünde daha değişik koruma fikirleri çıkabiliyor.

Ayrıca işin güvenlik kısmı ile ilgileniyorsan "SQL Sütun Kesintisi Açıkları" olayını da araştır. Belki biliyorsundur bilmiyorum ...

Kolay Gelsin - iyi çalışmalar
7 Aralık Pazar ´08 12:57
en basitinden şifreleri maskelerken kullanıcıların yapabilceği basit şifre hatalarına karşılık. Bir kaç işlemden geçirip öyle db e kaydedebilirsin şifreleri.

Birkaç işlemden kasıt bir kaç hash yada işlem kombinasyonu olabilir.

Örneğin md5(kullanıcışifresi + seninbelirleyeceğin özel bir sonek)

şeklinde olabilir....

örnek vermek gerekirse

$userpass = '123456';
$suffix = 'x846sd659s'; //salladım   :-)

$passhash = md5($userpass.$suffix);

diye maskeleyebilirsin en basitinden tabi geridöşüm db lerinde böyle bir hash bulunamayacağından sıkıntı olmayacaktır.

Kullanıcıyı login ederken yine aynı şekilde db le karşılaştırırken son eki kullanarak işi çözebilirsin...


Ha tabi bunları çoğaltabilirsin.

2 kez md5 ten geçirme
sonuna yada başına özel bir key ekleme

gibi şeyler türetebilirsin her türlüsü sağlıklı olacaktır.

mfyznin dediği gibi md5 geri dönüşümü alogaritmik olarak mümkün olacak bir hash yapısı değildir. yani base64 vs gibi bir alogaritmaya sahip değildir. Hemen hemen her hash benzersizdir tabiki kombinasyon mikrarı sınırlı da olsa bu sınır oldukça fazla olasılığa sahiptir.

Piyasada decoder diye geçinen web araçları bilinen hashleri db lerden karşılaştırarak size sonuç gösterir
yani 123456 nın md5 hash ını rahatlıkla size 123456 dır diyebilir ama bu geri dönüşüm işlemi değil karşılaştırma işlemidir.

Bir 2. yol ise bruteforce denen olasılık deneme sistemiyle olur var olan hash ı bulana kadar sisteme hash aldırırsınız bu da ölme eşşeğim ölme sistemidir   :-)  zordur sistemi yorar oyalar sonuç garanti değildir bulamayada bilir gibi....
Üye Resmi Ad soyad
1 Mart Çarşamba ´17 09:08
Burada web programcılığından anlayan varmı
Cevap *
İletişim Bilgileri
*
*
E-Posta adresiniz gösterilmeyecektir.
(unut)
Güvenlik Kodu *

Gönderiliyor