ZkSNARKs nedir: Spooky Moon Math. Ethereum Metropolis aşamasına girerken, onu daha soyutlama ve gizlilik dostu hale getirecek çeşitli değişiklikler getirecek. Bu değişikliklerden biri, “Sıfır Bilgi Özlü Etkileşimsiz Bilgi Argümanı” namı diğer Zk-Snarks’ın tanıtılmasıdır. Zk-Snarks, sıfır bilgi ispatı fikrine dayanıyor.

Bu yazıda, sıfır bilgi kanıtı fikrini ve bunun blockchain teknolojisindeki uygulamasını inceleyeceğiz..

ZkSNARK nedir: Spooky Moon Math

Sıfır Bilgi kanıtları, MIT araştırmacılarının çalışmaları sayesinde 1980’lerde ortaya çıktı Shafi Goldwasser, Silvio Micali ve Charles Rackoff. Etkileşimli ispat sistemleri ile ilgili problemler üzerinde çalışıyorlardı, burada bir Prover bir Doğrulayıcı ile mesaj alışverişinde bulunuyor (daha sonra kanıtlayıcılar ve doğrulayıcılar hakkında), onları bu bilginin ne olduğunu beyan etmeden belirli bir kanıt hakkında bilgi sahibi olduklarına ikna etmek için..

Dönüm noktası niteliğindeki keşiflerini yapmadan önce çoğu ispat sistemi, ispat sisteminin “sağlamlık” özelliklerine dayanıyordu. Doğrulayıcıyı kandırmaya çalışacakları herhangi bir senaryoda, “kanıtlayanın” kötü niyetli kişi olabileceği varsayılmıştır. Bu 3 araştırmacı, kanıtlayıcı yerine doğrulayıcının ahlakını sorgulayarak fikri tersine çevirdi. Sordukları soru, doğrulayıcının bilgiyi sızdırmayacağından herkes nasıl emin olabilirdi ve ayrıca doğrulayıcının doğrulama sürecinde tanıyacağı kanıtlayıcı hakkındaki bilgi miktarı konusunda endişeler vardı..

Bu bilmecenin çeşitli gerçek dünya sonuçları vardır ve en ünlülerinden biri şifre korumasıyla ilgilidir. Bir web sitesine şifre kullanarak giriş yapmak istediğinizi varsayalım. Standart protokol, istemcinin (siz) şifresini yazıp sunucuya göndermesi, sunucunun daha sonra şifreyi karma hale getirmesi ve sistemlerinde sakladıkları karma ile eşitlemesidir. Değerler eşleşirse, sisteme girebilirsiniz.

Bu sistemdeki büyük kusuru doğru görebiliyor musun?? 

Sunucu, şifrenizin düz metin sürümüne sahiptir ve gizliliğiniz sunucunun insafına kalmıştır (bu senaryodaki doğrulayıcı). Sunucunun güvenliği ihlal edilirse veya saldırıya uğrarsa, şifreniz kötü niyetli kişide olur ve sonuçları çok ağır olabilir. Bu senaryolara karşı koymak için, sıfır bilgi kanıtı kesinlikle gereklidir ve her anlamda çığır açıcıdır..

Sıfır bilgi kanıtı söz konusu olduğunda (yukarıda belirtildiği gibi) kanıtlayıcı ve doğrulayıcı olmak üzere iki taraf vardır. Sıfır bilgi, bir kanıtlayanın, doğrulayıcıya, bu bilginin gerçekte ne olduğunu söylemeden belirli bir bilgiye sahip olduğunu kanıtlayabileceğini belirtir.

Sıfır bilgi kanıtının özellikleri

Bir ZKP’nin çalışması için belirli parametreleri karşılaması gerekir:

  • Tamlık: Eğer ifade doğruysa, o zaman dürüst bir doğrulayıcı, dürüst bir kanıtlayıcı tarafından buna ikna edilebilir..
  • Sağlamlık: Eğer kanıtlayıcı dürüst değilse, yalan söyleyerek ifadenin sağlamlığı konusunda doğrulayıcıyı ikna edemezler..
  • Sıfır Bilgi: İfade doğruysa, doğrulayıcının ifadenin gerçekte ne olduğu hakkında hiçbir fikri olmayacaktır..

Artık sıfır bilgi kanıtının ne olduğuna dair temel bir fikrimiz olduğuna göre, zk-snarks’a ve blok zincirindeki uygulamasına derinlemesine dalmadan önce bunun bazı örneklerine göz atalım..

Örnek 1 Alibaba Mağarası

Bu örnekte, kanıtlayıcı (P), doğrulayıcıya (V) mağaranın arkasındaki gizli kapının şifresini bildiklerini ve şifreyi onlara gerçekten söylemeden doğrulayıcıya kanıtlamak istediklerini söylüyor..

