Skip to content

Repository files navigation

CARAKA Logo

CARAKA Desktop

Secure Decentralized Offline Mesh Communication

Rust Tauri License: MIT Platform NIST LWC

Platform komunikasi mesh offline terdesentralisasi berbasis kriptografi ringan Ascon-AEAD128 standar NIST.
Berkomunikasi aman antar perangkat di jaringan lokal tanpa server pusat, tanpa internet.

πŸ“₯ Download β€’ πŸš€ Quick Start β€’ πŸ“– Dokumentasi β€’ πŸ—οΈ Arsitektur


✨ Fitur Utama

Fitur Keterangan
πŸ”’ End-to-End Encrypted Setiap DM dienkripsi dengan Ascon-AEAD128 (NIST SP 800-232) + X25519 ECDH sebelum meninggalkan perangkat
🌐 Mesh Networking Pesan di-relay melalui node perantara via protokol CLAMP tanpa perantara yang bisa membaca isinya
πŸ“‘ Auto Peer Discovery Penemuan peer otomatis via UDP Broadcast tanpa konfigurasi manual
πŸ”‘ X25519 ECDH Key Exchange Pertukaran kunci Diffie-Hellman berbasis kurva eliptik, HKDF-SHA256 untuk key derivation
πŸ›‘οΈ Private Key di Keychain OS Private key disimpan di Windows Credential Manager β€” tidak pernah ada di disk sebagai plaintext
πŸ“Š Token Bucket Rate Limiter Perlindungan per-peer: burst 200 paket, 100 paket/detik β€” pelanggaran menurunkan trust score
πŸ’Ύ Offline-First + Epidemic Sync Pesan tersimpan lokal dan disinkronkan otomatis saat peer kembali terhubung
πŸ” QR Code Peer Verification Verifikasi identitas peer via QR code dan Safety Number (SHA-256 canonical)
πŸ†˜ Emergency Broadcast Siaran darurat bertipe INFO / EVAC / STATUS / RESOURCE dengan flooding mesh
πŸ—ΊοΈ Radar Topology View Visualisasi real-time topologi jaringan mesh dengan garis koneksi antar node
πŸ›‘οΈ Replay Protection LRU cache 512 entri Packet ID untuk mencegah serangan replay paket
⚑ Lightweight Binary Rust dengan overhead memori minimal, cocok untuk perangkat low-end

πŸ—οΈ Arsitektur

CARAKA mengimplementasikan Protokol CLAMP (Compact Lightweight Authenticated Mesh Protocol), protokol lapisan aplikasi biner yang dirancang untuk keamanan dan efisiensi di jaringan mesh lokal.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     CARAKA Desktop (Tauri v2)                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚   Frontend  β”‚    β”‚         Backend (Rust)            β”‚    β”‚
β”‚  β”‚ HTML/CSS/JS │◄──►│  commands.rs  β”‚  state.rs        β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚                             β”‚                                β”‚
β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚         β–Ό                   β–Ό                   β–Ό           β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚   β”‚crypto.rs β”‚       β”‚routing.rsβ”‚       β”‚ store.rs β”‚        β”‚
β”‚   β”‚          β”‚       β”‚          β”‚       β”‚          β”‚        β”‚
β”‚   β”‚Ascon-    β”‚       β”‚Controlledβ”‚       β”‚ SQLite + β”‚        β”‚
β”‚   β”‚AEAD128   β”‚       β”‚Flooding  β”‚       β”‚Ciphertextβ”‚        β”‚
β”‚   β”‚X25519    β”‚       β”‚Rate Limitβ”‚       β”‚ Only     β”‚        β”‚
β”‚   β”‚HKDF-SHA2 β”‚       β”‚TrustScoreβ”‚       β”‚          β”‚        β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β”‚                             β”‚                                β”‚
β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚         β–Ό                   β–Ό                   β–Ό           β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚   β”‚discovery β”‚       β”‚transport β”‚       β”‚  sync.rs β”‚        β”‚
β”‚   β”‚  .rs     β”‚       β”‚  .rs     β”‚       β”‚          β”‚        β”‚
β”‚   β”‚UDP :7770 β”‚       β”‚TCP :7771 β”‚       β”‚Epidemic  β”‚        β”‚
β”‚   β”‚Broadcast β”‚       β”‚+ Sync    β”‚       β”‚Sync      β”‚        β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Stack Teknologi

