Nasıl çalışır

Crocodile konuşmalarınızı nasıl size ait tutar

Mimari ve protokolde sade bir dille bir gezinti. Her bölüm fikirle başlar; teknik ayrıntılar için “Kaputun altında” bölümünü açın.

Bölüm 1

Dört tür oyuncu

Crocodile işi öyle böler ki sözlerinizi yalnızca konuştuğunuz kişiler görür; yabancıların işlettiği parçalar ise onları asla görmez.

Uygulamanız

Anahtarlarınızı tutar, gönderdiğiniz her şeyi şifreler ve aldıklarınızı çözer. Mesaj geçmişiniz burada yaşar, başka hiçbir yerde değil.

Bilir: Gönderip aldığınız her şeyi: hepsi sizin.

Ev sahibi

Her ses odasında ya da alanda, şifreli trafiği diğerlerine iletmek için bir üyenin uygulaması seçilir. O da diğerleri gibi bir üyedir.

Bilir: Üyelerin IP adreslerini ve kimin konuştuğunu, ne konuşulduğunu asla.

Koordinasyon sunucuları

Gönüllülerin işlettiği santraller: profilleri ve alanları saklar, kimin çevrimiçi olduğunu söyler ve ev sahiplerini seçer. Tek bir ağda birleşirler.

Bilir: Profilleri, üyelikleri ve kimin çevrimiçi olduğunu, ne konuşulduğunu asla.

Dizin

Yeni uygulamaların nereden başlayacaklarını bilmeleri için koordinasyon sunucularının telefon rehberi. İnsanlar hakkında hiçbir şey bilmez.

Bilir: Yalnızca sunucuların listesini.

Bölüm 2

Hesabınız bir parola değil, bir anahtardır

Crocodile’ı kurduğunuzda uygulamanız bilgisayarınızda 32 bayt uzunluğunda rastgele bir sır oluşturur. Bundan iki anahtar çıkar: biri yayımladıklarınızı imzalamak, diğeri şifreli mesajları almak için. Kullanıcı kimliğiniz imzalama anahtarının bir parmak izidir.

Kimlik anahtardan hesaplandığı için bir sunucu başka bir anahtar koyup sizin yerinize geçemez. Çalınacak bir parola ya da bir destek ekibini kandırarak yaptırılacak bir sıfırlama yoktur. Sır size bir kez kurtarma anahtarı olarak gösterilir ve sistem anahtar zincirinizle şifrelenmiş olarak cihazlarınızda kalır.

Kaputun altında
  • 32 baytlık tohumdan bir Ed25519 imzalama anahtarı ve bir X25519 şifreleme anahtarı üretilir. Kullanıcı kimliği, base32(SHA-256(genel imzalama anahtarı)) değerinin ilk 26 karakteridir.
  • Her cihaz, haftalık olarak yenilenen bir ön anahtar paketiyle (X25519 + ML-KEM-768) imzalı bir cihaz kaydı yayımlar. Eski ön anahtar sırları bir ek süreden sonra silinir.
  • Güvenlik numaraları, diğer güvenli mesajlaşma uygulamalarında olduğu gibi iki kişinin anahtarlarını başka bir kanaldan karşılaştırmasını sağlar.
  • Yerel veriler (kimlik, ön anahtarlar, geçmiş), işletim sisteminin anahtar zinciri tarafından korunan bir anahtarla şifrelenmiş olarak saklanır.

Bölüm 3

En hızlı sunucuyu bulmak

Uygulamanız koordinasyon sunucularının listesini dizinden indirir, her birinin ne kadar hızlı yanıt verdiğini ölçer ve en hızlısına bağlanır. İkincisi yedekte bekler; sunucunuz giderse uygulamanız hemen geçiş yapar.

Her şeyden önce sunucu kim olduğunu kanıtlar ve uygulama ile sunucu o bağlantı için anahtarlar üzerinde anlaşır. Bundan sonra paylaştıkları üst veriler bile HTTPS’in üzerine şifrelenir; bu yüzden evdeki bir sunucuda da güvenle çalışır.

