Salah satu inovasi terbesar pada Respect Desktop adalah arsitektur In-Memory Virtual Host (Trailer V2). Pendekatan ini memungkinkan Respect mengemas ribuan file frontend web (HTML, JS, CSS, aset gambar, font) ke dalam satu file .exe mandiri tanpa pernah mengekstrak file ke disk dan tanpa membuka port jaringan lokal.
| Parameter | ❌ 1. File Protocol (file:///) |
⚠️ 2. Disk Local Server (Tradisional) | 🌟 3. In-Memory Virtual Host (http://app/) |
🚀 4. In-Memory Local Server (--server) |
|---|---|---|---|---|
| Kinerja & Kecepatan | Terbatas (I/O lambat) | Sedang (I/O disk) | Maksimal (0 ms dari RAM) | Sangat Cepat (RAM + Loopback) |
ES Modules (import/export) |
❌ Diblokir CORS Chromium | ✅ Berfungsi | ✅ Berfungsi sempurna | ✅ Berfungsi sempurna |
| Fetch API & Relative URL | ❌ Diblokir (null origin) |
✅ Berfungsi | ✅ Berfungsi sempurna | ✅ Berfungsi sempurna |
Secure Context (crypto.subtle) |
❌ isSecureContext: false |
✅ isSecureContext: true |
⚠️ isSecureContext: false |
✅ isSecureContext: true |
| Ekstraksi ke Hard Drive | Menulis file ke %TEMP% |
Wajib ekstrak ribuan file | NOL EKSTRAKSI (100% di RAM) | NOL EKSTRAKSI (100% di RAM) |
| Port Jaringan TCP | Nol | Membuka Port tetap di OS | NOL PORT (Tidak ada socket) | Port Acak Loopback 127.0.0.1:0 |
| Isolasi Keamanan | Terisolasi | Rentan port scanner lokal | 100% Terisolasi di Respect | Terikat ketat ke 127.0.0.1 |
| Bentrok VPN / Proxy | Tidak | Rentan bentrok proxy | 100% Kebal (Bebas proxy) | 100% Kebal (Bypass localhost) |
Fleksibilitas Respect: Anda dapat menggunakan mode default In-Memory Virtual Host (
http://app/) untuk isolasi 0-port maksimal, atau menyalakan flag--server(atau--mode server) jika aplikasi Anda memerlukan fitur modern yang mewajibkan Secure Context (seperticrypto.subtle,crypto.randomUUID(), dannavigator.clipboard) tanpa mengorbankan prinsip zero-disk file footprint.
Format binary Respect menggunakan teknik PE Overlay Trailer yang diperluas untuk mendukung arsip multi-file terkompresi Zstandard level 19 dan terenkripsi AES-256-GCM:
+-------------------------------------------------------------------------+
| respect.exe / respect-lite.exe |
| - Windows PE Base Executable (Go Runtime + Browser Wrapper) |
| - Embedded Engine Assets (blink.dll.zst, icon, rcedit.exe) |
+-------------------------------------------------------------------------+
| ENCRYPTED PAYLOAD BLOB (AES-256-GCM Terotentikasi): |
| ├── 12-byte Random Nonce |
| ├── Ciphertext TAR Archive (Zstandard level 19): |
| │ ├── respect.json <-- Konfigurasi & title aplikasi |
| │ ├── index.html <-- Entry point HTML |
| │ └── assets/ <-- Bundle JS, CSS, Font, Image |
| └── 16-byte GCM Authentication Tag |
+-------------------------------------------------------------------------+
| Panjang Payload Encrypted (8-byte Little Endian uint64) |
+-------------------------------------------------------------------------+
| Magic Identifier (17-byte): "RESPECT_PAYLOAD_V2" |
+-------------------------------------------------------------------------+
RESPECT_PAYLOAD_V1: menggunakan parser JSON tunggal legacy.RESPECT_PAYLOAD_V2: menggunakan pipeline dekripsi AES-256-GCM dan streaming dekompresi ZSTD TAR in-memory.Kode sumber frontend web (JavaScript logika bisnis, endpoint API rahasia, token otentikasi) yang dikemas di dalam binary executable rentan terbongkar jika disimpan dalam teks mentah (plaintext). Respect menerapkan skema proteksi biner:
Kunci enkripsi tidak pernah disimpan secara hardcoded di dalam file binary. Kunci 256-bit diturunkan saat runtime melalui fungsi DeriveKey:
DeriveKey(peSample []byte, totalSize int64)
rcedit.Enkripsi menggunakan mode Galois/Counter Mode (GCM):
.exe, verifikasi GCM Tag akan gagal secara kriptografis dan eksekusi langsung dihentikan.map[string][]byte di memori RAM Go.mbOnLoadUrlBegin mencegat setiap request yang diawali http://app/* atau http://app.local/*.tarball.DetectMIME(relPath) dan dikirim ke Chromium melalui mbNetSetMIMEType.mbNetSetData tanpa menyentuh soket jaringan.favicon.ico) dicegat langsung di memori untuk mencegah kebocoran request ke stack jaringan eksternal.tarball.NewMemoryFS(files) yang mengimplementasikan antarmuka standar io/fs.FS.app.Resource.Bind("app", memFS).http://app/index.html dilayani secara instan dari RAM.| ⬅️ Sebelumnya: 2. Perbandingan Edisi | Daftar Isi | Selanjutnya: 4. Lifecycle & Alur Internal ➡️ |