Skip to content

암호화

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

개요

개요

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

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

암호화의 작동 방식

암호화 방법

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

이것이 중요한 이유:

  • Code 서명 업데이트가 변조되지 않았는지와 올바른 출처인지 확인하는 것만 확인합니다.
  • Capgo 암호화 업데이트가 저장되고 전달되는 동안 패키지를 보호하고 암호화된 업데이트를 위조하는 것이 훨씬 어려워집니다. 공격자가 개인 키를 필요로 합니다.
  • 앱이 배포된 후에도 역공학이 가능합니다. 업데이트를 암호화하고 로드하기 위해 공개 키가 필요하기 때문입니다.

암호화 방법

암호화 방법 섹션

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

암호화 V2 (현재 표준)

암호화 V2 (현재 표준) 섹션
  • RSA-4096을 사용하여 보안을 강화합니다.
  • AES-256-GCM을 사용한 인증 암호화
  • 인증을 위한 무결성 검증을 제공합니다.
  • 성능과 보안을 향상시킵니다.

암호화 V1 (deprecated)

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

암호화 설정

암호화 설정

1단계: 암호화 키 생성

Step 1: Encryption Key Generation

첫 번째로, Capgo과 CLI을 사용하여 암호화 키를 생성하세요.

먼저 __CAPGO_KEEP_0__ __CAPGO_KEEP_1__를 사용하여 암호화 키를 생성하세요.
# 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에 공개 키 저장하기 (필수)

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

당신 must 모바일 앱이 패키지를 해독할 수 있도록 하려면 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"

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

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

__CAPGO_KEEP_0__ 저장 후 공개 키를 저장한 후 must Capacitor 플랫폼을同步하여 업데이트된 설정을 네이티브 레이어로 복사해야합니다.

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

__CAPGO_KEEP_0__

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__

__CAPGO_KEEP_3__

__CAPGO_KEEP_4__

__CAPGO_KEEP_5__
# 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_7__

__CAPGO_KEEP_8__

__CAPGO_KEEP_9__

  1. __CAPGO_KEEP_10__

    __CAPGO_KEEP_5__
    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에 의해 업로드 시 번들 암호화에 사용 (보안 유지)
  • 공개 키: 장치에서 복호화에 사용되는 앱 구성에서 저장 (커밋할 수 있음)

개인 키가 compromis 된 경우 회전

개인 키 compromis 이후 회전

대체 키 pair를 생성하세요:

  1. 터미널 창

    클립보드에 복사
    npx @capgo/cli@latest key create
  2. Capacitor 설정에 대체 공개 키를 저장하세요:

    터미널 창
    npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
  3. 자연스럽게 네이티브 릴리즈를 동기화하고 배포하세요: 실행 npx cap sync, 새로운 네이티브 앱 버전을 배포하여 대체 공개 키를 포함합니다.

  4. 그 다음, 대체 공개 키가 포함된 새로운 네이티브 앱 버전을 배포하세요. 새로운 네이티브 버전을 대상하세요: 이전 네이티브 바이너리가 실행 중인 장치에서는 대체 키로 암호화된 업데이트를 해독할 수 없습니다. 대체 키로 암호화된 배포를 제한하려면 버전 대상

  5. 컨텍스트: Capgo 솔루션 마케팅 페이지. 역할: 섹션 또는 페이지 제목. 표시되는 곳: 페이지 solutions/version-targeting.astro. 메시지 키 `solutions_version_targeting_title` (Solutions Version Targeting Title). | Capgo 솔루션 마케팅 페이지. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 표시되는 곳: 사이트 헤더, 컴포넌트 SolutionsMegaMenu.astro, 페이지 solutions/version-targeting.astro. 메시지 키 `solutions_version_targeting` (Solutions Version Targeting). 대체 키로 암호화된 배포를 새로운 네이티브 버전으로 제한하고 나머지 플릿이 스토어 또는 MDM를 통해 업데이트되도록 하세요.

보안 최적화 방법

보안 최적화 방법

키 보안

키 보안
  • 개인 키를 절대 공유하지 마십시오. 환경이나 팀원들 사이에
  • 다른 환경(개발, 스테이징, 운영)에 대해 키를 교체하십시오.
  • 위험 발생 시 키를 교체하십시오.키 pair를 사전 예비 또는 확인된 해킹 시 키 pair를 교체하십시오; 정기적인 캘린더 회전은 필요하지 않습니다.
  • 키를 안전하게 저장하십시오 적절한 키 관리 시스템을 사용하십시오

Bundle 보안

Bundle 보안
  • 반드시 해독 후 Bundle의完整성을 확인하십시오 비정상적인 다운로드 패턴 또는 실패를 모니터링하십시오
  • Monitor Implement
  • Bundle 보안 Bundle 보안
  • Bundle 보안 decryption 오류 처리
  • 접근 제한 암호화 키에 대한 접근을 인증된 직원만 허용
  • 역할 기반 접근 제어 키 관리 작업에 대한 역할 기반 접근
  • 감사 정기적으로 암호화 키 사용 및 접근을 감사
  • 구현 정기적인 백업 및 복구 절차

해독 실패:

  • 개인 키가 암호화에 사용된 공개 키와 일치하는지 확인하세요
  • 암호화에 사용된 키가 올바른지 확인하세요 ivSessionKey 정확합니다.
  • 키 관련 오류:

개인 키 형식이 올바른지 확인하세요 (PEM 형식)

  • 저장/전송 중 키가 손상되지 않았는지 확인하세요
  • 앱 구성에서 키가 올바른 권한을 가지고 있는지 확인하세요
  • Section titled “Troubleshooting Encryption”

성능 문제:

  • 대형 패키지는 암호화/복호화가 더 오래 걸릴 수 있습니다
  • Delta 업데이트를 사용하여 패키지 크기를 줄이십시오
  • 복호화 중 장치 성능을 모니터링하십시오

Debug 명령어

Debug 명령어 섹션

암호화 상태를 확인하십시오:

터미널 창
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)
  • 건강 보험 포트 ability 및 책임성 법 (HIPAA)
  • 서비스 조직 제 2 차 제어 (SOC 2)
  • 정보 보안 관리 (ISO 27001)

성능 고려 사항

성능 고려 사항

암호화 오버헤드

암호화 오버헤드
  • 패키지 크기: 암호화 된 패키지는 약 1-2%의 오버헤드가 발생합니다.
  • 처리 시간: 암호화/해독은 최소한의 지연 시간을 추가합니다.
  • 메모리 사용: 암호화/복호화 작업 중 임시적으로 증가하는 메모리 사용

최적화 팁

최적화 팁
  • 델타 업데이트를 사용하여 암호화된 데이터 전송을 최소화하세요
  • 이미지 형식을 WebP 형식으로 변환하여 번들 크기를 최적화하세요
  • JavaScript 및 CSS 파일 크기를 최소화하기 위해 미리 압축하세요
  • 사용하지 않는 의존성을 제거하고 code
  • 기기 성능을 모니터링하여 오래된/느린 기기에서

다음 단계

다음 단계

암호화에서 계속

암호화 사용 중인 경우

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