Özel Anahtar'dan (Private Key) Açık Anahtar'ı (Bitcoin Adresi) üretirken kullanılan kriptografik özet fonksiyonlarının (SHA256 ve RIPEMD160) tam anlamıyla hangi adımlardan geçtiği herkes tarafından bilinmesine rağmen nasıl oluyor da herkesle paylaştığımız Bitcoin adresinden özel anahtarlarımız elde edilemiyor ve fonlarımız çalınamıyor? Bu sorunun cevabını temel matematik bilgisiyle açıklamaya çalışacağım.
İlk olarak şu notu araya koymak gerekiyor: "Güvenlik anahtarın gizliliğine bağlıdır, algoritmanın gizliliğine değil."
Kriptografik özet fonksiyonları (hash fonksiyonları) neden geri döndürülemez?
Kriptografik özet fonksiyonlarının güvenliği matematiksel problemlere dayandırılır ve geri döndürmeden kasıt söz konusu problemde geçen fonksiyonun tersinin alınamaz olmasından kaynaklanır.
Bir fonskiyonun tersinin alınabilir olması;
f(x): y = 2x + 1 şeklinde bir fonksiyon verilsin. Bu fonksiyon basitçe kendisine verilen değerin 2 katına 1 ekleyip sonucu geri döndürür, örneğin x=2 olduğunda y=5 bulunmaktadır. Peki ya bize y verilirse x'i bulabilirmiyiz? Bu fonksiyon için cevabımız evet olacaktır.
f(x)
-1: x = (y-1)/2 Eğer y=5 değerini f(x)
-1'de yerine koyarsak x'in 2 olduğunu kolaylıkla bulabiliriz.
Karmaşıklığı artırmayı deneyelim.
f(x): y = x
2+5x + 4 fonksiyonu verilsin. Peki bu fonksiyonun tersini bulabilirmiyiz?
x = y... gibi bir ifadeyi kolayca bulamasak da y = 18verildiğini varsayalım.
18 = x
2+5x + 4
14 = x (x+5)
x = 2 olduğunu kolayca görebiliriz.
Bu arada bu fonksiyonun tersi bu:
Tersi alınamayan daha doğrusu ilk değere geri dönülemeyen
tek yönlü fonksiyona bakalım bir de;
Örneğin mod alma işlemi buna güzel bir örnektir.
f(x): y = x mod 10 fonksiyonu verilsin. x değeri 153 ise, y değerini 3 olarak hesaplarız.
Bu fonksiyonun tersini şu şekilde kabul edebiliriz;
f(x)
-1: x = 10*t + y bu formül üzerinden verilen y değerinden x'i bulmaya çalışalım;
x = 10*t + 3.
Peki ya t değeri kaç? t değeri sonsuz bir küme olan tam sayılar kümesinden herhangibir eleman olabilir. Doğru t değerin kaç olduğunu saldırgan nasıl bilebilir?
Kriptografik özet fonksiyonlarının güvenliği de bu örnekteki tek yönlü fonksiyonda saldırganın bu t değerini sonsuz kümeden bulup çıkartamaması üzerine kuruludur.
Yukarıda verilen x ve y değerlerinden x'in özel anahtar (private key), y'nin de açık anahtar (bitcoin adresi) olduğunu ve matematiksel olarak açık anahtardan özel anahtarın hesaplanamayacağını umarım anlatabilmişimdir.