겉모습이 같은 두 사진도 파일을 여는 소프트웨어에는 서로 다른 이야기를 들려줄 수 있다.
사진에는 이미지와 함께 촬영 시간, 카메라 모델, 위치 좌표가 들어 있을 수 있다. 이런 부가 정보를 메타데이터라고 한다. 사진 보관함을 정리할 때는 유용하지만 파일을 받는 사람도 읽을 수 있다. 화면에 보이는 것이 전송하는 정보의 전부는 아닐 수 있다는 작은 구분에서 개인정보 보호가 시작된다.
화면 속 사진만 보지 말고, 실제로 보낼 사본을 확인하자.
사진에 정보 봉투가 있는 이유
EXIF는 이미지 파일에 촬영과 처리 정보를 저장하는 흔한 방식 중 하나다. 카메라, 앱, 설정에 따라 시간, 노출, 기기 정보, 방향, GPS 정보 등이 들어갈 수 있다. 모든 이미지에 이런 필드가 있는 것은 아니다. 한 파일에 GPS가 없다고 다음 사진도 없다고 볼 수는 없다.
메타데이터는 유용하다. 방향 정보는 이미지를 올바르게 표시하도록 돕고 날짜는 추억을 정리하는 데 쓰인다. 많은 형식에서 EXIF와 별도로 저장되는 색상 프로파일은 색 표현을 유지하는 데 도움을 준다. 모든 필드를 위험하게 여기는 것이 목표는 아니다. 받는 사람에게 필요한 정보가 무엇인지 정하고 나머지를 실수로 공유하지 않는 것이 목적이다.
가상의 풍경에 가상의 정보 다섯 개를 붙였다
900 × 600 크기의 풍경을 그린 뒤 설명, 카메라 제조사, 카메라 모델, 날짜와 시각, 작성자라는 EXIF 필드 다섯 개를 넣어 JPEG로 저장했다. DUMMY CAMERA, MODEL ZERO, FICTIONAL AUTHOR처럼 가짜임을 분명히 드러내는 값이다. 날짜는 누구의 활동도 나타내지 않는 고정된 시험 값이며 GPS 필드는 넣지 않았다.
저장이 잘됐다고 가정하는 대신 저장한 JPEG를 다시 열어 EXIF를 읽었다. 다섯 값이 모두 남아 있었다. 여기서 첫 번째 교훈을 얻는다. 메타데이터는 파일에 속하지만 풍경의 겉모습에는 드러나지 않을 수 있다. 산을 아무리 바라봐도 작성자 필드의 존재 여부는 알 수 없다.

픽셀로 새로 만든 뒤 다시 열어 보자
이 통제된 이미지에서는 JPEG를 RGB 픽셀로 디코딩하고 그 배열로 새 이미지를 만든 뒤, 원본의 정보 사전을 가져오지 않고 PNG로 저장했다. 결과는 새로운 파일이다. 원본을 덮어쓰지 않고 보관했으므로 실험을 다시 확인하거나 처음 상태로 돌아갈 수 있다.
내보낸 파일을 다시 열자 EXIF 항목은 0개였다. PNG 청크의 종류도 확인했으며 이미지 헤더, 이미지 데이터, 종료 표시만 있었다. 처음 넣은 다섯 문자열도 출력 바이트에 남아 있지 않았다. 이런 검사는 이번에 만든 파일에 대한 구체적인 주장을 뒷받침할 뿐, 어떤 이미지든 익명이라고 보증해 주지는 않는다.
픽셀 수준에서 그림은 그대로였다
디코딩한 원본 JPEG와 내보낸 PNG의 RGB 배열은 완전히 같았다. 둘 다 900 × 600 픽셀이었고 채널 값의 최대 차이는 0이었다. 이 비교는 JPEG를 디코딩한 뒤부터 시작한다. 처음 JPEG로 저장할 때 이미 손실 압축이 일어났으므로 압축 전 그림과 완전히 같다고 주장하는 것은 아니다.
그런데도 두 파일의 SHA-256 해시는 다르다. 바이트, 컨테이너 형식, 메타데이터가 달라졌기 때문이다. 파일 지문이 달라졌다고 보이는 풍경도 달라졌다는 뜻은 아니다. 반대로 익숙한 썸네일이 보인다고 숨은 정보가 없다는 뜻도 아니다. 겉모습과 파일 내용은 서로 다른 질문에 답한다.


정리는 마법 버튼이 아니라 작업 과정이다
이 단순한 변환은 이번 예시에는 적합하지만 모든 카메라 파일에 대한 약속은 아니다. 실제 사진은 메타데이터를 없애기 전에 방향을 적용해야 할 수 있고 색상 관리도 중요할 수 있다. 다른 형식에는 애니메이션, 추가 이미지, 내장 썸네일, 다른 메타데이터 체계가 들어갈 수 있다. 변환으로 파일이 커지거나 원하던 기능이 사라질 수도 있다.
원본은 비공개로 보관하고 공유용 사본을 만들어 겉모습과 남은 정보를 확인하자. 이미지 메타데이터가 없어도 파일 이름, 함께 보내는 메시지, 서비스 계정 정보가 맥락을 드러낼 수 있다. 체크박스 하나보다 공유라는 행위 전체를 살피는 편이 개인정보를 더 잘 지켜 준다.
더 읽어 보기
Pillow: Image.getexif and Image.fromarray ↗Pillow: JPEG and PNG file-format documentation ↗공식 문서와 함께 읽으면 좋은 자료입니다.
