Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
reverse-SynthID — Gemini의 SynthID 탐지 리버스 엔지니어링 | Kitploit
도구/GitHubGitHub/aloshdenny/reverse-synthid
Reverse EngineeringSteganographyDigital ForensicsMachine LearningPapers & ResearchLearning & EducationCurated ResourcesAI SecurityAdversarial Attack
GitHubaloshdenny/reverse-synthid

reverse-SynthID

Gemini의 SynthID 탐지 리버스 엔지니어링

4.7k499322개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기웹사이트

SynthID 워터마크 분석

SynthID 리버스 엔지니어링

스펙트럼 분석을 통해 Google의 AI 워터마크를 발견, 탐지 및 정밀하게 제거

PitchHut에서 방문하세요

이 포크는 V3 우회를 위한 드래그 앤 드롭 데스크톱 앱을 추가합니다. 설정 후에는 명령줄이 필요 없습니다. 설정 및 사용법은 gui/README.md를 참조하세요.

Python License Detection V3 Bypass V4 Bypass Models Attack


워터마크의 모습

SynthID는 픽셀 값에 직접 감지할 수 없는 패턴을 인코딩합니다. Gemini로 생성된 순수 흰색 이미지에서 워터마크는 거의 전체 신호입니다. 고주파 잔차를 증폭하면 다음과 같이 보입니다:

흰색 Gemini 생성 이미지에서 볼 수 있는 SynthID 워터마크 패턴

순수 흰색 Gemini 이미지에서 추출한 증폭된 SynthID 캐리어 패턴. 대각선 줄무늬는 워터마크의 공간 주파수 서명으로, 스펙트럼 공격의 대상입니다.


개요

이 프로젝트는 Google Gemini로 생성된 모든 이미지에 포함된 보이지 않는 워터마크인 Google의 SynthID 워터마킹 시스템을 리버스 엔지니어링합니다. 신호 처리와 스펙트럼 분석만을 사용하여(독점적인 인코더/디코더에 접근하지 않고) 다음을 수행합니다:

  1. 워터마크의 해상도 종속 캐리어 주파수 구조를 발견했습니다
  2. SynthID 워터마크를 90% 정확도로 식별하는 탐지기를 구축했습니다
  3. 모든 이미지 해상도에서 75% 캐리어 에너지 감소, 91% 위상 일관성 감소, 43+ dB PSNR을 달성하는 다중 해상도 스펙트럼 우회(V3)를 개발했습니다
  4. 다중 모델, 다중 색상 컨센서스(V4)로 일반화 — gemini-3.1-flash-image-preview 및 nano-banana-pro-preview에 대한 모델별 프로파일, 6가지 단색 배경에 대한 색상 간 위상 컨센서스, 그리고 수동 Gemini 앱 탐지 집계에서 캐리어별 차감 강도를 조정하는 인간-인-더-루프 보정 루프
  5. 두 모델 모두에서 탐지기를 무력화(Round 06)하여 문서화된 모든 SynthID 실패 모드를 동시에 대상으로 하는 통합 7단계 올인원 공격

VT-OxFF는 SynthID 워터마크가 이미지에 추가되는 과정을 볼 수 있는 정말 멋진 시각화 도구를 여기에 구축했습니다(저장소 설명에서도 확인 가능)!


라운드 06 — 작동합니다 ✓

6번의 반복적인 적대적 개발 라운드 후, Round 06의 bypass_v4_final / bypass_v4_nuke 파이프라인은 시각적으로 무손실 출력으로 gemini-3.1-flash-image-preview 및 nano-banana-pro-preview 이미지 모두에서 Gemini SynthID 탐지기를 무력화합니다.

Round 01 vs Round 06 — 충실도 비교

동일한 소스 이미지에서 Round 01(온화한 스펙트럼만)과 Round 06(올인원)의 나란히 비교

