TamgaNetwork
Tüm yazılar
Teknik·6 dk

Seçici ifşa ve sıfır-bilgi: veriyi değil, olguyu göster

Doğum tarihini vermeden 18 yaşından büyük olduğunu kanıtla. Daha az paylaşıp daha çok kanıtlamanın matematiği.

Modern dijital kimliğin en güçlü fikri aynı zamanda en yalın ifade edilenidir: bir doğrulayıcıya yalnızca ihtiyacı olanı ver, fazlasını değil. İki kriptografi katmanı bunu gerçek kılar: selective disclosure ve zero-knowledge ispatları.

Selective disclosure (SD-JWT)

Bir credential, claim’ler kümesidir. Issuer, ham değerleri değil, onların salted hash’lerini imzalar. Bir claim’i açmak için holder, o claim’in tuzunu (salt) ve değerini gösterir; doğrulayıcı hash’i yeniden hesaplayıp imzalı kümeyle karşılaştırır. Açılmayan claim’ler hiçbir şey sızdırmaz — salt onları geri-çevrilemez kılar.

salted-hash disclosure
for each claim c_i with random salt s_i:
    d_i = H( s_i || c_i )
issuer signs the set  D = { d_1, ..., d_n }

reveal claim i:  holder shows (s_i, c_i)
verify:          H(s_i||c_i) == d_i  AND  d_i in D  AND  Sig_issuer(D) ok

Zero-knowledge: değersiz bir olgu

Selective disclosure yine de açılan alanı tam gösterir. Zero-knowledge ispatları bir adım öteye gider: gizli bir değer üzerinde bir predicate kanıtlarsın. Klasik örnek — doğum tarihini açmadan “yaş ≥ 18” kanıtlamak — imzalı bir commitment üzerinde bir range proof’a dönüşür. Doğrulayıcı yalnızca bir boolean öğrenir.

predicate proof
issuer signs commitment  C = Commit(birth_date, r)
holder proves in zero knowledge:
    exists (birth_date, r):  C = Commit(...)  AND  today - birth_date >= 18y
verifier learns ONLY the boolean  (range proof: Bulletproofs / BBS+)

BBS+ imzalarıyla sunumlar aynı zamanda unlinkable hale gelir — iki doğrulayıcı aynı kişiyi gördüğünü anlayamaz. Bu primitifler yol haritamızda; olgunlaştıkça ve denetimden geçtikçe girer. Daha fazlası: Seçici ifşa ve SD-JWT.