내용으로 건너뛰기

암호화

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

개요

개요

Capgo의 암호화 시스템은 업로드된 번들을 저장 및 전송하기 전에 암호화하여 개발 환경을 떠나기 전에 암호화하고 사용자의 장치에서 앱이 암호화를 해독할 때까지 암호화된 상태로 유지합니다.

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

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

Capgo 암호화 흐름

  • 개인 키: 개발 환경에서 안전하게 생성 및 저장되며 암호화에 사용됩니다.
  • 공개 키: 개인 키에서 파생되어 앱의 Capacitor 구성에서 저장되며 복호화에 사용됩니다.
  • 세션 키: 각 번들 업로드에 대해 랜덤하게 생성되는 AES 키

2. 암호화 프로세스

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

체크섬은 AES 키와 함께 암호화되어 변조를 방지합니다. RSA 개인 키만이 이 서명을 생성할 수 있고, 이 서명을 해독할 수 있는 공개 키만이 이 서명을 해독할 수 있기 때문에, AES 세션 키와 예상 체크섬이 공격자가 변조하지 않은 것으로 보장됩니다.

3. 복호화 프로세스

3. 복호화 프로세스
  1. 앱은 암호화된 배ंडल과 암호화된 서명을 다운로드합니다.
  2. Capgo SDK은 앱에 저장된 RSA 공개 키를 사용하여 서명을 해독합니다.
  3. 이것은 AES 세션 키와 원래 체크섬을 드러냅니다.
  4. AES 세션 키는 패키지를 해독하는 데 사용됩니다.
  5. 해독된 패키지의 체크섬이 계산되고 원래 체크섬과 일치 여부를 확인하여完整성 검증을 수행합니다.

이 프로세스는 공격자가 암호화된 패키지를截获하고 AES 세션 키를 변경하거나 가짜 체크섬을 제공할 수 없도록합니다. 왜냐하면 공격자가 유효한 서명이 공개 키로 해독될 수 있는 개인 키를 생성해야 하기 때문입니다.

Capgo vs Other Platforms

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

이것이 중요한 이유:

  • Code signing 업데이트가 훼손되지 않았는지와 올바른 출처인지 확인하는 것만을 확인합니다.
  • Capgo 암호화 업데이트가 저장되고 전송되는 동안 패키지를 보호하고 암호화된 업데이트를 위조한 공격자가 개인 키를 필요로 할 때 위조된 암호화된 업데이트를 훨씬 더 어렵게 만듭니다.
  • 애플리케이션이 배포된 후에도 클라이언트가 업데이트를 해독하고 로드하기 위해 필요한 공개 키를 포함하고 있기 때문에 역공학은 여전히 가능합니다. 암호화 방법

Capgo uses Encryption V2 as the standard encryption method:

  • 암호화 V2 (현재 표준)
  • AES-256-GCM 인증 암호화
  • 인증 암호화에 대한 무결성 검증 제공
  • 성능과 보안 향상

암호화 V1 (deprecated)

암호화 V1 (deprecated) 섹션
  • 키 암호화에 RSA-2048 사용
  • 배포 암호화에 AES-256-CBC 사용
  • 현재 CLI에서 더 이상 사용할 수 없음
  • 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 구성에 공개 키 저장 (필수)

__CAPGO_KEEP_0__에 공개 키를 저장해야만 모바일 앱이 암호화된 패키지를 해독할 수 있습니다. __CAPGO_KEEP_0__에 공개 키를 저장해야만 모바일 앱이 암호화된 패키지를 해독할 수 있습니다. Capacitor에 공개 키를 저장해야만 모바일 앱이 암호화된 패키지를 해독할 수 있습니다.

__CAPGO_KEEP_0__에 공개 키를 저장해야만 모바일 앱이 암호화된 패키지를 해독할 수 있습니다.
# 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"

Capacitor에 공개 키를 저장해야만 모바일 앱이 암호화된 패키지를 해독할 수 있습니다.

Capacitor에 공개 키를 저장해야만 모바일 앱이 암호화된 패키지를 해독할 수 있습니다.

__CAPGO_KEEP_0__ 플랫폼을 저장한 공개 키 후 해야 합니다 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 비밀 관리를 사용하여 개인 키를 관리하십시오.
  • 버전 관리에 개인 키를 커밋하지 마세요.

Key Usage:

  • 개인 키: CLI에 의해 업로드 시 번들 암호화에 사용 (보안 유지)
  • 공개 키: 장치에서 복호화에 사용되는 앱 구성에 저장 (커밋할 수 있음)

개인 키가 compromis 된 경우 회전

개인 키가 compromis 된 경우 회전

