Enkripsi
Capgo menyediakan enkripsi end-to-end yang kuat untuk bundle aplikasi Anda, memastikan bahwa kode JavaScript dan aset Anda dilindungi selama transmisi dan penyimpanan. Sistem enkripsi ini dirancang untuk memberi Anda kontrol penuh atas keamanan aplikasi Anda sambil mempertahankan kenyamanan pembaruan langsung.
Gambaran Umum
Section titled “Gambaran Umum”Sistem enkripsi Capgo menggunakan metode kriptografi standar industri untuk melindungi bundle Anda dari akses yang tidak sah. Ketika enkripsi diaktifkan, bundle Anda dienkripsi sebelum meninggalkan lingkungan pengembangan Anda dan tetap terenkripsi sampai didekripsi oleh aplikasi Anda di perangkat pengguna.
Enkripsi End-to-End Sejati: Tidak seperti platform pembaruan OTA lain yang hanya menandatangani pembaruan (membiarkan kode dapat dibaca publik), Capgo menyediakan enkripsi end-to-end sejati. Ini berarti hanya pengguna Anda yang dapat mendekripsi pembaruan Anda - tidak ada orang lain, termasuk Capgo sendiri. Konten bundle Anda tetap sepenuhnya pribadi dan tidak dapat dibaca selama seluruh proses pengiriman.
Cara Kerja Enkripsi
Section titled “Cara Kerja Enkripsi”Capgo menggunakan pendekatan enkripsi hibrid yang menggabungkan enkripsi RSA dan AES untuk keamanan dan kinerja optimal:

1. Generasi Kunci
Section titled “1. Generasi Kunci”- Kunci Pribadi: Dihasilkan dan disimpan dengan aman di lingkungan pengembangan Anda (digunakan untuk enkripsi)
- Kunci Publik: Diturunkan dari kunci pribadi Anda dan disimpan dalam konfigurasi Capacitor aplikasi Anda (digunakan untuk dekripsi)
- Kunci Sesi: Kunci AES acak yang dihasilkan untuk setiap upload bundle
2. Proses Enkripsi
Section titled “2. Proses Enkripsi”- Kunci sesi AES acak dihasilkan untuk setiap upload bundle
- Bundle Anda dienkripsi menggunakan kunci sesi AES
- Checksum bundle dihitung
- Baik kunci sesi AES dan checksum dienkripsi bersama menggunakan kunci pribadi RSA Anda (membuat “tanda tangan”)
- Bundle terenkripsi dan tanda tangan terenkripsi disimpan
Checksum dienkripsi bersama kunci AES untuk mencegah manipulasi. Karena hanya kunci pribadi RSA Anda yang dapat membuat tanda tangan ini, dan hanya kunci publik yang sesuai yang dapat mendekripsinya, ini memastikan bahwa baik kunci sesi AES dan checksum yang diharapkan adalah autentik dan tidak dimodifikasi oleh penyerang.
3. Proses Dekripsi
Section titled “3. Proses Dekripsi”- Aplikasi Anda mengunduh bundle terenkripsi dan tanda tangan terenkripsi
- SDK Capgo menggunakan kunci publik RSA Anda (disimpan dalam aplikasi) untuk mendekripsi tanda tangan
- 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 bahkan jika penyerang mencegat bundle terenkripsi, mereka tidak dapat memodifikasi kunci sesi AES atau memberikan checksum palsu, karena mereka memerlukan kunci pribadi Anda untuk membuat tanda tangan valid yang dapat didekripsi oleh kunci publik.
Capgo vs Platform Lain
Section titled “Capgo vs Platform Lain”| Fitur | Capgo | Platform OTA Lain |
|---|---|---|
| Konten Bundle | Sepenuhnya terenkripsi (tidak dapat dibaca) | Dapat dibaca publik |
| Metode Keamanan | Enkripsi end-to-end sejati | Hanya penandatanganan kode |
| Tingkat Privasi | Zero-knowledge (bahkan Capgo tidak dapat membaca kode Anda) | Platform dapat mengakses kode Anda |
| Perlindungan | Konten + integritas + keaslian | Hanya integritas + keaslian |
Mengapa Ini Penting:
- Penandatanganan kode hanya memverifikasi bahwa pembaruan belum diubah dan berasal dari sumber yang benar
- Enkripsi end-to-end memastikan bahwa konten kode aktual Anda tetap pribadi dan tidak dapat dibaca selama transmisi dan penyimpanan
- Dengan enkripsi end-to-end sejati Capgo, hanya pengguna Anda yang dapat mendekripsi pembaruan - tidak ada orang lain, termasuk Capgo sendiri
Metode Enkripsi
Section titled “Metode Enkripsi”Capgo menggunakan Enkripsi V2 sebagai metode enkripsi standar:
Enkripsi V2 (Standar Saat Ini)
Section titled “Enkripsi V2 (Standar Saat Ini)”- Menggunakan RSA-4096 untuk keamanan yang ditingkatkan
- AES-256-GCM untuk enkripsi terotentikasi
- Menyediakan verifikasi integritas
- Kinerja dan keamanan yang lebih baik
Enkripsi V1 (Deprecated)
Section titled “Enkripsi 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
Section titled “Menyiapkan Enkripsi”Langkah 1: Generate Kunci Enkripsi
Section titled “Langkah 1: Generate Kunci Enkripsi”Pertama, generate kunci enkripsi Anda menggunakan CLI Capgo:
# Generate kunci enkripsi baru (membuat file di direktori saat ini)npx @capgo/cli@latest key createIni membuat:
.capgo_key_v2: Kunci pribadi Anda (jaga keamanannya!).capgo_key_v2.pub: Kunci publik Anda (digunakan oleh aplikasi Anda)
File-file ini dibuat di direktori saat ini tempat Anda menjalankan perintah.
Langkah 2: Simpan Kunci Publik Anda ke Capacitor Config (Wajib)
Section titled “Langkah 2: Simpan Kunci Publik Anda ke Capacitor Config (Wajib)”Anda harus menyimpan kunci publik Anda ke konfigurasi Capacitor agar aplikasi mobile Anda dapat mendekripsi bundle:
# Simpan kunci publik dari file ke konfigurasi Capacitor (wajib)npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
# Atau simpan data kunci publik secara langsungnpx @capgo/cli@latest key save --key-data "$CAPGO_PUBLIC_KEY"Langkah 3: Sync Platform Capacitor (Wajib)
Section titled “Langkah 3: Sync Platform Capacitor (Wajib)”Setelah menyimpan kunci publik, Anda harus sync platform Capacitor untuk menyalin konfigurasi yang diperbarui ke lapisan native:
# Sync platform untuk menyalin config ke nativenpx cap syncMengenkripsi Bundle
Section titled “Mengenkripsi Bundle”Metode 1: Enkripsi Selama Upload
Section titled “Metode 1: Enkripsi Selama Upload”Cara paling sederhana adalah mengenkripsi selama proses upload:
# Upload dengan enkripsi otomatisnpx @capgo/cli@latest bundle upload --key-v2
# Untuk penyimpanan eksternal, Anda harus mengenkripsi terlebih dahulu (lihat Alur Kerja Enkripsi Manual di bawah)Metode 2: Alur Kerja Enkripsi Manual
Section titled “Metode 2: Alur Kerja Enkripsi Manual”Untuk kontrol lebih, Anda dapat mengenkripsi bundle secara manual:
-
Buat zip bundle:
Terminal window npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2 -
Enkripsi bundle:
Terminal window npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1 -
Upload ke penyimpanan Anda (mis., S3) dan daftar dengan Capgo:
Terminal window # Pertama upload bundle terenkripsi ke penyimpanan Anda (mis., AWS S3)aws s3 cp ./encrypted-bundle.zip s3://your-bucket/encrypted-bundle.zip# Kemudian daftar dengan Capgo menggunakan URL eksternalnpx @capgo/cli@latest bundle upload --external https://your-storage.com/encrypted-bundle.zip --iv-session-key IV_SESSION_KEY_FROM_STEP_2
Manajemen Kunci
Section titled “Manajemen Kunci”Menyimpan Kunci dengan Aman
Section titled “Menyimpan Kunci dengan Aman”Opsi Kunci Pribadi:
-
Berbasis file (pengembangan lokal):
Terminal window # Kunci disimpan sebagai file .capgo_key_v2 di root proyeknpx @capgo/cli@latest bundle upload --key-v2 -
Environment variable (CI/CD):
Terminal window # Simpan di environment variable untuk CIexport CAPGO_PRIVATE_KEY="$(cat .capgo_key_v2)"npx @capgo/cli@latest bundle upload --key-data-v2 "$CAPGO_PRIVATE_KEY"
Setup Kunci Publik (Wajib):
# Harus menyimpan kunci publik ke konfigurasi Capacitor untuk aplikasi mobilenpx @capgo/cli@latest key save --key ./.capgo_key_v2.pubLingkungan Produksi:
- Simpan kunci pribadi di layanan manajemen kunci yang aman (AWS KMS, Azure Key Vault, dll.)
- Gunakan manajemen secret CI/CD untuk kunci pribadi
- Jangan pernah commit kunci pribadi ke version control
Penggunaan Kunci:
- Kunci Pribadi: Digunakan oleh CLI untuk enkripsi selama upload bundle (jaga keamanan)
- Kunci Publik: Disimpan di konfigurasi aplikasi untuk dekripsi di perangkat (aman untuk di-commit)
Rotasi Kunci
Section titled “Rotasi Kunci”Rotasi kunci enkripsi Anda secara berkala untuk keamanan yang lebih baik:
-
Generate kunci baru:
Terminal window # Navigasi ke direktori yang diinginkan terlebih dahulu, lalu buat kuncimkdir ./new-keys && cd ./new-keysnpx @capgo/cli@latest key create -
Simpan kunci publik baru ke konfigurasi Capacitor:
Terminal window npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub -
Perbarui konfigurasi aplikasi Anda dengan kunci publik baru
-
Deploy aplikasi yang diperbarui sebelum mengunggah bundle terenkripsi dengan kunci baru
Praktik Terbaik Keamanan
Section titled “Praktik Terbaik Keamanan”Keamanan Kunci
Section titled “Keamanan Kunci”- Jangan pernah bagikan kunci pribadi antara lingkungan atau anggota tim
- Gunakan kunci yang berbeda untuk lingkungan yang berbeda (dev, staging, production)
- Rotasi kunci secara berkala (disarankan: setiap 6-12 bulan)
- Simpan kunci dengan aman menggunakan sistem manajemen kunci yang tepat
Keamanan Bundle
Section titled “Keamanan Bundle”- Selalu verifikasi integritas bundle setelah dekripsi
- Pantau untuk pola unduhan atau kegagalan yang tidak biasa
- Gunakan HTTPS untuk semua URL bundle (diperlukan untuk aplikasi mobile)
- Implementasikan penanganan error yang tepat untuk kegagalan dekripsi
Kontrol Akses
Section titled “Kontrol Akses”- Batasi akses ke kunci enkripsi hanya untuk personel yang berwenang
- Gunakan akses berbasis peran untuk operasi manajemen kunci
- Audit penggunaan dan akses kunci secara berkala
- Implementasikan prosedur backup dan recovery yang tepat
Pemecahan Masalah Enkripsi
Section titled “Pemecahan Masalah Enkripsi”Masalah Umum
Section titled “Masalah Umum”Kegagalan dekripsi:
- Verifikasi kunci pribadi cocok dengan kunci publik yang digunakan untuk enkripsi
- Periksa bahwa
ivSessionKeybenar - Pastikan Anda menggunakan Enkripsi V2 (V1 tidak lagi didukung)
Kesalahan terkait kunci:
- Konfirmasi format kunci pribadi benar (format PEM)
- Verifikasi kunci belum rusak selama penyimpanan/transfer
- Periksa bahwa kunci memiliki izin yang tepat di konfigurasi aplikasi Anda
Masalah kinerja:
- Bundle besar mungkin memerlukan waktu lebih lama untuk enkripsi/dekripsi
- Pertimbangkan menggunakan pembaruan diferensial untuk mengurangi ukuran bundle
- Pantau kinerja perangkat selama dekripsi
Perintah Debug
Section titled “Perintah Debug”Periksa status enkripsi:
npx @capgo/cli@latest app debugUji alur kerja enkripsi/dekripsi:
# Uji alur kerja lengkap: zip → enkripsi → dekripsi → 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
Section titled “Kepatuhan dan Standar”Implementasi enkripsi Capgo mengikuti standar industri:
- AES-256: Algoritma enkripsi yang disetujui FIPS 140-2
- RSA-4096: Enkripsi asimetris yang kuat untuk perlindungan kunci
- Mode GCM: Menyediakan kerahasiaan dan keaslian
- Secure Random: Generasi angka acak yang aman secara kriptografis
Ini membuat Capgo cocok untuk aplikasi yang memerlukan kepatuhan dengan:
- GDPR (General Data Protection Regulation)
- HIPAA (Health Insurance Portability and Accountability Act)
- SOC 2 (Service Organization Control 2)
- ISO 27001 (Information Security Management)
Pertimbangan Kinerja
Section titled “Pertimbangan Kinerja”Overhead Enkripsi
Section titled “Overhead Enkripsi”- Ukuran bundle: Bundle terenkripsi sedikit lebih besar (~1-2% overhead)
- Waktu pemrosesan: Enkripsi/dekripsi menambah latensi minimal
- Penggunaan memori: Peningkatan sementara selama operasi enkripsi/dekripsi
Tips Optimisasi
Section titled “Tips Optimisasi”- Gunakan pembaruan diferensial untuk meminimalkan transfer data terenkripsi
- Optimalkan ukuran bundle Anda dengan mengonversi gambar ke format WebP
- Minimalkan file JavaScript dan CSS sebelum bundling
- Hapus dependensi dan kode yang tidak digunakan
- Pantau kinerja perangkat pada perangkat yang lebih lama/lambat
Langkah Selanjutnya
Section titled “Langkah Selanjutnya”- Pelajari tentang Custom Storage untuk menggunakan enkripsi dengan infrastruktur Anda sendiri
- Jelajahi Channels untuk mengelola bundle terenkripsi di berbagai lingkungan
- Siapkan CI/CD Integration untuk mengotomatisasi deployment terenkripsi