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

사진 속 '촬영 시각'은 믿어도 될까? C2PA로 시간을 해킹한다는 것의 의미

사진 속 '촬영 시각'은 믿어도 될까? C2PA로 시간을 해킹한다는 것의 의미
SOURCE IMAGE · HACKER NEWS
사진 속 '촬영 시각'은 믿어도 될까? C2PA로 시간을 해킹한다는 것의 의미

AI가 만든 이미지가 진짜 사진과 구분이 안 되는 시대가 됐어요. 그러면서 '이 사진을 언제, 어떤 기기로, 누가 찍었는지' 증명하는 기술이 갑자기 중요해졌죠. 그 대표 주자가 C2PA(Coalition for Content Provenance and Authenticity)예요. Adobe와 Microsoft, Google은 물론이고 라이카·소니·니콘 같은 카메라 제조사도 참여하는 표준이에요. 이제는 스마트폰 기본 카메라에까지 들어오고 있고요.

보안 연구자 David Buchanan이 'C2PA로 시간을 해킹하는 법'이라는 글을 썼어요. 파일 포맷의 허점을 파고드는 연구로 잘 알려진 사람인데요, C2PA가 다루는 여러 정보 중에서도 하필 '시간'을 정면으로 건드렸어요. 구체적인 기법은 원문에서 직접 보시길 권할게요. 여기서는 이 이야기를 제대로 이해하는 데 필요한 배경을 차근차근 풀어볼게요. C2PA가 시간을 어떻게 다루는지, 그리고 왜 시간이 유독 까다로운 문제인지요.

C2PA는 어떻게 동작할까

C2PA를 쉽게 말하면 '디지털 파일에 붙이는 위조 방지 봉인'이에요. 사진 파일 안에 매니페스트(manifest)라는 메타데이터 묶음이 들어가요. 그 안에는 어설션(assertion)이라고 부르는 주장들이 담겨요. '이 카메라로 찍었다', '포토샵에서 잘라냈다', '이미지 데이터의 해시값은 이거다' 같은 것들이죠. 이 주장들을 클레임(claim)으로 묶고, 서명자의 개인키로 전자서명을 해요. 서명에는 X.509 인증서 체인이 붙어요. 그래서 어느 회사의 어떤 기기나 소프트웨어가 서명했는지까지 확인할 수 있어요.

검증하는 쪽은 세 가지를 차례로 확인해요. 이미지 해시가 맞는지, 서명이 유효한지, 인증서가 신뢰 목록에 있는지요. 하나라도 어긋나면 '변조됨'이나 '신뢰할 수 없음'으로 표시돼요. 여기까지는 꽤 튼튼해 보이죠?

그런데 '시간'은 누가 보증할까

문제는 여기서부터예요. 전자서명은 '이 내용이 이 키로 서명됐다'는 건 보장해요. 하지만 '언제 서명됐는지'는 보장하지 않거든요. 기기가 지금이 2020년 1월 1일이라고 적어 넣어도 그건 서명자의 주장일 뿐이에요. 기기 시계를 바꾸는 건 어렵지 않으니까요.

그래서 C2PA는 RFC 3161 타임스탬프를 함께 써요. 이게 뭐냐면, 신뢰할 수 있는 제3자 기관(TSA, Time Stamping Authority)에서 '이 서명값을 지금 확인했음'이라는 도장을 받아오는 거예요. 우체국 소인이랑 비슷해요. 우체국은 편지 내용은 몰라도 그날 접수됐다는 건 보증해주잖아요.

하지만 이 도장에도 분명한 한계가 있어요. TSA 타임스탬프가 증명하는 건 '이 데이터가 늦어도 이 시점엔 존재했다'는 상한선뿐이에요. 데이터가 언제 처음 만들어졌는지, 즉 하한선은 알려주지 않아요. 하한선을 증명하려면 그 시점 전에는 알 수 없었던 정보를 데이터에 섞어 넣어야 해요. 그날 신문 1면이나 최신 블록체인 블록의 해시 같은 거요. 영화에서 인질에게 오늘 자 신문을 들려서 사진을 찍잖아요? 딱 그 원리예요.

게다가 시간은 인증서가 유효한지 판단할 때도 쓰여요. 인증서에는 유효기간이 있고, 키가 유출되면 폐기되잖아요. 그래서 서명 당시에 이 인증서가 유효했는지 판단하려면 서명 시점을 알아야 해요. 시간이 흔들리면 '변조됐나'만 흔들리는 게 아니에요. '이 서명을 믿어도 되나'라는 판단 자체가 흔들리는 거예요.

업계 맥락: 서명, 워터마크, 그리고 시간

C2PA는 EU AI법의 AI 생성물 표시 의무나 각국의 딥페이크 규제와 맞물려 빠르게 퍼지고 있어요. 보완 기술로는 Google SynthID 같은 비가시성 워터마크가 있어요. C2PA 메타데이터는 스크린샷 한 장이면 사라져요. 반면 워터마크는 픽셀 자체에 숨어 있어서 훨씬 오래 살아남죠. 대신 워터마크에는 누가, 언제, 어떻게 편집했는지 같은 자세한 이력을 담기 어려워요. 그래서 업계는 둘을 함께 쓰는 방향으로 가고 있어요.

시간은 다른 서명 생태계에서도 핵심 문제예요. 오픈소스 빌드 결과물을 서명하는 Sigstore는 유효기간이 10분인 단기 인증서를 써요. 그래서 서명이 정말 그 10분 안에 일어났는지를 투명성 로그와 타임스탬프로 증명하는 게 신뢰의 핵심이에요. 시간을 어떻게 고정하느냐가 곧 보안 모델인 셈이죠.

한국 개발자에게 주는 시사점

한국도 2026년 1월부터 AI 기본법이 시행되면서 생성형 AI 결과물 표시가 현실적인 과제가 됐어요. 콘텐츠 플랫폼이나 언론사 CMS, 커뮤니티 서비스를 만든다면 C2PA 검증을 붙일 일이 생길 수 있어요. 이때 UI에서 '서명이 유효하다'와 '내용이 사실이다'를 같은 뜻으로 보여주면 절대 안 돼요. 특히 시각 정보는 TSA 타임스탬프가 있는지에 따라 신뢰 수준을 다르게 표시하는 게 맞아요.

직접 만져보고 싶다면 오픈소스 Rust SDK인 c2pa-rs와 CLI 도구 c2patool로 시작해보세요. 사진 파일을 하나 넣으면 매니페스트를 JSON으로 펼쳐서 보여주거든요. 꼭 C2PA가 아니어도 괜찮아요. 감사 로그나 전자계약, 결제 기록처럼 시간이 증거가 되는 시스템을 다룬다면, 그 시간을 누가 보증하는지 한 번쯤 되짚어볼 가치가 있어요.

마무리

전자서명은 '누가'를 증명해요. 하지만 '언제'는 완전히 별개의 문제예요.

여러분의 서비스에도 시간을 신뢰의 근거로 쓰는 곳이 있나요? 그 시간은 그냥 서버 시계인가요, 아니면 누군가가 보증해주는 시간인가요?


🔗 출처: Hacker News

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

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

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

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