Doğrulanabilir güven

Çevrimiçi zarlar sizin denetiminize açık

Bir uygulama zarı nasıl ürettiğini göstermedikçe o zarı denetleyemezsiniz. Boardgammon’da denetleyebilirsiniz: çevrimiçi bir maçın her zarı, açıklanmadan önce kriptografik bir taahhütle mühürlenir; sonra isteyen herkes gibi siz de o zarı kaydından yeniden hesaplayabilirsiniz.

1. Her zardan önce taahhüt

Sunucu her zar için, yalnızca o zarda kullanacağı yeni ve rastgele bir gizli tohum üretir. Tohumun kendisini değil, kriptografik hash’ini yayımlar; taahhüt dediğimiz budur. Hash tek yönlü çalışır: tohumu o anda sabitler ama onunla ilgili hiçbir şeyi açığa çıkarmaz. Sunucu sonradan başka bir tohum gösterirse, o tohum yayımlanan hash’le eşleşmez.

2. Hesaba katılan ikinci sayı

Canlı bir oyunda zarı siz attığınızda, cihazınızdaki uygulama kendi rastgele sayısını üretip sunucuya gönderir. Sunucu zarı, kendi gizli tohumuyla bu ikinci sayıdan, anahtarlı bir hash işlevi olan HMAC ile hesaplar; hesaba oyunun kimliği, atışın kimliği ve bir sayaç da girer. Zarı sunucu kendisi attığında, yazışmalı bir oyunda olduğu gibi, ikinci sayıyı da o verir.

3. Önyargısız üretim

Kriptografik çıktı 1–6 sayılarına tarafsız yöntemle çevrilir; eşit dağılımı bozacak aralıklar reddedilir.

4. Denetim sayfası

Sunucu gizli tohumu her atışta, zarla birlikte açıklar. Boardgammon uygulaması, attığınız her zarda denetimi arka planda kendisi yapar: tohumun hash’ini taahhütle karşılaştırır, zarı da yeniden hesaplayıp aynı sonucun çıkıp çıkmadığına bakar. Uygulamanın sözüyle yetinmek istemezseniz, oynadığınız her çevrimiçi maçın herkese açık bir denetim sayfası vardır: orada her atışın taahhüdünü, açıklanan tohumunu ve gelen zarı, bir de kendiniz çalıştırabileceğiniz kısa bir programı bulursunuz.

Adil ve sunucu onaylı oyun

Hakem sunucudur: oyuncunun cihazı zar üretmez ve geçersiz bir hamleyi kesinleştiremez, çünkü her hamleyi kurallara göre sunucu denetler. Yayımlanan kayda bakarak her zarın, o kayıttaki sayılardan çıktığını siz de denetleyebilirsiniz.

Kayıt neyi gösterir, neyi göstermez?

Bir atışın kaydı iki şeyi gösterir: açıklanan tohumun taahhütle eşleştiğini ve gelen zarın kayıttaki sayılardan çıktığını. Tohumun önceden sabitlendiğini kayıt tek başına göstermez; zarı siz attığınızda ise uygulamanız taahhüdü zardan önce aldığı için bunu da görebilir. İkinci sayıyı da sunucu verdiğinde kayıt, zarın kaydedildikten sonra değiştirilmediğini yine gösterir; sunucunun zarı önceden bilmediğini ya da seçmediğini ise gösteremez. Kaydın kanıtladığından fazlasını öne sürmektense bunu açıkça söylemeyi tercih ediyoruz.

Blogdan

Tüm yazılar