
AI 워터마크의 함락 — Google SynthID는 어떻게 뚫렸는가, 그리고 AI 콘텐츠 인증의 미래
Google이 100억 개 이상의 AI 생성 콘텐츠에 심은 비밀 워터마크 SynthID. 한 개발자가 검은 이미지 200장과 수학만으로 이를 역설계하는 데 성공했습니다. 워터마킹의 역사부터 주파수 영역 원리, 역공학 아키텍처, 그리고 2026년 AI 콘텐츠 인증의 미래까지 깊이 있게 다룹니다.

Google이 100억 개 이상의 AI 생성 콘텐츠에 심은 비밀 워터마크 SynthID. 한 개발자가 검은 이미지 200장과 수학만으로 이를 역설계하는 데 성공했습니다. 워터마킹의 역사부터 주파수 영역 원리, 역공학 아키텍처, 그리고 2026년 AI 콘텐츠 인증의 미래까지 깊이 있게 다룹니다.
2026년 3월, 한 개발자가 GitHub에 올린 저장소 하나가 AI 업계를 발칵 뒤집었습니다.
"Google이 Gemini가 생성한 모든 이미지에 보이지 않는 워터마크를 심었다. 100억 개가 넘는 콘텐츠에. 한 백수 개발자가 검은 이미지 200장과 수학만으로 그걸 풀어버렸다."
이 저장소의 이름은 reverse-SynthID. Google DeepMind가 자랑하던 AI 워터마킹 시스템 SynthID를 역설계(reverse engineering)하여, 워터마크를 탐지하고, 분석하고, 제거하는 방법을 공개한 것입니다.
이 사건은 단순한 해킹 이야기가 아닙니다. AI가 만든 콘텐츠를 어떻게 구분할 것인가, 딥페이크 시대에 진짜와 가짜를 어떻게 가려낼 것인가라는 근본적인 질문을 던집니다. EU AI Act가 2026년 8월 발효를 앞둔 지금, 이 이야기는 그 어느 때보다 중요합니다.

AI 워터마킹을 이해하려면, 먼저 "디지털 워터마크"라는 개념이 어디서 시작됐는지 알아야 합니다.

70년에 걸친 이 역사에서 하나의 패턴이 보입니다: 보호 기술이 등장하면, 그것을 무력화하는 기술이 반드시 뒤따른다는 것. 디지털 워터마크의 역사는 곧 "창과 방패"의 역사입니다.
SynthID의 핵심 아이디어는 단순합니다: AI가 콘텐츠를 생성하는 순간, 인간이 감지할 수 없는 디지털 서명을 콘텐츠 자체에 새긴다.
이것은 사진의 메타데이터(EXIF)에 태그를 붙이는 것과는 완전히 다릅니다. 메타데이터는 스크린샷을 찍거나 파일을 변환하면 사라지지만, SynthID 워터마크는 이미지의 픽셀 자체에 스며들어 있어서 크롭, 리사이즈, JPEG 압축, 필터 적용 후에도 살아남습니다.
비유하자면 이렇습니다:
SynthID는 텍스트, 이미지, 오디오, 비디오 — 네 가지 모달리티 모두에 적용됩니다.
| 모달리티 | 삽입 방식 | 탐지 방식 | 강인성 | |
|---|---|---|---|---|
| 이미지 | 이중 신경망(임베더+디텍터) 공동 학습. 픽셀값을 미세하게 수정하여 주파수 영역에 워터마크 삽입 | 디텍터 네트워크가 워터마크 신호를 읽어 상관계수 계산 | JPEG 압축, 크롭, 리사이즈, 필터, 노이즈에 강인 | |
| 텍스트 | 토너먼트 샘플링: 이전 H개 토큰에서 시드 생성 → 후보 토큰 대결 → g-value 높은 토큰 선택 | 같은 키로 토너먼트 재현, 관측된 토큰이 일관되게 시드 토너먼트와 일치하면 워터마크 | 번역이나 완전한 재작성에는 약화 | |
| 오디오 | 파형을 스펙트로그램으로 변환 후 스펙트럼 성분에 비가청 워터마크 삽입 | 스펙트로그램에서 워터마크 패턴 매칭 | MP3 압축, 노이즈, 속도 변경에 강인 | |
| 비디오 | 각 프레임 픽셀에 개별적으로 이미지 워터마크 삽입 | 프레임별 워터마크 검출 후 종합 판단 | 손실 인코딩, 프레임 추출에 강인 |
SynthID 이미지 워터마킹은 이중 신경망 아키텍처를 사용합니다:
학습 과정에서 두 네트워크는 동시에 훈련됩니다:
핵심은 워터마크가 주파수 영역(frequency domain)에 삽입된다는 것입니다. 이것이 무슨 뜻인지 이해하려면, 주파수 영역이 무엇인지부터 알아야 합니다.
우리가 보는 이미지는 공간 영역(spatial domain)에 있습니다. 각 픽셀이 특정 위치(x, y)에 특정 밝기값을 가지는 형태죠. 그런데 같은 이미지를 완전히 다른 방식으로 표현할 수 있습니다: 바로 주파수 영역(frequency domain)입니다.

