Lompat ke konten

Enkripsi

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 mempertahankan kemudahan pembaruan waktu nyata.

Capgo’s encryption system uses industry-standard cryptographic methods to protect your bundles from unauthorized access. When encryption is enabled, your bundles are encrypted before leaving your development environment and remain encrypted until they’re decrypted by your app on the user’s device.

: Berbeda dengan sistem OTA yang hanya menandatangani pembaruan, __CAPGO_KEEP_0__ mengenkripsi bundle yang diunggah sebelum penyimpanan dan pengiriman. Ini melindungi isi bundle dari akses sembarangan dalam penyimpanan atau transit dan memastikan hanya orang dengan kunci pribadi Anda yang dapat menghasilkan pembaruan enkripsi yang valid. Ini tidak membuat aset web yang dikirimkan tidak dapat direversi: kunci publik yang digunakan oleh klien untuk memecahkan pembaruan tersebut didistribusikan dalam aplikasi, sehingga seorang penyerang yang berdedikasi masih dapat mengekstraknya dan memeriksa isi bundle dengan cukup usaha.: Unlike OTA systems that only sign updates, Capgo encrypts the uploaded bundle before storage and delivery. This protects the bundle contents from casual access in storage or transit and ensures only someone with your private key can produce a valid encrypted update. It does Kapan Anda Membutuhkan Enkripsi Ringkasan

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

Capgo Alur Enkripsi

  • 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 Capacitor aplikasi 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 (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 yang dapat membuat tanda tangan ini, dan hanya kunci publik yang dapat membaliknya, ini memastikan bahwa kunci sesi AES dan checksum yang diharapkan autentik dan tidak dimodifikasi oleh penyerang.

  1. Aplikasi Anda mengunduh bundle yang dienkripsi dan tanda tangan yang dienkripsi
  2. Capgo SDK menggunakan kunci publik RSA (disimpan di aplikasi) untuk membalik tanda tangan
  3. Ini mengungkapkan kunci sesi AES dan checksum asli
  4. Kunci sesi AES digunakan untuk memecahkan bundle
  5. Perhitungan cek checksum dari bundle yang telah dipecahkan dan dibandingkan dengan cek checksum asli untuk verifikasi integritas

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

FiturCapgoPlatform OTA Lainnya
Isi BundleDitutup dengan enkripsi di penyimpanan/transit; masih dapat dilihat oleh seorang pengecer balik dengan file aplikasi binerDapat dibaca secara publik
Metode KeamananEnkripsi akhir-ke-akhir yang sebenarnyaCode hanya tanda tangan
Tingkat PrivasiPerlindungan kuat penyimpanan/deliveri; tidak melawan pengecer balikPlatform dapat mengakses code
PerlindunganKonten + integritas + keaslianIntegritas + keaslian saja

Mengapa Ini Penting:

  • Code signing hanya memastikan bahwa pembaruan tidak telah dimanipulasi dan berasal dari sumber yang tepat
  • Capgo encryption melindungi bundle saat disimpan dan dikirimkan dan membuat pembaruan yang terenkripsi palsu lebih sulit karena penyerang memerlukan kunci pribadi Anda
  • Reversi engineering masih mungkin setelah aplikasi rilis, karena klien berisi kunci publik yang diperlukan untuk mendekripsi dan memuat pembaruan

Capgo menggunakan Metode Pengenkripsi V2 sebagai metode pengenkripsi standar:

  • Menggunakan RSA-4096 untuk keamanan yang ditingkatkan
  • AES-256-GCM untuk enkripsi yang terautentik
  • Menghasilkan verifikasi integritas
  • Kinerja dan keamanan yang lebih baik
  • Menggunakan RSA-2048 untuk enkripsi kunci
  • AES-256-CBC untuk enkripsi paket
  • Tidak lagi tersedia di versi CLI saat ini
  • Aplikasi lama yang menggunakan V1 harus beralih ke V2

Pertama-tama, buatlah kunci enkripsi Anda menggunakan Capgo CLI:

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

Hal ini menciptakan:

  • .capgo_key_v2: Kunci pribadi Anda (jaga keamanannya!)
  • .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.

Bab yang berjudul ā€œLangkah 2: Simpan Kunci Publik Anda ke Pengaturan Capacitor (Wajib)ā€

Section titled ā€œStep 2: Save Your Public Key to Capacitor Config (Required)ā€

harus menyimpan kunci publik Anda ke pengaturan __CAPGO_KEEP_0__ agar aplikasi mobile Anda dapat mengenkripsi bundle: save your public key to the Capacitor config so your mobile app can decrypt bundles:

Salin ke clipboard
# 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"

Bab yang berjudul ā€œLangkah 3: Sinkronkan Platform Capacitor (Wajib)ā€

Section titled ā€œStep 3: Sync Capacitor Platform (Required)ā€

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

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

Enkripsi Paket

Judul: Enkripsi Paket

Cara 1: Enkripsi Saat Mengunggah

Judul: Cara 1: Enkripsi Saat Mengunggah

Cara termudah adalah dengan mengenkripsi selama proses unggah:

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)

