Town Crier ve DECO: Blockchain'de hangi kahin kullanılmalı?

Bugün sadece tembeller blockchain teknolojisi, kripto para birimleri ve bunun ne kadar havalı olduğu hakkında yazmadı. Ancak bu yazımızda bu teknolojiyi övmeyeceğiz, eksikliklerinden ve bunları gidermenin yollarından bahsedeceğiz.

Town Crier ve DECO: Blockchain'de hangi kahin kullanılmalı?

Altirix Systems'deki projelerden biri üzerinde çalışırken, blok zincirinin dışındaki bir kaynaktan gelen verilerin güvenli, sansüre dayanıklı bir şekilde doğrulanması görevi ortaya çıktı. Üçüncü sistemin kayıtlarındaki değişiklikleri onaylamak ve bu değişikliklere dayanarak akıllı sözleşme mantığında şu veya bu şubeyi yürütmek gerekiyordu. İlk bakışta görev oldukça önemsizdir, ancak sürece katılan taraflardan birinin mali durumu uygulamanın sonucuna bağlı olduğunda ek gereksinimler ortaya çıkar. Her şeyden önce bu, böyle bir doğrulama mekanizmasına duyulan kapsamlı güvendir. Ama önce ilk şeyler.

Sorun, blockchain'in kendisinin özerk, kapalı bir varlık olması ve dolayısıyla blockchain içindeki akıllı sözleşmelerin dış dünya hakkında hiçbir şey bilmemesidir. Aynı zamanda akıllı sözleşmelerin şartları genellikle gerçek şeylerle ilgili bilgilerle (uçuş gecikmesi, döviz kurları vb.) ilgilidir. Akıllı sözleşmelerin düzgün çalışması için blockchain dışından alınan bilgilerin güvenilir ve doğrulanmış olması gerekir. Bu sorun Town Crier ve DECO gibi oracle'lar kullanılarak çözülmektedir. Bu oracles, blockchain ağı üzerinde akıllı bir sözleşmenin güvenilir bir web sunucusundan gelen bilgilere güvenmesini sağlar; bunların güvenilir bilgi sağlayıcıları olduğunu söyleyebiliriz.

Kahinler

Favori futbol kulübünüz Rusya Kupası'nı kazanırsa akıllı bir sözleşmenin bitcoin cüzdanınıza 0.001 btc aktardığını düşünün. Gerçek bir zafer durumunda, akıllı sözleşmenin hangi kulübün kazandığına ilişkin bilgileri aktarması gerekir ve burada bir takım sorunlar ortaya çıkar: bu bilginin nereden alınacağı, akıllı sözleşmeye güvenli bir şekilde nasıl aktarılacağı ve bilgilerin doğru şekilde aktarılmasının nasıl sağlanacağı. Alınan akıllı sözleşme gerçekten geçerli olup gerçekle örtüşüyor mu?

Bilgi kaynağı söz konusu olduğunda 2 senaryo olabilir: maç sonuçlarıyla ilgili bilgilerin merkezi olarak depolandığı güvenilir bir web sitesine akıllı sözleşme bağlamak ve ikinci seçenek, birkaç siteyi aynı anda bağlamak ve ardından çoğu kaynaktan bilgi seçmektir. aynı verileri sağlayanlar. Bilgilerin doğruluğunu doğrulamak için, Oracle'lar kullanılır; örneğin, TLSNotary'yi (Verilerin Orijinalliğini Kanıtlamak için TLS Noter Değişikliği) kullanan Oraclize. Ancak Google'da Oraclize hakkında yeterli bilgi var ve Habré hakkında da birkaç makale var.Bugün bilgi aktarımında biraz farklı bir yaklaşım kullanan oracle'lardan bahsedeceğim: Town Crier ve DECO. Makale, her iki oracle'ın çalışma prensiplerinin bir tanımını ve ayrıntılı bir karşılaştırmayı sunmaktadır.

Şehir tellalı