쉽게 비유하면:
이미지에서:
이미지를 공간 영역에서 주파수 영역으로 바꾸는 수학적 도구들이 있습니다:
| 변환 | 풀네임 | 핵심 원리 | 주요 용도 | 워터마킹 특성 | |
|---|---|---|---|---|---|
| FFT | Fast Fourier Transform | 이미지를 사인/코사인 파의 합으로 분해 | 전체 주파수 스펙트럼 분석 | 기하학적 변환(회전, 크기조절)에 강인 | |
| DCT | Discrete Cosine Transform | 8x8 블록을 코사인 파의 합으로 표현 | JPEG 압축의 핵심 | 압축에 가장 강인, JPEG 자체가 DCT 기반 | |
| DWT | Discrete Wavelet Transform | 다중 해상도로 분해 (LL, LH, HL, HH 서브밴드) | 의료영상, 보안 문서 | 공간+주파수 정보 동시 보존, 가장 높은 보안성 |
핵심 원리: 워터마크를 숨기기에 가장 좋은 곳은 중간 주파수 대역입니다.
이것이 Cox의 1995년 논문 이후 30년간 변하지 않는 워터마킹의 황금률입니다.
SynthID의 이미지 워터마크는 스펙트럼 확산(spread spectrum) 기법을 사용합니다. 이것은 군사 통신에서 가져온 개념입니다:
그리고 여기서 핵심적인 특성이 하나 있습니다: 위상 인코딩(phase encoding). SynthID는 특정 캐리어 주파수의 진폭(amplitude)뿐 아니라 위상(phase)에도 정보를 심습니다. 이 위상 패턴은 같은 모델에서 생성된 모든 이미지에서 99.5% 이상의 일관성을 보입니다.
바로 이 일관성이 역설계의 실마리가 됩니다.
2026년 3월, 스스로를 "백수 엔지니어"라고 소개한 개발자 aloshdenny는 기발한 아이디어를 떠올립니다:
"순수한 검은색(RGB 0,0,0) 이미지에서는 모든 픽셀값이 0이다. 그런데 Gemini로 검은 이미지를 생성하면... FFT에서 0이 아닌 값들이 나타난다. 그 0이 아닌 값들이 바로 워터마크다."

