APK 서명 확인: 앱이 안전한지 확인하는 방법

A magnifying glass over a phone showing a certificate and fingerprint, illustrating verifying APK signatures

Android에서 앱을 사이드로딩하면 자유와 유연성이 제공되지만 변조된 애플리케이션라는 큰 위험이 따릅니다. 악의적인 행위자는 인기 있는 앱을 비공식 사이트에 재배포하기 전에 스파이웨어나 애드웨어를 포함하도록 수정하는 경우가 많습니다. 방금 다운로드한 APK가 개발자가 Google Play에 업로드한 것과 정확히 동일한지 어떻게 확신할 수 있나요?

대답은 APK 디지털 서명로 귀결됩니다. 아래에서는 앱 서명이 실제로 어떻게 작동하는지 알아보고, 신뢰하기로 결정하기 전에 온라인 APK 검증기를 사용하여 APK의 해시와 인증서를 확인하는 방법을 살펴보겠습니다.

60초 버전:

Android는 게시자 키를 사용하여 모든 APK에 서명합니다. 전화기는 서명이 기존 설치와 일치하지 않는 "업데이트"를 거부합니다. 이것이 OS의 주요 가장 방지 방어 수단입니다. 사이드로드된 APK를 확인하려면 SHA-256 해시와 서명 인증서 지문을 계산한 다음 두 값을 신뢰하는 값(기존 Play 스토어 설치, 개발자가 게시한 지문 또는 알려진 양호한 이전 사본)과 비교합니다. 일치는 파일이 바이트와 동일하고 동일한 게시자가 서명했음을 의미합니다. 불일치는 설치하지 마세요를 의미합니다.

APK 서명이란 무엇입니까?

디지털 서명은 암호화된 신원 증명입니다. 개발자가 앱을 완성하면 개인 키(키 저장소)를 사용하여 앱에 "서명"합니다. 그런 다음 Android는 APK에 포함된 해당 공개 키를 사용하여 다음을 보장합니다.

  1. 무결성: 파일이 서명된 이후 변경되지 않았습니다.
  2. 진위성: 개발자는 그들이 말하는 사람입니다.
  3. 업데이트: 동일한 키로 서명된 APK만 휴대폰의 기존 앱을 업데이트할 수 있습니다.

서명의 발전: V1, V2, V3 및 V4

Google은 수년에 걸쳐 APK 보안을 지속적으로 개선해 왔습니다.

APK 서명을 온라인으로 확인하는 방법

APK 검증 도구는 해시만 계산하는 것이 아닙니다. 인증서 체인에 대한 전체 암호화 감사를 수행합니다. 사용 방법은 다음과 같습니다.

확인 단계:

  1. APK 검증자 페이지로 이동합니다.
  2. APK 또는 XAPK 파일을 선택하세요.
  3. 우리 도구는 META-INF/ 디렉터리를 구문 분석하고 인증서 데이터(.RSA, .DSA 또는 .EC를 추출합니다).
  4. 분석이 완료될 때까지 기다립니다(몇 초 밖에 걸리지 않습니다).
  5. 인증서 정보: 개발자 이름, 조직, 출신 국가를 검토하세요.
  6. 해시 확인: 당사 사이트에 표시된 SHA-256을 게시자가 자체 공식 사이트, 프로젝트 릴리스 페이지 또는 서명 매니페스트에 게시한 값과 비교하세요.

보안 경고

검증자가 Facebook이나 WhatsApp과 같은 주요 앱에 대해 "디버그 인증서" 또는 알 수 없는 "자체 서명" 엔터티를 표시하는 경우 설치하지 마세요입니다. 거의 확실히 손상되었습니다.

체크섬 이해(MD5, SHA-1, SHA-256)

체크섬은 전체 파일을 나타내는 고정 길이 문자열입니다. 앱 아이콘에서 단일 픽셀을 변경하면 SHA-256 해시가 완전히 변경됩니다.

해시 유형 보안 수준 메모
MD5 레거시 충돌에 취약합니다. 보안을 위한 것이 아닙니다.
SHA-1 보통 여전히 빠른 조회에 널리 사용됩니다.
SHA-256 우수 앱 검증을 위한 최신 표준입니다.

서명 인증서가 실제로 알려주는 것