Town Crier (TC), IC3 (Kripto Para Birimleri ve Sözleşmeler Girişimi) tarafından 2016 yılında CCS'16'da tanıtıldı. TC'nin ana fikri: Bir web sitesinden bilgileri akıllı bir sözleşmeye aktarmak ve TC tarafından iletilen bilgilerin web sitesindeki ile aynı olduğundan emin olmak. TC, veri sahipliğini doğrulamak için TEE'yi (Güvenilir Yürütme Ortamı) kullanır. TC'nin orijinal sürümü Intel SGX ile nasıl çalışılacağını açıklamaktadır.
Town Crier, blockchain içindeki bir parçadan ve işletim sisteminin içindeki bir parçadan (TC Server) oluşur.
Town Crier ve DECO: Blockchain'de hangi kahin kullanılmalı?
TC Sözleşmesi blockchain üzerindedir ve TC için ön uç görevi görür. CU'dan (kullanıcı akıllı sözleşmesi) gelen istekleri kabul eder ve TC Sunucusundan bir yanıt döndürür. TC Sunucusunun içinde, bölge ile İnternet (çift yönlü trafik) arasında bağlantı kuran ve bölgeyi blok zincirine bağlayan bir Röle bulunur. Enclave, blok zincirinden istekte bulunan ve mesajları dijital imzayla blok zincirine geri gönderen kod olan progencl'yi içerir, progencl akıllı sözleşme kodunun bir kısmını içerir ve esasen bazı işlevlerini yerine getirir.

Intel SGX bölgesi, ecall aracılığıyla çalışan bir API'ye sahip paylaşılan bir kitaplık olarak düşünülebilir. Ecall kontrolü bölgeye aktarır. Yerleşim, kodunu çıkana kadar veya bir istisna oluşana kadar yürütür. ocall, yerleşim alanı dışında tanımlanan işlevleri çağırmak için kullanılır. Ocall, bölge dışında yürütülür ve güvenilmeyen bir çağrı olarak değerlendirilir. Ocall yürütüldükten sonra kontrol bölgeye geri döner.
Town Crier ve DECO: Blockchain'de hangi kahin kullanılmalı?
Enclave kısmında bir web sunucusu ile güvenli bir kanal yapılandırılır, enclave hedef sunucu ile TLS el sıkışmasını kendisi gerçekleştirir ve tüm kriptografik işlemleri dahili olarak gerçekleştirir. TLS kitaplığı (mbedTLS) ve azaltılmış HTTP kodu SGX ortamına aktarıldı. Ayrıca Enclave, uzak sunucuların sertifikalarını doğrulamak için kök CA sertifikaları (bir sertifika koleksiyonu) içerir. İstek İşleyicisi, Ethereum tarafından sağlanan formatta bir datagram isteğini kabul eder, şifresini çözer ve ayrıştırır. Daha sonra istenen datagramı içeren bir Ethereum işlemi oluşturur, bunu skTC ile imzalar ve Relay'e iletir.

Röle kısmı İstemci Arayüzü, TCP, Blockchain Arayüzü içerir. Yerleşim kodunu onaylamak ve müşteriyle iletişim kurmak için İstemci Arayüzü gereklidir. İstemci, ecall kullanarak bir doğrulama isteği gönderir ve att (doğrulama imzası) ile birlikte skTC tarafından imzalanmış bir zaman damgasını alır, ardından att, Intel Onay Hizmeti (IAS) kullanılarak doğrulanır ve zaman damgası, güvenilir bir zaman hizmeti tarafından doğrulanır. Blockchain Arayüzü, gelen istekleri doğrular ve datagramların teslimi için işlemleri blockchain'e yerleştirir. Geth, resmi bir Ethereum istemcisidir ve Relay'in RPC çağrıları yoluyla blockchain ile etkileşime girmesine olanak tanır.

TEE ile çalışan TC, birkaç bölgeyi paralel olarak çalıştırmanıza olanak tanır, böylece bilgi işleme hızını 3 kat artırır. Çalışan bir yerleşim biriminde hız 15 tx/sn ise, paralel çalışan 20 yerleşim biriminde hız 65 tx/sn'ye yükselir; karşılaştırma için Bitcoin blok zincirindeki maksimum çalışma hızı 26 tx/sn'dir.

DECO

