메뉴로 바로가기

암호화

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

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

실제로 보호하는 암호화: 업데이트를만들 때 업로드 한 번들을 저장 및 전송하기 전에 Capgo로 암호화합니다. 저장소 또는 전송 중에 방해받지 않고 번들을 내용을 보호하고, 업데이트를 만드는 데 사용하는 개인 키를 가진 사람만 유효한 암호화된 업데이트를 만들 수 있도록합니다. shipped 웹 자산을 역할할 수 없게 만드는 것은 아닙니다: 클라이언트가 업데이트를 암호화하기 위해 사용하는 공개 키는 앱에 분포되어 있기 때문에 충분한 노력으로 번들의 내용을 검사할 수 있습니다. 암호화가 필요한 경우 암호화가 필요한 경우

How Encryption Works

How Encryption Works

Capgo은 RSA 및 AES 암호화를 최적의 보안성과 성능을 위해 혼합 암호화 접근 방식을 사용합니다:

Capgo 암호화 흐름

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

2. 암호화 프로세스

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

체크섬은 AES 키를 방해하기 위해 암호화됩니다. 체크섬이 수정되지 않았는지 확인하기 위해, 체크섬을 생성할 수 있는만 RSA 개인 키와 체크섬을 확인할 수 있는만 공개 키가 필요합니다.

  1. 앱은 암호화된 압축 파일과 암호화된 서명을 다운로드합니다.
  2. Capgo SDK은 앱에 저장된 RSA 공개 키를 사용하여 서명을 복호화합니다.
  3. 이것은 AES 세션 키와 원래 체크섬을 드러냅니다.
  4. AES 세션 키는 압축 파일을 복호화합니다.
  5. 압축 파일의 체크섬이 계산되고 원래 체크섬과 일치 여부가 확인됩니다.

이 과정은 공격자가 암호화된 압축 파일을截获해도, AES 세션 키나 가짜 체크섬을 변경할 수 없습니다. 왜냐하면 공격자가 유효한 서명을 생성할 수 없기 때문입니다. 서명은 공격자가 개인 키를 사용하여만 생성할 수 있기 때문입니다.

Capgo vs Other Platforms

제목: Capgo vs Other Platforms
FeatureCapgoOther OTA Platforms
배포 콘텐츠저장/전송 중 암호화되지만 앱 바이너리와 함께 결정된 역공학자에 의해 검사할 수 있습니다.공개 가능한
보안 방법__CAPGO_KEEP_0__ 암호화Code 서명만
개인 정보 수준__CAPGO_KEEP_0__에 대한 강력한 전달/저장 보호; 역 엔지니어링 방지가 아님플랫폼이 code에 접근할 수 있습니다
보호__CAPGO_KEEP_0__ + 무결성 + 진위무결성 + 진위만

이것이 중요합니다:

  • Code 서명 __CAPGO_KEEP_0__ 서명은 업데이트가 변조되지 않았는지와 올바른 출처에서 왔는지 확인하는 것만을 확인합니다
  • Capgo 암호화 __CAPGO_KEEP_0__는 Encryption V2를 표준 암호화 방법으로 사용합니다:
  • 암호화 방법 __CAPGO_KEEP_0__는 현재 표준으로 Encryption V2를 사용합니다.

Capgo는 AES-256-GCM를 인증된 암호화를 위해 사용합니다.

__CAPGO_KEEP_0__는 데이터의 무결성을 검증합니다.

