Skip to content

암호화

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

Capgo의 암호화 시스템은 업무 표준 암호화 방법을 사용하여 앱 번들을 불법적인 접근으로부터 보호합니다. 암호화가 활성화되면 개발 환경을 떠나는 앱 번들은 암호화되어 있으며 사용자의 장치에서 앱이 암호를 해독할 때까지 암호화된 상태로 유지됩니다.

실제로 암호화가 보호하는 것: 업데이트를만들 때만 서명하는 OTA 시스템과 달리, Capgo은 업로드한 앱 번들을 저장 및 전송하기 전에 암호화합니다. 저장소 또는 전송 중에 앱 번들의 내용을 비공개로 보호하고, 유효한 암호화된 업데이트를 만들 수 있는 사람만이 개인 키를 가지고 있는 경우에만 앱 번들의 내용을 보호합니다. 암호화가 제공하는 것은 업데이트를 만들 때만 서명하는 OTA 시스템과 달리, __CAPGO_KEEP_0__은 업로드한 앱 번들을 저장 및 전송하기 전에 암호화합니다. 저장소 또는 전송 중에 앱 번들의 내용을 비공개로 보호하고, 유효한 암호화된 업데이트를 만들 수 있는 사람만이 개인 키를 가지고 있는 경우에만 앱 번들의 내용을 보호합니다.

암호화 방법

암호화 방법 섹션

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

Capgo 암호화 흐름

1. 키 생성

키 생성 섹션
  • 개인 키: 개발 환경에서 안전하게 생성 및 저장되며 암호화에 사용됩니다.
  • 공개 키: 개인 키에서 파생되어 앱의 Capacitor 구성에서 저장되며 복호화에 사용됩니다.
  • 세션 키: 각 업로드 배ंडल에 대한 임의 AES 키를 생성합니다.

2. 암호화 과정

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

체크섬은 공격자가 서명에 손상을 입히지 못하도록 AES 키와 함께 암호화됩니다. RSA 개인 키만이 서명을 생성할 수 있고, 그에 대응하는 공개 키만이 서명을 해독할 수 있으므로, AES 세션 키와 예상 체크섬이 모두 인증되고 공격자가 손상시키지 않은 것을 보장합니다.

3. 복호화 과정

복호화 과정
  1. 앱은 암호화된 배ंडल과 암호화된 서명을 다운로드합니다.
  2. Capgo SDK은 앱에 저장된 RSA 공개 키를 사용하여 서명을 해독합니다.
  3. 이것은 AES 세션 키와 원래 체크섬을 드러냅니다.
  4. AES 세션 키는 패키지를 해독하기 위해 사용됩니다.
  5. 해독된 패키지의 체크섬을 계산하고 원래 체크섬과 비교하여 무결성 검증을 위해 사용됩니다.

이 프로세스는 공격자가 암호화된 패키지를 중간에截获하더라도, 공격자가 AES 세션 키나 가짜 체크섬을 제공하기 위해 개인 키를 사용해야 하므로, 공격자가 AES 세션 키나 가짜 체크섬을 변경하거나 제공할 수 없습니다.

Capgo vs Other Platforms

제목 "Capgo vs Other Platforms"
기능Capgo다른 OTA 플랫폼
내용을 패키지합니다.__CAPGO_KEEP_0__에서 암호화된 저장/전송; 앱 바이너리에서 결정된 역공학자에 의해 검사할 수 있습니다.공개 가능한 읽기
보안 방법완전한 종단 간 암호화Code에 대한 서명만
privacylevel강력한 전달/저장 보호; 역공학 방지가 아닙니다.code에 대한 플랫폼 접근
보호내용 + 무결성 + 진위무결성 + 진위만

Why This Matters:

  • Code signing 업데이트가 변조되지 않았고 올바른 출처에서 왔는지 확인하는 것만을 확인합니다.
  • Capgo 암호화 업데이트가 저장되고 전송되는 동안 번들을 보호하고 암호화된 업데이트를 위조하는 것이 훨씬 어려워집니다. 공격자가 개인 키를 필요로 합니다.
  • 애플리케이션 배포 후에도 역공학이 가능합니다. 업데이트를 암호화하고 로드하기 위해 필요합니다.

암호화 방법

암호화 방법

Capgo는 Encryption V2를 표준 암호화 방법으로 사용합니다.

Encryption V2 (현재 표준)

Encryption V2 (현재 표준)
  • __CAPGO_KEEP_0__
  • __CAPGO_KEEP_0__
  • __CAPGO_KEEP_0__
  • __CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__
  • RSA-2048을 사용하여 키 암호화
  • AES-256-CBC를 사용하여 패키지 암호화
  • CLI에서 더 이상 사용할 수 없습니다
  • V1을 사용하는 이전 앱은 V2로 마이그레이션해야 합니다

First, generate your encryption keys using the Capgo CLI:

클립보드에 복사
# Generate new encryption keys (creates files in current directory)
npx @capgo/cli@latest key create