İşte göründüğü gibi:

ZkSNARKs nedir: Komik Ay Matematiği

Resim izniyle: Scott Twombly (YouTube kanalı)

Atasözü A ve B yollarından herhangi birine gider, varsayalım ki başlangıçta A yolundan geçip arkadaki gizli kapıya ulaşmaya karar verir. Bunu yaptıklarında, doğrulayıcı V, kanıtlayanın gerçekte hangi yoldan gittiğine dair hiçbir bilgisi olmadan girişe gelir ve atasözünün B yolundan çıktığını görmek istediklerini beyan eder..

Şemada, görebileceğiniz gibi, atasözü gerçekten de B yolunda görünüyor. Peki ya bu aptalca bir şanssa? Ya kanıtlayıcı geçiş kodunu bilmiyor ve B yolunu tutuyorsa, kapıda sıkışıp kalmışsa ve mutlak bir talihle, doğrulayıcı ona başlangıçta zaten bulundukları yol olan B yolundan çıkmasını söylediyse?

Dolayısıyla, geçerliliği test etmek için deney birden çok kez yapılır. Eğer kanıtlayıcı her seferinde doğru yolda görünebilirse, doğrulayıcıya, doğrulayıcı şifrenin gerçekte ne olduğunu bilmese bile, kanıtlayanın şifreyi gerçekten bildiğini kanıtlar..

Bu örnekte sıfır bilginin üç özelliğinin nasıl karşılandığını görelim:

  • Tamlık: İfade doğru olduğundan, dürüst kanıtlayıcı dürüst doğrulayıcıyı ikna etti.
  • Sağlamlık: Eğer kanıtlayıcı dürüst değilse, doğrulayıcıyı kandıramaz, çünkü test birden çok kez yapılmıştır. Sonunda, atasözünün şansı tükenmek zorunda kaldı.
  • Sıfır Bilgi: Doğrulayıcı, parolanın ne olduğunu asla bilmiyordu, ancak kanıtlayanın parolaya sahip olduğuna ikna olmuştu.

Örnek 2 Ali’yi Bulmak

Ali’yi bulmayı unutma?

Tabii ki görüyorsunuz, gerçek hayatta ya da internette bir yerlerde görmüş olmalısınız. Bilmeyenler için Finding Waldo, bir insan denizi arasında “Ali” yi bulmanız gereken bir oyundur. Basit bir “Adamı Bul” oyunudur. Size temel bir fikir vermek için, oyun şu şekilde görünüyor:

ZkSNARKs nedir: Komik Ay Matematiği

Görsel izniyle: Youtube (IntoConnection)

Fikir şuna benzeyen Ali’yi bulmak:

ZkSNARKs nedir: Komik Ay Matematiği

Görsel izniyle: Pinterest

Oldukça basit görünüyor, değil mi? Oyunda gördüğünüz diğer insanların denizi arasında bu adamı bulun. Peki, Sıfır Bilgi kavramı buraya nereden geliyor? Anna ve Carl’ın iki kişi olduğunu hayal edin. Anna, Carl’a Wally’nin nerede olduğunu bildiğini ancak ona tam olarak nerede olduğunu göstermek istemediğini söyler. Peki, tam konumunu göstermeden Wally’yi bulduğunu ona nasıl kanıtlayabilir??

Naor, Naor ve Reingold tarafından bu soruna iki Sıfır Bilgi çözümü gösteren ilginç bir makale vardı. Bir “Orta Teknoloji Çözümü” ve bir “Düşük Teknoloji Çözümü” vardır. İkisini de tartışalım.

Orta Teknoloji Çözümü

Bu çözümün “orta teknoloji” olmasının nedeni, kanıtlayıcımızın ve doğrulayıcımızın bu işi yapmak için bir fotokopi makinesine erişime ihtiyaç duymasıdır. İşte böyle gidiyor. İlk olarak, Anna ve Carl orijinal oyunun bir fotokopisini yapacaklardı. Sonra Anna, Carl’ın bakmadığından emin olurken, Waldo’yu fotokopiden çıkaracak ve sonra kalanları imha edecektir. Ondan sonra Ali’yi Carl’a kesin olarak gösterebilir ve Ali’nin tam yerini tam olarak göstermeden Ali’nin nerede olduğunu bildiğini kanıtlayabilir..

Bu çözümle ilgili sorunlar var. “Sıfır Bilgi” kriterlerini yerine getirirken, “Sağlamlık” kriterlerini karşılamıyor. Anna’nın burada hile yapabileceği birçok yol var. En başından beri onunla rastgele bir Waldo kesip çıkarabilirdi ve Ali’nin nerede olduğunu bilmeden bunu Carl’a gösterebilirdi. Peki bunun çözümü nedir?

