Bu sayfa bir çeviridir. İngilizce sürümden farklı olduğu durumlarda geçerli olan İngilizce sürümdür. İngilizce sürüm
Verileriniz nasıl korunuyor
Sizden bize güvenmenizi istemiyoruz. Bu sayfa tam olarak neyin şifrelendiğini, sunucumuzun neyi görüp neyi göremediğini ve her iddiayı kendiniz nasıl doğrulayabileceğinizi açıklıyor.
Bir dakikada özet
- Sunucularınız, kimlik bilgileriniz, anahtarlarınız ve notlarınız cihazınızda AES-256-GCM ile şifrelenmiş tek bir dosyada tutulur. Yalnızca bu cihaza ait birkaç seçim, örneğin uygulamanın görünümü ve bir RDP sunucusuyla paylaşılan bir klasör, uygulamanın ayarlarında şifrelenmeden tutulur ve hiçbir zaman eşitlenmez.
- Anahtar, profil parolanızdan Argon2id ile türetilir. Argon2id, tahmin denemelerini maliyetli kılmak için bilerek yavaş çalışan bir yöntemdir. Parola hiçbir zaman saklanmaz ve hiçbir yere gönderilmez.
- Eşitlemeyi açarsanız her öğe, yüklenmeden önce cihazınızda şifrelenir. Sunucu, şifresini çözemediği verileri saklar.
- Ancak sunucu, verilerinizin dışarıdan görünen kısmını görür: e-posta adresinizi, ne zaman ve hangi IP adresinden eşitleme yaptığınızı, her türden kaç öğeniz olduğunu ve bunların ne kadar büyük olduğunu, profil adlarınızı; paylaşılan profillerde de paylaşım adlarını ve üyelerin e-posta adreslerini.
- Uygulamada reklam, analitik ya da çökme raporlama yoktur.
Sunucunun okuyamadıkları
- Öğelerinizin içeriği: adlar, adresler, portlar, kullanıcı adları, parolalar, özel anahtarlar ve bunların parolaları, tüneller, notlar, komutlar, klasör adları
- Hangi kimlik bilgisinin ya da anahtarın hangi sunucuya ait olduğu
- Bir öğeyi kimin değiştirdiği
- Profil parolanız, paylaşım parolanız ve profillerinizi açan anahtarlar
Sunucunun görebildikleri
- E-posta adresiniz ve giriş yaptığınızda hesap parolanız (sunucu, parolanın yalnızca bcrypt hash'ini saklar)
- Giriş ve eşitlemelerin IP adresi ve zamanı
- Bir profilde her türden kaç öğe olduğu, öğelerin boyutları, her birinin ne zaman ve hangi cihaz (rastgele bir ID) tarafından değiştirildiği
- Profil adlarınız
- Paylaşılan profillerde: paylaşım adları, üyelerin e-posta adresleri ve rolleri
Eşitleme sırasında neler olur
1. Cihazınızda
Her profil tek bir dosyadır. Dosyanın içinde sunucularınızı, kimlik bilgilerinizi, SSH anahtarlarınızı, notlarınızı ve ayarlarınızı tutan küçük bir veritabanı vardır. Veritabanının tamamı önce sıkıştırılır, sonra AES-256-GCM ile şifrelenir. Dosya her kaydedildiğinde yeni ve rastgele bir nonce kullanılır. Dosya önce geçici bir kopyaya yazılır; böylece bir çökme geride yarım kalmış bir dosya bırakamaz.
Anahtar, profil parolanızdan Argon2id ile türetilir; bunun için 64 MiB bellek, 3 geçiş, 4 şerit (lane) ve her profile özel rastgele bir tuz (salt) kullanılır. Bu ayarlar uygulamanın içinde sabittir; bu yüzden değiştirilmiş bir dosya onları zayıflatamaz.
Parola hiçbir zaman diske yazılmaz ve hiçbir yere gönderilmez. Anahtar türetildikten sonra parolanın uygulama çekirdeğindeki kopyası bellekten silinir; anahtar da profili kilitlediğinizde bellekten silinir. Kilitleme ayrıca tüm bağlantıları kapatır ve hâlâ sürmekte olan bir girişi iptal eder. Parolanızı unutursanız profil açılamaz. Sıfırlama yolu yoktur, çünkü profili açabilecek hiçbir şey hiçbir yerde tutulmaz.
Hızlı kilit açma isteğe bağlıdır ve varsayılan olarak kapalıdır. Windows'ta Windows Hello ve TPM, Android'de parmak izi sensörü ve Android Keystore kullanılır. Sistemin sakladığı şey profilin anahtarıdır, asla parolanız değil; bu anahtar da hiçbir zaman eşitlenmez. Android'de, sistemin uygulama verilerini buluta yedeklemesi kapalıdır.
Windows'ta Uzak Masaüstü Bağlantısı (Remote Desktop Connection), parolası kayıtlı bir sunucuyu açtığında uygulama parolayı kısa ömürlü bir .rdp dosyasıyla aktarır. Dosyadaki parola, Windows kullanıcınız için Windows DPAPI ile şifrelenir ve dosya, Uzak Masaüstü Bağlantısı onu okur okumaz silinir (en geç 30 saniye sonra; bir çökme nedeniyle geride kalan dosya, uygulamanın bir sonraki açılışında kaldırılır).
- Anahtar türetme (Argon2id ayarları) lib.rs:237–254
- Yeni bir nonce ile AES-256-GCM lib.rs:256–263
- Profil dosyasının kaydedilmesi lib.rs:431–486
- Uzak Masaüstü Bağlantısı için parola (DPAPI) rdp.rs:178–193
2. Cloud sync (bulut eşitleme)
Eşitleme, siz giriş yapana kadar kapalıdır. Her profilin kendine ait, rastgele 256 bitlik bir veri anahtarı vardır ve bu anahtar şifreli profilin içinde durur. Yüklenmeden önce her öğe (bir sunucu, bir kimlik bilgisi, bir anahtar, bir not…) bu anahtarla, AES-256-GCM ve yeni, rastgele bir nonce kullanılarak ayrı ayrı şifrelenir.
Sunucu, her şifreli öğeyle birlikte şunları alır: rastgele bir ID, öğenin türü, bir zaman damgası ve öğenin silinip silinmediğini gösteren bir işaret. Zaman damgası, değişikliği yapan cihazın rastgele bir ID'sini içerir. Şifreli öğenin boyutu, öğenin aşağı yukarı ne kadar büyük olduğunu gösterir. Sunucu ayrıca her profilin adını saklar. Bilinen sunucu anahtarları (known hosts), komut geçmişi, izleme ayarları ve yalnızca bu cihaz için tutulan seçimler hiçbir zaman eşitlenmez.
Sunucunun tek bir öğe için sakladığı veri şöyledir: (Örnek)
{
"uuid": "6f1c2e0a9b7d4c3e8a5f0d1b2c3e4f50",
"entity_type": "servers",
"updated_at": "001761043562118:00000:9f3a61c2d4e5b7a8",
"deleted": false,
"blob": "4e8a1f0c2b9d3e7a5c6f8b1d0a2e4c6b8d0f1a3c5e7b9d1f…"
}- Eşitlenen her öğenin şifrelenmesi lib.rs:1050–1056
- Her öğe için gönderilenler lib.rs:1086–1124
3. Bir profili yeni bir cihazda açmak
Eşitlenmiş bir profili başka bir cihazda açmak için o cihazın, profilin veri anahtarına ihtiyacı vardır. Bu yüzden sunucu bir kayıt daha tutar: profil parolanızdan aynı Argon2id ayarlarıyla türetilen bir anahtarla şifrelenmiş veri anahtarı. Sunucu bu kaydı açamaz.
Sunucunun verileri bir gün çalınırsa, bir saldırganın deneyebileceği başlıca şey de budur: profil parolanızı çevrim dışı tahmin etmek. Her tahmin tam bir Argon2id çalıştırmasına mal olur; bu yüzden başka hiçbir yerde kullanmadığınız uzun bir parola verilerinizi güvende tutar.
- Profil anahtarının saklanan kopyası lib.rs:1551–1569
- Kopyanın yeni bir cihazda açılması lib.rs:1574–1594
4. Hesap parolanız
Eşitleme hesabınızın, profil parolanızdan ayrı, kendine ait bir parolası vardır. Bu parola, giriş yaptığınızda HTTPS üzerinden sunucuya gönderilir ve sunucu onun yalnızca bcrypt hash'ini saklar. 5 kez yanlış parola girildikten sonra parolayla giriş 15 dakika duraklatılır.
Hizmet, Cloudflare'in arkasında çalışır; hizmetin HTTPS bağlantısını Cloudflare yönetir. Bu yüzden Cloudflare de tıpkı sunucu gibi giriş yaptığınızda hesap parolanızı görebilir; öğelerinizi ise yalnızca şifreli hâlleriyle görebilir.
Profil parolanızı asla hesap parolanız olarak kullanmayın. Böylece sunucunun ya da Cloudflare'in gördüğü hiçbir şey profillerinizi açamaz.
- Giriş isteği cloud.rs:105–108
6. Sunucu kötü niyetli olsaydı
İyi bir güvenlik, yalnızca bir sunucunun yapması gerekenlerle ilgili değildir. Sunucunun tam kontrolü elinde olan birinin neler yapabileceği ve neler yapamayacağı aşağıdadır.
Yapamayacakları
- Öğelerinizi okumak ya da içeriklerini fark edilmeden değiştirmek
- Profil anahtarınızın saklanan kopyasını profil parolanız olmadan açmak
- Uygulamanın hiçbir zaman göndermediği profil parolanızı ya da paylaşım parolanızı öğrenmek
- Cihazınızdaki uygulamayı değiştirmek: Otomatik güncelleme yoktur, uygulama yalnızca yeni bir sürüm olduğunu gösterir
Yapabilecekleri
- Zayıf bir profil parolasını çevrim dışı tahmin etmeye çalışmak; her tahmin için yavaş bir Argon2id çalıştırması gerekir
- Bir sonraki girişinizde hesap parolanızı ele geçirmek
- Öğeleri silmek, eski sürümlerini geri getirmek ya da değişiklikleri alıkoymak. Bir eşitleme herhangi bir şeyi silmeden önce uygulama, profilinizin bir kopyasını cihazınızda saklar
- Paylaşılan bir profile birini davet ettiğinizde yanlış bir açık anahtar vermek
- Yukarıdaki tabloda listelenen ayrıntıları görmek
7. Uygulamanın bağlandığı her yer
Kendi sunucularınız ve bunlar için ayarladığınız proxy'ler ile atlama sunucuları (jump host). Eşitleme sunucusu, ama yalnızca giriş yapmışsanız. Bir de daha yeni bir sürüm olup olmadığını denetlemek için GitHub: Profil listesi açıldığında ve “Check for updates” düğmesine bastığınızda uygulama, GitHub'ın herkese açık sürüm listesini sorgular. Bu istek yalnızca uygulamanın adını ve sürümünü taşır.
Uygulamada analitik, çökme raporlama ya da reklam kodu yoktur. Uygulama, eşitleme için yalnızca kendi yerleşik sertifika yetkilisi listesine güvenir ve hiçbir yönlendirmeyi (redirect) izlemez; bu yüzden fark ettirmeden başka bir sunucuya yöneltilemez.
- Güncelleme denetimi about.rs:75–139
8. Uzak masaüstünün cihazınızdan aldıkları
Pano. Bir RDP ya da VNC sekmesine yapıştırdığınız metin o sunucuya gider; siz yapıştırmadan önce sunucuya hiçbir şey sunulmaz. Share the clipboard açıkken (varsayılan olarak açıktır ve her sunucu için ayrı ayarlanır), uzak masaüstünde kopyalanan metin bu cihazın panosuna konur. Bu yalnızca metindir, asla dosya değildir; VNC ise yalnızca düz ASCII metin taşır.
Dosyalar yalnızca bilgisayarda, yerleşik RDP istemcisiyle ve yalnızca o sunucu için bir klasör ya da sürücü seçerseniz paylaşılır; isterseniz salt okunur olarak. Sunucu bunu \\tsclient altında bir sürücü olarak görür; bilgisayarınızın başka hiçbir yerini görmez. İstediği her yol denetlenir: .. kabul edilmez ve yol üzerindeki hiçbir bağlantı (link) izlenmez; böylece seçtiğinizin dışındaki hiçbir şeye ulaşılamaz.
Bu seçimler bu cihazda tutulur ve hiçbir zaman eşitlenmez; böylece profil paylaştığınız hiç kimse bunları açamaz.
- Paylaşılan bir klasörün yollarının klasörün içinde kalması rdp_share.rs:121–147
- VNC panosunun taşıyabilecekleri vnc_client.rs:180–188
Kendiniz doğrulayın
Bunların hiçbiri için sözümüze güvenmek zorunda değilsiniz. İşte kolaydan ileri düzeye doğru doğrulama yolları.
Kodu okuyun
Uygulama açık kaynaklıdır. Bu sayfadaki bağlantılar, bu sayfanın anlattığı sürümde (
c9dec31) işi yapan satırların tam yerine gider.Ağ bağlantılarını izleyin
Bir güvenlik duvarı ya da ağ izleme aracı kullanın. Kendi sunucularınızı, yalnızca giriş yapmışken eşitleme sunucusunu ve profil listesi açıldığında api.github.com adresini göreceksiniz. Bunların dışında hiçbir şey görmezsiniz.
Sunucunun ne sakladığına bakın
İleri düzey: Giriş belirtecinizi (token) uygulamanın veri klasöründeki cloud_token.json dosyasından alın ve X-Auth-Token başlığıyla API'den verilerinizi isteyin: GET /api/sync/profiles ya da boş bir kayıt listesiyle POST /api/sync. Geri yalnızca ID'ler, türler, zamanlar, işaretler ve şifreli metin gelir. Ardından bu oturumu sonlandırmak için uygulamada çıkış yapın.
Trafiği okuyun
İleri düzey: Bilgisayarınızda, istekleri gerçek sunucuya ileten küçük bir proxy çalıştırın ve uygulamada eşitleme sunucusu olarak http://127.0.0.1 adresini ve proxy'nin portunu ayarlayın. Uygulama, düz HTTP bağlantısına yalnızca kendi bilgisayarınız için izin verir. Uygulamanın ne gönderdiğini ve öğelerinizin şifreli olduğunu göreceksiniz. (Sisteminize eklenen bir proxy sertifikası işe yaramaz, çünkü uygulama kendi sertifika yetkilisi listesini kullanır.)
Kendi verilerinizin şifresini çözün
İleri düzey: Parolanızla, aşağıdaki tablodaki ayarları kullanarak kendi verilerinizi herhangi bir Argon2id ve AES-GCM aracıyla açabilirsiniz. Parola olmadan bunu kimse yapamaz.
İndirdiğiniz dosyayı doğrulayın
Sağlama toplamını sürümdeki SHA256SUMS dosyasıyla karşılaştırın (0.4 sürümünden itibaren), Android uygulamasının sertifikasını apksigner ile denetleyin ya da uygulamayı kaynak koddan derleyin.
Kendi araçlarınız için ayarlar
| Anahtar türetme | Argon2id, sürüm 0x13, 64 MiB bellek, 3 geçiş, 4 şerit, 32 baytlık anahtar, 16 baytlık rastgele tuz |
| Profil dosyası | “OMNV” · sürüm 1 · tuz (16 bayt) · nonce (12 bayt) · zstd ile sıkıştırılmış SQLite veritabanının AES-256-GCM ile şifrelenmiş hâli ve 16 baytlık etiketi |
| Eşitlenen öğe | hex(nonce (12 bayt) · AES-256-GCM şifreli metni ve etiketi), profilin 256 bitlik veri anahtarıyla |
| Profil anahtarının saklanan kopyası | hex(0x02 · tuz (16 bayt) · nonce (12 bayt) · 32 baytlık veri anahtarının AES-256-GCM ile şifrelenmiş hâli), profil parolanızdan türetilen anahtarla |
| Paylaşım | X25519, HKDF-SHA256, AES-256-GCM |
Bu sayfanın vaat etmedikleri
- Submarine için bağımsız bir güvenlik denetimi yapılmadı. Şimdiye kadarki incelemeleri geliştiricisi yaptı.
- Zayıf ya da başka yerlerde de kullanılan bir parola en zayıf noktadır. Uzun ve benzersiz bir profil parolası, hesabınız için de farklı bir parola kullanın.
- Telnet ve düz VNC, tasarımları gereği şifreli değildir. Uygulama bunları işaretler ve bir SSH sunucusu üzerinden çalıştırabilir. Düz VNC üzerinden, yapıştırdığınız ya da sunucunun kopyaladığı pano metni de ağda şifrelenmeden gider.
- Yerleşik RDP istemcisi deneyseldir (yayımlanmış bir IronRDP sürümünden değil, bir IronRDP commit'inden derlenir) ve bir sunucu için siz seçene kadar kapalıdır.
- Bu sayfa, uygulamanın
c9dec31sürümünü anlatır. Kod değişirse bu sayfa da onunla birlikte değişir.