Yazarlar: Omer Shlomovits, ZenGo.
Eşik Değerli İmza Düzenleri (TSS), dağıtılmış anahtar üretimi ve imzalara yönelik bir kriptografi ilkesidir. TSS’in blockchain istemcilerinde kullanılması ise özellikle güvenlik anlamında pekçok fayda sağlayabilecek yeni bir paradigmadır. TSS daha geniş anlamda, anahtar yönetim sistemlerinin tasarımını (kripto cüzdanlar gibi) etkileyebilir ve DeFi kullanım alanları için platform bazlı desteğin yolunu açabilir. Bununla birlikte, TSS hala yeni bir teknolojidir bu yüzden risklerin ve sınırlamaların da dikkate alınması gerekir.
Bu makalede, TSS’in ne olduğundan, blockchain dünyasına ne gibi potansiyel avantajlar getireceğinden, blockchain istemcilerinde nasıl uygulamaya alınabileceğinden, Shamir gizli paylaşımından ve Multisig’den farklarının neler olduğundan, TSS dağıtılmış anahtar yönetimi için farklı kullanım alanlarının neler olduğundan ve son olarak risklerden ve sınırlamalardan bahsedeceğiz.
TSS'i anlamak için, öncelikle kriptografi hakkında bazı temel bilgilere sahip olmalıyız. 1970'lerden bu yana gitgide daha fazla internet sistemi (TLS ve PGP gibi) Açık anahtar kriptografisi (PKC) olarak da bilinen asimetrik kriptografiden faydalanıyor. PKC'de iki anahtar kullanır: bir açık ve bir de özel anahtar. Açık anahtar gizli değildir ve herhangi biri tarafından yayınlanabilir ya da kullanılabilir. Özel anahtar ise sistemin güvenliğini temsil eden gizli bir bilgi parçasıdır.
Şifreleme ve dijital imzalar, PKC'nin en yaygın kullanım alanlarıdır. Hem şifreleme hem de dijital imza düzenleri üç algoritma setine dayanır. Birincisi özel ve açık anahtarın yaratılması, ikincisi şifreli metnin/imzanın yaratılması, ve üçüncüsü ise şifre çözme/doğrulamadır. Dijital imzalar bağlamında, imza algoritması eşsiz bir imza yaratmak için yalnızca sahibi tarafından bilinen özel anahtarı gerektirir. İmza belirli bir mesaja, açık anahtara sahip herhangi birinin mesajın gerçekliğini ve doğruluğunu onaylayabileceği şekilde eklenir.
Blockchain şüphesiz çok güçlü bir teknolojidir. Blockchainde, eylemleri kaydeden ve organize eden bir mutabakat katmanı bulunur. Böylesi bir altyapı biz kullanıcılara merkeziyetsiz ekonomiler ve hatta hükümetler kurmak için potansiyel bir güç sunar. Şaşırtıcı şekilde, temel seviye bir blockchaini çalıştırmak için gerekli olan kriptografinin yalnızca dijital imza bazlı olması mümkündür. Blockchain bağlamında, özel anahtarlar kişileri temsil ederken, imza da bir kişinin ortaya attığı herkese açık beyan ya da iddiadır. Blockchain bu beyanları talep eder ve bunları belirli kurallara göre doğrular. Böylece imzaların diğer şeylerin yanı sıra kopyalanamaz ve doğru olduğu garantilenir.
Modern kriptografi, blockchainde kullanılan daha klasik kriptografiye kıyasla sihirbazlık numarası gibi gözüken bazı özelliklere sahiptir: Bunlardan birkaçı sıfır-bilgi ispatları, homomorfik şifreleme ve çoklu parti hesaplamalarıdır. Geçtiğimiz on yılda şahit olduğumuz üzere blockchain, uygulamalı kriptografiyi çok büyük oranda ileri taşıyarak yukarıdaki konularda ve diğer birçok öğede önemli gelişmelere sebep olmuştur.
Bu makalede, bu gelişmelerden bir tanesine odaklanacağız: etkin güvenli eşik değerli imzalar (TSS).
Çoklu parti hesaplamaları (MPC), kriptografinin Andrew C. Yao'nın çığır açıcı çalışmalarıyla neredeyse 40 yıl önce başlayan bir dalıdır. MPC'de, birbirlerine güven duymayan partiler bir fonksiyonu girdilere dayanarak ve girdileri gizli tutarak ortak bir şekilde hesaplamaya çalışır.
Örnek olarak, bir şirketin n sayıda çalışanının kendi maaşlarını açık etmeden kimin en yüksek maaşa sahip olduğunu öğrenmeye çalıştığını farz edelim. Burada gizli girdiler maaşlar ve çıktı da en yüksek maaşa sahip çalışanın ismi olur. Bu hesaplama MPC ile yapıldığında, hesaplama süresince tek bir maaş bile açığa çıkmadan bu isme ulaşılabilir.
MPC'nin başlıca iki özelliği doğruluk ve gizliliktir:
Doğruluk: algoritmanın ortaya koyduğu sonuç doğrudur (beklendiği üzere).
Gizlilik: bir partinin elindeki gizli girdi verisi diğer partilerin eline geçmez.
Bir dijital imzayı dağıtılmış şekilde hesaplamak için MPC kullanacağız. Yukarıdaki özelliklerin imzalara nasıl uygulanabileceğine göz atalım. Hatırlarsanız imzalar için üç adımımız var:
Anahtar Yaratma: İlk adım aynı zamanda en kompleks olan adımdır. Açık olacak ve gelecekteki imzaları doğrulamak için kullanılacak bir anahtar yaratmalıyız. Ama aynı zamanda her parti için adına gizli paylaşım diyeceğimiz bir bireysel gizli anahtar da yaratacağız. Doğruluk ve gizlilik bağlamında fonksiyon, tüm partiler için aynı açık anahtar çıktısını ve her bir parti için farklı bir gizli paylaşım çıktısı verecektir. Böylelikle: (1) gizlilik: hiçbir gizli paylaşım verisi partiler arasında paylaşılmaz ve (2) doğruluk: açık anahtar gizli paylaşımların bir fonksiyonudur.
İmzalama: bu adım bir imza yaratma fonksiyonu içerir. Her bir partinin girdisi, o partinin gizli paylaşımıdır ve bir önceki adımın çıktısı olarak yaratılmıştır (dağıtılmış imza oluşturulması). Ayrıca bir de herkes tarafından bilinen ve imzalanacak mesaj olan açık çıktı bulunur. Çıktı bir dijital imza olacaktır ve gizlilik özelliği hesaplama sırasında gizli paylaşımların açığa çıkmamasını garanti altına alır.
Doğrulama: doğrulama algoritması klasik düzendekiyle aynı kalır. Tek anahtar imzalarıyla uyumlu olabilmek için, açık anahtar bilgisine sahip herkesin imzaları doğrulayabilmesi ve onaylayabilmesi gerekir. Bu da tam olarak blockchain doğrulama nodelarının yaptığı şeydir.
Eşik değerli imza düzeni (TSS) bu dağıtılmış imza oluşturulması (DKG) ve eşik değerli imza düzeninin dağıtılmış şekilde imzalanmasına verilen isimdir.
TSS'i blockchainde kullanabilmenin en standart yolu, blockchain istemcisini TSS kullanarak anahtar ve imza yaratacak şekilde değiştirmektir. Burada blockchain istemcisi kavramını bir tam node tarafından yürütülen tüm işlemler anlamında kullanıyoruz. Uygulamada TSS teknolojisi, tüm özel anahtara ilişkin işlemleri dağıtılmış hesaplamalarla değiştirebilmemize olanak sunar.
Bunu daha ayrıntılı şekilde açıklamak için, klasik blockchain tasarımlarında yeni adreslerin nasıl yaratıldığını kısaca anlatacağız. En temelde, bir özel anahtar yaratarak yeni bir adres oluşturabilir ve daha sonra özel anahtara dayanan bir açık anahtar hesaplayabiliriz. Son olarak da, açık anahtardan bir açık adres türetebiliriz.
TSS kullanıldığında açık anahtar, her biri özel anahtarın gizli paylaşımına sahip (kişisel bölümler diğer partilerle paylaşılmaz) n sayıda parti tarafından ortaklaşa hesaplanır. Açık anahtarı kullanarak geleneksel sistemdeki gibi açık adresi türetebilir ve böylece blockchaini adresin nasıl yaratıldığından bağımsız kılabiliriz. Buradaki avantaj, her bir partinin elinde bir parça olduğu için özel anahtarın tek hata noktası olmaktan çıkmasıdır.
Aynı şey işlemleri imzalarken de yapılabilir. Bu durumda, özel anahtarını kullanarak imzalama yapan tek bir parti yerine imza çoklu partiler arasında dağıtılmış olarak yaratılır. Böylece yeteri kadar kişi dürüst davrandığı sürece her bir parti geçerli bir imza yaratabilir. Burada da yerel bir hesaplama (tek hata noktası) yerine interaktif bir hesaplama kullanılmış olur.
Dağıtılmış imza oluşturma sürecinin farklı erişim yapılarına izin verecek şekilde yapılabileceğini belirtmek önemlidir: genel “n üzerinden t” ayarında güvenlikten feragat edilmeden özel anahtarla ilgili işlemlerde t sayıda ihtiyari hata tolere edilebilir.
Bazı blockchainler TSS'i yazılımın yerleşik ya da programlanabilir bir parçası olarak sunar. Bu özelliğe multisig ya da çoklu imza adı verilir. Farkları daha iyi anlamak için çoklu imzaya blockchainin uygulama katmanındaki bir TSS olarak bakabiliriz.
Başka bir deyişle, hem çoklu imza hem de TSS özünde benzer hedeflere ulaşmaya çalışır fakat TSS kriptografiyi zincir dışı kullanırken çoklu imza zincir üstünde yer alır. Fakat, blockchainin çoklu imzayı kodlaması için bir yol gereklidir. Bu da gizliliğe zarar verebilir çünkü erişim yapısı (imza atanların sayısı) blockchain üzerinde açığa çıkar. Çoklu imza işlemlerinin masrafı daha yüksektir çünkü farklı imza sahiplerinin elindeki bilgilerin de blockchain üzerinden paylaşılması gerekir.
TSS'de, imza sahiplerine yönelik bilgiler standart görünümlü bir işlem olarak dosyalanarak masraflar düşürülür ve gizlilik korunur. Diğer yandan, çoklu imza etkileşimsiz de olabilir. Böylece farklı imza sahipleri arasında karmaşık bir iletişim katmanı çalıştırmanın yaratacağı zorluk ortadan kalkar.
En temel fark çoklu imzanın blockchaine özel olması ve her bir blockchain için baştan uyarlanması gerekliliğidir. Bazı durumlarda ise çoklu imzalar hiçbir şekilde desteklenmezler. Bunun aksine TSS sadece yalın kriptografiye dayanır, yani her zaman desteklenmesi mümkündür. Farkları resimlerle açıklayan çok güzel bir makaleye buradan ulaşabilirsiniz.
TSS ve Shamir gizli paylaşım yapısı kıyaslaması
Shamir gizli paylaşım yapısı (SSSS) özel anahtarı dağıtılmış şekilde saklamak için bir yol sunar. Böylece özel anahtar bekleme halindeyken birden fazla yerde depolanmış halde olur. SSSS ve TSS arasında iki fark bulunur:
Anahtar Oluşturma: SSSS'te özel anahtar gizli paylaşımlarının yaratılmasından sorumlu olan "dağıtıcı" adında tek bir parti bulunur. Bu da Anahtarın Oluşturulması sırasında, özel anahtarın tek bir yerde yaratıldığı ve daha sonra dağıtıcı tarafından farklı lokasyonlara dağıtıldığı anlamına gelir. TSS'te dağıtıcı bulunmaz çünkü bu rol özel anahtarın hiçbir zaman tek bir lokasyonda olmayacağı şekilde dağıtılmış durumdadır.
İmzalama: SSSS'te partilerin imza atabilmek için özel anahtarın tamamını yeniden yapılandırmaları gerekir. Bu da imzaya ihtiyaç duyulan her seferde tek hata noktasının ortaya çıkmasına neden olur. TSS'te imzalama işlemi, gizli paylaşımları tekrar yapılandırmadan dağıtılmış şekilde yapılır.
Görüldüğü üzere, TSS'te özel anahtar (sistemin güvenliğini temsil eden) var olduğu tüm süre boyunca hiçbir zaman tek bir yerde bulunmaz.
TSS teknolojisine dayanan bir cüzdan geleneksel kripto para cüzdanlarından biraz farklıdır. Geleneksel bir cüzdan genellikle bir tohum cümle yaratır ve bu cümleyi kullanarak adresi deterministik olarak türetir. Kullanıcı daha sonra bu hiyerarşik deterministik (HD) yapıyı, 1) cüzdan açık adreslerine karşılık gelen özel anahtarlara erişmek için kullanır ve işlemleri bunlarla imzalar ve 2) tohum cümleyi kullanarak tüm cüzdan anahtarlarını tekrar yaratabilir.
Eşik değerli cüzdanlarda işler daha karmaşıktır. HD yapı oluşturmak mümkün olsa da, bu oluşturma süreci diğer bir MPC protokolü gibi dağıtılmış şekilde hesaplanmalıdır. Partilerin kullanılacak bir sonraki anahtarı belirlemek için ortaklaşa karar vermeleri gerekir. Diğer bir deyişle her bir parti kendine ait bir tohum cümleye sahiptir. Tohum cümleler birbirlerinden ayrı olarak oluşturulur ve hiçbir zaman bir araya getirilmez. Böylece bir parti kendi başına tohumdan özel anahtar türetemez.
TSS temelli cüzdanlar ayrıca güvenliğe yönelik güzel bir özelliğe sahiptir: karşılık gelen açık anahtar ve blockchain adresini değiştirmeden özel anahtar rotasyonuna izin verilmesi. Proaktif gizli paylaşım olarak da bilinen özel anahtar rotasyonu gizli paylaşımları girdi olarak kullanan ve bundan yeni bir gizli paylaşım seti çıktısı yaratan bir diğer MPC protokolüdür. Eski gizli paylaşımlar silinebilir ve yeniler aynı şekilde kullanılabilir.
Böylesi bir yapı güvenliğe bir zaman boyutu ekleyerek bir saldırganın eşik değerli bir cüzdana saldırabilmesi için aynı anda birden fazla lokasyonda bulunmasını zorunlu kılar. Rotasyondan önceki ve sonraki gizli paylaşımları bir araya getirmek, sahte imza yaratmak isteyen bir saldırgana ekstra güç sağlamaz.
Bu tip cüzdanların olumsuz tarafı tohum cümleye sahip olmadıkları için tekli anahtar cüzdan sistemleriyle uyumsuz olmalarıdır. Bu yüzden hangi partilerin gizli paylaşımları elinde tutacağını değerlendirmek önemlidir.
Birkaç olası mimari vardır:
Dışarıdan TSS hizmeti: kullanıcı kendi adına "n" sayıda sunucunun hesaplamayı yapmasına izin verir. Anahtar üretimi, yönetimi ve imzaları, varlıkların sahibi olmayan fakat bazı teşvikler karşılığında bir güvenlik katmanı sunan hizmet sağlayıcılarına bırakılır.
Çoklu cihaz kullanımı: Kullanıcı, sahip olduğu cihazlar arasında TSS kullanır. Örneğin, bir parti aynı IoT cihazıyken diğer parti kullanıcının cep telefonu, bir diğer parti dizüstü bilgisayarı vs olur.
Hibrid: TSS, bazı partilerin dış hizmet sağlayıcılar tarafından bazılarının da kullanıcının sahip olduğu cihazlar tarafından kontrol edileceği şekilde kullanılır.
İlk yöntem kullanıcı istemcisi tarafındaki yoğun TSS hesaplamasının yükünü azaltır. Diğer yandan, hizmet sağlayıcı sahtekarlık yaparak (yeteri kadarının aynı anda saldırıya uğramadığını varsayıyoruz ama aslında uygulamada uğrayalabilirler) kullanıcının varlıklarını çalabilir.
İkinci yöntem kullanıcıya tam kontrol sağlar ama çevrimiçi olmak ve TSS hesaplamasına katılmak için birden fazla cihaza ihtiyaç duyulacağı için işlemleri külfetli hale getirir.
Üçüncü seçenek, hem kullanıcıya işlem yapmak için kolay ve hızlı bir yol sunduğu hem de kullanıcının izni olmadan işlem yapılmasına izin vermediği için iki taraf için de en iyi seçenek olarak kabul edilir.
Yıllar içinde araştırmacılar dijital imzalar için birçok kullanım alanı keşfettiler ve bunlardan bazıları hiç de önemsiz değil. Daha önce belirttiğimiz gibi, TSS güvenliği büyük oranda artırabilen kriptografik bir ilkedir. Blockchainler bağlamında bir çok işlevin TSS temelli kriptografiyle değiştirilebileceğini söylemek mümkün. Merkeziyetsiz uygulamalar, 2. katman ölçeklendirme çözümleri, atomik swaplar, harmanlama, katılım ve daha birçoğu TSS altyapısının üzerine inşa edilebilir. Bu da en nihayetinde pahalı ve riskli zincir üstü akıllı kontrat uygulamalarının daha ucuz ve güvenilir alternatifleriyle değiştirilmesini sağlayabilir.
Somut örneklerden bazıları: Çoklu Durak Kilitleri (multi-hop locks) iki partili imzalardan akıllıca faydalanır ve Bitcoin lighting ağına daha güvenli ve gizli bir ödeme kanalı ağı ile alternatifi olarak kullanılabilir. ShareLock muhtemelen Ethereum için en masrafsız zincir üstü harmanlama çözümüdür ve tek bir eşik değerli imzanın doğrulanmasına dayanır.
Geçtiğimiz birkaç yılda, TSS uygulamalarında büyük bir artış meydana geldi. Fakat TSS, yeni bir teknoloji olması nedeniyle hala bazı sınırlamalara ve sıkıntılara sahip. Klasik açık anahtar kriptografisine kıyasla TSS protokolleri çok kompleks olabilirler ve hala kapsamlı testlerden geçmeleri gereklidir. TSS, basit dijital imzalara kıyasla genellikle ek olarak daha zayıf kriptografik varsayımları zorunlu kılar. Sonuç olarak, geleneksel düzenlerde görülmeyen kriptografik saldırı vektörleri keşfedilmeye başlanmıştır (Breaking Bitcoin Conference 2019'dan bu sunumu izleyebilirsiniz). Güvenlik mühendisleri ve uygulamalı kriptograflar sisteminize güvenle TSS eklenmesinde size yardımcı olabilirler.
Bu makalede, blockchaini kullanma şeklimizi büyük oranda değiştirme potansiyeline sahip etkileyici bir kriptografik ilke olan eşik değerli imza düzeni (TSS) hakkında temel bilgiler sunduk.
Makalede, Binance Chain ve Bitcoin'de kullanılabilen Eşik Değerli ECDSA incelenmediği için, bu konuyu merak eden kişiler aşağıdaki makale listesine göz atabilirler. Ayrıca, bazı TSS uygulamalarını denemek isterseniz iki partili Binance Chain cüzdanı için koda buradan ulaşabilir ya da iki partili Binance Chain cüzdanı için velayete dayalı olmayan hibrid bir yöntem sunan ZenGo cüzdanı deneyebilirsiniz.
Ek okumalar: