← 온라인 안전
ASTERXOR / 온라인 안전

사진에서 보이지 않는 부분

사진에는 픽셀뿐 아니라 정보를 담은 봉투도 따라올 수 있다. 무해한 예시를 만들어 봉투를 비우고 결과를 확인했다.

실험용 산과 호수 그림 옆의 별도 카드가 EXIF 필드 다섯 개를 상징적으로 보여 준다.
이 풍경은 실험용으로 그렸다. 카메라, 작성자, 시각은 모두 더미 값이며 실제 사진이나 위치는 사용하지 않았다.
온라인 안전ASTERXOR / LEON LEUNG

겉모습이 같은 두 사진도 파일을 여는 소프트웨어에는 서로 다른 이야기를 들려줄 수 있다.

사진에는 이미지와 함께 촬영 시간, 카메라 모델, 위치 좌표가 들어 있을 수 있다. 이런 부가 정보를 메타데이터라고 한다. 사진 보관함을 정리할 때는 유용하지만 파일을 받는 사람도 읽을 수 있다. 화면에 보이는 것이 전송하는 정보의 전부는 아닐 수 있다는 작은 구분에서 개인정보 보호가 시작된다.

화면 속 사진만 보지 말고, 실제로 보낼 사본을 확인하자.
THE EXTRA LAYER

사진에 정보 봉투가 있는 이유

EXIF는 이미지 파일에 촬영과 처리 정보를 저장하는 흔한 방식 중 하나다. 카메라, 앱, 설정에 따라 시간, 노출, 기기 정보, 방향, GPS 정보 등이 들어갈 수 있다. 모든 이미지에 이런 필드가 있는 것은 아니다. 한 파일에 GPS가 없다고 다음 사진도 없다고 볼 수는 없다.

메타데이터는 유용하다. 방향 정보는 이미지를 올바르게 표시하도록 돕고 날짜는 추억을 정리하는 데 쓰인다. 많은 형식에서 EXIF와 별도로 저장되는 색상 프로파일은 색 표현을 유지하는 데 도움을 준다. 모든 필드를 위험하게 여기는 것이 목표는 아니다. 받는 사람에게 필요한 정보가 무엇인지 정하고 나머지를 실수로 공유하지 않는 것이 목적이다.

A CONTROLLED EXAMPLE

가상의 풍경에 가상의 정보 다섯 개를 붙였다

900 × 600 크기의 풍경을 그린 뒤 설명, 카메라 제조사, 카메라 모델, 날짜와 시각, 작성자라는 EXIF 필드 다섯 개를 넣어 JPEG로 저장했다. DUMMY CAMERA, MODEL ZERO, FICTIONAL AUTHOR처럼 가짜임을 분명히 드러내는 값이다. 날짜는 누구의 활동도 나타내지 않는 고정된 시험 값이며 GPS 필드는 넣지 않았다.

저장이 잘됐다고 가정하는 대신 저장한 JPEG를 다시 열어 EXIF를 읽었다. 다섯 값이 모두 남아 있었다. 여기서 첫 번째 교훈을 얻는다. 메타데이터는 파일에 속하지만 풍경의 겉모습에는 드러나지 않을 수 있다. 산을 아무리 바라봐도 작성자 필드의 존재 여부는 알 수 없다.

더미 JPEG의 EXIF 항목 다섯 개가 깨끗한 RGB PNG에서 0개가 된다. 출력 청크는 IHDR, IDAT, IEND다.
FIG 01JPEG에는 넣었던 EXIF 필드 다섯 개가 모두 있었다. 다시 만든 PNG에는 EXIF가 없고 구조에 필요한 청크만 남았다.
MAKE A SEPARATE COPY

픽셀로 새로 만든 뒤 다시 열어 보자

이 통제된 이미지에서는 JPEG를 RGB 픽셀로 디코딩하고 그 배열로 새 이미지를 만든 뒤, 원본의 정보 사전을 가져오지 않고 PNG로 저장했다. 결과는 새로운 파일이다. 원본을 덮어쓰지 않고 보관했으므로 실험을 다시 확인하거나 처음 상태로 돌아갈 수 있다.

내보낸 파일을 다시 열자 EXIF 항목은 0개였다. PNG 청크의 종류도 확인했으며 이미지 헤더, 이미지 데이터, 종료 표시만 있었다. 처음 넣은 다섯 문자열도 출력 바이트에 남아 있지 않았다. 이런 검사는 이번에 만든 파일에 대한 구체적인 주장을 뒷받침할 뿐, 어떤 이미지든 익명이라고 보증해 주지는 않는다.

VERIFY BOTH SIDES

픽셀 수준에서 그림은 그대로였다

디코딩한 원본 JPEG와 내보낸 PNG의 RGB 배열은 완전히 같았다. 둘 다 900 × 600 픽셀이었고 채널 값의 최대 차이는 0이었다. 이 비교는 JPEG를 디코딩한 뒤부터 시작한다. 처음 JPEG로 저장할 때 이미 손실 압축이 일어났으므로 압축 전 그림과 완전히 같다고 주장하는 것은 아니다.

그런데도 두 파일의 SHA-256 해시는 다르다. 바이트, 컨테이너 형식, 메타데이터가 달라졌기 때문이다. 파일 지문이 달라졌다고 보이는 풍경도 달라졌다는 뜻은 아니다. 반대로 익숙한 썸네일이 보인다고 숨은 정보가 없다는 뜻도 아니다. 겉모습과 파일 내용은 서로 다른 질문에 답한다.

똑같은 디코딩 풍경 두 장. 크기는 900 × 600이며 RGB 채널 값의 최대 차이는 0이다.
FIG 02이번 시험에서 PNG는 디코딩한 JPEG 픽셀을 정확히 보존했다. JPEG 저장 전 그림을 무손실로 복원했다는 뜻은 아니다.
BEFORE SHARING

실제로 나갈 파일을 확인하자

일상적으로 공유할 때는 사진 앱의 정보 패널이나 믿을 만한 로컬 메타데이터 도구를 살펴보자. 앱에 위치 공유 끄기나 메타데이터 없이 내보내기 기능이 있다면 필요에 맞게 사용하고, 내보낸 사본을 다시 확인한다. 조작 방식은 앱과 버전에 따라 다르다. 이번 실험에서는 휴대전화 화면이나 소셜 서비스의 업로드 절차를 시험하지 않았다.

메신저가 언제나 모든 정보를 지워 준다고 가정하거나 스크린샷이 자동으로 안전하다고 생각하지 말자. 도로 표지, 사원증, 반사된 모습, 화면, 알아볼 수 있는 장소 같은 시각적 단서가 EXIF보다 더 많은 것을 드러낼 수도 있다. 민감한 원본에 무엇이 들어 있는지 알아보겠다고 낯선 “메타데이터 제거” 사이트에 업로드하지 않는 편이 좋다.

위치와 기기 같은 메타데이터 목록과 표지판, 반사, 알아볼 수 있는 사람 같은 시각적 단서 목록.
FIG 03파일 정보와 눈에 보이는 내용은 따로 확인해야 한다. 한쪽을 지워도 다른 쪽은 숨겨지지 않는다.
KEEP THE LIMITS VISIBLE

정리는 마법 버튼이 아니라 작업 과정이다

이 단순한 변환은 이번 예시에는 적합하지만 모든 카메라 파일에 대한 약속은 아니다. 실제 사진은 메타데이터를 없애기 전에 방향을 적용해야 할 수 있고 색상 관리도 중요할 수 있다. 다른 형식에는 애니메이션, 추가 이미지, 내장 썸네일, 다른 메타데이터 체계가 들어갈 수 있다. 변환으로 파일이 커지거나 원하던 기능이 사라질 수도 있다.

원본은 비공개로 보관하고 공유용 사본을 만들어 겉모습과 남은 정보를 확인하자. 이미지 메타데이터가 없어도 파일 이름, 함께 보내는 메시지, 서비스 계정 정보가 맥락을 드러낼 수 있다. 체크박스 하나보다 공유라는 행위 전체를 살피는 편이 개인정보를 더 잘 지켜 준다.

더 읽어 보기

Pillow: Image.getexif and Image.fromarray ↗Pillow: JPEG and PNG file-format documentation ↗

공식 문서와 함께 읽으면 좋은 자료입니다.

가져갈 생각 하나

그 봉투가 나에게 유용하다고 모두에게 필요한 것은 아니다. 필요한 것은 간직하고 무엇을 함께 보낼지는 의식적으로 선택하자.