Bunun çözümü titiz ve dikkatli bir testtir. İlk olarak, Anna ve Carl oyunun bir fotokopisini alacak. Ardından Carl, fotokopinin arkasına farklı bir desen çizecek. Bundan sonra Carl, Anna’ya izole olacağı ve hile yapma şansının olmadığı bir odaya kadar eşlik edecek. Anna, Waldo’dan bir parça çıkarırsa, Carl, çözümü açıklamadan Waldo’nun nerede olduğunu bildiğine ikna olabilir. Bu deneyi birden çok kez tekrarlayabilirler ve Carl, Anna’nın iddiasının geçerliliğinden daha da emin olmak için Ali’nin farklı kesimlerini karşılaştırabilir..

Düşük Teknolojili Çözüm

Bu çözüm, çok temel ekipman gerektiriyordu. Fikir basit. Oyunun iki katı büyüklüğünde kocaman bir karton alın ve üzerine küçük bir dikdörtgen kesin. Şimdi, Carl bakmadığında, Anna oyundaki kartonu, dikdörtgen doğrudan Ali’nin üstünde olacak şekilde hareket ettirebilir. Şimdi, Carl’a bakmasını söyleyebilir ve göreceği şey bu:

ZkSNARKs nedir: Komik Ay Matematiği

Resim İzniyle: Naor ve Reingold’dan Uygulamalı Çocuk Kriptografisi

Dolayısıyla, Ali, Ali’nin gerçekte nerede olabileceğine dair çok temel bir fikir edinse de, tam olarak yerini bilmiyor. Böylece Anna, tam yerini tam olarak belirlemeden Ali’nin nerede olduğunu bildiğini Carl’a kanıtladı..

Vaka # 3: Sudoku

Sıfır bilginin bir başka harika uygulaması da Sudoku’da. Bilmeyenler için Sudoku, aşağıdaki gibi görünen 9X9 masanın olduğu bir Japon bulmacasıdır:

ZkSNARKs nedir: Spooky Moon Math

Görsel izniyle: Hesaplamalı Karmaşıklık Blogu.

Buradaki fikir, her satırı, her sütunu ve her 3X3 bloğunu 1-9 arası sayılarla doldurmaktır ve hiçbir sayı kendini tekrar etmemelidir. Dolayısıyla, yukarıdaki bulmacanın çözümü şuna benzer:

ZkSNARKs nedir: Spooky Moon Math

Görsel izniyle: Hesaplamalı Karmaşıklık Blogu.

Gördüğünüz gibi, her satır, sütun ve 3X3 bloğu benzersizdir ve tek bir sayı tekrarlanmamıştır. Eski dostlarımız Anna ve Carl’a geri dönelim. Anna, Sudoku bulmacasının çözümünü bulmuştur ve Carl ona inanmadığından şüphelenir ve Anna’nın gerçekten de çözümü bildiğini kanıtlamasını ister. Anna, dürüstlüğünü kanıtlamak ister, ancak aynı zamanda, Carl’ın bulmacanın kesin çözümünü bilmesini de istemez. Nasıl devam edecek? Anna, iddiasının geçerliliğini kanıtlamak için Sıfır Bilgiyi kullanacak.

İlk olarak, Carl, dürüst olmak gerekirse, Sudoku çözümünü doğrulanmış bir bilgisayar programı aracılığıyla çalıştıracak ve program sayıları rastgele seçilen bir ikame şifresi aracılığıyla çalıştıracaktır. Diyelim ki bu özel problem için programın seçtiği şifre şudur:

ZkSNARKs nedir: Spooky Moon Math

Seçilen program ve şifre, her biri hane başka herhangi bir sayı ile aynı şansı onun yerine geçme şansına sahiptir. Temel olarak, 1’in dönüştürülme şansı vardır ve 3 ve 4’ün 9 kadar dönüştürülme şansı vardır ve bu böyle devam eder. Dolayısıyla, bu şifreyi kullanmak bize yukarıdaki bulmacaya şu çözümü verir:

ZkSNARKs nedir: Spooky Moon Math

Görsel izniyle: Hesaplamalı Karmaşıklık Blogu.

Anna dönüştürülmüş çözümü şimdi alıyor, Carl’ın hala orijinal çözümün ne olduğunu bilmediğini ve dönüştürülmüş çözüme de sahip olmadığını unutmayın. Öyleyse, Anna’nın şimdi yaptığı şey, bir “kilitli kutu mekanizması” kullanarak bulmacadaki tüm sayıları gizlemesi, temelde Carl sayıların hiçbirini göremeyecek ve önünde boş bir 9X9 ızgara görecektir..

