Komplike Şifreler Sanıldığı Kadar Güvenli mi?

Komplike Şifreler Sanıldığı Kadar Güvenli mi?

Bilindiği üzere parolalar günlük hayatımızın büyük bir bölümünü oluşturuyor ve bizler genelde, daha sonrasında hatırlayamayacağımız komplike parolalar üretip kullanıyoruz. Peki bu parolalar gerçekten yeteri kadar güvenilir mi? Ya da başka bir deyişle kullanılabilirliği arttırıp, daha kolay hatırlanabilir parolalar oluşturmak mümkün mü?  Gelin bütün olasılıkları beraber inceleyelim ve aynı zamanda parolaları deşifre etmeye çalışan insanların hangi metotlara ihtiyaç duyduğuna bir göz atalım.

Bir parolayı deşifre etmek için kullanılan belli başlı yöntemler vardır. Ben yazımda en sık kullanılanlardan bahsedeceğim. Bu konuda ufak bir hatırlatma yapmak istiyorum. Aranızda Mr. Robot izleyenler varsa bir sahnede Elliot, psikiyatristinin erkek arkadaşının sosyal medya hesabına ulaşmak istiyor ve bunu gerçekleştirebilmek için bir sosyal mühendislik uygulamasına başvuruyordu. Evcil hayvanının ismi, doğum yılı gibi parola oluştururken kullanabileceği birkaç parametreyi sosyal mühendislik ile elde edip bunların olası bütün kombinasyonlarını deneyerek kurbanın sosyal medya hesabına girmeyi başarıyordu. Aslında Elliot burada olası ihtimalleri deneyerek bir brute force atağı gerçekleştirmiş oldu. Biz de sırasıyla bu ataklara değiniyor olacağız.

1) Sorarak veya tahmin ederek ( Asking or Guessing ): Bu tür bir saldırı gerçekleştirmek istiyorsanız kurban olarak belirlediğiniz kişi ile yakın bir geçmişe sahip olmalısınız. Eğer ilişki içerisinde olduğunuz bir kişinin güvenini yeterince kazanmış iseniz sahip olduğu parolayı direkt sorarak öğrenebilirsiniz. Ya da yakın olduğunuz kişinin soyadı, annesinin veya babasının adı, evcil hayvanın adı, kız/erkek arkadaşının adı, doğum tarihi, tuttuğu takımın kurulduğu yılı, doğduğu şehrin plakası, favori çiçeğinin adı gibi birkaç parametreyi kullanarak olası bütün ihtimalleri deneyebileceğiniz bir kaba kuvvet (Brute Force) atağı uygularsanız yüksek oranda, kurbanın parolasına erişebilirsiniz. Hatta genelde bir nokta veya virgülü de bir parametre olarak kullanıp daha iyi sonuçlar elde edebilirsiniz (Her ikisini de kullanabilirsiniz). Unutmayın, yakınınızda şifrenizi ele geçirmek isteyen biri varsa tüm bu olasılıkları deneyecektir. Sadece yukarıda belirttiğim parametreler ile oluşturduğunuz şifreler varsa bir kez daha düşünün derim.

2) Kaba Kuvvet (Brute Force) Atakları: Kısaca Brute Force ataklarını bütün olası ihtimalleri deneyen bir yöntem olarak düşünebilirsiniz. O zaman basitçe şunu söyleyebiliriz eğer uzun ve komplike bir şifre kullanıyorsak brute force atağına maruz kalmamız daha zordur. Burada, peki bu kadar geniş ihtimaller kümesinde nasıl oluyor da brute force atakları yapılıp sonuca ulaşılabiliyor diye sorabilirsiniz. Ortalama bir brute force atağında saniyede 100 tahmin veya 1000 tahmin yapılabiliyor. O zaman günler de sürecek olsa eğer sızmak istenilen sistemde en sonunda doğru parola bulunacaksa bu sisteme güvenilir diyebilir miyiz? Peki bu konuda biz nasıl önlemler alabiliriz? Geçtiğimiz senelerde hatırlarsanız Icloud sistemlerine sızılmış hatta birçok ünlünün fotoğrafları sızdırılmıştı. Peki burada brute force atağı uygulandığını biliyor muydunuz? Bir de şöyle düşünelim, varsayalım ki saniyede 1000 tahmin üretebilen bir brute force atağına maruz kaldınız. Her bir parola denemesi için 5 saniye bekleme süresi konulduğunu düşünelim. Saniyede 1000 tahmin üretebilen bir sistem ikinci tahminini üretebilmek için beş saniye daha beklemek zorunda kalacak (Yüksek bir ihtimalle gerçek bir kullanıcı bu 5 saniyelik bekleme süresini fark edemeyecektir). Aynı zamanda her 10 yanlış denemede parolayı girmeye çalışan kişiye 1 saatlik bir ceza uygulansa ve sonrasında parola girişimlerine devam etme hakkı sunulsa bu kadar kolay bir şekilde Icloud sistemlerine sızılabilir miydi?

