Bitcoin Schnorr imzasını bir makalede okuyun

Açık-özel anahtar çiftleri, güvenli web taramasından şifreli para birimi finansal hizmetlerine kadar, şifreleme para birimi güvenliğinin temel taşıdır. Açık-özel anahtar çifti asimetriktir, yani bir sayı dizisi (özel anahtar) verildiğinde, başka bir dizenin (genel anahtar) türetilebileceği anlamına gelir. Ancak bunun tersi mümkün değildir. İnsanların açık anahtarları herkese açık olarak paylaşmasına izin veren bu asimetridir ve kimsenin özel anahtarı türetemeyeceğinden emin olabilir (özel anahtarın gizli ve güvenli bir şekilde tutulması gerekir).

Asimetrik anahtar çiftleri esas olarak iki uygulamada kullanılır:

· Kimlik doğrulamasında, özel anahtara sahip olduğunuzu kanıtlamanız gerekir;

· Şifreleme sürecinde bilgiler şifrelenebilir ve sadece özel anahtara sahip kişi mesajın şifresini çözebilir ve okuyabilir.

Dijital imzalara yönelik bu girişte, belirli bir anahtar türünü tartışacağız: eliptik eğrilerden türetilen anahtarlar ve diğer asimetrik şemalar, bunlardan en önemlileri, RSA anahtarları dahil asal sayıların ürününe dayalı şemalardır.

Eliptik Eğri Şifrelemesinin temellerini anladığınızı varsayıyoruz. Anlamadıysanız, orijinal metnin önceki bölümüne gidebilirsiniz.

·Diyeceğim şey şu ki

Bu, bu makalede bahsedilen fikirlerden bazılarını göstermek için Rust kodunu kullanarak dijital imzalara etkileşimli bir giriş niteliğindedir, böylece nasıl çalıştıklarını görebilirsiniz, bu makalede tanıtılan kod libsecp256k-rs alt kitaplığını kullanır.

İsim biraz kafa karıştırıcı, ancak secp256k1, Bitcoin dahil birçok kripto para birimi işlemini korumak için kullanılan eliptik eğrinin adıdır.

Bu özel kütüphane bazı çok güzel özellikler sağlar. Toplama ve çarpma operatörlerini yeniden yazdık, böylece Rust kodu matematiksel formüllere daha çok benziyor, bu da uygulamak istediğimiz fikirleri denememizi kolaylaştırıyor.

arkadasşça bir uyarı! Bu kitaplığı kod yazma sürecinde kullanmayın, doğrulanmadı, gerekirse bunun yerine bu alt kitaplığı kullanabilirsiniz.

· Schnorr imzasının temel bilgisi

Genel ve özel anahtarlar

Yapmamız gereken ilk şey, eliptik eğriden genel ve özel anahtarları oluşturmaktır.

Secp256k1'de özel anahtar, 0 ile 2256 arasında yalnızca bir skaler tamsayı değeridir. Sayı, tüm evrendeki atomların sayısına eşittir, dolayısıyla sonsuz olasılıklar vardır.

Secp256k1 eğrisinde G adlı ve "başlangıç noktası" olarak hizmet veren özel bir nokta vardır. Açık anahtar, eğrinin üzerine G eklenerek "Ka" ile çarpılır; bu, skaler çarpmanın tanımıdır ve şöyle yazılır:

Pa = KaG

Örneğin, sıkıştırılmamış biçimde yazıldığında, 1'in genel anahtarı 0479BE667 ... C47D08FFB10D4B8'dir. Aşağıdaki kod bunu gösterir:

· İmza oluştur

Benimseme yöntemi

Bir skaler için doğru seçilmiş bir rasgele değer kullanıldığında, ECC matematiksel çarpımını tersine çevirmek (yani bölme) (,) neredeyse imkansızdır. Bu özelliğe Ayrık Günlük Problemi denir ve birçok kripto para biriminin ve dijital imzanın ardındaki ilke olarak kullanılır. Geçerli bir dijital imza, imza sağlayıcısının mesajla ilişkili genel / özel anahtarı bildiğinin veya ayrı günlük sorununun çözüldüğünün kanıtıdır.

