본문으로 건너뛰기
Unveilydocs

플랫폼 보안 관행

Unveily 플랫폼이 고객 앱을 보호하는 방법

한눈에 보기

Unveily SDK와 플랫폼은 보안을 기본값으로 설계합니다. 고객이 별도 구성하지 않아도 아래 보호 조치가 자동으로 적용됩니다.


SDK 보안 (Android & iOS)

라이선스 키 암호화 저장

앱 최초 실행 시 라이선스 키를 하드웨어 보안 저장소로 자동 마이그레이션합니다.

플랫폼저장 방식
AndroidAndroidKeyStore 기반 EncryptedSharedPreferences (AES256-GCM)
iOSiOS Keychain (kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly)

이후 실행부터는 파일 시스템을 거치지 않고 암호화 저장소에서 직접 로드합니다.

SSL 인증서 피닝 + XOR 난독화

SDK 내부 API 통신에 SHA-256 기반 인증서 핀이 적용됩니다. 컴파일된 바이너리에 핀 값이 평문으로 노출되지 않도록 필드별로 다른 XOR 키를 사용해 인코딩합니다.

  • 호스트명, 기본 핀, 백업 핀이 각각 다른 키로 인코딩
  • 바이너리 분석으로 단일 필드가 노출되어도 전체 노출 방지

루트 / 탈옥 감지

루트(Android) 또는 탈옥(iOS) 상태가 감지된 기기에서는 SDK 실행이 차단됩니다.

assets/config.json
{
  "security": {
    "rootDetectionEnabled": true
  }
}

스크린샷 및 백그라운드 보호

  • 스크린샷 차단: 앱 화면 캡처 및 화면 녹화 차단
  • 백그라운드 블러: 앱 전환 시 미리보기에 콘텐츠가 노출되지 않도록 블러 처리
assets/config.json
{
  "security": {
    "screenshotProtectionEnabled": true,
    "backgroundProtectionEnabled": true
  }
}

금융, 의료, 결제 앱에는 이 옵션을 활성화하는 것을 권장합니다.

앱 서명 검증

라이선스는 패키지명과 서명 인증서 해시를 조합해 검증됩니다. 재패키징된 앱에서는 SDK가 동작하지 않습니다.


API 보안

항목방식
인증JWT (단기 만료)
시크릿 관리GCP Secret Manager — 소스 코드 및 환경 변수에 평문 저장 금지
통신모든 엔드포인트 HTTPS 강제
속도 제한인증 엔드포인트 Rate limiting 적용

인프라

항목구성
서버GCP Cloud Run — 퍼시스턴트 서버 없음
데이터베이스Cloud SQL, 프라이빗 IP (공인 인터넷 접근 불가)
파일 다운로드GCS 프라이빗 버킷, Signed URL (15분 만료)
컨테이너Artifact Registry (공개 Docker Hub 미사용)

의존성 취약점 관리

GitHub Dependabot을 통해 모든 저장소의 의존성을 매주 자동 스캔합니다.

저장소스캔 대상
ActuallyWorks.PlatformNuGet (API), npm (Web, BFF)
HybridApp Android SDKGradle
HybridApp iOS SDKSwift Package Manager
  • Critical CVE는 공개 후 72시간 이내 패치
  • 매주 월요일 09:00 KST 자동 스캔

취약점 신고

보안 취약점을 발견하신 경우 공개 이슈가 아닌 아래 주소로 비공개 신고 부탁드립니다.

[email protected]

신고 접수 후 48시간 내 확인, 7 영업일 이내 해결 일정을 안내드립니다. 선의의 보안 연구자에 대해 법적 조치를 취하지 않습니다.

다음 여정

On this page