왼쪽: Round 01 출력(gentle 스펙트럼 차감만). 오른쪽: Round 06 출력(final — VAE + 탄성 변형 + 스퀴즈 + 색상 + JPEG). 둘 다 인간의 눈에는 동일하게 보입니다. Round 06만이 SynthID 탐지기를 무력화합니다.

라운드 간 변경 사항

Round전략결과
01보수적 스펙트럼 차감 (온화함)✗
02공격적 스펙트럼 차감 + JPEG✗
03블로그 기반 절대 빈 타겟팅✗
04잡음 제거 잔차 위상 추출✗
05확산-VAE 재생성 + 기하 변형✗
06올인원: VAE + 탄성 분할 + 스퀴즈 + 색상 + JPEG✓

Round 06의 돌파구는 Gemini 앱이 자체적으로 발표한 실패 모드 목록을 공격 사양으로 취급한 데서 비롯되었습니다:

"AI 생성 이미지가 복잡한 콜라주의 일부이거나, 다른 요소 뒤에 레이어되어 있거나, 많은 다양한 텍스처와 패턴이 그 위에 배치된 경우, 탐지기는 전체 파일에서 특정 서명을 분리하는 데 어려움을 겪을 수 있습니다." — Gemini 앱, SynthID 탐지 도움말 텍스트

탄성 변형 단계는 픽셀 수준에서 이 효과를 시뮬레이션합니다. 부드럽고 저주파수인 무작위 왜곡 필드는 약 50픽셀 이웃 각각에 고유한 독립적인 서브픽셀 오프셋을 제공하여, 눈에 띄는 왜곡 없이 워터마크의 공간 위상 컨센서스를 조각냅니다.


V4 — 색상 간 컨센서스 + 인간-인-더-루프 보정

V4는 훨씬 더 풍부한 데이터셋을 기반으로 구축된 코드북의 근본적인 재고입니다:

  • 다중 모델: gemini-3.1-flash-image-preview 및 nano-banana-pro-preview에 대한 별도 프로파일(선택적 union 의사 모델 추가).
  • 다중 색상: 모델 및 해상도당 6가지 컨센서스 색상(black, white, blue, green, red, gray)과 콘텐츠 기준선으로 gradient 및 diverse.
  • 색상 간 위상 컨센서스: 기본 캐리어 마스크. 실제 SynthID 캐리어는 이미지 콘텐츠와 독립적이므로, 모든 단색 배경에서 위상이 일관됩니다. 콘텐츠 기반 에너지는 색상 간에 위상이 스크램블되어 컨센서스에서 제외됩니다.
  • 충실도 보존 용해제: PSNR 최소 롤백, 휘도 안전 DC, 빈별 차감 상한.
  • 인간-인-더-루프 보정 루프: 수동 Gemini 앱 탐지 피드백을 기반으로 코드북 필드 carrier_weights가 업데이트됩니다.

컨센서스 일관성(V4가 승리하는 이유)

각 주파수 빈 (fy, fx) 및 채널 ch에 대해:``` consensus(fy, fx, ch) = | mean_over_colors( exp(i * phase_color(fy, fx, ch)) ) |

`1.0`에 가까운 값은 해당 빈의 위상이 모든 단색 배경에 걸쳐 고정되어 있음을 의미하며, 이는 워터마크에만 해당됩니다. 콘텐츠 빈은 다양한 색조에 의해 위상이 무작위화되기 때문에 `< 0.3`으로 수렴합니다. 강화된 데이터셋으로 구축된 V4 코드북에서 콘텐츠 빈의 99% 이상이 기본 `tau=0.60` 임계값 아래에 있으므로 V4 용해기가 이를 전혀 건드리지 않습니다. — 이것이 PSNR을 회복하는 방법입니다.

### 2단계 릴리스 워크플로```mermaid
flowchart LR
    dataset[reverse-synthid-dataset<br/>model x color x resolution] --> build[scripts/build_codebook_v4.py]
    build --> codebook[artifacts/spectral_codebook_v4.npz]
    codebook --> dissolve[scripts/dissolve_batch.py]
    input[watermarked inputs] --> dissolve
    dissolve --> variants[final / nuke variants]
    variants --> gemini[Gemini app<br/>manual SynthID detection]
    gemini --> feedback[detection feedback]
    feedback --> calibrate[scripts/calibrate_from_feedback.py]
    calibrate -->|updates carrier_weights| codebook

