Gambaran Umum

Aplikasi obrolan real-time terenkripsi end-to-end yang dibangun dalam C++ menggunakan kerangka kerja web Crow dan ASIO untuk jaringan asinkron. Mengimplementasikan enkripsi simetris AES sebelum transmisi pesan dan dekripsi asimetris RSA pada sisi penerima. Menampilkan pesan real-time berbasis WebSocket, otentikasi pengguna, TLS/SSL dengan sertifikat mandiri, dan arsitektur multi-thread dengan antrean pesan dilindungi mutex.

Masalah

Sistem chat real-time umumnya menyimpan dan mengirimkan pesan dalam teks biasa di server, membuatnya rentan terhadap pelanggaran sisi server dan serangan man-in-the-middle. Ada nilai edukatif dalam mendemonstrasikan konsep enkripsi end-to-end melalui implementasi yang berfungsi — menunjukkan bagaimana enkripsi simetris (AES) di sisi pengirim dan dekripsi asimetris (RSA) di sisi penerima dapat menciptakan saluran komunikasi aman di mana server hanya melihat ciphertext.

Solusi

Aplikasi chat real-time terenkripsi end-to-end berbasis C++ yang dibangun dengan framework web Crow dan ASIO untuk networking asinkron. Pesan dienkripsi dengan AES (simetris) sebelum transmisi dan didekripsi dengan RSA (kunci privat asimetris) di sisi penerima. Server menangani koneksi WebSocket melalui Crow, mengelola antrian pesan yang dilindungi mutex untuk thread safety, dan menyajikan UI web dari template. TLS/SSL diimplementasikan dengan sertifikat self-signed (cert.pem/key.pem). Autentikasi pengguna mengatur akses sebelum pertukaran pesan.

Fitur Unggulan

Enkripsi End-to-End

Enkripsi simetris AES diterapkan pada pesan sebelum transmisi. Dekripsi asimetris RSA di sisi penerima. Server hanya memproses dan menyimpan ciphertext — plaintext tidak pernah menyentuh server.

Messaging Real-Time WebSocket

Implementasi WebSocket framework Crow memungkinkan pertukaran pesan real-time full-duplex. Connection pool yang dilindungi mutex mengelola koneksi WebSocket concurrent dengan aman dalam lingkungan multi-threaded.

Keamanan Transport TLS/SSL

Sertifikat self-signed (cert.pem/key.pem) menyediakan enkripsi transport-layer via OpenSSL. Semua komunikasi antara klien dan server dienkripsi pada application layer dan transport layer.

Arsitektur Multi-threaded

Event loop ASIO dengan std::mutex untuk akses antrian pesan yang thread-safe. Menangani koneksi WebSocket concurrent dan pengiriman pesan tanpa race condition.

Autentikasi Pengguna

Sistem login mengatur akses ke chat sebelum messaging terenkripsi. Manajemen session mencegah akses pesan yang tidak sah.

Arsitektur

Aplikasi C++ menggunakan Crow (framework web header-only) dengan ASIO untuk async I/O. Endpoint WebSocket mengelola vector koneksi aktif yang dilindungi mutex. Pesan disimpan dalam std::vector<Message> dengan timestamp, user, dan field konten. Layer enkripsi (encryption.h) menyediakan cipher AES XOR dan placeholder RSA. UI HTML/JS disajikan dari direktori templates/ via rendering mustache Crow. TLS dikonfigurasi via konteks SSL ASIO dengan sertifikat self-signed.

Cara Penggunaan

Compile dengan Makefile yang disediakan (memerlukan header ASIO dan Crow). Jalankan executable yang dikompilasi untuk memulai server. Akses UI web di browser pada alamat server. Autentikasi dengan kredensial untuk masuk ke chat. Pesan dienkripsi di sisi klien sebelum dikirim — server hanya menyimpan dan meneruskan ciphertext. Beberapa pengguna concurrent didukung melalui koneksi WebSocket yang dikelola dengan connection pool yang di-lock mutex.

Dampak & Hasil

Mendemonstrasikan konsep enkripsi end-to-end dalam implementasi C++ yang sepenuhnya berfungsi, menjembatani kesenjangan antara teori kriptografi dan aplikasi praktis. Antrian pesan yang dilindungi mutex dan connection pool WebSocket menampilkan fundamental pemrograman sistem dalam C++. Implementasi TLS/SSL menambahkan keamanan transport-layer di atas E2EE application-layer untuk defense-in-depth. Project ini berfungsi sebagai implementasi referensi untuk memahami bagaimana aplikasi messaging aman modern mengimplementasikan enkripsi berlapis.