본문 바로가기

Digital Forensics/Forensics Generalization

포렌식 관점에서 바라본 Exif Format -2 [Exif Format의 구조]

Ⅲ. Exif Format

3.1 JPEG의 구조

3.1.1 JPEG 이미지와 마커(Marker)

JPEG 이미지는 마커(Marker)의 집합으로 구성되어있다.


위 그림처럼 모든 마커는 0xFF로 시작하며 데이터의 크기가 마커에 명시되어 있어 오프셋(offset)으로 다음 마커의 위치를 알 수 있다. JPEG 이미지는 SOI 마커로 시작하여 SOS 마커로 끝나는 형태를 띄고 있다.

마커

마커 번호

SOI(Start of Image)

D8

APP1

E1

APP2

DQT(Quantization Table)

DB

DHT(Huffman Table)

C4

DRI(Restart Interval)

DD

SOF(Frame Header)

C0

SOS(Scan Header)

DA

EOI(End of Image)

D9

이 중 SOI, EOI 마커는 Size of Data, Size 영역이 없다.


그래서 JPEG 이미지를 바이너리 환경에서 보게 되면 SOI 마커 바로 뒤에 APP1 마커가 등장하는 것을 볼 수 있다.

마찬가지로 마지막 부분을 바이너리 환경에서 살펴보게 되면 압축된 데이터 뒤에 EOI 마커가 존재하며 이로써 JPEG 이미지의 끝을 표시해주고 있다.

3.1.2 어플리케이션 마커(Application Marker)

마커번호가 0xFFE0 ~ 0xFFEF에 해당하는 마커를 어플리케이션 마커라 한다. 이는 JPEG이미지의 인코딩/디코딩과는 상관없다. 따라서 이 부분을 손상시켜도 이미지의 재생에는 영향을 끼치지 않는다.


위처럼 어플리케이션 마커를 0으로 덮어쓴 경우에도 해당 이미지를 재행하는데는 문제가 없다. 이처럼 어플리케이션 마커는 이미지의 인코딩/디코딩과는 상관없기 때문에 이 영역에 이미지의 부가정보를 기입할 수 있으며 이 어플리케이션 마커를 이용한 것이 Exif Format이다.

그런데 JPEG 이미지 Format 중 하나인 JFIF 이미지에서 마커번호가 0xFFE0인 APP0 마커를 자체적으로 사용하기 때문에 이와의 혼란을 피하기 위해 Exif Format에서는 APP1(마커번호가 0xFFE1)을 사용한다.

즉, Exif Format은 JPEG Format의 일부인 APP1마커를 이용하여 이미지에 대한 부가정보를 저장하는 방식이다.


3.2 Exif Format의 개요

3.2.1 Exif Format의 개발

Exif Format은 일본전자산업진흥협회(JEIDA)에서 개발한 Format으로써 1995년 Exif ver1.0을 시작으로 2003년 Exif ver 2.21 까지 개발된 상태이다. 이미지에 썸네일(thumbnail) 이미지, GPS 정보, 시각 정보, 촬영환경 정보 등을 저장할 수 있으며 JPEG, TIFF 6.0, RIFF, WAV 파일 Format에 적용될 수 있다. 디지털카메라의 경우 JPEG, TIFF 6.0 방식으로 촬영할 경우 Exif 데이터를 삽입할 수 있다.

3.2.2 Intel 방식과 Motorola 방식

바이너리 데이터를 저장할때에 Intel 방식과 Motorola 방식 2가지 중 하나의 방법으로 데이터가 쓰여진다. Intel 방식은 소위 리틀 엔디언(little Endian)방식으로 바이너리 데이터를 입력하는 방법을 말하며, Motorola 방식은 빅 엔디언(Big Endian)방식을 의미한다.

