5 dakikalık denetim

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. 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. 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. 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. 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:

  1. Düz metin hiçbir ağ isteğinde görünmez.
  2. Şifreleme anahtarı hiçbir ağ isteğinde görünmez.
  3. URL fragmentı (anahtarın bulunduğu yer) sunucuya asla ulaşmaz.
  4. 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 1Düz metin hiçbir zaman hat üzerinden geçmez

  1. vaulted.fyi adresini aç.
  2. DevTools'u aç ve Network sekmesine geç. Fetch/XHR olarak filtrele.
  3. Gizli bilgi alanına tanınabilir bir dizi gir — örneğin CANARY-12345.
  4. 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 2Anahtar 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:

  1. Paylaşım linkini kopyala.
  2. DevTools'un Network sekmesi açıkken yeni bir sekmede aç.
  3. GET /s/abc123 isteğini bul.
  4. Headers sekmesine bak — tam istek URL'si, fragment yok.
  5. Request sekmesine bak — fragment yok.
  6. 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 3Sunucu tek başına şifreyi çözemez

Bir terminal aç ve gizli bilgiyi doğrudan curl ile al:

curl https://vaulted.fyi/api/secrets/abc123

ciphertext 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.

  1. DevTools'ta Sources sekmesini aç.
  2. crypto.subtle.encrypt ara (genel arama için Cmd+Option+F kullan).
  3. crypto.subtle.encrypt çağıran satıra breakpoint koy.
  4. Yeni bir gizli bilgi oluşturmayı tetikle.
  5. Breakpoint tetiklenir. Argümanları incele: düz metni bir Uint8Array olarak, AES-GCM anahtarını ve yeni rastgele bir IV'ü göreceksin.
  6. Ç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:

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.

Sık sorulan sorular

Soruların var ya da bir şeyler yanlış mı gözüküyor? [email protected] adresine yaz — sorumlu ifşa politikamızı yayınlıyoruz ve 48 saat içinde yanıt veriyoruz.