Keamanan & Enkripsi
Terakhir diperbarui: 21 Desember 2025 | Versi 2.9.11
LumaChat menggunakan Signal Protocol — standar industri yang sama digunakan oleh Signal, WhatsApp, dan aplikasi messaging terkemuka lainnya.
Arsitektur Zero-Knowledge
LumaChat dibangun dengan prinsip Zero-Knowledge — server kami tidak memiliki kemampuan untuk membaca pesan Anda:
┌─────────────────────────────────────────────────────────────┐ │ ZERO-KNOWLEDGE SERVER │ ├─────────────────────────────────────────────────────────────┤ │ │ │ YANG SERVER SIMPAN: │ │ ├─ Encrypted blobs (data terenkripsi, tidak bisa dibaca) │ │ ├─ Public keys (untuk key exchange) │ │ └─ Metadata routing (LINK ID, timestamp) │ │ │ │ YANG SERVER TIDAK BISA LAKUKAN: │ │ ├─ ❌ Membaca isi pesan │ │ ├─ ❌ Mendekripsi media │ │ ├─ ❌ Mengakses private key │ │ └─ ❌ Merekonstruksi percakapan │ │ │ └─────────────────────────────────────────────────────────────┘
Signal Protocol
Protokol enkripsi kami terdiri dari komponen-komponen berikut:
X3DH Key Exchange
Extended Triple Diffie-Hellman untuk pertukaran kunci awal yang aman, bahkan saat penerima offline.
Double Ratchet
Algoritma yang memastikan forward secrecy — setiap pesan memiliki kunci unik.
AES-256-GCM
Enkripsi simetris dengan authenticated encryption untuk melindungi konten pesan.
X25519
Elliptic Curve Diffie-Hellman untuk key exchange dengan keamanan 256-bit.
Alur Enkripsi Pesan
┌──────────────┐ ┌──────────────┐
│ PENGIRIM │ │ PENERIMA │
└──────┬───────┘ └──────┬───────┘
│ │
│ 1. Tulis pesan │
│ 2. Enkripsi dengan session key │
│ │
│ 3. Kirim via WebSocket (terenkripsi) │
├──────────────────────────────────────────────────►│
│ [Encrypted Message] │
│ │
│ 4. Dekripsi
│ 5. Tampilkan
│ │
│ 6. Delivery receipt │
│◄──────────────────────────────────────────────────┤
│ │
Enkripsi Media (100MB+)
Media dienkripsi sebelum upload menggunakan teknologi chunked upload:
- Enkripsi lokal: File dienkripsi dengan AES-256-GCM di perangkat Anda
- Chunking: File dipecah menjadi chunk 256KB
- Upload: Setiap chunk diupload terpisah dengan progress indicator
- Storage: Server menyimpan encrypted blob (tidak bisa dibaca)
- Key transfer: Kunci dekripsi dikirim via E2E encrypted message
- Auto-delete: Media dihapus otomatis setelah 30 hari
Enkripsi Panggilan (WebRTC)
Panggilan suara dan video menggunakan WebRTC dengan enkripsi:
- DTLS-SRTP: Enkripsi media stream
- Peer-to-peer: Audio/video tidak melewati server LumaChat
- STUN/TURN: Hanya untuk NAT traversal, bukan konten
Transparansi Enkripsi (v2.8.7+)
Anda dapat memverifikasi enkripsi secara visual di aplikasi:
Privacy Badge
Indikator enkripsi di profil kontak
Session Fingerprint
Format: XXXX-XXXX untuk verifikasi
Encryption Panel
Detail status enkripsi di menu chat
Manajemen Kunci
| Jenis Kunci | Rotasi | Fungsi |
|---|---|---|
| Identity Key | Tidak (kecuali compromised) | Identitas jangka panjang |
| Signed PreKey | Setiap 7 hari | Key exchange medium-term |
| One-Time PreKey | Sekali pakai | Forward secrecy maksimal |
| Session Key | Setiap pesan (ratchet) | Enkripsi pesan individual |
Keamanan Infrastruktur
- TLS 1.2+: Semua koneksi terenkripsi
- HTTPS/WSS: Tidak ada plaintext traffic
- Rate Limiting: Perlindungan brute-force
- Helmet.js: Security headers
- bcrypt: Password hashing (12 rounds)
- JWT: Token authentication dengan expiry
Tips Keamanan untuk Pengguna
✅ Yang Harus Dilakukan
- Verifikasi kontak baru via QR Code
- Hubungkan email untuk recovery
- Update aplikasi secara berkala
- Gunakan PIN/biometrik di HP
❌ Yang Harus Dihindari
- Jangan share QR Code di publik
- Jangan install APK dari sumber tidak resmi
- Jangan klik link mencurigakan
- Jangan share LINK ID sembarangan
Pertanyaan Keamanan?
Jika Anda menemukan kerentanan keamanan, silakan laporkan ke security@lumachat.xyz. Kami menghargai responsible disclosure.