AI 이미지 메타데이터: 증거는 실제로 어디에 적히나
메타데이터는 한 곳이 아니라 여러 층이고, 어느 층인지 구분할 수 있어야 하나의 발견에 얼마만큼 무게를 둘지 정할 수 있습니다. 이미지나 영상 한 개가 서명된 C2PA manifest, 설명적인 EXIF·XMP 필드, 생성 파라미터를 담은 PNG 텍스트 청크, 그리고 MP4/MOV 컨테이너 항목을 동시에 가질 수 있습니다. 무엇을 기록하는지, 얼마나 쉽게 수정되는지, 공유 과정에서 얼마나 빨리 사라지는지가 층마다 다릅니다. 이 글은 파서가 실제로 읽는 순서대로 각 층을 살펴봅니다.
핵심: 서명된 출처를 먼저, 설명적 필드는 그다음
무엇보다 C2PA manifest를 먼저 읽으세요. 무결성을 암호학적으로 확인할 수 있는 유일한 층이기 때문입니다. 다음으로 EXIF와 XMP를 봅니다. 플랫폼 이름과 AI 라벨이 자주 나타나지만 누구나 고쳐 쓸 수 있습니다. PNG 텍스트 청크는 Stable Diffusion 생태계가 프롬프트와 workflow를 저장하는 곳이고, 영상에서는 컨테이너 메타데이터가 같은 역할을 합니다. 서명 아래의 모든 층은 증명이 아니라 단서입니다.
각 층에 해당하는 실제 샘플
| Adobe Firefly JPEG | 서명 층: digitalSourceType = trainedAlgorithmicMedia를 선언한 유효한 C2PA manifest입니다. 인증서가 신뢰 목록 밖이라 trusted가 아닌 valid로 보고됩니다. |
|---|---|
| ComfyUI / Stable Diffusion XL PNG | PNG 텍스트 층: prompt와 workflow 청크가 노드 그래프와 생성 파라미터를 담고 있으며 모두 서명되지 않았습니다. |
| Google Veo MP4 | 컨테이너 층: 자격 증명과 도구 필드가 이미지 마커가 아니라 ISO base media의 box 구조에 저장되어 있습니다. |
확인할 신호
| EXIF | 카메라 시대의 표준입니다. Software, Artist, UserComment에 도구 이름이나 AIGC JSON 라벨이 남기도 하고, 카메라 필드가 통째로 없다는 사실 자체도 약한 단서가 됩니다. |
|---|---|
| XMP | Adobe의 XML 메타데이터입니다. 원본 내보내기가 남아 있다면 CreatorTool, Credit, DigitalSourceType이 생성 도구를 가리킬 가능성이 가장 큽니다. |
| C2PA | 서명 층으로, JUMBF로 직렬화되어 포맷별로 삽입됩니다. JPEG는 APP11 세그먼트, PNG는 전용 청크, MP4는 box입니다. |
| PNG 텍스트 청크 | tEXt, iTXt, zTXt는 임의의 키·값 문자열을 받아들입니다. 프롬프트, seed, sampler, 전체 workflow JSON이 EXIF가 아니라 여기에 들어가는 이유입니다. |
| MP4 / MOV 컨테이너 | ftyp brand, box tree, udta/meta/ilst, encoder·tool·software 항목에 더해 AIGC 문자열과 비트스트림의 SEI marker입니다. |
생성 파라미터가 EXIF 밖에 있는 이유
EXIF는 카메라를 위해 설계되었습니다. 노출, 조리개, ISO, 렌즈 같은 고정된 태그의 모음이죠. 여러 줄짜리 프롬프트나 직렬화된 노드 그래프는 그 틀에 들어가지 않습니다. 그래서 Stable Diffusion 생태계는 임의의 키·값 문자열을 허용하는 PNG 텍스트 청크에 기록하게 되었습니다. 이 분야에서 가장 흔한 오해가 여기 있습니다. “ComfyUI EXIF”나 “PNG info”를 찾는 사람이 실제로 찾는 것은 거의 언제나 카메라 태그가 아니라 텍스트 청크입니다. 실무적 결과는 분명합니다. EXIF만 해석하는 도구는 읽을 증거로 가득한 파일에 대해 비어 있다고 보고합니다.
층마다 사라지는 속도가 다릅니다
층별로 취약함이 다르며, 순서를 알아두면 “아무것도 없음”이라는 결과를 제대로 해석할 수 있습니다.
- 메신저: PNG 텍스트 청크가 가장 먼저 사라지고, XMP 대부분 필드와 EXIF의 GPS 데이터도 함께 없어집니다.
- SNS 트랜스코딩: EXIF, C2PA manifest, XMP CreatorTool, 모든 생성 파라미터가 한꺼번에 사라지는 것이 보통입니다.
- 스크린샷과 화면 녹화: 원본은 아무것도 남지 않고 캡처 도구 자체의 메타데이터만 남습니다.
- 다시 내보내기·다른 이름으로 저장: 출처 필드가 버려지고, 새 소프트웨어가 무관한 EXIF를 덮어쓸 수도 있습니다.
파일을 넘기지 않고 메타데이터 읽기
메타데이터 확인은 이미 손에 있는 바이트를 읽기만 하는 작업이라, 기술적으로 업로드가 필요할 이유가 없습니다. AICheck365는 WebAssembly로 컴파일된 Rust로 EXIF, XMP, C2PA, PNG 청크, MP4 box를 로컬에서 해석합니다. 업무 자료와 개인 사진이 내 기기에 머문다는 뜻이고, 동시에 결과가 서버 왕복 없이 표시되며 큰 영상의 한계가 업로드 제한이 아니라 내 하드웨어로 정해진다는 뜻이기도 합니다.
파일을 층별로 읽는 순서
- 원본에서 시작합니다 — 도구가 내보냈거나 플랫폼에서 받은 그 상태의 파일을 씁니다. 이후의 사본은 층을 하나씩 잃습니다.
- 서명 층을 먼저 확인합니다 — C2PA manifest가 있는지 보고 서명 상태, 신뢰 상태, 선언된 digitalSourceType을 가장 먼저 읽습니다.
- EXIF와 XMP를 읽습니다 — Software, CreatorTool, Credit, DigitalSourceType, UserComment에 도구 이름이나 AI 라벨이 있는지 확인합니다. 서명되지 않은 값입니다.
- PNG 텍스트 청크를 엽니다 — PNG라면 tEXt/iTXt/zTXt에서 prompt, seed, sampler, CFG, 모델, workflow JSON을 확인합니다.
- 영상은 컨테이너를 따라갑니다 — ftyp, box tree, udta/meta/ilst의 encoder·tool 필드를 읽고, 이어서 비트스트림의 SEI marker를 찾습니다.
한계
- 서명된 C2PA manifest를 제외한 모든 층은 편집·삭제하거나 무관한 파일로 복사할 수 있습니다.
- 공유, 트랜스코딩, 스크린샷, 재내보내기가 각기 다른 속도로 층을 깎아내며 보통 PNG 텍스트부터 사라집니다.
- 메타데이터가 없다는 사실은 사람이 만들었다는 증거가 아니라, 이 사본에 읽을 것이 남아 있지 않다는 의미일 뿐입니다.
- 도구와 버전에 따라 필드 이름이 달라서 모든 값을 깔끔한 라벨로 정규화할 수는 없습니다.
모든 층을 한 번에 읽으려면 전체 검출기를, 필요한 층을 이미 알고 있다면 해당 도구를 바로 여세요.
FAQ
AI 도구는 메타데이터를 어디에 기록하나요?
도구와 포맷에 따라 다릅니다. 서명된 출처는 C2PA manifest에, 설명적인 도구 이름은 EXIF와 XMP에, 생성 파라미터와 workflow는 PNG 텍스트 청크에, 영상 수준 정보는 MP4나 MOV 컨테이너에 기록됩니다.
EXIF에 AI 정보가 없는 이유는 무엇인가요?
생성 파라미터 대부분이 거기 저장되지 않기 때문입니다. EXIF는 카메라 중심 태그를 담고, 프롬프트·seed·workflow는 PNG 텍스트 청크에 쓰이므로 따로 해석해야 합니다.
AI 메타데이터는 위조할 수 있나요?
유효한 C2PA 서명을 제외한 모든 층은 편집하거나 파일 사이로 복사할 수 있습니다. 서명 상태와 신뢰 상태를 설명적 필드와 분리해 보고하는 이유가 바로 이것입니다.
온라인으로 메타데이터를 읽어도 안전한가요?
여기서는 파일이 기기를 떠나지 않습니다. 해석이 브라우저 안에서 실행되므로 업로드가 없고 아무것도 저장되지 않습니다.
출처와 검증 기록
- AICheck365 공개 샘플 기록 — 샘플 출처, 테스트 날짜, 관찰된 신호와 알려진 한계입니다.
- W3C PNG 제3판 — PNG 청크와 텍스트 청크 형식의 표준 참고 자료입니다.
- C2PA 기술 사양 2.2 — manifest 구조와 포맷별 자격 증명 삽입 방식입니다.
- AICheck365 검사 방법론 — 각 층의 가중치와 보고 방식을 설명합니다.