Çift Harcama (Double Spending) Nedir?-banner-imageAkademi

Çift Harcama (Double Spending) Nedir?

Her ekonomik sistemde, paranın manipüle edilmesine engel olmak ortak bir hedef olarak karşımıza çıkmaktadır. Sahte altın, sahte banknotlar veya kopyalanmış dijital para birimleri olsun, kişisel finansal kazançlar için mevcut para birimlerinin istismarı veya taklit edilme sorunu mümkün olabilmektedir.

Bu yazımızda, dijital para birimlerindeki bir güvenlik sorunu olan çift harcamayı (double spending) inceleyeceğiz.


Çift Harcama Sorunu Nedir?

Çift harcama sorunu, tek bir para biriminin aynı anda birden fazla kez harcanması durumudur. Bu, harcama kaydı ile mevcut para biriminin miktarı arasında bir eşitsizlik yaratır.
Bu sorunu daha iyi anlayabilmek adına kısa bir örnek üzerinden geçelim. X kişisinin hesabında 100 TL olduğunu ve dijital bir ağ aracılığıyla Y kişisine 30 TL göndermek istediğini varsayalım:

  • Senaryo 1: Ağ olması gerektiği gibi çalışırsa, çift harcama sorununun önüne geçilecektir. Transferden sonra X kişisinin hesabında 70 TL kalacak, Y kişisinin hesabında ise fazladan 30 TL olacaktır.
  • Senaryo 2: Ağ düzgün çalışmıyorsa, X kişisi aynı parayı iki kez harcayabilecektir. Bu senaryoda, transferden sonra X kişisinin hesabında hala 100 TL kalacaktır ve Y kişisinin hesabında da fazladan 30 TL olacaktır.

Senaryo 2 meydana gelirse, çift harcama sorunu nedeniyle X kişisi, havadan kolayca para yaratmayı başaracaktır ve ağı yanıltacaktır. Çift harcama ihtimaline karşı yeterli önlem alınmaması durumunda, ilgili protokolün itibarı zedelenir. Zira dijital varlıkların birden fazla kez harcanıp harcanmadığı bilinemezse, varlığın değeri de bu olumsuzluktan etkilenir. Bu nedenle, bu riski teknolojik olarak ortadan kaldırmak çok önemlidir.


Bitcoin ve Çift Harcama

Satoshi Nakamoto’nun Bitcoin izahnamesiyle birlikte sunduğu en önemli inovasyonlardan biri çift harcama sorunu için ortaya attığı veri yapısı, yani blokzincirdir. Bitcoin gibi İş İspatı (Proof of Work) mutabakatını kullanan ağlarda işlemler, madenciler tarafından verilen onayla zincire eklenir. Onay esnasında her Bitcoin işlemi benzersiz bir “hash koduyla” imzalanır ve blok içindeki transferlere dahil edilir. Eğer aynı işlem bir kez daha gerçekleştirilmeye çalışılırsa doğrulayıcılar, işlemin sahte olduğunu tespit ederler.

Normal şartlarda Bitcoin ağında çift harcama yapılması, imkansıza yakındır. Tabi bu durum, eğer sistem beklenildiği gibi çalışırsa mümkün olmaktadır.


Çift Harcamaya Neden Olabilecek Sebepler

Bahsettiğimiz gibi, protokol beklenildiği gibi kullanıldığında çift harcama yapılması neredeyse imkansızdır. Fakat, çift harcama sorunu, blokzincirde nadir de olsa görülen potansiyel bir tehlikedir.

Kötü niyetli kişiler tarafından çift harcama yapmak için kullanılan yöntemler arasında Yarış Saldırısı (Race Attack), Finney Saldırısı ve %51 Saldırısı bulunmaktadır.

Yarış Saldırısı (Race Attack): İki işlemin hızlı bir şekilde art arda gönderildiği ve blokzincirde yalnızca birinin onaylandığı bir çift harcama saldırısıdır. Amaç, onaylanmamış işlemle bir şey satın almak ve ardından onaylanmadan önce geçersiz kılmaktır. Bu, yalnızca alıcı veya satıcı onaylanmamış bir işlemi kabul ederse mümkündür. Bir alıcı yeterli sayıda blok onayı almadan önce bir ödemeyi kabul ettiğinde, bir yarış saldırısı meydana gelir. Bir yarış saldırısı gerçekleştirmek için, gönderici aynı anda iki işlem gönderir. İlk işlem alıcının genel adresine gider ve ikinci işlem aslında gönderenin sahip olduğu başka bir genel adrese gider. Ağdaki madenciler ikinci işlemi doğrularsa, ilk işlem geçersiz hale gelecektir. Böylece alıcı, beklediği halde göndericiden herhangi bir para almayacaktır. Yarış saldırısı, esas olarak mağaza içi işlemler (örneğin kafelerde veya restoranlarda) veya işlemlerin hızlı bir şekilde işlenmesi gereken diğer senaryolar için potansiyel bir güvenlik sorunudur. Alıcının birkaç blok onayı bekleyebileceği çoğu çevrimiçi işlem veya senaryo için, bir yarış saldırısı pratik bir tehdit değildir. Ek olarak, işlemleri daha hızlı işleyen blokzincirlerin yarış saldırılarından kaçınma olasılığı daha yüksektir.

