Seal
← Ana sayfaya dön
Güvenlik & gizlilik

İyi sözleşmeler iyi matematik ister.

Hassas bir konuyu yazıyorsunuz. Yazdığınız şey kaybolmamalı, iz bırakmadan değiştirilememeli, taklit edilememeli. Bu sayfa SEAL'in güvenlik mimarisini ayrıntılı olarak açıklıyor: şifreleme, imzalama, veri saklama, hatta sınırlarımız.

Cihaz tabanlı imzalama

Her cihaz kendi Ed25519 anahtar çiftini üretir. Özel anahtar telefonunuzda kalır; sunucu yalnızca açık anahtarınızı saklar ve imzalarınızı onunla doğrular.

Ed25519 · TweetNaCl / PyNaCl

Değişikliği ele veren denetim zinciri

Bir fiş üzerindeki her imzalı işlem, yalnızca ekleme yapılabilen bir günlüğe kaydedilir; her kayıt kendinden öncekine SHA-256 ile zincirlenir. Aradaki bir kaydın silinmesi ya da değiştirilmesi matematiksel olarak tespit edilebilir.

SHA-256 append-only

Parolasız, telefon-doğrulamalı

Parola tutmuyoruz. Telefon doğrulaması Twilio WhatsApp üzerinden 6 haneli OTP ile. Kodlar veritabanına tuzlanmış SHA-256 hash'i olarak yazılır, sabit zamanlı karşılaştırılır, 5 dakikada süresi dolar.

WhatsApp OTP · Salted SHA-256

Minimum veri

E-posta yok, parola yok, adres yok. Yalnızca telefon numaranız (E.164) ve eşleşirken girdiğiniz görünen ad. Kamuya açık doğrulama sayfasında telefon numaraları maskeli gösterilir.

Veri minimizasyonu

Aktarımda ve depolamada şifreli

Tüm bağlantılar (uygulama → API, OTP, push) HTTPS kullanır; MongoDB Atlas veritabanı da depolamada şifrelenir.

TLS 1.3 · Atlas at-rest

Kamuya açık doğrulama

Her fişin benzersiz bir kodu vardır. Kodu bilen herkes, uygulamaya gerek kalmadan getseal.app/verify adresinde fişin durumunu, içerik hash'ini, imza durumunu ve denetim zinciri kayıtlarını görebilir.

Kamuya açık doğrulanabilirlik

Detaylı bakış

İmza modeli

Cihazınız, ilk eşleşmede ya da ilk imzalı işlemde kendi Ed25519 anahtar çiftini üretir. Özel anahtar telefonun güvenli deposunda (iOS Keychain / Android Keystore) saklanır ve sunucuya hiçbir zaman gönderilmez. Fiş üzerindeki temel işlemler (fişi mühürleyen onay dahil) cihaz tarafından özel anahtarla imzalanır; sunucu da her imzayı hesabınıza kayıtlı açık anahtarla kontrol eder. Sunucu yalnızca açık anahtarları saklar: bir imzayı doğrulayabilir ama üretemez. Hangi anahtarın hangi hesaba ait olduğuna ise sunucu karar verir: yeni bir telefona geçtiğinizde numaranızı WhatsApp üzerinden doğrularsınız ve yeni telefonun anahtarı eskisinin yerini alır.

Denetim zinciri

Bir fiş üzerindeki her imzalı işlem (oluşturma, düzenleme, bir düzenlemeyi bütünüyle kabul etme ya da reddetme, onaylama, reddetme), tüm fişlerin paylaştığı ve yalnızca ekleme yapılabilen tek bir denetim günlüğüne kayıt olarak eklenir. Her kayıt JSON olarak normalize edilir, kendinden önceki kaydın hash'iyle birlikte SHA-256'dan geçirilir ve sonuç yeni zincir hash'i olarak saklanır. Bu zincire "denetim zinciri" diyoruz. Ortadaki bir kaydı değiştirmek ya da silmek sonraki tüm hash'leri bozacağı için her oynama tespit edilebilir. Bir düzenleme madde madde sonuçlandırıldığında ise birleştirilen metin, zincirde kendine ait bir kayıt olmadan yeni bir sürüm olarak saklanır; fişi mühürleyen, ayrı bir imzalı onaydır; bu onay zincire eklenir ve tam o sürümün içerik hash'ini kapsar.

OTP & oturum

Telefon doğrulaması Twilio WhatsApp Business üzerinden 6 haneli, 5 dakikalık tek kullanımlık kodla yapılır. OTP veritabanına düz metin olarak değil, her seferde rastgele üretilen bir tuz ile birlikte SHA-256 hash'i olarak yazılır; karşılaştırma sabit zamanlıdır (zamanlama saldırılarına karşı koruma). Telefon başına saatte en fazla 10 OTP gönderilir; 5 başarısız denemeden sonra kod kilitlenir ve yeni kod istemek gerekir. Oturum tarafında JWT yok; her istek cihazın UUID'si ve ilgili Ed25519 imzalarıyla sunucuya gelir.

Veri saklama & PII

Sunucuda parola, e-posta, adres ya da kart veya banka bilgisi tutulmaz; yalnızca doğrulanmış telefon numarası (E.164), eşleşirken girdiğiniz görünen ad ve fişleriniz ile taslaklarınız saklanır. Bu veriler, AB'de (AWS Frankfurt, eu-central-1) barındırılan ve depolanan veriyi şifreleyen (AES-256) MongoDB Atlas'ta tutulur; bağlantılar TLS kullanır. Uygulama sunucumuz Railway üzerinde, yönetilen HTTPS ile çalışır. Alan düzeyinde şifreleme bugün uygulanmıyor; yol haritamızda yer alıyor.

Kamuya açık doğrulama

Her fişin "SEAL-XXXXXXXX" biçiminde benzersiz bir kodu vardır. getseal.app/verify sayfası herkese açıktır: uygulamayı yüklemeden, kodu bilen herkes fişin durumunu, konusunu, tarihlerini, tarafların adlarını ve maskeli telefon numaralarını, içerik hash'ini ve denetim zincirindeki her kaydı, sunucumuzun kaydettiği imza durumu ve anahtar parmak iziyle birlikte görebilir. Anlaşmanın maddeleri bu sayfada gösterilmez; maddeleri yalnızca taraflar uygulamada ya da PDF'te görebilir.

Yasal not

SEAL güçlü bir delil üretir: cihazda imzalanan işlemlerden oluşan, her değişikliği ele veren ve durumunu fiş kodunu bilen herkesin sorgulayabileceği bir kayıt. Ancak nitelikli elektronik imzanın (ör. Türkiye'deki NES, AB'deki eIDAS QES) yerine geçmez. Tapu ya da şirket işlemleri gibi yüksek tutarlı veya resmi işlemlerde SEAL'i noter ya da nitelikli e-imzayla birlikte kullanın.