Vaulted'ın zero-knowledge şifrelemesini kendin doğrula
Güvenlik araçlarına kör güvenme — doğrula. Dört tarayıcı testi, kurulum yok, beş dakika.
60 saniyelik kontrol listesi
Önce bunu hızlıca tara. Aşağıdaki ayrıntılı kılavuz her adımı derinlemesine ele alıyor.
- 1
DevTools'u aç → Network sekmesi
Vaulted'da Cmd+Option+I (macOS) veya F12 (Windows/Linux) tuşlarına bas. Network sekmesine geç ve Fetch/XHR olarak filtrele.
- 2
Bir gizli bilgi oluştur ve POST'u incele
Tanınabilir bir canary dizisi gir (ör. CANARY-12345) ve Create'e tıkla. POST /api/secrets isteğini bul. Payload sekmesini aç — yalnızca şifreli metin (base64) ve iv göreceksin. Body'de canary'yi ara; orada değil.
- 3
Paylaşım linkini incele
Oluşturulan linke bak. Şifre çözme anahtarı # (URL fragment) işaretinden sonra yer alır. RFC 3986'ya göre tarayıcılar fragmentları hiçbir zaman sunucuya göndermez — ne istek satırlarında, ne başlıklarda ne de referrer'larda.
- 4
Şifre çözmenin istemci taraflı çalıştığını doğrula
Linki yeni bir sekmede aç. /api/secrets/[id] adresinden gelen GET yanıtı yalnızca şifreli metin döndürür. Sources panelinde crypto.subtle.decrypt'i ara — bu çağrı tarayıcında çalışır, sunucumuzda değil.
Ne doğruluyorsun
Vaulted'ın iddiası belirlidir: sunucu düz metnini ya da şifreleme anahtarını asla görmez. Bu dört gözlemlenebilir özelliğe indirgenebilir:
- Düz metin hiçbir ağ isteğinde görünmez.
- Şifreleme anahtarı hiçbir ağ isteğinde görünmez.
- URL fragmentı (anahtarın bulunduğu yer) sunucuya asla ulaşmaz.
- Yalnızca sunucu tarafındaki veriler gizli bilgiyi yeniden oluşturamaz.
Dördü de geçerliyse mimari yapısal olarak zero-knowledge'dır — pazarlama diline gerek yok.
Test 1 — Düz metin hiçbir zaman hat üzerinden geçmez
- vaulted.fyi adresini aç.
- DevTools'u aç ve Network sekmesine geç.
Fetch/XHRolarak filtrele. - Gizli bilgi alanına tanınabilir bir dizi gir — örneğin
CANARY-12345. - Create'a tıkla.
Tek bir POST isteği göreceksin: /api/secrets. Üzerine tıkla ve Payload sekmesine bak.
Body bir ciphertext alanı ve bir iv alanı içeriyor. Her ikisi de base64url kodlu blob'lar. Payload'da CANARY-12345 ara — orada değil. Düz metin, istek gönderilmeden önce tarayıcıda şifrelendi.
Daha kapsamlı olmak istersen ağ kısıtlamasını "Slow 3G" olarak ayarla ve tekrar dene. Şifreli metin hâlâ gürültü gibi görünür; düz metin yine hiçbir yerde değil.
Test 2 — Anahtar da hiçbir zaman hat üzerinden geçmez
Gizli bilgiyi oluşturduktan sonra Vaulted sana bir paylaşım linki gösterir. Şöyle görünür:
https://vaulted.fyi/s/abc123#dGhpcyBpcyBhIGtleQ
^^^^^^^^^^^^^^^^^^^^
encryption key (base64url)# işaretinden sonraki kısım URL fragmentıdır. RFC 3986'ya göre tarayıcılar fragmentları yerel olarak işler — HTTP istek satırlarında, başlıklarda ya da referrer'larda asla görünmezler.
Bunu kanıtlamak için:
- Paylaşım linkini kopyala.
- DevTools'un Network sekmesi açıkken yeni bir sekmede aç.
GET /s/abc123isteğini bul.- Headers sekmesine bak — tam istek URL'si, fragment yok.
- Request sekmesine bak — fragment yok.
- Bir sonraki sayfada
document.referrer'i kontrol et — fragment çıkarılmış.
Alıcının gizli bilgiyi çözmek için ihtiyaç duyduğu anahtar URL'deydi, ama tarayıcısında kaldı. Sunucu yalnızca GET /s/abc123 gördü, başka bir şey değil.
Test 3 — Sunucu tek başına şifreyi çözemez
Bir terminal aç ve gizli bilgiyi doğrudan curl ile al:
curl https://vaulted.fyi/api/secrets/abc123ciphertext ve iv içeren bir JSON alacaksın. Bu, gizli bilginin sunucu tarafındaki tüm durumu.
Şimdi bunu anlamlandırmaya çalış. URL fragmentındaki anahtar olmadan yapamazsın. Doğru şekilde üretilmiş rastgele bir anahtarla AES-256-GCM, tüm pratik amaçlar için rastgele gürültüden ayırt edilemez. Vaulted'ın sunucularından alınacak tam bir veritabanı dökümü tam da bunu verir — şifreli blob'lar ve meta veriler.
Bu, zero-knowledge'ın tam anlamıyla tanımıdır: sunucu okuyamadığı verileri depolar.
Test 4 — Şifreleme görebileceğin JavaScript'te gerçekleşir
Vaulted, Web Crypto API kullanır; bu bir tarayıcı primitifi — işi gizleyen karmaşık WASM ya da yerel modül yoktur. Şifrelemenin gerçekleştiğini izleyebilirsin.
- DevTools'ta Sources sekmesini aç.
crypto.subtle.encryptara (genel arama içinCmd+Option+Fkullan).crypto.subtle.encryptçağıran satıra breakpoint koy.- Yeni bir gizli bilgi oluşturmayı tetikle.
- Breakpoint tetiklenir. Argümanları incele: düz metni bir
Uint8Arrayolarak, AES-GCM anahtarını ve yeni rastgele bir IV'ü göreceksin. - Çağrının üzerinden geç. Sonuç, gönderilen şifreli metindir.
Artık düz metnin şifreli metne dönüştüğünü — tarayıcında, herhangi bir ağ isteğinden önce — izliyorsun. Verilerin gidebileceği başka bir yol yok.
Bunun ne kanıtladığı
- Tarayıcıdan düz metin çıkmaz. Test 1.
- Tarayıcıdan anahtar çıkmaz. Test 2.
- Sunucu depoladıklarıyla şifreyi çözemez. Test 3.
- Şifreleme gerçektir ve istemci taraflı gerçekleşir. Test 4.
İşte bu, beş dakikada çalışan bir üretim sisteminde gösterilen zero-knowledge iddiasının tamamıdır.
Bunun ne kanıtlamadığı
Doğrulama dürüst bir iştir — sınırları hakkında açık olmak önemlidir.
- Testler bu andaki davranışı kanıtlar. Gelecekteki bir kod değişikliği bu özelliği bozabilir. Sürekli güvence ihtiyacın varsa changelog'a abone ol ve testleri düzenli aralıklarla tekrar çalıştır.
- Kendi cihazına karşı koruma sağlamazlar. Bir keylogger ya da kötü niyetli tarayıcı eklentisi şifre çözümünden sonra düz metni okuyabilir. Bu, herhangi bir web uygulamasının kontrolü dışındadır.
- Çalıştırdığın JavaScript'in Vaulted'ın sunduğu JavaScript olduğunu varsayarlar. CDN'i ele geçiren hedefli bir saldırgan tek bir kullanıcıya farklı bir bundle sunabilir. Subresource Integrity ve tekrarlanabilir build'ler bunu hafifletir; tam ayrıntı için tehdit modelimize bak.
Daha derine in
Daha fazla araştırmak istersen:
- Tam kriptografik uygulama için zero-knowledge şifreleme derinlemesine incelememizi oku.
- AES-256-GCM'i adım adım izlemek için Encryption Playground'u dene.
- Sunucu taraflı şifrelemeyle karşılaştır ve hangi modelin tehdit modeline uyduğuna karar ver.
Bir güvenlik aracının en güçlü argümanı pazarlaması değildir. Onu parçalara ayırıp söylediklerini gerçekten yapıp yapmadığını doğrulayabilmen. Vaulted bunu yapabilmen için inşa edildi.