안드로이드 애플리케이션 서명 및 서명 검증


애플리케이션 서명

애플리케이션 서명APK (Android 패키지)가 앱 개발자의 고유 식별을 나타내는 개인 키로 서명되는 과정입니다. 이 과정은 서명 후 앱이 변조되지 않았음을 보장하여 앱이 주장된 개발자에게서 왔음을 확인합니다. 자세한 내용을 알아보겠습니다:

키스토어 생성

  • 개발자들은 키스토어, 즉 암호화 키를 포함하는 바이너리 파일을 생성합니다. 이 키스토어에는 APK 서명에 사용되는 개인 키가 포함되어 있습니다.
  • 키스토어는 암호로 보호되며, 무단 접근을 방지하기 위해 안전하게 보관해야 합니다.

APK 서명하기

  • 빌드 과정 중 또는 후에, 키스토어에 저장된 개인 키를 사용하여 APK가 서명됩니다.
  • 이 과정에서 해시 함수에 의해 디지털 서명이 생성되어 APK 콘텐츠의 고유한 다이제스트를 만듭니다.
  • 다이제스트는 개발자의 개인 키로 암호화되고, 그 결과는 APK 내에 저장됩니다.

인증서 포함

  • APK는 서명에 사용된 개인 키에 해당하는 공개 키가 포함된 인증서를 포함합니다.
  • 이 인증서는 설치 과정에서 디지털 서명을 검증하는 데 사용됩니다.

왜 애플리케이션 서명이 중요한가?

  • 정품 인증 보장: 앱 개발자의 신원을 확인합니다.
  • 무결성 보호: 서명 후 앱이 변조되지 않았음을 보장합니다.
  • 안전한 업데이트 지원: 업데이트가 원 개발자로부터 왔고 동일한 키로 서명되었음을 보장합니다.

서명 검증

서명 검증은 안드로이드 운영 체제가 APK의 디지털 서명을 확인하여 설치 전에 그 무결성과 진위를 보장하는 과정입니다. APK의 서명 및 진위성을 쉽게 검증하는 방법에 관한 Reddit 게시물을 확인하고 나서 이 내용을 읽어보세요:

인증서 추출

APK가 다운로드되고 설치가 시작되면, 기기는 APK에서 공개 키가 포함된 인증서를 추출합니다.

서명 해독

  • 기기는 인증서에서 추출한 공개 키를 사용하여 APK에 내장된 디지털 서명을 해독합니다.
  • 해독은 서명 과정에서 생성된 원래의 해시(다이제스트)를 가져옵니다.

해시 생성

기기는 독립적으로 APK 컨텐츠의 자체 해시를 생성합니다. 이는 서명 과정에서 사용된 것과 동일한 해시 함수를 사용합니다.

해시 비교

  • 기기는 독립적으로 생성된 해시와 디지털 서명에서 해독된 해시를 비교합니다.
  • 일치: 해시가 일치하면 APK가 신뢰할 수 있고 변조되지 않았음을 검증하여 설치를 진행합니다.
  • 불일치: 해시가 일치하지 않으면 APK가 서명된 이후로 수정되었을 수 있음을 나타내며 설치를 차단합니다.

왜 서명 검증이 중요한가?

  • 정품 인증 확인: APK가 기술된 개발자에 의해 서명되었음을 보장합니다.
  • 무결성 유지: 서명된 이후로 APK가 수정되지 않았음을 확인합니다.
  • 사용자 보호: 잠재적으로 악성 APK의 설치를 차단합니다.

앱에 여러 개의 서명이 있는 경우 어떤 서명을 선택해야 하나요?

대부분의 앱은 단일 유효 서명을 가지고 있지만, 더 많을 수도 있습니다. 업데이트 오류를 피하기 위해 이미 기기에 설치된 APK의 서명과 일치해야 합니다.

여러 서명의 이유

  • 키 변경: 안드로이드 9에서는 개발자가 서명 키를 변경할 수 있습니다. 이는 APK Signature Scheme v3 때문입니다.
  • 배포 채널: 서로 다른 소스(예: 플레이 스토어, Github)에서의 앱은 다른 서명을 가질 수 있습니다.
  • 시스템 앱: 시스템 앱의 서명 키는 기기 또는 OS 버전에 따라 다를 수 있습니다.
  • 설명되지 않은 경우: Google's 파일플레이 서비스와 같은 일부 앱은 단순히 여러 서명을 가지고 있습니다.

올바른 서명 식별 방법:

  1. AndroidFreeware에는 Android 권한 검사, 위험 플래그 및 필터 감지, md5, sha1, sha256 체크섬 계산, VirusTotal 안티바이러스 검사 등을 수행하는 고급 APK 검사기가 있습니다.
  2. My APK와 같은 도구를 사용하여 앱 서명을 확인합니다.
  3. 견제와 오류 방법을 사용합니다. 업데이트가 작동할 때까지 다양한 APK를 설치한 후, 올바른 서명을 기억하여 이후 업데이트에 사용합니다.
  4. 앱을 APKMirror에 업로드하거나, ML Manager를 사용하여 기존 서명을 찾습니다.
  5. 일부 데스크톱 도구는 apk 파일의 서명을 찾을 수 있습니다. 이들 중 Google의 apksigner, IBM의 keytool, Warren Bank의 print-apk-signature가 있습니다.

목차