Ağlar ve sistemler şifreleri ve diğer oturum açma bilgilerini nasıl saklıyor?

Yıllar önce, büyük ve küçük harflerden, sembollerden ve rakamlardan oluşan rastgele sekiz karakterlik şifrelerin kırılması gerçekten zordu. Bazı durumlarda bunun gibi bir şifreyi kırmak yıllar alır.

Günümüzün değişen teknolojisi ve kiralık cihazlar sayesinde bu süre saatlere inmiştir. Peki bu şifreler ilk etapta nasıl saklanıyor? Doğrulamak Şifreler geçmişte kaldı: neden bu yıl aşamalı olarak kaldırılıyorlar?.

Şifreler çevrimiçi ortamda nasıl saklanır?

Saldırgan, sistemlerin parolaları sakladığı veritabanını kontrol edebildiğinden, sistemler kullanıcı parolalarını doğrudan dosyalarda veya veritabanlarında saklamaz. Bunun yerine sistemler kullanıcı ayrıntılarını şifreleyerek saldırganın her parolanın şifrelenmiş bir sürümüyle karşı karşıya kalmasını sağlar.

Sistemlerin şifreleri şifrelemek için kullandığı bazı gelişmiş algoritmalar vardır. Bu algoritmalardan biri de simetrik şifreleme algoritmasıdır. Bu, hem şifreleme hem de şifre çözme için aynı anahtarı kullanabileceğiniz bir şifreleme türüdür. Simetrik şifreleme algoritmalarının güvenliği, şifre çözmeye ayrılmış tek bir anahtar olduğundan bazı riskler taşır. Bu nedenle sistemlerde genellikle simetrik şifreleme algoritmaları kullanılmaz.

Genel olarak sistemlerin şifreleme için kullandığı yöntem hash algoritmalarıdır. Veri şifreleme için değil, veri bütünlüğünü ve gösterimini doğrulamak için tasarlanmıştır. Karma algoritmaları, verileri sabit boyutlu bir karma haline dönüştürür. Genellikle benzersiz bir veri karmasını temsil eder. Hash fonksiyonunun yapması gereken, harita olarak rastgele boyuttaki veriden sabit uzunlukta veri oluşturmaktır.

Hashing algoritması sayesinde eğer bir saldırgan şifrenin bulunduğu veritabanını ele geçirirse buradan şifreye geriye doğru erişemeyecektir. Burada dikkat edilmesi gereken çok önemli bir nüans var. Teorik olarak, tüm şifre kombinasyonları için aynı hash algoritmasını kullanan bir sistemi ele geçiren bir saldırgan, elde edilen sonuçları karşılaştırabilir. Saldırgan bu karşılaştırmalar sonucunda aynı değeri alıyorsa şifrenin açık versiyonunu keşfetmiştir. Bu yöntem tamamen deneme yanılma ile ilgilidir ve bu tür saldırılara genel olarak kaba kuvvet saldırısı denir.

8'li yılların başında, yaygın karma algoritmaları kullanılarak şifrelenen 123456 karakterlik şifre kombinasyonlarının tamamını denemek yüzlerce yıl alırdı. Elbette “XNUMX” ya da “şifrem” gibi çok basit kombinasyonlar bu grupta yer almıyor. Günümüz yazılım ve donanım teknolojilerinin gelişmesiyle birlikte şifrelerin kırılma şekli de oldukça değişti. Doğrulamak Şifre yöneticilerinin güvenliğine güvenebilir misiniz?

Grafik kartlarının görünümünün etkisi

