Mimblewimble İşlemlerinin Açıklaması

Üst Düzey Genel Bakış

Mimblewimble gizlilik odaklı bir kripto para birimi teknolojisidir. Bazı önemli alanlarda Bitcoin'den farklıdır:

  • Adres yok. Mimblewimble adresleri kavramı mevcut değildir.
  • Tamamen özel. Her işlem gizlidir.
  • Kompakt blok zinciri. Mimblewimble, Bitcoin'den farklı bir dizi güvenlik garantisi kullanıyor ve bu da çok daha kompakt bir blok zincirine yol açıyor.

Açıklanan İşlemler

Gizli işlemler [1], Dr. Adam Back tarafından icat edildi ve Mimblewimble aracılığıyla Monero ve Tari dahil olmak üzere birçok kripto para birimi projesinde kullanıldı.

Tari alıcıları anında para almak için özel anahtarlar oluşturur. Bu nedenle bir Tari işleminin inşasına dahil olmaları gerekir.

Bu, alıcıların mutlaka çevrimiçi olması gerektiği anlamına gelmez. Ancak e-posta, Anlık Mesajlaşma (IM) veya posta güvercini yoluyla iletişim kurabilmeleri gerekir.

Temel İşlem

Alice'in Mimblewimble için iki taraflı bir protokol kullanarak Tari'yi Bob'a nasıl gönderebileceğini açıklayacağız. Çok taraflı işlemler benzerdir ancak bilgi akışı biraz farklıdır ve ek iletişim turları üzerinden gerçekleşir.

Diyelim ki Alice'in 300 µT'si var ve Bob'a 200 µT göndermek istiyor.

İşte temel işlem:

GirdilerÇıkışlar
3002009010
Alice'in UTXO'suBob'adeğişimücret

Bunu, çıktıların pozitif ve girdilerin negatif olduğu bir matematiksel denklem olarak yazarsak, havadan para yaratılmaması için her şeyi dengeleyebilmemiz gerekir:

$$ -300 + 200 + 90 + 10 = 0 ​$$

Bu temel olarak Bitcoin blok zincirinde bulunan bilgidir. Herkes, küresel defterin işlem geçmişini inceleyerek başkalarının işlemlerini denetleyebilir. Bu gizlilik açısından pek iyi değil.

Gizli işlemlerin devreye girdiği yer burasıdır. Önceki denklemin her iki tarafını da bir oluşturucu noktayla çarparak başlayabiliriz. H eliptik eğri üzerinde (eliptik eğri matematiğine giriş için bkz. bu sunum):

$$ 300,H = 200,H + 90,H + 10,H ​$$

Dan beri H bir sabittir, yukarıdaki matematik hala geçerlidir, dolayısıyla şunu kontrol ederek Alice'in hırsızlık yapmadığını doğrulayabiliriz.

$$(3.H) - (2.H) - (1.H) - (fH) \equiv 0.H = 0 $$

dikkat edin biz yalnızca ortak anahtarları gör ve böylece değerler gizlenir. Serin!

Teknik olarak eliptik eğri çarpımı için yalnızca skaler tamsayı değerleri geçerlidir. Tutarların her zaman tamsayı olması için işlemlerde µT kullanmamızın nedeni budur.
Yine de bir sorun var. Eğer _H_ sabitse ve biliniyorsa (öyleyse), birisi _n_'nin tüm makul değerleri için $nH​$'ı önceden hesaplayıp bu genel anahtarlar için blok zincirini tarayamaz mı?[^a]

Kısacası, Evet. Yani henüz işimiz bitmedi.

1

"Buna görüntü öncesi saldırı denir."

Kör Etkenler

Görüntü öncesi saldırının Tari işlemlerindeki tüm değerlerin körlüğünü kaldırmasını önlemek için her giriş ve çıkışa rastgelelik eklememiz gerekir. Temel fikir bunu her işlem çıktısına ikinci bir genel anahtar ekleyerek yapmaktır.

Yani giriş ve çıkışları şu şekilde yeniden yazarsak:

$$ C_i = n_i.H + k_i.G $$

