İlk (Bu) yazımda blockchainde önemli kullanım alanları bulunan hashing işleminden, hash algoritmalarından ve özelliklerinden bahsedeceğim.
Hashing nedir?
Hashing, farklı büyüklükteki girdiyi sabit büyüklükteki bir çıktıya dönüştürme sürecidir. Bu dönüştürme işlemi ise hash algoritmalarıyla gerçekleştirilir.
Bütün hash fonksiyonları kriptografi kullanımını tam olarak içermese de, kriptografik hash fonksiyonları kripto varlıkların temelini oluşturur.
Hash fonksiyonları nasıl çalışır?
Hashing işleminden elde edilen çıktıların büyüklükleri, kullanılan hash algoritmasına göre değişir. Örneğin SHA-256, (Bitcoin blockchain’inde bu algoritma kullanılmaktadır.) daima 256 bitlik çıktı verirken, MD5 algoritması daima 128 bitlik çıktı verir.
Burada “bitcoin” ve “Bitcoin” kelimelerini SHA-256 hash algoritmasından geçirdiğimizde kelimeler arasında küçük bir farklılık olmasına rağmen birbirinden farklı 256 bitlik (64 karakter) çıktılar elde ediyoruz. Eğer burdaki girdiler yüzlerce satırlık iki girdi olsaydı ve bunlar arasındaki tek fark da bir harf olsaydı yine aynı şekilde tamamen birbirinden farklı, aynı büyüklükte çıktılar elde edecektik.
(Çıktılar farklı uzunlukta gözüküyor fakat sayıldığında ikisi de 64 karakter.)
Hashin algoritmalarında aynı girdi ile daima aynı çıktı oluşur. İki farklı girdinin çıktısı aynı olamaz (Öyle olması beklenir.) Eğer farklı girdilerden aynı çıktı elde edilirse buna çakışma denir. Bu durumda o algoritmanın güvenilirliği zedelenir. Şu anda hash algoritmaları arasında (SHA, MD5, RIPEM-D) yalnızca SHA-2 ve SHA-3 grupları güvenli kabul ediliyor.
Hash fonksiyonların özellikleri
Bir hash fonksiyonu, kriptografik teknikler içeriyorsa kriptografik hash fonksiyonu olarak adlandırılabilir. Bir kriptografik hash fonksiyonunun güvenli kabul edilebilmesi için belirli özelliklere sahip olması gerekir. Şimdi bu özellikleri görelim.
Deterministlik
Kriptografik hash fonksiyonları deterministiktir. Bunun anlamı hashing algoritmasında girdi değişmediği sürece daima aynı çıktının (hash veya özet) alınacağıdır. Her girdi için farklı çıktılar elde ettiğinizi düşünün. Bu durum, hashlenmiş verilerin kontrolünü imkansız hale getirirdi.
Çakışmaya dayanıklılık
Bir hash fonksiyonunun farklı girdiler için benzer çıktılar verdiği durumlara çakışma denir. Örneğin “bitcoin” ve “Bitcoin” girdileri hash fonksiyonunda aynı çıktıyı üretiyorsa burada bir çakışma meydana gelmiştir. Dolayısıyla bir hash algoritmasında çakışma bulunana kadar o algoritmanın güvenli olduğu kabul ederiz. Bulunduğu takdirde de hash algoritmasının güvenli olma özelliği ortadan kalkar.
Ters görüntüye dayanıklılık
Güvenli kriptografik hash fonksiyonlarının en önemli özelliklerinden biri, tek yönlü olmalarıdır. Yani belirli bir girdinin hash fonksiyonu ile elde edilen çıktısını kullanarak tekrar girdiye ulaşmak mümkün olmamalıdır.
Hash fonksiyonlarının blockchaindeki kullanım alanları
Hash fonksiyonları, kripto para sektörü için tasarlanmamışlardır fakat güvenliği arttırmaları sebebiyle blockchain alanında yaygın olarak kullanılmaktadır ve güvenli işlemler yapılmasını sağlarlar. Blockchain inovasyonunun ayrılmaz bir parçasıdırlar. Esasen, işlenen işlemlerin güvenliğini arttırır ve onları değişmez kılar.
Sonuç olarak blockchain sağladığı bütünlüğü koruma noktasında bir dizi kullanım alanına sahiptir. En yaygın kullanımları şöyledir:
– Dijital imzalar: Hash fonksiyonları, bütünlüğü koruyarak verileri kompakt bir çıktıyla özetleyen dijital imza algoritmalarının temel bir parçasıdır. Dijital imzalar, blockchain işlemleri, blokların veri bütünlüğünü korumak ve kimlik doğrulaması için kullanılırlar.
– Merkle ağaçları: Merkle ağacı yapısı kullanılarak bir blok içinde yer alan işlemlerin listesinin özetini (hash’ini) blok başlığında tutabiliriz. Önce veriler hashlenir sonra elde edilen hashler tek bir hash elde edinceye kadar tekrar hashlenir. Sonunda da elimizde kalan hash kök hashimiz olur. Bu kök hash de blockchain yapısının başlık kısmında tutulur. Kök hash bir blok başlığında saklanarak blok içindeki işlemlerin bütünlüğü korunmuş olur.
– Proof of Work (PoW) konsensüsü: Büyük kripto paraların çoğu mutabakat algoritması olarak PoW kullanır. Bitcoin madenciliğinde de kullanılan bu mekanizmada geçerli bloğu bulma sürecinde hash fonksiyonlarının rolü büyükür. Madenciler, bloğun kabul edilebilmesi için geçerli hash değerine ulaşıncaya kadar blok içerisindeki nonce değerini değiştirirler. Geçerli hash değerini bulduklarında ise blok onaylanır ve zincire eklenir.
– Blokchain: Blockchaindeki her blok, başlık kısmında önceki bloğun başlığının hashlenmiş değerini içerir. Bu durum tüm blokları birbirine bağlar ve herhangi bir bloktaki değişiklik, takip eden her bloğun yeni versiyonlarını oluşturmayı gerektirir, bu da blockchain dijital defterinin bütünlüğünü korumaya yardımcı olur.
Hash fonksiyonlarının blockchainde, bilgisayar bilimlerinde verilerin bütünlüğü ve değişmezliği noktasında rolü büyüktür. Blockchain defteri, merkeziyetsiz bir şekilde depolandığından ve her node (blockchainin bir kopyasını elinde tutan cihaz) kendi kopyasını koruduğundan, defterin değişmezliği güvence altına alınır. Aksi takdirde nodeler defterin sürümlerini kendi çıkarları için değiştirerek ağın birliğini bozabilirler.
Kriptografik hash fonksiyonları tüm blockchainler ve kripto para ağları için hayati kıymete sahiptir ve bu yüzden çalışma mekanizmalarını anlamak blockchain ile ilgilenen biri için çok faydalı olacaktır.