Enigma Protokolü

irfan akarsu
UniChain
Published in
5 min readApr 14, 2019

kimseler veriyi görmese ama veri işlense?

Selamlar, blockchainde gizlilik temalı yazılarıma devam ediyorum. Bundan önceki yazılarda Cryptonote ve Cryptonight Kavramları ve Zero-Knowledge Protokollerini anlatmıştım. Bu yazıda ise Enigma Protokolünü elimden geldiği kadar anlatmaya çalışacağım. İyi okumalar :)

MIT kaynaklı geliştiricilerin başını çektiği Enigma, gizlilik garantili bir hesaplama-computation- platformudur. Enigmanın amacı geliştiricilere, güvenilir aracılara ihtiyaç duyulmadan, uçtan-uca yapıda merkeziyetsiz uygulamalar tasarlayabilecekleri bir geliştirme ortamı yaratmaktır.

Enigma projesi blockchainin ölçeklenebilirlik ve gizlilik meselelerini, off-chain ağda 2. bir katman yaratıp,“secret contract”lar kullanarak, girilen veriyi nodelarda işleterek ifşa etmeden çözmeye çalışır.

Teknoloji

Enigma blockhain tabanlı gizlilik protokolü olmayı hedeflemektedir. Yani bir çok farklı, var olan blockchain ağı üzerinde çalışabilecek bir gizlilik uygulaması olmak. Bu ağlara Ethereum ve NEO örnek verilebilir.

Enigma ‘Gizlilik Tabanlı Ethereum’ olarak betimlenebilir. Enigma’nın ‘secret contract’larını kullanarak; geliştiriciler, veri gizliliğinin korunduğu merkeziyetsiz uygulamalar(dapps) geliştirebilirler. Enigma’nın öncelikli yönelimi, merkezi olmayan protokolü aracılığıyla verilerin paylaşılma, toplanma ve üzerinden para kazanılma biçiminde devrim yapmaktır.

.

Enigma, Secure Multi-Party Computation(sMPC veya MPC) kullanır. Bu algoritmada veri sorguları güvenilir bir üçüncü taraf olmadan dağıtılmış bir şekilde hesaplanır.

Veriler farklı düğümler arasında bölünür ve diğer düğümlere bilgi sızdırmadan hesaplama işlemlerini gerçekleştirirler. Spesifik olarak, hiçbir taraf hiçbir zaman bütünüyle veriye erişemez; bunun yerine, her düğümde anlamsız(yani görünüşte rastgele) bir veri parçası vardır.

Yazılan kodlar hem ‘public blockchainde’ hem de ‘Enigma(private bölümler)’ üzerinde yürütülür. Enigma’nın yürütülmesi hem gizliliği hem de doğruluğu garanti ederken, sıradan olarak tanımlanan bir blockchain ancak ikincisini sağlayabilir. Doğru uygulama kanıtları blockchainde saklanır ve denetlenebilir. Özel bilgileri kullanarak uçtan uca merkezi olmayan uygulamaları tasarlamak için özel bir dille yazılmış bir scripting dili sunar; bu dil, private bilgileri kullanmaktan çekinmeyeceiğiniz, smart contractların daha güçlü bir modelidir.

Bu dil ayrıca turing-complete bir dildir. Blochaindeki kod çalıştırma işlemi merkeziyetsizdir fakat dağıtık bir sistem değildir, dolayısıyla her düğüm aynı kodu gereksiz bir şekilde uygular ve aynı state durumunu korur. Enigma’da, hesaplamalı çalışma, network üzerinde etkin bir şekilde dağıtılmıştır. Bir node, hem gizliliği hem de doğrulanabilirliği koruyarak aşağıdaki şekilde gösterildiği gibi, kodun uygulanmasını kesintiye uğratır.

Bir fonksiyonun ağ üzerinde çalışması

