SolidusIdentity

Paylaş'a Dokunduğunuzda Ne Olur: Anahtar Bağlama JWT'si

Burada tarif edilen bağlanamazlık uygulaması denetlenmemiştir.

Cihazınızdan gerçekte ne çıkıyor

Bir SD-JWT sunumu, tilde ile ayrılmış bölümlerden oluşan tek bir dizgidir: verenin imzaladığı kimlik bilgisi, sonra açıklamayı seçtiğiniz tek tek açıklamalar ve doğrulayıcı bir tane istediğinde anahtar bağlama jetonu olan son bir bölüm.

O son bölüm sıradan bir üç parçalı JWT'dir. Onu herhangi bir JOSE aracıyla çözebilirsiniz. Solidus yazılımı gerekmez ve onu tarif eden bir metne güvenmenizdense o şekilde kontrol etmenizi tercih ederiz.

$ npm i @solidus-network/sdk        # 0.6.3
# call presentSdJwtVc, split the compact result on '~',
# take the FINAL segment, and decode it as a normal JWT.

Yükü tam olarak dört iddia taşır:

  • aud, bu sunumun kimin için olduğu. Doğrulayıcının tanımlayıcısı.
  • nonce, doğrulayıcının verdiği taze, tek kullanımlık bir değer.
  • iat, ne zaman imzalandığı.
  • sd_hash, bu jetonu gönderdiğiniz açıklamaların tam kümesine bağlayan bir özet.

Dört iddia ve her biri belirli bir iş yapıyor. aud, bir sunumun başka bir doğrulayıcıda yeniden oynatılmasını durdurur. nonce, onun aynı doğrulayıcıda daha sonra yeniden oynatılmasını durdurur. sd_hash, birinin geçerli jetonunuzu alıp farklı, daha geniş bir açıklama kümesine iliştirmesini durdurur.

Herhangi birini çıkarın, belirli bir saldırı geri gelir. Yükün küçük olmasının sebebi bitmemiş olması değil budur.

Görmenizi istediğimiz tasarım seçimi

SDK'mız, bir doğrulayıcı bir tane istediğinde her zaman bir anahtar bağlama jetonu üretir, yani beklenen bir hedef kitle, bir nonce ya da ikisini birden vererek. Jetonun mevcut olup kontrol edilmediği kısmi bir kip yok. Sun ve yok say, bütün bir güvenlik açığı sınıfıdır ve buradan erişilebilir değildir.

Ve bize bağlı olmayan kısım

Bir doğrulayıcı ne beklenen bir hedef kitle ne de beklenen bir nonce verirse, sunum hiçbir anahtar bağlama jetonu olmadan kabul edilir. Hamiline yazılı bir sunum. Paketin kendi belgelendirmesi bunu aynen söylüyor: böyle sunumlar "aud/nonce olmadan Phase-1 doğrulama yolunda kalır."

Yani bağlama, ancak doğrulayıcının dayatmayı seçtiği kadar katıdır ve hiçbir şey istemeyen bir doğrulayıcı, bir kopyasını tutan herkesin sunabileceği bir kimlik bilgisi alır.

Bunu esnek bir entegrasyon seçeneği diye tarif etmeyeceğiz. Yazılımımızın izin verdiği en zayıf yapılandırmadır, daha fazla değil daha az kod yazarak ulaşılır ve kasten aksini seçmemiş bir dayanan taraf muhtemelen onun içindedir.

Entegre ediyorsanız: her sunumda taze bir nonce ve beklenen bir hedef kitle verin. Nonce'u kendiniz üretin, bir kez kullanın ve onu geri taşımayan her şeyi reddedin.

Bunun kanıtladıkları ve kanıtlamadıkları

Kanıtlar: sunanın, kimlik bilgisine bağlanmış özel anahtarı, bu anda, bu doğrulayıcı için, tam olarak bu açıklamalar üzerinde denetlediğini.

Kanıtlamaz:

  • Bağlanamazlık. Bir anahtar bağlama jetonu her seferinde aynı anahtarla imzalanır; notlarını karşılaştıran iki doğrulayıcı onun üzerinden eşleştirebilir. Gereksinim bağlanamaz sunumsa, bu bkz. taşıyıcı bağlaması.
  • İddianın doğruluğu. Hiçbir imza kontrolü verenin haklı olduğunu ortaya koymaz.
  • Doğrulayıcının hiçbir şey saklamadığı. Başarılı bir sunumdan sonra bir dayanan tarafın ne tuttuğu onun işidir, protokolün sınırladığı bir şey değil. Burada atıf yapılan BBS+ uygulaması denetlenmemiştir.

Bir uygulama notu, çünkü bu sayfa kod okuyanlar için

Bu jetonu doğrulayan sıkıştırılmış JWS ayrıştırması elle yazılmıştır ve yayımlanmış paketin içindedir, dist/sdjwt/verify.js, kurduğunuz arşivde sevk edilir. Bir bağımlılığın arkasında gizli değildir, ki bu, umursayan herkes tarafından okunabileceği ve saldırılabileceği anlamına gelir.

Bu kasıtlı bir takastır ve iki tarafı da keser: güvenlik açısından kritik bir biçimin elle yazılmış ayrıştırması, tam olarak bir denetimin incelemek için var olduğu türden bir koddur ve hiçbir denetim onu incelemedi.

Okumaya devam edin

Paylaş'a Dokunduğunuzda Ne Olur: Anahtar Bağlama JWT'si · Solidus — Solidus Identity