Lapisan Teknologi
Framework Desktop Tauri v2
Backend Rust 1.75+
Frontend HTML5, CSS3, Vanilla JavaScript
Enkripsi Simetris Ascon-AEAD128 (NIST SP 800-232 / NIST LWC Winner)
Key Exchange X25519 ECDH via x25519-dalek
Key Derivation HKDF-SHA256 via hkdf + sha2
Penyimpanan Kunci Windows Credential Manager via keyring v2
Database SQLite via rusqlite (hanya menyimpan ciphertext)
Transport TCP :7771 (data) + UDP :7770 (discovery)
QR Code qrcode 0.14 + image 0.25 + base64 0.22

πŸ“¦ Instalasi

Opsi 1: Download Installer (Direkomendasikan)

Unduh installer terbaru dari halaman Releases:

  • Windows β†’ CARAKA Desktop_x.x.x_x64-setup.exe (NSIS Installer)
  • Windows β†’ CARAKA Desktop_x.x.x_x64_en-US.msi (MSI Package)

Opsi 2: Build dari Source

Prasyarat:

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Install Tauri CLI
cargo install tauri-cli

Build:

# Clone repository
git clone https://github.com/0xAre/CARAKA-DEKSTOP.git
cd CARAKA-DEKSTOP

# Jalankan mode development
cargo tauri dev

# Atau build release
cargo tauri build

πŸš€ Menjalankan Aplikasi

Demo Komunikasi Multi-Node (3 Laptop)

  1. Hubungkan semua laptop ke jaringan Wi-Fi yang sama

  2. Buka port Firewall di setiap laptop (jalankan sebagai Administrator):

    New-NetFirewallRule -DisplayName "CARAKA UDP Discovery" -Direction Inbound -Protocol UDP -LocalPort 7770 -Action Allow
    New-NetFirewallRule -DisplayName "CARAKA TCP Data" -Direction Inbound -Protocol TCP -LocalPort 7771 -Action Allow
  3. Jalankan caraka-desktop.exe di ketiga laptop. Saat Windows Firewall meminta izin, klik Allow.

  4. Peer Discovery Otomatis β€” dalam Β±30 detik, laptop lain akan muncul di sidebar secara otomatis.

  5. Tambah Peer Manual (jika discovery tidak berjalan):

    • Klik tombol + di sidebar
    • Masukkan IP address laptop lain (cek via ipconfig β†’ bagian Wi-Fi)
    • Port: 7771

πŸ” Model Keamanan

Alice (Laptop 1)                Bob (Relay)              Charlie (Laptop 3)
      β”‚                              β”‚                          β”‚
      │──── DM-Key = HKDF(ECDH) ────►│                          β”‚
      β”‚                              β”‚    (tidak bisa baca isi) β”‚
      │──── Ascon-AEAD128(msg) ──────►│──── forward paket ───────►│
      β”‚                              β”‚                          β”‚
      │◄═══════════════════ Pesan hanya terbaca oleh Charlie ══════╝
Properti Implementasi
Private key Windows Credential Manager (tidak pernah di disk plaintext)
Ciphertext di disk SQLite hanya menyimpan bytes terenkripsi
Relay node Hanya meneruskan paket terenkripsi, tidak bisa baca isi
Replay attack LRU cache 512 Packet ID + nonce window Β±300 detik
Rate limiting Token bucket per-peer: burst 200, 100 pkt/det
AAD binding Header CLAMP 13-byte sebagai AAD β€” ciphertext terikat ke konteks paket
Hop authentication HKDF-derived HopMAC di setiap relay hop

πŸ“ Struktur Proyek

