Hash Nedir?

Birçok yerde kesinlikle şu cümleye rastlamışsınızdır. “Şifreniz inançlı bir algoritma yardımıyla veritabanında tutuluyor.” Pekala bu ne manaya geliyor? Bu algoritmalar nelerdir? Bu yazımızın ana odak noktası da bu olacak. Çeşitli şifreleme algoritmalarına, tek istikametli algoritmalara ve özetle hash kavramına değineceğiz.
Dijital dünyada yahut daha doğrusu bilgisayar ve internet dünyasında birçok servise parolalarımız aracılığıyla erişiriz. Bu hesaplarımızı yetkisiz erişimden koruyan, onlarca yıllık kolay ancak bir o kadar inançlı bir tahlil. Mail adresleriniz, toplumsal medya hesaplarınız yahut çeşitli süreçler için kullandığınız istemciler… Bunların hepsinde çeşitli parolalar kullanmaktayız.
Bir sisteme girebilmemiz için biz parolamızı yazıp giriş butonuna bastığımızda art planda daha evvelden belirlemiş olduğumuz parolayla bir karşılaştırma gerçekleşir. Doğruysa başarılı biçimde giriş yaparız, yanlışsa giriş yapmamıza müsaade edilmez. Bu en kolay haliyle böyledir ama bir de saldırgan gözüyle bakalım. Ortada parola ile girilen bir sistem varsa kesinlikle daha evvelce belirlenen bir parola da vardır ve bu bir yerde saklanıyordur. Bu halde parola yahut öteki düz metin halinde saklanan öbür datalar ele geçirilebilir.
İşte tam bu nedenle de günümüzde hashleme algoritmaları kullanılır. Parolalar yahut çeşitli bilgiler asla saf metin halinde tutulmaz. Bir siteye kayıt olurken belirlemiş olduğunuz parola olduğu haliyle veritabanında saklanmaz. Tek taraflı bir algoritma yardımıyla şifrelenir ve gerçek paroladan alakasız harf ve sayılardan oluşacak hale getirilir. Dışarıdan sisteme erişen saldırgan şifrelenmiş dataları ele geçirse de bir işe yaramayacak çünkü bu tek istikametli bir şifreleme biçimi, geri eski haline döndürülemez.
Pekala biz nasıl hakikat parolayı girince bize ilişkin servislere inançla erişim sağlayabiliyoruz? Aslında bu soru kolay ve kendi içinde yanıtını taşıyor. Evvelden belirlemiş olduğumuz parola yepyeni bir algoritma şifrelenerek veritabanında saklanıyor. Biz servislere erişmek için giriş kısmına parolamızı girdiğimizde bu parola tekrardan tıpkı algoritma ile şifrelenir, salt kıymeti de eklenir ve daha evvelden kaydedilen parolanın şifrelenmiş haliyle eşleştirilir. Şayet birbirine uyuyorsa hesaba muvaffakiyetle giriş yapılır.
Pekala Yalnızca Hashleme Yeterli mi?
Buna net bir karşılık vermek oldukça enteresan olacak çünkü bu sorunun karşılığı uygulanış formuna nazaran değişebilmekte. Kullanılan hash algoritması, şifre ve metot büyük kıymet arz ediyor.
Şifrelemede “Plain Text” (orijinal metin), şifre ve şifre algoritması yardımıyla karıştırılır. Şifrelenen bilgi şifrenin tekrar girilmesiyle geri eski haline getirilebilir. Her daim iki istikametli bir dönüşüm vardır. Hashlenmiş datada ise bu türlü bir şey kelam konusu değildir.
Aşağıdaki fotoğraflar husus hakkında size fikir verecek.

Encrypt ve Decrypt süreçlerinin nasıl gerçekleştiğini anlatan bir görsel. – Kaynak: Elcomsoft

