SHARE THE PERSPECTIVE

APK 파일을 설치하기 전에 SHA-256 해시를 비교하면, 신뢰할 수 있는 해시를 확보한 버전과 현재 파일이 같은지 확인할 수 있습니다. 유용한 검사이지만, 이것만으로 앱에 취약점이나 악성코드가 없다고 증명할 수는 없습니다.

안전한 다운로드에는 세 가지 별도 질문이 있습니다. 파일은 어디에서 왔는가, 전달되는 동안 변경되었는가, 내부 코드에 대해서는 어떤 근거가 있는가? 해시값 하나만으로 이 세 질문 모두에 답할 수는 없습니다.

파일 해시는 무엇을 하는가?

SHA-256은 파일 내용으로부터 고정된 길이의 값을 만듭니다. 파일이 바뀌면 해시도 바뀔 것으로 예상됩니다. 따라서 두 해시를 비교하는 것은 파일의 바이트가 같은지 확인하는 실용적인 방법입니다.

이 결과는 비교 기준이 신뢰할 수 있는 만큼만 신뢰할 수 있습니다. 공격자가 APK와 그 옆에 게시된 해시를 모두 바꿀 수 있다면, 두 값이 일치해도 문제를 드러내지 못합니다. Livara 위협 모델도 파일 확인의 이 한계를 설명합니다.

설치 전 확인 방법

  1. 대상 버전을 확인하세요. 제품명, 버전 번호, 패키지 종류를 릴리스 페이지와 비교하세요. 서로 다른 두 버전의 파일은 일반적으로 해시가 같지 않습니다.

  2. 신뢰할 수 있는 출처에서 예상 해시를 받으세요. 파일과 해시를 함께 보내는 낯선 메시지만 믿지 마세요. 공식 사이트 주소를 별도로 확인하세요.

  3. 다운로드한 파일의 해시를 계산하세요. Livara Proof Lab은 APK 해시 비교 도구를 제공합니다. 이를 앱 전체 보안 검사와 혼동하지 마세요.

  4. 전체 값을 비교하세요. 앞이나 뒤의 몇 글자만으로는 충분하지 않습니다. 버전명을 잘못 보거나 파일을 잘못 선택하지 않았는지도 확인하세요.

  5. 다르면 설치를 중단하세요. 불일치는 버전 차이, 불완전한 다운로드, 파일 변경 때문에 생길 수 있으며, 그 자체로 악성코드의 증거는 아닙니다. 원인이 밝혀질 때까지 설치하지 말고 공식 경로에서 다시 확인하세요.

이 안내는 “안전한 버전”을 나타내는 예시 해시를 제공하지 않습니다. 올바른 값은 특정 릴리스 파일에 따라 달라지기 때문입니다.

해시, 서명, 재현 가능한 빌드는 어떻게 다른가?

확인 방법 뒷받침할 수 있는 결과 그것만으로 증명하지 못하는 것
SHA-256 해시 파일이 비교 기준과 동일함 코드가 안전하거나 배포자를 신뢰할 수 있음
APK 서명 특정 서명 키로 서명되었고 서명 검증이 유효함 키 소유자가 절대로 악성 코드를 배포하지 않음
재현 가능한 빌드 지정된 소스, 환경, 명령으로 같은 바이트를 만들 수 있음 소스에 보안 결함이 없음
코드 보안 검토 검토한 범위와 버전에서 문제가 발견되거나 평가됨 알려지지 않은 결함이 하나도 남지 않음

Android 공식 apksigner 도구는 APK 서명과 인증서 정보를 확인하는 데 쓰입니다. 새로 설치하는 것과 기존 앱을 업데이트하는 것도 같지 않습니다. Android는 업데이트할 때 서명자의 호환성을 확인합니다. 알 수 없는 배포자의 유효한 서명만으로는 신뢰하기에 충분하지 않습니다.

재현 가능한 빌드의 정의도 지정된 소스와 빌드 환경을 요구합니다. 다운로드 파일의 해시 비교는 이 과정을 대신하지 않습니다.

Proof Lab의 범위는 어디까지인가?

Proof Lab 페이지에는 파일 해시 외에도 브라우저 안에서 실행되는 암호 연산 시연이 있습니다. 암호 연산이 성공하는 시연은 설치된 앱 전체에 대한 감사도, 메신저 프로토콜 전체의 실행도 아닙니다. 도구 자체도 신뢰할 수 있는 환경에서 실행해야 합니다. 침해된 기기나 페이지는 오해를 유발하는 결과를 표시할 수 있습니다.

설치 후에도 업데이트, 앱 권한, 기기 보안은 중요합니다. 오늘 파일을 확인했다고 미래 버전까지 자동으로 검증되는 것은 아닙니다.

해시 비교는 신뢰 사슬의 특정한 검사입니다. 배포 출처, 서명자, 결과의 한계도 함께 이해할 때 그 가치가 더 커집니다.

Proof Lab에서 APK 오프라인 확인
CONTINUE THE THREADAndroid & device security ↗
YOU’VE REACHED THE ENDBack to the reading room ↗