Bir imza oluşturma yöntemi her zaman aşağıdaki yöntemi izler: 1. Gizli bir kerelik numara r (rastgele sayı olarak adlandırılır) oluşturun. 2. r'den bir genel anahtar R oluşturun, burada (R = rG). 3. Aşağıdakileri alıcınıza Bob-mesajınız (m), R ve genel anahtarınızı (P = kG) gönderin.

Sorunu oluşturmak için yukarıdaki tüm genel bilgilerin kombinasyonunu hashleyerek gerçek imzayı oluşturun, e:

e = H (R || P || m)

E ve özel anahtarın aynı aralığa sahip olması için karma işlevini seçin Örneğimizde, döndürmek istediğimiz bilgi 256 bitlik bir sayıdır, bu nedenle SHA256 iyi bir seçimdir.

Şimdi imzayı oluşturmak için özel bilgilerinizi kullanın: s = r + ke

Bob artık e'yi de hesaplayabilir, çünkü m, R ve P'yi zaten biliyor, ancak özel anahtarınızı veya rastgele sayınızı bilmiyor.

Not: Böyle bir imza oluşturmaya Schnorr imzası denir.Bunu daha sonra tartışmaya devam edeceğiz.Bitcoin'de kullanılan ECDSA gibi s oluşturmanın başka yolları da vardır.

Şu örneğe bakın: sG = (r + ke) G

Sağ tarafı çarpın: sG = rG + (kG) e

R = rG ve P = kG'yi değiştirerek şunu elde edebiliriz: sG = R + Pe

Bu yüzden Bob, imzaya (s.G) karşılık gelen açık anahtarı hesaplamalı ve denklemin sağ tarafına (R + Pe) eşit olup olmadığını kontrol etmelidir Bu mesajlar Bob tarafından bilinir.

· Nonce rastgele sayı gerekliliği , Neden standart imzalarda rastgele sayılara ihtiyacımız var?

Diyelim ki bir m mesajı imzaladık:

e = H (P || m)

İmza s = ek

İmzanın her zamanki gibi geçerli olup olmadığını kontrol edebilir miyiz?

Şimdiye kadar normaldir, ancak artık herkes özel anahtarınızı okuyabilir, çünkü s bir skalerdir, bu nedenle k = s / e zor değildir. Rastgele sayılara gelince, k = (sr) / e çözülmelidir, ancak r bilinmiyor , R rastgele seçildiği sürece, bu uygulanabilir bir hesaplama değildir.

Hiçbir rastgele sayının gerçekten çok güvensiz olmadığını kanıtlayabiliriz:

· ECDH nedir?

Güvenli iletişime ulaşmak isteyen taraflar mesajları şifrelemek için nasıl paylaşılan bir anahtar oluşturur? Yöntemlerden biri, basit bir yöntem olan Eliptik Eğri Diffie-Hellmam değişimi (Elliptic Curve Diffie-Hellmam exchange) olarak adlandırılır.

ECDH, kanal pazarlığı sırasında Yıldırım Ağı dahil birçok yerde kullanılır.

İşleyiş şekli budur. Alice ve Bob güvenli bir şekilde iletişim kurmak ister. Kolay bir yol, birbirlerinin genel anahtarlarını kullanmak ve hesaplamalar yapmaktır:

Güvenlik nedenleriyle, özel anahtar genellikle her oturum için rastgele seçilir (bu, "geçici anahtar" teriminin kullanılmasını içerir), ancak karşılaştığımız sorun, karşı tarafın iddia edilen kimliğiyle eşleşip eşleşmediğinden emin değildir (belki Ortadaki adam saldırısıdır).

Bu sorunu çözmek için başka kimlik doğrulama adımları kullanılabilir ve burada ayrıntıları verilmeyecektir.

· Schnorr imzası

Cryptocurrency haberlerini çok takip ediyorsanız, Bitcoin Schnorr imzalarının ne kadar sıcak olduğunu bilirsiniz.

Ama aslında, bu zaten eski bir haber. Schnorr imzası, rastgele oracle modelinde en basit güvenli dijital imza şeması olarak kabul edilir. Çok etkilidir ve kısa imzalar üretir. Şubat 2008'de süresi dolan ABD patenti 4,950,082 ile ödüllendirilmiştir. .

· Schnorr imzası neden endişe yaratıyor?