Carl’ın şimdi önünde 28 seçenek var:

  • Bir satırı göster.
  • Bir sütun göster.
  • 3X3 kutusunu ortaya çıkarın.
  • Orijinal bulmacanın dönüştürülmüş halini ortaya çıkarın.

Carl’ın üçüncü sıranın neye benzediğini bilmek istediğini varsayalım:

ZkSNARKs nedir: Spooky Moon Math

Görsel izniyle: Hesaplamalı Karmaşıklık Blogu.

Bu onun göreceği şey. Carl, satırdaki her sayının benzersiz olduğunu görecek ve orijinal çözümdeki her olası sayının şifre yoluyla dönüştürülme olasılığı aynı olduğundan, Carl’ın orijinal çözümün ne olduğu konusunda hiçbir fikri olmayacak.

Şimdi, Carl’ın son seçeneği almaya karar verdiğini ve dönüştürüldüğünde orijinal bulmacanın neye benzediğini görmek istediğini varsayalım:

ZkSNARKs nedir: Spooky Moon Math

Görsel izniyle: Hesaplamalı Karmaşıklık Blogu.

Bir kez daha, şifre rastgele seçildiğinden ve tüm sayıların dönüştürülme olasılığı aynı olduğundan, Carl’ın orijinal çözümün ne olduğu hakkında hiçbir fikri olmayacak. Carl artık 28 seçimini de gözden geçirebilir ve sonunda Anna’nın ifadesinin geçerliliğinden memnun olacaktır..

Neden?

Çünkü, Anna gerçekten hile yapıyor olsaydı, Carl’ın 28 seçeneğinin tümü için benzersiz çözümler verecek bir şifre bulmasının bir yolu yoktu. Carl bir seçeneği seçtiyse, Anna’nın hile yapmaktan kurtulma şansı 27 / 28’dir. ANCAK, Carl rastgele test yapmayı birden çok kez seçtiyse, 150 kez test etmeyi seçtiğini varsayalım, Anna’nın hile yapmaktan kurtulma seçimi (27/28) ^ 150’ye düşer ki < % 0,5.

Öyleyse, bu senaryonun sıfır bilgi özelliklerine göz atalım:

  • Tamlık: Dürüst olmak gerekirse, kullanılan şifre programı doğrulandı ve hem Anna hem de Carl protokolü takip ediyor.
  • Sağlamlık: Carl, rastgele 150 kez test yaparsa, Anna’nın hile yapmaktan kurtulma şansı < % 0,5.
  • Sıfır Bilgi: Anna, Carl’a orijinal çözümün ne olduğunu asla açıklamak zorunda kalmadı..

İspat ve İfadelerin Kanıtı

Artık sıfır bilgi kanıtlarının teorik yönlerini ve çeşitli örneklerdeki uygulamalarını bildiğimize göre, blok zincirindeki pratik uygulaması nedir? Neden herkes uygulama için Zcash hakkında öfkeleniyor? ZKP (sıfır bilgi kanıtı) ve neden herkes Ethereum’un aynısını yapması konusunda heyecanlanıyor? Bunu genişletmeden önce, önemli bir teorik kavramı daha bilmek önemlidir..

ZKP kullanarak tam olarak neyi kanıtlıyoruz? Geniş bir yelpazede, ZKP kullanarak kanıtlayabileceğiniz iki ifade vardır. Kanıtlar aka gerçekler ve bilgi kanıtı.

  • Kanıtlar: Bunlar, ZKP aracılığıyla ispatlamak isteyebileceğiniz evren hakkında içsel gerçeklerdir. Örneğin. “X sayısı bir Y grubuna aittir”.
  • Bilgi kanıtı: Ayrıca, belirli bir bilginin ne olduğunu açıklamadan belirli bir fikir hakkında bilgi sahibi olduğunuzu kanıtlamak isteyebilirsiniz. Yukarıda verilen Sudoku, Waldo ve Alibaba mağarası örneklerinde görülebileceği gibi.

Tamamen farklı oldukları için bu ikisi arasındaki farkı not etmek önemlidir. Kripto para dünyasında, çoğunlukla “bilginin kanıtı” üzerine odaklandık. Bilginin ispatını sıfır bilgi kanıtı ile kanıtlamadaki en önemli gelişmelerden biri, 1980’lerde Claus-Peter Schnorr’un Schnorr tanımlama protokolünü ortaya çıkardığı zaman geldi. Bu protokol, modern anahtar imza şifrelemesinin temellerini oluşturur ve Sıfır bilginin modern kriptografik uygulamalara nasıl sorunsuz bir şekilde entegre edilebileceğini gösterir..

Schnorr Tanımlama Protokolü

Schnorr Kimliğinin ne hakkında olduğunu anlamak için eski dostlarımız Anna ve Carl’ı geri getirelim. Anna, herkese açık bir anahtarı olduğunu ve bu anahtar aracılığıyla bilgi alabileceğini ve alabileceğini dünyaya duyurdu. Carl, her zaman şüpheci olan, Anna’nın yalan söylediğini düşünür. Anna’nın dürüstlüğünü kanıtlayabilmesinin tek yolu, özel anahtarını Carl’a göstermektir, ancak özel anahtarını ifşa etmek istemez..

Öyleyse, Anna özel anahtarıyla ilgili bilgisini ifşa etmeden nasıl açıklayacak? Schnorr protokolünün devreye girdiği yer burasıdır. Protokolün nasıl çalıştığını anlamaya başlamadan önce bilmeniz gereken bazı parametreler vardır:

  • p = Herhangi bir asal sayı.
  • q = p-1 faktörü.
  • “A” öyle ki a ^ q = 1 mod p.

Şimdi, Schnorr protokolünde bu 3 değişkenin global olduğunu unutmayın. Yani, belirli bir senaryo için bu 3 değişkenin ne olduğu hakkında bilgi sahibi olunur..

Şimdi iki anahtara geliyoruz, “s” olarak adlandıracağımız gizli özel anahtar ve “v” olarak adlandıracağımız açık anahtar.

s, 0 kadar herhangi bir değer olabilir

v = a ^ -s mod q.

Açık anahtar “v” p, q ve a ile birlikte küresel ve genel bilgi olacaktır. Ancak, YALNIZCA Ayşe “s” nin ne olduğu bilgisine sahip olacaktır, çünkü bu onun özel anahtarıdır.

Şimdi değişkeni tanımladığımıza göre, Anna’nın ifadesinin bilgi alışverişinin ve geçerliliğinin, özel anahtarın ne olduğunu açıklamadan nasıl çalıştığını görelim..

Anna şifreli bir mesaj imzalar ve gönderir

Ayşe’nin Ahmet’e özel anahtarıyla kodlanmış bir “M” mesajı göndermek istediğini varsayalım. Schnorr’un protokolünü takip ederse bunu nasıl yapacak??

İlk olarak, 0 olacak şekilde rastgele bir “r” sayısı seçecektir.

Şimdi şu şekilde bir x değeri hesaplayacak:

X = a ^ r mod p.

Şimdi X’in değerini hesapladığına göre, bunu orijinal mesajla birleştirecek. Birleştirme nedir? “Merhaba” ve “dünya” olmak üzere iki dizemiz olduğunu varsayalım. Bu ikisini birleştirirsek “merhaba dünya” elde ederiz. Birleştirme, temelde iki dize eklemek ve onu bir.

Yani, M || X’i elde etmek için M ve X’i birleştirecek. ve bu değerin karmasını e.

Temel olarak, e = H (M || X) burada H () hash fonksiyonudur.

Son olarak, tüm bunlar yapıldığında, son bir hesaplama yapacak. Şu şekilde bir “y” değeri alacak:

y = (r + s * e) mod q

Artık tüm hesaplamalar bittiğine göre, şu bilgileri Carl’a gönderecek:

  • “M” mesajı.
  • İmzalar e ve y.

Carl mesajı alır ve Anna’nın bilgi kanıtını doğrular

Şimdi Carl, Anna’dan şu bilgileri aldı: Mesaj (M) ve imzalar (e ve y).

Bununla birlikte, herkesin bildiği şu bilgilere sahiptir:

  • Anna’nın genel anahtarı “v”.
  • Anna’nın “p” yi seçtiği asal sayı.
  • Anna’nın seçtiği “p-1” faktörü olan “q”.
  • Ve “a”, öyle ki a ^ q = 1 mod p, Anna da bunu seçti.

Şimdi, Carl’ın X’i şu şekilde hesaplaması gerekecek:

X ’= a ^ y * v ^ e mod p.

Şimdi basit bir değişiklik yapalım:

V = a ^ -s olduğunu biliyoruz, bunu yukarıdaki denklemde değiştirelim ve şunu elde ederiz:

  • X ’= a ^ y * a ^ -se = a ^ (y-s * e).
  • Artık y = r + s * e olduğunu da biliyoruz.
  • Bunun anlamı: r = y-s * e.

Bu değeri yukarıdaki denklemde değiştirelim:

  • Şunu elde ederiz: X ’= a ^ r.
  • Yukarıda gördüğümüz gibi: X = a ^ r.
  • Yani teknik olarak: X = X ’.

Ancak Carl “X” in değerini bilmiyor çünkü o değeri hiç almadı. Aldığı tek şey şudur: M mesajı, imzalar (e ve y) ve genel değişkenlerin ana bilgisayarı (genel anahtar “v”, p, q ve a).

Asla “X” almadı, ancak Anna doğruyu söylüyorsa X’in X’e eşit olması gerektiğini biliyor. Ancak e’nin değerini ve M mesajını biliyor..

Yani, aşağıdakileri yaparak e’yi çözecek:

e = H (M || X ’).

Daha önce e’yi şu şekilde çözdüğümüze dikkat edin: H (M || X).

Yani, bu mantıkla, e’nin iki değeri aynı çıkarsa, bu X = X anlamına gelir ‘.

Bu aynı zamanda Anna’nın gerçekten de özel anahtara sahip olduğu ve yalan söylemediği anlamına gelir..

Öyleyse, bu senaryonun tamamını sıfır bilgi ispatının üç özelliği üzerinden çalıştıralım:

  • Tamlık: Carl, Anna’nın dürüstlüğüne ikna olmuştu çünkü sonunda X = X ’.
  • Sağlamlık: Plan sağlamdı çünkü Anna’nın dürüstlüğünü kanıtlayabilmesinin tek yolu özel anahtarını kullanmaktı. Gizli anahtara sahip olduğu konusunda yalan söyleyemezdi.
  • Sıfır Bilgi: Carl, Anna’nın özel anahtarının ne olduğunu asla öğrenemedi.

Schnorr’un protokolü, sıfır bilgi kanıtlarının çok gerçek bir kriptografik uygulamasını sağlar.

Etkileşimli olmayan sıfır bilgi ispatı nasıl yapılır?

Daha önceki sıfır bilgi doğrulama sistemlerinde büyük bir sorun vardı. Çalışması için, kanıtlayıcı ve doğrulayıcının aynı anda çevrimiçi olması gerekiyordu. Diğer bir deyişle, süreç “interaktif” idi. Bu, tüm sistemi verimsiz hale getirdi ve ölçeklendirmeyi neredeyse imkansız hale getirdi. Doğrulayıcılar, kanıtlayıcılarla her zaman aynı anda çevrimiçi olamazlar mı? Bunu daha verimli hale getirmek için bir sisteme ihtiyaç vardı.

1986’da Fiat ve Shamir, Fiat-Shamir buluşsal yöntemini icat ettiler ve etkileşimli sıfır bilgi kanıtını etkileşimli olmayan sıfır bilgi kanıtına başarıyla değiştirdiler. Bu, tüm protokolün herhangi bir etkileşim olmadan çalışmasına yardımcı oldu. Arkasındaki prosedür çok basit.

Öyleyse, size bir örnek vermek gerekirse, Fiat ve Shamir’den önce sıfır bilgi ispatlarının nasıl çalıştığı budur..

Bunu basit ayrık logaritmalar kullanarak kanıtlayalım.

  • Anna, Carl’a, y = g ^ x ve g tabanında olacak şekilde bir x değerini bildiğini kanıtlamak istiyor..
  • Ayşe, bir dizi Z değerinden rastgele bir v değeri seçer ve t = g ^ v’yi hesaplar ve T’yi Ali’ye gönderir.
  • Carl, Z kümesinden rastgele bir c değeri seçer ve Ayşe’ye gönderir.
  • Anna r = v-c * x’i hesaplar ve r’yi Carl’a döndürür.
  • Carl, t = g ^ r * y ^ c’nin tutup tutmadığını kontrol eder (çünkü r = vc * x, y = g ^ x ve basit değiştirme ile, g ^ (vc * x) * g ^ c * x = g ^ v = t).
  • Carl, x’in değerini bilmiyor, yalnızca t = g ^ r * y ^ c olup olmadığını kontrol ederek Anna’nın x’in değerini gerçekten bildiğini doğrulayabilir..

Şimdi yukarıdaki etkileşim sıfır bilgi olsa da, bununla ilgili sorun, Anna ve Carl’ın çevrimiçi olmaları ve bunun çalışması için değer alışverişinde bulunmaları gerektiğidir..

Anna, Carl çevrimiçi olmadan bir şey hakkında bilgisi olduğunu Carl’a nasıl kanıtlayabilir? Bunu, Fiat ve Shamir’in teorileştirdiği gibi, basit bir kriptografik hash işlevi kullanarak yapabilir..

Yukarıdaki örneğin etkileşimli olmayan bir şekilde nasıl çalışacağına bakalım:

  • Anna, Carl’a, y = g ^ x ve g tabanında olacak şekilde bir x değerini bildiğini kanıtlamak istiyor..
  • Ayşe, Z değerlerinden rastgele bir v değeri seçer ve t = g ^ v’yi hesaplar.
  • Anna, c = H (g, y, t) ‘yi hesaplar; burada H () bir karma işlevidir.
  • Anna, r = v – c * x’i hesaplar.
  • Carl veya herhangi biri t = g ^ r * y ^ c olup olmadığını kontrol edebilir.

Gördüğünüz gibi, sıfır bilgi ispatı etkileşimsiz hale getirildi. Ve bu, Zk-Snarks’ın temellerini atan şeydi.

Zk-Snarks’ın kullanımı nedir?

Zk-Snarks, “Sıfır Bilgi Özlü Etkileşimsiz Bilgi Argümanı” anlamına gelir. Modern blockchain teknolojisindeki kullanımı çok fazladır. Uygulamasını anlamak için akıllı bir sözleşmenin nasıl çalıştığını bilmek önemlidir. Akıllı bir sözleşme, temelde, belirli bir işlev yapıldığında etkinleştirilen bir fon emanetidir..

Örneğin. Anna, Carl’la yaptığı akıllı sözleşmeye 100 ETH koyar. Carl, tamamlandığında akıllı sözleşmeden 100 ETH alacak olan belirli bir görevi yerine getirmelidir..

Carl’ın yapması gereken görevler çok katmanlı ve gizli olduğunda bu durum karmaşıklaşıyor. Anna ile akıllı bir sözleşme yaptığınızı varsayalım. Şimdi, ödemeyi yalnızca A, B ve C yaparsanız alacaksınız. Ya A, B ve C ayrıntılarını şirketinize gizli olduğu için ve rakip istemediğiniz için açıklamak istemiyorsanız ne yapman gerektiğini bilmek?

Zk-Snarks’ın yaptığı şey, bu adımların gerçekte ne olduğunu açıklamadan akıllı sözleşmede bu adımların atıldığını kanıtlamasıdır. Sizi ve şirketinizin gizliliğini korumak çok yararlıdır. Tüm sürecin kendisini göstermeden sadece sürecin bir kısmını ortaya çıkarabilir ve iddialarınız konusunda dürüst olduğunuzu kanıtlayabilir..

ZkSnarks nasıl çalışır??

Bir Zk-Snark 3 algoritmadan oluşur: G, P ve V.

G bir anahtar oluşturucudur (gizli tutulması gereken ve hiçbir koşulda ifşa edilmemesi gereken) bir “lambda” girdisi ve bir C programıdır. Daha sonra halka açık iki anahtar, bir kanıtlayıcı anahtar ve bir doğrulama anahtar vk. Bu anahtarlar hem halka açıktır hem de ilgili tarafların herhangi biri tarafından kullanılabilir.

P, girdi olarak 3 maddeyi kullanacak olan kanıtlayıcıdır. Kanıtlayıcı anahtar pk, halka açık olan rastgele girdi x ve gerçekte ne olduğunu açıklamadan bilgisini kanıtlamak istedikleri özel ifade. Bu özel ifadeye “w” diyelim. P algoritması şu şekilde bir prf ispatı oluşturur: prf = P (pk, x, w).

Doğrulayıcı algoritması V temelde bir boole değişkeni döndürdü. Bir Boole değişkeninin yalnızca iki seçeneği vardır, DOĞRU veya YANLIŞ olabilir. Dolayısıyla, doğrulayıcı, doğrulama anahtarı, genel girdi x ve prova prf’yi aşağıdaki gibi girdi olarak alır:

V (vk, x, prf)

..ve kanıtlayıcı doğruysa, aksi takdirde yanlışsa DOĞRU döndürür.

Şimdi, lambda parametresi hakkında. “Lambda” nın değeri gizli tutulmalıdır, çünkü o zaman herkes onu sahte kanıtlar üretmek için kullanabilir. Bu sahte kanıtlar, kanıtlayanın gerçekten “w” özel ifadesi bilgisine sahip olup olmadığına bakılmaksızın bir DOĞRU değeri döndürecektir..

ZkSnarks’ın işlevselliği

Bir Zk-Snark’ın işlevselliğini göstermek için Christian Lundkvist’in Consensys için yazdığı makalede kullandığı aynı örnek işlevi kullanacağız. Örnek program şu şekilde görünür:

fonksiyon C (x, w)

{

dönüş (sha256 (w) == x);

}

Temel olarak, C işlevi girdi olarak 2 değer alır, bir genel hash değeri “x” ve doğrulanması gereken gizli ifade “w”. W’nin SHA-256 hash değeri “x” e eşitse, işlev TRUE değerini döndürür, aksi takdirde FALSE döndürür. (SHA-256, bitcoin’de kullanılan karma işlevdir).

Bu örnek için eski dostlarımız Anna ve Carl’ı geri getirelim. Anna kanıtlayıcı, Carl şüpheci ise doğrulayıcı.

Doğrulayıcı olarak Carl’ın yapması gereken ilk şey, jeneratör G’yi kullanarak kanıtlama ve doğrulama anahtarını oluşturmaktır. Bunun için, Carl’ın “lambda” rasgele değerini üretmesi gerekir. Bununla birlikte, yukarıda belirtildiği gibi, Lambda konusunda çok dikkatli olması gerekir çünkü Anna’nın sahte kanıtlar oluşturmasını engellemesinin değerini bilmesine izin veremez..

