ÜSTVERİYE DİRENÇLİ MESAJLAŞMA · RUST · TOR

callwhiteYILMAZ MERT · TRGENCİ

Kimin kiminle konuştuğunu sızdırmayan bir messenger. Şifreleme, işin kolay yarısı.

Rust çekirdek, sekiz crate/Android ve masaüstü istemci/Tor üzerinden relay/1233 otomatik test/dokuz iç kırmızı-takım turu

İNDİR Android ve Windows · indirilecek başka bir şey yok

callwhite, mesaj yolunda sunucu olmayan bir messenger. Mesajlar, yalnız iki tarafın paylaştığı anahtar malzemesinden türeyen adreslere yazılır ve oradan okunur. Relay'in elinde kalan şey, türetemediği bir adreste duran sabit boyutlu ve opak bir blob'dur — ne gönderene bağlayabilir ne okuyana. Bire bir ve grup sohbetleri, medya dâhil.

Şifreleme kimsenin okuyamayacağı mesajlar üretir. callwhite bir adım öteye geçer ve kimin kiminle, ne zaman, ne sıklıkta konuştuğunu da yoldan siler. Ölçeklenen, saklanan ve birleştirilebilen yarı budur: bir kişinin mesajlarını okumak mahkeme kararı ister, herkesin iletişim grafiğini okumak tek bir sorgu.

ELİNE NE GEÇİYOR

Protokol makalesi değil. Kurduğun bir uygulama, iki platformda, ikisinin içinde de aynı Rust çekirdek derlenmiş hâlde.

EŞLEŞME
Bir davet linki ya da yüz yüze okutulan bir QR. İki taraf da aynı doğrulama numarasını birbirinden bağımsız türetir; numaralar farklıysa araya biri girmiştir ve uygulama numara doğrulanmadan gönderime izin vermez.
SOHBETLER
Bire bir ve grup. Üyelik yönetilir: davet, kabul, çıkarma, ayrılma, dağıtma. Grupta tanıştığın biriyle eşleşmek tek dokunuş — karşı taraf kabul eder, link ya da QR gerekmez. Gruplar ad taşır, herkes grupta kendi adını seçer ve bildirim yalnız @ile anıldığında gelir. Birini çıkarmak yeni bir epoch ve taze bir grup sırrı üretir; çıkarılan kişi yeni sır altında yazılanı okuyamaz ve çıkarıldığını kendi kanalından öğrenir. Yönetici bir varis atar: cihazı giderse grubu varis devralır. Grubun ömür kuralı tek cümle ve ekranda yazılı — üç günde bir eşitlenmeyen grup silinir.
TESLİMAT
Bire birde iki saniyelik yoklama turu; mesaj turun sonunu beklemez, geldiği dalgada ekrana düşer. Grup ekranı açıkken yoklama relay'de bekletilir ve yeni mesaj yazıldığı an döner. Telefonda art arda gönderimler kuyruğa girer ve sıra ekranda; takılan Tor devresi yenisiyle değiştirilir. Çevrim süresi ölçülür ve ekranda gösterilir.
MEDYA
Fotoğraf ve sesli not, hem bire birde hem grupta. Metinle aynı sabit boyutlu blob'lara bölünür; teldeki her blob aynı görünür, gözlemcinin görebildiği tek şey kaç blob'un kıpırdadığıdır.
SANSÜR AŞIMI
Tor engelliyse uygulama sırayla doğrudan bağlantıyı, gömülü obfs4 köprülerini ve Snowflake'i dener, başaran yolu hatırlar; köprü satırı aramak gerekmez. Kendi köprünü (obfs4, WebTunnel, Snowflake) Gelişmiş'ten girebilirsin; taşıyıcı paketin içindedir.
ARKA PLAN
Varsayılan: uygulama açıkken yoklar, kapanınca oturum kilitlenir. Android'de arka planda alım isteğe bağlı ve en fazla sekiz saat: açarsan telefon cebindeyken de mesaj alır, süre dolunca oturum kendini kilitler.
KILIF
Uygulama kendini sıradan bir uygulama gibi gösterebilir — omzunun üstünden ekrana bakan biri için.
KASA
Tek bir şifreli dosya; içinde kaç kişi olursa olsun boyu hep aynı. Anahtar türetme bellek-serttir: tahmin etmek saldırgana bir sözlük taraması değil RAM'e mal olur.
ÜÇ ŞİFRE
Kendi şifren hesabını açar. İkinci bir şifre, sıradan ve az kullanılmış görünen ayrı bir decoy hesabı açar. Üçüncüsü kasayı yok eder. Hangisinin hangisi olduğu dışarıdan anlaşılmaz: seninkilerden biri olmayan her şifre birebir aynı şekilde başarısız olur, “yaklaştın” diyen bir cevap yoktur.
VEKİLLİK
Bir kişiyi, hesabını uzaktan imha edebilecek vekil olarak atayabilirsin. Komut zaten paylaştığınız kanaldan gider ve uygulama bir sonraki açılışında yokladığında uygulanır; o ana kadar relay'de yedi gün bekler.
EKRAN KORUMASI
Android'de uygulama FLAG_SECURE ile çalışır: ekran görüntüsü alınamaz, son uygulamalar önizlemesi karartılır.
CİHAZ SAĞLIK KONTROLÜ
Derlemenin gerçekte ne olduğunu söyleyen bir ekran: imza sertifikası parmak izi, sürüm, Tor ayakta mı, kasa yazımı başarılı mı. “Güncelleme gerçekten oturdu mu?” sorusunun cevabı burada.
PLATFORMLAR
Android ve Windows masaüstü. İkisinde de aynı Rust çekirdek, yeniden yazılarak değil üretilmiş bir köprüyle — telefon bir primitifi kazara yeniden yazamaz.

