Gizli İşlemlere (Confidential Transactions) Giriş
Ana sayfa
Makaleler
Gizli İşlemlere (Confidential Transactions) Giriş

Gizli İşlemlere (Confidential Transactions) Giriş

İleri Seviye
Yayınlanma: Feb 10, 2020Güncellenme: Dec 28, 2022
6m

İçerik


Giriş

Bir blockchainin çalışmasında sistemin şeffaf olmasının kritik öneme sahip olduğu kabul edilir. Bu da ağ üzerindeki her bir node'un bir kopyayı tutabilmesi ve hiçbir kuralın bozulmadığını doğrulayabilmesi anlamına gelir. Dağıtılmış kayıt defterlerinin bir çoğunda, herhangi bir kişi bloklar, işlemler ve adresler arasında arama yapabilmesini sağlayan bir online blok tarayıcısı yükleyebilir.

Gizlilik bakımından bu yaklaşım ideal değildir. Bitcoin gibi bir sistemde her bir işlem kendisinden bir önce gelenle bağlantılıdır. Coinler teknik olarak fungible (birbirine denk) değildir bu da her bir coinin belirli işlemlerle ilişkilendirilebileceği anlamına gelir. Hiç kimse bitcoin göndermenizi engelleyemez fakat bu coinler kara listede olan bir adresten daha önce geçtiyse sizden gelen işlemler kabul edilmeyebilir.

En kötü senaryoda birbirinin aynı olmama durumu sistemi en temelden derinlemesine etkileyebilir. Temiz coinler prim kazanırken diğer eski olanlar işlem geçmişleri nedeniyle daha az değerli hale gelebilir.

Bitcoin'in gizlilik seviyesi genellikle abartılmaktadır. Coinler takip edilebileceği gibi kullanıcılar da takip edilebilir. Kullanıcıların kimlikleri bilinmez (isimleri yerine açık adresleri görülür) fakat bunda da kusurlar mevcuttur. Sofistike analiz teknikleri gitgide artan bir doğruluk oranıyla ağ birimlerinin kimliğini açığa çıkarmak için adresleri bir araya getirebilmektedir.

İşlemleri gerçek anlamda gizli kılmak üzere önerilen yükseltmelerden biri Gizli İşlemlerdir.


Gizli İşlemler nedir?

Gizli İşlemler (CT) ilk olarak Blockstream CEO'su Adam Back tarafından 2013'de ortaya atılmış ve daha sonra Bitcoin geliştiricisi Gregory Maxwell tarafından kapsamı genişletilmiştir. Maxwell ilk bölümde bahsettiğimiz problemleri listelemiş (birbirinin aynı olmama ve zayıf kimlik gizliliği) ve bunlar için bir çözüm önermiştir. Çözüm, transfer edilen tutarların ağın geri kalanından gizlenerek yalnızca işleme dahil olan partiler tarafından bilinir olmasını içerir.

Normal koşullar altında (işlemler herkes tarafından görülebildiğinde) bir node'un alınan tutarın gönderilen tutarı geçmediğini doğrulaması oldukça kolaydır. Eğer Alice, Bob'a 0,3 BTC göndermek isterse önce harcanmamış bir çıktıyı alır (diyelim ki 1 BTC) ve bunu iki parçaya böler: Bob'a gönderilecek 0,3 BTC ve kendisine geri gönderilecek 0,69 BTC (kalanı madencilik ücreti olarak kullanılır).

Bu da diğer node'lar için basit bir aritmetik yaratır: 1, 0,3 + 0,69'dan yüksek, imzaların tamamı doğru ve Alice'in girdisi başka bir yerde daha önceden harcanmadı, dolayısıyla işlem geçerli olmalı. Tutarlar gizlendiğinde ise işler bu kadar kolay olmaz. Bilinmeyen bir tutarın bilinmeyen diğer iki tutarın toplamını geçip geçmediği nasıl değerlendirilebilir ki?


Kullanılan kriptografiye genel bir bakış

Veriyi gizlemek için şifreleme gereklidir. Fakat geleneksel yöntemler belgeleri bir kasaya koymaya benzer: bir kere içeri konduğunda dışarı çıkarılana kadar kullanılmaz hale gelir. Gizli İşlemlerin işe yaraması için ihtiyaç duyulan şey içerikleri görünmez hale getirecek fakat bu içeriklerin özelliklerinin dışarıdaki birisi tarafından doğrulanmasına izin verecek bir dijital kasadır.

Cevap homomorfik şifrelemede özellikle de Pedersen taahhüdü adlı bir şemada yatar. Bu şifreleme türü dışarıdan bir kişinin şifreli veri üzerinde (bu veriyi göremezler) çeşitli amaçlara yönelik işlemler yapmasına imkan tanır. 

Daha sonra görünür hale getirilmek istenen veri için standart bir hash uygulaması kullanılabilir. Varsayalım sosyal medya üzerinde bir yarışma duyurusu yapacaksınız ve favori borsanızı tahmin edebilenler 0,01 BTC kazanacak. Böyle bir durumda katılımcılar yarışmanın tamamlanmasının ardından yanıtlara bakarak öneri olarak gelmemiş bir borsayı seçmenizden şüphelenebilir.