Her neyse, şöyle görünecek:

G (C, lambda) = (pk, vk).

Artık iki anahtar üretildiğine göre, Anna’nın kanıtı oluşturarak ifadenin geçerliliğini kanıtlaması gerekir. İspatlama algoritması P’yi kullanarak ispat oluşturacak. X çıktısını vermek için karma (SHA-256 ile ayrıştırmada) gizli “w” değerini bildiğini kanıtlayacak. Yani, kanıt oluşturma için kanıtlama algoritması şuna benzer:

prf = P (pk, x, w).

Artık “prf” ispatını oluşturduğuna göre, sonunda Zk-Snarks’ın doğrulama algoritmasını çalıştıracak olan Carl’a değeri verecek:

Bu nasıl görünecek:

V (vk, x, prf).

Burada, vk doğrulama anahtarıdır ve x bilinen karma değerdir ve prf, Anna’dan aldığı kanıttır. Bu algoritma DOĞRU döndürürse, bu Anna’nın dürüst olduğu ve gerçekten de “w” gizli değerine sahip olduğu anlamına gelir. YANLIŞ döndürürse bu, Ayşe’nin “w” nin ne olduğunu bildiği konusunda yalan söylediği anlamına gelir.

ZkSnarks’ın kripto para biriminde kullanımı

ZkSNARKs nedir: Spooky Moon Math

Resim İzniyle: Zcash

Zcash, Zerocoin Electic Coin Company tarafından 9 Eylül 2016’da başlatılan bir kripto para birimidir ve blockchain teknolojisi kavramlarını ZkSnarks ile birleştiren ilk kripto para birimidir. Ayrıntıları (adresleri gibi) kimseye açıklamadan kullanıcıları için tamamen güvenli ve korumalı işlem alanları sağlamayı amaçlamaktadır..

Ethereum, Metropolis aşamasına girerken ZkSnarks’ı entegre etmek istiyor ve bunu yapmayı planladıkları yol, Zcash ile karşılıklı değer alışverişini içerecek bir ittifak oluşturmak. Zcash’in baş geliştiricisi Zooko Wilcox, Şangay’daki DevCon2’de böyle bir ittifakın geleceğini araştıran bir sunum yaptı. Ona göre, Z-Cash’in ve buna bağlı olarak zk-snarks’ın ethereum ile entegre edilebilmesinin 3 yolu vardır..

İlk yönteme Baby Zoe (Zoe = ethereum’da Zcash) denir. Ethereum’a bir zk-snark ön derleyici ekler ve Ethereum üzerinde mini bir Zcash akıllı sözleşme yapar. Buradaki fikir, Ethereum sisteminin blok zincirinin üstünde zk-snark özellikli bir DAPP oluşturup oluşturmayacağını görmektir..

İkinci yöntem, Ethereum hesaplanabilirliğini Zcash blok zincirine entegre etmektir. Wilcox’un söylediği gibi, ethereum’un en büyük varlığı hesaplanabilirliği ve insanlar onu Zcash gibi zk-snark tabanlı bir blok zincirine entegre edip edemeyeceklerini görmek istiyor. İnsanlar sıfır bilgi kanıtları üzerine yapılan bir blok zincirinde DAPPS oluşturabilir mi? Bu görmeyi bekledikleri bir şey.

Üçüncü ve en heyecan verici yönü ise Proje Simyası. Bu temelde iki blok zincirinin bağlantısı ve birlikte çalışmasıdır, öyle ki biri ikisi arasında sorunsuz bir şekilde hareket edebilir. Zcash’in bunu yapmayı planladığı yol, BTC Rölesini klonlamaktır. Ethereum içinde bir Bitcoin light istemcisi oluşturmak için yazılmış bir Ethereum betiğidir. Zcash klonu, Ethereum içinde bir Zcash light istemcisi oluşturmak için aynı konsepti kullanacak.

Bu işe yararsa, o zaman DAPPS’nin oluşturulmasını kolaylaştıran, sıfır bilgi birikimiyle dünyanın ilk merkezi olmayan para sistemine sahip olacağız..

İleriye bakmak

Hiç şüphe yok ki, sıfır bilgi kanıtlarının ortaya çıkması Ethereum için büyük bir oyun değiştirici olacak. Giderek daha açık, bağlantılı ve denetlenen bir dünyada, her türlü mahremiyet hoş karşılanır. Entegrasyonun nasıl gerçekleştiği görülecektir, ancak teorik kavramların kendisine göre hareket etmek, yardım edemez ama heyecanlanır.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me