SHARE THE PERSPECTIVE
오프라인 테스트는 특정한 결과를 제시해야 합니다. 해시나 암호화 시연은 제품 전체에 대한 완전한 감사가 아닙니다.

오프라인 검증은 특정 계산이 서버의 실시간 응답 없이 수행됨을 보여 줄 수 있습니다. 이는 가치 있지만 메신저 전체의 안전성을 증명한다는 뜻은 아닙니다. 유용한 결과를 얻으려면 어떤 파일, 버전, 입력과 출력을 테스트했는지 정확히 기록해야 합니다.

파일 해시, 릴리스 서명, 테스트 벡터, 재현 가능한 빌드와 보안 감사는 서로 다른 질문에 답합니다. 어느 하나를 ‘완벽한 보안 인증 도장’으로 삼기보다는 증거를 함께 보는 것이 더 유용합니다.

각 증거는 무엇을 보여 주나요?

증거 제한적이고 올바른 결론 저절로 증명되지 않는 것
파일의 SHA-256 파일이 기준 다이제스트와 일치함 기준 출처가 정직하거나 코드가 완벽함
APK 서명 패키지에 대한 서명이 유효하며 서명자의 키와 연결됨 따로 확인하지 않는 한 해당 키가 원하는 게시자의 것임
테스트 벡터 다루는 사례에서 예상 출력을 얻음 제품의 모든 상태와 오류를 다루었음
재현 가능한 빌드 특정 소스와 환경이 동일한 출력을 생성함 소스 코드에 취약점이 없음
감사 특정 범위와 버전을 검토했음 이후 변경과 범위 밖 구성 요소까지 승인되었음

재현 가능한 빌드의 정의는 특정 입력과 환경을 전제로 합니다. Android 공식 apksigner 도구는 APK 서명을 확인하는 도구이며, 이는 해시 계산과 다릅니다.

현재 Livara Proof Lab의 범위는 무엇인가요?

Proof Lab 페이지는 로컬 APK 해시 도구와 P-256, HKDF, AES-GCM 연산 시연을 소개합니다. 여기에는 한 비트를 변조해 진위 검증 실패를 관찰하는 예도 포함됩니다. 페이지 자체에서 완전한 LVR1/LGS1 조합은 이 실험대의 범위 밖이라고 명시합니다.

따라서 올바른 결과는 ‘이 파일은 기준 다이제스트와 일치했다’ 또는 ‘이 암호학 시연은 테스트한 변조를 거부했다’라고 적습니다. ‘전체 하이브리드 프로토콜과 설치된 버전 전체가 독립 감사를 받았다’라고 쓰지 마세요. 이 글은 해당 도구를 새롭게 실행해 테스트한 결과를 보고하지 않습니다.

반복 가능한 오프라인 테스트를 어떻게 준비하나요?

  1. 목표를 정하세요. 파일의 동일성을 확인하려는 것인가요, 암호 연산의 동작을 확인하려는 것인가요?
  2. 버전과 출처를 기록하세요. APK 이름, 버전 번호, 다운로드 주소와 해당 릴리스의 다이제스트가 서로 대응해야 합니다.
  3. 신뢰할 수 있는 출처에서 도구와 입력을 준비하세요. 오프라인으로 전환한다고 처음부터 악성인 코드가 믿을 만해지지는 않습니다.
  4. 민감하지 않은 테스트 데이터를 사용하세요. 암호학 시연에는 사적인 메시지나 실제 비밀이 필요하지 않습니다.
  5. 연결을 끊고 테스트를 반복하세요. 이 단계는 실시간 응답에 대한 의존성을 측정할 뿐, 이미 받은 코드를 신뢰할 수 있는지 측정하지 않습니다.
  6. 결과와 오류를 기록하세요. 버전 차이, 로딩 실패와 불일치 출력을 ‘통과’로 바꾸지 마세요.

해시가 다르면 설치를 멈추고 먼저 버전, 파일과 기준 출처를 확인하세요. 다른 릴리스를 선택해 차이가 생겼을 수도 있습니다. 확인 없이 확실한 악성코드라고 판단하거나 반드시 중요하지 않은 차이라고 여기지 마세요.

테스트 벡터와 공식 인증은 어떻게 다른가요?

테스트 벡터는 어떤 동작의 입력과 예상 출력을 지정합니다. Wycheproof 같은 모음은 알려진 공격과 관련된 사례로 라이브러리를 테스트하는 데 유용합니다. 통과하더라도 알려지지 않은 사례까지 다룬다는 뜻은 아닙니다.

NIST CAVP에는 알고리즘 검증 절차가 있습니다. 브라우저에서 공개 벡터 몇 개를 실행하는 것은 검증 인증서를 받는 것과 같지 않습니다. 표준 알고리즘을 사용한다고 제품이 자동으로 인증되는 것도 아닙니다.

메신저 비교를 위해 무엇을 요구해야 하나요?

Livara, Signal, WhatsApp, Session, Element에 동일한 질문을 하세요. 정확한 버전은 무엇인가요? 공식 파일은 무엇인가요? 서명자의 키나 기준 다이제스트는 어떻게 검증하나요? 어떤 테스트를 실행할 수 있나요? 감사 보고서에는 어떤 코드와 구성 요소가 포함되었나요?

이 글은 해당 제품들을 테스트해 매긴 순위가 아닙니다. 단일 페이지 도구가 없다는 사실은 보안 증거가 없다는 증명이 아니며, 그런 도구가 있다고 제품 전체의 우월성이 증명되는 것도 아닙니다. 같은 버전의 공식 문서와 반복 가능한 보고서를 비교하세요.

유용한 결과 기록표

짧은 보고서에 목표, 버전, 파일 출처, hash, 도구와 그 버전, 네트워크 상태, 민감하지 않은 입력, 예상 출력, 관찰한 출력과 한계를 기록하세요. 다른 테스트를 하지 않았다면 ‘테스트하지 않음’으로 표시하세요.

연락 상대의 키를 확인하는 것도 별도의 검증입니다. 로컬 도구는 한 연산을 보여 줄 수 있지만, 대신 대화 상대의 신원이나 그 휴대전화의 안전한 상태를 확인해 주지는 않습니다. 결과와 함께 Livara의 보안 경계를 읽고, 도구의 만점을 모든 경계에 대한 보장으로 여기지 마세요.

Proof Lab에서 테스트 실행
CONTINUE THE THREADAndroid & device security ↗
YOU’VE REACHED THE ENDBack to the reading room ↗