Ağlar Parolalarınızı ve Diğer Oturum Açma Bilgilerinizi Nasıl Saklıyor?

Ağlar Parolalarınızı ve Diğer Oturum Açma Bilgilerinizi Nasıl Saklıyor?
Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma yaptığınızda, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Yıllar önce, büyük ve küçük harfler, semboller ve rakamlardan oluşan sekiz karakterli rastgele şifrelerin kırılması gerçekten zordu. Bazı durumlarda, böyle bir şifrenin kırılması yıllar aldı.





Günümüzün değişen teknolojisi ve kiralanabilir makineler sayesinde bu süre saatlere inmiştir. Ancak bu şifreler ilk etapta nasıl saklanıyor?





GÜNÜN MAKALE VİDEOSU İÇERİK İLE DEVAM ETMEK İÇİN KAYDIRIN

Parolalar Çevrimiçi Olarak Nasıl Saklanır?

Sistemler, kullanıcı parolalarını doğrudan dosyalarda veya veritabanlarında saklamaz çünkü saldırganlar, sistemlerin parolaları tuttuğu veritabanını ele geçirebilir. Bunun yerine, sistemler kullanıcı parolalarını şifreler ve saldırganlar her parolanın şifrelenmiş bir sürümüyle karşılaşır.





Sistemlerin şifreleri şifrelemek için kullandığı bazı algoritmalar vardır. Bu algoritmalardan biri de simetrik algoritmadır. Simetrik algoritma bir tür şifrelemedir. Burada hem şifreleme hem de şifre çözme için aynı anahtarı kullanabilirsiniz. Verileri şifrelemek için kullanacağınız anahtar, hem şifreleme hem de şifre çözme için aynıdır. Simetrik algoritmaların güvenliği, şifre çözme için yalnızca bir anahtar olduğu için bazı riskler taşır. Bu nedenle sistemler genellikle parola şifreleme için simetrik algoritmalar kullanmazlar.

Genellikle sistemlerin şifreleme için kullandığı yöntem hash algoritmalarıdır. Karma algoritmalar, verileri şifrelemek için değil, verilerin bütünlüğünü doğrulamak ve temsil etmek içindir. Hash algoritmaları, verileri sabit boyutlu bir hash'e dönüştürür. Bu hash'ler genellikle benzersiz bir veri hash'ini temsil eder.



Hash algoritması sayesinde eğer bir saldırgan şifre veri tabanını ele geçirmiş ise buradan geriye doğru şifreye ulaşamaz. Burada dikkat etmeniz gereken çok önemli bir nüans var. Teorik olarak, tüm parola kombinasyonları için aynı hash algoritmasını kullanan bir sistemin güvenliğini ihlal eden bir saldırgan, elde edilen sonuçları karşılaştırabilir. Saldırgan bu karşılaştırmalar sonucunda aynı değeri üretiyorsa şifrenin açık halinin ne olduğunu bulmuş demektir. Bu yöntem, tamamen deneme yanılma ile ilgilidir ve bu tür bir saldırı, genellikle kaba kuvvet saldırısı olarak adlandırılır .

2000'li yılların başında, popüler karma algoritmalarla şifrelenmiş 8 karakterlik şifreler için tüm kombinasyonları denemek yüzlerce yıl alabilirdi. Elbette bu set içerisinde '123456' veya 'şifrem' gibi çok basit kombinasyonlar yer almıyor. Günümüz yazılım ve donanım teknolojilerinin gelişmesiyle birlikte şifre kırma yöntemi de oldukça değişti.





Ortaya Çıkan GPU'ların Etkisi

  iki rtx2080 grafik kartı

Grafik işlemcilerin (GPU'lar) paralel veri işleme yetenekleri zaman içinde gelişmiştir. GPU'lar, genel amaçlı CPU'lar gibi çok yönlü işlemleri gerçekleştirme yeteneğine sahip değildir. Yani bu kadar çok çekirdek ve paralel işlem gücü olmasına rağmen CPU gibi hemen hemen her sorun için bunları kullanmak mantıklı değil.

Ancak şifreler için kullanılan bazı hash algoritmalarını GPU üzerinde oldukça verimli bir şekilde gerçekleştirmek mümkündür. Geleneksel CPU'larla elde edebileceğiniz saniyede hesaplanabilir hash'ler, yeni GPU platformlarıyla muazzam bir şekilde arttı.





Bir fikir edinmek için aşağıdaki tabloda NTLM, MD5 ve SHA1 gibi hash algoritmalarının saniyedeki hash sayılarını inceleyin. Bu algoritmaların sadece bir hash algoritması olduğunu bilmek şimdilik yeterli. Bu tabloyu oluşturmak için 25 AMD Radeon GPU'dan oluşan bir küme sistemi kullandım.

algoritma

Saniye Başına Hash İşlemleri

NTLM

350.000.000.000

MD5

180.000.000.000

SHA1

google docs yapılacaklar listesi şablonu

63.000.000.000

SHA512 Şifreleme

364.000

Bcrypt

71.000

Senaryo

33.000

Gördüğünüz gibi, böyle bir sistemle saniyede 350 milyar kez NTLM hash üretebilirsiniz. Bu, 8 karakterlik bir parolanın tüm kombinasyonlarını 6 saatten daha kısa sürede deneyebileceğiniz anlamına gelir. Üstelik bu örnekteki donanım yıllar öncesine ait. Günümüzün parola kırma gücünü hayal edin.

Yazılım Geliştiricileri Ne Yapmalı?

  Kod yazan bir geliştirici

Programcıların izlemesi gereken yol oldukça basittir: Parolaları şifrelerken hash değerlerini hesaplaması daha uzun süren algoritmaları tercih etmelidirler. Geliştiricilerin yalnızca CPU üzerinde kullandıkları algoritmanın performansını değil, aynı zamanda GPU dünyasına karşı ne kadar dirençli olduğunu da öğrenmesi gerekiyor.

Geliştiriciler, Django, Ruby on Rails, Spring Security gibi parola şifreleme işlemlerini de ele alan bir yazılım çerçevesi ile çalışıyorlarsa, güvenlik açısından çerçeve içinde doğru kararların verilip verilmediğini kontrol etmelidirler.

Örneğin, tasarlamak Ruby on Rails'de kullanıcı işlemleri için en çok kullanılan kitaplıklardan biri olan , varsayılan hash algoritması olarak Bcrypt'i kullanır. Ayrıca, hash algoritması olarak başka bir yöntemi kullanmanıza izin verir. Bcrypt algoritması, GPU'nun kırılması hala çok uzun sürdüğü için güvenilirdir.

Özetle, hash değeri hesaplaması ne kadar uzun sürerse o kadar güvende olursunuz.

Şifreniz Kaç Karakter Olmalıdır?

Kullandığınız her ekstra karakter, şifrenizi kırmak ve şifrenizi daha güvenli hale getirmek için gereken deneme ve hata sayısını geometrik olarak artıracaktır.

Bu durumu iki farklı senaryo üzerinden ele alalım. NTLM hash algoritması için yukarıdaki tablodaki değerleri göz önünde bulundurun ve şifreyi kırmaya çalışacağınızı hayal edin. Sekiz veya daha fazla karakterden oluşan parolaları hedeflediğinizi hayal edin.

Karakter sayısı

Büyük/Küçük harf ve rakamlar

windows bu ağın proxy ayarlarını otomatik olarak algılayamadı google chrome

Büyük/Küçük harfler, sayılar ve özel semboller

8

1 dakikadan az

2 dakika

9

2 dakika

2 saat

10

2 saat

1 hafta

on bir

6 gün

2 yıl

12

1 yıl

200 yıl

13

100 yıldan fazla

1000 yıldan fazla

Tabloyu incelediğinizde büyük/küçük harf, rakam ve özel sembollerin tüm kombinasyonlarını kullandığınızda minimum 12 karakterlik bir şifre kullanımının güvenli olduğunu görebilirsiniz. Özel semboller kullanmıyorsanız, güvenli şifre uzunluğu olarak 13 karakter kullanmanız gerektiği ortaya çıkıyor. Bu sistemde NTLM hash yerine Bcrypt hash yöntemini kullandıysanız 8 karakter yeterli olacaktır. Ancak web üzerinden girdiğiniz bir sistemin hangi hash yöntemi ile şifrenizi sakladığını bilme şansınız yoktur. Bu yüzden tüm olasılıkları göz önünde bulundurmalısınız.

Yazılım geliştiriciler için temel sorun, kullanıcıları minimum 12 karakterlik bir şifreye sahip olmaya ikna etmenin neredeyse imkansız olmasıdır. Günümüzde bu uzunluktaki parola kullanım oranının düşük olduğunu söylemek mümkündür. Bu nedenle geliştirilen sistemin kullanım senaryosuna göre kullanıcılar tarafından kabul edilecek bir orta yol bulunması gerekecektir. parola güvenliğini artırmak için .

geliştiriciler için son bir öneri, kullanıcıya sunduğunuz formlardan gelen girdilerin sadece minimum uzunluğunu değil, aynı zamanda maksimum uzunluğunu da kontrol etmeleridir. Özellikle güvenlik amacıyla Bcrypt gibi yavaş hesaplanan bir hash algoritmasının kullanımını etkinleştirdiğinizde, kullanıcı tarafından girilen parolanın maksimum uzunluğunu kontrol etmezseniz bazı risklerle karşılaşabilirsiniz. Örneğin saldırganlar, özel olarak hazırlanmış bazı isteklerle aynı anda 100 bin karakterlik onlarca şifreyi deneyerek saldırılar gerçekleştirebiliyor. Böyle bir durumda sisteminizin diğer kullanıcılara yanıt vermeme olasılığı oldukça yüksektir.

Son Kullanıcılara Tavsiye

Parolanızın uzunluğunu en az 12 karakter yapın ve büyük ve küçük harf kombinasyonlarını, sayıları ve sembolleri eklediğinizden emin olun. Parolanızı saklayan sistemlerin saldırıya uğrayabileceğini ve bilgilerinizin kötüye kullanılabileceğini asla unutmayın. Bir sistemin şifrenizi şifrelemek için hangi algoritmaları kullandığını bilemezsiniz, bu nedenle önlem almak ve güçlü şifreler oluşturmak tamamen size bağlıdır.