Kaputun altında
  • Dizin her sunucuyu, o sunucunun kendisi tarafından imzalanmış ve adresi gizlenmiş olarak listeler. Uygulamalar bir kaydı kullanmadan önce imzayı doğrular.
  • Sunucunun imzalı merhaba mesajı taze bir karma anahtar değişimi teklifi (X25519 + ML-KEM-768) taşır. Uygulama bunu dizindeki anahtarla doğrular, yanıt verir ve dökümü imzalar. Sonraki her çerçeve AES-256-GCM ile şifrelenir ve dolgulanır.
  • Sunucular iki portta STUN’a da yanıt verir; böylece uygulamalar Google’a ya da Cloudflare’a sormadan genel adreslerini ve NAT türlerini öğrenir.

Bölüm 4

Hakkınızda yalan söyleyemeyen sunucular

Profiliniz, oluşturduğunuz alanlar, bunların davetleri ve kimin üye olduğu, onları yazan kişi tarafından imzalanmış küçük kayıtlardır. Sunucular bunları saklar ve paylaşır; her sunucu ve her uygulama imzaları doğrular. Bir sunucu bir kaydı iletmeyi reddedebilir, ama onu değiştiremez ya da uyduramaz.

Koordinasyon sunucuları birbirini bulur ve bir ağ oluşturur. Her kayıt, bir özete göre seçilen birkaç sunucuda tutulur ve bunlar değişiklikleri birbirine kopyalar; böylece herhangi bir sunucu çöktüğünde ağ çalışmaya devam eder.

Kaputun altında
  • Kayıtlar: profil, mühürlü arkadaş listesi, alan, davet, üye, cihaz ve not. Her birinin onu yazabilen bir yazarı vardır; doğrulama (imza, yetki, “son yazan kazanır” sürümü) sunucularda ve istemcilerde aynıdır.
  • Arkadaş listeleri yalnızca sahibinin cihazları için şifrelenir ve arkadaşlık istekleri göndereni belirtmeyen mühürlü notlar olarak yol alır; böylece sunucular kimin kiminle arkadaş olduğunu öğrenmez.
  • Her kayıt, parçası için tutarlı özet halkasındaki ilk birkaç sunucuya aittir. Sahipler yazmaları çoğaltır, sıra imleçleriyle eksiklerini tamamlar ve sunucular katılıp ayrıldıkça kayıtları devreder.

Bölüm 5

Bir arkadaş ev sahipliği yapar, bir yedek bekler

İnsanlar bir ses odasına katıldığında ya da bir alanı açtığında koordinasyon sunucusu herkesin bağlantısına bakar (ağlarının ne kadar açık olduğu, yükleme hızları, bilgisayarları, pilde olup olmadıkları) ve en uygun üyeyi ev sahibi seçer. Bir sonraki en iyisi yedektir.

Herkes, şifreli sesi ileten ev sahibinin uygulamasına bağlanır. Yükü hafif tutmak için her dinleyiciye yalnızca en yüksek sesle konuşan birkaç kişiyi iletir. Ses geçerken hiçbir zaman açık hâlde değildir: yalnızca mühürlü paketleri taşır.

Ev sahibi ayrılırsa ya da ulaşılamaz hâle gelirse yedek devralır ve herkes ona yeniden bağlanır; genellikle kimse fark etmeden.

Kaputun altında
  • Ev sahibi uygulamasının içinde küçük bir SFU (selective forwarding unit) çalıştırır. Her üye ona bir yukarı akış ses izi, beş aşağı akış konuşmacı yuvası ve bir veri kanalı içeren tek bir WebRTC bağlantısı açar.
  • Konuşmacı yuvaları RFC 6464 ses seviyesi başlığına göre (“last-N”) atanır; sıra numaraları yeniden yazılır ki her yuva kesintisiz tek bir akış olarak kalsın.
  • Teklifler ve yanıtlar; oturum, dönem, iki kimlik ve DTLS parmak izi üzerinden kimlik anahtarlarıyla imzalanır; böylece bir koordinasyon sunucusu araya giremez.
  • Her ev sahibi değişikliği bir dönem numarasını artırır; eski teklifler yok sayılır. Ev sahibine ulaşamayan üyeler bunu bildirir ve yarısı hemfikir olunca yedek devralır.

Bölüm 6