Burada yapabileceğiniz şey takipçilerinize bir hash yani rastgele sayılardan ve karakterlerden oluşuyor gibi gözüken ama belirli bir girdiyi işaret eden bir dizi sunmaktır. Belirli bir çıktı elde etmek için borsanızı bir fonksiyondan geçirirsiniz. Örneğin SHA256 algoritması şu şekilde gözükür:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Buna bakarak girdinin ne olduğunu tahmin edemezsiniz. Ayrıca fonksiyonu geri çevirerek de girdiye ulaşamazsınız. Fakat eğer girdinin “Binance” olduğunu bilirseniz bunun hash'inin yukarıda gözükenle aynı olduğunu kolayca doğrulayabilirsiniz. Böylece takipçileriniz yarışmanın sona ermesinin ardından cevabınızı değiştirmeyeceğinizi bilebilir çünkü cevabı değiştirmeniz tamamen başka bir çıktı yaratır.

Fakat gerçekçi yaklaşırsak bu yaklaşım çok da güvenli olmaz. Takipçileriniz algoritmadan ters mühendislik yapamasa da olası borsaların bir listeni yaratıp bir eşleşme elde edene kadar bunların her birini hash edebilir. Bunun olması ihtimalini azaltmak için hash edilecek veriye körleştirme faktörü adı verilen rastgele veriler eklenebilir. 

Eğer girdimiz “Binance benim favori borsam ve onu tüm diğer borsalardan daha çok seviyorum 2#43Wr” olursa birinin bunu tahmin edebilmesi çok daha zor hale gelir (ve 0,01 BTC için hiç kimsenin bunu denemeyeceği neredeyse kesindir).

Bir Pedersen taahhüdü, taahhütlerin arkasına girdi eklememize imkan tanır. Maxwell bunu şu şekilde gösterir:


C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

 BF körleştirme faktörü ve D ise veridir


Bu noktadan sonra eliptik eğri kriptografisini ve aralık ispatlarını içeren birkaç adım daha bulunur ama temel fikir kullanıcının adresi için bir Pedersen taahhüdüne sahip olmasıdır. Fon gönderirken ek iki taahhüt daha yaratılır (biri para üstünün kullanıcıya geri gönderileceği adres ve diğeri de paranın gönderileceği hedef adres). 

Hiç kimse gönderilen tutarı bilemez ama para üstü ve hedef taahhütlerin (Maxwell'in denkleminin sol tarafı) toplamının gönderici adrese (denklemin sağ tarafı) denk olup olmadığı kontrol edilebilir. Eğer denklik sağlanırsa girdilerin çıktılara eşit olduğu kanıtlanabileceği için kullanıcının işlemi geçerli olur.


Gizli İşlemler neyi başarabilir?

Eğer Gizli İşlemler Bitcoin'e eklenirse çok daha gizli bir sistem elde edilebilir. Hem girdiler hem de çıktılar ağın genelinden gizlenebilir ve kayıt defteri üzerindeki girişler gizlenebilir fakat node'lar bu girişleri doğrulamaya devam edebilir. Bu büyük çaplı gizlilik artışıyla bitcoinler birbirine denk olarak kabul edilmeye başlanabilir çünkü artık zincir analizi belirli bir birimin geçmişini ortaya çıkaramaz. 

Gizli İşlemlerin protokole entegre edilmesi ise şu an için çok olası değildir. Eklenen bu fonksiyonla işlemler standart olanlara kıyasla çok daha büyük hale gelir ve sınırlı blok alanı göz önüne alındığında bu da yalnızca bir talep düşüşüne yol açabilir. Ayrıca katılımcıların çoğunluğunun kodun değişimini onaylamasını gerektirir ve bunun da zor bir işlem olduğu geçmiş örneklerle kanıtlanmıştır.


Son Fikirler

Gizli İşlemlerin uyarlamaları diğer kripto paralarda ve Bitcoin yan zincirlerinde uygulanmaktadır. Örneğin Monero anonimlik ve birbirine denklik (fungibility) elde etmek için gizli işlemleri halka imzalar adlı yapılarla birlikte kullanır. The Liquid yan zinciri daha fazla gizlilik için bunları uygular ve MimbleWimble da aynı hedeflere ulaşmak için gizli işlemlerin kapsamını artırır.

Gizli İşlemler sunduğu faydaların karşılığında daha büyük bir ayak izi yaratır. Kripto paralar genellikle ölçeklenebilirlik ve baz katmanda verimlilik sorunlarıyla karşı karşıyadır ve daha büyük işlem boyutları herkes için ilgi çekici olmayabilir. Bununla birlikte gizliliği savunanlar işlem tutarlarının gizlenmesinin ve kripto paraların gerçek anlamda birbirine denk paralar olarak hizmet edebilmesinin çok önemli olduğuna inanır.