Lebih cepat ke konten

Pengamanan

Capgo menyediakan enkripsi akhir-ke-akhir yang kuat untuk bundle aplikasi Anda, sehingga JavaScript code dan aset Anda dilindungi selama transmisi dan penyimpanan. Sistem enkripsi ini dirancang untuk memberikan Anda kendali penuh atas keamanan aplikasi Anda sambil tetap mempertahankan kemudahan pembaruan hidup.

Capgo menggunakan metode kriptografi standar industri untuk melindungi bundle Anda dari akses tidak sah. Ketika enkripsi diaktifkan, bundle Anda dienkripsi sebelum meninggalkan lingkungan pengembangan Anda dan tetap dienkripsi sampai di-dekripsi oleh aplikasi Anda di perangkat pengguna.

Apa yang Dilindungi oleh Enkripsi: Berbeda dengan sistem OTA yang hanya menandatangani pembaruan, Capgo mengenkripsi bundle yang diunggah sebelum penyimpanan dan pengiriman. Ini melindungi isi bundle dari akses santai dalam penyimpanan atau transit dan memastikan hanya orang dengan kunci pribadi Anda yang dapat menghasilkan pembaruan enkripsi yang valid. Ini tidak menghalangi aset web yang dikirimkan untuk di-revers-engineering: kunci publik yang digunakan oleh klien untuk memecahkan pembaruan didistribusikan dalam aplikasi, sehingga seorang penyerang yang berdedikasi masih dapat mengekstraknya dan memeriksa isi bundle dengan cukup usaha.

Capgo menggunakan pendekatan enkripsi hybrid yang menggabungkan RSA dan AES untuk keamanan dan kinerja optimal:

Alur Enkripsi Capgo

  • Kunci Pribadi: Dibuat dan disimpan dengan aman di lingkungan pengembangan Anda (digunakan untuk enkripsi)
  • Kunci Publik: Dihasilkan dari kunci pribadi Anda dan disimpan di konfigurasi aplikasi Capacitor Anda (digunakan untuk dekripsi)
  • Kunci Sesi: Kunci AES acak yang dihasilkan untuk setiap unggahan bundle
  1. Kunci sesi AES acak dibuat untuk setiap unggahan bundle
  2. Bundle Anda dienkripsi menggunakan kunci sesi AES
  3. Checksum bundle dihitung
  4. Kedua kunci sesi AES dan checksum dienkripsi bersama menggunakan kunci pribadi RSA Anda (membuat “tanda tangan”)
  5. Bundle yang dienkripsi dan tanda tangan yang dienkripsi disimpan

Checksum dienkripsi bersama kunci AES untuk mencegah perubahan. Karena hanya kunci pribadi RSA Anda yang dapat membuat tanda tangan ini, dan hanya kunci publik yang sesuai yang dapat memecahkannya, ini memastikan bahwa baik kunci sesi AES dan checksum yang diharapkan autentik dan tidak dimodifikasi oleh penyerang.

Judul Bagian 3. Proses Penguraian

Judul Bagian 3. Proses Penguraian
  1. Aplikasi Anda mengunduh bundle yang dienkripsi dan tanda tangan yang dienkripsi
  2. Capgo SDK menggunakan kunci publik RSA Anda (yang disimpan di aplikasi) untuk memecahkan tanda tangan
  3. Ini mengungkapkan kunci sesi AES dan checksum asli
  4. Kunci sesi AES digunakan untuk membalikkan bundle
  5. Diperiksa checksum dari bundle yang dibalikkan dan dibandingkan dengan checksum asli untuk verifikasi integritas

Proses ini memastikan bahkan jika penyerang menginterupsi bundle yang dienkripsi, mereka tidak dapat mengubah kunci sesi AES atau menyediakan checksum palsu, karena mereka perlu kunci pribadi Anda untuk membuat tanda tangan yang valid yang dapat dienkripsi oleh kunci publik

FiturCapgoPlatform OTA Lain
Isi BundleDi enkripsi dalam penyimpanan/transit; masih dapat diperiksa oleh seorang insinyur balik yang berdedikasi dengan file biner aplikasiDapat dibaca secara publik
Methode KeamananEnkripsi akhir-ke-akhir yang sebenarnyaCode hanya tanda tangan
Level PrivasiPelindungan kuat penyimpanan/pengiriman; bukan anti-insinyur balikPlatform dapat mengakses code Anda
PelindunganKandungan + integritas + autentisitasHanya integritas + autentisitas

Mengapa Ini Penting:

  • Code penandatangan hanya memeriksa bahwa pembaruan belum disentuh dan berasal dari sumber yang tepat
  • Capgo enkripsi melindungi bundle selama disimpan dan dikirimkan dan membuat pembaruan enkripsi palsu jauh lebih sulit karena penyerang perlu kunci pribadi Anda
  • Reversi engineering masih mungkin setelah aplikasi dikirimkan, karena klien berisi kunci publik yang diperlukan untuk mendekripsi dan memuat pembaruan

Capgo menggunakan Methode Enkripsi V2 sebagai metode standar enkripsi:

Methode Enkripsi V2 (Standar Saat Ini)

Bab berjudul “Methode Enkripsi V2 (Standar Saat Ini)”
  • Menggunakan RSA-4096 untuk keamanan yang ditingkatkan
  • Enkripsi AES-256-GCM untuk enkripsi yang terautentik
  • Menghasilkan verifikasi integritas
  • Kinerja dan keamanan yang lebih baik
  • Menggunakan RSA-2048 untuk enkripsi kunci
  • Enkripsi AES-256-CBC untuk enkripsi paket
  • Tidak lagi tersedia dalam versi CLI saat ini
  • Aplikasi lama yang menggunakan V1 harus bermigrasi ke V2

Pertama, buatlah kunci enkripsi Anda menggunakan Capgo CLI:

Tampilan Terminal
# Generate new encryption keys (creates files in current directory)
npx @capgo/cli@latest key create

Ini menciptakan:

  • .capgo_key_v2: Kunci pribadi Anda (jaga keamanan ini!)
  • .capgo_key_v2.pub: Kunci publik Anda (digunakan oleh aplikasi Anda)

Berikut adalah file yang dibuat di direktori saat ini di mana Anda menjalankan perintah.

Langkah 2: Simpan Kunci Publik Anda ke Konfigurasi Capacitor (Wajib)

Judul bagian ‘Langkah 2: Simpan Kunci Publik Anda ke Konfigurasi Capacitor (Wajib)”

Kamu context save your public key to the Capacitor config so your mobile app can decrypt bundles:

menyimpan kunci publik Anda ke konfigurasi __CAPGO_KEEP_0__ agar aplikasi seluler dapat mengenkripsi 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 directly
npx @capgo/cli@latest key save --key-data "$CAPGO_PUBLIC_KEY"

Step 3: Sync Capacitor Platform (Required)

Langkah 3: Sinkronkan Platform Capacitor (Wajib)

Setelah menyimpan kunci publik, Anda wajib mengsinkronkan Capacitor platform untuk menyalin konfigurasi yang diperbarui ke layer native:

Jendela Terminal
# Sync the platform to copy config to native
npx cap sync

Cara termudah adalah dengan mengenkripsi selama proses unggah:

Tampilan Jendela Terminal
# Upload with automatic encryption
npx @capgo/cli@latest bundle upload --key-v2
# For external storage, you must encrypt first (see Manual Encryption Workflow below)

Untuk kontrol yang lebih, Anda dapat mengenkripsi paket secara manual:

  1. Buatlah paket zip:

    Tampilan Jendela Terminal
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. Enkripsi bundle:

    Jendela terminal
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1
  3. Unggah ke penyimpanan Anda (misalnya, S3) dan daftarkan dengan 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 URL
    npx @capgo/cli@latest bundle upload --external https://your-storage.com/encrypted-bundle.zip --iv-session-key IV_SESSION_KEY_FROM_STEP_2

Pilihan Kunci Pribadi:

  1. File-based (pengembangan lokal):

    Jendela terminal
    # Key stored as .capgo_key_v2 file in project root
    npx @capgo/cli@latest bundle upload --key-v2
  2. Variabel lingkungan (CI/CD):

    Jendela terminal
    # Store in environment variable for CI
    export CAPGO_PRIVATE_KEY="$(cat .capgo_key_v2)"
    npx @capgo/cli@latest bundle upload --key-data-v2 "$CAPGO_PRIVATE_KEY"

Konfigurasi Kunci Publik (Diperlukan):

Jendela terminal
# Must save public key to Capacitor config for mobile app
npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub

Lingkungan Produksi:

  • Simpan kunci pribadi di layanan manajemen kunci yang aman (AWS KMS, Azure Key Vault, dll.)
  • Pakai manajemen rahasia CI/CD untuk kunci pribadi
  • Tidak pernah menambahkan kunci pribadi ke pengendalian versi

Penggunaan Kunci:

  • Kunci Pribadi: Digunakan oleh CLI untuk enkripsi selama unggahan paket (tetap aman)
  • Kunci Publik: Disimpan dalam konfigurasi aplikasi untuk dekripsi di perangkat (aman untuk ditambahkan)

Putuskan setelah kompromi kunci pribadi

Bab berjudul “Putuskan setelah kompromi kunci pribadi”

Putuskan pasang kunci ketika kunci pribadi diduga atau dikonfirmasi kompromi. Pemutakhiran kalender rutin tidak diperlukan. Ini adalah migrasi kunci asli, bukan perubahan OTA saja.

  1. Generate pasang kunci pengganti:

    Tampilan terminal
    npx @capgo/cli@latest key create
  2. Simpan kunci publik pengganti ke konfigurasi Capacitor Anda:

    Jendela terminal
    npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
  3. Sinkronkan dan kirimkan rilis native: Jalankan npx cap sync, kemudian distribusikan versi aplikasi native baru yang mengandung kunci publik pengganti.

  4. Targetkan versi native baru: Perangkat yang masih menjalankan binary native lama tidak dapat mengenkripsi pembaruan yang dienkripsi dengan kunci publik pengganti. Gunakan Target Versi context

  5. Gunakan untuk membatasi paket kunci publik pengganti hanya ke versi native baru sementara flota lainnya memperbarui melalui toko atau MDM. Ganti rahasia unggah Anda:

Praktik Keamanan Terbaik

Bab Praktik Keamanan Terbaik

Keamanan Kunci

Bab Keamanan Kunci
  • Jangan pernah berbagi kunci pribadi antara lingkungan atau anggota tim
  • Pakai kunci yang berbeda untuk lingkungan yang berbeda (dev, staging, produksi)
  • Rotasi setelah terkorbankanGanti pasangan kunci ketika kunci pribadi dicurigai atau dikonfirmasi telah dibobol; rotasi kalender rutin tidak diperlukan
  • Simpan kunci dengan aman Menggunakan sistem manajemen kunci yang tepat
  • Selalu verifikasi integritas paket setelah dekripsi
  • Pantau untuk pola download yang tidak biasa atau gagal
  • Pakai HTTPS untuk semua URL paket (diperlukan untuk aplikasi mobile)
  • Implementasikan Penanganan kesalahan yang tepat untuk gagal dekripsi
  • Batasi akses ke kunci enkripsi hanya kepada staf yang berwenang
  • Pakai akses berdasarkan peran untuk operasi manajemen kunci
  • Audit penggunaan dan akses kunci secara teratur
  • Implementasikan prosedur cadangan dan pemulihan yang tepat

Gagal Dekripsi:

  • Pastikan kunci pribadi sesuai dengan kunci publik yang digunakan untuk enkripsi
  • Periksa bahwa ivSessionKey benar
  • Pastikan Anda menggunakan Enkripsi V2 (V1 tidak lagi didukung)

Gagal Kunci:

  • Konfirmasi format kunci pribadi benar (format PEM)
  • Pastikan kunci tidak rusak selama penyimpanan/transfer
  • Periksa bahwa kunci memiliki izin yang tepat dalam konfigurasi aplikasi Anda

Masalah kinerja:

  • Bundle besar mungkin membutuhkan waktu lebih lama untuk dienkripsi/didekripsi
  • Pertimbangkan menggunakan Delta (manifest) untuk mengurangi ukuran bundle
  • Monitor kinerja perangkat selama proses dekripsi

Periksa status enkripsi:

Tampilan terminal
npx @capgo/cli@latest app debug

Uji alur enkripsi/dekripsi:

Tampilan terminal
# Test the complete workflow: zip → encrypt → decrypt → unzip
npx @capgo/cli@latest bundle zip com.example.app --key-v2
npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM --json
npx @capgo/cli@latest bundle decrypt ./encrypted-bundle.zip IV_SESSION_KEY

Implementasi Capgo untuk enkripsi mengikuti standar industri:

  • AES-256: Algoritma enkripsi yang disetujui FIPS 140-2
  • RSA-4096: Enkripsi asimetris yang kuat untuk perlindungan kunci
  • GCM Mode: Menyediakan keamanan kekonfidensialan dan keaslian
  • Random yang Aman: Penghasilan angka acak yang aman kriptografis

Hal ini membuat Capgo cocok untuk aplikasi yang memerlukan keterlaksanaan dengan:

  • Regulasi Perlindungan Data Umum (GDPR)
  • Undang-Undang Perlindungan Asuransi Kesehatan dan Akuntabilitas (HIPAA)
  • Kontrol Layanan Organisasi 2 (SOC 2)
  • Manajemen Keamanan Informasi (ISO 27001)

Pertimbangan Kinerja

Bab: Pertimbangan Kinerja

Biaya Kriptografi

Bab: Biaya Kriptografi
  • Ukuran Paket: Paket yang dikripsi sedikit lebih besar (~1-2% overhead)
  • Waktu Proses: Pengenkripsi/dikripsi menambahkan latensi minimal
  • Kegunaan Memori: Peningkatan sementara selama operasi enkripsi/dekripsi
  • Pakai Delta (manifest) updates untuk mengurangi transfer data enkripsi
  • Optimalkan ukuran bundle Anda dengan mengonversi gambar ke format WebP
  • Minimalkan file JavaScript dan CSS sebelum bundling
  • Hapus dependensi yang tidak digunakan dan code
  • Monitor kinerja perangkat pada perangkat lama/lebih lambat
  • Pelajari tentang Penyimpanan Kustom Untuk menggunakan enkripsi dengan infrastruktur milik Anda sendiri
  • Explore Saluran context
  • Saluran Rilis Capgo. Halaman/area: Halaman Pemasaran Solusi Capgo. Peran: Label UI pendek atau item navigasi. Dilihat di: halaman solusi/white-label.astro. Kunci pesan `solutions_white_label_visual_cell2_value` (Nilai Sel Visual Putih Label Solusi). Untuk mengelola bundle yang dienkripsi di antara lingkungan Set up

Pengintegrasian CI/CD

context

Halaman/area: Halaman Produk Capgo Builder / produk bangun awan asli. Peran: Label UI pendek atau item navigasi. Kunci pesan `native_build_feature_ci_cd` (Fitur Bangun Asli Ci Cd). Untuk otomatisasi pengiriman yang dienkripsi untuk merencanakan keamanan dan kinerja, hubungkannya dengan Kinerja Keamanan untuk detail implementasi di Kinerja Keamanan, Capgo Scanner Keamanan untuk alur kerja produk di Capgo Scanner Keamanan, Capgo Keamanan untuk alur kerja produk di Capgo Keamanan, Capgo Pusat Kepercayaan untuk alur kerja produk di Capgo Pusat Kepercayaan, dan Keamanan Organisasi untuk detail implementasi di Keamanan Organisasi.