Schnorr imzalarının bu kadar çekici ve tehlikeli olmasının nedeni basitliktir. Schnorr imzası doğrusaldır ve bu nedenle bazı iyi özelliklere sahiptir.

Eliptik eğrilerin çarpımsal özellikleri vardır. Bu nedenle, karşılık gelen iki nokta X, Y ve karşılık gelen skaler x, y varsa, o zaman:

(x + y) G = xG + yG = X + Y

Schnorr imzasının biçimi s = r + ek şeklindedir, bu yapı da doğrusaldır, bu nedenle eliptik eğri matematiğinin doğrusallığı için çok uygundur.

Doğrusallık önceki bölümde tanıtıldı. İmzayı doğruladığımızda, Schnorr imzasının doğrusallığı onu çok çekici kılıyor: 1. İmza toplama; 2. Atomik takas; 3. "Komut dosyası yok" komut dosyası

· Naif imza toplama

Birden çok imza oluşturmak için Schnorr imzalarının doğrusal özelliklerinin nasıl kullanılabileceğini görelim.

Alice ve Bob, birbirlerine güvenmek zorunda kalmadan bir şeyi (Tari işlemi gibi) imzalamak isterler, yani ilgili anahtarlarının sahipliğini kanıtlamaları gerekir ve toplu imza yalnızca Alice ve Bob imza bölümlerini sağladığında geçerlidir.

Özel anahtarın ki olarak ve genel anahtarın Pi olarak gösterildiğini varsayın. Alice ve Bob'dan rastgele birer sayı sağlamalarını istersek, deneyebiliriz:

Böylece Alice ve Bob kendi başlarına R sağlayabilir ve herkes R'nin toplam genel anahtarından iki imza oluşturabilir. Bu gerçekten mümkün:

Ancak bu çerçeve güvenli değil!

· Anahtar eleme saldırısı

Yukarıdaki sahne hala aynı, ancak bu sefer Alice bunu açıkladıktan sonra Bob, Alice'in açık anahtarını ve rastgele sayısını önceden biliyordu.

Şimdi Bob yalan söyledi ve açık anahtarının P'b = Pb-Pa olduğunu ve genel rastgele sayının R'b = Rb-Ra olduğunu söyledi.

Bob, sahte değerin özel anahtarını bilmiyor, ancak çok da önemli değil.

Toplama şemasına göre, herkes Sagg = Ra + R'b + e (Pa + P'b) varsayar.

Ancak Bob bu imzayı kendisi oluşturabilir:

· Daha iyi bir toplama yöntemi

Anahtar iptal saldırısında Bob, yayınlanan R ve P değerlerinin özel anahtarını bilmez.Özel anahtarı bildiğini kanıtlamak için bir mesaj imzalamasını isteyebiliriz, böylece Bob'un saldırısı başarısız olur.

Bu etkilidir, ancak taraflar arasında iyi bir kullanıcı deneyimi sağlamayan başka bir mesajlaşma turu gerektirir.

Daha iyi bir yöntem, aşağıdaki işlevlerden birini veya daha fazlasını dahil etmektir: · Yalnızca sıradan açık anahtar modelinde güvenli olduğunu kanıtlaması gerekir ve anahtarla ilgili mesajı doğrulaması gerekmez, çünkü Bob'dan bunu saf modelde kanıtlamasını isteyebiliriz . · Geleneksel Schnorr denklemini sağlamalıdır, yani imza R + eX şeklinde bir ifade ile doğrulanabilir. · Etkileşimli toplu imzalara (IAS) izin verir ve imzalayanların işbirliği yapması gerekir. · Birleştirme işleminin herkes tarafından yapılabildiği etkileşimli olmayan toplama imzalarına (NAS) izin verir. · Her imzalayanın aynı mesajı imzalamasına izin verir, m. · Her imzalayanın kendi mesajını, mi imzalamasını sağlar.

· Çoklu imza

Çoklu imza, önceki bölümdeki tüm özellikleri karşılayan, yakın zamanda önerilen (,) basit bir imza toplama şemasıdır.

· Çoklu imza demosu