TLS bağlantılarını destekleyen sitelerle çalışan DECO (TLS için Merkezi Olmayan Oracle'lar) CCS'20'de tanıtıldı. Veri gizliliğini ve bütünlüğünü sağlar.
TLS'li DECO simetrik şifreleme kullanır, böylece istemci ve web sunucusu şifreleme anahtarlarına sahiptir ve istemci isterse TLS oturum verilerini taklit edebilir. Bu sorunu çözmek için DECO, kanıtlayıcı (akıllı sözleşme), doğrulayıcı (oracle) ve web sunucusu (veri kaynağı) arasında üç yönlü bir el sıkışma protokolü kullanır.

Town Crier ve DECO: Blockchain'de hangi kahin kullanılmalı?

DECO'nun çalışma şekli, doğrulayıcının bir D verisi alması ve doğrulayıcıya D'nin TLS sunucusu S'den geldiğini doğrulamasıdır. Diğer bir sorun ise TLS'nin verileri imzalamamasıdır ve TLS istemcisinin bu veriyi kanıtlamasının zor olmasıdır. Veriler tam olarak doğru sunucudan alınmıştır (kaynak zorluğu).

DECO protokolü KEnc ve KMac şifreleme anahtarlarını kullanır. İstemci web sunucusuna bir Q isteği gönderir, R sunucusundan gelen yanıt şifrelenmiş biçimde gelir, ancak istemci ve sunucu aynı KMac'e sahiptir ve istemci TLS mesajını taklit edebilir. DECO'nun çözümü, isteğe yanıt verene kadar KMac'i istemciden (kanıtlayıcıdan) "gizlemektir". Artık KMac kanıtlayıcı ve doğrulayıcı arasında bölünmüş durumda - KpMac ve KvMac. Sunucu, KpMac ⊕ KvMac = KMac anahtar parça işlemini kullanarak yanıtı şifrelemek için KMac'i alır.

Üç yönlü el sıkışma kurularak istemci ve sunucu arasındaki veri alışverişi güvenlik garantisiyle gerçekleştirilecektir.
Town Crier ve DECO: Blockchain'de hangi kahin kullanılmalı?
Merkezi olmayan bir oracle sisteminden bahsederken, modülerliği dikkate alarak Ethereum, Bitcoin ve Hyperledger ile uyumlu merkezi olmayan bir oracle düğümleri ağı oluşturmayı amaçlayan Chainlink'ten bahsetmeden geçemeyiz: sistemin her parçası güncellenebilir. Aynı zamanda güvenliği sağlamak için Chainlink, göreve katılan her oracle'a bir anahtar kombinasyonu (genel ve özel) verme olanağı sunar. Özel anahtar, veri talebine ilişkin kararları içeren kısmi bir imza oluşturmak için kullanılır. Bir yanıt elde etmek için ağdaki kahinlerin tüm kısmi imzalarını birleştirmek gerekir.

Chainlink, Mixicles gibi merkezi olmayan finans uygulamalarına odaklanarak ilk PoC DECO'yu yürütmeyi planlıyor. Bu yazının yazıldığı sırada Forbes'ta Chainlink'in DECO'yu Cornell Üniversitesi'nden satın aldığına dair haberler çıktı.

Kahinlere saldırılar

Town Crier ve DECO: Blockchain'de hangi kahin kullanılmalı?

Bilgi güvenliği açısından Town Crier'a yapılan aşağıdaki saldırılar değerlendirildi:

  1. TEE düğümlerine hileli akıllı temas kodu ekleme.
    Saldırının özü: TEE'ye kasıtlı olarak yanlış bir akıllı sözleşme kodunun iletilmesi, böylece düğüme erişim sağlayan bir saldırganın, şifresi çözülmüş veriler üzerinde kendi (sahtekarlık) akıllı sözleşmesini yürütmesi mümkün olacaktır. Ancak dönüş değerleri özel bir anahtarla şifrelenecektir ve bu tür verilere erişmenin tek yolu, dönüş/çıkışta şifreli metnin sızdırılmasıdır.
    Bu saldırıya karşı koruma, mevcut adreste bulunan kodun doğruluğunun kontrol edilmesinden oluşur. Bu, sözleşme adresinin sözleşme kodunun hashlenmesiyle belirlendiği bir adresleme şeması kullanılarak gerçekleştirilebilir.

  2. Sözleşme durumu şifreli metin değişiklikleri sızıntısı.
    Saldırının özü: Akıllı sözleşmelerin yürütüldüğü düğümlerin sahipleri, bölge dışından şifrelenmiş biçimde sözleşme durumuna erişebilir. Bir düğümün kontrolünü ele geçiren saldırgan, işlem öncesi ve sonrası iletişim durumunu karşılaştırabilir ve akıllı sözleşme kodunun kendisi ve teknik özellikleri halka açık olduğundan hangi argümanların girildiğini ve hangi akıllı sözleşme yönteminin kullanıldığını belirleyebilir.
    Düğümün kendisinin güvenilirliğini sağlamada koruma.

  3. Yan kanal saldırıları.
    Çeşitli senaryolarda yerleşim belleğinin ve önbellek erişiminin izlenmesini kullanan özel bir saldırı türü. Böyle bir saldırıya örnek olarak Prime ve Probe verilebilir.
    Town Crier ve DECO: Blockchain'de hangi kahin kullanılmalı?
    Saldırı sırası:

    • t0: Saldırgan, kurban işleminin veri önbelleğinin tamamını doldurur.
    • t1: Kurban, kurbanın hassas verilerine (kriptografik anahtarlar) bağlı olan bellek erişimleriyle kodu çalıştırır. Önbellek satırı keybit değerine göre seçilir. Şekildeki örnekte keybit = 0 ve önbellek satırı 2'deki X adresi okunur, X'te saklanan veriler önbelleğe yüklenir ve daha önce orada bulunan veriler değiştirilir.
    • t2: Saldırgan, kurban tarafından kullanılan önbellek hatlarından hangilerinin boşaltıldığını kontrol eder. Bu, erişim süresinin ölçülmesiyle yapılır. Saldırgan, her bir anahtar biti için bu işlemi tekrarlayarak anahtarın tamamını elde eder.

Saldırı Koruması: Intel SGX, önbellekle ilgili olayların izlenmesini önleyen yan kanal saldırılarına karşı korumaya sahiptir, ancak saldırgan, işleminin önbellek olaylarını izlediği ve önbelleği kurbanla paylaştığı için Prime ve Probe saldırısı yine de işe yarayacaktır.
Town Crier ve DECO: Blockchain'de hangi kahin kullanılmalı?
Dolayısıyla şu anda bu saldırıya karşı güvenilir bir koruma mevcut değil.

Prime ve Probe'a benzeyen Spectre ve Foreshadow (L1TF) gibi saldırılar da bilinmektedir. Üçüncü taraf bir kanal aracılığıyla önbellekteki verileri okumanıza olanak tanır. Bu saldırılardan ikisine karşı çalışan Spectre-v2 güvenlik açığına karşı koruma sağlanıyor.

DECO ile ilgili olarak, üç yönlü el sıkışma bir güvenlik garantisi sağlar:

  1. Kanıtlayıcının Bütünlüğü: Saldırıya uğramış bir kanıtlayıcı, sunucunun kaynak bilgisini tahrif edemez ve sunucunun geçersiz istekleri kabul etmesine veya geçerli isteklere yanlış yanıt vermesine neden olamaz. Bu, sunucu ve kanıtlayıcı arasındaki istek kalıpları aracılığıyla yapılır.
  2. Doğrulayıcının Bütünlüğü: Saldırıya uğramış bir doğrulayıcı, kanıtlayıcının yanlış yanıtlar almasına neden olamaz.
  3. Gizlilik: Saldırıya uğrayan doğrulayıcı yalnızca genel bilgileri (istek, sunucu adı) inceler.

DECO'da yalnızca trafik enjeksiyonu güvenlik açıkları mümkündür. İlk olarak, üç yönlü bir el sıkışma ile doğrulayıcı, yeni bir nonce kullanarak sunucunun kimliğini belirleyebilir. Ancak el sıkışmanın ardından doğrulayıcının ağ katmanı göstergelerine (IP adresleri) güvenmesi gerekir. Bu nedenle doğrulayıcı ile sunucu arasındaki iletişimin trafik enjeksiyonundan korunması gerekir. Bu, Proxy kullanılarak gerçekleştirilir.

Kahinlerin karşılaştırılması

Town Crier, sunucu kısmındaki bir yerleşim alanıyla çalışmaya dayanırken DECO, üç yönlü bir el sıkışma ve kriptografik anahtarlarla veri şifreleme kullanarak verilerin kaynağının gerçekliğini doğrulamanıza olanak tanır. Bu kehanetlerin karşılaştırılması şu kriterlere göre yapıldı: performans, güvenlik, maliyet ve pratiklik.

Şehir tellalı
DECO

verim
Daha hızlı (bitirmeye 0.6 saniye)
Daha yavaş (protokolü bitirmek için 10.50 saniye)

güvenlik
Daha az güvenli
Daha güvenli

maliyet
Daha pahalı
ucuz

pratiklik
Özel donanım gerektirir
TLS'yi destekleyen herhangi bir sunucuyla çalışır

Hız performansı: DECO ile çalışmak için üç yönlü bir el sıkışma gereklidir, LAN üzerinden kurulum 0.37 saniye sürer, bağlantı kurulduktan sonraki etkileşim için 2PC-HMAC etkilidir (yazma başına 0,13 saniye). DECO'nun performansı, mevcut TLS şifre paketlerine, özel verilerin boyutuna ve belirli bir uygulama için kanıtların karmaşıklığına bağlıdır. Örnek olarak IC3'teki ikili opsiyon uygulamasını kullanırsak: protokolün LAN üzerinden tamamlanması yaklaşık 10,50 saniye sürer. Karşılaştırıldığında, Town Crier'ın benzer bir uygulamayı tamamlaması yaklaşık 0,6 saniye sürüyor; bu da DECO'dan yaklaşık 20 kat daha hızlı. Her şey eşit olduğunda TC daha hızlı olacaktır.

güvenlik: Intel SGX bölgesine yapılan saldırılar (yan kanal saldırıları) işe yarar ve akıllı sözleşme katılımcılarına gerçek zarar verebilir. DECO'ya gelince, trafik enjeksiyonuyla ilgili saldırılar mümkündür, ancak proxy kullanımı bu tür saldırıları boşa çıkarır. Bu nedenle DECO daha güvenlidir.

Maliyet: Intel SGX'i destekleyen ekipmanın maliyeti, DECO'da protokol kurma maliyetinden daha yüksektir. Bu yüzden TC daha pahalıdır.

pratiklik: Town Crier ile çalışmak için TEE'yi destekleyen özel ekipman gereklidir. Örneğin Intel SGX, 6. nesil Intel Core işlemci ailesi ve sonrasında desteklenir. DECO, TEE kullanan bir DECO ayarı olmasına rağmen, herhangi bir ekipmanla çalışmanıza olanak tanır. Kurulum sürecine göre DECO'nun üç yönlü el sıkışması biraz zaman alabilir ancak bu, TC'nin donanım sınırlamasıyla karşılaştırıldığında hiçbir şey değildir, dolayısıyla DECO daha pratiktir.

Sonuç

İki kehanete ayrı ayrı bakıldığında ve bunları dört kritere göre karşılaştırdığımızda, Town Crier'ın dört puanın üçünde DECO'dan daha düşük olduğu açıktır. DECO, bilgi güvenliği açısından daha güvenilir, daha ucuz ve daha pratiktir, ancak üç taraflı bir protokolün kurulması biraz zaman alabilir ve şifreleme anahtarlarıyla ek işlemler gibi dezavantajları olabilir. TC, DECO'dan daha hızlıdır ancak yan kanal saldırılarındaki güvenlik açıkları onu gizlilik kaybına açık hale getirir. DECO'nun Ocak 2020'de tanıtıldığını ve güvenli olarak kabul edilmesi için yeterli zamanın geçmediğini dikkate almak gerekir. Town Crier 4 yıldır saldırı altında ve birçok testten geçti, bu nedenle birçok projede kullanımı haklı.

Kaynak: habr.com

Yorum ekle