Katman katman şifreleme

Her şey cihazınızdan çıkmadan önce şifrelenir ve anahtarlar yalnızca konuşmadaki kişilerdedir. İşte bir mesajın yolda başına gelenler.

Bir mesaj, dört katman

Uygulamanız mesajı, başkaları onun sizden geldiğini kanıtlayabilsin diye imzalar; uzunluğu hiçbir şey ele vermesin diye dolgular; yalnızca konuşmanın üyelerinde olan bir anahtarla şifreler ve kendisi de şifreli olan bir bağlantıdan gönderir. Arada kim olursa olsun yalnızca standart boyutta karışık baytlar görür.

Kuantum bilgisayarlara hazır

Anahtarlar, kanıtlanmış klasik bir yöntem olan X25519 ile yeni kuantum sonrası standart ML-KEM-768’in karması kullanılarak değiştirilir. Bir saldırganın ikisini de kırması gerekir. Bu önemlidir; çünkü biri bugün şifreli trafiği kaydedip bir kuantum bilgisayarın onu çözmesini bekleyebilir.

İlerleyen anahtarlar

Her üyenin anahtarı bir cırcır gibi döner: her mesajdan sonra yalnızca ileri giden bir zincirdeki bir sonraki anahtarla değiştirilir ve eskisi silinir. Bugün bir anahtar çalan kişi dünkü mesajları okuyamaz. Her 30 dakikada bir ve biri her ayrıldığında herkes yeni rastgele anahtarlarla yeni bir zincire başlar; böylece çalınan bir anahtar da kısa sürede işe yaramaz hâle gelir.

Ses, çerçeve çerçeve

Sesiniz küçük çerçeveler hâlinde, saniyede yaklaşık elli tane olarak, mikrofondan hemen sonra ve ağa ulaşmadan önce şifrelenir. Şifrelenemeyen bir çerçeve atılır, asla açık gönderilmez. Ses sabit bit hızı kullanır; böylece paketlerin boyutu ne söylediğinizi ele vermez.

Kaputun altında
  • İkili sırlar (gönderen anahtarlarının dağıtımı, geçmiş eşitleme, cihaz bağlama, sunucu kanalları) X25519 ve ML-KEM-768’i (FIPS 203) HKDF-SHA256 ile birleştirir.
  • Gönderen anahtarlarının iki HKDF zinciri vardır: metin zinciri her mesajdan sonra, ses zinciri her 30 saniyede bir ilerler. Anahtarlar her 30 dakikada bir ve biri ayrıldığında değiştirilir; yalnızca üyeliğini uygulamanın imzalı kayıtlardan kendisinin doğruladığı cihazlara gönderilir.
  • Ses: bir Encoded Transform çalışanı her Opus çerçevesini AES-256-GCM ve kimliği doğrulanmış SFrame tarzı bir son ek (anahtar kimliği, nesil, sayaç) ile şifreler.
  • Metin: yazar tarafından imzalanır (Ed25519), Padmé ile dolgulanır, metin zinciriyle şifrelenir.
  • Bir cihaza gönderilen mühürlü kutular o cihazın geçerli ön anahtarını kullanır ve gönderen tarafından imzalanır; böylece çevrimdışı cihazlara gönderilen mesajlar bile ileri gizlilik kazanır.

Bölüm 7

Doğrudan bağlantı mümkün olmadığında

Ofis ya da üniversitelerdeki katı güvenlik duvarları gibi bazı ağlar, bilgisayarlar arasındaki doğrudan bağlantıları engeller. Crocodile bu olduğunda size söyler ve bir koordinasyon sunucusunun trafiğinizi aktarmasına izin verebilirsiniz.

Aktarıcı, zaten uçtan uca şifrelenmiş paketleri iletir: boyutlarını ve zamanlamalarını görür ama içeriklerini görmez. İzin her seferinde bir saat sürer ve yalnızca hâlâ gerekliyse yenilenir.

