Anasayfa Makale Şifre Kırmada En Önemli Unsurlar: Zaman ve Hız

Şifre Kırmada En Önemli Unsurlar: Zaman ve Hız

Bu yazımızda bir şifreyi kırmaya çalışırken göz önüne alınması gereken en önemli unsurlardan hız ve zamanı ele alıyoruz.

Bir şifreyi kurtarmaya/kırmaya çalışırken veya bir şifreleme algoritması kullanacağımız zaman dikkat etmemiz gereken en önemli unsurlaradan birisi hız ve zamandır. Bildiğiniz gibi şifreler kurtarılmaya çalışılırken hızı etkileyen şeylerin en başında, kullanılan şifre algoritması yatar. Fakat tahmin edebileceğiniz gibi tek etmen de bu değildir, hızı etkileyen birtakım başka unsurlar da bulunuyor. İşte bu yazımızda şifre kırmada bilişim konusunda uzman kimselerin görüşlerine yer verip, bu konuyu detaylıca irdeleyeceğiz.

Askeri Sınıf Şifreleme Nedir?

Birçok yerde “askeri sınıf şifreleme, şifreleme algoritması, AES-256” gibi birtakım sözcükleri illa ki duymuşsunuzdur. Parola kırmayı etkileyen unsurlara göz atmadan önce bu kavramları bilmemiz gerekiyor zira birçok şeyi etkileyen temelde bu kavramlar ve algoritmalar yatmakta.

1973 yılında, ABD Ulusal Standartlar Dairesi tarafından dönemine göre güçü ve ulusal çapta standart olabilecek bir şifreleme algoritması geliştirilmesi istenmişti. Birçok kuruluşun geliştirdiği algoritmalar arasından 1974’te IBM’in sunmuş olduğu LUCIFER adlı algoritma kabul edilmiş, NSA tarafından uygulanan birkaç değişiklik sonrası DES adını alarak 1977’de resmi şifreleme algoritması olarak kabul edilmişti.

Bu sırada 1980’lerdeki bilgisayar devrimi ve 90’larda internetin global çapta bir iletişim aracı olmasıyla dünya yavaş yavaş dijitalleşmeye başladı. Alışveriş platformları, finans kuruluşları ve devlet kurumlarının birçoğunun sanal ortamda da faaliyetlerini yürütmek amacıyla sıkı bir çalışma yürüttüğü bu yıllarda, büyük boyutlu verilerin şifrelenmesi amacıyla bir algoritma gerekiyordu. Bunun için 1997 yılında daha önce ulusal şifreleme algoritması olan DES (Data Encryption Standart- Veri Şifreleme Standardı) kabul edildi.

AES’nin Ortaya Çıkışı

Daha sonra ilerleyen yıllarda DES’in de birtakım zayıflıkları ve modern bilgisayarlar yardımıyla yapılan kaba kuvvet saldırılarına dayanmadığı görülünce, 2001 yılında yerine AES (Advanced Encryption Standard – Gelişmiş Şifreleme Standardı) adı verilen bir şifreleme standardı ABD hükümeti tarafından getirildi. Kriptografik olarak 4 adet işlem bulunduran AES algoritmasının temelinde değiştirme, karıştırma ve anahtar yatar.

İlerleyen zamanlarda AES’in farklı türleri olan 128 ve 192 güvenli olmasına rağmen yeterli olmadığı düşünülerek AES-256 algoritması geliştirildi. Böylece kritik kurumlarda ve verilerde kullanılmak üzere askeri sınıf şifreleme algoritması dediğimiz 256-bit anahtar uzunluğundaki AES geliştirildi. Bu algoritmanın kırılması için 2^200 işlem gerektiği, bu kadar işlemin de evrenin yaşından daha uzun bir sürede ancak yapılabileceği düşünülüyor. Bu nedenle genel itibariyle saldırılar algoritmanın kendisine değil, parolaya deneme yanılma şeklinde yapılır. Günümüzdeki birçok popüler mesajlaşma yazılımı bu standartları bünyesine alan uçtan uca şifreleme desteğiyle beraber geliyor.

Şifreli Dosyalar ve Kurtarma Zamanını Etkileyen Unsurlar

Çoğu zaman bir belgenin şifresini kırmak için genel itibariyle dosyanın tamamına ulaşmanız gerekir. Birçok durumda şifrelemeye ait meta verileri çoğunlukla dosyaların header bilgisinde depolanır. Bu meta verileri şifre hash’i, salt değeri ve bazenleri de birtakım şifreleme parametrelerini içerebilir.

Bundan yola çıkarak birçok dosya biçimi ve belgede şifrelemeye ait meta verilerini header kısmından ayıklayabilirsiniz. Bu meta verileri çok daha fazla bilgi içermesine rağmen basitçe şifre karmaları olarak da adlandırılır. Şifreyi kırmak için ihtiyacımız olanlar bu kadardır.

Dosyanın en başındaki 4 sihirli byte, şifrelenmiş olduğunu bize göstermekte. Kaynak: MySQL High Availability

