Kısa özet
Hesap bir anahtar çiftidir. Telefon numarası yok, e-posta yok, zorunlu ad yok; keşfedilebilirlik varsayılan olarak kapalı. Mobil operatöre yapılan bir talep hiçbir sonuç vermez: zincirde operatör yok.
Çift yönlü gRPC: iOS'ta HTTP/2'ye geri dönüşlü QUIC üzerinde, Android'de HTTP/2 üzerinde — ağ değişse de yeni bir el sıkışma olmadan sürekli kalan tek bir uzun ömürlü akış.
Kuantum sonrası koruma zaten protokolde. ML-KEM-1024, oturum kurulurken alıcının Kyber ön anahtarına kapsüllenir (PQXDH) ve oturumun ilk anahtarına dâhil olur. Konuşmanın ilk mesajı da korunur; kuantum sonrası kısım olmadan oturum hiç kurulmaz. Bu, mesajlarda ve eklerde yazılanları korur. Mesajı kimin gönderdiği de kuantum sonrası yöntemle gizlenir; aramalar ise her iki uygulama da kuantum sonrası DTLS'i desteklediğinde korunur. Henüz klasik olanlar: sunucu imzaları (gönderen sertifikaları, anahtar şeffaflığı günlüğü), cihaz girişi ve hesap kurtarma; gruplar henüz yok — tüm katmanlar protokol spesifikasyonunda listelenmiştir.
- * Gönderen koruması — mesaj, kimin yazdığına dair hiçbir işaret olmadan yola çıkar. Bunu yalnızca alıcı açabilir, sunucu açamaz. Uygulamada her zaman açıktır (güvenlik ayarlarında (Security) «stealth»); değiştirilecek bir şey yoktur.
- ** Opak tanımlayıcı, sizin hakkınızda hiçbir şey söylemeyen bir dizedir: hesap oluşturulurken verilen bir karakter kümesi.
Bugün neler var
Şu anda Konstruct, ana iletişim kanalınızı tamamlayan ikinci bir iletişim kanalı olarak var. İşlevsellik asgari düzeyde — birebir sohbetler ve aramalar. Grup, kanal ve cihazlar arası senkronizasyon yok.
Teknik mimari
Kısa özet: mesajlar cihazınızda şifrelenir. Sunucu şifreli metni okuyamadan taşır; aşağıda bunu oluşturan katmanlar anlatılıyor.
Konstruct, sıfırdan Rust ile yazılmış ve kuantum sonrası anahtar anlaşmasıyla (ML-KEM-1024) genişletilmiş Signal Protocol tasarımı (X3DH + Double Ratchet) üzerine kuruludur.
Konstruct, verimli ikili çerçeveleme için Protocol Buffers ile gRPC kullanır ve gerçek zamanlı teslimat için kalıcı bir çift yönlü MessageStream'i açık tutar — request/response polling yok. Arka uç, arızaları yalıtmak için bağımsız hizmetlere (identity, messaging, signaling, media) bölünmüştür. iOS'ta asıl yol, HTTP/2'ye otomatik geri dönüşlü QUIC üzerinde gRPC bidi'dir; Android HTTP/2 kullanır.
Kriptografi yığını
- X3DH + Double Ratchet (Signal Protocol tasarımı): ileri gizlilik ve post-compromise security (kendini onarma) sağlayan uçtan uca şifreleme.
- Kuantum sonrası anahtar anlaşması (PQXDH): oturum kurulurken başlatan taraf, alıcının Kyber ön anahtarına bir ML-KEM-1024 sırrını (NIST FIPS 203) kapsüller ve bu sır, X25519 çıktılarıyla birlikte oturumun başlangıç anahtarına girer — dolayısıyla kaydedilmiş bir oturum yalnızca X25519 kırılarak geri elde edilemez. Kuantum sonrası koruma en ilk mesajdan itibaren geçerlidir ve oturum kurmanın klasik bir yolu yoktur. Bunun üzerine her oturum bir seyrek ML-KEM-768 ratchet'i yürütür — taze kuantum sonrası materyal yalnızca kurulumda bir kez değil, konuşma ilerledikçe karıştırılır (her 16 yön değişiminde ya da 7 günde bir) ve her mesaj için bundan türetilen ayrı bir kuantum sonrası anahtar vardır.
- İmzalar: hibrit Ed25519 + ML-DSA-65 (Dilithium-3, NIST FIPS 204) her kuantum sonrası ön anahtarda — ikisi de doğrulanır: istemci, iki imzası da olmayan bir ön anahtarı kabul etmez. Hibrit anahtarın kendisi Ed25519 imzasıyla onaylanır ve ilk temasta sabitlenir (pinned). Cihaz girişi, hesap kurtarma ve sunucunun gönderen sertifikaları şimdilik yalnızca Ed25519 ile imzalıdır.
- AEAD: mesaj şifrelemesi için ChaCha20-Poly1305. KDF: protokolün her bölümü için domain-separation etiketleriyle HKDF-SHA256. Anti-spam PoW: Argon2id.
- Sunucu içeriği görmez: mesajlar yalnızca sunucunun şifresini çözemeyeceği şifreli metin olarak saklanır. Privacy Pass belirteçleri (token) sealed gönderimlere eşlik edebilir; sunucu tarafında belirteç denetimi hâlâ kademeli olarak devreye alınıyor.
- Kriptografik esneklik: protokol bir algoritma seti sürümü taşır, böylece mesaj biçimini değiştirmeden yeni bir set getirilebilir. Son geçişler (PQXDH v2, ratchet suite 4) sert geçişti: eski settaki oturumlar reddedilir ve bir sonraki gönderimde yeniden açılır. Bu bir alfa sürümü olduğu sürece uzun uyumluluk süreleri yerine bu yolu seçiyoruz.
Taşıma katmanı
- QUIC üzerinde çift yönlü gRPC MessageStream — iOS'ta asıl yol (construct-transport). Tek bir uzun ömürlü akış, her olay için TCP handshake gerektirmeden heartbeat'leri, gelen mesajları ve makbuzları taşır, ağ değişimini atlatır ve QUIC engellendiğinde otomatik olarak HTTP/2 + TLS 1.3 üzerinden gRPC'ye düşer. Uçtan uca şifreleme bunun üstünde yer alır: taşıma katmanı yalnızca mühürlü şifreli metni taşır, bu yüzden değiştirilmesi güvencelerde hiçbir şeyi değiştirmez.
- Sansüre dayanıklılık: doğrudan TLS bağlantısı engellendiğinde istemci, bir gizleme (obfuscation) katmanı üzerinden çıkar — otomatik olarak ve kullanıcı bir şey yapmadan. Uygulama açık kaynak, tasarım herkese açık. Operasyonel ayrıntılar — hangi taşıma yöntemlerinin şu anda hizmette olduğu, hangi giriş noktalarının bulunduğu ve nerede oldukları — yayımlanmaz; ne uygulama ne de bu site bunları gösterir.
Sunucu ne görür
Merkezi her platform tek bir varsayımdan yola çıkar: «siz», onun veri tabanındaki bir satırsınız. Bir telefon numarası, bir profil, ona ait olan ve devredebileceği bir kişi grafiği. Konstruct daha azıyla başlar. Sunucu bir hesap tanımlayıcısını, açık anahtarlarınızı ve bir push belirtecini (token) saklar. Mesajın kendisi hakkında yalnızca alıcının opak kimliğini, teslim zamanını ve boyutunu görür; gönderen koruması (sealed sender) gönderen kimliğini kaldırır, yani kimin yazdığını yalnızca alıcı ortaya çıkarabilir. Şifreli metni yönlendirmek için gereken asgari miktar bu kadardır.
Rehber olmadığı için «soğuk» mesaj da yoktur: konuşma bir QR kodla ya da tek kullanımlık ve on iki saat geçerli bir davet bağlantısıyla başlar. Kullanıcı adıyla arama vardır, isteğe bağlıdır ve siz açana kadar kapalıdır.
Kriptografi sizi gözlemlenemez kılmaz. Zamanlama ve IP korelasyonu hatta görünür kalır ve yeterince kaynaklı bir rakip o katmanda çalışır, bu katmanda değil. Yine de sistemimizdeki hiçbir bileşen verilerinizi biriktirmek üzere tasarlanmamıştır.
Hiçbir telemetri yok. «Anonimleştirilmiş» olanı bile.
Konstruct analitik, kullanım metrikleri, davranışsal olaylar, çökme raporları ve reklam tanımlayıcıları toplamaz. Üçüncü taraf SDK'lar yoktur — Firebase, Crashlytics, Sentry yok — ATT isteği ve SKAdNetwork da yoktur. Yayın sürümleri hiçbir günlük (log) yazmaz. Tek bir şeyi denetleyemiyoruz: beta TestFlight'ta sürdüğü müddetçe Apple bize kendi standart test metriklerini veriyor — kurulum tarihi, derleme sürümü, oturum ve çökme sayısı. Bunlar bizim değil, Apple'ın metrikleridir ve App Store sürümüyle sona erecektir. Yönlendirme için sunucu yalnızca küçük, sabit bir üst veri kümesi saklar — alıcı, zaman, boyut, açık anahtarlarınız, iOS'ta ise push belirteci (token) — gönderen koruması ise göndereni de zarftan çıkarır. Bunun çözmediği şeyi, yani zaman ve IP korelasyonunu, Gizlilik Politikası'nda anlattık.
Temel özellikler
- Varsayılan olarak uçtan uca şifreleme — sunucular yalnızca şifreli veri görür.
- İleri gizlilik (forward secrecy) — anahtarlar ele geçirilse bile geçmiş mesajlar korunur.
- Sansür koruması — varsayılan olarak açık. Doğrudan bağlantı çalıştığı sürece o kullanılır; geçiş yalnızca kanıtlanmış bir başarısızlıkta yapılır.
- Zen arayüz — bildirim spam'i yok, sosyal gürültü yok, yalnızca sakin bir iletişim.
- Kuantum sonrası anahtar anlaşması — ML-KEM-1024 (Kyber-1024), oturum kurulurken alıcının Kyber ön anahtarına kapsüllenir (PQXDH) ve başlangıç anahtarına girer; onsuz oturum kurulmaz. Ardından her oturum, Double Ratchet içinde ML-KEM-768 ile anahtarları yenilemeye devam eder ve her mesajın kendi kuantum sonrası anahtarı vardır. İmzalar hibrittir, Ed25519 + ML-DSA-65 (Dilithium-3): her kuantum sonrası ön anahtar ikisiyle de imzalıdır ve bu imzalar olmadan bir ön anahtarla oturum kurulmaz.
- Modern canlı taşıma katmanı — QUIC üzerinde çift yönlü gRPC MessageStream (HTTP/2'ye geri dönüş), doğrudan yol kapalıyken engelleri aşma, her iki kişi de çevrimiçi olduğunda doğrudan P2P — planlanıyor.
- Açık kaynak — istemciler, sunucu ve taşıma katmanı, sınırlı copyleft lisansları altında. Kendi sunucunuzu işletmek yol haritasında: uygulama henüz bir sunucuya yönlendirilemiyor.
Tasarım ilkeleri
Pazarlık konusu yapmadığımız iki ilke:
1. Güvenli bir arka kapı yoktur. Şifrelemeyi kasıtlı olarak zayıflatmak bir açık yaratır ve o açıktan geçecek olan, bırakıldığı kişi olmaz.
2. Varsayılan olarak gizlilik. Kullanıcıdan hiçbir işlem beklemeden çalışmalıdır: bu bir protokol özelliğidir, bir ayar değil.
Yapmayacaklarımız. Hangi gerekçeyle istenirse istensin arka kapı yok. Etkileşim mekanikleri yok — sonsuz akış, seri, bildirim yemi yok. Veri satışı yok: satılacak bir şey yok ve beslenmesi gereken bir reklam işi de yok.
Spesifikasyon ve kaynak kodu
Bu sayfada anlatılan her şey, protokol spesifikasyonunda — whitepaper'da — ayrıntılı biçimde ele alınmıştır. Kodla birlikte sürümlenir ve yalnızca referans uygulamaya karşı doğrulanabilen bilgileri içerir.
- Protokol spesifikasyonu (whitepaper)
- Tehdit modeli — bunun neye karşı koruduğu, neye karşı korumadığı
- Kriptografik ilkeller
- Oturum kurulumu (X3DH + PQXDH)
- Mesaj şifreleme (Double Ratchet)
- Taşıma katmanı
- Üst veri gizliliği ve gönderen koruması (sealed sender)
- Uygulama durumu — nelerin hazır olduğu, nelerin olmadığı
- GitHub'da kaynak kodu
NB: harici bir denetim yapılmadı. Yukarıdakilerin tümü, kendi kodumuzun kendi okumamızdır. Proje dışından hiç kimse onu incelemedi; bu durum sürdüğü sürece bu özellikleri bir inceleme sonucu olarak değil, savunmaya hazır olduğumuz iddialar olarak değerlendirin.