그런데 순수 JPEG 이미지의 바이너리 데이터는 빅엔디언 즉, Motorola 방식으로 쓰여있지만 Exif 데이터는 리틀엔디언 방식으로 쓰여있는 경우가 있다. 따라서 Exif Format의 바이너리 데이터를 분석할 시에 이에 유의하여야 한다.

3.2.2 Exif Format 의 구조


Exif Format는 APP1 마커의 데이터 영역이 삽입되어 있다. 썸네일(Thumnail) 이미지 JPEG Format으로 구성되어 있으므로 원본 이미지와 마찬가지로 SOI마커로 시작해서 EOI마커로 끝나게 된다.

Exif Format의 시작인 Exif Header는 4bytes로 '45 78 69 66' 즉, 아스키 코드로 'E x i f'이다.

3.2.2.1 TIFF Header

TIFF Header는 Exif 데이터가 Intel 방식(Big Endian)으로 쓰여졌을 경우에는 '0x4949'로 되어있으며, Motorola 방식(Little Endian)으로 쓰여졌을 경우에는 '0x4d4d'로 되어있다.

바이너리 기입방식

(2bytes)

TAG Mark

(2bytes)

0th IFD 까지의 offset

(4bytes)

II(0x4949)

0x002a

(일반적으로 0x00000008)

MM(0x4d4d)

0x002a

(일반적으로 0x00000008)

그 뒤를 TAG Mark와 0th IFD 까지의 offset이 따르고 있다. 보통 TIFF Header 바로 뒤에 1st IFD가 따르는 구조로 되어 있으므로 0th IFD는 'II' 혹은 'MM'에서 부터 8바이트 뒤에서부터 시작하게 된다. 그리하여 일반적으로 offset은 0x00000008이 기입된다.


  3.2.2.2 IFD(Image File Directory)의 구조


IFD란 이미지에 대한 정보를 기록하는 일종의 틀로서 일반적인 Exif Format에서 IFD 영역은 0th IFD와 Exif IFD 그리고 1th IFD 가지로 구성되어 있다. 0th IFD는 원본 이미지에 대한 간단한 정보가 기재되어 있으며 Exif IFD에는 셔터스피드, 노출시간 등 원본 이미지에 대한 보다 자세한 정보를 담고 있으며 1st IFD에는 썸네일 이미지에 대한 정보를 기록하고 있다.

각각의 IFD는 디렉토리 엔트리(Directory Entry)로 구성되어 있으며 1개의 디렉토리 엔트리는 12bytes를 이용하여 데이터를 저장한다.

0th IFD와 Exif IFD, 그리고 1st IFD 또한 위와 같은 구조로 이루어져 있으며, 각 IFD에 속한 디렉토리 엔트리의 종류는 각각 다르다.

3.2 Exif Format에 삽입될 수 있는 정보

Exif Format에 삽입될 수 있는 정보는 0th IFD의 경우는 32가지, EXIF IFD의 경우 57가지, 1th IFD의 경우는 32가지 등 약 120여 가지의 정보가 삽입될 수 있다. 이 중 디지털 포렌식 적으로 중요한 GPS 정보 및 시각정보가 EXIF Format에 기록되어 있다.

3.2.1 GPS(Global Positioning System) 정보