MEKANİZMA

Yönlendirme durumu nerede duruyor Solda iki kullanıcı ortadaki bir sunucuya bağlanır; sunucu kutusunun içinde "sen ok eş" gibi satırlardan oluşan bir yönlendirme tablosu vardır, yani kimin kiminle konuştuğunu bilir. Sağda iki kullanıcı da aynı adresi bağımsız olarak türetip oraya yazar ve okur; ortadaki aktarıcı yalnız eşit boyda opak bloblar tutar, adresi türetemez, göndereni okuyanla ilişkilendiremez. Mesaj yolunda yönlendirme durumu yoktur. geleneksel messenger sen eş sunucu sen → eş e → k m → r yönlendirme tablosu kimin kiminle konuştuğunu bilir callwhite sen eş adres iki kez türetilir aktarıcı opak bloblar yönlendirme durumu yok Yönlendirme durumu nerede duruyor Üstteki bölüm: iki kullanıcı ortadaki bir sunucuya bağlanır; sunucu kutusunun içinde "sen ok eş" gibi satırlardan oluşan bir yönlendirme tablosu vardır, yani kimin kiminle konuştuğunu bilir. Alttaki bölüm: iki kullanıcı da aynı adresi bağımsız olarak türetip oraya yazar ve okur; aktarıcı yalnız eşit boyda opak bloblar tutar, adresi türetemez, göndereni okuyanla ilişkilendiremez. geleneksel messenger sen sunucu sen → eş e → k m → r yönlendirme tablosu eş kimin kiminle konuştuğunu bilir callwhite sen adres iki kez türetilir aktarıcı opak bloblar eş yönlendirme durumu yok
Geleneksel messenger'da ortadaki sunucu mesajın nereye gideceğini bilir — yani kimin kiminle konuştuğunu. callwhite bu bilgiyi yoldan siler: adresi iki taraf da kendisi türetir, aktarıcı ise türetemediği ve kimseyle ilişkilendiremediği eşit boyda kutular tutar.

BİR GÖZLEMCİ NE GÖRÜR

Bir gözlemcinin gördüğü Üst üste üç şerit. Üstte geleneksel trafik: düzensiz patlamalar. Ortada callwhite okuma tarafı: eşit aralıklarla aynı boyda bloklar. Altta yazma tarafı: üstteki şeritle aynı ritimde patlıyor, örtülü değil diye işaretli. Geleneksel patlama = konuşmanın ritmi callwhite — okuma tarafı aynı boy, aynı aralık; boş sohbette de yazma tarafı: örtülü DEĞİL gönderdiğinde ritim hâlâ senin Bir gözlemcinin gördüğü Dikey sıralanmış üç şerit. Üstte geleneksel trafik: düzensiz patlamalar. Ortada callwhite okuma tarafı: eşit aralıklarla aynı boyda bloklar. Altta yazma tarafı: üstteki şeritle aynı ritimde patlıyor, örtülü değil diye işaretli. Geleneksel patlama = konuşmanın ritmi callwhite — okuma tarafı aynı boy, aynı aralık yazma tarafı: örtülü DEĞİL ritim hâlâ senin
Okuma tarafı: her çekiş aynı boyda, aralığı rastgele sektirilmiş — gözlemci için boş sohbetle yoğun sohbet aynı görünür. Yazma tarafı gönderdiğin anda çıkar.

