Hashing, farklı büyüklüklerdeki girdilerin sabit büyüklükte bir çıktıya dönüşme sürecidir. Bu dönüşüm, hash fonksiyonları olan matematiksel formüllerin kullanılması ile sağlanır. Tüm hash fonskiyonları kriptografi kullanmasa da kriptografik hash fonksiyonları kripto paraların temelini oluşturur. Bu hashing fonsiyonları sayesinde blok zincir ve diğer dağıtılmış sistemler yüksek veri bütünlüğü ve güvenliğe sahip olur.
Geleneksel ve kriptografik hash fonksiyonları deterministiktir. Deterministik hash algoritmaları girdi değişmediği sürece her zaman aynı çıktıyı verir.
Kripto paraların hash algoritmaları tek yönlü fonksiyonlar şeklinde tasarlanmıştır. Büyük hesaplama süreleri ve kaynaklar harcanmadan tersine çevrilemez. Girdiden çıktı yaratmak oldukça kolay olsada, diğer yönden çıktıdan girdi oluşturma işlemi yapmak çok zordur. Ancak, çıktıdan girdiye ulaşmak ne kadar zorsa hash algoritması o kadar güçlü kabul edilir.
Hash fonksiyonu nasıl çalışır?
Farklı hash fonksiyonları farklı büyüklüklerde çıktı yaratır ancak hash foksiyonlarının olası çıktı büyüklükleri sabittir. Örneğin, SHA-256 algoritması yanlızca 256 bit çıktılar üretebilirken SHA-1 her zaman 160 bitlik çıktı yaratır.
SHA, Güvenli Hash Algoritması’nın kısatmasıdır. SHA-0 ve SHA-1 algoritmalarıyla birlikte SHA-2 ve SHA-3 gruplarını dahil eden kriptografik hash fonksiyonları grubunu ifade eder. SHA-256, SHA-512 ve diğer varyantlarla birlikte SHA-2 grubunun bir parçasıdır. SHA-2 ve SHA-3 grupları güvenli olarak kabul edilir.
Hashing Fonksiyonları neden önemlidir?
Geleneksel hash fonksiyonları, büyük dosya analizleri, veri yönetimi ve veritabanı aramaları da dahil geniş çaplı kullanım alanlarına sahiptir. Öte yandan kriptografik hash fonksiyonları, dijital parmak izi ve mesaj doğrulama gibi bilgi güvenliği uygulamalarında sıklıkla kullanılır. Konu Bitcoin olduğunda, kriptografik hash fonksiyonları madenciliğin önemli parçası ve yeni adreslerin, anahtarların oluşturulmasında rol oynar.
Hashingin asıl gücü çok büyük miktarda bilgi ile başa çıkabilmesidir. Örneğin, biri büyük bir dosya ya da veri setini hash fonksiyonu ile çalıştırabilir ve bu fonksiyonun çıktısını kullanarak verinin doğruluğunu ve bütünlüğünü hızla doğrulayabilir. Bu durum hash fonksiyonun determenistik doğası sayesinde mümkün olur. Girdi her zaman basitleştirilmiş ve yoğunlaştırılmış Hash yaratır. Bu teknik büyük verilerin kaydedilmesi zounluluğunu ortadan kaldırır.
Hashing, özellikle blokzincir teknolojisinde kullanışlıdır. Bitcoin blok zincir hashing’i dahil eden birkaç operasyona sahiptir ve bunların çoğu madencilik sürecinin parçasıdır. Neredeyse tüm kripto protokolleri, işlem grularını bloklara bağlamak, yoğunlaştırmak ayrıca her bir blok arasında kriptografik bağlantı yaratarak blok zincir oluşturmak için hashing kullanır.
Kriptografik Hash Fonksiyonları
Krioptografik teknikleri içeren hash fonksiyonu, kriptografik hash fonksiyonu olarak tanımlanabilir. Genel olarak, kriptografik hash fonksiyonunu kırmak çok fazla kaba kuvvet girişimi gerektirir. Bir kişinin, kriptografik hash fonksiyonunu “geri döndürmesi” için istenen çıktı yaratılana kadar girdinin ne olduğunu deneme yanılma yaparak bulması gerekir.
Bir kriptografik hash fonksiyonun etkin şekilde güvenli kabul edimesi için üç özelliğe sahip olması gerekir. Bunlar; çakışmaya dayanıklılık, ters görüntüye dayanıklılık ve ikincil ters görüntüye dayanıklılık olarak tanımlanır.
Çakışmaya Dayanıklılık
Herhangi iki farklı girdinin aynı hashı çıktı olarak üretememsi.
Ters Görüntüye Dayanıklılık
Hash fonksiyonun geri dönmemesi. Çıktıdan girdiye ulaşılamaması.
İkincil Ters Görüntüye Dayanıklılık
Bir girdi ile çakışan ikinci bir girdi bulunmaması.
Çakışmaya Dayanıklılık
Farklı girdiler aynı hash’ı ürettiğinde çakışma yaşanır. Bir hash foksiyonu bir çakışma olana kadar çakışmaya dayanıklı kabul edilir. Çakışmalar her zaman var olacaktır çünkü girdiler sonsuzken çıktılar belirli sayıdadır.
Çakışma ihtimali milyonlarca yıllık hesaplama ile bulunabilecek hash’ler dayanıklı kabul edilir. Dolayısıyla hiç çakışma gerçekleşmeyen hash fonksiyonları olması mümkün değilken bazıları çok düşük oranda bunu gerçekleştirdiği için oldukça güvenilirdir.
Ters Görüntüye Dayanıklılık
Ters görüntüye dayanıklılık özelliği tek yönlü fonksiyon kavramıyla ilişkilidir. Hash fonsiyonunun, belirli bir çıktı yaratan bir girdi bulma olasığının çok düşük olduğu durumda ters görüntüye dayanıklılık olarak kabul edilir.
Ters görüntüye dayanıklılık verinin korunmasına yönelik değerli bir özelliktir çünkü mesajın basit bir hashi bilgiyi paylaşma gereksinimi olamadan bu mesajın doğrulunu kanıtlayabilir. Uygulamada pek çok hizmet sağlayıcı ve web uygulaması, düz metin olarak şifreler yerine şifrelerden oluşturulmuş hashleri saklar ve kullanır.
İkincil Ters Görüntüye Dayanıklılık
İkincil ters görüntü saldırıları, bir kullanıcının bilinen bir girdinin yarattığı çıktıyla aynı çıktıyı yaratan belirli bir girdiyi bulup durması durumda gerçekleşir.
İkincil ters görüntü saldırısı, bir çakışma bulmayı içerir ancak aynı hashi yaratan iki rastgele girdi aramak yerine, belirli bir girdi tarafından yaratılan hashin aynısını yaratan başka bir girdi aranır.
Hash ve Madencilik
Bitcoin madenciliğinde, bakiye kontrolü, işlem girdi-çıktıları ve bir bloktaki işlemleri Merkle Ağacı oluşturmak için hashlemek gibi hash fonksiyonlarını içeren birçok adım bulunur.
Bitcoin madenciliğinin güvenilir olmasının nedenlerinden biri madencilerin bir sonraki bloğa yönelik geçerli bir çözüm bulabilmeleri için çok sayıda hashing işlemi yapmaları gerekmesidir.
Madnecinin aday bloğu için hash değeri yaratırken birkaç farklı girdiyi denemesi gerekir. Sonuç olarak madenciler blokları ancak belirli sayıda sıfırla başlayan çıktı hashleri yarattıkları zaman doğrulabilirler. Madencilik zorluk seviyesini belirleyen şey sıfırların sayısıdır ve sıfırların sayısı ağ için ayrılmış hash oranına göre değişiklik gösterir.
Bitcoin madenciliği yüksek maliyetli bir işlem olduğu için madencilerin sistemi kandırmaya çalışmak için geçerli bir nedenleri yoktur çünkü bunun finansal kayıp yaşamak durumunda kalırlar. Bir blockchaine ne kadar çok madenci katılırsa, o blockchain daha büyük ve daha güçlü hale gelir.