__CAPGO_KEEP_0__는 성능과 보안을 향상합니다.
  • __CAPGO_KEEP_0__는 업데이트를 암호화하여 보호합니다. 업데이트가 저장되고 전송되는 동안 bundle을 보호하고 위조된 암호화된 업데이트를 훨씬 더 어렵게 만듭니다. 공격자는 업데이트를 암호화하기 위해 사용자 개인 키가 필요하기 때문입니다.
  • 업데이트가 배포된 후에도 역공학이 가능합니다.
  • __CAPGO_KEEP_0__는 업데이트를 암호화하여 보호합니다. 업데이트가 저장되고 전송되는 동안 bundle을 보호하고 위조된 암호화된 업데이트를 훨씬 더 어렵게 만듭니다. 공격자는 업데이트를 암호화하기 위해 사용자 개인 키가 필요하기 때문입니다.
  • __CAPGO_KEEP_0__는 업데이트가 배포된 후에도 역공학이 가능합니다.

V1 암호화 (deprecated)

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

migration guide

암호화 설정

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: 공개 키 (애플리케이션에서 사용)

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

Step 2: Capacitor을 Capacitor 설정에 저장하세요 (필수)

Capacitor Step 2: Capacitor을 Capacitor 설정에 저장하세요 (필수)

__CAPGO_KEEP_0__ __CAPGO_KEEP_0__의 __CAPGO_KEEP_0__을 __CAPGO_KEEP_0__ 설정에 저장해야 __CAPGO_KEEP_0__ 모바일 앱이 __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 Step 3: Capacitor을 Capacitor 플랫폼과同步하세요 (필수)

Capacitor이 Capacitor을 Capacitor 설정에 저장한 후

__CAPGO_KEEP_0__ __CAPGO_KEEP_0__ 플랫폼을 __CAPGO_KEEP_0__하여 __CAPGO_KEEP_0__ 설정을 __CAPGO_KEEP_0__ 레이어로 __CAPGO_KEEP_0__하세요: __CAPGO_KEEP_0__ Capacitor

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

암호화된 패키지

암호화된 패키지

1. 업로드 중 암호화

__CAPGO_KEEP_0__

__CAPGO_KEEP_1__

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

__CAPGO_KEEP_4__

__CAPGO_KEEP_5__