İstisna olarak RAR3 ve RAR4 formatlarına sahip arşivlerde bahsettiğimiz gibi bir durum maalesef söz konusu değil. Şifreyi kırabilmemiz için dosyanın header kısmındaki karma yetmiyor, arşivin tamamı gerekiyor. Bazı dosyalarda ise şifrenin doğrulanması amacıyla bir başka veri bloğunun da şifresinin çözülmesi gerekir. Hem şifre algoritması hem de hash mantığı birbiriyle aynı olsa bile farklı dosya türlerinin parola doğrulama amacıyla kullandıkları yöntemler farklı olabileceğinden kırma işlemi zannedildiğinden daha çok zaman alıyor.

Bir şifrenin kurtarılma zamanına etki eden şey elbette yalnızca şifrenin doğrulama yöntemi değildir zira bazı biçimlerde saniyede birkaç milyon adet şifre kombinasyonuna müsaade edilir. Bazen de tek basamaklı parola denemesi değeri elde edebileceğiniz durumlar söz konusu.

Formatlara Göre Kırma Zamanı Neden Değişiyor?

Elcomsoft’un bir makalesinde belirtildiği gibi  hemen hemen herkes şifreleme amacıyla AES-256 kullanıyor fakat bazı dosya formatlarının parolasının kırılması daha yavaş olabiliyor. Peki bunun nedeni nedir? Oldukça basit aslında. Hash Nedir yazımızda da detaylıca anlattığımız gibi karmaların yinelenmesinden kaynaklanıyor.

Zaman ve Parola Güvenliği İlişkisi

Teknik olarak bir parolanın kırılması ne kadar uzun sürüyorsa parola o kadar güvenlidir. Teorik olarak veri güvenliğine dair herhangi bir sınır var mıdır peki?

Çoğu yazılım geliştiricisi ve dosya formatı, kullanıcının şifrelenmiş belgesinin açılıp cihaz kilidinin kaldırılmasını yaklaşık 0.3 saniye olarak ayarlar zira kullanıcıların beklentisi ortalama bu kadar zaman alması yönündedir. Bu zamanı genel itibariyle modern bilgisayarlara göre ölçerler. Yeni ve daha hızlı bilgisayarlar aynı belgeyi daha hızlı bir şekilde açabileceklerdir.

Birçok üretici parola doğrulama amacıyla işlemcilerin tek çekirdeğini fazlasıyla verimsiz bir şekilde kullanır. Elcomsoft yaptığı çalışmayla işlemcinin tüm çekirdeklerini kullandı ve kodu optimize ettiğinde saldırı hızının, normal kilit açma hızından 10 ila 25, GPU kullanılması durumunda ise 20 ila 250 faktör daha arttırdığını söylüyor.

Bunun önüne geçebilmek için üreticiler birtakım önlemler alıyor. Örneğin Apple birbirinden farklı hash yineleme sayıları kullanıyor. VeraCrypt gibi yazılımlar kullanıcıların yineleme sayılarını kendilerinin ayarlamalarına müsaade ederken, bazı parola yöneticileri de bunu otomatik olarak yapıyor.

Ne Kadar Deneme ve Yanılma Yapabilirim?

Dosya şifrelerini kırmak için sınırsız sayıda parola denemesi yapabiliyorken, bazı üreticilerin ve geliştiricilerin ayarlamış olduğu parola sisteminde belirli bir sayıda deneme yaptıktan sonra başarılı olamazsanız bir süre sonra erişiminiz engellenir. Örneğin bir iPhone veya çevrim içi bir serviste parola denemesi yapıyorsanız büyük ihtimalle çok kısa bir süre içerisinde engellenirsiniz.

Veri Şifreleme Algoritmalarında 2FA Mevcut Mu?

İki adımlı doğrulama, şifrelemede genel itibariyle uzak bir hizmet tarafından sağlandığında kullanılır. Bunun dışında DRM korumalı kitaplar, müzikler ve videolarda da kopyadan korunmak amacıyla kullanılabiliyor. Genel itibariyle normal verileri şifreleme için ise 2FA kullanan bir yazılım neredeyse hiç görmedik. Teoride yapması mümkün ve işlevsel olsa da herkesin yapabileceği ve güvenle yönetebileceği bir şey değil. 2FA kullanan bir servise örnek verecek olursak şifreleme olmayan OneDrive Kişisel Kasa hizmeti bu tanımı karşılar diye düşünüyoruz.

Bazı Algoritmalar Diğerlerinden Daha Hızlı Kırılır

Yazımızın başından beri bahsettiğimiz gibi bazı dosya biçimlerinde kullanılan algoritmalar diğerlerinden daha hızlı veya yavaş kırılabilmekte. Bunun da asıl nedeni yine bahsettiğimiz gibi hash yineleme sayısındaki farklılık.

Örneğin Elcomsoft’un bir makalesine göz atabiliriz bu konu hakkında. Sanal makinelerin şifrelerinin kırılma hızı ve güvenliğinden bahsedildiği bu makalede bazıları çok hızlı kırılabilirken, hatta milyon deneme hızına ulaşmışken, bazılarında ise binli deneme sayılarına bile zor ulaşılmakta.