Okuma tarafı sabit bütçelidir: bir yoklama turu relay'e 4096 baytlık sabit 64 adres sorar — iki parti, her biri tek istek — ve kasa açık olduğu sürece rastgele sektirilmiş aralıklarla koşar, sohbet olsun olmasın. Gerçek slotlar, hesap sırrından türeyen örtü adresleriyle doldurulur; art arda iki turu kesiştirmek dolguyu soymaz ve bütçe, kaç kişin olduğuna göre değişmez. Okuma tarafında boş bir sohbetle yoğun bir sohbet aynı şekildedir; yazma tarafı gönderdiğin anda çıkar ve gönderim gönderim olarak görünür.

TELEFON ELE GEÇTİĞİNDE

Tek kapı, dört son Tek bir şifre alanına bağlı tek bir kilit. Kendi şifren gerçek kasayı açar; decoy şifresi sıradan görünen ayrı bir kasayı açar; imha şifresi kasayı yok eder; yanlış şifre hiçbir şey yapmaz. Dördü de aynı kapıdan çıkar, dışarıdan bakan ayırt edemez. Kenarda iki öge: cihaz çevrimiçiyken çalışan vekil imhası ve yalnız gelişigüzel bakışa dayanan kılıf. ŞİFRE tek alan, ipucu yok tek kapı dışarıdan dördü de aynı görünür kendi şifren → gerçek kasa decoy şifresi → sıradan görünen ayrı kasa imha şifresi → kasa yok edilir yanlış şifre → hiçbir şey olmaz VEKİL — bir başkası uzaktan imha eder yalnız cihaz çevrimiçiyken çalışır KILIF — başka uygulama gibi görünür gelişigüzel bakışa dayanır, aramaya değil Tek kapı, dört son Tek bir şifre alanına bağlı tek bir kilit. Kendi şifren gerçek kasayı açar; decoy şifresi sıradan görünen ayrı bir kasayı açar; imha şifresi kasayı yok eder; yanlış şifre hiçbir şey yapmaz. Dördü de aynı kapıdan çıkar, dışarıdan bakan ayırt edemez. Kenarda iki öge: cihaz çevrimiçiyken çalışan vekil imhası ve yalnız gelişigüzel bakışa dayanan kılıf. ŞİFRE tek alan tek kapı dışarıdan dördü de aynı seninki → gerçek kasa decoy → sıradan ayrı kasa imha → kasa yok edilir yanlış → hiçbir şey olmaz VEKİL — bir başkası uzaktan imha eder yalnız cihaz çevrimiçiyken çalışır KILIF — başka uygulama gibi görünür gelişigüzel bakışa dayanır, aramaya değil
Tek kapı, dört son. Gerçek kasa, decoy, imha, hiçbir şey — dışarıdan hepsi aynı ekran.

Bir messenger'ın tehdit modelinin çoğu, cihazın sende kalacağını varsayar. Bu model varsaymıyor. İlgi çekici durum, birinin telefonunu tuttuğu ve ellerini izlediği durum.

Kurtarma yolu yok ve bu bilinçli: geri getirme yolu saldırganın da yürüyebileceği bir yoldur. Kasa sabit boyutlu tek bir dosya; içinde ne kadar şey olduğu — kaç kişi, kaç grup, hatta kullanıp kullanmadığın — dışarıdan okunamaz.

Uzaktan imha, önceden atadığın bir kişi üzerinden, zaten paylaştığınız kanaldan çalışır ve uygulama bir sonraki açılışında yokladığında uygulanır. Dışarıdan bakan biri için yanlış şifre ile decoy şifresi ayırt edilemez.

