해시, 서명, 재현 가능한 빌드, 감사는 서로 다른 질문에 답합니다.
오픈 소스는 코드를 살펴볼 수 있게 하지만, 그것만으로 설치된 앱이 그 코드와 같거나 취약점이 전혀 없다는 사실을 입증하지는 못합니다. 메신저를 평가할 때는 소스 코드, 빌드 과정, 파일 서명, 프로토콜 시험, 감사 보고서라는 여러 종류의 증거를 구분하는 것이 좋습니다.
각 증거는 정확히 무엇을 보여 줄까요?
| 증거 | 주된 도움 | 그것만으로 입증하지 못하는 것 |
|---|---|---|
| 읽을 수 있는 소스 코드 | 설계와 구현을 검토할 수 있음 | 설치 파일과의 일치 또는 모든 버그의 부재 |
| 재현 가능한 빌드 | 지정된 소스와 환경에서 나온 결과물을 비교할 수 있음 | 코드 자체의 안전성 |
| APK 서명 | 서명과 파일이 신뢰하는 서명 키에 연결되어 있는지 확인 | 앱 동작의 무해성 |
| SHA-256 해시 | 신뢰하는 다이제스트와 비교해 바이트 차이를 감지 | 공격자가 파일과 다이제스트를 모두 바꾼 경우의 진위 |
| 테스트 벡터 | 지정된 입력과 출력에 대한 특정 동작 확인 | 모든 상태와 실행 경로의 검증 |
| 독립 감사 | 특정 범위와 버전을 검토한 결과 | 미래의 모든 버전에 대한 영구 보장 |
재현 가능한 빌드와 해시가 같은 파일을 다운로드하는 것은 다릅니다
Reproducible Builds의 정의에 따르면 재현 가능성은 지정된 소스, 환경, 명령으로 동일한 결과물을 빌드하는 것과 관련됩니다. 다운로드한 파일을 개발자가 공개한 해시와 비교하기만 했다면 무결성을 확인한 것입니다. 아직 직접 코드에서 파일을 빌드한 것은 아닙니다.
재현 가능하다는 주장을 평가하려면 코드 버전, 의존성, 빌드 명령, 다른 사람이 결과를 재현한 보고서를 요청하세요. ‘소스가 GitHub에 있다’는 말은 이 증거들을 대신하지 못합니다.
APK 검증을 어떻게 올바르게 해석할까요?
- 공식 경로에서 특정 버전의 파일을 받으세요.
- 진위를 신뢰할 수 있는 출처에서 다이제스트와 서명자 정보를 얻으세요.
- 파일의 해시를 계산하여 같은 버전의 정보와 비교하세요.
- 기술적인 검토에서는 서명도 검증하세요. 공식 도구 apksigner가 이 작업을 지원합니다.
- 차이가 있으면 설치를 멈추고 원인을 밝히세요. 오류를 우회하려고 파일에 다시 서명하지 마세요.
Android SDK Build Tools가 있는 전문가를 위한 검증 명령 예시:
apksigner verify --verbose --print-certs app.apk
app.apk라는 이름은 예시일 뿐입니다. 명령 실행이 성공해도 게시자의 유효한 키를 알아야 한다는 필요가 사라지는 것은 아닙니다.
Proof Lab은 어떤 역할을 할까요?
Livara Proof Lab은 특정 검증을 위한 도구를 제공합니다. 각 실험의 범위를 읽어 보세요. 파일 해시, 키 합의 예시, 변조된 데이터의 거부는 서로 다른 질문입니다. 암호 기술 시연이 성공했다고 해서 설치된 앱 전체, 서버, 업데이트, 계정 관리가 감사된 것은 아닙니다.
Livara 위협 모델도 공격자가 APK 파일과 표시된 다이제스트를 모두 바꾸면 해시 일치만으로 진위를 입증할 수 없다고 명시합니다. 이는 특정 메신저의 특성이 아니라 해시 검증의 일반적인 한계입니다.
감사 보고서를 읽을 때 무엇을 물어야 할까요?
- 어느 조직이나 누가 검토했으며 공개 보고서는 어디에 있나요?
- 어떤 버전과 커밋을 검토했나요?
- 어떤 부분이 검토 범위 밖에 있었나요?
- 중요한 발견 사항은 어떻게 수정하고 다시 시험했나요?
- 설치된 버전이 검토한 것과 같거나 해당 수정 사항을 포함하나요?
이 질문에 답하지 않은 채 ‘승인됨’ 같은 말만 보고 단정하지 마세요. 표준 알고리즘을 쓴다는 것도 제품 전체가 표준에 따른 인증을 받았다는 뜻은 아닙니다.
메신저 선택에 대한 결론
오픈 소스와 검증 가능성은 경쟁 관계가 아니라 상호 보완적인 증거입니다. 주장이 정확하고 추적 가능하며 적용 범위가 명확한 제품을 우선하세요. 그런 다음 그룹, 웹 버전, 백업, 연결된 기기처럼 자신이 사용하는 형태에도 같은 검증을 적용하세요. 한 번의 시험 성공으로 절대적인 안전성을 결론 내리지 마세요.



