07 · EXIF와 메타데이터
이 문서가 답하는 질문: EXIF / IPTC / XMP는 무엇이고, 회전 정보 / GPS / 개인정보 누출은 어떻게 일어나며, 어떻게 막는가?
한 줄 답 (Pyramid Top)
이미지 파일은 픽셀 외에 수십~수백 개의 메타데이터 태그를 함께 담고, 그 안에는 회전 방향, 촬영 시각, GPS 좌표, 카메라 시리얼, 편집 이력까지 들어있다. 이 메타를 무시하면 가로 사진이 세로로 보이고, 무심코 strip 안 하면 사용자의 집 좌표가 노출된다.
Why — 왜 메타데이터가 따로 있나
이미지 파일의 진짜 데이터는 픽셀이지만, 그 픽셀을 올바로 해석/표시/처리하기 위해 부가 정보가 필요하다:
- 회전(Orientation) : 카메라가 세로로 돌려서 찍었는데 센서는 가로 — 픽셀은 가로로 저장하고 “세로로 회전해서 표시” 라는 메타 추가
- 색공간(ICC) : 이 픽셀이 sRGB인지 P3인지
- 촬영 정보 : 노출, ISO, 셔터, 렌즈 — 사진 라이브러리에서 검색·정렬에 사용
- GPS : 어디서 찍었는지 — 사진 지도 표시 / 자동 분류
- 저작권 : 누가 찍었고 어떤 라이선스인지
그러나 이 정보가 공개되면 안 되는 경우가 많다 → strip 정책이 보안 이슈.
How — 메타데이터의 3대 표준
1) EXIF (Exchangeable Image File Format, 1995)
- 출처: 일본 JEIDA (현 JEITA), 디지털 카메라용
- 포맷: TIFF 태그 구조를 JPEG/HEIF에 임베드
- 저장 위치:
- JPEG: APP1 마커 (
Exif\0\0prefix) - PNG:
eXIf청크 (PNG 1.5, 2017) - HEIF/AVIF:
Exif박스 (ISOBMFF) - WebP:
EXIF청크 (RIFF)
- JPEG: APP1 마커 (
- 용도: 카메라 자동 기록 (촬영 시각, 노출, GPS, Orientation)
2) IPTC (International Press Telecommunications Council, 1990)
- 출처: 보도사진용 (AP, Reuters, AFP)
- 저장 위치: JPEG의 APP13 마커 (Photoshop 8BIM 블록)
- 용도: 캡션, 키워드, 작성자, 저작권, 이벤트 정보
- 현재: XMP에 거의 흡수됨
3) XMP (Extensible Metadata Platform, 2001)
- 출처: Adobe
- 포맷: RDF/XML
- 저장 위치:
- JPEG: APP1 마커 (
http://ns.adobe.com/xap/1.0/prefix) - PNG:
iTXt청크 - HEIF:
mime박스
- JPEG: APP1 마커 (
- 용도: 편집 이력, 저작권, 키워드, 크롭 정보, AI 생성 표시(C2PA)
What — 구체 사양
1) EXIF의 핵심 태그
| 태그 ID | 이름 | 예시 값 |
|---|---|---|
| 0x0100 | ImageWidth | 4032 |
| 0x0101 | ImageLength | 3024 |
| 0x0112 | Orientation | 1~8 (회전/뒤집기) |
| 0x010F | Make | ”Apple” |
| 0x0110 | Model | ”iPhone 15 Pro” |
| 0x0132 | DateTime | ”2026:05:10 14:30:25” |
| 0x829A | ExposureTime | 1/120 |
| 0x829D | FNumber | f/1.78 |
| 0x8827 | ISOSpeedRatings | 100 |
| 0x920A | FocalLength | 6.86 mm |
| GPS IFD | ||
| 0x0001 | GPSLatitudeRef | ”N” |
| 0x0002 | GPSLatitude | 37° 30’ 12.5” |
| 0x0003 | GPSLongitudeRef | ”E” |
| 0x0004 | GPSLongitude | 127° 0’ 30.2” |
| 0x0006 | GPSAltitude | 50.5 m |
2) Orientation 태그 — 회전 정보
1 = 정상 (no rotation)
2 = 좌우 반전
3 = 180° 회전
4 = 상하 반전
5 = 좌우 반전 + 시계 90°
6 = 시계 90° (= 카메라를 세로로 잡고 찍음, 가장 흔함)
7 = 좌우 반전 + 반시계 90°
8 = 반시계 90°3) iPhone 사진 EXIF 예시 (exiftool 출력)
File Name : IMG_3421.HEIC
File Size : 2.3 MB
MIME Type : image/heic
Image Width : 4032
Image Height : 3024
Make : Apple
Model : iPhone 15 Pro
Orientation : Rotate 90 CW
DateTime Original : 2026:05:10 14:30:25
Lens Model : iPhone 15 Pro back triple camera 6.86mm f/1.78
ISO : 100
Shutter Speed : 1/120
F Number : 1.78
Focal Length : 6.86 mm (35 mm equiv: 24.0 mm)
GPS Latitude : 37 deg 30' 12.50" N
GPS Longitude : 127 deg 0' 30.20" E
GPS Altitude : 50.5 m Above Sea Level
Software : 18.4
Device Manufacturer : Apple
Camera Owner Name : 홍길동4) GPS 좌표의 정밀도
EXIF의 GPS 좌표는 보통 초 단위까지 (37° 30’ 12.5”) = 약 30m 정확도. 30m는 건물을 특정하기 충분하다. 즉, 집에서 찍은 셀카 한 장으로 주소가 노출.
5) AI 생성 이미지의 메타 (C2PA)
2024년 이후 ChatGPT/Midjourney 등은 C2PA(Coalition for Content Provenance and Authenticity) 메타 추가:
{/* XMP 안에 임베드 */}
<rdf:Description>
<c2pa:claim_generator>OpenAI/DALL-E 3</c2pa:claim_generator>
<c2pa:created>2024-03-15T10:23:00Z</c2pa:created>
<c2pa:assertions>
<c2pa:ai_generated>true</c2pa:ai_generated>
</c2pa:assertions>
</rdf:Description>스크린샷·리사이즈로 메타가 strip되면 이 정보도 사라짐 → C2PA는 워터마크도 함께 사용.
What-if — EXIF가 만든 고전적 버그
사례 1) 가로 사진이 세로로 보임 (Orientation 무시)
상황: 사용자가 iPhone에서 가로로 찍은 사진을 웹에 업로드 → 서버에서 썸네일 생성 → 썸네일이 세로로 누워 표시.
원인:
- iPhone 촬영: 사용자가 폰을 세로로 잡음, 센서는 가로 픽셀 저장, Orientation=6
- 서버의 이미지 라이브러리가 픽셀만 리사이즈하고 Orientation 태그를 그대로 복사
- 일부 브라우저는 자동 회전 적용, 일부는 안 함 → 디바이스마다 다른 결과
해결:
# ImageMagick — 회전 적용 + 메타 strip
convert input.jpg -auto-orient -strip output.jpg
# sharp (Node.js)
sharp(input).rotate().toFile(output); // .rotate() 인자 없으면 EXIF 따름중요: 처리 후 Orientation을 1로 재설정해야 이중 회전이 안 일어남.
사례 2) 셀카로 집 주소가 발각됨
상황: 게시판에 자기 방 사진을 올렸는데, 누군가가 EXIF GPS로 집 좌표를 알아냄.
대응 — 모든 사용자 업로드 이미지는 strip 필수:
# exiftool로 모든 메타 제거 (ICC profile은 보존)
exiftool -all= -tagsfromfile @ -ICC_Profile -overwrite_original input.jpg
# sharp
sharp(input).withMetadata({ icc: 'srgb' }).toFile(output);
# imagemagick
convert input.jpg -strip -profile sRGB.icc output.jpg유의: SNS 일부는 자동 strip하지만 모든 SNS가 안전하다고 가정하면 안 됨. Twitter는 strip, Instagram은 strip, Facebook은 일부 보존.
사례 3) “사진을 회전했는데 다시 누움”
상황: 사용자가 iPhone Photos에서 사진을 회전 → 메일 전송 → 받는 사람의 PC에서 다시 누움.
원인: iPhone Photos는 Orientation 태그만 변경 (픽셀은 그대로). 일부 메일/Outlook 디코더가 Orientation을 무시.
대응: 픽셀 자체를 회전시킨 사본을 만들어 전송 (Photos > Share > “Always Include Location” 옆 옵션).
사례 4) ICC Profile strip → 색이 죽음
상황: P3 사진에서 EXIF strip한다고 모든 메타 삭제 → ICC Profile도 함께 사라짐 → sRGB로 잘못 해석.
대응: ICC Profile은 보존하고 EXIF/XMP만 제거:
exiftool -EXIF:all= -XMP:all= -overwrite_original input.jpg
# ICC profile은 EXIF/XMP 네임스페이스가 아니라 보존됨사례 5) 카메라 시리얼 번호로 사진 추적
상황: 익명으로 올린 사진에서 EXIF의 BodySerialNumber + LensSerialNumber로 카메라 식별 → 같은 카메라가 찍은 다른 사진과 연결되어 신원 노출.
→ Edward Snowden 같은 보안 케이스에서 항상 strip.
Insight — 메타데이터의 정치학
“Orientation 태그는 카메라 산업의 게으름이 만든 부산물”
1990년대 디지털 카메라는 센서를 회전시킬 수 없어서 항상 가로로 픽셀을 저장. 카메라가 자세 센서로 세로 임을 감지하면 픽셀을 회전시켜 저장하면 되는데, CPU가 부족해서 메타 태그로 후처리에 떠넘김. 30년이 지났지만 카메라 회사들이 과거 호환성 때문에 여전히 같은 방식 → 모든 디코더가 회전 처리를 해야 함.
“GPS 누출의 가장 유명한 사건 — John McAfee, 2012”
McAfee 회사 창업자 John McAfee가 살인 혐의로 도주 중, Vice 매거진 기자가 그의 인터뷰 사진을 게재. 그 사진의 EXIF GPS로 그가 과테말라의 어느 호텔에 있는지 즉시 발각 → 며칠 만에 체포. 이 사건 이후 보도사진 업계가 EXIF strip을 표준화.
“C2PA — AI 시대의 메타데이터 군비경쟁”
2024년부터 OpenAI/Microsoft/Adobe/BBC 등이 C2PA 표준을 만들어 AI 생성 이미지에 암호학적 서명 추가. 단순 메타가 아니라 HMAC + 인증서로 위변조 불가능. 그러나 스크린샷 한 번이면 strip되어버려서, 워터마크 + C2PA를 함께 쓰는 방향으로 진화.
“메타데이터의 IPTC vs XMP 전쟁”
1990년대 통신사가 만든 IPTC가 캡션·키워드 표준으로 자리잡았는데, 2001년 Adobe가 XMP를 발표하며 모든 메타를 RDF/XML로 통합하려 함. 결과: 두 포맷이 공존. Photoshop은 둘 다 쓰고 동기화. 30년이 지나도 통일 안 됨.
한 단락 요약
이미지 메타데이터(EXIF/IPTC/XMP/ICC)는 픽셀 옆에 붙은 컨텍스트이고, 무시하면 사진이 옆으로 눕고, 함부로 strip하면 색이 죽고 ICC가 사라지고, 안 strip하면 GPS·시리얼 번호로 사용자가 식별된다. EXIF는 strip하되 ICC Profile은 보존 — 이게 사용자 업로드 처리의 황금 규칙.