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

Sistem enkripsi 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 hingga dienkripsi oleh aplikasi Anda di perangkat pengguna.

Apa Saja yang Dilindungi oleh Enkripsi: Berbeda dengan sistem OTA yang hanya menandatangani update, Capgo mengenkripsi bundle yang diunggah sebelum penyimpanan dan pengiriman. Ini melindungi isi bundle dari akses sembarangan dalam penyimpanan atau transit dan memastikan hanya orang yang memiliki kunci pribadi Anda yang dapat menghasilkan update yang terenkripsi yang valid. Ini tidak membuat aset web yang dikirimkan tidak dapat direversi: kunci publik yang digunakan oleh klien untuk mendekripsi update didistribusikan dalam aplikasi, sehingga seorang penyerang yang berdedikasi masih dapat mengekstraknya dan memeriksa isi bundle dengan cukup usaha. Kapan Anda Membutuhkan Enkripsi Kapan Anda Membutuhkan Enkripsi

Aplikasi perusahaan dengan persyaratan komplian

Aplikasi yang dijalankan di industri yang diatur

Capgo uses a hybrid encryption approach that combines RSA and AES encryption for optimal security and performance:

Capgo Encryption Flow

  • 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 Anda Capacitor (digunakan untuk dekripsi)
  • Kunci Sesi: Kunci AES acak yang dihasilkan untuk setiap unggahan bundle
  1. Kunci sesi AES acak dihasilkan untuk setiap unggahan bundle
  2. Bundle Anda dienkripsi menggunakan kunci sesi AES
  3. The bundle checksum dihitung ulang
  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 sesi AES untuk mencegah manipulasi. Karena hanya kunci pribadi RSA Anda yang dapat membuat tanda tangan ini, dan hanya kunci publik yang sesuai yang dapat memecahkannya, ini memastikan bahwa kedua kunci sesi AES dan checksum yang diharapkan adalah autentik dan belum dimanipulasi oleh penyerang.

  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 memecahkan bundle
  5. Checksum dari bundle yang dipecah dihitung dan dibandingkan dengan checksum asli untuk verifikasi integritas

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

FiturCapgoPlatform OTA Lainnya
Isi BundleDienkripsi dalam penyimpanan/transit; masih dapat dilihat oleh seorang pengecual yang berdedikasi dengan binary aplikasiBacaan Umum
Metode KeamananEnkripsi akhir-ke-akhir yang benarCode signing hanya
Tingkat PrivasiPengiriman/penyimpanan yang kuat; tidak anti-reverse-engineeringPlatform dapat mengakses code Anda
PengamananKonten + integritas + keaslianIntegritas + keaslian saja

Mengapa Ini Penting:

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

Capgo menggunakan Metode Pengenkripsi V2 sebagai metode pengenkripsi standar:

Metode Pengenkripsi V2 (Standar Saat Ini)

Judul bagian “Metode Pengenkripsi V2 (Standar Saat Ini)”
  • Menggunakan RSA-4096 untuk keamanan yang ditingkatkan
  • AES-256-GCM untuk pengenkripsi yang terotentikasi
  • Menghasilkan verifikasi integritas
  • Kinerja yang lebih baik dan keamanan
  • Menggunakan RSA-2048 untuk enkripsi kunci
  • AES-256-CBC untuk enkripsi paket
  • Tidak tersedia lagi di versi CLI saat ini
  • Aplikasi legacy 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 tempat Anda menjalankan perintah.

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

Judul Bagian “Langkah 2: Simpan Kunci Publik Anda ke Capacitor Konfigurasi (Wajib)”

Anda harus menghemat kunci publik Anda ke konfigurasi Capacitor agar aplikasi seluler Anda dapat memecahkan bundle:

Jendela Terminal
# 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"

Langkah 3: Sinkronkan Capacitor Platform (Wajib)

Judul Bagian “Langkah 3: Sinkronkan Capacitor Platform (Wajib)”

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

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

Metode 1: Mengenkripsi Selama Unggahan

Bagian berjudul “Metode 1: Enkripsi Selama Unggahan”

Cara termudah adalah dengan mengenkripsi selama proses unggahan:

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 baik, Anda dapat mengenkripsi bundle secara manual:

  1. Buat bundle 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 komit kunci pribadi ke pengontrol versi

Penggunaan Kunci:

  • Kunci PribadiDigunakan oleh CLI untuk enkripsi selama unggahan bundle (tetap aman)
  • Kunci PublikDigunakan oleh __CAPGO_KEEP_0__ untuk enkripsi selama unggahan bundle (tetap aman)

Rotasikan kunci enkripsi secara teratur untuk meningkatkan keamanan:

  1. Membuat kunci baru:

    Tampilan 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 config:

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

  4. Jalankan pengunduhan 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)
  • Ganti kunci secara teratur (direkomendasikan: setiap 6-12 bulan)
  • Simpan kunci dengan aman menggunakan sistem manajemen kunci yang tepat
  • Selalu verifikasi integritas paket setelah dekripsi
  • Tetapkan untuk pola download yang tidak biasa atau gagal
  • Gunakan HTTPS untuk semua URL paket (diperlukan untuk aplikasi mobile)
  • Implementasikan pengaturan error yang tepat untuk gagal dekripsi Akses Kontrol

Bab berjudul “Akses Kontrol”

Batasi akses
  • ke kunci enkripsi hanya untuk staf yang berwenang Gunakan akses berdasarkan peran
  • untuk operasi manajemen kunci Audit
  • penggunaan dan akses kunci secara teratur Implementasikan prosedur backup dan pemulihan yang tepat
  • Implementasikan pengaturan error yang tepat untuk gagal dekripsi Akses Kontrol

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)

Masalah terkait kunci:

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

Masalah kinerja:

  • File bundel besar mungkin membutuhkan waktu lebih lama untuk dienkripsi/didekripsi
  • Gunakan Delta (manifest) untuk mengurangi ukuran file 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 simetris yang disetujui FIPS 140-2
  • RSA-4096: Enkripsi asimetris yang kuat untuk perlindungan kunci
  • Mode GCM: Menyediakan keamanan kekonfidensialan dan keaslian
  • Random yang Aman: Penghasilan angka acak yang aman secara kriptografi

Hal ini membuat Capgo cocok untuk aplikasi yang memerlukan kinerja:

  • 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 PaketPaket yang dienkripsi sedikit lebih besar (~1-2% biaya tambahan)
  • Waktu Proses: Pengenkripsi/dikripsi menambahkan latensi minimal
  • Penggunaan Memori : Peningkatan sementara selama operasi pengenkripsi/dikripsi
  • Gunakan perubahan Delta (manifest) untuk meminimalkan transfer data yang dienkripsi
  • Optimalkan ukuran bundle Anda dengan mengonversi gambar ke format WebP
  • Minimalkan file JavaScript dan CSS sebelum pembundling
  • Hapus dependensi yang tidak digunakan dan code
  • Monitor kinerja perangkat pada perangkat yang lebih tua/lambat