Secure Message Layer (SML), modern mesajlaşma uygulamalarının gerektirdiği güvenlik, gizlilik ve veri bütünlüğü ihtiyaçlarına yanıt vermek için tasarlanmış, platformdan bağımsız bir çekirdek iletişim kütüphanesidir. SML, bir kullanıcı arayüzüne (UI) veya belirli bir işletim sistemine bağlı olmaksızın, uçtan uca güvenli bir mesajlaşma deneyimini garanti altına alan başsız (headless) bir çekirdek olarak çalışır.
SML’in Temel Misyonu
Tüm mantığı sahiplenen güvenli, tahmin edilebilir ve deterministik bir çekirdek. UI sadece sonuçlara tepki verir.
SML; kimlik doğrulama, bağlantı yönetimi, mesajlaşma, grup iletişimi, çağrı sinyalleşmesi, veritabanı işlemleri, kriptografi ve durum yönetimi gibi kritik işlevleri tek bir koherent yapı altında toplar. Bu yaklaşım, istemci uygulamaların karmaşık güvenlik ve protokol detaylarıyla uğraşmasını engeller; böylece UI katmanı sadece kullanıcı deneyimine odaklanabilir.
Tasarım Hedefleri
SML’in tasarım felsefesi dört ana hedef üzerine kuruludur:
1. Güvenlik Öncelikli Tasarım
SML yalnızca güvenli iletişimi desteklemek için değil, bunu varsayılan olarak uygulamak için tasarlanmıştır:
- 1:1 iletişim için Double Ratchet
- Grup iletişimi için MLS (Message Layer Security)
- İlk kurulum ve cihaz eşleştirmesi için PQ-X3DH
- Tüm mesajların kimlik doğrulaması ve bütünlüğü
Tüm kripto operasyonları çekirdekte kapsüllenmiştir; UI bu işlemlerin hiçbir detayını bilemez.
2. Platformdan Bağımsızlık
SML’in aynı kod tabanı şu platformlarda aynı şekilde çalışabilir:
- iOS (Swift)
- Android (Kotlin)
- macOS, Linux
- Web (WASM)
- Gömülü sistemler
Bu yetenek, tüm platformlardaki mesajlaşma deneyiminin tutarlı ve deterministik olmasını sağlar.
3. Tam Durum Sahipliği
SML, mesajlar, sohbet listesi, kullanıcı profili ve ayarlar gibi tüm mantıksal durumu kendi içinde tutar. UI yalnızca SML’den aldığı bilgiye göre render eder:
UI never holds state; it reflects state.
Bu mimari, UI’ın çökmesi, kapanması veya yeniden başlaması durumunda bile uygulamanın kaldığı yerden devam etmesini sağlar.
4. Minimal ve Sabit Arayüz
SML ile UI arasındaki iletişim iki fonksiyon üzerinden yapılır:
- SML → UI:
on_packet_out(şifrelenmiş paket gönderimi) - UI → SML:
sml_handle_packet(gelen paketin işlenmesi)
Bu iki yönlü ve son derece minimal API, istemci uygulamaların kendi ağ katmanlarını diledikleri şekilde uygulayabilmelerini sağlar.
Temel Terminoloji
SML dokümantasyonunda sıkça kullanılan terimler:
SML Context (
sml_t): SML’in tüm çalışma durumunu, anahtar materyalini, veritabanı bağlantılarını, kriptografik oturumları ve modül durumlarını içerisinde barındıran opak yapıdır.UI Layer / Host Application: Kullanıcı arayüzünü oluşturan ve SML ile yalnızca callback fonksiyonları aracılığıyla iletişim kuran dış uygulama katmanı.
Packet: SML tarafından üretilen veya SML’e verilen ham bayt dizisi. UI bu paketlerin içeriğini bilmez, yorumlamaz, sadece iletir.
Callback: SML → UI yönünde gerçekleşen olay bildirimleridir. Örneğin:
on_message_received,on_auth_state_change,on_conversations_updated.DatabaseLayer: SML’in yerel durumu (auth durumu, sohbet listeleri, mesaj geçmişi, kullanıcı profili) tuttuğu SQLite tabanı.
CryptoLayer: Tüm kriptografik operasyonları yöneten katman. Double Ratchet, MLS, XEdDSA ve PQ-X3DH bu katmanda uygulanır.
Hedef Kitle
SML, aşağıdaki profillere hitap eder:
- Mobil geliştiriciler (Swift/Kotlin)
- Masaüstü veya web platformu geliştiricileri
- Kriptografi entegrasyonu yapan güvenlik mühendisleri
- Uçtan uca iletişim protokolü tasarlayan backend ekipleri
- Veritabanı ve durumsal mimari üzerine çalışan sistem mühendisleri
SML, “kolay entegrasyon” amacıyla tasarlanmış olsa da, ileri düzey kriptografi ve protokol mantığı içerdiği için hem yüksek seviyeli açıklamalar hem de düşük seviyeli teknik detaylar sunar.
Sonuç
SML, modern mesajlaşma uygulamalarının karmaşık güvenlik gereksinimlerini çözmek için tasarlanmış, platformdan bağımsız bir çekirdek kütüphanedir. “UI sadece durumu yansıtır” felsefesiyle, tüm mantığı kendi içinde tutarak güvenli, tahmin edilebilir ve deterministik bir mesajlaşma deneyimi sunar.
Bu serinin devamında, SML’in mimari yapısı, kriptografik temelleri, veritabanı katmanı ve diğer kritik bileşenlerini detaylı olarak inceleyeceğiz.
Tags
Uğur Toprakdeviren
Cryptographer, security researcher, and systems engineer with over two decades of experience building secure systems. Currently focused on Apple internals, decentralized messaging protocols, ARM64 architectures, and the philosophical implications of digital privacy.
Learn more about me