GPS란 3곳 이상의 인공위성에서 위치정보를 조합하여 특정한 위치를 전자정보로써 표현하는 것을 의미한다. 일반적으로 GPS 정보는 도(°)분(')초(")로 기록하며 우리나라의 경우 1초는 약 37미터 거리에 해당한다.

Exif format에서는 0.001초 차이까지 기록할 수 있도록 되어 있다. 즉, GPS 장비가 오차없이 현재의 위치를 정확히 측정할 수 있다고 가정하면 약 3.7센티미터의 미세한 위치정보의 차이를 탐지해 낼 수 있다. 따라서 GPS 정보만으로도 이미지에 찍힌 피사체가 해당 위치에 존재했음을 증명할 수 있게 된다.

Exif format에서는 30가지의 필드를 통하여 GPS 정보를 나타낸다.

태그 ID

변수명

변수타입

크기

설명

0

GPSVersionID

BYTE

4

GPS version

1

GPSLatitudeRef

ASCII

2

N(북쪽), S(남쪽)

2

GPSLatitude

RATIONAL

3

위도

3

GPSLongitudeRef

ASCII

2

E(동쪽), W(서쪽)

4

GPSLongitude

RATIONAL

3

경도

5

GPSAltitudeRef

BYTE

1

고도와 해수면과의 관계

6

GPSAltitude

RATIONAL

1

고도

7

GPSTimeStamp

RATIONAL

3

UTC(세계협정시)로 변환한 GPS촬영시간(시,분,초)

8

GPSSatellites

ASCII

무관

측정에 사용된 위성

9

GPSStatus

ASCII

2

촬영에 사용된 GPS 수신기의 상태

10

GPSMeasureMode

ASCII

2

GPS 측정 모드

11

GPSDOP

RATIONAL

1

GPS 데이터의 정확도

12

GPSSpeedRef

ASCII

2

GPS 수신기 속도에 관한 부호

13

GPSSpeed

RATIONAL

1

GPS 수신기의 속도

14

GPSTrackRef

ASCII

2

GPS 수신기 방향에 관한 부호

15

GPSTrack

RATIONAL

1

GPS 수신기의 방향

16

GPSImgDirectionRef

ASCII

2

피사체의 방향에 관한 부호

17

GPSImgDirection

RATIONAL

1

피사체의 방향

18

GPSMapDatum

ASCII

무관

지정학적 위치에 관한 정보

19

GPSDestLatitudeRef

ASCII

2

N(북쪽), S(남쪽)

20

GPSDestLatitude

RATIONAL

3

목표 지점의 위도

21

GPSDestLongitudeRef

ASCII

2

E(동쪽), W(서쪽)

22

GPSDestLongitude

RATIONAL

3

목표 지점의 경도

23

GPSDestBearingRef

ASCII

2

목표 지점의 Bearing에 관한 부호

24

GPSDestBearing

RATIONAL

1

목표 지점의 Bearing

25

GPSDestDistanceRef

ASCII

2

목표 지점까지의 거리에 관한 부호

26

GPSDestDistance

RATIONAL

1

목표 지점까지의 거리

27

GPSProcessingMethod

UNDEFINED

무관

거리측정에 사용된 방법

28

GPSAreaInformation

UNDEFINED

무관

GPS Area에 관한 정보

29

GPSDataStamp

ASCII

11

UTC(세계협정시)로 변환한 GPS촬영시간(년,월,일)

30

GPSDifferential

SHORT

1

"GPS Differential Correction"기술의 적용여부

위처럼 30가지의 필드를 이용하여 GPS 정보를 기록하고 있는데, Exif 정보를 보여주는 툴의 대부분은 1, 2, 3, 4, 7, 16, 17번 필드를 추출하여 GPS를 표시한다.


3.2.2 시각 정보

보통 파일의 시각정보는 파일의 내부가 아닌 메타데이터에 기록한다. 그리하여 파일시스템의 수준에서 파일의 시각정보를 조작할 수 있다. 지난 7·7 DDOS 공격에 사용되었던 코드 등 일부 악성코드는 메타데이터를 조작하여 파일의 시각정보를 조작하기도 한다.

태그 ID

변수명

변수타입

크기

설명

132

DateTime

ASCII

20

이미지의 생성시각

9003

DateTimeOriginal

ASCII

20

피사체가 촬영된 시각

9004

DateTimeDigitized

ASCII

20

피사체가 디지털이미지로 처리된 시각

그런데 Exif Format의 경우 위처럼 Exif Format 내부에 시각정보를 기록하고 있어 촬영시부터 법정 제출시까지 파일이 조작되지 않는 이상 저장매체의 환경이나 기타 악성코드의 영향을 받지 않고 촬영시각을 특정할 수 있다.