Ana sayfa » Bitcoin Kriptolojik Özet Fonksiyonu
Blockchain Uygulamaları

Bitcoin Kriptolojik Özet Fonksiyonu

Bitcoin Kriptolojik Özet Fonksiyonu
Bitcoin Kriptolojik Özet Fonksiyonu

Bitcoin Kriptolojik Özet Fonksiyonu (Hash Function)

Özet fonksiyonları, farklı uzunluktaki dijital mesajlardan, sabit uzunlukta bir mesaj özeti çıkartırlar. Özet fonksiyonu hızlı çalışmalı, farklı girdilerin farklı çıktıları olmalı (çarpışmaya direnme), özet mesajdan yola çıkarak özetlenen mesaj hakkında çeşitli bilgiler üretilememelidir. Özet mesajları incelediğinizde rastgele oluşmuş gibi görünmelidirler.

Bitcoin Kriptolojik Özet Fonksiyonu
Bitcoin Kriptolojik Özet Fonksiyonu

Şekil Sha-256 özet fonksiyonu örneği

Bitcoin Kriptolojik Özet Fonksiyonu

Bitcoin işlemlerinde SHA-256 isimli özet fonksiyonu kullanılır. SHA-256, girilen mesajın uzunluğundan bağımsız, 256-bit (32 byte) mesaj özeti oluşturur. Kriptografik olarak en güvenilir özetleme fonksiyonlarındandır. Başka bir deyişle mesaj özetine bakarak mesajın ne olduğu kestirilemez.

SHA-256‘da, mesaj girdisi ne olursa olsun, mesaj özeti 256 tane ardışık, 0 veya 1’den oluşan bir dizedir. Okuma kolaylığı olması açısından genellikle, dörtlü gruplar halinde onaltılık sistemle yazılırlar. Bu durumda, mesaj özetleri ardışık 64 adet (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) harfleri kullanılarak yazılırlar.

Teorik olarak, 256 adet ardışık 0 veya 1’le, 2~1.15 Xİ0″ farklı özet elde edilebilir. Bu, çok büyük bir rakamdır.

SHA-256 (Secure Hash Algorithm), SHA-2 altındaki 6 kriptografik hash algoritma setinden bir tanesidir. ABD’nin kriptoloji üzerine uzman Ulusal Güvenlik Ajansı (NSA) tarafından geliştirilmiştir. SHA-256, bitcoin madenciliğindeki proof-of-work hesaplamalarında ve bitcoin adresi oluşturma işlemlerinde kullanılır. Bilinen kriptolama fonksiyonları arasında en yüksek güvenliğe sahip olanlardan biridir.

SHA-256’nın özelliği verileri standart bir hale ve büyüklüğe çevirmesidir. Veriler farklı boyutlarda ve büyüklüklerde olabilir. Sonuç her zaman aynı büyüklükte ve yapıda olacaktır. Bu 256 bit (32 byte – 64 hexadecimal) boyutundadır ve 256 hash de denir. SHA-256’da veriler hash değerlerine dönüştürülür fakat bu işlem tek yönlüdür, yani hash değerleri verilere geri çevrilemez.

Bitcoin Kriptolojik Özet Fonksiyonu

Burada dikkat edilmesi gereken bir diğer nokta hash değerlerinin karmaşık düzenleri nedeniyle önceden tahmin edilememesi veya birbirine çok benzer verilerin sonuçlarının birbirinden tamamen farklı olması. Yani hash değerlerinin önceden tahmin edilmesi imkansızdır.

Veriler üzerindeki en küçük bir değişiklik çıkan hash değerinin tamamen farklı olmasına neden olacaktır. Buna rağmen SHA-256 deterministik bir işlemdir. Yani aynı veri üzerindeki hash değerlerinin hesaplaması her zaman aynı sonucu verecektir.

Kriptoloji

Temel kavramlardan bahsederken Kriptoloji kelimesinin kökeninin eski bir Yunanca kelime olan Kryptos’dan geldiğini ve gizlilik demek olduğunu belirtmiştik. Tarih boyunca Gizlilik Bilimi (Kriptoloji) çok farklı yöntemler ile kullanılmıştır. Temel amaç bir verinin, istenmeyen birisinin eline geçtiğinde anlaşılamayacak hale getirilmesi ve tekrardan anlamlı hale getirilmesinin mümkün olduğunca zor hatta imkansız hale getirilmesidir.

En temel şifreleme yöntemini bir kasayı anahtar ile kilitlemeye benzetebiliriz. Anahtar sizin elinizde olduğu sürece kasayı sadece siz açabilirsiniz. Bir başkasına anahtarı vermediğiniz sürece veya kaba kuvvet kullanılmadıkça (bu süreç kasanın ne kadar sağlam olduğuna bağlıdır ve dijital dünyada bazı şifreleme yöntemleri gerçekten çok ama çok güçlüdür) açması mümkün olmayacaktır.

Kasa örneği eğer veriyi sadece siz saklayacaksanız anlamlıdır. Ancak veri bir başkasına gönderilecekse kasa ile birlikte anahtarı da göndermek gerekir. Bu da beraberinde anahtarın çalınması, kaybolması gibi farklı sorunları getirir. Anahtarın kaybolmaması için bir kopyasını çıkartmak ise güvenlik açısından daha da fazla probleme yol açabilir. Bu sebeple şifreleme dünyasında daha pratik bir çözüm kullanılır: Anahtarı değil, kilidi karşı tarafa göndermek.

Farz edelim ki siz elinizdeki bir veriyi çok önemli birisine göndereceksiniz. Yukarıda anlattığım problemler ile uğraşmak yerine karşı tarafın size bir kilit göndermesini talep edebilirsiniz. Bu durumda gelen kilit ile kasayı kilitledikten sonra karşı tarafa yollayabilirsiniz. Böylece anahtar hiç el değiştirmemiş olur ve güvenlik artar.

Blockchain ağlarında da bu yöntem kullanılır. Böylece ağların üzerine (ağ ister açık olsun ister özel olsun fark etmez) sadece belirli birisinin erişmesini istediğiniz bir veri ekleyeceğiniz zaman, karşı tarafın kilidi ile veriyi şifrelersiniz ve herkes ağda bu veriyi görse bile şifrelenmiş olacağı için anlamlandıramaz. Alıcısı, yani kilidi size gönderen ve bu kilidi açabilecek anahtara sahip taraf, bu anlamsız veriyi elindeki anahtar ile açarak okuyabilir. Böylelikle, Açık Blockchain Ağları’nda bile şifreli verileri tutmak mümkün hale gelir.

Bitcoin Kriptolojik Özet Fonksiyonu