TEHDİT MODELİ

callwhite; yerel bir ağ gözlemcisine, internet sağlayıcısına, relay operatörüne ve cihazı elinden alan birine karşı tasarlandı. Dördü de mesajların içeriğini ve kasada ne olduğunu öğrenemez; kimin kiminle konuştuğu ilk üçüne kapalıdır.

Relay operatörü ayrı durur: ne yazdığını, kim olduğunu ve ne okuduğunu göremez, ama hangi adrese ne zaman yazıldığını ve ne zaman okunduğunu görür. Adresler her mesajda dönüyor ve hesaba bağlı değil; operatörün elinde kalan şey zamanlamadır.

Taşıma katmanı Tor; gömülü ve paketin içinde geliyor, kurulacak bir şey yok. İstemci bildiği her relay'e aynı blob'u yazar ve hepsinden okur; bir relay ortadan kalkınca sohbet onunla birlikte gitmez.

Cihaz üzerinde imha, Android'de sistem anahtar deposundan bir anahtar silmektir: kasayı açan şey yok olur ve eski bloklara ulaşmaya hiç bağlı değildir. Masaüstünde kasa, anahtar ve sayaç dosyalarının üzerine yazılıp silinir; Tor ve görünüm çalışma dizinleri kaldırılır.

FİZİK KURALLARINI AŞANLAR

Güvenliğin bir bölümü fizikle pazarlıktır: gecikme, bant genişliği, pil. En sıkı ayarı ölçtük — otuz saniyelik tur, her yuva sırayla, örtü her yerde — ve bir grup mesajı üç ila beş dakikada düşüyordu. Mesajlaşmanın mesajlaşma kalması için şu tercihleri yaptık.

KÜRESEL GÖZLEMCİ
Ağın tamamını aynı anda gören bir gözlemciye karşı tek koruma karışım ağıdır: mesajlar bekletilip karıştırılır, gecikme saniyelerden dakikalara çıkar. Anlık mesajlaşma için eklenmedi; talep olursa ayrı bir katman olarak eklenebilir.
YAZMA TARAFI
Okuma tarafı örtülüdür; yazma tarafı gönderdiğin anda çıkar. Yazmayı da örtmek, kimse yazmıyorken her cihazdan sürekli sahte yazım — her birinde iş kanıtıyla — demektir: pil ve bant genişliği. Gönderim anını gizlemenin bedeli budur; bugün ödetmiyoruz.
AÇIK GRUP EKRANI
Grup ekranı açıkken içerik halkası relay'de bekletilir ve mesaj yazıldığı an döner; ekran kapalıyken yoklama sabit hızlı ve üyelikten bağımsızdır. Karşılığı: o sırada relay aynı halkanın art arda yoklandığını görür — kim olduğunu değil, birinin o grupta aktif olduğunu. Hızı seçtik; ekran kapanınca desen eski hâline döner.
GRUP HALKASI
Bir grubun mesajları, üyelik değiştikçe dönen ortak bir halkada durur; tek yazım bütün üyelere ulaşır. Relay halkayı görür — kimin okuduğunu değil, halkanın yaşadığını ve kabaca ne sıklıkta yazıldığını. Bire birdeki her mesajda dönen adresin grupta yerini sabit bir halkaya bırakması, çok üyeye tek yazımla ulaşmanın karşılığıdır.
BANT GENİŞLİĞİ
Sabit hızlı örtü bant genişliğiyle ödenir: iki saniyelik turda saatte yaklaşık yarım gigabayt. Bunu düşürmenin tek yolu turu seyreltmek, yani mesajı geciktirmektir. Hızı seçtik; telefonda Wi-Fi öneriyoruz.
ARKA PLAN
İşletim sistemi arka planda süren bir yoklamayı ya durdurur ya pili yakar. Bu yüzden varsayılan, uygulama kapanınca kilitlenmektir; isteğe bağlı arka plan alımı sekiz saatle sınırlıdır ve bedelini — internet, şarj, kalıcı bildirim — baştan söyler.