nerede G aynı eğri üzerindeki başka bir jeneratördür, bu tamamen panjur girişler ve çıkışlar, görüntü öncesi saldırı mümkün olmayacak şekilde. Bu formülasyona denir Pedersen'in taahhüdü [3].

İki üreteç, _H_ ve _G_, değerleri bir üreteçten diğerine dönüştürmenin imkansız olacağı şekilde seçilmelidir [[2]]. Spesifik olarak, eğer _G_ temel oluşturucu ise, o zaman bazı _k_ vardır, burada $$ H = kG $$

Eğer bunu anlayabilen biri varsa kGizli İşlemlerin tüm güvenliği çöker. Okuyucunun nedenini anlaması için bir alıştırma olarak bırakılmıştır.

Bu kavramlara yarı-nazik bir giriş için Adam Gibson'un konuyla ilgili makalesi mükemmeldir [5].

Alice Bir İşlem Hazırlıyor

Alice artık bir işlem oluşturmaya başlayabilir.

TipformülName
Giriş$$ -300,H - k_1,G $$C1
Çıkışı değiştir$$ 90,H + k_2,G $$C2
Ücret$$ 10,H + 0,G $$f
Toplam harcama$$ 200,H + 0,G $$C*
Toplam$$ 0.H + (k_2-k_1).G $$X

\( k_i \)-değerleri, \(k_1, k_2\) bu çıktılar için harcama anahtarlarıdır.

Tari çıktılarını harcamak için ihtiyacınız olan tek bilgi harcama anahtarı (aynı zamanda kör edici faktör olarak da bilinir) ve bununla ilişkili değerdir.

Dolayısıyla bu işlem için Alice'in, Tari'nin harcanmamış tüm çıktılarını takip eden cüzdanı, taahhüdü tamamlamak için kör edici faktörü ve "300" değerini sağlamış olacaktı. C1.

Tüm girdiler ve çıktılar toplandığında (ücret dahil), tüm değerlerin olması gerektiği gibi sıfıra düştüğüne dikkat edin. Ayrıca geriye kalan tek terimin nokta ile çarpıldığına da dikkat edin. G. Hepsi H şartlar bitti. Biz bu toplamı diyoruz kamu aşırılığı İşlemin Alice'e ait kısmı için.

Biz tanımlamak fazla yapılacak işlemin

$$ x_s = k_2 - k_1 $$

Alice'in fazlalığını (ve Tari cüzdan yazılımının bunu nasıl yaptığını) hesaplamasının basit bir yolu, çıktı körleştirici faktörlerini toplamak ve girdi körleştirici faktörlerin toplamını çıkarmaktır.

Diyelim ki Alice kendisi için biraz para yaratmaya çalışıyordu ve değişikliği 100 yerine 90 µT yaptı. Bu örnekte girdi ve çıktıların toplamı birbirini götürmez. H ve biz olurduk

$$X^* = 10.H + x_s.G$$

Alice bu tür saçmalıklar yapmaya kalkışırsa Mimblewimble protokolünün Alice'i nasıl yakaladığını birazdan göreceğiz.

Alice aslında her çıktı için bir aralık kanıtı da hazırlıyor; bu da çıktının değerinin sıfır ile 2^64 µT arasında olduğunun kanıtıdır. Aralık kanıtları olmadan Alice insanlara negatif miktarlar göndererek kendini zenginleştirebilir ve Tari'nin hiçbir muhasebesini bozmayabilirdi.
Tari ve Grin'de fazla değer aslında daha fazla gizlilik için iki değere bölünüyor. Grin ekibinin bu 'ofset' değerinin neden gerekli olduğuna dair iyi bir açıklaması var [[4]]. Açıklamayı basit tutmak için bu adımı bırakıyoruz(r).

Alice ayrıca rastgele bir tane seçer papalık elçisi,

$$ r_a $$

ve karşılık gelen genel nonce'yi hesaplar,

$$ R_a = r_a.G $$

Alice daha sonra aşağıdaki bilgileri Bob'a gönderir:

AlanÖzellik
GirdilerC1
ÇıkışlarC2
Ücret10
Bob'a ödenen tutar200
Herkese açık$$ R_a $$
Kamu fazlalığıX
Metadatam