Grafik işlemcilerin (GPU'lar) paralel veri işleme yetenekleri zamanla gelişti. Grafik kartları genel amaçlı CPU'lar gibi çok yönlü işlemleri gerçekleştiremez. Yani her ne kadar çok sayıda çekirdek ve paralel işlem gücü olsa da işlemci gibi hemen her sorun için bunları kullanmak pek mantıklı değil.

Ancak parolalar için kullanılan bazı karma algoritmaları GPU'da çok verimli bir şekilde uygulanabilir. Geleneksel CPU'larla elde edebileceğiniz saniye başına karma sayısı, yeni grafik kartlarıyla önemli ölçüde arttı.

Bir fikir edinmek için, aşağıdaki tabloda NTLM, MD5 ve SHA1 gibi karma algoritmaları için saniyedeki karma sayısını (karma oranı terimi, bir bilgisayarın karma hesaplamaları gerçekleştirebildiği hızı ifade eder) inceleyin. Bu algoritmaların sadece bir hash algoritması olduğunu bilmeniz şimdilik yeterli. Bu tabloyu oluşturmak için 25 AMD Radeon GPU'dan oluşan bir küme kullandım.

algoritmaSaniyedeki karma sayısı
NTLM350.000.000.000
MD5180.000.000.000
SHA163.000.000.000
SHA512Şifreleme364.000
şifre71.000
scrypt33.000

Gördüğünüz gibi böyle bir sistemle saniyede 350 milyar kez NTLM hash üretebiliyorsunuz. Bu, 8 karakterlik şifre kombinasyonlarının tümünü 6 saatten daha kısa sürede deneyebileceğiniz anlamına gelir. Üstelik bu örnekteki donanımın geçmişi yıllar öncesine dayanıyor. Bugün şifre kırmanın gücünü hayal edin.

Yazılım geliştiricileri ne yapmalı?

Programcıların izlemesi gereken yol oldukça basit: Şifreleri şifrelerken hash değerlerini hesaplaması daha uzun süren algoritmaları tercih etmeliler. Geliştiricilerin yalnızca kullandıkları algoritmanın CPU üzerinde nasıl performans göstereceğini değil, aynı zamanda grafik kartları dünyasına karşı ne kadar dayanıklı olduğunu da bilmeleri gerekiyor.

Geliştiriciler Django, Ruby on Rails ve Spring Security gibi şifre şifrelemeyi de yöneten bir yazılım çerçevesi ile çalışıyorlarsa, çerçevede güvenlik açısından doğru kararların alınıp alınmadığını kontrol etmeleri gerekir.

Örneğin, şunu kullanırsınız: Vasiyet Ruby on Rails'de kullanıcı işlemleri için en yaygın kullanılan kitaplıklardan biri, varsayılan karma algoritması olarak Bcrypt'i kullanır. Ayrıca karma algoritması olarak başka bir yöntem kullanmanıza da olanak tanır. Bcrypt algoritması güvenilirdir çünkü grafik kartının doğru noktaya ulaşması hala uzun zaman almaktadır.

Kısacası hash değerini hesaplamak ne kadar uzun sürerse o kadar güvende olursunuz.

Şifreniz kaç karakter içermelidir?

Kullandığınız her ek karakter, şifreyi kırmak ve şifreyi 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 düşünelim. NTLM karma algoritması için yukarıdaki tabloda yer alan değerleri göz önünde bulundurun ve şifreyi kırmaya çalışacağınızı hayal edin. Sekiz veya daha fazla karakter uzunluğundaki şifreleri hedeflediğinizi hayal edin.

Karakter sayısıBüyük/küçük harfler ve sayılarBüyük/küçük harfler, sayılar ve özel semboller
8Bir dakikadan azİki dakika
9İki dakikaİki saat
10İki saatBir hafta
11Altı günسنتين
12Bir yıl200 yıl
13100 yıldan fazla1000 yıldan fazla

Tabloyu incelediğinizde büyük/küçük harf, rakam ve özel sembollerin tüm kombinasyonlarını kullanırken en az 12 karakterden oluşan bir şifre kullanmanın güvenli olduğunu görebilirsiniz. Özel karakterler kullanmıyorsanız güvenli bir şifre uzunluğuna ulaşmak için 13 karakter kullanmanız gerektiği ortaya çıkıyor. Bu sistemde NTLM hash yerine Bcrypt hash yöntemini kullanırsanız 8 karakter yeterli olacaktır. Ancak şifrenizi tutan web üzerinden girdiğiniz sistemin kullandığı hash yöntemini bilme şansınız yoktur. Bu nedenle 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ı en az 12 karakter uzunluğunda bir şifreye sahip olmaya ikna etmenin neredeyse imkansız olmasıdır. Günümüzde bu uzunluktaki şifrelerin kullanım sıklığının düşük olduğunu rahatlıkla söyleyebiliriz. Bu nedenle, geliştirilen sistemin kullanım senaryosuna bağlı olarak, şifre güvenliklerini iyileştirmek için kullanıcılar tarafından kabul edilebilir bir uzlaşmanın bulunması gerekecektir.

Geliştiriciler için son bir öneri, kullanıcıya sağladığınız formlar aracılığıyla alınan girdilerin yalnızca minimum uzunluğunu değil aynı zamanda maksimum uzunluğunu da kontrol etmeleridir. Özellikle güvenlik amacıyla Bcrypt gibi yavaş hesaplamalı bir hash algoritmasının kullanımını etkinleştirdiğinizde, kullanıcının girdiği şifrenin maksimum uzunluğunu kontrol etmediğiniz takdirde bazı risklerle karşı karşıya kalabilirsiniz. Örneğin saldırganlar, özel hazırlanmış birkaç istekle 100 karakterlik onlarca şifreyi aynı anda deneyerek saldırı gerçekleştirebilirler. Böyle bir durumda sisteminizin diğer kullanıcılara tepki vermemesi çok muhtemeldir. Doğrulamak Şifrelerinizin çevrimiçi olarak satılıp satılmadığını nasıl anlarsınız?.

Son kullanıcıya tavsiyeler

Şifrenizi en az 12 karakter uzunluğunda tutun ve büyük-küçük harf, rakam ve özel sembol kombinasyonlarını içerdiğinden emin olun. Şifrenizi saklayan sistemlerin hacklenebileceğini ve bilgilerinizin kötüye kullanılabileceğini asla unutmayın. Sistemin şifreyi şifrelemek için hangi algoritmaları kullandığını bilemezsiniz, dolayısıyla önlem almak ve güçlü şifreler oluşturmak tamamen sizin elinizdedir. Şimdi görüntüleyebilirsiniz Kırılması zor güçlü çevrimiçi şifreler nasıl oluşturulur?.

Üst düğmeye git