Yine de günümüz yazılımlarındaki güvenlik hiç de küçümsenecek seviyede değil, birçok belge türü oldukça güçlü şekilde şifrelenebiliyor.

Deneme Hızını Anlamak

İçinizden “saniyede 10 milyon deneme iyi, 10 parola denemek kötü” diye düşünebilirsiniz. Aslında öyle değil. Önemli olan belirli bir süre içerisinde ne kadar parolayı kırabildiğiniz. Bir gün, bir hafta, bir ay?

Cevap belki hoşunuza gitmeyecek ama bunlar değil. Önemli olan belirleyici faktör doğru parolayı bulmadan önce denemeniz gereken kombinasyonu ve şifre sayısını bulup ona göre başlamak. Bu nedenle hız duruma göre değişkendir, sabırlı olmalısınız.

Hashlemede Salt Kullanımı

Daha önce hash konusunu detaylıca konuşmuştuk. Birisi çıkıp yaygın tüm parolaları ilgili hash değerlerine karşı deneyerek şifreleri kolayca kırabilseydi ne olurdu? Ya da şu ana kadar sızdırılmış milyonlarca, hatta milyarlarca şifreyi bu hash değerlerinde deneseydi?

İşte bunun önüne geçmek amacıyla salt adı verilen, hash işlemi öncesi parolalara eklenen benzersiz bir değer daha bulunur. Bunun sonucunda elde edilen hash değeri parolanın kendisi değil, parolayla beraber salt’ın hash değeridir. Salt kullanılmış bir hash değerinin doğrulanabilmesi için kendisine karşılık gelen salt değerine ihtiyaç duyulur. Salt genel itibariyle sır değildir, hash ile beraber saklanır. Eğer salt, yani tuz ayrı bir veritabanında veya fiziksel sunucuda bulunuyorsa bu salt değerine de pepper, yani biber denilir. Büyük şirketler genel itibariyle parolalarda salt kullanır.

Saf Kaba Kuvvet Saldırısı ve Akıllı Saldırılar

Birçok yerde bahsedilen kırma hızı yalnızca saf kaba kuvvet saldırıları için geçerlidir. Saldırganlar için yeni bir saldırıda kullanmak üzere yeni şifreler ve yeni karakterleri kelime listesine eklemek oldukça kolay. Ayrıca parola denemeleri paralel bilgi işlem anlamında normal CPU’lara göre çok daha güçlü GPU’lar yardımıyla yapıldığında süre önemli ölçüde kısalır.

Yine de saf kaba kuvvet saldırılarının halen bazı durumlar söz konusu olduğunda etkili olduğunu söyleyebiliriz. Orta uzunluktaki parolaları klasik listeler ve saf deneme yanılma saldırısıyla kurtarabilirsiniz.

Çoğu şifreyi (basit sözlüklere dayanan ve birkaç kelimenin birleşmesiyle oluşanlar gibi) birtakım sözlükler ve akıllı brute-force dediğimiz yöntemlerle hızlı bir şekilde kırmak mümkündür. Bu tarz akıllı saldırılar yavaş olabilir fakat sonucu normal kaba kuvvet saldırılarına göre daha çabuk teslim eder.

iPhone Yedekleme Şifrelerini Elde Etmek

Kaba kuvvet saldırıları bakımından iPhone yedekleri oldukça yüksek korumaya sahip. Apple, iPhone yedeklerine karşı yapılacak deneme yanılma saldırılarına karşı yavaşlatmak amacıyla birçok tedbir almıştır. Donanımla hızlandırılmış bir kaba kuvvet saldırısında bile ortalama saniyede 10 parola ancak denenebiliyor. Şifrelenen iTunes yedeklemesine tek çekirdek ve CPU kullanan bir yöntemle kaba kuvvet saldırısı yapıldığında tek bir parola için 15 saniye gerekiyor. Fakat uygulamanın kendisi ise, doğru parola girildiğinde çok hızlı bir şekilde yedekleri açabiliyor.

Sonuç

Bir parolayı kurtarmanız gerektiğinde stratejinizi uygun şekilde belirlemeli, hedef dosyanın kullandığı şifreleme algoritmasına göre hareket etmelisiniz. Söz konusu kaba kuvvet saldırıları veya doğrudan algoritmanın kendisine yapılan saldırılar olduğunda, elinizdeki donanımları kullanma ve çeşitli parola şekillerini deneme yeteneğinizi kullanmalısınız. Eğer saldırdığınız şey algoritmanın kendisi ise, algoritmayı iyi tanımalı ve böyle bir şeyin mümkün olup olmayacağını anlamaya çalışmalısınız.

Bu yazıda parola kurtarmayı ve kırmayı etkileyen önemli unsurlardan bahsettik. Sizlerin de yazıya eklemek ve düzeltmek istediğiniz şeyler varsa yorum yapabilir, sorularınız ve aklınıza takılanlar için Technopat Sosyal’de konu açarak üyelerimizle fikir alışverişi yapabilirsiniz.