Zero Knowledge Proof (ZKP) ya da Türkçe ifadesiyle sıfır bilgi ispatı kavramı basit bir ifadeyle A kişisinin bir verinin doğruluğunu, veriyi oluşturan bilgileri ortaya çıkarmadan, sadece elindeki verinin doğru olduğunu belirterek, B kişisine kanıtlayabildiği kriptografik protokol olarak açıklanabilir. Bu yazıda Zero Knowledge Proof nedir, blokzincirinde nasıl kullanılır sorularının cevaplarını bulabilirsiniz.
ANA BAŞLIKLAR
Sıfır Bilgi İspatı (ZKP) Nedir?
ZKP kavramı ilk olarak 1985 yılında Shafi Goldwasser ve Silvio Micali tarafından yayınlanan “The Knowledge Complexity of Interactive Proof Systems (Etkileşimli İspat Sistemlerinin Bilgi Karmaşıklığı)” başlıklı makalede ifade edilmiştir. Sıfır bilgi ispatı yönteminde kanıtlayan (prover) ve doğrulayan (verifier) olmak üzere iki taraf bulunmaktadır. Bununla birlikte işlemin iki ucu arasında verinin içeriğine yönelik herhangi bir detay açıklanmamaktadır. Başka bir ifadeyle kanıtlayan (prover), doğrulayana (verifier) ilettiği verinin doğru olduğu bilgisi dışında herhangi bir girdi vermemektedir. Bu kavram arkasındaki mantık bilginin ifşa edilmeden kanıtlanması fikrine dayanmaktadır. Böylece gizlilik seviyesi en üst seviyeye çıkarılmaktadır.
Kanıtlayan (prover), verinin doğruluğunu kanıtlamalıdır. Buna karşılık doğrulayan (verifier) ise doğru bilgiyi aldığına ikna olmalıdır. Bunun için doğrulayan (verifier), kanıtlayanı (prover) tüm bilgileri doğru bildiğinde gerçekleştirilebileceği bir dizi teste tabi tutar. Doğrulayan (verifier) bu etkileşimi defalarca kez tekrarlayarak kanıtlayanın (prover) bilgiyi gerçekten bildiğini mi yoksa tahminde mi bulunduğunu test eder. Doğrulayan (verifier) ikna olana kadar defalarca kez kanıtlayana (prover) rastgele sorular sorar yani teste tabi tutar. Bu süreçe herhangi bir bilgi ifşa edilmemektedir, sadece bilginin kanıtlayan (prover) tarafından gerçekten bilinip bilinmediği test edilmektedir.
Sıfır Bilgi İspatı Örneği
Sıfır bilgi ispatını açıklayan en önemli örnek Ali Baba Mağarası metaforudur. Buna göre senaryo gereği tek girişi olan halka şeklinde bir mağara bulunmaktadır. Mağaranın ortasında ise şifreyle açılan bir kapı mevcuttur. Yani mağaranın bir tarafından girip diğer tarafından çıkmak için şifrenin bilinmesi gerekmektedir. Yine senaryo gereği iki kişi mevcuttur. Bunlardan A kişisi şifreyi bildiğini iddia etmektedir ve şifreyi B kişisine söylemek istememektedir yani kanıtlayandır (prover). B kişisi ise, A kişisinin şifreyi gerçekten bilip bilmediğini merak etmektedir yani doğrulayandır (verifier).
Senaryo gereği ilk olarak A kişisi mağaraya girerek iki yoldan birine rastgele sapmaktadır. Ardından B kişisi mağaraya girmektedir ve A kişisine geri dönmek için kullanmasını istediği yolun adını bağırmaktadır. A kişisi şifreyi bildiği takdirde, B kişisinin gelmesini istediği yolu kullanarak geri dönecektir. Ancak iki kişi de başlangıçta aynı yolu seçmiş olabilir. Bu nedenle süreç defalarca kez tekrarlanır, yani süreç test edilir. A kişisi, her seferinde B kişisinin seçtiği yoldan döndükçe şifreyi yani bilgiyi bildiğini karşısındakine daha fazla kanıtlamış olur. Özetle kanıtlayan, verinin doğruluğunu kanıtlarken, doğrulayan ise doğru bilgiyi aldığını test etmektedir. Ancak veriyle ilgili herhangi bir bilgi ifşa edilmemektedir.
Blokzincirinde Sıfır Bilgi İspatı Nasıl Kullanılır?
Blokzinciri üzerinde gerçekleşen işlemlerde, işlem detayları ağdaki diğer katılımcılar tarafından görülebilir. Buna karşılık sıfır bilgi ispatı protokolleri, varlıkların blokzinciri üzerinde gizlilikle aktarılmasını sağlamaktadır. Yani ZKP’li bir işlemde, işlemin tarafları dışında geri kalan ağ katılımcıları yalnızca geçerli bir işlemin gerçekleştiğini görmektedirler.
Gizlilik odaklı olarak oluşturulan privacy coin’ler sıfır bilgi ispatını kullanan ilk kriptopara uygulamaları olarak gösterilebilir. Gizlilik odaklı blokzinciri ağları, sıfır bilgi teknolojisini protokollerine dahil ederek, düğümlerin verilere erişmesine gerek duymadan işlemleri doğrulamasını sağlamaktadır. Başka bir ifadeyle gönderici/alıcı adresleri, varlık türü, miktarı ve işlem zamanı dahil olmak üzere işleme ait ayrıntılar gizli kalmaktadır.
ZKP, gizlilik odaklı blokzincirlerinin yanı sıra Ethereum Katman 2 ölçeklendirme çözümlerinde de kullanılmaktadır. Buna göre sıfır bilgi ispatı, bir işlemde tutulan veri miktarını azaltmak amacıyla kullanılır. Böylece ölçeklenebilirliğin artırılması hedeflenmektedir. Sıfır bilgi kanıtının bir başka uygulaması ise halka açık blokzincirlerindeki anonimleştirme işlemlerinde de kullanılması olarak gösterilebilir.