Güven Merkezi · Teknik rapor
Güvenlik teknik raporu
MGVault'un kriptografik tasarımının okunabilir anlatımı: anahtarlarınız nasıl türetilir, paylaşım nasıl güvenilir kalır, sunucuya neden körü körüne güvenmeniz gerekmez ve tasarım nerede sınırlara dayanır.
01
Özet
MGVault; şifreleri, 2FA (TOTP) sırlarını ve güvenli notları cihazda şifreleyen bir şifre yöneticisidir. Şifreleme ve şifre çözme yalnızca istemcide, yani web kasasında ve tarayıcı eklentisinde yapılır. Sunucu şifreli veriyi, sarılı anahtarları ve hizmetin çalışması için gereken üst veriyi saklar.
Tasarımın iki hedefi vardır: sunucu tamamen ele geçirilse bile kasa içeriği okunamamalı ve ekip paylaşımında sunucu üyelerin arasına sessizce bir anahtar sokamamalıdır. Bu rapor bu hedeflere nasıl ulaşıldığını ve nerede ulaşılamadığını anlatır.
Bayt düzeyindeki biçim, dondurulmuş test vektörleriyle birlikte iç belgelerimizde tanımlıdır; web kasası ve eklenti aynı kripto paketini kullanır. Bu rapor bağımsız bir denetim raporu değildir: bağımsız üçüncü taraf denetimi ve sızma testi planlanmaktadır, henüz yapılmamıştır.
02
Yapı taşları
| Amaç | Yapı taşı | Parametreler |
|---|---|---|
| Ana paroladan anahtar türetme | Argon2id | m = 64 MiB · t = 3 · p = 1 |
| Kayıtları ve anahtarları şifreleme | XChaCha20-Poly1305 | 256-bit · 192-bit nonce |
| Koleksiyon anahtarlarını üyelerle paylaşma | X25519 sealed box | crypto_box_seal |
| Paylaşılan anahtarları ve anahtar epoch'larını imzalama | Ed25519 | RFC 8032 |
| Salt ve anahtar parmak izleri | BLAKE2b | RFC 7693 |
Tüm yapı taşları libsodium'dan (WebAssembly) gelir. Kripto paketi RFC 9106 (Argon2id), RFC 7693 (BLAKE2b), RFC 7748 (X25519), RFC 8032 (Ed25519) ve XChaCha20-Poly1305 test vektörleriyle, ayrıca libsodium kullanmayan bağımsız bir yeniden yazımla çapraz olarak sınanır.
03
Anahtar hiyerarşisi
Her şey ana parolanızdan başlar ve hiçbir şifre çözme anahtarı cihazınızdan düz hâlde çıkmaz.
- 1
Ana parola → Argon2id
Ana parola, e-posta adresinizden BLAKE2b ile türetilen bir salt ile Argon2id'den geçirilir (varsayılan 64 MiB bellek, 3 tur). Çıkan 64 baytın ilk yarısı giriş anahtarı, ikinci yarısı anahtar şifreleme anahtarıdır (KEK). Parametreler hesapta saklanır; istemci güvenli alt sınırın altındaki değerleri reddeder ve aynı e-posta için gördüğü en güçlü parametreyi hatırlar. Böylece sunucu anahtar türetmeyi zayıflatamaz.
- 2
Giriş anahtarı sunucuya, KEK cihazda kalır
Sunucuya yalnızca giriş anahtarı gider; sunucu onu bir kez daha Argon2id ile hash'leyerek saklar. Bu hash'ten KEK'e veya ana parolaya ulaşılamaz. KEK cihazınızdan hiç çıkmaz.
- 3
Hesap anahtarı
Kayıt sırasında cihazınız rastgele 256 bitlik bir hesap anahtarı üretir ve onu KEK ile XChaCha20-Poly1305 kullanarak sarar. Ana parolanızı değiştirdiğinizde yalnızca bu sarma yenilenir; kasanın yeniden şifrelenmesi gerekmez.
- 4
Kimlik anahtarları: X25519 ve Ed25519
Her hesabın, kendisiyle paylaşılan anahtarları açmak için bir X25519 anahtar çifti ve kendi sardığı anahtarları imzalamak için bir Ed25519 anahtar çifti vardır. Özel anahtarlar hesap anahtarıyla şifrelenir, genel anahtarlar sunucuda düz durur. Kilit açılırken istemci, özel anahtardan türettiği genel anahtarın sunucunun verdiğiyle eşleştiğini doğrular.
- 5
Kasa (koleksiyon) anahtarları
Kişisel veya paylaşılan her kasa rastgele bir anahtar kullanır. Bu anahtar her üye için, o üyenin X25519 genel anahtarına sealed box ile ayrı ayrı sarılır. Paylaşılan kasaların adları da bu anahtarla şifrelenir.
- 6
Kayıtlar
Her kayıt (giriş bilgisi, 2FA sırrı, not) kasa anahtarıyla XChaCha20-Poly1305 kullanılarak şifrelenir. Ek doğrulanmış veri (AAD) kayıt kimliğini, kasayı ve sürümü içerir: şifreli bir kayıt fark edilmeden başka bir kayda veya kasaya taşınamaz, eski bir sürümü güncel diye sunulamaz. Düz metin 64 baytlık bloklara doldurulur; sunucu şifre gibi alanların tam uzunluğunu öğrenemez.
- 7
Kurtarma kodu (Emergency Kit)
Kayıtta 256 bit rastgele bir kurtarma kodu üretilir (56 karakter). Koddan BLAKE2b ile iki anahtar türetilir: biri sunucudaki doğrulama içindir (sunucu onu Argon2id ile hash'ler), diğeri hesap anahtarının ikinci bir sarmasını açar. Kod yalnızca size gösterilir, hiçbir yere kaydedilmez ve kullanıldığında yenilenir.
05
Anahtarlara güven: parmak izleri ve sabitleme
Genel anahtar dizini sunucudan gelir. Bu yüzden her cihaz, kimin anahtarına güvendiğini kendisi hatırlar.
Yalnızca görünür adımlarla sabitleme
Cihazınız, kuruluştaki kişilerin anahtarlarını yalnızca sizin gördüğünüz adımlarla sabitler: parmak izlerini görerek bir davetliyi onaylamanız, parmak izini karşılaştırıp elle doğrulamanız veya cihazın o kuruluşta hiç anahtarı yokken gelen ilk sarmanın kalıcı bir bildirimle kabulü. Doğrulama sırasında sessizce hiçbir anahtar sabitlenmez.
Yalnızca sabitlenmiş imzacı
Bir sarma ancak imzalayan kişi bu cihazda sabitlenmiş ve iptal edilmemişse kabul edilir. Aksi hâlde uyarı gösterilir, anahtar kullanılmaz ve kasaya yazılamaz. Sunucunun uydurduğu bir kullanıcı veya değiştirdiği bir anahtar bu yüzden kabul görmez.
Anahtar değişince size sorulur
Sabitlenmiş birinin anahtarı değişirse cihaz sizi uyarır ve siz onaylayana kadar o kişinin yeni sarmalarını kabul etmez.
Çıkarılan kişinin imzası iptal edilir
Cihaz bir üyenin kuruluştan çıkarıldığını gördüğünde onun sabitlemesini iptal eder; o kişinin sonradan imzaladığı yeni epoch'lar reddedilir.
Parmak izini bant dışında karşılaştırın
Parmak izleri 16 grup hâlinde gösterilen onaltılık karakterlerdir. Telefonda veya yüz yüze karşılaştırmak, ilk temastaki güveni doğrulanmış güvene çevirir.
06
Tehdit modeli
Neye karşı koruduğumuzu ve neyi kapsam dışında bıraktığımızı açıkça yazıyoruz.
| Tehdit | Sonuç ve önlem |
|---|---|
| Veritabanı veya yedek sızıntısı | Saldırgan yalnızca şifreli kayıtları, sarılı anahtarları ve giriş anahtarının hash'ini ele geçirir. Kalan risk ana parolanın çevrimdışı tahminidir; Argon2id bunu pahalı kılar. |
| Kötü niyetli veya ele geçirilmiş sunucu (saklanan veri) | Kasa içeriğini okuyamaz. Kayıtları başka bir kayda veya kasaya taşıyamaz, eski sürüme döndüremez (AAD). |
| Sunucunun paylaşıma kendi anahtarını sokması | Sarmalar imzalıdır ve yalnızca sabitlenmiş imzacıdan kabul edilir. |
| Sunucunun eski bir anahtarı güncel diye sunması | Epoch istemcide monoton izlenir; eski epoch ile yazılmaz. |
| Sunucunun sahte üye veya sahte alıcı göstermesi | Anahtar yalnızca sabitlenmiş alıcılara sarılır; değilse işlem durur ve parmak izi karşılaştırması istenir. |
| Çıkarılan bir yöneticinin sunucuyla iş birliği | Çıkarılma gözlendiğinde sabitlemesi iptal edilir; imzaladığı yeni epoch'lar kabul edilmez. |
| Ağdaki saldırgan | TLS ve HSTS; bunların altında ayrıca uçtan uca şifreleme. |
| Çalınmış oturum | Kısa ömürlü erişim jetonları, her kullanımda değişen yenileme jetonları, uzaktan oturum kapatma, otomatik kilit; hassas işlemlerde ana parola ve ikinci faktör. |
Kapsam dışı
- Kötü amaçlı yazılım bulaşmış veya ele geçirilmiş bir cihaz: kasa açıkken anahtarlar o cihazın belleğindedir.
- Ana parolanızı ve ikinci faktörünüzü bilen ya da kurtarma kodunuzu ele geçiren biri.
- Çalışan sunucuyu ele geçirip web kasasına değiştirilmiş kod sunan bir saldırgan (aşağıdaki sınırlara bakın).
07
Bilinen sınırlar
Tasarımın bugünkü dürüst sınırları:
- İlk temas sunucu dizinine dayanır. Sealed box tek başına kimin sardığını kanıtlamaz; bu yüzden her sarma Ed25519 ile imzalanır. Ancak genel anahtar dizini sunucudan gelir: bir cihazın bir kuruluştaki ilk sarması sunucunun seçtiği bir imzacıdan gelebilir. Bildirim parmak izini gösterir ama bunu engellemez. Gerçek bir anahtar şeffaflığı (key transparency) henüz yoktur; parmak izlerini bant dışında karşılaştırmanızı öneririz.
- Sabitleme cihaza özgüdür. Yeni bir cihaz kuruluşta kimseyi tanımaz; diğer üyeleri yeniden doğrulamanız gerekir. İptal, cihazın çıkarılmayı gözlemesine bağlıdır.
- Bellek silme en iyi çabadır. Anahtarları kullandıktan sonra JavaScript'in izin verdiği ölçüde bellekten sileriz; ancak tarayıcı ve çöp toplayıcı silemediğimiz kopyalar tutabilir.
- Çıkarılan üye gördüğünü bilir. Anahtar döndürme yeni kayıtları korur. Ayrılan kişinin daha önce gördüğü şifreler ve 2FA sırları siz değiştirene kadar geçerli kalır; döndürme kontrol listesi bu yüzden vardır.
- Okuyabilen kopyalayabilir. Bir kaydı okuma izni olan kişi onu kopyalayabilir veya bir yere yazabilir; şifreleme bunu engelleyemez. Kuruluş politikası paylaşılan kayıtların kişisel kasaya kopyalanmasını veya taşınmasını kapatabilir, ama okunabilen bir değerin elle kopyalanmasını hiçbir şey engelleyemez.
- Kopyalama ve otomatik doldurma olayları doğrulanamaz. Bu denetim olaylarını üyelerin uygulamaları bildirir; sunucu bunları doğrulayamaz ve kayıtta ayrıca işaretlenir.
- Kurtarma kodu tam erişim demektir. Kurtarma kodunuzu ve e-postanızı bilen biri kasanızı açabilir, ana parolanızı sıfırlayabilir ve iki adımlı girişi kaldırabilir. Bu olduğunda tüm oturumlar kapanır ve güvenlik e-postası gönderilir. Kodu çevrimdışı ve güvenli bir yerde saklayın.
- Giriş için kullanılan TOTP sırrı sunucudadır. Girişteki ikinci adım kodunu sunucu doğrulamak zorunda olduğu için o sır sunucuda şifreli saklanır: veritabanı ve yedek sızıntısına karşı korunur, çalışan sunucunun ele geçirilmesine karşı korunmaz. Kasanızda sakladığınız 2FA sırları bundan etkilenmez; onlar uçtan uca şifrelidir.
- Web kasası kodunu sunucudan yükler. Tarayıcıdaki her web uygulaması gibi web kasası da her açılışta kodunu sunucumuzdan indirir; sunucuyu ele geçiren biri teoride değiştirilmiş kod sunabilir. Sıkı CSP ve üçüncü taraf betik yasağı bu yüzeyi daraltır. Tarayıcı eklentisi ise kodunu kurulumla birlikte taşır ve uzaktan kod yüklemez.
- Üst veri görünür. Sunucu e-posta adresinizi, kuruluş adlarını ve üyelikleri, kayıtların sayısını, yaklaşık boyutlarını ve zaman damgalarını görür.
- Ana parolanızın gücü önemlidir. Kısa veya başka yerde kullanılmış bir ana parola, şifreli veriyi ele geçiren biri tarafından çevrimdışı tahmin edilebilir.
08
Testler ve doğrulama
Kripto paketi standart test vektörleriyle ve bağımsız bir yeniden yazımla sınanır. Biçim değişirse sürüm numarası artar; eski vektörler, eski verilerin okunabilmesi için dondurulmuş kalır.
Tasarım ve kod odaklı iç güvenlik incelemelerinden geçer. Her bulgu, düzeltmeden önce başarısız olan bir gerileme testiyle güvenceye alınır. Bağımsız üçüncü taraf güvenlik denetimi ve sızma testi planlanmaktadır; henüz yapılmamıştır.
Hemen başlayın
Kasanızı bir dakikadan kısa sürede oluşturun
Kişisel kullanım ücretsiz. Anahtarlarınız cihazınızda — şu anda, tarayıcınızda — oluşturulur.