Kaputun altında
  • Aktarıcı, koordinasyon sunucusunun UDP portunda kısa ömürlü kimlik bilgileriyle çalışan standart TURN’dür (RFC 5766). Sunucular onu kaç kişinin kullanabileceğini sınırlar.
  • Bağlanırken uygulama ağını iki STUN portuna karşı test eder; onu açık, sınırlı (simetrik NAT) ya da engelli olarak sınıflandırır ve gerektiğinde aktarıcıyı önerir.
  • Her bağlantı dört adımı kaydeder (teklif, yanıt, ağ yolu, şifreli kanal); böylece bir şey başarısız olduğunda uygulama nerede olduğunu söyleyebilir.

Bölüm 8

Yolunu bulan mesajlar

Hiçbir sunucu geçmişinizi tutmaz; bu yüzden Crocodile uygulamaları mesajları birbirine aktarır. Çevrimdışı birine yazdığınızda olanlar şunlardır.

  1. Sizinle bekler

    Mesaj uygulamanızın giden kutusuna girer ve küçük bir saat gösterir.

  2. Arkadaşınız çevrimiçi olur

    İkiniz de çevrimiçi olduğunuz anda uygulamanız mesajı, onun cihazı için mühürlenmiş olarak teslim eder.

  3. Onaylandı

    Onun uygulaması alındığını onaylar ve saat kaybolur. Bir alanda mesajları kaçıran üyeler, eksiklerini ev sahibinden ve yedekten tamamlar.

  4. Ya da posta kutusu

    İsterseniz bir sunucu özel mesajları 7 güne kadar, okuyamayacağı şekilde her cihaz için mühürlü olarak saklar ve teslim edilince siler.

Bölüm 9

Bilgisayar eklemek

Yeni bilgisayarınız kısa bir kod gösterir. Bunu zaten oturum açtığınız bir bilgisayara yazın, ardından iki ekranda da aynı altı haneli güvenlik kodunun göründüğünü kontrol edin. Eşleşiyorlarsa hesabınız şifreli olarak aktarılır ve yeni cihaz hazırdır.

Güvenlik kodu iki cihazın anahtarlarını da kapsar; biri yolda birini değiştirmeye çalışsa kodlar farklı olur ve bunu anlarsınız.

Sözlük

Güvenlik yazılarında karşılaşacağınız terimler, her biri bir iki cümlede.

Uçtan uca şifreleme
Anahtarlar yalnızca gönderende ve alıcılardadır. Mesajı arada taşıyan her şey, sunucular dahil, yalnızca karışık veri görür.
Eşten eşe
Uygulamalar merkezi bir sunucu yerine birbirine doğrudan bağlanır.
Kuantum sonrası kriptografi
İnternetin büyük kısmının bugün kullandığı yöntemleri kırabilecek gelecekteki kuantum bilgisayarlara dayanacak şekilde tasarlanmış şifreleme. ML-KEM, NIST’in 2024’te yayımladığı standarttır.
İleri gizlilik
Bugün bir anahtarın çalınması eski mesajları açmaz; çünkü onlarda kullanılan anahtarlar silinmiştir.
Ele geçirme sonrası güvenlik
Bir anahtar çalındıktan sonra yeni rastgele anahtarlar hırsızı kısa sürede yeniden dışarıda bırakır. Crocodile’da bu 30 dakika içinde ya da biri ayrıldığında hemen olur.
Dijital imza
Özel bir anahtarla yapılan matematiksel bir mühür. Herkes onu genel anahtarla doğrulayabilir; özel anahtarı olmayan hiç kimse onu taklit edemez.
NAT, STUN ve TURN
Ev yönlendiricileri bilgisayarları tek bir genel adresin (NAT) arkasına gizler. STUN, uygulamaların doğrudan bağlanabilmesi için genel adreslerini öğrenmelerine yardım eder; TURN ise bağlanamadıklarında trafiği aktarır.
SFU
Selective forwarding unit, her konuşmacının sesini karıştırmadan ya da çözmeden her dinleyiciye iletir. Crocodile’da ev sahibinin uygulamasında çalışır.
Üst veri
Bir konuşmanın içeriği değil, onunla ilgili veriler: kimin kiminle, ne zaman ve ne kadar konuştuğu. Crocodile içeriği tamamen şifreler ve üst veriyi azaltır, ama sunucular yine de bir kısmını görür.

Mimari belgesinin tamamını okuyun (İngilizce)