__CAPGO_KEEP_6__

  1. __CAPGO_KEEP_7__

    __CAPGO_KEEP_8__
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. __CAPGO_KEEP_10__

    __CAPGO_KEEP_11__
    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 환경 변수 (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을 사용하여 번들 업로드 중 암호화 (보안 유지)
  • 공개 키: 장치에서 해독을 위해 앱 구성에 저장 (공개할 필요 없음)

개인 키 compromis 이후 회전

개인 키 compromis 이후 회전 제목

개인 키가 의심되거나 확인된 경우 키 pair를 회전하세요. 정기적인 캘린더 회전은 필요하지 않습니다. 이건 원본 키 마이그레이션이며 OTA-Only 변경이 아닙니다.

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

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

    터미널 창
    npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
  3. Sync and ship a native release: Run npx cap sync, 그리고 새로운 네이티브 앱 버전이 포함된 대체 공개 키를 가진 새로운 네이티브 버전을 배포하세요.

  4. Target the new native version: 오래된 네이티브 바이너리를 실행 중인 기기는 대체 키로 암호화된 업데이트를 받을 수 없습니다. 대체 키 버전을 제한하고 나머지 플릿이 스토어 또는 MDM를 통해 업데이트하는 동안 "Version Targeting"을 사용하세요. Switch your upload secret: 네이티브 릴리스가 라이브가 되자마자 CI에서 개인 키를 대체하고 대체 공개 키를 포함하는 네이티브 버전만 업로드하는 업로드 비밀을 교체하세요.

  5. 주의 주의

보안 최적화 방법

보안 최적화 방법 섹션
  • 개인 키를 절대 공유하지 마세요 환경 또는 팀 구성원 사이에
  • 다른 키를 사용하세요 다른 환경 (개발, 스테이징, 운영)
  • 침해가 의심되거나 확인된 경우 키 Pair를 교체하세요; 정기적인 캘린더 회전은 필요하지 않습니다키를 안전하게 저장하세요
  • 적절한 키 관리 시스템을 사용하여 __CAPGO_KEEP_0__

보안 패키지

보안 패키지 섹션
  • 항상 암호 해독 후 다운로드 패턴이나 실패를 감시하는
  • 다운로드 패턴이나 실패를 감시하는 HTTPS를
  • 모바일 앱을 위한 모든 패키지 URL에 HTTPS를 사용하세요 (필수) 암호 해독 실패를 위한
  • 적절한 오류 처리를 구현하세요 접근 제어

접근 제어 섹션

__CAPGO_KEEP_0__
  • 접근 제한 인가된 사람만이 암호화 키에 접근할 수 있도록 하세요
  • 역할 기반 접근 제한 키 관리 작업에 사용하세요
  • 키 사용 및 접근을 정기적으로 감사하세요 적절한 백업 및 복구 절차를 구현하세요
  • 암호화 문제 해결 “암호화 문제 해결”이라는 제목의 섹션

“Troubleshooting Encryption”

“Common Issues”

복호화 실패:

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

키 관련 오류:

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

성능 문제:

  • 대형 번들을 암호화/복호화하는데 더 오랜 시간이 걸릴 수 있습니다
  • 번들의 크기를 줄이기 위해 Delta(매니페스트) 업데이트를 고려하세요
  • __CAPGO_KEEP_0__의 장치 성능 모니터링 중 암호 해독 중입니다.

Debug Commands

Debug Commands 섹션

__CAPGO_KEEP_0__의 암호화 상태를 확인하십시오.

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

__CAPGO_KEEP_0__의 암호화/해독 워크플로우를 테스트하십시오.

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

  • __CAPGO_KEEP_0__: FIPS 140-2 인증 암호화 알고리즘
  • __CAPGO_KEEP_0__: 키 보호를 위한 강력한 비대칭 암호화
  • __CAPGO_KEEP_0__: 신뢰성과 진위성을 제공하는 암호화
  • __CAPGO_KEEP_0__: 암호학적으로 안전한 난수 생성

이것은 Capgo를 다음 규정에 준수하는 애플리케이션에 적합하게 만듭니다:

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

성능 고려 사항

성능 고려 사항

암호화 오버헤드

암호화 오버헤드
  • 배포 크기: 암호화된 배포는 약 1-2%의 오버헤드만큼 더 큽니다.
  • 처리 시간: 암호화/해독이 최소한의 지연을 추가합니다.
  • 메모리 사용: 암호화/해독 연산 중 임시로 증가합니다.

최적화 팁

Optimization Tips
  • Delta 업데이트를 사용하여 암호화된 데이터 전송량을 최소화하세요.
  • 이미지 형식을 WebP로 변환하여 번들 크기를 최적화하세요.
  • JavaScript 및 CSS 파일을 미리 압축하여 번들 크기를 최소화하세요.
  • 사용하지 않는 의존성을 제거하고 code
  • 기존/느린 장치의 성능을 모니터링하세요.

다음 단계

다음 단계
  • Learn about Custom Storage __CAPGO_KEEP_0__를 사용하여 자체 인프라에서 암호화를 사용하세요.
  • Explore 채널 환경 간 암호화된 패키지를 관리하는 방법
  • 설정 CI/CD 통합 암호화된 배포를 자동화하는 방법

__CAPGO_KEEP_1__이 __CAPGO_KEEP_2__을 사용하고 있다면 __CAPGO_KEEP_1__ __CAPGO_KEEP_1__을 사용하여 보안 및 규정 준수 계획을 세우고, __CAPGO_KEEP_2__과 연결하세요 __CAPGO_KEEP_2__ __CAPGO_KEEP_2__의 구현 세부 사항 Capgo 보안 스캐너 Capgo 보안 스캐너의 제품 워크플로우에 대해 Capgo 보안 Capgo 보안의 제품 워크플로우에 대해 Capgo 신뢰 센터 Capgo 신뢰 센터의 제품 워크플로우에 대해, 및 조직 보안 조직 보안의 구현 세부 사항에 대해.