Teknis
Cara kerja Latchat
Apa yang sebenarnya dilakukan aplikasi ini terhadap pesan Anda, apa yang bisa Anda periksa sendiri, dan apa yang tetap tidak terbukti dari semuanya itu.
Halaman ini adalah penjelasan, bukan bukti. Kode sumber Latchat tidak dipublikasikan, dan belum ada pihak luar mana pun yang mengauditnya.
Yang bisa dilakukan halaman seperti ini hanyalah menjelaskan secara cukup rinci sehingga bisa ketahuan salah kalau memang salah. Jadi setiap bagian di bawah ini ditutup dengan apa yang tidak dibuktikannya, dan bagian itu ditulis dengan sungguh-sungguh.
1. Enkripsi
Klaimnya: isi pesan dienkripsi ujung ke ujung, dan server kami tidak memegang kunci yang bisa membukanya.
Cara kerjanya
Setiap pesan disegel dengan XChaCha20-Poly1305 sebelum meninggalkan ponsel Anda, memakai kunci yang dibuat khusus untuk pesan itu saja. Nomor pesan dan penanda rute ikut diautentikasi bersamanya, jadi perantara yang mengubahnya akan merusak segelnya dan pesannya ditolak.
Kunci-kunci itu diturunkan dari sebuah kunci grup yang dihitung sendiri oleh setiap anggota dan tidak dipegang oleh server mana pun. Setiap pengirim punya rantai kuncinya sendiri, dan setiap pesan punya kuncinya sendiri, yang diambil dari nomor urut pengirimnya. Nonce-nya juga diturunkan dari nomor yang sama, bukan diacak, supaya nonce yang terulang berarti nomor urut yang terulang, dan itu adalah sesuatu yang bisa dilihat dan ditolak oleh ponsel lain.
Identitas memakai Ed25519, pertukaran kunci memakai X25519, dan BLAKE2b dipakai untuk menurunkan kunci serta sebagai MAC grup. Undangan yang dikirim lewat tautan disegel dengan kunci dari angka rahasia yang diregangkan memakai Argon2id, 256 MiB memori dan tiga putaran, dan itulah sebabnya ponsel butuh beberapa detik untuk membukanya. Semuanya berasal dari libsodium, dikunci pada satu versi dengan checksum di dalam proses build. Tidak ada satu pun algoritma yang dibuat sendiri di sini.
Grup tidak memakai double ratchet, dan itu disengaja. Pesan di jaringan mesh bisa datang tidak berurutan dan terlambat berjam-jam; ratchet akan menghabiskan waktunya menyimpan kunci untuk pesan yang masih ada di ponsel orang lain di seberang lembah. Satu kunci per epoch membuka pesan mana pun dari epoch itu, kapan pun ia tiba. Ongkosnya disebutkan terus terang: tidak ada forward secrecy di dalam satu epoch. Yang benar-benar mengakhiri akses seseorang adalah mengeluarkannya dari grup, yang mengganti kunci grupnya.
Selain disegel, setiap pesan juga ditandatangani dengan kunci pribadi pengirimnya. Segel grup membuktikan sebuah pesan datang dari dalam grup; tanda tangan itulah yang membuktikan anggota mana yang mengirimnya. Tanpa itu, sesama anggota bisa menaruh nama orang lain di sebuah pesan, karena semua anggota menurunkan kunci grup yang sama.
Yang bisa Anda periksa sendiri
Pantau lalu lintas jaringan ponsel yang menjalankan Latchat. Ia hanya berbicara dengan dua alamat: layanan notifikasi Google, dan relay.latch.chat. Yang menyeberang ke perantara itu adalah amplop tersegel.
Baca kebijakan privasi. Di sana tertulis dalam bentuk tabel apa saja yang memang terlihat oleh server perantara, dan itu bukan nol: pola siapa berbicara dengan siapa, kapan, dan seberapa besar.
Yang tidak dibuktikan oleh bagian ini
- Byte tersegel di server perantara membuktikan bahwa server itu menerima ciphertext. Itu tidak membuktikan bahwa aplikasinya tidak menyimpan salinan kunci di tempat lain. Hanya kode sumbernya yang bisa menjawab itu, dan kode sumbernya tidak publik.
- Belum ada audit dari pihak ketiga. Tidak ada seorang pun di luar proyek ini yang pernah memeriksa kodenya.
- Tanda tangan membuktikan siapa yang menulis sebuah pesan. Ia tidak membuktikan bahwa isinya benar. Sesama anggota grup tetap bisa berbohong atas namanya sendiri, dan itu bukan sesuatu yang bisa diselesaikan oleh aplikasi mana pun.
- Tidak ada forward secrecy di dalam satu epoch: siapa pun yang berhasil mengambil kunci epoch dari sebuah ponsel bisa membuka pesan-pesan epoch itu yang masih tersimpan.
2. Jalurnya: internet dulu, Bluetooth kalau tidak ada
Klaimnya: internet adalah jalur biasanya, Bluetooth adalah jalur cadangannya, dan tidak satu pun dari keduanya dijanjikan pasti sampai.
Cara kerjanya
Kalau ada koneksi, pesan dititipkan ke sebuah server perantara kecil milik grup Anda. Server itu menyimpan amplop tersegel paling lama 24 jam dan membangunkan ponsel yang sedang tidur dengan notifikasi kosong, yang isinya benar-benar tidak ada apa-apa selain "ada sesuatu, bangun".
Kalau tidak ada koneksi, ponsel-ponsel di dalam grup saling terhubung langsung lewat Bluetooth dan saling mengoper apa yang sedang mereka bawa. Sebuah pesan berhenti berjalan ketika sudah sampai ke semua orang, atau ketika jatah waktunya 24 jam habis.
Kedua jalur dipakai sekaligus, bukan bergantian. Dan tidak satu pun dijanjikan: aplikasi ini tidak pernah menampilkan status terkirim yang tidak bisa dibuktikannya.
Yang bisa Anda periksa sendiri
Ini bagian yang benar-benar bisa Anda buktikan sendiri, dan cuma butuh lima menit serta dua ponsel yang ada di grup yang sama.
Satu. Nyalakan mode pesawat di kedua ponsel, lalu hidupkan lagi Bluetooth saja. Tidak ada internet dan tidak ada sinyal seluler. Kirim pesan. Pesannya sampai.
Dua. Matikan Bluetooth di kedua ponsel dan hidupkan wifi. Kirim pesan. Pesannya juga sampai.
Soal jaraknya, ini yang terukur, satu sesi di luar ruangan pada 13 Agustus 2026 dengan dua ponsel: sekitar 30 m untuk sambungan yang masih sanggup membawa pesan, dan 51 sampai 55 m sebelum sebuah ponsel berhenti terdeteksi sama sekali. Dua angka itu berbeda jauh, dan yang dipakai di halaman depan adalah yang lebih kecil, karena terdeteksi tidak sama dengan bisa berkirim pesan.
Yang tidak dibuktikan oleh bagian ini
- Angka jaraknya berasal dari satu sesi, satu pasang ponsel, di luar ruangan, layar menyala. Di dalam ruangan belum pernah diukur sama sekali.
- Tidak ada jalur yang menjamin pesan sampai. Notifikasi ke ponsel Android yang sedang tidur pernah terukur tertunda dengan median sekitar 4.392 detik pada prioritas biasa. Itu lebih dari satu jam, dan itu ukuran nyata, bukan perkiraan.
- Kalau semua orang di luar jangkauan Bluetooth dan tidak ada koneksi, pesannya menunggu. Ia tidak hilang, tapi juga tidak sampai, dan setelah 24 jam ia berhenti dibawa.
3. Apa yang tidak ada di dalam aplikasinya
Klaimnya: tidak ada analitik, tidak ada pelapor kerusakan, tidak ada SDK iklan, dan tidak ada pelacak. Satu pengecualian, dan hanya satu: Firebase Cloud Messaging, yang dipakai untuk membangunkan ponsel yang sedang tidur karena di Android tidak ada penggantinya.
Yang bisa Anda periksa sendiri
Sebuah berkas APK adalah arsip zip. Bukalah, lalu baca nama-nama kelas di dalam berkas
.dex nya. Kalau ada SDK analitik di dalamnya, namanya ada di situ.
Pemeriksaan itu dilakukan pada 25 Agustus 2026 terhadap kedua puluh berkas dex build debug.
Yang sama sekali tidak ada: crashlytics,
FirebaseAnalytics, com.google.android.gms.measurement,
firebase/perf, remoteconfig, inappmessaging.
Satu-satunya yang namanya mengandung kata analytics adalah
firebase-measurement-connector, yang isinya empat antarmuka dan satu kelas
kosong. Itu adalah lubang colokan tempat Analytics akan dipasang seandainya Analytics ada,
dan di sini tidak ada apa pun yang mengisinya.
Kalau Anda menjalankan pemeriksaan itu, pastikan dulu alat-alatnya benar-benar berjalan. Percobaan pertama pemeriksaan ini melaporkan hasil bersih justru karena salah satu alatnya tidak terpasang dan seluruh rangkaiannya gagal tanpa suara. Pemeriksaan yang lulus tanpa pernah berjalan terlihat persis sama dengan pemeriksaan yang lulus.
Yang tidak dibuktikan oleh bagian ini
- Anda hanya bisa memeriksa build yang ada di tangan Anda. Latchat belum dirilis, jadi hari ini belum ada build yang bisa Anda unduh dan periksa sendiri.
Yang belum ada
Ditulis di sini supaya Anda tidak perlu menemukannya sendiri.
- Kode sumbernya tidak publik.
- Belum ada audit keamanan dari pihak ketiga.
- Model ancamannya tidak dipublikasikan. Dokumennya ada dan ditulis pada 7 September 2026, tetapi seperti kode sumbernya, Anda tidak bisa memeriksanya. Isinya menyebut hal-hal yang tidak bisa ditutup dengan kode, dan itu tiga: kode sumbernya tidak publik, belum ada yang menyerangnya dari luar, dan server perantara tetap melihat metadata.
- Server perantara tetap melihat metadata. Bukan isi pesan, tetapi pola hubungan dan aktivitas. Rinciannya ada di kebijakan privasi.