İçeriğe geç
Tamga Wallet

Kavramlar

Seçici paylaşım: belgenin yalnız bir satırını göstermek

Seçici paylaşım, imzalı bir belgenin tek bir alanını, örneğin "öğrenci mi?" yanıtını göstermeni sağlar; geri kalanı gizli kalır, imza yine doğrulanır.

Yazan: Tamga Wallet ekibi5 dk okuma

Seçici paylaşım, imzalı bir belgenin yalnız bazı alanlarını gösterip geri kalanını gizlemektir; karşı taraf yine de gördüklerini kurumun imzaladığını doğrulayabilir. Tamga Wallet'taki öğrenci belgesiyle bir sinema adını, bölümünü, fakülteni ya da kayıt yılını görmeden "kayıtlı öğrenci: evet" bilgisini alabilir. Belgenin geri kalanı telefonunda kalır.

Bugün neden belgenin yalnız bir kısmını gösteremiyorum?

Kâğıtta ya da PDF'te belge tek parçadır. Bir satırı parmağınla kapatır ya da ekran görüntüsünü kırparsan karşı taraf geri kalanın gerçek olup olmadığını artık anlayamaz. Bu yüzden pratikte belgenin tamamı gider: öğrenci indirimi için sinema öğrenci numaranı, bölümünü, bazen doğum tarihini görür; oysa tek bir yanıta ihtiyacı vardı.

Dijital imzalı belgede de ilk bakışta benzer bir sorun var. İmza, imzalanan baytların tamamını kapsar. Tek bir karakteri değiştirir ya da çıkarırsan imza tutmaz. Seçici paylaşım, imzayı bozmadan alan çıkarabilmeyi sağlayan tekniktir.

Doğrulayıcı gerçekte ne görür?

Tamga Network'te üniversitelerin verdiği öğrenci belgesini ele alalım. Alanları arasında öğrencilik durumu, kayıt yılı, öğrenim düzeyi, program, alan kodu, fakülte, tahmini mezuniyet yılı ve is_enrolled adında bir alan daha vardır: basit bir evet ya da hayır.

Bu son alan tam da bu iş için var. Ağın eğitim kuralları bunu bir sinemayla anlatır: sinemanın üniversiteyi, bölümü ya da kayıt yılını bilmesine gerek yoktur; tek ihtiyacı "bu kişi şu an öğrenci mi?" sorusunun yanıtıdır. "Kayıtlı öğrenci" ayrı bir alan olduğu için yalnız onu paylaşabilirsin.

Sinemanın gördüğü
Örnek: sinema öğrenci belgesinden tek bir alan alır; diğer alanlar hiç gönderilmez.

Bazı bilgiler ise her zaman görünür; bunları bilmek iyi olur:

  • Belgeyi kimin verdiği. Kurumun kimliği açıkta gider; doğrulayıcı kimin imzasını denetleyeceğini böyle bilir. Yani sinema yalnız "bir öğrenci" değil, "bu üniversitenin bir öğrencisi" bilgisini alır.
  • Belgenin türü, ne zaman verildiği ve ne zamana kadar geçerli olduğu.
  • Telefonunun belgenin sana ait olduğunu kanıtlamak için kullandığı anahtarın açık kısmı. Tamga Wallet belgenin her kopyası için ayrı bir anahtar kullanır; bu değer seni bir doğrulayıcıdan ötekine izlemez: Bağlanamazlık.
  • İptal edilebilen belgelerde durum listesindeki yerin adresi.

İmza bozulmadan nasıl çalışıyor?

Fikrin adı tuzlu özet (salted hash). Ayrıntılı tarifi SD-JWT standardında (RFC 9901) yazılı, SD-JWT VC yazımız da bir adım derine iner; kısası şöyle:

  1. Kurum her alanı ayrı hazırlar. Gizlenebilecek her alan için alan adını ve değerini alır, 16 baytlık rastgele bir değer (tuz) ekler ve sonucun parmak izini (özetini) hesaplar.
  2. Yalnız parmak izlerini imzalar. İmzalı belgede değerler değil, parmak izlerinin listesi bulunur. Değerler belgenin yanında, her alan için ayrı küçük parçalar olarak durur; bunlara açıklama parçası (disclosure) denir.
  3. Cüzdanın bütün parçaları tutar. Bir paylaşımı onayladığında imzalı belgeyi ve yalnız seçtiğin alanların parçalarını gönderir. Bir alanı gizlemek, parçasını göndermemekten ibarettir; hiçbir şey yeniden imzalanmaz.
  4. Doğrulayıcı her parçayı denetler. Aldığı her parçanın parmak izini hesaplar ve imzalı listede arar. Oradaysa o alanı kurum imzalamıştır. Parçası gelmeyen alanlar, doğrulayıcının geri çeviremeyeceği parmak izleri olarak kalır.
Seçici paylaşım nasıl çalışır
Kurum parmak izlerini imzalar, cüzdan yalnız seçilen parçaları gönderir, doğrulayıcı onları eşleştirir.

Gizli alanları gizli tutan tuzdur. Tuz olmasaydı "is_enrolled: true" ya da bir doğum tarihinin parmak izi hep aynı olurdu; doğrulayıcı olası değerleri tek tek deneyerek gizli alanı tahmin edebilirdi. Her alan için yeni ve rastgele bir tuzla bu tahmin işe yaramaz.

Tek bir açıklama parçası çözüldüğünde şöyle görünür. Değerler örnektir, ağın kurallarının tarif ettiği biçimde hesaplanmıştır:

