TECH 으로 돌아가기
TECH HACKER NEWS 오늘 9분 읽기 26 READS

'진짜 카메라로 찍은 사진'을 어떻게 증명할까? 픽셀에 서명을 숨기는 오픈소스 Proof of Capture

'진짜 카메라로 찍은 사진'을 어떻게 증명할까? 픽셀에 서명을 숨기는 오픈소스 Proof of Capture
SOURCE IMAGE · HACKER NEWS
'진짜 카메라로 찍은 사진'을 어떻게 증명할까? 픽셀에 서명을 숨기는 오픈소스 Proof of Capture

AI 이미지 시대의 역발상, '가짜 찾기' 대신 '진짜 증명하기'

요즘 생성형 AI가 만든 이미지는 눈으로 봐서는 거의 구분이 안 되죠. 그래서 업계의 관심이 'AI가 만든 걸 잡아내자'에서 '진짜 카메라로 찍은 걸 증명하자'로 조금씩 옮겨가고 있어요. 탐지기는 생성 모델이 좋아질수록 계속 지는 싸움이지만, 촬영 순간에 카메라가 '이건 내가 찍었어'라는 서명을 남겨두면 나중에 그 서명만 확인하면 되거든요. 애플이 최근 '레퍼런스 이미지'라는 이름으로 아이폰에서 촬영한 원본 사진임을 기기 차원에서 보증하는 기능을 선보이면서 이 흐름이 대중적으로 알려지기 시작했고요.

이번에 소개할 글은 개발자 Mery Benavente가 쓴 'Proof of Capture'라는 프로젝트예요. 한 줄로 요약하면 '애플 레퍼런스 이미지 같은 걸 오픈소스로, 그런데 메타데이터가 아니라 스테가노그래피로 만들어보자'는 시도예요. 왜 굳이 스테가노그래피여야 하는지가 이 글의 핵심인데, 그걸 이해하려면 먼저 기존 방식의 한계부터 봐야 해요.

기존 방식: C2PA와 메타데이터 서명의 한계

지금 업계 표준으로 밀고 있는 건 C2PA(Coalition for Content Provenance and Authenticity)라는 규격이에요. 어도비, 마이크로소프트, 구글, 오픈AI 등이 참여하고 있고, 라이카 M11-P나 소니, 니콘의 일부 카메라, 구글 픽셀 최신 기종은 촬영 시점에 C2PA '콘텐츠 자격 증명'을 사진에 붙여요. 동작 방식은 이래요. 카메라가 사진의 해시(사진 내용을 요약한 고유 지문)를 계산하고, 기기 안에 안전하게 보관된 개인키로 그 해시에 전자서명을 한 다음, 서명과 촬영 정보를 사진 파일의 메타데이터 영역에 저장해요. 나중에 누군가 사진을 받으면 공개키로 서명을 검증해서 '이 픽셀들이 촬영 이후 안 바뀌었구나'를 확인하는 거죠.

문제는 이 서명이 파일의 메타데이터에 얹혀 있다는 거예요. 카카오톡이나 인스타그램에 올리면 서버가 용량을 줄이려고 이미지를 다시 압축하면서 메타데이터를 싹 날려버리거든요. 스크린샷을 찍어도 사라지고요. 그러면 '서명이 없다'가 '가짜다'인지 '중간에 지워졌다'인지 구분이 안 돼요. 현실에서 사진이 유통되는 경로 대부분이 메타데이터를 안 지켜주니까, 정작 검증이 필요한 순간에는 증거가 없는 셈이에요.

그래서 스테가노그래피

스테가노그래피가 뭐냐면, 정보를 '숨기는' 기술이에요. 암호화가 '내용을 못 읽게' 하는 거라면, 스테가노그래피는 '정보가 있다는 사실 자체를 안 보이게' 하는 거예요. 이미지에서는 보통 픽셀 값을 아주 미세하게 조정해서 데이터를 심어요. 예를 들어 어떤 픽셀의 빨간색 값이 200인데 이걸 201로 바꿔도 사람 눈에는 전혀 차이가 없죠. 이런 최하위 비트(LSB)를 수천 개 모으면 거기에 서명 데이터를 통째로 넣을 수 있어요.

