İşlemlerinizi Gerçekte Ne İmzalıyor ve İmza Neyi Kapsıyor
Bu cüzdanın gönderdiği her işlem, kurtarma ifadenizden türetilmiş bir anahtarla cihazınızda imzalanıyor. İmzanın kapsadığı şey "işlem"den daha belirlidir ve ilginç kısımlar da o belirlilikte.
Şema
Ed25519, sırayla birleştirilmiş üç şeyin BLAKE3 özeti üzerinde:
Açık anahtarınız, böylece bir imza başkasının işlemine taşınamıyor.
Bir sayaç değeri, küçük-endian altmış dört bitlik bir sayı olarak kodlanmış, böylece iki kez gönderilen aynı işlem iki farklı imza oluyor ve tekrarlanan biri geri çevriliyor.
Yük, JSON olarak seri hâle getirilmiş.
Kod, bu düzenin zincirin kendi işlem türüyle eşleştiğini belirtiyor, ki bu ya yük taşıyan ya yanlış olan türden bir yorumdur. Burada yük taşıyor ve sonraki bölüm bunun sebebidir.
O listedeki kırılganlık ve var olan hafifletme
Bir JSON seri hâline getirmesini özetlemek, imzanın yükün belirli bir işlenişini kapsadığı anlamına geliyor. JSON kurallı değildir: anahtar sırası ve boşluk serbesttir ve iki doğru seri hâle getirici aynı yapı için farklı baytlar üretebilir.
Yani bir uygulamanın kurduğu bir imza bir başkasında doğrulanamayabilir, ikisinden biri kriptografi konusunda yanlış olduğu için değil noktalama konusunda anlaşamadıkları için. Bu, CBOR ve diğer ikili kodlamaların karşılaştığı aynı problemdir ve bir kriptografik paketin sabitlemek için var olduğu aynı problemdir.
Hafifletme varsayılmak yerine inşa edildi. Paylaşılan paket, Rust paritesi için adlandırılmış test paketleri taşıyor: kurtarma imzalama iletisini, kurtarma yükünün bayt şeklini ve transferleri kapsıyorlar. Özellikle, tarayıcı ile zincir arasındaki kaymanın bir kullanıcıyı değil bir testi düşürmesi için varlar.
Kırılganlığa doğru cevap budur ve fark edilip sabitlendiğini, şansa bırakılmadığını söylemeye değer.
Gerçekte ne gönderilebilir
Bunu bir gözden kaçırma değil bir tasarım yapan Cüzdan boyunca secp256k1 imzalama, işlem seri hâle getirme ya da kısmen imzalanmış işlem işleme araması hiçbir şey döndürüyor, aynı arama Solidus transfer kurucusunu bulurken. Başka hiçbir imzalama yolu yok ve arayüz numara yapmak yerine yüksek sesle reddediyor.
Bir görünümdür, bir cüzdan değil, ve gönderme akışı başarısız olarak bunu söylüyor.
Bir tanımlayıcıya ödeme yapmak bir dizin gerektiriyor ve bu bir merkezîleşme noktası
Buradaki bir tanımlayıcı değerden bağımsız bir çıpadır: tasarımı gereği bir ödeme adresi içermiyor.
Yani birinin tanımlayıcısına göndermek onu bir adrese çözümlemeyi gerektiriyor ve cüzdan bunu bu cüzdanın kayıtlı kullanıcılarıyla sınırlı bir dizin üzerinden yapıyor. Alıcı kayıtlı değilse, size onun adresini istemenizi söyleyen adlandırılmış bir hata alıyorsunuz.
Bu, aksi hâlde bağımlılıksız olan bir hikâyede gerçek bir bağımlılıktır. İmza kimseyi gerektirmiyor; adresleme gerektiriyor. Biri ödeme yolunu tamamen merkeziyetsiz diye tarif etmeden önce bilmeye değer.
İmzanın kapsamadıkları
Ücreti değil, ki onu yükün bildirmesi yerine zincir uyguluyor.
Alıcının kimliğini değil. Bir adres bir adrestir; imzadaki hiçbir şey ona kimin sahip olduğunu öne sürmüyor ve yanlış yazılmış bir adres, yanlış yere geçerli bir işlem üretiyor.
Niyetinizi değil. Bir imza, bir anahtarın bu baytları yetkilendirdiğini kanıtlıyor. Baytların kastettiğiniz şey olup olmadığı, gözden geçirme ekranının var oluş sebebidir.