is_enrolled alanının açıklama parçası (örnek)JSON
{
  "disclosure": ["in0aF_dIW50H3VA1H6C9sQ", "is_enrolled", true],
  "sent_as": "WyJpbjBhRl9kSVc1MEgzVkExSDZDOXNRIiwgImlzX2Vucm9sbGVkIiwgdHJ1ZV0",
  "fingerprint_in_signed_document": "pUn9E1MBiJdd0gAM8Q72UUVkNbkQnqp3ny78_y3iwI0"
}

İlk satır tuz, alan adı ve değerdir. İkincisi aynı dizinin gönderilmek için kodlanmış hâlidir. Üçüncüsü onun SHA-256 parmak izidir; kurumun imzalı belgenin içine koyduğu budur. Doğrulayıcı üçüncüyü ikinciden yeniden hesaplar; tutarsa alan gerçektir.

Yüz yüze denetimde de aynı mı?

Fikir aynı, paket farklı. Tamga kimlik belgesi için, mobil sürücü belgelerinin biçimi olan ve belgeyi karşındaki okuyucuya göstermek için kurulan ISO mdoc biçimini (ISO/IEC 18013-5) de kullanır. Orada her veri ögesi kendi rastgele değeriyle saklanır, kurum bunların parmak izi listesini imzalar ve cüzdan yalnız senin onayladığın ögeleri verir. Bir yaş kontrolü yalnız age_over_18 alanını alıp başka hiçbir şey almayabilir.

Yaşta bir adım daha var. "18 yaş üstü" gibi bir alan yine imzalı bir belgeden gelir; doğrulayıcı imzalı bir "evet" alır. Tamga Wallet ise sıfır bilgi ispatıyla belgeyi hiç göndermeden "18 yaş üstü" olduğunu kanıtlayabilir. Android telefonlar bunu bugün yapıyor; ispatın henüz olmadığı iPhone'da, site kabul ediyorsa yalnız evet/hayır alanı gider.

Tamga Wallet'ta bu nasıl görünür?

Bir site ya da masa belge istediğinde onay ekranı alanları "Şu alanlar paylaşılacak — başka hiçbir şey gitmez" başlığı altında listeler. Telefon kilidinle onaylamadan önce isteyeni ve kayıtlı amacını görürsün.

Seçici paylaşımın işleyişinden birkaç ayrıntı çıkar:

  • İsteğe bağlı alanlar. Doğrulayıcı bir alanı isteğe bağlı işaretleyebilir ya da birkaç seçenekten birini isteyebilir. İsteğe bağlı olanı paylaşmadan bitirebilirsin: Seçenekli istekler ve eksik bilgi.
  • Sende olmayan alanlar. Doğrulayıcı belgende bulunmayan bir şey isterse cüzdan bunu söyler ve yerine hiçbir şey göndermez.
  • Fazla istek. Her doğrulayıcı isteyebileceği alanlarla kayıtlıdır. Fazlasını isterse cüzdan ayrı bir uyarı gösterir ve paylaş düğmesini birkaç saniye bekletir.
  • Tutarlılık. Aynı doğrulayıcı ve aynı belge türü için cüzdan paylaşılan alanları tutarlı tutar. Bir ziyaretten ötekine değişen alanlar neyin saklandığını ele verirdi.

Seçici paylaşım neyi yapamaz?

Yalnız kurumun gizlenebilir yaptığı alanları gizleyebilir ve yalnız kurumun belgeye koyduğu yanıtları gösterebilir. "Kayıtlı öğrenci" çalışır, çünkü üniversite onu ayrı bir alan olarak ekler; cüzdan verinden yeni bir evet/hayır yanıtı uyduramaz. Bir alan paylaşıldıktan sonra da artık doğrulayıcıdadır. Seçici paylaşım telefonundan neyin çıkacağına karar verir; doğrulayıcının sonra onunla ne yapacağına karışamaz. Doğrulayıcının aldığını silmesini istersen bunu Geçmiş'ten isteyebilirsin.

Sık sorulan sorular

Adımı gizleyip öğrenci belgemi yine gösterebilir miyim?

Evet, doğrulayıcı yalnız "kayıtlı öğrenci" alanını istiyorsa. Adın gönderilmez; doğrulayıcı üniversiteyi, belge türünü, geçerliliğini ve o tek alanı görür.

Doğrulayıcı gizli alanları çıkarabilir mi?

Hayır. Elinde yalnız rastgele tuzlarla üretilmiş parmak izleri vardır; bunlar geri çevrilemez, tahmin de edilemez.

Hangi alanların gizlenebileceğine kim karar verir?

Belge türünün Tamga Network şema kataloğundaki tanımı. Öğrenci belgesinde bütün içerik alanları gizlenebilir; belgeyi veren, tür, tarihler ve anahtar her zaman görünür.

Seçici paylaşım AB'nin cüzdan kurallarında var mı?

Evet. AB'nin dijital kimlik tüzüğü cüzdanların seçici paylaşımı desteklemesini şart koşar; Tamga'nın kullandığı iki biçim, SD-JWT VC ve ISO mdoc, AB cüzdan altyapısının biçimleridir.

Kaynaklar

Adım adım anlatım Rehber’de

Kurulumdan kayıp telefona kadar her şey, uygulamanın kendi ekranlarıyla.

Rehbere git

Tamga Wallet'ı indir

App Store ve Google Play'de. Diplomanı, öğrenci belgeni, biletini telefonunda taşı.

 Bütün yazılar