Hash algoritmasının nasıl çalıştığını gösteren bir görsel. – Kaynak: Elcomsoft
Hashlemenin en enteresan ve faal özelliği ise ele alınan bilgi kümesindeki en ufak modül ve en ufak bir data değişse bile farklılık gözlemlenir. Örneğin aşağıda SHA-1 ile şifrelenen bir data vardır.
Yepyeni Metin/Veri : Technopat.NET
SHA-1 : 07a6e54ace6d72fe6aa3439e8a47318ea782b08a
Orjinal Metin/Veri: TechnopatNET
SHA-1 : 7fda47f968da0a527f3dbc202f9ad0c278bd3aa9
Yepyeni Metin/Veri: Technopat.NET1
SHA-1: ddb964d359e197935cf78dd540e004dc0029a5d9
Bu üç örnekte üç durum ele alındı. Birinci örnekteki metin SHA-1 ile hashlendiğinde 07a6e54ace6d72fe6aa3439e8a47318ea782b08a çıktısını elde ettik. Öteki iki örneğin birisinde TLD öncesi nokta işareti silindi, başkasındaysa ek bir sayı daha eklendi.
Gördüğünüz üzere en ufak değişikliklerde bile hashleme sonucu ortaya çıkan pahalar değişiktir. Bu nedenle hashleme yalnızca parolaların inançlı bir formda saklanılmasında değil, birtakım dataların de doğruluğunu denetim etmek emeliyle da kullanılır. ISO belgeleri, programlar yahut gönderilen kritik belgelerin size ulaşırken bozulmaya uğrayıp uğramadığını yahut öbürleri tarafından müdahale edilip edilmediğini hash bedellerini denetim ederek anlayabilirsiniz.
Doğal ki bu yeniden de her algoritmanın tam manasıyla inançlı bir paha sunduğu söylenilemez. Çünkü görebileceğiniz üzere en ufak değişikliklerde bile hash pahası büyük oranda, birden fazla vakit da birbiriyle alakasız halde değişir. İnançsız algoritmalarda ise büyük ölçüde değişmek yerine, girilen düz metindeki değişiklik kadar hash pahasında değişim gözlemlenir.
Bu ne demek pekala? Epeyce kolay. Hash bedeli baştan değişmediği için elde edilen pahadan yola çıkılarak bir mühlet sonra düz metin kolaylıkla ele geçirilebilir. Birinci metin, ufak değişiklik yapılmış metin ve alınan hash kıymetlerine bakılarak ihtimaller kıymetlendirilir. Emsal bir usul maalesef ki Tally Vault ismi verilen ve Hindistan’da epeyce tanınan olan iş idaresi yazılımlarından birinde kullanıldı. Merak ediyorsanız Elcomsoft’un “Tally ERP 9 Vault: How to Not Implement Password Protection” isimli yazısını okuyabilirsiniz.
MD5 ve SHA-1 Terk Edilmeye Başlanıyor
Yalnızca özel olarak yazılan birtakım algoritmalar değil, genel olarak gerçek kabul edilen birtakım hashing yollarının de inançsız olduğu ortaya çıktı.
MD5 (Message-Digest algoritması 5) temelde kriptografik hash algoritmalarından birisi olmasına karşın, maalesef hayli kıymetli güvenlik açıkları çıkmış, kaba kuvvet taarruzlarıyla basitçe kırılabilir hale gelmiştir. Ek olarak 2012 yılında ortaya çıkan Flame isimli ziyanlı yazılımın da yayılmasında zayıf MD5 algoritmasını kullanan Microsoft kod imza sertifikası da kullanıldı. Bunun sonucunda MD5’in güvenilirliği dünya çapında sorgulandı ve yavaş yavaş bu nedenlerden dolayı terk edildi.
2017’de ise Google Security takımı tarafından hazırlanan duyuruda birinci SHA-1 taklidi duyuruldu. Yapılan açıklamada kriptografi alanında adeta “İsviçre çakısı” kararında olan SHA-1 algoritmasının artık başarısız olabileceği, iki farklı belgenin birebir SHA-1 bedeline sahip olmasının mümkün olduğuna değinildi. Google tarafından yapılan duyuruda dalın SHA-1 kullanımını büsbütün terk etmesi gerektiği, SHA-256 üzere daha inançlı algoritmaların tercih edilmesini önerildi.
Pekala neden SHA-1 inançsız hale geldi?
Daha açıklayıcı bir halde değinelim. Makalemizde de bahsettiğimiz üzere SHA-1; parolalarda, bilgi bütünlüğünü doğrulamada, çeşitli protokollerde kullanılan bir hashleme algoritması. Google tarafından yapılan algoritmaya yönelik akın deneyinde aşağıdaki görselden de anlayabileceğiniz üzere, tıpkı SHA-1 pahasına sahip iki farklı evrakın var olabileceği gösterilmiş. Temelde ne olursa olsun hash algoritmalarının birbirine denk gelmemesi gerekir. Bilgilerden bir bit bile değişse hash bedeli çok daha farklı olmalı.