개인 키 (이 키를 안전하게 보관하세요!)

  • .capgo_key_v2Section titled “Setting Up Encryption”
  • .capgo_key_v2.pub: __CAPGO_KEEP_0__ (

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

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 플랫폼 동기화 (필수)

Section titled “Step 3: Capacitor 플랫폼 Sync (필수)”

공개 키를 저장한 후, __CAPGO_KEEP_0__ 플랫폼을 Sync하여 sync the Capacitor platform to copy the updated config to the native layer:

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

키 안전하게 저장

키 안전하게 저장 섹션

Private Key Options:

  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"

Public Key Setup (Required):

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

Production Environment:

  • 생산 환경:
  • CI/CD 비밀 키 관리를 사용하세요.
  • 버전 관리에 개인 키를 커밋하지 마세요.

Key Usage:

  • 개인 키: CLI에 의해 업로드 시 배포 중 암호화에 사용 (보안 유지)
  • 공개 키: 장치에서 해독하기 위해 앱 구성에 저장 (커밋할 수 있음)

새 키를 생성하세요:

  1. 터미널 창

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

    __CAPGO_KEEP_0__ 터미널 창
    npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub
  3. __CAPGO_KEEP_0__ 앱 구성 정보를 업데이트하세요 새로운 공개 키와 함께

  4. 업데이트된 앱을 업로드하기 전에 새로운 키로 암호화된 패키지를 업로드하기 전에

__CAPGO_KEEP_0__ 제목 ‘키 보안’

__CAPGO_KEEP_0__
  • 개인 키는 절대 환경이나 팀 멤버 간에 공유하지 마세요. 환경 (개발, 스테이징, 운영) 간에 다른 키를 사용하세요.
  • 키를 정기적으로 회전하세요. (권장: 6-12 개월마다)
  • 보안 키 관리 시스템을 사용하여 키를 안전하게 저장하세요. Bundle Security
  • 항상 암호 해독 후 번들完整성을 확인하세요. Bundle Security

Bundle Security

Bundle Security
  • Bundle Security Bundle Security
  • 비정상 다운로드 패턴이나 실패를 위한 모니터링 모바일 앱을 위한 모든 번들 URL에 HTTPS 사용
  • 해독 실패에 대한 적절한 오류 처리 구현 접근 제어
  • 암호화 키에 대한 접근 제한 권한 기반 접근

권한 기반 키 관리

__CAPGO_KEEP_0__
  • __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
  • __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
  • 감사 __CAPGO_KEEP_0__
  • 구현 __CAPGO_KEEP_1__

암호화 복호화 문제 해결

__CAPGO_KEEP_2__

일반적인 문제

__CAPGO_KEEP_3__

복호화 실패:

  • __CAPGO_KEEP_4__
  • 개인 키가 암호화에 사용된 공개 키와 일치하는지 확인하세요. ivSessionKey __CAPGO_KEEP_5__
  • 암호화 V2를 사용 중인지 확인하세요 (V1은 더 이상 지원되지 않습니다)

키 관련 오류:

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

성능 문제:

  • 대형 패키지는 암호화/해독이 더 오래 걸릴 수 있습니다
  • Delta(매니페스트) 업데이트를 사용하여 패키지 크기를 줄이려면 고려해 보세요
  • 디바이스의 해독 중 성능을 모니터링하세요

디버그 명령

디버그 명령

암호화 상태를 확인하세요

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

이것은 Capgo를 다음 규정에 따라 준수하는 응용 프로그램에 적합하게 만듭니다.

  • GDPR (일반 데이터 보호 규정)
  • HIPAA (건강 보험 포트 ability 및 책임성 법)
  • SOC 2 (서비스 조직 제어 2)
  • ISO 27001 (정보 보안 관리)

성능 고려 사항

성능 고려 사항
  • Bundle size: 암호화된 번들은 약 1-2%의 오버헤드만큼 더 큽니다.
  • Processing time: 암호화/복호화는 최소한의 지연 시간만 추가합니다.
  • Memory usage: 암호화/복호화 작업 중 임시로 메모리 사용량이 증가합니다.
  • Delta (매니페스트) 업데이트 사용하여 암호화된 데이터 전송량을 최소화하세요.
  • 이미지를 WebP 형식으로 변환하여 번들의 크기를 최적화하세요.
  • JavaScript 및 CSS 파일의 크기를 미리 최적화하여 번들을 만드세요.
  • code을 제거하는 불필요한 의존성
  • __CAPGO_KEEP_0__을 제거하는 불필요한 의존성 제거

다음 단계

다음 단계
  • 알아보기 사용자 지정 저장소 __CAPGO_KEEP_0__을 사용하여 자체 인프라에서 암호화
  • 탐색 채널 __CAPGO_KEEP_0__을 사용하여 환경 간 암호화된 패키지를 관리
  • 설정 CI/CD 통합 자동화된 암호화 배포를 위해

암호화에서 계속

암호화에서 계속

암호화 기능을 사용 중이라면 암호화 보안 및 규정 준수 계획을 위해 암호화와 연결하세요. 규정 준수 규정 준수에서 구현 세부 정보를 위해 Capgo 보안 스캐너 Capgo 보안 스캐너의 제품 워크플로우를 위해 Capgo 보안 Capgo 보안의 제품 워크플로우를 위해 Capgo 신뢰 센터 Capgo 신뢰 센터의 제품 워크플로에 대한 조직 보안 조직 보안의 구현 세부 정보에 대한