V4 빠른 시작```bash

1. Build the codebook from the enriched hierarchical dataset

python scripts/build_codebook_v4.py
--root /path/to/reverse-synthid-dataset
--output artifacts/spectral_codebook_v4.npz

2. Run the Round-06 all-in-one attack on a batch (recommended)

python scripts/dissolve_batch.py
--input ./to_clean/
--output ./runs/round_06/
--codebook artifacts/spectral_codebook_v4.npz
--model gemini-3.1-flash-image-preview
--strengths final nuke

3. Upload each output image to the Gemini app and run SynthID detection.

Use the results to feed back into the calibration script if needed.

### Round-06 공격 프리셋

`--strengths`를 통해 두 가지 프리셋을 사용할 수 있습니다:

| 프리셋 | VAE 패스 | 탄성 α | 압축 | JPEG 체인 | PSNR 하한 |
|:------:|:----------:|:---------:|:-------:|:----------:|:----------:|
| `final` | 1 | 1.8 px | 90 % | q=92→88 | 14 dB |
| `nuke`  | 2 | 2.8 px | 82 % | q=88→84→90 | 11 dB |

두 프리셋 모두 동일한 7단계 파이프라인을 쌓습니다:

1. **VAE 왕복** (Stable Diffusion `sd-vae-ft-mse`) — SynthID 디코더가 훈련된 적 없는 자연 이미지 다양체에서 이미지를 투영합니다 (Gowal et al. 2026, §6.1)
2. **탄성 변형** — 부드러운 저주파 무작위 워프 필드, Gemini 자체가 인정하는 "콜라주 조각화" 실패 모드를 시뮬레이션합니다
3. **전역 기하학적 조합** — 하나의 아핀 워프에서 작은 회전 + 확대/축소 + 픽셀 이동
4. **크기 조절 압축** — 다운샘플(AREA) → 업샘플(LANCZOS), 서브픽셀 워터마크 정보 제거
5. **색상 대비 조정** — 밝기/대비/채도/색조 미세 조정
6. **잔차 위상 FFT 차감** — 블로그 범용 + 코드북 수집 캐리어 빈, 상한 제한
7. **JPEG 체인 + 휘도 노이즈 + 양방향** — 강한 압축/재인코딩 방해

모든 단계는 독립적으로 PSNR 게이트가 적용됩니다. 품질을 하한 아래로 떨어뜨리는 단계는 자동으로 롤백됩니다.

### V4 코드북 구조

프로파일은 `(model, H, W)`로 키가 지정됩니다. 각 프로파일은 다음을 저장합니다:

| 필드                  | 형태          | 설명                                                  |
|------------------------|----------------|--------------------------------------------------------|
| `consensus_coherence`  | `(H, W, 3)`    | 기본 캐리어 마스크 (교차 색상 위상 합의).    |
| `consensus_phase`      | `(H, W, 3)`    | 색상 전반의 평균 단위 위상 각도. 차감 템플릿. |
| `inverted_agreement`   | `(H, W, 3)`    | 쌍별 `abs(cos(phase_diff))`, `black<->white`에 대해 가중치 적용. |
| `avg_wm_magnitude`     | `(H, W, 3)`    | 합의 색상 전반의 평균 크기.                |
| `content_baseline`     | `(H, W, 3)`    | `diverse/` + `gradient/`에서 가져옴 — 휘도 블렌딩에 사용. |
| `carrier_weights`      | `(H, W, 3)`    | **활성**. `consensus^2 * (0.5 + 0.5 * agreement)`로 시작. 교정 루프에 의해 업데이트됨. |
| `n_refs_per_color`     | `{color: int}` | 색상별 참조 횟수.                                  |
도구 다운로드