İnançsız hash algoritmaları kullanılarak yapılabilecek bir taarruza örnek. – Kaynak: Google Security Blog
Âlâ hazırlanmış bir saldırgan maalesef gelen uygun niyetli evrak yerine, pak belgeyle birebir SHA-1 bedeline sahip ziyanlı bir evrak hazırlayıp bunu berbat maksatlarla kullanabilir. SHA-1 algoritmasının epey yüksek süreç gücü kullanılarak güvenliği ihlal edildi. Yeniden de bu artık inançsız olduğu gerçeğini değiştirmiyor.
Bir Hash Algoritması Nasıl Olmalı?
Makalemizi bu kısma kadar dikkatlice okuduysanız, bir hash algoritmasının aşağı üst nasıl olması gerektiğini iddia edebiliyorsunuzdur.
Çokça bahsettiğimiz üzere, hashleme usulü neredeyse bilişim güvenliğinde her yerde kullanılır. Bu nedenle bir hashleme algoritmasının epeyce süratli hesaplanabilmesi gerekir. Bir Word evrakı doğrulamak için kimse 3 gün beklemek istemez, esasen bu türlü bir hash algoritması da piyasada kabul görmeyecektir.
Ek olarak hashing algoritması katiyetle tek istikametli olmalıdır. Orjinal data katiyen hash bedeline nazaran yine oluşturulamamalı, farklı bilgiler tıpkı hash kıymetine sahip olmamalı. Elinizde hashlediğiniz parolanız bulunuyorsa ve parolanızı unuttuysanız geri elde etmek için hash algoritmasını kırmakla uğraşmak yerine kaba kuvvet saldırısı metodunu denemelisiniz. Çünkü kullanılan hashleme sistemi her ne ise tek taraflıdır, bilakis çevrilemez. Bu deneme yanılma metoduyla sonuca ulaşmanız parolanızın ne biçimde oluştuğuna bağlı olarak yıllar da sürebilir.
Hash Algoritmalarının Suratları
Bir data kümesini, metni yahut parolayı hash algoritmaları yardımıyla inanç altına alacaksanız, algoritmaların süreç müddetini de bilmelisiniz.
Makalenin başında da belirttiğimiz üzere kimlik doğrulama üzere kullanımlarda, veritabanındaki hash pahası ile girilen parolanın hash pahasının karşılaştırılması yapılır, yanlışsız ise giriş muvaffakiyetle gerçekleşir.
Her hash algoritması birbirinin birebiri değildir, bu nedenle sürat bakımından her algoritma farklılık gösterebilir. Unutulmaması gereken şey şudur ki, hash işlevlerinde bilgiler sadece bir çeşit yenilenmez. Binlerce defa karıştırılır ve sonuç o denli elde edilir. Şayet hash teknikleriyle tek taraflı biçimde apayrı hale getirilen bilgiler tek yinelemeyle gizlenseydi, çağdaş donanımlarla kolay kolay bunları kırabiliyor olurduk.
Yinelemenin düşük olmasından ötürü olsa gerek 5 yıllık bir Intel i5 işlemci yardımıyla iOS 10.0 sürümünde saniyede 6 milyona kadar parola denemesi yapılabiliyordu.
Her ne kadar tıp sayısı kullanım yerine nazaran değişse de, biraz sayısal konuşacak olursak Microsoft Office yazılımının son sürümlerinde dokümanların 100.000 sefer -ki merkezi işlemcilerle yapılan bir denemede artık saniyede 10 parola denenebilir- iOS 10.2 sürümü ve sonrasında kullanılan yedeklemelerdeki karıştırma süreci ise 1.000.000 defa yapılır. Bu değişiklikler sonrasında ise CPU yardımıyla yapılan bir kaba kuvvet saldırısı sonucunda dakika başı bir avuç parola deneyebilirsiniz.
Özetle hashlerin yinelenme sayısı arttıkça parola güçlenir, kaba kuvvet akınları yavaşlatılır lakin bunun bir nebze de olsa sürate olumsuz tesiri olabilir.
Aşağıda VeraCrypt Benchmark ile yapılmış bir sürat testi bulunuyor. Ortalama 500.000 çeşit yinelenen algoritmaların parolanızı doğrulamak için ne kadar vakit aldığını örnek olarak görebilirsiniz.

VeraCrypt Benchmark ile elde edilen hash algoritması sürat kıymetleri. – Kaynak: Elcomsoft
Salting Nedir?
Pekala ya zekalının birisi en çok kullanılan parolalara karşılık gelen çok sayıda dizenin karmasını hesaplayıp işi kolay yoldan çözmek isterse? Hash bedellerini bu halde kırmak kolay olmaz mıydı? İşte bu nedenle parolalar hashlenmeden evvel parolalara eşsiz ve rastgele bir bilgi ekleniyor. Bu bilgiye salt (tuz) deniliyor. Bu süreçlerin sonunda elde edilen saltlı paroladır. Tabiri caizse tuzlanıp ve hashlenerek tutulan parolayı doğrulamak istersek yeniden salt kıymetine ve parolanın kendisine muhtaçlık duyarız.
Sonuç ve Özet
Günümüz dünyası dijitalleşmeye devam ettikçe, birtakım güvenlik riskleri de beraberinde geliyor maalesef. İnternetin yeni gelişmeye başladığı periyotlarda parolalar düz metinle tutuluyordu ancak günümüzde bunun yapılması hiç gerçek değil. Her gün yüzlerce bilgi ihlali haberiyle karşılaşıyoruz. Hash algoritmaları işte bu şekil ihlaller sonucunda parolaların direkt ele geçirilmesini engelliyor, süreci epey yavaşlatan en kıymetli etkenlerden birisi oluyor.
Özetle bu yazımızda hash algoritmalarına, hashlemenin ehemmiyetine ve birçok temel kavramdan bahsettik. Merak ettikleriniz için Technopat Toplumsal’de husus açabilir, eklemek istedikleriniz varsa yorumlarda belirtebilirsiniz. Esen kalın.
Kaynak: Technopat