Bitcoinde Teknlojik Arka Plan
İçeriğe Ait Başlıklar
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.
Şekil 3.1: Sha-256 özet fonksiyonu örneği*
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.
* Mesajda yapılan ufak bir değişiklik (nokta işareti ilave edilmiştir), özeti tamamen değiştirmektedir.
Teorik olarak, 256 adet ardışık 0 veya 1’le, 2256^1.15 Xİ077 farklı özet elde edilebilir. Bu, çok büyük bir rakamdır.
Dijital İmza
Dijital imza, gizli (private) ve acık (public) anahtar ikilisiyle çalışan, matematiksel olarak güvenilirliği ispatlanmış şifreleme yöntemidir. Dijital imza atmak isteyen herkesin kendine ait, gizli ve açık anahtarı olması gereklidir. Gizli anahtarla şifrelenen bir mesaj, sadece şifreleyene ait açık anahtarla çözülebilir. Gizli anahtar adı üzerinde gizlidir, sadece imzalayanda bulunur, kimseyle paylaşılmaması gerekir. Açık anahtarın dağıtılmasında, hatta imzalı mesaja ek olarak gönderilmesinde hiç bir mahsur yoktur.
Gizli anahtarla yapılan şifreleme işlemine imzalama denir. Hızlı olması ve fazla yer kaplamasının önüne geçilmesi için genellikle, mesajın önce özeti çıkartılır, özet imzalanır, yani şifrelenir. Şekil 3.2’de imzalama ve imza doğrulama şematik olarak gösterilmektedir.
Mesaj gönderen kişi, mesajı ve imzalı mesaj özetini karşı tarafa gönderir. Alıcı, göndericinin açık anahtarı ile imzalı mesaj özetini deşifre eder. Deşifre edilen imzalı mesaj özeti, alınan mesajın özetiyle aynıysa, mesajın kesinlikle gönderici tarafından imzalanmış olduğu ortaya çıkar. Mesajda ufak bir değişiklik yapıldıysa, deşifre edilmiş mesaj özeti ile alınan mesajın özeti birbirine uymayacaktır.
İmzası doğrulanmış bir mesajda, mesajı imzalayan kişinin kimliği doğrulanmıştır (authentication), mesajı imzalayan tarafından inkar edilemezdir (non-repudiation), mesajın imzalandığı haliyle durduğu, hiç bir şekilde değiştirilmediği de (integrity) garanti altındadır.
Gizli anahtar, Bitcoin sisteminin temelidir, asla kaybedilmemeli, kimseyle paylaşılmamalıdır. Açık anahtar, gizli anahtardan eliptik eğri çarpım (elliptic curve multiplication, ECM) yöntemiyle elde edilir. Bu fonksiyon tek yönlü bir fonksiyondur. Başka bir deyişle, gizli anahtardan açık anahtar üretilebilir ancak, açık anahtardan gizli anahtarı bulmak mümkün değildir.
Gizli anahtar, 256 bit rastgele 0 ve l’lerden oluşur. Her 4 biti, onaltılık gösterime göre yazılmış, örnek bir gizli anahtar şu şekilde olacaktır:
E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262 3.2.1 Dijital İmzanın Güvenilirliği 256 adet ardışık 0 veya l’le, 2 256^ 1.15X 1077 farklı gizli anahtar üretilebilir. Gizli anahtar üretmek, 1 ile 2 256 arasında rastgele bir tam sayı üretmek olarak da görülebilir.
77 77
Herhangi iki farklı kişinin gizli anahtarının aynı olma ihtimali, yaklaşık 10 de l’dir. 10 80 çok büyük bir rakamdır, gözlemlenebilen evrende «*10 atom olduğu düşünülmektedir.
Eğer açık anahtardan, gizli anahtar elde edilebiliyor olsaydı, sistem tamamen güvensiz olmuş olurdu. Elinizde bir açık anahtar varsa, bunun gizli anahtarını bulmak isteyen birisinin, kaba kuvvet yöntemiyle (brüte force), tüm olasılıkları denemekten başka çaresi yoktur. 1′ den başlayıp 2256 ‘ya kadar tüm gizli anahtarları, ECM (elliptic curve multiplication) fonksiyonundan geçirip elde edilen açık anahtarın, aranan açık anahtar olup olmadığı kontrol edilmelidir. Ortalamada arama uzayının yarısında aranan gizli anahtarın bulduğu varsayılsa, 256 255 76 2“ -^-2=2“ =« 10 deneme yapılması gerekecektir. Günümüz süper-bilgisayarlannda dahi bu deneme, milyar kere milyar yıl sürebilecektir. Özetle, açık anahtardan, gizli anahtan elde etmek pratik olarak mümkün değildir.
Henüz kuantum bilgisayarlar icat edilmemiş olmasına rağmen, bu bilgisayarlar sebebiyle, gelecekte açık/gizli anahtar çiftinin güvenilirliği risk altına girebilecektir. Bu durumda ileri kuantum açık/gizli anahtar çiftleri veya farklı kriptolama metotlan devreye alınarak, dijital imzalamanın güvenilirliği korunmaya devam edilebilecektir.
Bitcoin Adresi
Bitcoin adresi veya Bitcoin cüzdan adresi, geleneksel bankacılıktaki hesap numarasına benzetilebilir. Tüm giriş ve çıkış işlemleri Bitcoin adreslerine yansır. Bitcoin adresi, 27 ile 34 adet sayı ve harften oluşur, 1 veya 3 rakamı ile başlar.
Örnek Bitcoin adresi: lL5wSMgerhHg8GZGcsNmAx5EXMRXSKR3He
Şekil J. J’de gösterildiği gibi, bir Bitcoin adresi açık anahtardan, açık anahtar ise gizli anahtardan tek yönlü fonksiyonlarla üretilirler*. Bitcoin adreslerinin kullanılmasında büyük ve küçük harf duyarlılığı vardır.
Bir Bitcoin adresinden, açık anahtan elde etmek mümkün olmadığı gibi, gizli anahtan elde etmek de mümkün değildir. Bitcoin adresi olarak doğrudan açık anahtarın kullanılmaması, bazı durumlarda ekstra güvenlik önlemi olarak da görülebilir.
Açık anahtardan, Bitcoin adresi üretmek için http://en.bitcoinwiki.org/Bitcoin_address
Harf ve rakamlardan oluşan Bitcoin adreslerini ezberlemek veya yazmak zor olduğundan, pratikte Şekil 3.4’te görüldüğü gibi iki boyutlu Barkod olarak bilinen QR kodları kullanılabilmektedir.
İş İspatı (Proof of Work)
Bir bilgisayarın, bir iş için çalıştığının ispatlanmasında kullanılan bir metottur. Bilgisayarlar bazı işlemleri, çok hızlı yapabilirler, örneğin e-posta atmak, çok hızlı yapılabilir bir işlemdir. Bu sebeple, bir bilgisayarın dakikalar içerisinde milyonlarca, istenmeyen e-posta atması da mümkündür. Bunu engellemek için, e-posta sunucusu, e-posta atan bilgisayardan, biraz çalışmasını ve bunu ispatlamasını isteyebilir. Bu sayede, e-posta atmak isteyen bilgisayar, biraz çalışarak, birkaç e-posta atabilecek ama milyonlarca e-posta atması için gerekli zamanı bulamayacaktır.
İş ispatı için genellikle SHA-256 özet fonksiyonu kullanılır. SHA-256 özet fonksiyonu, 256 adet ardışık, neredeyse rastgele olan 0 ve 1’den oluşan bir çıktı üretir. 256 bitlik bu diziyi, tam sayı olarak ifade etmek mümkündür. Bu durumda, SHA-256, 0,1,2, 3,…, (226 —1) arasında rastgele bir sayı üretmiş olacaktır. İş ispatı yapmak isteyen bilgisayardan, Şekil 3.5’te görüldüğü gibi, sabit bir mesaja ek mesaj ekleyerek, SHA-256 ile özetledikten sonra, elde edilen özetin rakam karşılığının, önceden belirlenen bir rakamdan (zorluk hedefinden) küçük olması istenir. SHA-256 özet fonksiyonu kriptografik olarak güvenli bir algoritma olduğundan, sistem defalarca deneme yapmadan, aranan ek mesajı bulması imkansızdır. Ayrıca ek mesajı bulmak zor, fakat ek mesajın bulunup bulunmadığının kontrolünü yapmak çok kolaydır. Zorluk hedefi. ne kadar küçük olursa, iş ispatı o kadar zor olacaktır.
Çalıştığını ispatlayan bilgisayar, mesaj ve bulduğu ek mesajı ispat isteyen sunucuya gönderir, sunucunun ispatın doğru olup olmadığını kontrol etmesi çok kolaydır. Mesaja, ek mesajı ilave eder, özetleme algoritmasından geçirir, elde ettiği 256 bitlik özetin rakam karşılığının, zorluk hedefinden küçük olup olmadığına bakarak, iş ispatının yapılıp yapılmadığını kolayca kontrol edebilir. İş ispatı yapmak bulmaca çözmeye benzetilebilir, bulmaca çözmek zordur, ama çözülmüş bir bulmacanın kontrol edilmesi (iş ispatının kontrolü) kolaydır.
Bitcoin madencilerinin, transfer işlemlerinden bir blok oluşturması ve bunu yaparken birbirleriyle yarışmaları iş ispatı metotuyla gerçekleştirilir. Hipper kazanç konumuzda ilginizi çekebilir.