Bir şifreleme karma işlevi (CHF), sağlama toplamı adı verilen bir değer üretmek için tek bir dosya veya parola gibi veriler üzerinde çalıştırılabilen bir algoritmadır.
CHF'nin ana kullanımı, bir veri parçasının gerçekliğini doğrulamaktır. İki dosyanın aynı olduğu varsayılabilir, ancak aynı şifreleme karma işlevi kullanılarak her dosyadan oluşturulan sağlama toplamları aynıysa.
Yaygın olarak kullanılan bazı kriptografik hash işlevleri MD5 ve SHA-1'i içerir, ancak diğerleri de mevcuttur. Bunlara genellikle "karma işlevler" denir, ancak bu teknik olarak doğru değildir. Bir karma işlevi, döngüsel artıklık kontrolleri gibi diğer algoritma türleri ile birlikte CHF'leri kapsayan genel bir terimdir.
Kriptografik Hash Fonksiyonları: Bir Kullanım Örneği
Firefox tarayıcısının en son sürümünü indirdiğinizi varsayalım. Nedense Mozilla'dan başka bir siteden indirmeniz gerekiyordu. Güvenmeyi öğrendiğiniz bir sitede barındırılmadığından, az önce indirdiğiniz yükleme dosyasının Mozilla'nın sunduğuyla tamamen aynı olduğundan emin olmak istersiniz.
Bir sağlama toplamı hesaplayıcısı kullanarak, SHA-2 gibi belirli bir şifreleme karma işlevini kullanarak bir sağlama toplamı hesaplar ve ardından bunu Mozilla'nın sitesinde yayınlananla karşılaştırırsınız. Eşitlerse, sahip olduğunuz indirmenin Mozilla'nın sahip olmayı amaçladığı indirme olduğundan emin olabilirsiniz.
Kriptografik Hash Fonksiyonları Tersine Çevrilebilir mi?
Kriptografik hash işlevleri, oluşturdukları sağlama toplamlarını orijinal metinlere geri döndürme yeteneğini engellemek için tasarlanmıştır. Ancak, tersine çevrilmeleri neredeyse imkansız olsa da, verileri korumaları yüzde 100 garanti edilmez.
Hackerlar, bir sağlama toplamının düz metnini bulmak için bir gökkuşağı tablosu kullanabilir. Gökkuşağı tabloları, karşılık gelen düz metin değerleriyle birlikte binlerce, milyonlarca ve hatta milyarlarca sağlama toplamını listeleyen sözlüklerdir.
Bu teknik olarak kriptografik hash algoritmasını tersine çevirmese de, yapması çok basit olduğu için öyle olabilir. Gerçekte, hiçbir gökkuşağı tablosu var olan her olası sağlama toplamını listeleyemeyeceğinden, genellikle yalnızca zayıf parolalar gibi basit ifadeler için faydalıdır.
SHA-1 şifreleme karma işlevini kullanırken nasıl çalışacağını gösteren bir gökkuşağı tablosunun basitleştirilmiş bir sürümü:
Gökkuşağı Tablosu Örneği | |
---|---|
Düz metin | SHA-1 Sağlama Toplamı |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
şifre1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Bir bilgisayar korsanı, değerleri bulmak için sağlama toplamlarını oluşturmak için hangi şifreleme karma algoritmasının kullanıldığını bilmelidir.
Ek koruma için, kullanıcı parolalarını saklayan bazı web siteleri, değer oluşturulduktan sonra ancak depolanmadan önce şifreleme karma algoritmasında ek işlevler gerçekleştirir. Bu işlem, yalnızca web sunucusunun anlayabileceği ve orijinal sağlama toplamıyla eşleşmeyen yeni bir değer üretir.
Örneğin, bir parola girildikten ve sağlama toplamı oluşturulduktan sonra, parola veritabanında saklanmadan önce birkaç parçaya ayrılabilir ve yeniden düzenlenebilir veya belirli karakterler diğerleriyle takas edilebilir. Kullanıcının bir sonraki oturum açmasında kimlik doğrulaması yapmaya çalışırken, sunucu bu ek işlevi tersine çevirir ve bir kullanıcının parolasının geçerli olduğunu doğrulamak için orijinal sağlama toplamı yeniden oluşturulur.
Bu adımları atmak, tüm sağlama toplamlarının çalındığı bir hack'in kullanışlılığını sınırlar. Buradaki fikir, bilinmeyen bir işlevi gerçekleştirmektir, bu nedenle bilgisayar korsanı şifreleme karma algoritmasını biliyor ancak özel olanı bilmiyorsa, parola sağlama toplamlarını bilmek yardımcı olmaz.
Parolalar ve Şifreleme Karma İşlevleri
Bir veritabanı, kullanıcı şifrelerini bir gökkuşağı tablosuna benzer şekilde kaydeder. Parolanız girildiğinde, sağlama toplamı oluşturulur ve kullanıcı adınızla kayıtlı olanla karşılaştırılır. Ardından, ikisi aynıysa erişim izni alırsınız.
CHF'nin geri dönüşü olmayan bir sağlama toplamı ürettiği göz önüne alındığında, şifrenizi 12@34 yerine 12345 kadar basit hale getirmeniz güvenli midir? $5, sırf sağlama toplamları anlaşılamadığı için mi? Hayır, işte nedeni.
Bu iki şifreyi sadece sağlama toplamlarına bakarak çözmek imkansızdır:
12345 için
MD5: 827ccb0eea8a706c4c34a16891f84e7b
MD5 için 12@34$5: a4d3cc004f487b18b2ccd4853053818b
İlk bakışta, bu şifrelerden birini kullanmanın sorun olmayacağını düşünebilirsiniz. Bu, bir saldırgan MD5 sağlama toplamını tahmin ederek parolanızı bulmaya çalıştıysa doğrudur, ki bu hiç kimsenin yapmadığı bir şeydir, ancak yaygın bir taktik olan kaba kuvvet veya sözlük saldırısı gerçekleştirilirse doğru değildir.
Bir parola tahmin edilirken birden fazla rastgele bıçak alındığında kaba kuvvet saldırısı gerçekleşir. Bu durumda, 12345 tahmin etmek kolay, ancak diğerini rastgele bulmak oldukça zor olacaktır. Sözlük saldırısı, saldırganın yaygın (ve çok yaygın olmayan) parolalar listesindeki her kelimeyi, sayıyı veya tümceyi deneyebilmesi bakımından benzerdir ve 12345, yaygın kullanılanlardan biridir. şifreler.
Kriptografik hash işlevleri zordan tahmin edilmesi imkansız olan sağlama toplamları üretse de, tüm çevrimiçi ve yerel kullanıcı hesaplarınız için yine de karmaşık bir parola kullanmalısınız.
Kriptografik Hash İşlevleri Hakkında Daha Fazla Bilgi
Kriptografik hash işlevleri şifrelemeyle ilgili gibi görünebilir, ancak ikisi farklı şekillerde çalışır.
Şifreleme, bir şeyin okunamaz hale gelmesi için şifrelendiği ve daha sonra tekrar normal şekilde kullanılmak üzere şifresinin çözüldüğü iki yönlü bir işlemdir. Sakladığınız dosyaları şifreleyerek onlara erişen kişilerin bunları kullanamamasına neden olabilir veya çevrimiçi olarak yükledikleriniz veya indirdikleriniz gibi bir ağ üzerinden hareket eden dosyaları şifrelemek için dosya aktarımı şifrelemesini kullanabilirsiniz.
Kriptografik hash işlevleri, sağlama toplamlarının özel bir dehash şifresi ile tersine çevrilmesi gerekmediği için farklı şekilde çalışır. CHF'lerin hizmet ettiği tek amaç, örneğin dosyaları indirirken, parolaları saklarken ve bir veritabanından veri çekerken olduğu gibi iki veri parçasını karşılaştırmaktır.
Bir şifreleme karma işlevinin farklı veri parçaları için aynı sağlama toplamını üretmesi mümkündür. Bu olduğunda, buna çarpışma denir, bu, işlevin tüm amacının, içine her veri girişi için benzersiz sağlama toplamları yapmak olduğu düşünüldüğünde büyük bir sorundur.
Çarpışmalar meydana gelebilir, çünkü her bir CHF, giriş verisinden bağımsız olarak sabit uzunlukta bir değer üretir. Örneğin, MD5 şifreleme karma işlevi, tamamen farklı üç veri bloğu için 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 ve e10adc3949ba59abbe56e057f20f883e üretir.
İlk sağlama toplamı 12345'dandır. İkincisi 700'den fazla harf ve sayıdan oluşturuldu ve üçüncüsü 123456'dan. Her üç giriş de farklı uzunluklardadır, ancak MD5 sağlama toplamı kullanıldığından sonuçlar her zaman yalnızca 32 karakter uzunluğundadır.
Girişteki her küçük değişikliğin tamamen farklı bir sağlama toplamı üretmesi gerektiği için oluşturulabilecek sağlama toplamı sayısında bir sınır yoktur. Bir CHF'nin üretebileceği sağlama toplamı sayısının bir sınırı olduğundan, her zaman bir çakışmayla karşılaşma olasılığınız vardır.
Bu nedenle diğer şifreleme karma işlevleri oluşturulmuştur. MD5 32 karakterlik bir değer üretirken, SHA-1 40 karakter ve SHA-2 (512) 128 karakter üretir. Sağlama toplamında ne kadar fazla karakter olursa, bir çarpışmanın meydana gelme olasılığı o kadar azalır.