개인 키가 compromis 된 것으로 의심되거나 확인된 경우 키 Pair를 회전하세요. 정기적인 캘린더 회전은 필요하지 않습니다. 이건 원격 업데이트만 변경하는 것이 아닌 원본 키 마이그레이션입니다.

  1. 대체 키 Pair를 생성하세요:

    터미널 창
    npx @capgo/cli@latest key create
  2. Capacitor 설정에서 대체 공개 키를 저장하세요:

    터미널 창
    npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
  3. 대체 공개 키를 포함하는 새로운 네이티브 앱 버전을 배포하세요: 실행 npx cap sync그 후, 대체 공개 키를 포함하는 새로운 네이티브 앱 버전을 배포하세요.

  4. 새로운 네이티브 버전을 대상하세요: 기존 네이티브 바이너리에서 실행 중인 기기에서는 대체 키로 암호화된 업데이트를 암호화할 수 없습니다. 대체 키로 암호화된 업데이트를 받으려면 버전 대상 컨텍스트: Capgo 솔루션 마케팅 페이지. 역할: 섹션 또는 페이지 제목. 보는 곳: page solutions/version-targeting.astro. 메시지 키 `solutions_version_targeting_title` (솔루션 버전 대상 제목). | Capgo 솔루션 마케팅 페이지. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 보는 곳: page solutions/version-targeting.astro. 메시지 키 `solutions_version_targeting` (솔루션 버전 대상).

  5. 대체 키로 암호화된 업데이트를 받으려면 기존 네이티브 버전의 기기에서 업데이트를 받도록 제한하세요. 업로드 시크릿을 Switch하세요:

__CAPGO_KEEP_0__

안전한 방법

__CAPGO_KEEP_0__

키의 안전성
  • __CAPGO_KEEP_0__ 개인 키를 절대 공유하지 마세요.
  • 환경이나 팀원들 사이에 다른 환경 (개발, 스테이징, 운영) 에 대해 다른 키를 사용하세요.
  • compromise가 발생한 경우 키를 교체하세요.: 개인 키가 의심되거나 확인된 경우 키 pair를 교체하십시오; 정기적인 캘린더 회전은 필요하지 않습니다
  • 보안 키를 저장하십시오 적절한 키 관리 시스템을 사용하십시오
  • 항상 해독 후 Bundle의完整성을 확인하십시오 비정상적인 다운로드 패턴 또는 실패를 모니터하십시오
  • 모바일 앱의 경우 모든 Bundle URL에 HTTPS를 사용하십시오 (필수) Implement
  • Bundle 보안 Bundle 보안
  • Bundle 보안 복호화 실패 시 적절한 오류 처리

접근 제어

접근 제어
  • 권한이 있는 사람에게만 암호화 키에 대한 접근을 제한하세요 권한 기반 접근 제어를 사용하여 키 관리 작업을 수행하세요
  • 키 사용 및 접근을 정기적으로 감사하세요 적절한 백업 및 복구 절차를 구현하세요
  • 암호화 문제 해결 key_usage_and_access_regularly
  • key_management_operations encryption_keys

해독 실패:

  • 개인 키가 암호화에 사용된 공개 키와 일치하는지 확인하세요
  • Check that the ivSessionKey is correct
  • Encryption V2 (V1은 더 이상 지원되지 않습니다)를 사용하는지 확인하세요

키 관련 오류:

  • 개인 키 형식이 올바른지 확인하세요 (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-256: FIPS 140-2 인증 암호화 알고리즘
  • RSA-4096: 키 보호를 위한 강력한 비대칭 암호화
  • GCM 모드: 신뢰성과 진위성을 제공하는 암호화
  • Secure Random: 암호학적으로 안전한 난수 생성

이로써 Capgo은 다음과 같은 규정 준수를 요구하는 애플리케이션에 적합합니다.

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

성능 고려 사항

성능 고려 사항

암호화 오버헤드

암호화 오버헤드
  • 배포 크기: 암호화 된 배포는 약 1-2%의 오버헤드 (~)
  • 처리 시간: 암호화/복호화는 최소한의 지연 시간을 추가합니다.
  • 메모리 사용: 암호화/복호화 작업 중 임시 증가
  • 델타(매니페스트) 업데이트 사용하여 암호화된 데이터 전송량 최소화
  • 이미지 형식을 WebP 형식으로 변환하여 번들 크기를 최적화
  • JavaScript 및 CSS 파일 크기를 최소화하기 전에 번들링
  • 사용하지 않는 의존성을 제거하고 code
  • 기존/느린 장치의 디바이스 성능 모니터링
  • 알아보기 Custom Storage 자체 인프라에서 암호화를 사용하기 위해
  • Explore 채널 다양한 환경 간 암호화된 패키지를 관리하기 위해
  • 설정 CI/CD 통합 자동화된 암호화된 배포를 위해

암호화에서 계속

암호화 사용 중이면

암호화 Encryption 보안 및 규정 준수 계획을 수립하기 위해 연결하세요. 규정 준수 규정 준수에 대한 구현 세부 정보 Capgo 보안 스캐너 Capgo 보안 스캐너의 제품 워크플로우 Capgo 보안 Capgo 보안의 제품 워크플로우 Capgo 신뢰 센터 Capgo 신뢰 센터의 제품 워크플로우 __CAPGO_KEEP_0__ 신뢰 센터 __CAPGO_KEEP_0__ 조직 보안