디지털 데이터
: '0'과 '1'의 비트열
정해진 규약이 달라지면 의미도 달라진다
디지털 데이터의 의미를 정확히 해석하기 위해서는 데이터 표현 방식에 대해 알고 있어야 한다
[1절] 데이터 구성 단위
효율적인 처리를 위해서 여러 가지 형태로 데이터의 구성 단위를 정의한다
① 물리적 단위
실제 물리적 당치(메모리, 저장 장치 등)에서 사용되는 단위
데이터의 저장 및 처리를 위해 사용
비트가 최소 단위
비트(bit) : 데이터 구성의 최소 단위/ 0,1로 이루어짐
쿼터(quarter) = 1/4byte = 2bit
니블(nibble) = 1/2byte = 4bit
바이트(byte) = 1byte = 8bit
워드(word) = 4byte = 32bit
더블 워드(double word) = 8byte = 64bit
② 논리적 단위
정보의 저장 및 처리에 사용
디지털 포렌식 관점에서 분석의 대상이 되는 최소 단위
필드(field) : 여러 개의 바이트나 워드가 모여 이루어짐/ 논리적으로 처리하는 최소 단위
레코드(record) : 프로그램 내의 자료 처리 기본 단위(논리적 레코드)
블록(block) : 저장 매체에 입출력될 때의 기본 단위(물리적 레코드)
파일(file) : 사용자가 동일 대상으로 처리하는 데이터의 묶음으로 응용 프로그램의 처리 단위
데이터베이스(database) : 레코드의 집합으로 접근, 수정, 관리가 용이하게 잘 조직화된 정보의 묶음
[2절] 수 체계
디지털 데이터는 기본적으로 이진법 사용
㉮ 빅 엔디언(Big-Endian)과 리틀 엔디언(Little-Endian)
바이트의 순서를 설명하는 용어
① 빅 엔디언
큰 자리수의 바이트가 먼저 저장되는 것
일상 생활의 숫자 배열과 동일 → 직관적으로 이해하기 편함
대부분 네트워크 프로토콜에서 사용
② 리틀 엔디언
자리수가 작은 바이트부터 먼저 저장되는 것
대부분의 데스크톱 컴퓨터에서 사용
㉯ 고정 소수점(Fixed Point)
정수 데이터의 표현과 연산에 사용하는 방식
첫 번째 비트 : 부호비트/ 양수는 0, 음수는 1로 표시
나머지 비트 : 정수부 저장
가상 소수점은 맨 오른쪽에 있는 것으로 가정
※ 고정 소수점 연산에서 음수 표현 방법
① 부호화 절대치 : 양수 표현에 대하여 부호 비트만 1로 바꾸는 방법
범위 : -(2^(n-1)-1)~(2^(n-1)-1)
② 1의 보수 : 양수 표현에 대하여 1의 보수를 계산하는 방법
범위 : -(2^(n-1)-1)~(2^(n-1)-1)
③ 2의 보수 : 양수 표현에 대하여 2의 보수를 계산하는 방법
연산이 자연스럽기 때문에 위 2가지 방법보다 많이 쓰인다
범위 : -2^(n-1)~(2^(n-1)-1)
㉰ 부동 소수점(Floating Point)
실수 데이터의 표현과 연산에 사용하는 방식
실수를 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것
유효 숫자를 나타내는 가수(mantissa), 소수점의 위치를 알 수 있는 지수(exponent)로 나누어 표현
[3절] 문자
문자 코드 : 디지털 기기에서 해당 문자에 특정 값을 대응시켜 사용
문자 코드는 표준별로 나타내는 문자가 다를 수 있기 때문에 문자 코드를 정확히 파악해야 함
① 아스키(ASCII) 코드
7비트로 구성된 128종의 기호를 정한 것
제어 부호 33자, 그래픽 기호 33자, 숫자 10자, 알파벳 대소문자 52자로 구성
1byte로 하나의 문자를 표현
영문을 표기하는 대부분의 시스템, 데이터 통신에서 사용
독일어나 프랑스어를 표현 불가 → 추가로 8비트를 모두 사용하여 256종의 기호를 정한 '확장 아스키 코드' 존재
② 엡시딕(EBCDIC) 코드
IBM이 대형 운영 체계에서 사용하기 위해 개발한 바이너리 코드
운영체제 OS/390에서 사용되는 텍스트 파일용 코드
8비트로 구성된 256개의 문자로 정의
③ 한글 조합형, 완성형, 확장 완성형 코드
조합형 코드 : 2바이트 완성형 코드가 발표되기 전까지 사용되었던 코드
완성형 코드 : 2byte 완성형 코드를 의미/ EUC-KR로 표준화되어 사용됨
확장 완성형 코드 : 마이크로소프트에서 완성형 코드에 글자를 추가한 것
④ 유니코드(Unicode)
전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준
USC-2, USC-4 : 유니코드를 메모리나 파일에 기록하는 방식
UTF-8 : 유니코드를 파일에 저장하는 방식
UTF-16, UTF-32 : USC-2문자열 안에 유니코드의 21비트 영역을 표현하는 방식
[4절] 시간 정보 표현 방식
바이너리 값으로 저장된 시간 데이터를 가시적인 형태로 변환하는 방법을 숙지해야 한다
시간은 UTC, GMT, Local Time과 같은 형태로 표현한다
① MS-DOS의 시간 저장 형식
컴퓨터의 현재 날짜와 시간을 저장
날짜(2byte) = 연도(7bit)+월(4bit)+일(5bit) [연도+1980년]
시간(2byte) = 시(5bit)+분(6bit)+초(5bit) [초*2]
② 유닉스의 시간 저장 형식
time_t : 유닉스 운영체제에서 시간을 저장하는 표준 형식
time_t에 부호 있는 4byte를 사용하는 경우 2038년부터 시간을 제대로 표현하지 못한다
이를 해결하기 위해 64비트 아키텍처를 지원하는 운영체제는
time64_t로 부호 없는 8byte를 사용하도록 time_t의 정의를 변경하고 있다
③ FILETIME
8byte의 구조체를 가지며, 날짜와 시간을 각각 4byte에 저장
④ MAC OS의 시간 저장 형식
HFS/HFS+ Data를 사용하며, 부호없는 4byte로 저장
[5절] 데이터 인코딩(Encoding)
아스키 코드는 한 바이트 내에서 최상위 비트가 '0'이다
텍스트 데이터 : 아스키 코드로 이루어진 데이터
바이너리 데이터 : 최상위 비트가 '1'인 바이트가 포함된 데이터
바이너리 데이터를 텍스트 데이터 변환하는 방법 → 인코딩 알고리즘
① uuencoding
유닉스 시스템에서 바이너리 데이터를 전송할 목적으로 개발된 인코딩 알고리즘
주로 이메일 첨부 파일을 인코딩하여 전송할 때,
터미널 서비스인 telnet을 통해 파일을 전송할 때 사용된다
3byte의 바이너리 데이터를 4byte의 텍스트 데이터로 변환
② Base 64
모든 데이터를 알파벳 대소문자와 숫자에 '+', '/' 를 추가한 기호 64개로 변환하는 방식
아스키 코드를 사용하지 않는 시스템을 통하여 데이터를 전송해도 데이터 훼손이 없다
3byte를 4byte로 변환
③ Base 85 (=ASCII85)
알파벳 대소문자와 숫자에 23개의 특수문자를 추가한 기호 85개로 변환하는 방식
4byte를 5byte로 변환
④ URL Encoding (=Percent Encoding)
URL에 문자를 표현하는 문자 인코딩 방법
한글, 특수문자와 같은 문자는 '%'와 16진수로 치환
URI에는 예약 문자(URL Encoding O)와 비예약 문자(URL Encoding X)가 있다.
[6절] 파일(Files)
응용 프로그램의 처리 단위
㉮ 확장자(Extensions)와 시그니처(Signatures)
파일 시스템 내에 존재하는 파일은 일반적으로 이름과 확장자를 부여 받는다
확장자 : 해당 파일의 유형
그러나 확장자는 쉽게 변경 가능하다 → 확장자만으로 파일의 특성을 파악 X
시그니처 : 파일 내부에 고정되어 있는 특정 데이터
확장자뿐만 아니라 시그니처를 사용하여 파일의 유형을 판별 O
㉯ 헥스 에디터(Hex-editor)
파일 내부의 실제 데이터를 16진수 형태로 보여주는 도구
파일 내부에는 텍스트가 아닌 데이터가 다수 존재 → 이러한 파일을 분석할 때 사용
㉰ 파일의 내부 구조
헤더 : 시그니처, 전체 파일의 크기, 메타데이터의 시작 위치 등 부가 정보 저장되는 영역
메타데이터 : 사용자가 입력한 데이터를 설명, 관리하기 위한 데이터가 저장되는 영역
(ZIP 아카이브는 파일의 맨 뒷부분에 메타데이터를 저장한다)
데이터 : 파일의 내용을 구성하는 실제 컨텐츠가 저장되는 영역
2020.09.07
'디지털 포렌식 개론 공부자료' 카테고리의 다른 글
제 1장 디지털 포렌식 개관 (0) | 2020.11.07 |
---|