CARAKA-DEKSTOP/
β”œβ”€β”€ src/                          # Frontend (HTML/CSS/JS)
β”‚   β”œβ”€β”€ index.html                # Tampilan utama (chat, radar, settings)
β”‚   β”œβ”€β”€ main.js                   # Logic UI & Tauri IPC
β”‚   └── styles/main.css           # Styling
β”‚
β”œβ”€β”€ src-tauri/                    # Backend Rust
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ main.rs               # Entry point Tauri + command registration
β”‚   β”‚   β”œβ”€β”€ state.rs              # AppState, node lifecycle
β”‚   β”‚   β”œβ”€β”€ commands.rs           # Tauri IPC: send_dm, broadcast, QR, safety number
β”‚   β”‚   β”œβ”€β”€ crypto.rs             # Ascon-AEAD128 + X25519 ECDH
β”‚   β”‚   β”œβ”€β”€ keys.rs               # Key generation & Credential Manager
β”‚   β”‚   β”œβ”€β”€ packet.rs             # CLAMP packet framing & types
β”‚   β”‚   β”œβ”€β”€ routing.rs            # Mesh routing, trust score, rate limiting
β”‚   β”‚   β”œβ”€β”€ discovery.rs          # UDP peer discovery (:7770)
β”‚   β”‚   β”œβ”€β”€ transport.rs          # TCP transport + epidemic sync handlers
β”‚   β”‚   β”œβ”€β”€ store.rs              # SQLite encrypted store
β”‚   β”‚   β”œβ”€β”€ sync.rs               # Epidemic sync coordination
β”‚   β”‚   β”œβ”€β”€ hotspot.rs            # Wi-Fi hotspot management
β”‚   β”‚   └── network_monitor.rs    # Network interface monitoring
β”‚   β”œβ”€β”€ icons/                    # App icons (semua ukuran, CARAKA brand)
β”‚   β”œβ”€β”€ capabilities/
β”‚   β”‚   └── default.json          # Tauri v2 permissions
β”‚   └── tauri.conf.json           # Konfigurasi Tauri (CSP, NSIS, signing)
β”‚
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ CLAMP-SPEC.md             # Spesifikasi protokol CLAMP lengkap
β”‚   β”œβ”€β”€ 01_PROJECT_PROPOSAL.md
β”‚   β”œβ”€β”€ 02_TECHNICAL_DESIGN.md
β”‚   └── 03_DEVELOPMENT_GUIDE.md
β”‚
└── .github/
    └── workflows/
        └── release.yml           # CI/CD: build & release otomatis via tag v*.*.*

πŸ“– Dokumentasi

Spesifikasi teknis protokol CLAMP tersedia di docs/CLAMP-SPEC.md, mencakup:

  • Format paket biner (62-byte fixed header)
  • Semua tipe paket (DM, Channel, SyncReq/Resp/Data, Hello, Broadcast)
  • Detail kriptografi: Ascon-AEAD128, X25519 ECDH, HKDF-SHA256 DM key, HopMAC
  • Routing, replay protection, trust score, rate limiting
  • Epidemic sync, inner DM payload JSON, broadcast payload JSON

πŸ—ΊοΈ Roadmap

  • Fase 1 β€” Core Cryptographic Engine (Ascon-AEAD128, X25519 ECDH, HKDF)
  • Fase 2 β€” CLAMP Protocol Engine (packet framing, replay protection, trust score)
  • Fase 3 β€” P2P Networking (UDP discovery, TCP transport, mesh routing)
  • Fase 4 β€” GUI Desktop (Tauri v2, chat UI, radar topology, peer management)
  • Fase 5 β€” Security Hardening (keyring, rate limiting, CSP, QR verification, safety number)
  • Fase 6 β€” Fitur Lanjutan (epidemic sync, emergency broadcast types, CI/CD release pipeline)
  • Fase 7 β€” Evaluasi & Benchmark (microbenchmark, network benchmark, paper)

🀝 Kontribusi

Kontribusi sangat disambut! Silakan buka Issue atau Pull Request.

  1. Fork repository ini
  2. Buat branch fitur baru: git checkout -b feat/nama-fitur
  3. Commit perubahan: git commit -m 'feat: tambah fitur X'
  4. Push ke branch: git push origin feat/nama-fitur
  5. Buka Pull Request

πŸ“„ Lisensi

Didistribusikan di bawah Lisensi MIT. Lihat LICENSE untuk informasi lebih lanjut.


Dibuat dengan ❀️ menggunakan Rust + Tauri + Ascon

"Komunikasi aman bukan hak istimewa β€” ini adalah kebutuhan dasar."

About

Secure decentralized offline mesh communication platform built with Tauri, Rust, and Ascon-AEAD128 lightweight cryptography.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages