Bir şeyi kanıtlarken hiçbir detay açıklamamak mümkün mü?
Merhaba kodeyun.com ailesi!
Zero-Knowledge Proofs (ZKP), bir zamanlar sadece akademik kriptografi çevrelerinde konuşulan bir kavramken, 2026'da blockchain ötesinde kimlik doğrulama ve gizlilik teknolojilerinde ana akıma taşınıyor. Bu konuyu ele aldım.
Bir mağaradaki gizli tünel örneği klasiktir: İki giriş, bir çıkışta buluşan gizli bir tünel var. Birine "bu tünelin sırrını biliyorum" diyorsunuz ama sırrın kendisini (nasıl geçtiğinizi) açıklamadan kanıtlayabiliyorsunuz — karşı taraf sizi bir girişten gönderiyor, siz diğer girişten çıkıyorsunuz. Sırrı bilmeseydiniz bunu yapamazdınız.
Dijital dünyada ZKP: "18 yaşından büyüğüm" bilgisini, gerçek doğum tarihinizi hiç açıklamadan matematiksel olarak kanıtlayabilmenizi sağlıyor.
Python:
# Basitleştirilmiş bir ZK kanıt mantığı örneği
# (Gerçek ZKP kütüphaneleri çok daha karmaşık matematik kullanıyor —
# eliptik eğri kriptografisi, polinom taahhütleri gibi)
import hashlib
import random
def basit_zk_kanit_ornegi():
"""
'Belirli bir sayının karekökünü biliyorum' iddiasını,
o kareköke değinmeden kanıtlama mantığının basitleştirilmiş versiyonu
"""
# Gizli değer (prover'ın bildiği ama açıklamak istemediği)
gizli_sayi = 7
herkese_acik_kare = gizli_sayi ** 2 # 49 — bu herkese açık
print(f"📢 Herkese açık bilgi: X² = {herkese_acik_kare}")
print(f"🔒 Kanıtlayıcı, X'i açıklamadan onu bildiğini kanıtlayacak\n")
# Basitleştirilmiş 'commitment' aşaması
rastgele_r = random.randint(1, 100)
commitment = hashlib.sha256(str(rastgele_r).encode()).hexdigest()[:16]
print(f"1️⃣ Kanıtlayıcı bir 'taahhüt' (commitment) gönderiyor: {commitment}")
print(f" (Bu, gizli sayıyı henüz açıklamıyor)")
# Doğrulayıcının rastgele bir 'meydan okuma' (challenge) göndermesi
meydan_okuma = random.choice([0, 1])
print(f"\n2️⃣ Doğrulayıcı rastgele bir meydan okuma gönderiyor: {meydan_okuma}")
# Kanıtlayıcının yanıtı — gizli değeri HALA tam açıklamadan
if meydan_okuma == 0:
yanit = rastgele_r
print(f"3️⃣ Kanıtlayıcı taahhüdün açılımını gösteriyor: {yanit}")
else:
yanit = (rastgele_r * gizli_sayi) % 1000
print(f"3️⃣ Kanıtlayıcı, gizli değerle ilişkili bir hesaplama gösteriyor")
print(f"\n✅ Bu protokol birçok kez tekrarlanarak, kanıtlayıcının")
print(f" sahtekarlık yapma ihtimali istatistiksel olarak SIFIRA yaklaşır")
print(f" — gizli sayı ASLA doğrudan açıklanmadan!")
basit_zk_kanit_ornegi()
Gizlilik odaklı uygulama geliştiren herkes için ZKP, "ya tam şeffaflık ya tam gizlilik" ikileminin ötesinde üçüncü bir yol sunuyor — doğrulanabilir ama gizli kalan bilgi. Bu, özellikle KVKK/GDPR gibi düzenlemelerin sıkılaştığı bir dönemde stratejik önem taşıyan bir teknoloji alanı.
Bu teknolojiyle ilgili deneyim veya görüşleriniz var mı?