투케이2K

879. (Android/Build) 안드로이드 v1 , v2 apk 파일 빌드 서명 체계 설명 정리 본문

Android

879. (Android/Build) 안드로이드 v1 , v2 apk 파일 빌드 서명 체계 설명 정리

투케이2K 2024. 9. 19. 19:06
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

 

-----------------------------------------------------------------------------------------
[v1 서명 설명]
-----------------------------------------------------------------------------------------

1. v1 인증 체계는 jar 로 서명한 apk 인증 체계 입니다


2. v1 에는 META-INF/MANIFEST.MF에 나열된 항목이 정확하게 포함되어야 하며 모든 항목은 동일한 서명자 집합으로 서명되어야 합니다


3. 안드로이드 7.0 (Nougat) 미만 기기에 설치 할 수 있도록 APK 파일 서명 시 v1 방식을 사용할 수 있습니다

  >> 기존 플랫폼 (안드로이드 6.0) 은 v2 서명을 무시하고 v1 서명만 인증합니다


4. v1 방식 무결성 인증 순서 : 

  >> 각 서명자는 META-INF/<signer>.SF 및 META-INF/<signer>.(RSA|DSA|EC) JAR 항목으로 표시됩니다.

  >> <signer>.(RSA|DSA|EC)는 서명이 <signer>.SF 파일을 통해 인증된 SignedData 구조가 있는 PKCS #7 CMS ContentInfo입니다.

  >> <signer>.SF 파일에는 META-INF/MANIFEST.MF의 전체 파일 다이제스트와 각 META-INF/MANIFEST.MF 섹션의 다이제스트가 포함됩니다. MANIFEST.MF의 전체 파일 다이제스트가 인증됩니다. 인증되지 않으면 각 MANIFEST.MF 섹션의 다이제스트가 대신 인증됩니다.

  >> META-INF/MANIFEST.MF에는 각 무결성 보호 JAR 항목에 대해 상응하는 이름이 지정된 섹션이 포함됩니다. 섹션에는 항목의 압축 해제된 콘텐츠의 다이제스트가 포함됩니다. 이 모든 다이제스트가 인증됩니다.

  >> APK에 MANIFEST.MF에서 나열되지 않고 JAR 서명의 일부가 아닌 JAR 항목이 포함되어 있다면 APK 인증은 실패합니다.

-----------------------------------------------------------------------------------------





-----------------------------------------------------------------------------------------
[v2 서명 설명]
-----------------------------------------------------------------------------------------

1. v2 인증 체계는 APK의 보호된 부분에 발생한 모든 변경사항을 감지하여 인증 속도를 높이고 무결성 보장을 강화하는 전체 파일 서명 체계입니다


2. v2 를 사용하여 서명하면 APK 서명 블록이 ZIP 중앙 디렉터리 섹션 바로 앞의 APK 파일에 삽입됩니다


3. v2 방식으로 서명 된 APK 서명 블록 내에서는 v2 서명 및 서명자 신원 정보가 APK 서명 체계 v2 블록에 저장됩니다


4. APK 서명 체계 v2 는 Android 7.0 (Nougat)에 도입되었습니다

  >> 기존 기기 (안드로이드 6.0) 에 설치할 수 있도록 v2 체계로 서명되기 전에 JAR 서명 (v1) 을 사용하여 APK를 서명해야 합니다

  >> 기존 플랫폼 (안드로이드 6.0) 은 v2 서명을 무시하고 v1 서명만 인증합니다

-----------------------------------------------------------------------------------------





-----------------------------------------------------------------------------------------
[참고 사이트]
-----------------------------------------------------------------------------------------

https://source.android.com/docs/security/features/apksigning/v2?hl=ko

-----------------------------------------------------------------------------------------

 

반응형
Comments