Parolalarınız nasıl kırılır? Parola güvenliğini nasıl artırabilirsiniz?
Bu yazıda, parolaları kırmak için kullanılan birkaç klasik yöntemi ve bu yaklaşımların ardındaki temel prensipleri sunduk. Bu kavramları ele alarak, parola koruyucularının ve hesap sahiplerinin perspektifinden parola güvenliğini artırma konusunda uygulamalar sağladık.
Sıklıkla, büyük kullanıcı tabanına sahip bazı tanınmış uygulamaların kullanıcı parolalarının sızdırıldığına dair haberler görüyoruz. Belirli bir uygulamayı kullanmadığınız için bu tür olayların sizinle hiçbir ilgisinin olmadığını düşünebilirsiniz, ancak gerçekte durum böyle değildir.
Son zamanlarda Twitter'da, AI yöntemlerinin parolaları kırma hızını büyük ölçüde artırabileceğine dair haberler de vardı. Bu nedenle, bunun ardındaki karmaşıklıkları anlamak ve parolalarımızın güvenliğini nasıl artırabileceğimiz görmek istedik.
Parolalar nasıl kırılır?
Genel olarak, hesap parolaları genellikle çeşitli özetleme algoritmaları kullanılarak işlenir ve ardından veritabanlarında saklanır. Parola özetleme hakkında daha iyi bir anlayış kazanmak için önceki blogumuza başvurabilirsiniz. Ne yazık ki, bazı hizmet sağlayıcılar, temel bilgiden yoksun oldukları için parolaları veritabanlarında düz metin olarak saklarlar. Bu uygulama, verilerin sızdırılması durumunda daha büyük zararlarla sonuçlanabilir.
Özetlenmiş parolaların kaydedilmesiyle, veritabanı yöneticileri bile orijinal parolanıza erişemez, bu da güvenliği önemli ölçüde artırır. Girilen parolanın doğruluğunu doğrularken, aynı özet algoritması kullanılarak girilen parola işlenir. Elde edilen özet, veritabanında saklanan değerle karşılaştırılır. İki özet değeri eşleşirse, girilen parola doğru kabul edilir.
Basitçe ifade etmek gerekirse, parola kırma işlemi, izin verilen parola kurallarına uyan dizgeler oluşturmayı içerir. Daha sonra, bu dizgeleri yukarıda belirtilen yöntemi kullanarak sürekli kontrol etmeyi ve sonunda doğru düz metin parolayı bulmayı içerir.
Parola kırma için yaygın yöntemler
Bu bölümde, parolaları kırmak için üç yaygın yolu kısaca tanıtacağız.
Kaba kuvvet saldırısı
Kaba kuvvet saldırıları genellikle izin verilen parola kuralları içerisindeki tüm olasılıkları enumerate eder ve bunları tek tek dener.
Örneğin, cep telefonları 4 haneli bir sayısal parola ayarlayabilir. Kaba kuvvet saldırıları 0000
, 0001
, 0002
, …, ve 9999
'e kadar tüm olasılıkları tek tek dener.
Kaba kuvvet saldırıları çok zaman alıcıdır çünkü çok fazla deneme vardır. Parola uzunluğu $L$ ve her parola basamağına düşen olası karakter sayısı $n$ ise, kaba kuvvet saldırıları için denemesi gereken olasılıklar sayısı $n^L$ olur ki bu çok büyük bir sayıdır.
Birçok parolanın sayılar, büyük ve küçük harfler ve özel karakterlerin bir kombinasyonunu gerektirmesinin nedeni, $n'i$ artırmak, böylece olasılık sayısını büyük ölçüde artırmak ve parolanın kırılma zorluk derecesini artırmaktır.
Sözlük saldırısı
Sözlük saldırıları, sözlüklerdeki kelimeleri, genellikle boşluklarla, sayılarla, özel sembollerle ve diğer unsurlarla birleştirerek çeşitli parola kombinasyonları oluşturur. Daha sonra bu kombinasyonları parola eşleştirmeleri denemek için kullanır.
Birçok insan, kolay hatırlanabilir olması için anlamı olan cümleleri parola olarak kullanmayı tercih eder. Sözlük saldırıları, bu özelliklere sahip olan parolaları kırmak için etkili bir yol olur.
Rainbow table saldırısı
Bir rainbow table, düz metin parolaların özet değerlerine eşlenmiş önceden hesaplanmış bir tablodur. Veritabanında saklanan özet değerleri, rainbow table'daki özet değerler ile doğrudan karşılaştırarak, bulunan eşleşmelerle ilgili düz metin parolayı doğrudan alabilir.
Rainbow tablolar, özet değer önceden hesaplanmışsa (ve rainbow table'da kaydedilmişse) düz metin parolalara hemen erişim sağlama avantajı sunar. Ancak, önemli bir nokta, özet değerin önceden hesaplanmadığı (ve bu nedenle tabloda bulunmadığı) durumlarda, rainbow tabloların kullanılamayacağıdır.
Yukarıda açıklanan yöntemlerin yanı sıra, burada ele alınmayan başka birçok teknik bulunmaktadır. Genel olarak, bu yöntemlerin bir kombinasyonu kullanılarak tüm olası parolaları kapsamak ve kırma sürecini hızlandırmak hedeflenir.
Parola kırmayı nasıl hızlandırılır?
Önceki bölümde, bazı klasik parola kırma yöntemlerini kısaca tanıttık. Bunlardan, parola kırma hızını veya başarı oranını artırmak için bazı fikirler özetleyebiliriz.
Bir parolayı kırmak genellikle iki adımı içerir:
- Parolanın arama alanını belirle (mümkün olan parolalar oluştur)
- Önceki adımda elde edilen olası parolalar için özetleme algoritmasını kullanarak özetler oluştur ve bunları kırılması gereken parolanın özetiyle karşılaştır.
Yukarıda bahsedilen sözlük saldırısı ve rainbow table saldırısı sırasıyla bu iki adımı optimize eder:
- Sözlük saldırısı parolalar için arama alanını daraltır. "Kullanıcılar genellikle gerçek anlamları olan kelime kombinasyonları kullanarak parolalar oluşturma eğilimindedir" varsayımına dayanarak,
zzzz
gibi kelimeler sözlükte yer almaz, bu da bunların potansiyel parolalar olarak denenmeyeceği anlamına gelir. Bu uygulama, yanlış cevapları önceden elemek gibidir. Çoktan seçmeli sorularla uğraşırken doğru seçeneği kesin olarak bilmeseniz de, hangi seçeneklerin kesinlikle yanlış olduğunu belirleyebilirsiniz. Bu belirgin şekilde yanlış seçenekleri eleyerek, kalan seçenekler arasında doğru tahmin etme şansınız artar. - Rainbow table saldırısı, özet algoritmasının yürütme süresini hızlandırır. Veri yapıları konusunda iyi olanlar için, arama, $O(1)$ zaman karmaşıklığına sahip bir işlemdir ve hiçbir işlem $O(1)'den$ daha basit olamaz. Buna karşılık, yaygın kullanılan özetleme algoritmalarının (MD5 ve SHA gibi) zaman karmaşıklığı $O(n)$'dir ki bu $O(1)'den$ belirgin şekilde daha yavaştır.
Uygulamada, parola kırma sürecini optimize etmek de yukarıdaki iki perspektifte başlar. Belirtmek gerekir ki, dize özeti algoritmaları için $O(n)$ zaman karmaşıklığını optimize etmek için nispeten küçük bir alan bulunduğundan, daha fazla düşünülenler, burada ele alınmayan, donanım veya hesaplama yöntemlerinin iyileştirilmesidir.
Peki yapay zeka parolaları kırmada nasıl yardımcı olur?
Parola kırma çabasının bütününde, AI'nin rolü, açığa çıkan düz metin parolalardan belirli kalıpları ve yapım yöntemlerini öğrenmeye uzanır. Sonrasında, AI bu parola oluşturma kalıplarını simüle edebilir ve bir dizi potansiyel parola üretebilir. Bunu takiben, AI özelleştirilmiş donanım veya özetleme algoritmaları kullanarak parola kırmayı gerçekleştirebilir.
Aslında, diğer parola kırma araçlarıyla karşılaştırıldığında, PassGAN'ın öldürücü avantajı, "olası parolalar arama alanını azaltma" fikrimizde belirttiğimiz gibi "en olası parolaları mümkün olan en hızlı şekilde tahmin edebilmesidir".
Parolaları nasıl daha güvenli hale getirebiliriz?
Parolaları koruma yöntemlerini iki açıdan açıklayacağız. Burada sadece parolanın kendisinden başlayacağız, çok faktörlü kimlik doğrulama (MFA) gibi hesap güvenliğini sağlamanın diğer yollarını tartışmayacağız.
Kimlik hizmeti sağlayıcılarının perspektifinden
Kimlik hizmeti sağlayıcıları olarak, tüm kullanıcıların parolalarını barındırırlar ve bu da onları bu parolaların güvenliğini sağlama sorumluluğuna yükler. Kullanıcıların parolalarının güvenliğini artırma konusunda uygulanabilecek birkaç seçenek:
-
Parolaları düz metin olarak saklamaktan kaçının: Bu, yaygın bir bilgi gibi görünse de, bazı hizmet sağlayıcılar hala parolaları veritabanlarında düz metin olarak saklarlar. Parolaların özet değerlerini kullanarak saklamak, bir güvenlik katmanı ekler; veritabanı tehlikeye atılsa bile, hackerlar özetlenmiş parolaları kırmak için ciddi çaba harcamalıdır.
-
Parola doğrulama için API arayüzüne oran sınırlamaları uygulayın: Daha önce bahsedilen parola kırma sürecine geri dönelim. Bu sürecin ayrılmaz bir parçası, bir parolanın doğru olup olmadığını "doğrulamaktır". Parolalar kimlik hizmeti sağlayıcılarına güvenilir olduğundan, parola doğrulama için API sunma yetkisi olan tek varlıklardır. Bu API'ye erişim sıklığını sınırlayarak, oldukça olası parola tahminlerine sahip olsalar bile, hackerların hızlı bir şekilde çeşitli parolaları denemesini engelleyebiliriz.
-
Daha karmaşık parola bileşimlerini zorunlu kılın: Örneğin, daha önce belirtildiği gibi, belirli bir uzunluktaki parolalardaki karakter çeşitliliği daha yüksek karmaşıklığa yol açar. Ayrıca, daha önce tartışılan AI tekniklerini kullanarak, bir parola gönderilmeden önce güvenliğini değerlendirmek de mümkündür. Eğer bir parola zayıf olarak değerlendirilirse, kullanıcılar daha sağlam bir alternatifi seçmeye yönlendirilebilir.
Kullanıcı perspektifinden
Hesap sahipleri ve ilgili dijital varlıklar olarak, kullanıcılar hesap parolalarının güvenliğini sağlamaya en üst düzeyde önem vermelidir.
-
Aynı parolayı farklı web sitelerinde kullanmaktan kaçının: Belirli web sitelerinden parolaları aldıktan sonra, birçok hacker bu hesap kimlik bilgilerini diğer web sitelerine erişmek için kullanmayı dener. Farklı hizmetlere ait birden fazla hesabın aynı parolayı paylaşması durumunda, yukarıda belirtilen senaryoda hesapları kaybetme ve bilgi sızması riski olabilir.
-
Mümkünse tamamen rastgele parolaları tercih edin: Bu yaklaşım, çoğu kişinin kullandığı ortak parola kalıplarının (daha önce belirtildiği gibi İngilizce cümlelerin) tekrar kullanılmasını engeller, böylece hackerların "parola arama alanını daraltma" ve parolanın karmaşıklık derecesini artırma çabalarını zorlaştırır.
Kimlik hizmetleri sağlayıcısı olarak, Logto, kullanıcı hesap güvenliğini sağlamak için yukarıda belirtilen en iyi uygulamalardan birçoğunu uygulamıştır. Bu, kullanıcıların hesap kaybı endişesi duymadan çeşitli uygulamalarla etkileşimde bulunmasını sağlar ve çevrimiçi hizmet sağlayıcıların minimum çaba ile kullanıcı verileri güvencesini sağlamasına olanak tanır, böylece ana iş faaliyetlerine odaklanabilirler.