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
forwardiç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ızcadidcomm/v2duyurur. 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.