Forward mesajı ve yönlendirme anahtarları

Bu, bir göndericinin bir alıcıya bir aracı üzerinden, aracının içyapısı hakkında hiçbir şey öğrenmeden ve aracının mesaj hakkında hiçbir şey öğrenmeden teslimat yapmasını sağlayan mekanizmadır. DIDComm'un aracılığı çalışır kılan parçasıdır ve tek bir fikirdir: zarf içinde zarf.

Yönlendirme anahtarları: bir DID belgesindeki talimat

Bir ajan DID belgesini yayımladığında, DIDComm hizmet girdisi serviceEndpoint ile birlikte routingKeys taşıyabilir. Birlikte şunu söylerler:

Bana doğrudan ulaşmaya çalışma. Benim için şifrele, sonra bunu bu yönlendirme anahtarına adreslenmiş bir forward içine sar ve bu uç noktaya gönder.

Solidus Relay'in kendi daveti, bir muhatabın kullanacağı çifti tam olarak gösterir:

curl -s https://relay.solidus.network/invite \
  | jq '.services[0].serviceEndpoint | {uri, routingKeys}'

Bu, https://relay.solidus.network/didcomm uç noktasını ve aracının did:key değerini içeren bir routingKeys dizisini döndürür.

Bu bir did:keydir, bir did:solidus değil; kendi kendine yeterli, çözümlenecek bir şey yok ve zincire demirlenmemiş. Burada açıkça söylenmiştir, çünkü bir yönlendirme anahtarı, yalnızca pazarlamayı okumuş birinin zincir demirlemesi bekleyeceği tam olarak o yerdir. Bkz. bir aracı için did:key ve did:solidus ve zincire demirlenmiş yönlendirme çözümlemesi.

İki zarf

İç zarf, göndericiden alıcıya. Alice asıl mesajı Bob için şifreler. Onu yalnızca Bob'un anahtarları açar. Aracı buna taraf değildir ve hiçbir zaman taraf hâline gelmez.

Dış zarf, göndericiden aracıya. Alice o şifreli metni, aracı için şifrelenmiş bir forward mesajının içine sarar; gövdesi özünde şunu söyler: ekteki bloğu X yönlendirme anahtarına teslim et.

Aracı dış zarfı açar, bir hedef okur, iç bloğu kuyruğa alır. Yapabileceğinin tamamı budur. Uslu olduğu için değil, iç zarfı açan hiçbir anahtar tutmadığı için: özellik yapısaldır ve yapısal garantiler kimsenin politikasına bağlı değildir.

Alice                          Mediator                        Bob
  │                                │                            │
  │ forward{ to: routingKey,       │                            │
  │          attach: E_bob(msg) }  │                            │
  ├───────────────────────────────►│  opens OUTER only          │
  │                                │  queues E_bob(msg)         │
  │                                │◄──── delivery-request ─────┤
  │                                ├────── delivery ───────────►│  opens INNER

Zincirleme neden önemli

forward iç içe geçebilir. İki aracının arkasındaki bir alıcı iki yönlendirme anahtarı yayımlar ve gönderici iki kez sarar; her sıçrama tam olarak bir katman soyar ve yalnızca bir sonraki sıçramayı öğrenir.

Bir aracıyı güvenilen değil değiştirilebilir kılan şey budur: ilişkide uzun vadeli bir konum tutmaz ve onu değiştirmek bir yönlendirme anahtarını yeniden yayımlamak demektir.

Gönderici ne öğrenir, ne öğrenmez

Gönderici aracının uç noktasını ve yönlendirme anahtarını zorunlu olarak öğrenir, çünkü oraya gönderim yapması gerekir. Alıcının gerçek konumunu, bağlantı takvimini ya da alıcının çevrimiçi olup olmadığını öğrenmez. Eşzamansızlık her iki yönde de korunur.

Aracı ne öğrenir, ne öğrenmez

Hedef yönlendirme anahtarını, zarf boyutunu ve varış zamanını öğrenir. Mesajı öğrenmez. "Okuyamaz" ile "hiçbir şey öğrenmez"in karıştırıldığı nokta burasıdır ve ikisi aynı şey değildir: tam sayım bir aracının görebildikleri ve göremedikleri sayfasındadır.

Harekete geçmeye değer pratik sonuç: yönlendirme anahtarı bir aracının gördüğü ilişkilendirme tutamağı olduğundan, muhatap başına ayrı bir yönlendirme anahtarı kullanmak elinizdeki en ucuz mahremiyet iyileştirmesidir. Bkz. ikili DID.

Arıza biçimleri

  • Yönlendirme anahtarı aracının anahtar listesinde değil → hiçbir şey kuyruğa alınmaz. Önce anahtar listesini kontrol edin; kaybolmuş gibi görünen postanın en yaygın sebebi budur. Bkz. Coordinate Mediation 2.0.
  • Bayat DID belgesi → muhataplar sizin ayrıldığınız bir aracıya göndermeye devam eder. Çözüm yeniden yayımlamaktır ve yayılma anlık değildir.
  • Yanlış accept → Solidus Relay yalnızca didcomm/v2 duyurur. Bir v1 ajanı birlikte çalışmaz; bkz. DIDComm v2 ve v1.

Uygulama notu

Bir DIDComm v2 kütüphanesi kullanın. forward sarma, anahtar anlaşması ve iç içe geçirme, elle yazılmış bir uygulamanın sessizce başarısız olduğu tam olarak o yerlerdir; iyi görünen ve hiç kimse için çözülmeyen zarflar üretir.

Ve süregelen çekince, çünkü bu sayfa çalıştırdığımız bir protokolü tarif ediyor: Solidus Relay forward yönlendirmesini uygular ve didcomm/v2 duyurur. Bağımsız bir DIDComm uygunluk paketine karşı çalıştırılmamıştır, dolayısıyla iddia "uygular"dır, "uygundur" değil. Belirli bir ajanla katı birlikte çalışabilirlik sizin için önemliyse, ona bağımlı olmadan önce test edin.

Okumaya devam edin

Forward mesajı ve yönlendirme anahtarları · Solidus