Etkileşimli çoklu imza şemasını burada göstereceğiz Her imzalayan aynı mesajı imzalar Şemanın çalışma prensibi aşağıdaki gibidir: 1. Daha önce belirtildiği gibi, her imzalayanın bir genel-özel anahtar çifti vardır. 2. Her imzalayan, genel rastgele sayılarına yönelik bir taahhüt paylaşır (bu demodaki bu adımı atlayın), bu adım, belirli türdeki kötü amaçlı anahtar saldırılarını önlemek için gereklidir. 3. Her imzalayan, rasgele sayılarını, Ri'nin açık anahtarını yayınlar. 4. Herkes aynı "paylaşılan genel anahtarı" hesaplar, X aşağıdaki gibidir:

Yukarıdaki genel anahtar sıralamasında, anahtarların sözlük sırasına göre sıralanması gibi belirli kurallara uyulması gerektiğini lütfen unutmayın. 1. Herkes ayrıca paylaşılan rasgele sayıyı hesaplar, R = iRi. 2. Problem, e H'dir (R || X || m). 3. Her imzalayanın imzaya katkıda bulunması gerekir:

Standart Schnorr imzasının tek başlangıç noktasının dahil etme faktörü ai olduğuna dikkat edin.

Birleştirilmiş toplam imza genellikle s = si toplamıdır.

Doğrulamayı aşağıdaki yöntemle onaylayın: sG = R + eX

kanıtlamak:

Üçlü imza ile gösterelim:

· Güvenlik gösterimi

Son bir gösteri olarak, çoklu imzanın naif imza şemasından kaynaklanan eleme saldırısına nasıl direnebileceğini gösterelim. Anahtar eleme saldırısı kısmıyla aynı fikir olan Bob, rastgele sayısında ve açık anahtarında yanlış değerler verir:

Bu, Alice ve Bob'un aşağıdaki hesaplamaları birlikte yapmasına neden oldu:

Bob daha sonra çoklu imzadan sonra tek taraflı bir imza oluşturur:

Şimdi ks'nin Bob'un özel anahtarı olması gerekmediğini varsayıyoruz, ancak Bob'un bilinen bilgilerini türetmek için kullanabileceğini varsayıyoruz. Bunu geçerli bir imza yapmak için R + eX doğrulanmalıdır. Bu nedenle:

Önceki saldırıda Bob, hesaplamanın sağ tarafındaki tüm bilgileri benzer hesaplamalardan elde etti.Çoklu imzada, Bob bir şekilde Alice'in özel anahtarını ve sahte özel anahtarı bilmelidir (bu terimler artık iptal edilmiyor) Tek taraflı bir imza oluşturmak için eleme saldırısı başarısız oldu.

· Saldırıyı tekrar oynatın

Her imza töreni için yeni bir rastgele sayı seçmek çok önemlidir En iyi yol, kriptografik olarak güvenli (sözde) rasgele sayı üreteci (CSPRNG) kullanmaktır.

Ancak bu durumda bile, saldırgan, imza törenini kısmi bir imzanın oluşturulduğu noktaya "geri sararak" yeni bir mesajı imzalamamız için bizi kandırabilir. Bu sırada, saldırgan farklı bir mesaj, e '= H (. .. || m ') herhangi bir şüpheye yol açmadan imzalamak, her bir taraf kısmi imzasını tekrar hesaplayacaktır:

Saldırgan yine de ilk imza kümesine erişebilir, sadece çıkarma işlemini yapın:

Sonunda, denklemin sağ tarafındaki tüm mesajlar saldırgan tarafından elde edilir, böylece savunması zor olan herkesin özel anahtarını kolayca çıkarabilir. Bunun bir yolu, imza törenini sonlandırma ve yeniden başlatma zorluğunu artırmaktır. Çoklu imza töreni kesintiye uğrarsa, ilk adımdan yeniden başlamanız gerekir. Bu oldukça ergonomik ve daha güçlü bir çözüm ortaya çıkana kadar en güncel adım olabilir. Güzel çözüm!

Referans malzemeleri:

"RSA (Cryptosystem)". Https://en.wikipedia.org/wiki/RSA_ (cryptosystem). Erişim tarihi: 2018-10-11. "Eliptik eğri dijital imza algoritması", Wikipedia. Https: // en. wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm. Erişim tarihi: 2018-10-11. "BOLT # 8: Şifreleme ve Kimlik Doğrulama İletimi, Lightning RFC", Github.https: //github.com/lightningnetwork/lightning-rfc/blob/master /08-transport.md. Erişim tarihi: 2018-10-11. "Man-in-the-middle attack", Wikipedia. Https: //en.wikipedia.org/wiki/Man-in-the-middle_attack. Erişim tarihi: 2018-10 -11. "Kriptografik güvenli rasgele sayı üreteci nasıl çalışır?" StackOverflow ". Https://stackoverflow.com/questions/2449594/how-does-a-cryptographically-secure-random-number-generator-work. Ziyaret tarihi: 2018-10-11. "Cryptographically Secure Pseudorandom Number Generator", Wikipedia. Https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator. Ziyaret Tarihi: 2018-10-11. "Schnorr İmzası", Wikipedia . https://en.wikipedia.org/wiki/Schnorr_signature. Ziyaret tarihi: 2018-09-19. "Schnorr imzaları için anahtar toplama", Blockstream. https://blockstream.com/2018/01/23/musig -key-aggregation-schnorr-signatures.html_. Ziyaret tarihi: 2018-09-19. Gregory Maxwell, Andrew Poelstra, Yannick Seurin ve Pieter Wuille, "Simple Schnorr çoklu imza uygulaması Bitcoin ".Https: //eprint.iacr.org/2018/068.pdf. Erişim tarihi: 2018-09-19. Manu Drijvers, Kasra Edalatnejad, Bryan Ford, Eike Kiltz, Julian Loss, Gregory Neven ve Igors Stepanovs," Hakkında İki tur çoklu imzanın güvenliği ", Cryptography ePrint dosyası, rapor 2018/417. Https://eprint.iacr.org/2018/417.pdf. Erişim tarihi: 2019-02-21.

Katkıda bulunanlar:

· CjS77 · SWvHeerden · Hansieodendaal · neonknight64 · anselld

Bu makalenin kaynağı: First-class warehouse, yerli ve yabancı blockchain projelerinin toplanması, proje analizi ve proje ilerleme takibi konusunda uzmanlaşmış bir bilgi hizmeti şirketidir.Yerli ve yabancı blockchain yatırımcıları için blockchain projelerinin durum tespiti ve durum tespiti sağlar. Analiz hizmeti.

Orijinal kaynak: https://tlu.tarilabs.com/cryptography/digital_signatures/introduction_schnorr_signatures.html

Merkez Komite Teşkilat Dairesinin "Devrimci Eski Bölge Akademisyenleri ve Uzmanları" etkinliği porselen başkenti Jingdezhen'e girdi.
önceki
Reiz, Asia Dragon ile değiştirildi ve Toyota bu sefer tekrar kazandı
Sonraki
Köydeki 90.000 kişi bu arabayı satın almanın 200.000'e mal olduğunu mu düşündü?
Hall of Fame Jingdezhen'deki çağdaş mavi ve beyaz manzara porseleninin ilk kişisi Yang Shuhua
2.0T + 8AT, 218.800 parmak izi tanıma özellikli, dördüncü nesil Shengda, Highlander'ı attan çekebilir mi?
Zotye Sesame eZ piyasada, 210 kilometre batarya ömrü ile büyük bir merkezi kontrol ekranı ile donatılmış, ancak biraz pahalı
Yeni Öğrenci Rehberi Jingdezhen Seramik Üniversitesi öğrencilerinin porselen başkentinde nasıl oynadıklarını görün ...
Ortadoğu dünyanın en kaotik bölgesi haline geldi, onu yönetmenin bir yolu var mı? Earth Knowledge Bürosu
Visual China, telif hakkı anlaşmazlıklarını patlatıyor: ihlalin tedavisi zor, blok zinciri teknolojisi çözülecek
Patlamak! Nanchang'daki 2 anaokulundan 45 çocuğun kusma semptomları var.En son resmi yanıt geliyor ...
Aynı şey araba kullanmaktır, neden diğerlerinden daha fazla gaz kullanıyorsunuz?
Bu turizm beldesinde ani bir darbe var, Çinli turistlerin gitmemesi en iyisi
Jingdezhen'de 8 özel ara öğün hangisi favoriniz? Daha önce hiç tatmadınız, tadına bakmak için Porselen'e gelebilirsiniz ...
Beyaz arabalar neden bu kadar iyi satılıyor?
To Top