RAKAMLAR

  • 4096bayt, her zaman Teldeki her blob aynı boyutta. Bir şey bulamayan sorgu da 4096 baytlık yem döner; doluluk bile bir orakül değil.
  • 64okuma / tur, her zaman Bir yoklama turu relay'e sabit 64 adres sorar — gerçek slotlar, hesap sırrından türeyen yemlerle doldurulur; tur başına yaklaşık 262 kB, iki istekte. Bütçe, kaç kişin olduğuna göre değişmez.
  • 2kapı iş kanıtı, her yazımda Önce 22 bitlik SHA-256 ön kapısı, sonra 64 MiB'de bellek-sert Argon2id. Ön kapı yazana yazım başına milyonlarca özet, relay'e mikrosaniye ödetir; Argon2 çağrı başına 125 ms (masaüstünde ölçüldü), zorluk iki çağrı bekliyor. Bir relay'i boğmak savunanın bant genişliğine değil saldıranın işlemcisine mal olur.
  • 1233otomatik test Rust çekirdek, masaüstü istemci, tarayıcı katmanı ve Android. Clippy -D warnings ile temiz. Kapanan kod bulguları, yazılabildiği her yerde adını taşıyan bir regresyon testi taşır.
  • 9iç kırmızı-takım turu Bir bulgunun sayılması için önce çürütülme denemesinden sağ çıkması gerekir: bir tur 53 adayın 43'ünü, bir diğeri 123'ün 100'ünü doğruladı; son iki tur bağımsız bir çürütme turuyla koştu ve 300 mutant gerçekten çalıştırıldı. Kritik bulguların hepsi kapandı; açık kalan yüksek bulgular bilinçli tercihlerdir ve yukarıda yazılıdır: yazma tarafı örtüsü ve grup halkası.
  • 0bilen sunucu Mesaj yolundaki hiçbir bileşen yönlendirme durumu tutmuyor. El konacak, celple istenecek, sızacak ya da satılacak bir sohbet grafiği yok.

İNDİR

Sürüm 0.8.19. AGPL-3.0 lisanslı; kaynak münhasır devir için tutuluyor.

İki paket de kutudan çalışır. Tor paketin içinde; kurulacak başka bir şey ve açılacak bir hesap yok.

  • Android callwhite-0.8.19.apk İndir — 19,5 MB, yalnız arm64

    SHA-256
    2c021f905f8534d6e234f3d8ebf22f925634371b13839ceca1623b98c4a452d1

    minisign imzası: callwhite-0.8.19.apk.minisig — doğrulama:
    minisign -Vm callwhite-0.8.19.apk -P RWRpQTPa0GuDQEDI4CTSJxBJNQlbz2br8hmlWJO9hp0c6z4DNgpqUIF0
    (açık anahtar callwhite.pub; SHA-256 sitenin, imza yayıncının sözüdür — ikisi birden tutmalı)

    İmzalı; Android her güncellemede aynı imzayı şart koşar. Denetimi kurulumdan ÖNCE, uygulamanın dışında yap: apksigner verify --print-certs; sertifika SHA-256'sı şuna uymalı:
    9A:E0:1A:B9:E5:C1:70:89:9F:D4:9D:BA:D5:5A:7E:95:3D:62:37:75:FD:31:89:FA:09:92:6A:A0:CA:6F:63:3B

    Farklıysa o paket bizden çıkmamıştır — kullanma. Uygulama içindeki Cihaz sağlık kontrolü ekranı yalnız kurulu paketin kendisi hakkında söylediğini tekrar eder; sahte bir derleme orada da "doğru" değeri gösterebilir — o ekran denetim değil, hatırlatmadır. Paket yalnız arm64-v8a taşıyor; bugünün bütün telefonlarını kapsar, x86_64 emülatöre kurulmaz.
  • Windows callwhite-0.8.19-windows.zip İndir — 12,9 MB, .zip

    SHA-256
    e35821d7bc64d7eb9c10bc0821716ee6ffd6c477c66db0240ee6de2c9d0f2d33

    minisign imzası: callwhite-0.8.19-windows.zip.minisig — doğrulama:
    minisign -Vm callwhite-0.8.19-windows.zip -P RWRpQTPa0GuDQEDI4CTSJxBJNQlbz2br8hmlWJO9hp0c6z4DNgpqUIF0
    (açık anahtar callwhite.pub; SHA-256 sitenin, imza yayıncının sözüdür — ikisi birden tutmalı)

    Kurulum sihirbazı yok, indirilecek başka bir şey yok. Zip'e sağ tıkla → Tümünü Ayıkla, callwhite klasörünü aç, callwhite BASLAT.cmd dosyasını çalıştır. İkililer program\ içinde, Tor da program\Tor\tor.exe yolunda.