검증자가 인증서를 반환할 때 사이드로딩 안전에 중요한 부분은 X.509 메타데이터의 다채로운 비트가 아니라 소수의 필드입니다. 실제적인 측면에서:

해시와 서명: 대부분의 튜토리얼에서 건너뛰는 차이점

사람들은 종종 "해시"와 "서명"을 혼동합니다. 그것들은 매우 다른 목적으로 사용되며 안전한 검증을 위해서는 다음 두 가지가 모두 필요합니다.

사이드로드된 APK의 경우 가장 강력한 보증은 두 가지를 결합합니다. 인증서 지문은 게시자의 알려진 지문 그리고와 일치하고 파일의 SHA-256은 게시자가 해당 빌드에 대해 게시한 값과 일치합니다.

신뢰할 수 있는 참조 지문을 얻을 수 있는 곳

검증에서 가장 어려운 부분은 비교할 올바른 값을 아는 것입니다. 대략적인 신뢰도 순서에 따른 몇 가지 신뢰할 수 있는 접근 방식은 다음과 같습니다.

  1. 게시자의 자체 웹사이트 또는 릴리스 페이지입니다. 많은 오픈 소스 프로젝트와 보안에 민감한 공급업체는 다운로드와 함께 서명 인증서의 SHA-256 지문을 게시합니다. 이것이 바로 표준입니다.
  2. 기존 Play 스토어 설치. 앱이 Play 관리 기기에 이미 설치된 경우 해당 인증서 지문은 정의에 따라 게시자의 지문입니다. 사이드로드된 APK의 지문을 그것과 비교하세요. Apk 분석기(Android Studio) 또는 apksigner verify --print-certs와 같은 도구는 설치된 APK에서 직접 읽습니다.
  3. 이 앱을 설치한 첫 번째 APK입니다. 한동안 앱을 사용했는데 "서명 불일치" 메시지가 표시되지 않은 경우 이전 사본을 참조로 사용할 수 있습니다. 동일한 게시자의 후속 업데이트는 동일한 키를 사용해야 합니다(또는 v3를 통해 순환하며 이 경우 체인은 계속 확인합니다).
  4. 보관처리된 공개 스냅샷입니다. Internet Archive 및 유사한 서비스는 때때로 선언된 해시와 함께 이전 APK 릴리스 페이지를 보존합니다. 원래 게시자 페이지가 사라진 아주 오래된 빌드에 유용합니다.

일반적인 확인 실수

귀하의 앱은 안전한가요?

추측하지 마십시오. 몇 초 만에 공식 개발자 인증서와 비교하여 사이드로드된 APK를 확인하세요.

APK 인증 시작

자주 묻는 질문(FAQ)

Android에서 수정된 APK 설치를 차단하는 이유는 무엇인가요?

새 APK의 서명이 이미 설치된 것과 일치하지 않기 때문입니다. 이를 통해 해커가 실제 뱅킹 앱을 가짜 앱으로 "덮어쓰는" 것을 방지할 수 있습니다.

APK를 수정한 후 다시 서명할 수 있나요?

예, 하지만 다른 키를 사용하게 됩니다. 앱은 "깨끗한" 휴대폰에 계속 설치되지만 더 이상 원래 개발자로부터 업데이트를 받을 수 없습니다.

인증서 고정이란 무엇입니까?

앱이 서버와 통신하기 전에 특정 인증서를 명시적으로 확인하여 올바르게 설치되더라도 변조된 앱을 쓸모 없게 만드는 고급 보안 기능입니다.

모든 사이드로드의 서명 확인 부분 만들기

서명은 최신 Android 보안에서 많은 무거운 작업을 수행하고 있습니다. APK 검증자를 통해 파일을 실행하는 데 몇 초를 더 투자하는 것은 변조된 앱이 설치되기 전에 기기에서 차단하는 저렴한 방법입니다.

Mst Shaefale가 설계하고 문서화함 수석 개발자 및 Android 패키지 설계자 • Android 12~15에서 검증됨

Mst Shaefale은 xapktoapk.com에서 클라이언트측 XAPK/APKS 합병, 바이너리 매니페스트 파서 및 APK v1+v2 서명 도구를 유지 관리합니다. 오래된 명령이나 OS 변경 사항을 발견하셨나요? 편집 메모를 보내세요.