Cara 2: Alur Kerja Enkripsi Manual

Judul: Cara 2: Alur Kerja Enkripsi Manual

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

  1. Buat paket zip:

    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

Opsi Kunci Pribadi:

  1. Berbasis File (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"

Pengaturan 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.)
  • Gunakan manajemen rahasia CI/CD untuk kunci pribadi
  • Jangan pernah mengkomit 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 dikomit)

Rotasikan kunci enkripsi secara teratur untuk meningkatkan keamanan:

  1. Buat kunci baru:

    Jendela terminal
    # Navigate to desired directory first, then create keys
    mkdir ./new-keys && cd ./new-keys
    npx @capgo/cli@latest key create
  2. Simpan kunci publik baru ke Capacitor konfigurasi:

    Jendela terminal
    npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub
  3. Perbarui konfigurasi aplikasi Anda dengan kunci publik baru

  4. Tayangkan aplikasi yang diperbarui sebelum mengunggah bundle yang dienkripsi dengan kunci baru

  • Jangan pernah berbagi kunci pribadi antara lingkungan atau anggota tim
  • Gunakan kunci yang berbeda untuk lingkungan yang berbeda (dev, staging, produksi)
  • Rotasi kunci secara teratur (direkomendasikan: setiap 6-12 bulan)
  • Simpan kunci dengan aman menggunakan sistem manajemen kunci yang tepat
  • Selalu verifikasi integritas paket setelah dekripsi
  • Monitor untuk pola download yang tidak biasa atau gagal
  • Gunakan HTTPS untuk semua URL bundle (diperlukan untuk aplikasi mobile)
  • Implementasikan pengelolaan error yang tepat untuk gagal dekripsi
  • Batasi akses ke kunci enkripsi hanya kepada staf yang berwenang saja
  • Gunakan penggunaan berdasarkan peran untuk operasi pengelolaan kunci
  • Audit penggunaan dan akses secara teratur
  • Implement prosedur backup dan pemulihan yang tepat

Gagal Dekripsi:

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

Masalah terkait kunci:

  • Konfirmasikan format kunci pribadi yang benar (format PEM)
  • Verifikasi apakah kunci telah rusak selama penyimpanan/transfer
  • Periksa apakah kunci memiliki izin yang tepat dalam konfigurasi aplikasi Anda

Masalah kinerja:

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

Periksa status enkripsi:

Jendela terminal
npx @capgo/cli@latest app debug

Test alur enkripsi/dekripsi:

Jendela 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

Capgo’s implementasi enkripsi mengikuti standar industri:

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

Hal ini membuat Capgo cocok untuk aplikasi yang memerlukan kinerja sesuai dengan:

  • GDPR (Regulasi Perlindungan Data Umum)
  • HIPAA (Undang-Undang Keseimbangan Asuransi Kesehatan dan Tanggung Jawab)
  • SOC 2 (Kontrol Organisasi Layanan 2)
  • ISO 27001 (Manajemen Keamanan Informasi)
  • Ukuran Paket: Paket yang dienkripsi sedikit lebih besar (~1-2% overhead)
  • Waktu Proses: Penambahan latency yang minimal karena enkripsi/dekripsi
  • Penggunaan Memori: Peningkatan sementara selama operasi enkripsi/dekripsi
  • Optimalkan ukuran paket Anda dengan mengonversi gambar ke format WebP
  • Minimalisasi file JavaScript dan CSS sebelum pembundling
  • Hapus dependensi yang tidak digunakan dan __CAPGO_KEEP_0__
  • Remove unused dependencies and code
  • Monitor kinerja perangkat pada perangkat yang lebih tua/lambat
  • Pelajari tentang Penyimpanan Kustom untuk menggunakan enkripsi dengan infrastruktur sendiri
  • Eksplorasi Saluran untuk mengelola bundle yang dienkripsi di antara lingkungan
  • Tetapkan Integrasi CI/CD untuk otomatisasi pengiriman yang dienkripsi

Jika Anda menggunakan Pengenkripsi untuk merencanakan keamanan dan kewenangan, hubungkannya dengan Kewenangan untuk detail implementasi di Kewenangan, 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.