TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 25 READS

C2PA의 '제외' 기능이 서명된 사진의 시간을 조작하는 법

콘텐츠의 출처와 진위를 암호학적으로 증명하겠다는 C2PA(Coalition for Content Provenance and Authenticity)는 생성형 AI 시대의 가짜 이미지 문제에 대한 업계의 주요 대응책으로 꼽힌다. 카메라 앱이 촬영 순간에 "이 사진은 특정 시각, 특정 좌표에서 찍혔다"는 주장을 서명으로 봉인하고, 이후 누구나 검증 도구로 확인할 수 있게 하자는 구상이다. 보안 연구자 데이비드 뷰캐넌(David Buchanan, retr0id)은 이 체계의 한 조항을 파고들어, 로또 추첨 시각보다 몇 시간 앞서 당첨 번호가 적힌 복권 사진을 '유효한' 서명과 신뢰된 타임스탬프와 함께 만들어 보였다. 요점은 암호 알고리즘을 깬 것이 아니라, 규격 자체가 열어둔 허점을 이용했다는 데 있다.

두 개의 서명, 그리고 시간의 증인

전형적인 C2PA 매니페스트에는 두 종류의 서명이 담긴다. 첫째는 '주장(claim)' 서명으로, 촬영 정보 같은 내용을 기기가 스스로 서명하는 부분이다. 뷰캐넌은 앞선 글에서 구글 픽셀 카메라 같은 대표 구현에서도 이 주장 서명은 사실상 무의미하며, 원하는 내용을 얼마든지 서명해 넣을 수 있음을 보인 바 있다. 둘째는 더 흥미로운 타임스탬프 서명이다. 기기의 시계를 믿지 않는 대신, RFC 3161 프로토콜로 외부의 신뢰된 타임스탬프 기관(TSA)에 해시를 보내면 TSA가 "이 해시를 이 시각에 보았다"고 서명해 돌려준다. TSA가 정직하게 동작하는 한, 이는 해당 데이터가 그 시각 이전에 존재했음을 독립적인 증인처럼 입증한다. 참고로 픽셀 10에서 구글은 기기가 스스로 시간을 증명하는 '온디바이스 신뢰 타임스탬프'를 택했는데, 뷰캐넌은 이에 회의적이라고 밝혔다.

공격은 TSA가 아니라 규격의 '자살골'

이번 시연에서 흥미로운 점은 TSA를 공격하지 않는다는 것이다. 타임스탬프 기관은 광고된 대로 완벽히 동작한다고 전제한다. 그럼에도 시간을 '해킹'할 수 있었던 이유는 뷰캐넌이 즐겨 쓰는 표현대로 '규격이 깔아놓은 지뢰(spec footgun)' 때문이다. C2PA는 서명 계산에서 제외할 임의의 바이트 범위, 이른바 '제외(exclusion)'를 허용한다. 즉 파일의 특정 구간을 서명 대상에서 빼버릴 수 있다. 이는 규격에 명시된 공공연한 사실이며, 보안 연구자 닐 크라워츠(Neal Krawertz) 박사도 2025년 6월 공개한 C2PA 결함 목록에서 이 점을 짚었다. 그럼에도 아직 아무도 손을 대지 않았다.

새로운 각도는, 악의적 서명자가 이 제외 범위를 '우연히'가 아니라 '의도적으로' 크게 잡을 수 있다는 점이다. 파일 전체를 제외하면 결국 빈 문자열에 대한 서명이 만들어진다. 뷰캐넌이 c2patool로 덤프한 PoC 파일에서는 제외 길이가 파일 전체 크기(3,995,383바이트)와 같고, 해시 값은 빈 문자열의 해시였다. 주장 서명은 이 빈 해시를 덮고, 타임스탬프 서명은 그 주장 서명을 덮는다. 사실상 아무것도 서명하지 않은 셈이지만, 그가 찾은 모든 C2PA 검증 도구는 이를 이상 징후로 표시하지 못했다. 그래서 그는 실제로 복권 사진을 찍어 유효한 서명과 타임스탬프를 붙인 뒤, 당첨 번호가 발표된 후에 이미지를 포토샵으로 수정했고, 어떤 서명도 무효화되지 않았다.

왜 단순히 막을 수 없는가

실무자 입장에서 더 곱씹어야 할 대목은 방어가 간단치 않다는 점이다. 파일 전체가 제외된 극단적인 경우를 잡아 무효 처리하는 것은 쉽다. 그러나 작은 일부만 제외했다면 이야기가 달라진다. 그 구간이 무해한 부분인지, 아니면 수정 시 이미지 전체 모습을 바꿀 수 있는 민감한 부분인지 자동으로 가려내기 어렵기 때문이다. MD5 해시 충돌 PoC처럼, 작은 영역의 변조만으로도 겉모습이 완전히 달라지는 사례가 이미 존재한다.

제외 기능을 아예 규격에서 빼버리면 되지 않느냐는 제안도 그리 단순하지 않다. 일부 파일 포맷은 구조상 제외를 요구하기 때문이다. 예컨대 PNG는 각 청크에 CRC32 체크섬이 붙는데, 서명을 파일에 끼워 넣은 뒤에는 이 값을 다시 맞춰야 한다. 체크섬을 서명 범위에서 제외하지 않으면 서명과 체크섬이 서로를 참조하는 순환 의존이 생긴다. 이 때문에 뷰캐넌은 기능 삭제 대신, 지원하는 파일 포맷별로 '제외가 허용되는 구간'을 명확하고 구체적으로 규정하고, 검증기가 그 제약을 강제하도록 하는 것이 올바른 해법이라고 본다.

이 사건이 던지는 실무적 교훈은 분명하다. C2PA의 '유효한 서명'과 '신뢰된 타임스탬프'라는 라벨은 암호 연산이 성립했다는 뜻일 뿐, 그 서명이 실제로 이미지 픽셀 전체를 덮고 있다는 보장이 아니다. 출처 메타데이터를 신뢰의 근거로 삼으려는 뉴스룸, 플랫폼, 법적 증거 처리 담당자라면 서명의 존재 여부가 아니라 서명이 '무엇을' 덮고 있는지, 제외 범위가 선언되어 있는지까지 들여다봐야 한다. 검증 도구가 제외 영역을 사용자에게 가시적으로 경고하기 전까지, C2PA 배지는 생각만큼 강한 보증이 아니다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://www.da.vidbuchanan.co.uk/blog/hacking-time.html
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...