이 방식의 장점은 명확해요. 서명이 메타데이터가 아니라 픽셀 자체에 들어 있으니까, 메타데이터를 지워도 살아남아요. 사진 그 자체가 증거가 되는 거죠. 다만 여기서부터 진짜 어려운 문제가 시작돼요. 단순한 LSB 방식은 JPEG로 다시 압축하는 순간 픽셀 값이 흔들려서 데이터가 깨져요. 그래서 실제로 쓰려면 크기 조절이나 재압축을 견디는 '견고한 워터마킹' 기법이 필요해요. 픽셀 하나하나가 아니라 이미지의 주파수 성분(DCT나 웨이블릿 변환 결과)에 데이터를 넣거나, 구글의 SynthID나 메타의 Stable Signature처럼 신경망으로 넣고 신경망으로 꺼내는 방식이 그런 쪽이에요. 문제는 견고할수록 넣을 수 있는 데이터 양은 줄고 화질 영향은 커진다는 거예요. 전자서명 하나가 최소 수백 비트인데, 이걸 재압축을 견디면서 눈에 안 띄게 넣는 건 만만치 않은 공학 문제예요.

또 하나 미묘한 점이 있어요. 데이터를 심으면 픽셀이 바뀌는데, 서명은 픽셀에 대해 한 거잖아요. 그러면 심은 뒤의 이미지는 서명이 안 맞게 돼요. 그래서 이런 시스템은 보통 정확한 해시 대신 '지각 해시(perceptual hash)'를 써요. 사람 눈에 같아 보이는 이미지는 같은 값이 나오도록 설계된 해시라서, 약간의 변형은 허용하면서 내용이 달라지면 잡아낼 수 있어요. 대신 정밀도가 떨어져서 어디까지를 '같은 사진'으로 볼지 경계를 정하는 게 설계의 핵심이 돼요.

오픈소스라서 좋은 점, 그리고 근본적인 한계

애플 방식은 아이폰의 보안 칩(Secure Enclave)에 키가 들어 있어서 하드웨어 수준의 신뢰 근거가 있어요. 대신 애플 기기에서만 되고, 내부가 어떻게 돌아가는지 외부에서 검증할 수 없죠. 오픈소스로 만들면 누구나 코드를 검토하고, 어떤 기기에서도 쓰고, 검증 로직을 자기 서비스에 직접 붙일 수 있어요. 하지만 일반 앱으로 만들면 '그 앱이 조작되지 않았다'는 걸 보증할 수 없다는 문제가 남아요. 루팅된 폰에서 가짜 이미지를 카메라 입력인 척 넣어버리면 그럴듯한 서명이 붙거든요. 이걸 막으려면 결국 안드로이드의 Play Integrity나 애플의 App Attest 같은 플랫폼 인증에 기대야 하고, 그러면 '완전한 오픈'과는 조금 멀어져요.

그리고 어떤 방식이든 못 막는 게 있어요. 모니터에 AI 이미지를 띄우고 그걸 진짜 카메라로 찍는, 이른바 '아날로그 홀'이에요. 이러면 촬영 자체는 진짜니까 완벽한 촬영 증명이 붙어요. 그래서 이런 기술은 '내용이 진실이다'가 아니라 '이 기기가 이 순간 이 픽셀을 찍었다'까지만 증명한다는 걸 잊으면 안 돼요.

한국 개발자에게는

한국은 2026년 1월부터 AI 기본법이 시행되면서 생성형 AI 결과물에 표시 의무가 생겼고, 선거철 딥페이크 규제도 강화됐어요. 그래서 '만든 쪽에 표시를 붙이는' 방향은 법으로 움직이고 있는데, '찍은 쪽을 증명하는' 방향은 아직 실무에 거의 안 들어와 있어요. 중고거래 앱의 실물 사진 확인, 보험 사고 접수, 언론 제보 사진, 부동산 매물 사진처럼 '진짜 찍은 사진인지'가 돈과 직결되는 서비스는 국내에도 많거든요. 이런 곳에서는 C2PA 검증 라이브러리(c2pa-rs, c2patool)를 붙여보거나, 이 프로젝트처럼 워터마크 기반 검증을 실험해 볼 여지가 커요. 전자서명, 지각 해시, 견고한 워터마킹 이 세 가지는 각각 따로도 배워둘 가치가 있는 기술이고요.

한 줄 정리: 메타데이터 서명은 업로드 한 번에 사라지니까 픽셀 자체에 촬영 증명을 새겨 넣자는 오픈소스 시도인데, 재압축 견고성과 아날로그 홀이라는 두 벽이 남아 있어요.

여러분이 만드는 서비스에서 '이 사진이 진짜 촬영본인가'가 중요해지는 순간이 있나요? 있다면 메타데이터 서명 방식과 워터마크 방식 중 어느 쪽에 걸어보시겠어요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://merybenavente.me/blog/proof-of-capture
SHARE
NEXT · CHOOSE

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

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

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