Şifre ve Kullanıcı Adı Kontrolü

166307

Kilopat
Katılım
2 Mayıs 2017
Mesajlar
2.418
Makaleler
1
Çözümler
8
Örneğin ben Instangram'a giriş yapacağım. Kullanıcı adımı ve şifremi girdim ve giriş butonuna bastım. Sonrasında işler nasıl ilerliyor?
 
Sen kayıt olurken girdiğin kullanıcı adı ve şifre ile aynı mı diye veri tabanını kontrol ediyor. Ek güvenlik varsa (telefona doğrulama kodu vb.) o devreye giriyor. Sonrasında hesabına giriş izni veriliyor.
Kontrol ettiği şey girdiğin kullanıcı adının karşısındaki şifrenin doğruluğu. Kodu yazan kişiye bağlı olarak giriş yaparken var olmayan bir kullanıcı adı girersen öyle bir kullanıcı adı yok diyebilir.
 
Tüm parolalar veritabanında şifrelenmiş şekilde tutulur. Sizin parolanız oluşturulduğunda veritabanına şifrelenmiş şekilde yazılır. Siz giriş yapmak istediğinizde önce kullanıcı adının var olup olmadığı kontrol edilir, sonrasında kullanıcı adının şifrelenmiş haldeki parolası ile sizin istekte gönderdiğiniz parolanın şifrelenmiş hali karşılaştırılır. Eğer iki değer de eşit ise uygulama sizin olduğunuza ikna olur ve girişinize onay verir.

Tabi bu güvenli bir yetkilenme işlemi, veritabanında şifreleme kullanılması zorunlu değil.
 
Tüm parolalar veritabanında şifrelenmiş şekilde tutulur. Sizin parolanız oluşturulduğunda veritabanına şifrelenmiş şekilde yazılır. Siz giriş yapmak istediğinizde önce kullanıcı adının var olup olmadığı kontrol edilir, sonrasında kullanıcı adının şifrelenmiş haldeki parolası ile sizin istekte gönderdiğiniz parolanın şifrelenmiş hali karşılaştırılır. Eğer iki değer de eşit ise uygulama sizin olduğunuza ikna olur ve girişinize onay verir.

Tabi bu güvenli bir yetkilenme işlemi, veritabanında şifreleme kullanılması zorunlu değil.
Ufak bir ekleme yapayım, genellikle veritabanlarında kullanılan şifreleme algoritmaları geri dönüştürülemez algoritmalardır. Yani veritabanını ele geçiren kişi ya da sitenin sahibi, o şifrelenmiş verilerin ne olduğunu teoride anlayamaz.
 
Algoritma temelini bilen kişi büyük ihtimalle çözebilir şifrelemeyi. Çünkü sistem kıyaslama için şifrelediğini geri çözüyor.
 
Algoritma temelini bilen kişi büyük ihtimalle çözebilir şifrelemeyi. Çünkü sistem kıyaslama için şifrelediğini geri çözüyor.
Hayır, çözemez. Bu algoritmalar geri döndürülemez algoritmalardır. Mantıkları elbette bu örnekten binlerce kez daha karmaşık ancak şöyle düşünün, 4 sayısının 3 ile mod değerini alalım. (Bilmiyorsanız, mod değeri bölme işleminden kalan demektir.) Sonuç 1'dir, aynı şekilde 22 sayısının da 3 ile mod değeri 1'dir. Modu 1 olan sayının ne olduğunu tahmin edemeyeceğiniz gibi, şifrelenmiş metnin de eski halinin ne olduğunu bir algoritma ile bilemezsiniz. Elbette yalnızca mod işlemi değil, arkaplanda çok daha karmaşık işlemler yürüyor. Ek olarak ideal bir Hash algoritmasında, iki değerin aynı veriyi üretmemesi gerekir zira bu güvenlik açığına sebebiyet verir ancak gerçekte böyle değerler mevcuttur, tek istenen minimuma inmesidir.

Aslında sistem şifrelediğini geri çözmüyor. Veriler tekrar çözülemediğinden @35350 arkadaşın da dediği gibi, sizin girdiğiniz değeri tekrar aynı mantıkla şifreleyip, bu şifrelenmiş verinin veritabanında şifrelenmiş olan veri ile aynı olup olmadığını kontrol ediyor. Şifrenizi unuttuğunuzda size şifrenizin gönderilmesi yerine yenisinin verilmesinin sebeplerinden biri de budur.

Peki gerçekten bu algoritmalar ile şifrelenmiş verilerin geri çevrilmesi tamamen imkansız mı? Hayır. Rainbow Attack denen bir yöntem ile çözülebiliyor ancak bu yöntem bir sürü olası şifrenin tekrar bu algoritmalar ile şifrelenmesiyle oluşturulmuş listeler (mesela Excel tabloları) ile kıyaslanmasına dayandığından, hem bu tablolar Terabyte düzeyinde boyutlara sahip oluyorlar, hem de şifrelenmiş veriyi tekrar şifreleyerek kaydederseniz, yani iki kez üst üste şifreleme yaparsanız, bu tablolar çöpe dönüşür. Yalnızca çift şifreleme değil, salting denen bir başka yöntem de mevcut. Bunda da elde ettiğiniz değerin sonuna başka bir değer ekliyorsunuz, veritabanını okuyan yabancı arkadaş gerçek şifrelenmiş metni de anlayamıyor. Ya da şifrelemeden parolaya farklı bir değer koyup öyle şifreliyorsunuz. O zaman da açık şifre değişmiş oluyor. Yaygın kullanılan şifrelerin şifrelenmiş hali de değişiyor, bulunması zorlaşıyor. 🙂
 
Son düzenleme:
Veritabanındaki şifreler, önemli veriler asimetrik olarak geri döndürelemez şekilde şifrelenir. Kullanıcı adını girdiğinizde kullanıcı veritabanında aratılır, yok ise hataya düşersiniz. Var ise girdiğiniz şifre aynı asimetrik şifreleme yöntemi ile şifrelenir ve bulunan kullanıcının şifrelenmiş şifresi ile karşılaştırılır. Sonuç doğru ise sonraki aşamaya geçersiniz yanlış ise yine hataya düşersiniz. En temelinde budur.
 
Her şey geri döndürülür. Yoksa nasıl okunsun. Her bilmediğinizi ilahlaştırıyorsunuz. Asla sı masla sı yok bunun. Telefondan İnstagram'a giriliyorsa, şifre falan istemiyor, doğrudan telefon numarasını referans alarak bağlıyor.
 
Her şey geri döndürülür. Yoksa nasıl okunsun. Her bilmediğinizi ilahlaştırıyorsunuz. Aslası maslası yok bunun. Telefondan İnstagram'a giriliyorsa, şifre falan istemiyor, doğrudan telefon numarasını referans alarak bağlıyor.
Döndürülemiyor, dediğim gibi siz giriş yaparken parolanız tekrardan aynı yöntemle şifreleniyor ve kıyaslanıyor. Fazla detaya girmiyorum zira yukarıda uzun bir şekilde anlattım. Başka arkadaşlar da belirtti durumu.

Siz şimdi bunca şeyi kafanıza göre yok sayıp o algoritmaların geri döndürülebileceğini söyleyip üstüne üstlük bunları bilmediğimizi iddia ediyorsunuz. Doğrusunu anlatın da bilelim o zaman. Bana güvenli bir Hash algoritması ile şifrelenmiş metnin orijinalini nasıl bulabileceğimizi anlatır mısınız? Ama Dictionary/Rainbow Attack kullanmadan.
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı