내용으로 건너뛰기

암호화

Capgo은 앱 번들을 위한 강력한 종단 간 암호화를 제공하여 JavaScript code 및 자산이 전송 및 저장 중에 보호되도록 합니다. 이 암호화 시스템은 앱의 보안에 대한 완전한 제어를 유지하면서 실시간 업데이트 편의성을 유지하는 데 설계되었습니다.

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.

: 업데이트를 OTA 시스템만 서명하는 것과 달리 __CAPGO_KEEP_0__은 업로드 된 번들을 저장 및 전송하기 전에 암호화하여 저장 및 전송 중에 번들의 내용을 비공개로 유지합니다. 이는 저장소 또는 전송 중에 번들의 내용에 대한 비공개 접근을 보호하고, 유효한 암호화된 업데이트를 생성할 수 있는 사람만이 개인 키를 가지고 있으면만 유효한 암호화된 업데이트를 생성할 수 있습니다. : 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 암호화가 필요할 때 Overview

암호화는 어떻게 작동하는가?

__CAPGO_KEEP_0__ titled “__CAPGO_KEEP_1__”

Capgo은 RSA와 AES 암호화를 결합한 하이브리드 암호화 접근 방식을 사용하여 최적의 보안성과 성능을 제공합니다.

Capgo 암호화 흐름

1. 키 생성

1. 키 생성
  • 개인 키개발 환경에서 안전하게 생성 및 저장되며 암호화에 사용됩니다.
  • 공개 키: Capacitor에서 사용하는 암호화에 사용되는 앱의 개인 키에서 파생된 키를 저장합니다.
  • 세션 키: 각 번들 업로드마다 임의로 생성된 AES 키

2. 암호화 과정

2. 암호화 프로세스
  1. 각 업로드 배ंडल에 대해 랜덤 AES 세션 키가 생성됩니다.
  2. 배ंडल은 AES 세션 키를 사용하여 암호화됩니다.
  3. 배ंडल 체크섬이 계산됩니다.
  4. AES 세션 키와 체크섬은 모두 RSA 개인 키를 사용하여 암호화됩니다 (‘서명’을 만듭니다).
  5. 암호화된 배ंडल과 암호화된 서명이 저장됩니다.

체크섬은 공격자가 암호화된 AES 키를 변경하지 못하도록 방지하기 위해 AES 키와 함께 암호화됩니다. RSA 개인 키만이 이 서명을 만들 수 있고, 이 서명을 복호화할 수 있는 공개 키만이 이 서명을 복호화할 수 있으므로, 이로 인해 AES 세션 키와 예상 체크섬이 공격자가 변경하지 않은 상태로 인증되고 있습니다.

3. 복호화 프로세스

3. 복호화 프로세스
  1. 앱은 암호화된 배ंडल과 암호화된 서명을 다운로드합니다.
  2. Capgo SDK은 앱에 저장된 RSA 공개 키를 사용하여 서명을 복호화합니다.
  3. 이로 인해 AES 세션 키와 원래 체크섬이 드러납니다.
  4. The __CAPGO_KEEP_0__ session key is used to decrypt the bundle.
  5. A checksum of the decrypted bundle is calculated and compared with the original checksum for integrity verification.

This process ensures that even if an attacker intercepts the encrypted bundle, they cannot modify the __CAPGO_KEEP_0__ session key or provide a fake checksum, because they would need your private key to create a valid signature that the public key can decrypt.

Capgo vs Other Platforms

Capgo vs Other Platforms
기능Capgo다른 OTA 플랫폼
배달 콘텐츠저장/전송 중 암호화; 여전히 앱 바이너리에서 결정된 역 엔지니어에 의해 검사 가능공개적으로 읽을 수 있음
보안 방법완전한 종단 간 암호화Code 서명만
privacylevel강력한 전달/저장 보호; 역 엔지니어링에 대한 항이 아님플랫폼이 code에 접근할 수 있음
보호내용 + 무결성 + 진위무결성 + 진위만

이것이 중요한 이유:

  • Code signing 업데이트가 변조되지 않았는지 확인하고 올바른 출처에서 왔는지 확인하는 것만을 확인합니다.
  • Capgo 암호화 업데이트가 저장되고 전송되는 동안 번들을 보호하고 암호화된 업데이트를 위조한 공격자가 개인 키를 필요로 할 때 위조된 암호화된 업데이트를 훨씬 더 어려워집니다.
  • 앱이 배포된 후에도 클라이언트가 업데이트를 해독하고 로드하기 위해 필요한 공개 키를 포함하고 있기 때문에 역공학이 여전히 가능합니다. 암호화 방법

Capgo uses Encryption V2 as the standard encryption method:

  • Encryption Methods
  • __CAPGO_KEEP_0__ AES-256-GCM으로 인증 암호화
  • __CAPGO_KEEP_0__ 무결성 확인을 제공합니다.
  • __CAPGO_KEEP_0__ 성능과 보안을 향상합니다.
  • __CAPGO_KEEP_0__ RSA-2048를 사용하여 키 암호화
  • __CAPGO_KEEP_0__ AES-256-CBC로 패키지 암호화
  • CLI 현재 버전에서 더 이상 사용할 수 없습니다.
  • __CAPGO_KEEP_0__ V1을 사용하는 이전 앱은 V2로 마이그레이션해야 합니다.

암호화 설정

암호화 설정

1단계: 암호화 키 생성

1단계: 암호화 키 생성

먼저 Capgo CLI을 사용하여 암호화 키를 생성하세요.

터미널 창
# Generate new encryption keys (creates files in current directory)
npx @capgo/cli@latest key create

다음과 같이 생성됩니다.

  • .capgo_key_v2: 개인 키 (이 키를 안전하게 보관하세요!)
  • .capgo_key_v2.pub: 공개 키 (앱에 사용)

이 파일들은 명령어를 실행한 현재 디렉토리에서 생성됩니다.

2단계: Capacitor 설정에 공개 키 저장하기 (필수)

제목: 2단계: Capacitor 설정에 공개 키 저장하기 (필수)

당신 해야 Capacitor 설정에 공개 키를 저장하여 모바일 앱이 패키지를 해독할 수 있도록 하십시오:

터미널 창
# 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"

3단계: Capacitor 플랫폼 동기화 (필수)

제목: 3단계: Capacitor 플랫폼 동기화 (필수)

공개 키를 저장한 후 해야 Capacitor 플랫폼을同步하여 업데이트된 구성 파일을 네이티브层로 복사해야 합니다.

터미널 창
# Sync the platform to copy config to native
npx cap sync

파일 암호화

파일 암호화

업로드 중 암호화

업로드 중 암호화

업로드 중에 암호화를 통해 가장 단순한 방법입니다.

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

수동 암호화 워크플로우

수동 암호화 워크플로우

더욱 많은 제어를 원하신다면, 암호화된 파일들을 수동으로 암호화할 수 있습니다.

  1. zip 파일을 생성하세요.

    터미널 창
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. 압축 파일 암호화:

    터미널 창
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1
  3. Capgo와 함께 저장소(예: S3)에 업로드하고 등록하세요.

    터미널 창
    # 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

키 관리

키 관리

보안 키 저장

보안 키 저장

개인 키 옵션:

  1. 파일 기반 (로컬 개발):

    터미널 창
    # Key stored as .capgo_key_v2 file in project root
    npx @capgo/cli@latest bundle upload --key-v2
  2. 환경 변수 (CI/CD):

    터미널 창
    # 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"

공개 키 설정 (필수):

터미널 창
# Must save public key to Capacitor config for mobile app
npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub

운영 환경:

  • 보안 키 관리 서비스 (AWS KMS, Azure Key Vault 등)에 개인 키를 저장하세요.
  • CI/CD 비밀 관리를 사용하여 개인 키를 사용하세요.
  • 버전 관리에 개인 키를 커밋하지 마세요.

키 사용:

  • 개인 키CLI이 번들 업로드 중 암호화에 사용합니다 (보안 유지).
  • 공개 키앱 구성에서 디바이스에서 해독하기 위해 저장됩니다 (커밋할 수 있음).

보안을 강화하기 위해 정기적으로 암호화 키를 회전하세요.

  1. 새 키를 생성하세요.

    터미널 창
    # Navigate to desired directory first, then create keys
    mkdir ./new-keys && cd ./new-keys
    npx @capgo/cli@latest key create
  2. Capacitor 설정에 새로운 공개 키를 저장하세요:

    터미널 창
    npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub
  3. 새로운 공개 키와 함께 앱 구성 업데이트 업로드하기 전에 암호화된 패키지를 업데이트한 앱을 배포

  4. 업데이트된 앱을 배포하기 전에 암호화된 패키지를 업로드하기 전에 업데이트하세요 보안 최적화

보안 최적화