Kurmadan önce hash'i karşılaştır. Tek komut sürer.
Windows  certutil -hashfile callwhite-0.8.19.apk SHA256
Linux    sha256sum callwhite-0.8.19.apk
macOS    shasum -a 256 callwhite-0.8.19.apk

İkilinin içinde kamuya açık bir relay adresi geliyor; kur ve eşleş. Ayarlar'dan kendi relay'ini de ekleyebilirsin — gömülü olana eklenir, mesajlar ikisine birden yazılıp ikisinden birden okunur.

Her yayın kararlı Rust kanalından, kilitli bağımlılık grafiğiyle (Cargo.lock, --locked) ve bağımlılık envanteriyle üretilir. APK imzalıdır ve sertifika parmak izi yukarıda; iki paketin de SHA-256'sı orada.

Sürüm notları

0.8.22 — hazırlanıyor

Henüz yayımlanmadı; yukarıdaki paketler 0.8.19. Bu sürümle gelenler: telefonda mesaj kuyruğu, süreç genelinde eşzamanlılık tavanı ve takılan Tor devresinin yenilenmesi, çevrim süresinin ölçülüp gösterilmesi; grup ekranı açıkken relay'de bekletmeli yoklama ve gecikmenin saniyelere inmesi; üye adları kalıcı, gönderen adı baloncuğun üstünde; yönetici varisi; grup ömür kuralı ekranda (üç günde bir eşitlenmeyen grup silinir); kasa v19. İki denetçili turun (kırmızı takım + 300 mutant) kapatmaları bu sürümlerde. Kasa ve grup biçimi değiştiği için iki cihaz birlikte güncellenir.

0.8.19

Telefonda davet akışı sadeleşti: "Yanıt Bekle" ve "(90 sn mühlet)" düğmeleri kalktı. Davet oluşturduğun anda uygulama yanıtı kendiliğinden yoklar, hangi ekranda olursan ol; linki göndermek için uygulamadan çıkarsan 90 saniye içinde dönmen yeter — düğmesiz. Sen başka ekrandayken gelen istek kişi listesinde şerit olarak görünür. İsteğe bağlı arka planda alıma tavan geldi: arka planda en fazla 8 saat, sonra oturum kendini kilitler. Masaüstü imha metinleri BitLocker sınırını söylüyor: disk şifreli değilse silinen dosyaların kalıntısı sökülen diskten okunabilir.

0.8.18