3) Yaygın Kullanılan Sözcükler (Common Word Attacks): Bu atak yöntemi için basit bir brute force atağı olduğunu söyleyebiliriz fakat daha sınırlı bir alan içerisinde tahminleme yaptığı için klasik brute force ataklarından sıyrılmaktadır. En çok kullanılan kelimeler kullanarak tahminleme yapılmaktadır.

4) Sözlük Atakları (Dictionary Words): Bir önceki bahsettiğimiz atak ile aynı yöntemi kullanmaktadır fakat sadece en sık kullanılan sözcükleri değil sözlükte geçen bütün kelimeleri tahminleme için kullanmaktadır.

5) Rainbow Table Attacks: Günümüzde veritabanları, kullanıcılarının parolalarını direkt olarak yalın bir şekilde tutmamaktadır. Bunun anlamı, olası bir saldırı halinde veritabanı ele geçirilebilse dahi kullanıcı şifrelerine ulaşılamamasını sağlamaktadır. Örneğin bir veritabanında parolaların MD5 algoritması kullanılarak saklandığını düşünelim. Bu atak türünde saldırganların elinde olası parolaların MD5 algoritması ile şifrelenmiş hashlerinin bulunduğunu ve bizim veritabanımız ile karşılaştırdığını düşünelim. Olası bir eşleşme durumunda saldırgan bizim parolamıza ulaşabilecektir.Yazımızın bu ana kadar olan kısmında saldırganların hangi atak yöntemleri ile parolalarımza ulaşabileceklerini gördük. Peki bu saldırılardan korunmak için nasıl parolalar seçmeliyiz?

Komplike bir parola seçerek gerçekten tam anlamıyla korunmuş oluyor muyuz? İlk olarak basit iki durumu karşılaştıralım, farz edelim ki bir parolamız 4srt3> diğer bir parolamız ise merhaba. Saniyede 1000 tahmin yapabilen bir atağa maruz kaldığımızı düşündüğümüz zaman brute force atağı kullanılarak 4srT3> parolasının bulunması 22 yıl, merhaba kelimesinin bulunması ise common word attack kullanılarak sadece birkaç dakika sürecektir. Burada en çok kullanılan kelimelerin bulunduğu listedeki kelimeler kullanılarak brute force atak yapılmaktadır. Evet bu örneğimize baktığımız zaman komplike bir parola daha güvenilirdir diyebiliriz.

Burada değinmek istediğim bir başka konu daha var: Bir kişi ilk olarak “Common word attack” kullanmak yerine direkt brute force atağı ile saldırıyor olsaydı merhaba kelimesini bulması ne kadar sürecekti? Alfabemizde 29 harf bulunduğundan Merhaba kelimesindeki harf sayısı kadar olasılık denenmiş olacaktı. Bu da 29 üzeri 7 demektir ki 17249876309 olası kombinasyonun olduğu anlamına gelmektedir. Saniyede 100 tahmin yapıldığını varsaydığımız zaman ise yaklaşık olarak 5,5 yıl sürecek bir işlem olacaktır. Bu sebeple ilk olarak denenecek yöntem genelde “Common words attack” olmaktadır.

Şimdi ise bir başka iki örneği karşılaştıralım. Yine aynı şekilde 4srt3> parolasını bu sefer “hayatçokkısa” parolası ile karşılaştıralım. “hayatçokkısa” parolasına ulaşabilmek için yaygın kullanılan kelimeler ile bir brute force atağı yapılması gerekecektir. ”hayatçokkısa” parolasının bütün olasılıkları düşünüldüğü zaman aynı zamanda 3 farklı kelimenin kullanıldığı da göz önünde bulundurulunca bunların kombinasyonlarının açığa çıkarılması yaklaşık 250 yıl sürmektedir. O zaman sonuç olarak şunu söylerebiliriz ki “hayatçokkısa” parolası “4srt3>” parolasından yaklaşık 10 kat daha kuvvetlidir ve hangi parolanın daha kolay hatırlanabilir olacağını düşündüğümüz zaman ise “hayatçokkısa” parolasının daha önde olduğu açıkça görülmektedir. O zaman şu ikilemi iyi anlamak gerekmektedir. Bir parolanın çok komplike olması onun çok güvenilir olduğu anlamına gelmeyebilir. Bu yazımızda gördüğümüz gibi daha kolay hatırlanabilir (kullanılabilirlik) bir parola aynı zamanda daha güvenli olabilmektedir.

O zaman özetle şunu söyleyebiliriz: Her zaman iki unsuru göz önünde bulundurmamız gerekir. Tasarladığımız parola ne kadar güvenli, ne kadar kullanışlı? Hem kullanılabilir hem de güvenli bir parola oluşturabilmek mümkün mü? (Usability and Security)

Ferhat Demirkıran

Kaynak: Siber Pandas