키 보안
  • Security Best Practices 환경 또는 팀 구성원 사이에
  • 다른 키를 사용하십시오 다른 환경 (개발, 스테이징, 운영) 에 대해
  • 정기적으로 키를 회전하십시오 (권장: 6-12 개월마다)
  • 키를 안전하게 저장하십시오 적절한 키 관리 시스템을 사용하십시오
  • 항상 패키지의 무결성을 확인하십시오
  • 해독 후 for __CAPGO_KEEP_0__ download patterns or failures
  • __CAPGO_KEEP_1__ HTTPS for all __CAPGO_KEEP_2__ URLs (required for mobile apps)
  • __CAPGO_KEEP_3__ proper error handling for decryption failures
  • __CAPGO_KEEP_5__ access to encryption keys to only authorized personnel
  • __CAPGO_KEEP_6__ access for key management operations
  • __CAPGO_KEEP_7__ 정기적인 키 사용 및 접근
  • Implement 정상적인 백업 및 복구 절차를 수행

암호화 문제 해결

암호화 문제 해결 섹션

일반적인 문제

암호화 실패:

개인 키가 암호화에 사용된 공개 키와 일치하는지 확인

  • 암호화에 사용된 키가 올바른지 확인
  • 암호화에 사용된 키가 올바른지 확인 ivSessionKey 암호화 V2 (V1은 더 이상 지원되지 않음)를 사용하는지 확인
  • __CAPGO_KEEP_0__

Key-related 오류:

  • 개인 키 형식이 올바른지 확인하세요 (PEM 형식)
  • 저장/전송 중에 키가 손상되지 않았는지 확인하세요
  • 앱 구성에서 키가 올바른 권한을 가지고 있는지 확인하세요

성능 문제:

  • 대형 번들을 암호화/복호화하는 데 더 오랜 시간이 걸릴 수 있습니다
  • Delta (매니페스트) 업데이트를 사용하여 번들의 크기를 줄이세요
  • 디바이스의 복호화 중인 성능을 모니터링하세요

디버그 명령

디버그 명령

암호화 상태를 확인하세요:

터미널 창
npx @capgo/cli@latest app debug

테스트 암호화/복호화 워크플로우:

터미널 창
# 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의 암호화 구현은 업계 표준을 따릅니다.

  • AES-256FIPS 140-2로 승인된 암호화 알고리즘:
  • RSA-4096강력한 비대칭 암호화를 위한 키 보호:
  • GCM 모드: __CAPGO_KEEP_0__는 신뢰성과 진위성을 제공합니다.
  • Secure Random: __CAPGO_KEEP_0__는 암호학적으로 안전한 난수 생성을 제공합니다.

This makes Capgo suitable for applications requiring compliance with:

  • GDPR (개인정보보호법)
  • HIPAA (건강보험 포트 ability 법)
  • SOC 2 (서비스 조직 제 2 조)
  • ISO 27001 (정보 보안 관리)

Performance Considerations

성능 고려 사항

Encryption Overhead

암호화 오버헤드
  • Bundle size: __CAPGO_KEEP_0__
  • Processing time: __CAPGO_KEEP_0__
  • Memory usage: __CAPGO_KEEP_0__

Optimization Tips

최적화 팁
  • Use Delta (manifest) updates to minimize encrypted data transfer
  • 이미지 파일을 WebP 형식으로 변환하여 Bundle 크기를 최적화하세요.
  • JavaScript 및 CSS 파일을 미리 최적화하여 Bundle 크기를 줄입니다.
  • Remove unused dependencies and code
  • __CAPGO_KEEP_0__ 기기 성능을 이전/느린 장치에서 모니터링합니다.

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__
  • __CAPGO_KEEP_3__에 대해 알아보세요. __CAPGO_KEEP_4__ __CAPGO_KEEP_5__와 함께 암호화를 사용하려면 자체 인프라를 구성하세요.
  • __CAPGO_KEEP_6__ __CAPGO_KEEP_7__ __CAPGO_KEEP_8__를 사용하여 암호화된 패키지를 환경 간에 관리하세요.
  • __CAPGO_KEEP_9__를 설정하세요. __CAPGO_KEEP_10__ __CAPGO_KEEP_11__

__CAPGO_KEEP_0__ 암호화에서 계속

__CAPGO_KEEP_0__ 암호화에서 계속

__CAPGO_KEEP_0__을 사용하는 경우 __CAPGO_KEEP_0__ __CAPGO_KEEP_0__을 보안 및 규정 준수 계획에 연결하세요. __CAPGO_KEEP_0__ __CAPGO_KEEP_0__의 구현 세부 정보를 위한 __CAPGO_KEEP_0__ Capgo Security Scanner Capgo Security Scanner의 제품 워크플로우를 위한 Capgo Capgo Capgo의 제품 워크플로우를 위한 Capgo Capgo Trust Center Capgo 제품 워크플로우에 대한 신뢰 센터에서, 그리고 조직 보안 __CAPGO_KEEP_0__ 조직 보안 구현 세부 사항에 대해.