Enkripsi
Salin prompt setup yang berisi langkah install dan panduan markdown lengkap untuk plugin ini.
Capgo menyediakan enkripsi end-to-end yang robust untuk bundle aplikasi Anda, memastikan bahwa code JavaScript dan aset Anda terlindungi selama transmisi dan penyimpanan. Sistem enkripsi ini dirancang untuk memberikan Anda kendali penuh atas keamanan aplikasi sambil tetap mempertahankan kenyamanan live updates.
Ikhtisar
Bagian berjudul “Ringkasan”Sistem enkripsi Capgo menggunakan metode kriptografi standar industri untuk melindungi bundle Anda dari akses tidak sah. Saat enkripsi diaktifkan, bundle Anda dienkripsi sebelum meninggalkan lingkungan pengembangan Anda dan tetap terenkripsi hingga didekripsi oleh aplikasi Anda di perangkat pengguna.
Apa yang Sebenarnya Dilindungi oleh Enkripsi: Berbeda dengan sistem OTA yang hanya menandatangani update, Capgo mengenkripsi bundle yang di-upload sebelum disimpan dan dikirim. Ini melindungi isi bundle dari akses sembarangan saat disimpan atau transit, serta memastikan hanya pemegang private key Anda yang bisa membuat update terenkripsi yang valid. Ini tidak tidak membuat aset web yang sudah dirilis mustahil untuk di-reverse engineer: public key yang digunakan client untuk mendekripsi update didistribusikan di dalam aplikasi, sehingga penyerang yang gigih tetap bisa mengekstraknya dan memeriksa isi bundle dengan upaya yang cukup.
Model keamanan
Kerahasiaan terhadap Capgo
Bagian berjudul “Kerahasiaan terkait Capgo”Kunci privat RSA Anda dibuat dan disimpan di mesin Anda. Capgo CLI tidak pernah mengirimkan kunci privat Anda, dan Capgo tidak menyimpannya. Capgo juga tidak menyimpan kunci publik RSA Anda secara penuh: upload hanya mencakup key_id (20 karakter pertama dari body PEM) agar channel bisa mencocokkan key pair yang Anda pakai.
Full bundle terenkripsi disimpan dan dikirim sebagai ciphertext AES-128-CBC. Layanan Capgo, CDN, object storage, maupun siapa pun di jalur pengiriman yang hanya melihat artefak yang dihosting tidak bisa membaca JavaScript, HTML, atau aset Anda tanpa private key Anda.
Kerahasiaan maksimal dari Capgo
Bagian berjudul “Kerahasiaan maksimal dari Capgo”Enkripsi default sudah menjaga bundle konten tetap rahasia di penyimpanan Capgo dan saat transit. Jika Anda juga ingin membatasi informasi yang bisa dipelajari Capgo dengan menghubungkan update channel ke binary store tertentu, ikuti panduan berikut.
Gunakan app ID Capgo khusus. Atur plugins.CapacitorUpdater.appId (Capgo Anda app_id) ke nilai yang tidak sama dengan iOS bundle ID atau Android application ID Anda. Build Store dan MDM menyematkan RSA public key Anda di capacitor.config. Saat Capgo app_id cocok dengan nama package store, akan lebih mudah mengaitkan aplikasi Capgo dengan binary yang dipublikasikan yang berisi public key tersebut. App ID Capgo yang terpisah mencegah kaitan langsung tersebut.
Capgo Builder dan public key. Capgo Builder mengunggah zip proyek Anda dengan capacitor.config (dan native tree), termasuk plugins.CapacitorUpdater.publicKey setelah key save. Agar public key tidak masuk ke upload Builder:
- Build aplikasi native secara lokal atau di CI Anda sendiri saat kerahasiaan dari Capgo penting, dan hindari mengunggah tree tersebut melalui Capgo Builder selama public key masih ada di config, atau
- Tambahkan public key dengan
key savehanya setelah semua upload Builder yang tidak boleh mengekspos key sudah selesai, atau - Jika Anda mengandalkan Capgo Builder untuk native builds, anggap workflow ini memberikan integritas (checksum bertanda tangan) tetapi jangan tidak asumsikan kerahasiaan dari Capgo setelah public key disertakan dalam upload Builder.
Enkripsikan upload delta. Isi file delta (parsial) berupa plaintext kecuali jika Anda menggunakan @capgo/capacitor-updater 6.14.4 atau yang lebih baru (enkripsi parsial otomatis diaktifkan untuk upload terenkripsi pada versi updater yang didukung) atau teruskan --encrypt-partial aktif bundle upload. Bahkan dengan enkripsi parsial, nama file yang tercantum dalam delta manifest tidak dienkripsi; hanya hash per file yang dibungkus RSA.
Integritas
Bagian berjudul “Integrity”Setelah dekripsi, updater menghitung SHA-256 atas bundle dan membandingkannya dengan checksum yang dipulihkan dari tanda tangan yang dibungkus RSA. Jika tidak cocok, bundle dihapus dan tidak pernah diaktifkan:
- Android memeriksa checksum setelah dekripsi dan sebelum mengekstrak arsip.
- iOS mendekripsi dan mengekstrak terlebih dahulu, lalu memverifikasi checksum sebelum bundle dapat diaktifkan.
Jika kunci publik dikonfigurasi, checksum yang hilang atau tidak ditandatangani RSA dengan benar akan ditolak.
Penanganan key
Bagian berjudul “Key handling”Untuk setiap upload zip penuh, CLI menghasilkan acak baru AES-128 session key baru secara acak dan IV 16-byte, mengenkripsi bundle dengan AES-128-CBC, dan mengenkripsi session key dengan RSA-2048 private key menggunakan PKCS#1 v1.5 tipe 1 padding. Perangkat memulihkan AES key dengan RSA public key yang tertanam di app. Key dan IV tidak digunakan ulang di antara upload bundle CLI yang terpisah. Dalam satu delta upload, semua file parsial terenkripsi memakai session key dan IV dari upload tersebut.
Public key untuk dekripsi tertanam di app yang Anda rilis. Konten bundle plaintext tersedia di perangkat yang menjalankan app melalui jalur dekripsi yang sama dengan updater, serupa dengan aset lain di paket app.
Kegagalan dan pelaporan
Bagian berjudul “Kegagalan dan pelaporan”Kegagalan dekripsi dan checksum dilaporkan sebagai event stats (download_fail, checksum_fail, decrypt_fail) ke endpoint stats Capgo atau handler statistik self-hosted. Statistik dikirim dari perangkat; tidak ada laporan yang dikirim ke host bundle pihak ketiga berdasarkan keberhasilan atau kegagalan dekripsi. Setiap percobaan biasanya berupa unduhan penuh yang diinisiasi perangkat, sehingga probing gaya padding-oracle tidak praktis, dan plaintext yang dimodifikasi tetap gagal pada checksum yang ditandatangani.
Hardening di masa depan
Bagian berjudul “Future hardening”Rilis mayor di masa depan mungkin menambahkan format berversi dengan AES-GCM dan RSA-PSS di atas hash sebagai defense in depth di samping desain saat ini. Itu akan menjadi langkah penguatan bertahap, bukan perbaikan keamanan darurat untuk format saat ini.
Cara Kerja Enkripsi
Bagian berjudul “How Encryption Works”Capgo menggunakan pendekatan enkripsi hibrida yang menggabungkan enkripsi RSA dan AES untuk keamanan dan kinerja optimal:

1. Pembuatan Key
Bagian berjudul “1. Pembuatan Key”- Kunci Privat: Dibuat dan disimpan dengan aman di environment development Anda (digunakan untuk enkripsi)
- Kunci Publik: Diturunkan dari private key Anda dan disimpan di config Capacitor aplikasi Anda (digunakan untuk dekripsi)
- Kunci Sesi: Key AES acak yang dibuat untuk setiap upload bundle
2. Proses Enkripsi
Bagian berjudul “2. Proses Enkripsi”- Session key AES acak dibuat untuk setiap upload bundle
- Bundle Anda dienkripsi menggunakan kunci sesi AES
- Checksum bundle dihitung
- Kunci sesi AES dan checksum dienkripsi bersama menggunakan kunci privat RSA Anda (membuat “signature”)
- Bundle terenkripsi dan signature terenkripsi disimpan
Checksum dienkripsi bersama kunci AES untuk mencegah manipulasi. Karena hanya kunci privat RSA Anda yang dapat membuat signature ini, dan hanya kunci publik yang sesuai yang dapat mendekripsinya, hal ini memastikan bahwa kunci sesi AES dan checksum yang diharapkan bersifat autentik dan tidak dimodifikasi oleh penyerang.
3. Proses Dekripsi
Bagian berjudul “3. Proses Dekripsi”- Aplikasi Anda mengunduh bundle terenkripsi dan signature terenkripsi
- Capgo SDK menggunakan kunci publik RSA Anda (disimpan di aplikasi) untuk mendekripsi signature
- Ini mengungkapkan kunci sesi AES dan checksum asli
- Kunci sesi AES digunakan untuk mendekripsi bundle
- Checksum dari bundle yang didekripsi dihitung dan dibandingkan dengan checksum asli untuk verifikasi integritas
Proses ini memastikan bahwa meskipun penyerang mencegat bundle terenkripsi, mereka tidak dapat mengubah AES session key atau memberikan checksum palsu, karena mereka memerlukan private key Anda untuk membuat signature valid yang dapat didekripsi oleh public key.
Capgo vs Platform Lain
Bagian berjudul “Capgo vs Platform Lainnya”| Fitur | Capgo | Platform OTA Lainnya |
|---|---|---|
| Konten Bundle | Terenkripsi saat disimpan/ditransmisikan; tetap dapat diinspeksi oleh reverse engineer yang gigih dengan binary aplikasi | Dapat dibaca secara publik |
| Metode Keamanan | Enkripsi end-to-end yang benar | hanya signing Code |
| Tingkat Privasi | Perlindungan pengiriman/penyimpanan yang kuat; bukan anti-reverse-engineering | Platform dapat mengakses code Anda |
| Perlindungan | Konten + integritas + keaslian | Hanya integritas + keaslian |
Mengapa Ini Penting:
- signing Code hanya memverifikasi bahwa update tidak diubah dan berasal dari sumber yang benar
- Enkripsi Capgo melindungi bundle saat disimpan dan dikirim, serta mempersulit pemalsuan update terenkripsi karena penyerang membutuhkan private key Anda
- Reverse engineering masih mungkin dilakukan setelah aplikasi dirilis, karena klien berisi kunci publik yang diperlukan untuk mendekripsi dan memuat update
Metode Enkripsi
Bagian berjudul “Metode Enkripsi”Capgo menggunakan Encryption V2 sebagai metode enkripsi standar:
Encryption V2 (Standar Saat Ini)
Bagian berjudul “Encryption V2 (Standar Saat Ini)”- Menggunakan RSA-4096 untuk keamanan yang lebih baik
- AES-256-GCM untuk enkripsi terautentikasi
- Menyediakan verifikasi integritas
- Performa dan keamanan lebih baik
Enkripsi V1 (Usang)
Bagian berjudul “Encryption V1 (Deprecated)”- Menggunakan RSA-2048 untuk enkripsi kunci
- AES-256-CBC untuk enkripsi bundle
- Tidak lagi tersedia di CLI saat ini
- Aplikasi lama yang menggunakan V1 harus migrasi ke V2
Menyiapkan Enkripsi
Bagian berjudul “Mengatur Enkripsi”Langkah 1: Membuat Kunci Enkripsi
Bagian berjudul “Langkah 1: Membuat Kunci Enkripsi”Pertama, buat kunci enkripsi Anda menggunakan Capgo CLI:
# Generate new encryption keys (creates files in current directory)npx @capgo/cli@latest key createIni membuat:
.capgo_key_v2: Kunci privat Anda (jaga kerahasiaannya!).capgo_key_v2.pub: Kunci publik Anda (digunakan oleh aplikasi Anda)
File-file ini dibuat di direktori tempat Anda menjalankan perintah.
Langkah 2: Simpan Public Key ke Konfigurasi Capacitor (Wajib)
Bagian berjudul “Langkah 2: Simpan Public Key ke Konfigurasi Capacitor (Wajib)”Anda harus simpan public key Anda ke konfigurasi Capacitor agar aplikasi mobile Anda dapat mendekripsi bundle:
# Save public key from file to Capacitor config (required)npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
# Or save public key data directlynpx @capgo/cli@latest key save --key-data "$CAPGO_PUBLIC_KEY"Langkah 3: Sinkronkan Platform Capacitor (Wajib)
Bagian berjudul “Langkah 3: Sinkronkan Platform Capacitor (Wajib)”Setelah menyimpan public key, Anda harus sinkronkan platform Capacitor untuk menyalin config yang diperbarui ke lapisan native:
# Sync the platform to copy config to nativenpx cap syncMengenkripsi Bundle
Bagian berjudul “Encrypting Bundles”Metode 1: Enkripsi Saat Upload
Bagian berjudul “Metode 1: Enkripsi Saat Upload”Cara termudah adalah melakukan enkripsi saat proses upload:
# Upload with automatic encryptionnpx @capgo/cli@latest bundle upload --key-v2
# For external storage, you must encrypt first (see Manual Encryption Workflow below)Metode 2: Workflow Enkripsi Manual
Bagian berjudul “Metode 2: Workflow Enkripsi Manual”Untuk kontrol lebih, Anda bisa mengenkripsi bundle secara manual:
-
Buat bundle zip:
Jendela terminal npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2 -
Enkripsi bundle:
Jendela terminal npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1 -
Upload ke storage Anda (misalnya, S3) dan daftarkan di Capgo:
Jendela terminal # First upload the encrypted bundle to your storage (e.g., AWS S3)aws s3 cp ./encrypted-bundle.zip s3://your-bucket/encrypted-bundle.zip# Then register with Capgo using the external URLnpx @capgo/cli@latest bundle upload --external https://your-storage.com/encrypted-bundle.zip --iv-session-key IV_SESSION_KEY_FROM_STEP_2
Manajemen Kunci
Bagian berjudul “Key Management”Penyimpanan Key yang Aman
Bagian berjudul “Storing Keys Securely”Opsi Private Key:
-
Berdasarkan file (pengembangan lokal):
Jendela terminal # Key stored as .capgo_key_v2 file in project rootnpx @capgo/cli@latest bundle upload --key-v2 -
Variabel lingkungan (CI/CD):
Jendela terminal # Store in environment variable for CIexport CAPGO_PRIVATE_KEY="$(cat .capgo_key_v2)"npx @capgo/cli@latest bundle upload --key-data-v2 "$CAPGO_PRIVATE_KEY"
Setup Public Key (Wajib):
# Must save public key to Capacitor config for mobile appnpx @capgo/cli@latest key save --key ./.capgo_key_v2.pubLingkungan Produksi:
- Simpan private key di layanan manajemen kunci yang aman (AWS KMS, Azure Key Vault, dll.)
- Gunakan secret management CI/CD untuk private key
- Jangan pernah commit private key ke version control
Penggunaan Key:
- Kunci Privat: Digunakan oleh CLI untuk enkripsi saat upload bundle (jaga kerahasiaannya)
- Kunci Publik: Disimpan di konfigurasi aplikasi untuk dekripsi di perangkat (aman untuk di-commit)
Rotasi setelah private key dikompromikan
Bagian berjudul “Rotasi setelah kompromi kunci privat”Rotasikan pasangan kunci jika kunci privat diduga atau terkonfirmasi terkompromi. Rotasi rutin berdasarkan kalender tidak diperlukan. Ini adalah migrasi kunci native, bukan perubahan OTA saja.
-
Buat pasangan kunci pengganti:
Jendela terminal npx @capgo/cli@latest key create -
Simpan kunci publik pengganti ke konfigurasi Capacitor Anda:
Jendela terminal npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub -
Sinkronkan dan rilis versi native: Jalankan
npx cap sync, lalu distribusikan versi native app baru yang berisi public key pengganti. -
Targetkan versi native baru: Perangkat yang masih menjalankan binary native lama tidak bisa mendekripsi update yang dienkripsi dengan key pengganti. Gunakan Targeting Versi untuk membatasi bundle key pengganti ke versi native baru saja, sementara perangkat lain update lewat store atau MDM.
-
Ganti upload secret Anda: Segera setelah rilis native tersebut live, ganti private key di CI dan upload hanya bundle yang ditargetkan ke versi native yang berisi public key pengganti.
Praktik Terbaik Keamanan
Bagian berjudul “Praktik Terbaik Keamanan”Keamanan Key
Bagian berjudul “Keamanan Key”- Jangan pernah membagikan private key antar environment atau anggota tim
- Gunakan key yang berbeda untuk tiap environment (dev, staging, production)
- Rotasi setelah terjadi kebocoran: ganti pasangan kunci jika kunci privat dicurigai atau terkonfirmasi telah bocor; rotasi rutin secara berkala tidak diperlukan
- Simpan key dengan aman menggunakan sistem manajemen kunci yang tepat
Keamanan Bundle
Bagian berjudul “Keamanan Bundle”- Selalu verifikasi integritas bundle setelah dekripsi
- Pantau untuk pola download atau kegagalan yang tidak biasa
- Gunakan HTTPS untuk semua URL bundle (wajib untuk aplikasi mobile)
- Terapkan penanganan error yang tepat untuk kegagalan dekripsi
Kontrol Akses
Bagian berjudul “Kontrol akses”- Batasi akses ke kunci enkripsi hanya untuk personel berwenang
- Gunakan akses berbasis role untuk operasi manajemen kunci
- Audit penggunaan dan akses kunci secara rutin
- Terapkan prosedur backup dan recovery yang tepat
Troubleshooting enkripsi
Bagian berjudul “Troubleshooting enkripsi”Masalah Umum
Bagian berjudul “Masalah Umum”Gagal dekripsi:
- Pastikan kunci privat cocok dengan kunci publik yang digunakan untuk enkripsi
- Periksa bahwa
ivSessionKeybenar - Pastikan Anda menggunakan Encryption V2 (V1 tidak lagi didukung)
Error terkait kunci:
- Konfirmasi format kunci privat benar (format PEM)
- Pastikan kunci tidak rusak selama penyimpanan/transfer
- Periksa bahwa kunci memiliki izin yang tepat di konfigurasi aplikasi Anda
Masalah performa:
- Bundle besar mungkin butuh waktu lebih lama untuk dienkripsi/didekripsi
- Pertimbangkan penggunaan Delta updates untuk mengurangi ukuran bundle
- Pantau kinerja perangkat selama dekripsi
Perintah Debug
Bagian berjudul “Perintah Debug”Periksa status enkripsi:
npx @capgo/cli@latest app debugUji alur kerja enkripsi/dekripsi:
# Test the complete workflow: zip → encrypt → decrypt → unzipnpx @capgo/cli@latest bundle zip com.example.app --key-v2npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM --jsonnpx @capgo/cli@latest bundle decrypt ./encrypted-bundle.zip IV_SESSION_KEYKepatuhan dan Standar
Bagian berjudul “Kepatuhan dan Standar”Implementasi enkripsi Capgo mengikuti standar industri:
- AES-256: Algoritma enkripsi yang disetujui FIPS 140-2
- RSA-4096: Enkripsi asimetris kuat untuk proteksi kunci
- Mode GCM: Menjamin kerahasiaan sekaligus autentisitas
- Secure Random: Pembangkitan angka acak yang aman secara kriptografi
Hal ini membuat Capgo cocok untuk aplikasi yang butuh kepatuhan terhadap:
- GDPR (General Data Protection Regulation)
- HIPAA (Health Insurance Portability and Accountability Act)
- SOC 2 (Service Organization Control 2)
- ISO 27001 (Manajemen Keamanan Informasi)
Pertimbangan Performa
Bagian berjudul “Pertimbangan Performa”Overhead Enkripsi
Bagian berjudul “Overhead Enkripsi”- Ukuran bundle: Bundle terenkripsi sedikit lebih besar (overhead ~1-2%)
- Waktu pemrosesan: Enkripsi/dekripsi menambah latensi minimal
- Penggunaan memori: Peningkatan sementara selama operasi enkripsi/dekripsi
Tips Optimasi
Bagian berjudul “Tips Optimasi”- Gunakan Delta updates untuk meminimalkan transfer data terenkripsi
- Optimalkan ukuran bundle Anda dengan mengonversi gambar ke format WebP
- Minify file JavaScript dan CSS sebelum bundling
- Hapus dependensi yang tidak terpakai dan code
- Pantau performa pada perangkat lama/lambat
Langkah Berikutnya
Bagian berjudul “Langkah Selanjutnya”- Pelajari tentang Penyimpanan Kustom untuk menggunakan enkripsi dengan infrastruktur Anda sendiri
- Jelajahi Channel untuk mengelola bundle terenkripsi di berbagai environment
- Siapkan Integrasi CI/CD untuk mengotomatiskan deployment terenkripsi
Lanjutkan dari Encryption
Bagian berjudul “Lanjutkan dari Encryption”Jika Anda menggunakan Enkripsi untuk merencanakan keamanan dan kepatuhan, hubungkan dengan Kepatuhan untuk detail implementasi pada Compliance, Capgo Pemindai Keamanan untuk alur kerja produk di Capgo Security Scanner, Keamanan Capgo untuk alur kerja produk di Capgo Security, Capgo Pusat Kepercayaan untuk alur kerja produk di Capgo Trust Center, dan Keamanan organisasi untuk detail implementasi di Organization Security.