Off-chain network, sıradan bir blockchain tasarımının tek başına üstesinden gelemeyeceği aşağıdaki sorunları çözer:

  1. Depolama: Blockchainler çok amaçlı veri tabanları değildir. Enigma, verilere yapılan referansları depolayan fakat verinin kendisine ait olmayan, blockchain aracılığıyla erişilebilen merkezi olmayan bir distributed hash-table’a (DHT) sahiptir. Gizli veriler, depolama ve erişim kontrolü protokolleri blockchaine programlanmadan client-side tarafında şifrelenmelidir. Enigma, kodlama dilinde bu görevler için basit API’ler sağlar.

2. Gizlilik: Enigma networkü, doğru şekilde yürütme işlemi gerçekleşirken ham veriyi herhangi bir node göremez. Bu, hassas iş mantığını bir blockchainin faydalarını olumsuz yönde etkileyecek şekilde işleyen mevcut merkezi çözümleri değiştirmenin anahtarıdır.

3. Yoğun işlemler: Gizlilik odaklı olmayan projelerde bile, yüksek miktarda karmaşık işlem gerçekleştirirken ölçekleme problemi yaşanır. Bahsettiğimiz off-chain network, blockchain üzerinde yayınlanan public olarak doğrulanabilir karmaşık hesaplamaları yapmak için kullanılır.

Şifrelenmiş Veri Üzerinde İşlem Yapmak

Gizlilikte favori konulardan biri olan şifrelenmiş veri üzerinde program çalıştırmayla ilgili şu soru akıllara gelir: “gizlenmiş girdiler üzerinde nasıl bir fonksiyon çalıştırabiliriz?”. Başka bir deyişle, göremediğimiz veriler üzerinden nasıl anlamlı sonuçlar çıkarabiliriz? Bu sorunun cevabı için alternatif algoritmalardan bahsedilebilir, Fully Homomorphic Encryption(FHE), Secure Multi-Party Computation(MPC), Zero-Knowledge Proofs(ZKP). Enigma sMPC kullandığı için biz sadece bu algoritmayı açıklayacağız.

Secure Multi-Party Computation (MPC)

MPC, felsefi bir soru sorarak başlar: “Özel bilgilerimizi sızdırmadan potansiyel olarak, bizim verilerimizi gönderebileceğimiz ve bizim adımıza hesaplamalar yapabilmemiz için güvenebileceğimiz herhangi bir güvenilen üçüncü taraf var mı?” Bu, hiçbir zaman saldırıya uğramayacak veya tehlikeye giremeyecek bir sunucunun tasarlanması gerektiği anlamına gelebilir. Bu durumun gerçekte mümkün olmadığını düşünürek, bu duruma karşılık çalışabilecek ideal makineyi üretmeyi hedefleriz.

Daha sonra MPC, güvenilmeyen bir grup partiyi kullanarak bu tür güvenilir bir üçüncü partiyi taklit etmeyi önerir. Başka bir deyişle, hesaplama sırasında veri sızıntısı olmamasını sağlayacak bir bilgisayar ağı tasarlayabiliriz. Ağdaki her bilgisayar yalnızca şifreli veri parçalarını görür -ancak bunlar hiçbir zaman anlamlı bir veri olmaz-. Düz metin verilerini kurtarmanın tek yolu, ağda yeterli sistemleri kontrol etmektir (bir adet gizli anahtarın kontrolünü elde etmek yerine). Verileri yeniden oluşturmak için gereken sistem sayısı, sistemin bir kısmından hepsine kadar değişebilen ayarlanabilir bir parametredir.

MPC’yi uygulamanın iki ana yolu vardır —Secret Sharing(gizli paylaşma) ve Garbled Circuits(değiştirilmiş devreler). Biz Enigma’nın kullandığı ve performansa duyarlı uygulamalar için daha uygun olan Secret Sharing yöntemine odaklanacağız. Şifreleme durumunda olduğu gibi, iki farklı algoritma kullanarak Secret Sharing yöntemi tanımlayabiliriz. Share ve Reconstruct:

  • m1 , m2, …, mn = Share(m, n, t)
  • m = Reconstruct(m1 , m2, …, mk)

Bir anahtar kullanarak tek bir şifreli metin oluşturmak yerine, Share fonksiyonu bir iletiyi iletinin şifrelenmiş ‘n’ paylaşımına böler. Mesajlar kendi başına anlamsızdır, fakat orijinal mesajı geri oluşturmak için bu tür herhangi bir ‘t’ paylaşım grubu kullanılabilir.

Dikkatli bakılırsa, bunun üretimde nasıl çalıştığını hayal etmesi bile oldukça zor. Bazı verilerin korunmasını istersek, yalnızca client-side’da share fonksiyonunu çağırmamız ve sonuçta elde edilen paylaşımları ağdaki her bilgisayara iletmemiz yeterli olacaktır. Bir saldırganın, verileri geri almak için herhangi bir zamanda ‘t’ sunucularından taviz vermesi gerekir; bu da yüksek bir t sayısı için oldukça düşük bir ihtimaldir.

Secret Contracts

Secret contraclar için içerdiği tüm verileri güvenli ve şifreli tutan smart contractlar diyebiliriz. Smart contractlar, verilerini şifreleyerek ve şifreli veriler üzerinde hesaplamaların yapıldığı Enigma networküne göndererek çalışırlar. Ağdaki nodelar, doğru hesaplamalar için işlemlerden elde edilen ücretlerin ve blok ödüllerinin kendilerine bölüştürülmesi hile yapmamaya teşvik edilir. Eğer nodelar çöp veya yanlış bilgi geri göndererek hile yaparlarsa, ENG ödülünden paylarını feda ederek cezalandırılırlar.

Secret contractlar, nodelerın hiçbirinin işlem yaptıkları veriyi göremeyeceklerini garanti eder. Buna rağmen, nodelar veriyi işlemek için gerekli hesaplamaları ve işi gerçekleştirebilirler. Çelişkili gözükse de, uygulaması mümkün bir yöntemdir. Başka bir deyişle, secure contractlarla Ethereum veya diğer platformların smart contractları arasında verinin ifşa olmaması dışında bir fark yoktur.

Girdilerin işlenerek sonuca dönüştüğü akış

Enigma ve zk-Snarks

Her ne kadar mükemmel yenilik ve özellikler sunsa da, her teknolojide olduğu gibi zk-Snarks’ta da bazı eksiklikler var. zk-Snarks küçük boyutlardaki verilerde gizliliği sağlamaya elverişli olsa da büyük boyuttaki verilerde kullanışlı değil, ayrıca merkeziyetsizleşme konusunda bazı problemlere sahip. Enigma ise bu problemlere çözümler sunarken, büyük boyutlardaki verileri çoklu şekilde yürütebilmeyi, analiz etmeyi ve sonuçlar çıkartmayı sağlaması da getirdiği yeniliklerden.

Enigma Uygulama Alanları

Enigma için ‘Gizliliğin Ethereumu’ dediğimize göre, Enigma altyapısıyla geliştirilen ve geliştirilebilecek uygulamalardan da bahsetmeliyiz.

  • Veri Pazarı: Veri tedarikçisinin, sağladığı verileri güvenlik, gizlilik ve otonomluk garantisiyle alıcıya ulaştırabileceği bir veri pazarı.
  • Kimlik: Oldukça kısa bir kod diziniyle, kimlik bilgilerinin onaylanabileceği, saklanabileceği ve gizlenebileceği otonom sistemler.
  • Gizli E-Oylama: Herhangi bir seçim sırasında-genel seçimlerden şirket içindeki seçimlere kadar- oyları ifşa etmeden sonucu görebileceğiniz bir sistem.

Bu örneklerin dışında, Enigma’yı sağlık alanındaki kayıtların tutulmasında, finansal verilerin saklanmasında, bilgilerin saklanması gereken tüm alanlarda kullanmak oldukça faydalı ve uygun olabilir.

Enigma Protokolü’nü, secure contractları, SMPC’yi anlatmaya çalıştım, umarım faydalı olmuştur. Sonraki yazılarda görüşmek üzere :)

Image Credit: @Tank.Sinatra

--

--