C2PA BMFF 해시 제외 항목: MP4 영상 무결성 검토법
MP4 사본과 검증 출력을 먼저 보존합니다
검증 도구로 열기 전에 실제로 받은 MP4를 저장합니다. 출처 페이지, 다운로드 시각, 파일명, 크기, 파일 식별자를 기록합니다. 원본과 여러 변환 사본이 함께 있다면 각각 다른 식별자를 붙입니다. C2PA 결과는 검증한 사본의 byte에만 적용되므로 한 사본의 결과를 다른 사본에 옮기지 않습니다. 이 기록 방식은 본문의 운영 제안이며 C2PA가 요구하는 보고 양식은 아닙니다.
현재 c2pa.hash.bmff.v3 assertion을 처리하는 validator를 사용하고 도구 이름, 버전, 전체 출력을 보관합니다. C2PA 2.2는 이전 c2pa.hash.bmff assertion을 validator가 없는 것처럼 무시하도록 규정합니다. Badge 한 개만 저장하면 어떤 버전을 처리했고 어떤 box를 제외했으며 어느 비교가 실패했는지 알 수 없습니다.
질문을 좁게 적습니다. 이 validator가 표시된 제외 규칙에 따라 해당 MP4의 대상 byte를 계산했고 assertion의 값과 일치했는지 확인합니다. 게시자 신원, 설명문 정확성, 영상 속 사건의 발생 여부는 별도 증거로 확인합니다.
제외 항목을 일치 조건으로 읽습니다
BMFF hash는 exclusions 배열의 항목과 일치하는 box 또는 box 일부를 빼고 파일 byte를 계산합니다. Box 전체가 제외되면 header와 내용이 모두 hash 입력에서 빠집니다. 전체가 포함되면 header도 입력에 들어갑니다. subset만 제외할 때 상대 offset은 내용 시작점이 아니라 header를 포함한 box 시작점부터 셉니다. 범위는 offset 오름차순이어야 하고 서로 겹칠 수 없습니다.
도구가 표시한 xpath를 그대로 기록합니다. 규격은 BMFF 4cc와 선택적 양의 occurrence index로 만든 full path만 허용하며 // 같은 descendant 문법을 허용하지 않습니다. 한 항목이 box를 하나도 찾지 못하거나 여러 개를 찾을 수 있으므로 항상 유일한 box를 가리킨다고 바꾸어 쓰지 않습니다.
length는 header를 포함한 전체 box 길이와 같아야 합니다. version은 FullBox에 적용됩니다. 3 byte flags는 정확한 일치 또는 exact가 false일 때 지정 bit를 포함하는지를 검사합니다. data 조건은 상대 offset의 byte를 비교합니다. 익숙한 MP4 구조를 근거로 추정하지 말고 출력에 나온 조건만 옮깁니다.
Offset과 Manifest box를 확인합니다
전체 제외되지 않은 root box는 v3 hash 입력에 8 byte big-endian 절대 파일 offset과 제외 부분을 뺀 box data를 제공합니다. 규격에는 명시된 Merkle tree 경우의 예외가 있습니다. 절대 offset도 결합되므로 C2PA box 삽입은 다른 MP4 box의 저장 값과 위치를 바꿀 수 있습니다. Hash에는 삽입 전 값이 아니라 Manifest를 넣은 뒤의 값이 사용되어야 합니다.
C2PA Manifest가 파일에 내장되면 이를 담은 box가 제외 목록에 있어야 합니다. 규격은 레이아웃을 유지하기 위한 free box도 설명합니다. Manifest 생성 뒤 non-root 제외 box를 제거하면 같은 크기의 free box로 대체하고, 나중에 제외 box를 넣으려고 확보한 공간도 제외 규칙에 포함합니다. 이 절차는 위치 변경으로 다른 대상이 무효화되는 일을 막지만 제외된 byte의 정확성을 인증하지 않습니다.
파일 식별자, assertion 버전, 알고리즘, hash 상태, 각 제외 경로와 조건, subset offset과 length, 표시된 free 처리 방식을 표로 남깁니다. 도구가 보여 주지 않은 필드는 미보고로 둡니다.
일치와 불일치의 의미를 제한합니다
성공한 비교는 이 사본에서 기록된 제외 규칙을 적용한 BMFF byte가 assertion 값과 일치했다는 관찰을 뒷받침합니다. 제외 box의 정확성, 서명 자격 증명의 신뢰, 모든 Manifest assertion의 진실성, 영상 속 사건의 사실 여부는 증명하지 않습니다.
불일치나 구조 거부는 이 사본이 정해진 무결성 검사를 통과하지 못했다는 뜻입니다. 변경한 사람, 변경 시각, 영향을 받은 frame, 사건의 연출 여부를 특정할 수 없습니다. 정확한 상태 코드를 저장하고 다른 사본은 독립적으로 검증한 뒤 비교합니다.
별도의 확률적 신호가 필요하면 저장한 사본을 딥페이크 영상 탐지기로 분석할 수 있습니다. 결과는 C2PA 기록과 분리하고 실제 분석한 파일에 연결합니다. 자동 분석에는 진짜 영상을 의심스럽다고 표시하는 오탐과 합성·변경 영상을 놓치는 미탐이 있습니다. 높은 위험 신호는 추가 검토의 근거이며 낮은 신호는 MP4를 인증하거나 불일치를 복구하지 않습니다.
재현 가능한 기록을 남깁니다
다음 검토자가 같은 파일과 validator 버전으로 동일한 제외 항목을 찾아 비교를 반복할 수 있어야 합니다. 파일 식별자, C2PA 전체 출력, 사용한 탐지 결과, 원본 게시 페이지 확인, 사람의 결정을 별도 증거로 저장합니다. 모르는 필드는 추측으로 채우지 않습니다.
현실의 주장은 원본 게시물, 영상을 제시한 계정이나 기관, 주장된 시각과 장소, 사건에 관한 독립 증거로 확인합니다. BMFF hash는 byte 수준의 무결성 질문에 답하며 그보다 넓은 질문을 대신하지 않습니다.
출처
- C2PA, "C2PA Technical Specification: BMFF-Based Hash": https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_bmff_based_hash