Sıfır ayar sansür aşımı: Tor engelliyse uygulama kendiliğinden doğrudan bağlantı → gömülü obfs4 köprüleri → Snowflake sırasını dener ve başaran yolu hatırlar; köprü satırı aramak gerekmez (köprü alanı Gelişmiş'in altına indi). Grup içi arkadaş ekleme: Üyeler ekranında tek dokunuş, karşı taraf Kabul/Reddet der, link ya da QR gerekmez. Arka planda alım isteğe bağlı ve varsayılan kapalı: Ayarlar → Gelişmiş'ten açılır; daha çok internet ve şarj harcar, kalıcı bildirim görünür ve oturum arka planda kilitlenmez (bedeli metinde yazar). Saldırgan-denetimli tüm ayrıştırıcılar artık bayt-fuzzer kapılarıyla sınanıyor.

0.8.17

Telefonda köprüler: Ayarlar → Köprüler alanına obfs4 ya da WebTunnel satırı girilir; taşıyıcı (lyrebird 0.8.1) paketin içindedir ve satır varken taşıyıcı yoksa Tor başlamayı reddeder — sessiz köprüsüzlük yok. Masaüstünde WebView2 arka plan ağı bayrakları da ortamdan kurulur (ölçüldü; Microsoft'a giden Edge telemetrisi tarayıcı bileşeninin kendi sınırıdır, sayfa düzeyi kapalı). Paketler artık minisign ile de imzalı (açık anahtar callwhite.pub).

0.8.16

Geniş kırmızı takım turunun kapatmaları ve dört yeni özellik. Relay'in yazma kapısı (PoW) düzeltildi ve yoklama artık tek istekle gidiyor (BATCH_GET): iki cihazın da bu sürüme geçmesi ve relay'in güncellenmesi gerekir. Yeni: gruplarda herkes kendi adını seçer; gruplarda bildirim yalnız @ile anıldığında; grup ekranı açıkken yoklama 10 saniyede bir; masaüstünde Tor'un engellendiği ağlar için köprü satırları (obfs4 / WebTunnel). Kapatmalar: uzun sessizlikten sonra kanal kalıcı sağırlaşmıyor; mühür v2 (kasa geri sarması nonce tekrarı üretmez); Tor devreleri kişi/grup başına ayrı; grup roster zinciri çivilenir (çatal tespiti); grup kontrol kutusu okumaları örtü partisinin içinde; yarım kalan üyelik yayını "yeniden dene" ile kurtarılır; davet linkini gören biri çöp yanıtla eşleşmeyi kilitleyemez; teslim edilmeyen mesaj sayısı söylenir; pano süre dolunca temizlenir; Android imhası dosyaları üzerine yazar. Kasa biçimi v17 (eski kasalar açılır).

0.8.15

Masaüstüne mikrofondan ses kaydı geldi (yalnız RAM, önce dinle). Güvenlik numarasını doğrulayınca kişi listesi anında güncellenir. Telefonda kişi silme düğmeleri görünür ve silerken "siliniyor" der. Grup mesajları tek baloncuk; grup listesinde ayrıl düğmesi yok (ayarlarda).

0.8.14

Telefonda katılım isteği düğmeleri görünmüyordu (satır düzeni); düzeltildi. İstekler artık yalnız grup ayarlarında (⚙), sohbette yalnız kırmızı bir işaret. Masaüstünde kilit açılır açılmaz yeniden kilitlenme düzeltildi; kişiye ad verince sonucu söylüyor.

0.8.13

Gruplara ad verilebiliyor: yönetici adı yayımlar, üyeler bir sonraki eşitlemede görür. Ad grup kontrol kutusunda şifreli taşınır; relay yalnız şifreli metni görür. Yeniden adlandırma üye ekleme gibi yeni bir epoch yayımlar. Bu sürüm için iki cihaz da 0.8.13 olmalı.

0.8.12

Telefonda grup adına dokununca üyeler ve katılım istekleri ayrı bir ekranda; ⚙ ise ana Ayarlar gibi ayrı bir grup ayarları ekranı. Katılım istekleri bölümü boşken de görünür. Güvenlik numarası doğrulandıktan sonra "aynı — doğrula" bandı hemen kapanıyor. Masaüstünde iki ayrı panel.

0.8.11

Telefonda ağ durumu ve ayarlar düğmesi başlığın sağ üstünde. Masaüstünde vekillik panelindeki boş QR kutusu görünmüyor; "yeni mesaj geldi" notu sohbete girince düşüyor.

0.8.10

Telefon masaüstünün düzenine geçti: Kişiler ve Gruplar ayrı sekmelerde, yeni kişi en üstte, son konuşan üstte. Ayarlar tek dokunuşla açılıyor. Grup ekranında katılım isteği sohbetin üstünde ve panel açmadan onaylanıyor; grup adına dokununca üyeler. Vekil ataması ve uzaktan imha komutu artık gönderenin kendi sohbetine de yazılıyor; imha düğmesi komut gittikten sonra kilitleniyor. Masaüstünde bildirimler üstte, grup ekranı sohbetle aynı boyda ve Kilitle düğmesi kalktı: uygulamayı kapatmak kilitler.

0.8.9

Gruptan çıkarılan üye artık bunu kendi kanalından, hangi grup olduğuyla birlikte öğreniyor. Bir grup yöneticisini kişi listesinden silmek ona bağlı grup kayıtlarını da temizliyor; ekran silmeden önce hangi grupların gideceğini söylüyor. Kanaldan vekil ataması alan telefonun donması ve beklenmedik boyda bir çerçevenin bir sohbetin alımını durdurması düzeltildi.

0.8.8

Şifre gücü ölçeri artık tavanı bir desene değil sözlükteki kelimeye uyguluyor. Telefonda linkle eşleşme. Masaüstünde kişiler ve gruplar tek panelde, son konuşan üstte.

0.8.7

Vekil atama artık kurulu sohbet üzerinden gidiyor ve karşı tarafa söyleniyor; QR yolu duruyor. Grup daveti ve grup ayarları ekranları yeniden düzenlendi. Tel değişti: vekillik için iki cihaz da bu sürümde olmalı.

0.8.6

Telefonda mesajlar geldiği anda ekrana düşüyor. Gruba alma hatası artık asıl kuralı söylüyor: gruba yalnız o grubun kendi davetiyle eşleşen kişiler alınır.

0.8.5

Mesaj turun sonunu beklemiyor; geldiği dalgada teslim ediliyor. Ayarlar → Gelişmiş → Son alım turunu ölç turun süresini ve dalga sayısını gösteriyor.

0.8.4

Cihaz testinden dokuz düzeltme: yeni kişi anında listede, katılım isteği reddedilebiliyor, ses ve fotoğraf göndermeden önce gözden geçirilebiliyor, medya oynatıcısında dışa aktarma kapalı.

0.8.3

Tel biçimi değişti; 0.8.2 ve öncesi yeni relay'e yazamaz — güncelle. Başarısız gönderimin adres indeksi yakması düzeltildi.

0.8.0

Bire bir sohbette doğrulama numarası karşılaştırılmadan gönderim yok. Numara yalnız eşleşme anında gösterilir.

GERÇEK CİHAZLARDA KOŞTURULDU

Birim testleri bir fonksiyonun davrandığını gösterir; iki makinenin konuşabildiğini göstermez. Aşağıdakiler uçtan uca, gerçek taşıma üzerinden, gerçek derlemeler arasında koşturuldu.

  • Android'den masaüstüne ve geri, Tor üzerinden, arada relay ile — metin, fotoğraf ve sesli not; bire birde ve grupta.
  • Farklı ağlardaki iki makine, davet linkiyle eşleştirildi ve doğrulama numarası iki uçta elle karşılaştırıldı.
  • Aynı anda üç relay: aynı blob hepsine aynalandı, biri sohbetin ortasında öldürüldü, teslim kalanlardan sürdü.
  • Yeniden başlatma kalıcılığı: iki istemci de kapatılıp açıldı, sohbetler kasadan sürdürüldü; hiçbir mesaj kaybolmadı, hiçbiri iki kez görünmedi.
  • Ele geçme tatbikatı: içinde gerçek veri olan bir cihazda önce decoy şifresi, sonra imha şifresi — sonrası dosya düzeyinde denetlendi.

NASIL İNŞA EDİLDİ

Sekiz Rust crate, iki istemci, tek çekirdek. Kriptografinin bir kullanıcı arayüzü olduğundan haberi yok; arayüz de kendi başına kriptografik bir karar veremiyor.

  • Çekirdek — Rust. Ratchet, adresleme, çerçeveleme, grup epoch'ları, örtü trafiği, kasa. G/Ç yok, platform yok, arayüz yok.
  • Android — Kotlin ve Jetpack Compose; aynı çekirdeğe üretilmiş bir UniFFI köprüsüyle bağlanır.
  • Masaüstü — Tauri; arayüz düz HTML ve CSS, kararlar Rust'ta. Çatı yok, paketlenmiş tarayıcı motoru yok.
  • Relay — opak bir anahtar-değer deposu: bulamayınca yem bayt döner, her yazımda iş kanıtı ister ve iletişim grafiğine çevrilebilecek hiçbir şey tutmaz.
  • Doğrulama — 1233 otomatik test. Her davranış kuralı bir kapıyla çivilenir; o kapılar, üretim kodu bilerek bozulup kırmızı yandıkları görülerek sınanır — son turda 300 mutant gerçekten koşturuldu.
  • Derleme — kararlı Rust kanalı + kilitli bağımlılık grafiği, -D warnings ile Clippy, yayın başına CycloneDX bağımlılık envanteri ve tuttuğu makineden hiç çıkmayan bir imza anahtarı.

İLETİŞİM

Sistem, kriptografi ve Rust üzerine uzaktan sözleşmeli ve tam zamanlı iş alıyorum. callwhite kaynağı münhasır devir için mevcut.

Yılmaz Mert · GitHub · LinkedIn