이것은 눈부시게 단순한 통찰입니다. 순수한 검은 이미지를 FFT로 변환하면, 이론적으로 모든 주파수 성분이 0이어야 합니다. 하지만 AI가 생성한 검은 이미지에는 워터마크 신호만 남아있습니다. 마치 빈 방에서 도청기를 찾는 것처럼요.
역설계에서 발견된 또 하나의 핵심 사실: 워터마크의 캐리어 주파수 위치는 이미지 해상도에 따라 달라집니다.
| 이미지 해상도 | 캐리어 주파수 예시 위치 | 의미 | |
|---|---|---|---|
| 1024 x 1024 | (9, 9) | 기본 해상도의 캐리어 위치 | |
| 1536 x 2816 | (768, 704) | 같은 논리적 캐리어가 완전히 다른 주파수 빈에 위치 |
이것은 중요한 발견입니다. 하나의 해상도에서 추출한 워터마크 패턴으로는 다른 해상도의 이미지에서 워터마크를 제거할 수 없습니다. 해상도별로 별도의 코드북(codebook)이 필요하다는 뜻입니다.
워터마크는 RGB 채널에 균등하게 분포하지 않습니다:
녹색 채널에 워터마크가 가장 강하게 삽입됩니다. 이것은 인간의 시각 시스템이 녹색에 가장 민감하면서도, 그만큼 많은 정보를 담을 수 있기 때문으로 추정됩니다. 워터마크 제거 시에도 녹색 채널에 더 강한 필터링이 필요합니다.
reverse-SynthID 프로젝트는 세 가지 버전의 워터마크 우회(bypass) 방법을 개발했습니다. 각 버전은 이전의 실패에서 교훈을 얻어 발전했습니다.
첫 번째 시도는 가장 직관적이었습니다: JPEG 압축을 걸어서 워터마크를 날려버리자.
JPEG은 원래 고주파 성분을 제거하는 손실 압축입니다. 워터마크도 주파수 영역에 있으니, 강한 압축을 걸면 함께 사라지지 않을까?
결과: 실패. SynthID의 스펙트럼 확산 설계가 JPEG 압축에 충분히 강인했습니다. Quality 50으로 압축해도 워터마크의 상관계수가 0.85로, 탐지 임계값(0.179)을 훨씬 상회했습니다.
두 번째 시도는 여러 가지 공격을 조합했습니다:
결과: 탐지 신뢰도가 1.0에서 ~0.4로 떨어졌지만, 여전히 0.179 임계값을 넘겼습니다. 무차별적인 공격은 워터마크를 약화시키지만, 이미지 품질도 심하게 훼손합니다 (PSNR 34dB). 워터마크를 없애기 전에 이미지가 먼저 못쓰게 됩니다.
세 번째이자 결정적인 접근은 패러다임 자체를 바꿨습니다. 무차별적으로 공격하는 대신, 워터마크만 정밀하게 제거하는 것입니다.
핵심은 SpectralCodebook(스펙트럼 코드북): 다수의 레퍼런스 이미지에서 추출한 워터마크 지문(fingerprint)의 모음입니다.
비유하자면, V1과 V2가 "문서에서 잉크를 지우려고 종이를 통째로 물에 담근 것"이라면, V3는 "특수 용액으로 잉크만 정확하게 녹여낸 것"입니다.
워터마크 제거의 성과를 평가하는 네 가지 핵심 지표가 있습니다. 하나씩 쉽게 풀어보겠습니다.
PSNR은 원본 이미지와 처리된 이미지 사이의 차이를 데시벨(dB) 단위로 측정합니다.
여기서 MAX는 최대 픽셀값(보통 255), MSE는 평균 제곱 오차입니다.
직관적으로:
V3의 43.5dB는 인간의 눈으로는 원본과 구분할 수 없는 수준입니다. 이것이 V3가 "성공적"이라고 평가받는 핵심 이유입니다: 워터마크를 제거하면서도 이미지 품질은 유지했다.
PSNR이 픽셀 단위의 수치적 차이를 측정한다면, SSIM은 인간의 시각 체계가 실제로 인지하는 유사도를 측정합니다.
SSIM은 세 가지 요소를 종합합니다:
PSNR보다 SSIM이 더 중요한 이유가 있습니다. PSNR은 단순히 픽셀값의 수치적 차이만 보지만, SSIM은 인간이 실제로 "달라 보인다"고 느끼는 구조적 변화를 포착합니다. 예를 들어, 이미지 전체의 밝기를 1만큼 올리면 PSNR은 크게 떨어지지만 SSIM은 거의 변하지 않습니다.
이것은 캐리어 주파수에서의 워터마크 신호 에너지가 얼마나 감소했는지 측정합니다.
캐리어 주파수란? SynthID가 워터마크 정보를 심어놓은 특정 주파수 위치들입니다. 라디오 방송에서 특정 주파수에 신호를 실어보내는 것과 같은 원리입니다. 106.1MHz가 KBS 라디오의 캐리어 주파수인 것처럼, SynthID도 (±14, ±14), (±126, ±14) 등의 주파수 좌표를 사용합니다.
이것이 아마도 가장 결정적인 지표입니다. SynthID는 위상 인코딩을 사용하므로, 위상 일관성(phase coherence)의 파괴가 곧 워터마크 탐지 불가능을 의미합니다.
위상 일관성이란: SynthID가 삽입한 캐리어 주파수들의 위상 패턴이 얼마나 일관되게 유지되는지를 나타냅니다. 원본 워터마크에서는 이 값이 거의 1.0(완벽한 일관성)인데, 이 값이 떨어지면 탐지기가 워터마크를 인식하지 못합니다.
SynthID 탐지기는 이미지의 노이즈와 워터마크 코드북 사이의 상관계수(correlation coefficient)를 계산합니다. 이 값이 0.179를 넘으면 "SynthID 워터마크 있음"으로 판정합니다.
V3만이 유일하게 0.179 아래로 내려가는 데 성공했습니다. 이것이 바로 V3가 "SynthID를 뚫었다"고 말할 수 있는 이유입니다.
V3의 핵심 혁신인 SpectralCodebook의 구축 과정을 좀 더 자세히 살펴보겠습니다.
# SpectralCodebook 구축의 핵심 로직 (의사 코드)
class SpectralCodebook:
def build(self, reference_images: list):
profiles = {}
for resolution in unique_resolutions(reference_images):
imgs = filter_by_resolution(reference_images, resolution)
# 각 채널별 FFT 평균화
avg_magnitude = {ch: np.zeros(resolution) for ch in ['R','G','B']}
avg_phase = {ch: np.zeros(resolution) for ch in ['R','G','B']}
for img in imgs:
for ch in ['R', 'G', 'B']:
fft = np.fft.fft2(img[ch])
avg_magnitude[ch] += np.abs(fft)
avg_phase[ch] += np.angle(fft)
# 평균화: 이미지 콘텐츠는 상쇄되고 워터마크만 남음
for ch in ['R', 'G', 'B']:
avg_magnitude[ch] /= len(imgs)
avg_phase[ch] /= len(imgs)
# 피크 캐리어 주파수 추출
carriers = find_peak_frequencies(avg_magnitude)
profiles[resolution] = {
'magnitude': avg_magnitude,
'phase': avg_phase,
'carriers': carriers
}
return profiles
왜 평균화가 작동하는가? 순수 검은/흰 이미지의 FFT에서:
따라서 FFT 결과의 0이 아닌 모든 값은 순수한 워터마크 신호입니다. 200장을 평균화하면 노이즈는 상쇄되고 워터마크 패턴만 선명하게 남습니다.
def remove_watermark(image, codebook):
resolution = image.shape[:2]
profile = codebook[resolution] # 해상도별 프로파일 선택
channel_weights = {'R': 0.85, 'G': 1.0, 'B': 0.70}
result = np.zeros_like(image)
for ch_idx, ch_name in enumerate(['R', 'G', 'B']):
# 1. FFT 변환
fft = np.fft.fft2(image[:, :, ch_idx])
# 2. 각 캐리어 주파수에서 워터마크 에너지 감산
for carrier in profile['carriers']:
fx, fy = carrier
# 이미지 콘텐츠 에너지의 30%를 상한으로 제한
max_removal = 0.3 * np.abs(fft[fx, fy])
removal = min(
profile['magnitude'][ch_name][fx, fy] * channel_weights[ch_name],
max_removal
)
# 위상 방향으로 감산
fft[fx, fy] -= removal * np.exp(1j * profile['phase'][ch_name][fx, fy])
# 3. 역 FFT
result[:, :, ch_idx] = np.real(np.fft.ifft2(fft))
return np.clip(result, 0, 255).astype(np.uint8)
핵심 설계 결정 두 가지:
30% 에너지 상한: 캐리어 주파수의 에너지를 무한정 제거하지 않습니다. 해당 빈의 이미지 콘텐츠 에너지의 30%까지만 제거하여, 이미지 품질 저하를 최소화합니다.
채널별 가중치: 녹색 채널(1.0)에 가장 강하게, 청색 채널(0.70)에 가장 약하게 필터링합니다. 이는 SynthID가 채널별로 다른 강도로 워터마크를 삽입하기 때문입니다.
이 프로젝트가 HackerNews에 올라왔을 때, 커뮤니티의 반응은 흥미로웠습니다:
refulgentis (회의론): "전후 비교 이미지가 어디에도 없다. 비가시적 수정을 핵심 주장으로 하는 프로젝트에서 이건 심각한 결함이다."
doctorpangloss (핵심 지적): "이 도구는 자체 탐지기로 제거 성능을 테스트한다. Google의 SynthID 앱에 대해서는 테스트하지 않았다. 자기 시험을 자기가 채점하는 셈이다."
coppsilgold (흥미로운 추론): "Google이 아마 두 종류의 워터마크를 유지할 것이다 — 온라인 오라클로 공개한 허술한 것 하나, 그리고 숨겨둔 예비 워터마크 하나."
akersten (근본적 회의): "본질적으로 퍼지 신호에 의존하는 것이며, 사람들이 이것에 의존해서는 안 된다."
Nav Toor의 포스트가 바이럴되었습니다:
"Google이 Gemini가 생성한 모든 이미지에 보이지 않는 워터마크를 심었다. 100억 개가 넘는 콘텐츠에 마크를 남겼다. 한 백수 엔지니어가 그걸 풀어버렸다. 검은 이미지 200장과 수학으로."
HackerNews의 doctorpangloss가 짚은 점은 핵심적입니다. reverse-SynthID는 자체 구축한 탐지기로 우회 성능을 측정했습니다. Google의 실제 SynthID 탐지기가 동일한 결과를 보일지는 확인되지 않았습니다.
Google이 "이중 워터마크" 전략(공개용 + 비공개 예비)을 사용할 가능성도 있습니다. 마치 건물의 보안 카메라가 보이는 것과 숨겨진 것 두 종류가 있는 것처럼요.
그럼에도 불구하고, 이 연구가 보여준 것은 공개된 신호 처리 기법만으로도 워터마크의 구조를 파악하고 상당 부분 무력화할 수 있다는 사실입니다.
| 기업 | 접근 방식 | 상태 | 커버리지 | |
|---|---|---|---|---|
| SynthID (독자적) + C2PA | 가장 많이 배포 (100억+ 이미지) | Gemini, Imagen, Veo, Lyria | ||
| OpenAI | C2PA 메타데이터 | DALL-E, ChatGPT Images, Sora에 적용 | 메타데이터 기반 | |
| Meta | Stable Signature + AudioSeal + Video Seal | 오픈소스 (Apache 2.0 / MIT) | 오픈소스 생태계 | |
| Adobe | C2PA + Content Authenticity Initiative | 업계 표준화 선도 | 크리에이티브 도구 | |
| Anthropic | 워터마킹 미배포, 로드맵에 포함 | R&D 단계 | — |
AI 콘텐츠 인증에는 크게 두 가지 접근이 존재합니다:
Google은 두 가지를 모두 사용합니다 — SynthID 워터마크와 C2PA 메타데이터를 동시에 적용하는 이중 방어 전략입니다.
2026년 8월 시행을 앞둔 EU AI Act 제50조는 AI 생성 콘텐츠에 대해:
세 가지를 모두 요구하며, 위반 시 전 세계 연간 매출의 3%까지 과징금이 부과됩니다.
하지만 현실은 냉혹합니다. 2025년 연구(arXiv:2503.18156)에 따르면:
50개 AI 이미지 생성기 중 19개만이 워터마크를, 9개만이 가시적 라벨을 제공합니다. EU 규제의 역외 적용이 실효성을 가질지는 의문입니다.
디지털 워터마킹에는 세 가지 속성이 있으며, 이들은 근본적으로 충돌합니다:
비가시성을 높이면 → 워터마크 신호가 약해져서 → 강인성이 떨어진다
강인성을 높이면 → 워터마크 신호를 강하게 만들어야 해서 → 비가시성이 떨어진다
SynthID는 43.5dB PSNR이라는 높은 비가시성과 JPEG/크롭 등에 대한 강인성 사이에서 균형점을 찾으려 했습니다. 그러나 reverse-SynthID는 바로 그 균형점이 안전하지 않다는 것을 보여주었습니다.
2024년 NeurIPS에서 발표된 논문 "Invisible Watermarks are Provably Removable Using Generative AI"는 충격적인 결론을 제시합니다:
정리: 충분히 강력한 생성 AI 모델은 이론적으로 어떤 비가시적 워터마크든 제거할 수 있다. 이것은 특정 구현의 약점이 아니라, 워터마킹이라는 접근 방식 자체의 수학적 한계이다.
직관적으로 이해하면: 생성 AI가 이미지의 분포를 완벽히 학습했다면, 워터마크가 있는 이미지를 입력받아 동일한 내용이지만 워터마크가 없는 이미지를 새로 생성할 수 있습니다. 워터마크가 "비가시적"이라는 것은 원본 이미지와 워터마크 이미지의 분포가 거의 동일하다는 뜻이며, 이는 생성 모델이 워터마크 없는 버전을 복원할 수 있는 조건이 됩니다.
NSF TRAILS 연구소의 연구원은 더 직설적으로 말합니다:
"현재 신뢰할 수 있는 워터마킹은 존재하지 않는다. 우리는 전부 다 깼다. 저 교란 워터마크에 대한 희망은 없다."
워터마킹이 완벽하지 않다면, 어떤 대안이 있을까요?
미래의 AI 콘텐츠 인증은 이 네 가지 층을 모두 결합하는 다층 방어(defense in depth) 전략으로 나아갈 것입니다. 하나의 층이 뚫려도 나머지가 보완하는 구조입니다.
reverse-SynthID가 제기하는 질문은 기술적인 것만이 아닙니다.
SynthID의 워터마크 구조가 역설계 가능했던 이유 중 하나는, 공개 API를 통해 누구나 이미지를 생성하고 분석할 수 있었기 때문입니다. 이것은 보안에 의한 모호성(security through obscurity)의 한계를 보여줍니다.
진정으로 안전한 시스템은 알고리즘이 공개되어도 깨지지 않아야 합니다 — 이것이 Kerckhoffs의 원리입니다. SynthID는 이 원리를 충족하지 못했습니다.
이 연구는 학문적 가치가 있지만, 동시에 악용될 수 있습니다. 딥페이크에서 워터마크를 제거하여 진짜처럼 유포하는 데 사용될 수 있기 때문입니다. 보안 연구의 책임 있는 공개(responsible disclosure) 원칙이 AI 워터마킹에도 적용되어야 할까요?
AI 콘텐츠 인증이 실패하면 피해를 보는 것은 개인입니다. 선거 기간의 딥페이크, 가짜 뉴스, 사기 — 이 모든 것은 "진짜"와 "가짜"를 구분할 수 없을 때 발생합니다.
AI가 만든 콘텐츠와 인간이 만든 콘텐츠의 구분은 점점 더 어려워질 것입니다. 궁극적으로 중요한 것은 기술적 워터마크가 아니라, 사회적 인프라 — 콘텐츠의 출처를 추적하고 검증하는 제도적 시스템 — 가 될 것입니다.
reverse-SynthID가 보여준 것은 결국 이것입니다: 기술만으로는 진실을 보장할 수 없다. 하지만 그렇다고 기술적 노력이 무의미한 것은 아닙니다. 완벽하지 않더라도, 워터마크는 위조의 비용을 높이고, 탐지의 확률을 올리고, 진실을 지키는 방어선 중 하나로 기능합니다.
100억 개의 워터마크가 200장의 검은 이미지 앞에 무너졌지만, 그 교훈은 다음 방어선을 더 강하게 만들 것입니다.