Mesaj meta verileri, işleme ilişkin (çıktının ne zaman harcanabileceği gibi) bazı ekstra bilgi bitleridir.

Bob Cevabını Hazırlıyor

Bob bu bilgiyi alır ve ardından işlemin kendine düşen kısmını tamamlamaya başlar.

İlk olarak, kamuya açık fazlalığın olup olmadığını kontrol ederek Alice'in doğru bilgiyi gönderdiğini doğrulayabilir. X, Alice'in yukarıda hesaplamak için kullandığı prosedürün aynısı izlendiğinde doğrudur. Bu noktada herhangi bir sahtekarlığı tespit edecek yeterli bilgiye sahip olmadığından bu adım kesinlikle gerekli değildir.

Daha sonra bir taahhüt oluşturur. amount Alice'in ona gönderdiği alan:

$$ C_b = 200.H + k_b.G $$

burada \(k_b\) Bob'un özel harcama anahtarıdır. O hesaplıyor

$$P_b = k_b.G$$

ve taahhüt için bir aralık kanıtı oluşturur.

Bob'un daha sonra her şeyin kendisini tatmin edecek şekilde tamamlanmasından mutlu olduğunu imzalaması gerekiyor. Kısmi yaratıyor Schnorr İmzası meydan okumayla birlikte,

$$ e = H(R_a + R_b \Vert X + P_b \Vert f \Vert m) $$

ve imza tarafından verilir

$$ s_b = r_b + ek_b $$

Bob geri gönderir

AlanÖzellik
Çıktı (taahhüt ve aralık kanıtı)$$C_b$$
Herkese açık$$R_b$$
imza$$s_b$$
Genel anahtar$$P_b$$

Alice İşlemi Tamamlar ve Yayınlar

Alice, Bob'tan haber aldıktan sonra işleri toparlayabilir.

İlk olarak, Bob'un imzaladığı aynı meydan okumayı bağımsız olarak hesaplamak için artık Bob'un genel nonce ve genel anahtarını kullanabilir:

$$ e = H(R_a + R_b \Vert X + P_b \Vert f \Vert m) $$

Alice daha sonra hem kendi kısmi imzasını oluşturur hem de

$$ s_a = r_a + e.x_s $$

ve birleştirilmiş toplu imza, $$ s = s_a + s_b, R = R_a + R_b $$.

Alice artık bu işlemi ağa yayınlayabilir. Son işlem aşağıdaki gibi görünür:

İşlem Çekirdeği
Kamu fazlalığı$$ X + P_b $$
imza$$ (s, R) $$
Ücret10
İşlem meta verilerim
İşlem Gövdesi
Aralık kanıtlarına sahip girişler$$[C_1]$$
Aralık kanıtlarına sahip çıktılar$$[C_2, C_B]$$

İşlem Doğrulama ve Yayılım

Tam bir düğüm Alice'in işlemini aldığında, bunu eşdüzeylerine göndermeden önce aynı seviyede olduğunu doğrulaması gerekir. Düğüm aşağıdakileri kontrol etmek istiyor:

  1. Tüm girişler mevcut UTXO setinden gelir

    Tüm tam düğümler harcanmamış çıktılar kümesini takip eder, böylece düğüm bunu kontrol edecektir. C1 o listede var.

  2. Tüm çıkışların geçerli bir aralık kanıtı vardır

    Menzil kanıtı, eşleşme taahhüdüne göre doğrulanır.

  3. Değerler dengesi

    Bu kontrolde düğüm, işlem sırasında hiçbir koinin yaratılmadığından veya yok edilmediğinden emin olmak ister. Ancak değerler körleştirilmişse bunu nasıl yapabilir?

    Dürüst bir işlemde tüm değerlerin (şu değerle çarpılır) H) iptal ettiğinizde, çıktıların genel anahtarlarının toplamından girişlerin genel anahtarlarının çıkarılmasıyla kalırsınız. Bu tesadüfen, çekirdekte kamusal fazlalık olarak depolanan değerle aynı olur.

    Toplanan genel nonce'lar, R aynı zamanda çekirdekte de depolanır; dolayısıyla bu, düğümün aşağıdakileri kontrol ederek imzayı doğrulamasına olanak tanır; e daha önce olduğu gibi hesaplanır:

$$ sG \stackrel{?}{=} R + e(X + P_b) $$

  1. Çekirdekteki imza geçerlidir

    Dolayısıyla çekirdek imzasını doğrulayarak işlem muhasebesinin doğru olduğunu kendimize de kanıtlamış oluyoruz.

  2. Diğer çeşitli fikir birliği kontrolleri

    Ücretin asgari tutardan fazla olup olmadığı gibi.

Tüm bu kontroller başarılı olursa, düğüm işlemi eşlerine iletecek ve sonunda madencilik yapılarak blok zincirine eklenecektir.

Dolandırıcılığı Durdurmak

Şimdi diyelim ki Alice sinsi olmaya çalıştı ve \( X^* \)'ı fazlalığı olarak kullandı; kendine 100 µT yerine 90 µT bozuk para verdiği yer. Artık değerler dengelenmeyecek. Çıktıların, girdilerin ve ücretlerin toplamı şuna benzer:

$$ 10.H + (x_s + k_b).G ​$$

Şimdi tam düğüm imzayı kontrol ettiğinde:

$$ \begin{align} R + e(X^* + P_b) &\stackrel{?}{=} sG \\ R + e(10.H + x_s.G + P_b) &\stackrel{?}{ =} (r_a + r_b + e(x_s + k_b)).G \\ R + e(10.H + X + P_b) &\stackrel{?}{=} (r_a + r_b).G + e(x_s) + k_b).G \\ \mathbf{10e.H} + R + e(X + P_b) &\stackrel{?}{=} R + e(X + P_b) \\ \end{align} $$

İmza doğrulanmıyor! Düğüm, işlemde tam olarak neyin yanlış olduğunu söyleyemez, ancak bir şeylerin ters gittiğini bilir ve bu nedenle işlemi sessizce bırakır ve hayatına devam eder.

İşlem Özeti

Özetlemek gerekirse: bir Tari/MimbleWimble işlemi aşağıdakileri içerir:

  • Alice'ten, önceki çıktılara referans veren ve harcayan bir dizi girdi.
  • Alice ve Bob'dan bir dizi yeni çıktı:
    • Bir değer ve kör edici bir faktör (ki bu sadece yeni bir özel anahtardır).
    • Değerin negatif olmadığını gösteren aralık kanıtı.
  • İşlem ücreti, açık metin olarak,
  • İşlemde kullanılan tüm kör edici faktörlerin toplamı olan kamu fazlalığı.
  • İşlem meta verileri.
  • İşlem meta verilerini doğrulayan bir mesajı imzalamak için özel anahtar olarak kullanılan aşırı körleme değeri ve genel fazlalık.

Referanslar

[1] "Bitcoin Gizli İşlemleri Nelerdir?" [Çevrimiçi.] Mevcut: https://www.mycryptopedia.com/what-are-confidential-transactions/ Erişim tarihi: 2019-04-09.

[2] "Kolumdaki Hiçbir Şey Yok Numarası" [çevrimiçi].
Mevcut: https://en.wikipedia.org/w/index.php?title=Nothing-up-my-sleeve_number&oldid=889582749. Erişim tarihi: 2019-04-09.

[3] Vikipedi: "Taahhüt Planı" [çevrimiçi]. Mevcut: https://en.wikipedia.org/wiki/Commitment_scheme. Erişim tarihi: 2019-04-09.

[4] "MimbleWimble ve Grin'e Girişte Çekirdek Dengeleri" [çevrimiçi]. Mevcut: https://github.com/mimblewimble/grin/blob/master/doc/intro.md#kernel-offsets. Erişim tarihi: 2019-04-09.

[5] A. Gibson, "Sıfırdan (Bilgi) Kurşun Geçirmezliklere" [çevrimiçi]. Mevcut: https://joinmarket.me/static/FromZK2BPs_v1.pdf. Erişim tarihi: 2019-04-10.

Katkıda