Finney Saldırısı: Yalnızca bir madenci tarafından gerçekleştirilebilen Finney saldırısının adı, Satoshi Nakamoto’nun ilk Bitcoin transferini alan Hal Finney’den esinlenmiştir. Yarış saldırısına benzer şekilde, bir alıcı yeterli sayıda blok onayı almadan önce bir ödemeyi kabul ettiğinde Finney saldırısı meydana gelebilmektedir. Bir Finney saldırısı gerçekleştirmek için, önemli kaynaklara veya büyük bir madencilik havuzuna sahip bir madencinin, ilk olarak blok oluşturması gerekir. Madenci bu bloğa, kendine kripto para gönderdiği bir işlemi aktarır fakat bu bloğu henüz yayınlamaz. Sonrasında daha önce madenciliği yapılmış başka bir bloğa, aynı kripto parayı göndermesi gereken kişiye aktardığı işlemi koyar. Alıcı, ödemeyi kabul ettikten ve hizmeti sunduktan sonra madenci, kendi bloğunu yayınlar ve bu bloğa dahil olan kripto paraları kendisine gönderen işlem, alıcıya yapılan onaylanmamış ödemeyi geçersiz kılar.

%51 Saldırısı: Bir grubun veya bireyin bir ağın işlemci gücünün (hash rate) %50'sinden fazlasını kontrol ettiği bir saldırıdır. Bu kişi veya grup, yeni işlemlerin gerçekleşmesini veya onaylanmasını engelleyebilir, ağda zaten onaylanmış olan işlemleri tersine çevirebilirler. Bu durum da, blokzincirin iki versiyonunun oluşmasıyla, diğer bir ifadeyle bir sert çatallanmanın (hard fork) ağ üzerinde gerçekleştirilmesiyle sonuçlanabilir. Biri, meşru madenciler tarafından takip edilen blokzincirin halka açık versiyonudur. İkincisi ise, saldırıyı yapan kişi veya grubun ağın geri kalanına yayınlamadığı blokzincirdir.

1001x282-100_(1).jpg.jpg

Bu nedenle, daha az işlemci gücüne sahip kripto para birimleri %51 saldırılarına daha açıktır. Bu saldırılar, yüksek işlemci gücü gerektiren projelerde daha zor ve maliyetlidir. Bu durumu, Crypto51 adlı bir site, farklı kripto paralar üzerinde sözde %51 saldırısının düzenlenmesi halinde, saldırganların harcayacağı saatlik maliyeti hesaplayarak göstermektedir. Aşağıdaki tablo, özellikle daha az işlemci gücü olan kripto paraların riskini vurgulamaktadır.

Screenshot_22.png

Kaynak: Crypto51

Tabloda da görüldüğü üzere Bitcoin'e %51 saldırısı yapıldığı halde, saldırganların saatlik kaybedeceği miktar 1.488.928 dolar değerindeyken Ethereum’da ise bu miktar 1.627.395 dolar değerindedir. İşlemci gücü düşük olan kripto paralarda ise bu maliyetin daha düşük olduğu görülmektedir.

Çoğu büyük kripto para biriminin arkasında yeterli madencilik kapasitesi vardır, bu da böyle bir saldırıyı gerçekleştirmek için gerekli donanımı edinmeyi son derece pahalı hale getirir. Daha küçük kripto para birimleri, ağı güvence altına alan daha az işlemci gücüne sahiptir.


Çift Harcama Nasıl Engellenebilir?

Projelerde temel teknolojilerin çoğu Bitcoin ile aynı kalırken, diğer ağlar mutabakatlarında yeni yaklaşımlar edinmiş ve kripto ekosistemini bu anlamda geliştirmeye devam etmiştir. Pay İspatı (Proof of Stake) veya Delege Edilmiş Pay İspatı (DPoS) gibi mutabakatları kullanan blokzincirler, uygulanabilir farklı alternatifler haline gelmiştir ve çift harcama gibi sorunları çözmek ve ağların genel güvenliğini artırmak için iyileştirmeler yapılmasını sağlamıştır.