1. 디지털 데이터의 구성단위
- 디지털 데이터는 0과 1로 이루어진 이지수를 기본적으로 사용한다. 0 또는 1로 이루어지는 하나의 최소단위를 비트(bit)라고 하며, 8bit를 byte라고 한다. 데이터는 물리적 단위와 논리적 구분된다.
물리적 단위는 컴퓨터에 물리적으로 저장되는 단위를 의미하고, 각 물리적 단위, 이름, 크기는 아래와 같다.
단위 | 설명 및 크기 | |
bit | - bit는 binary digit의 약자 - 데이터 구성의 최소 단위 - 0과 1로 이루어짐 |
|
quarter | 1/4 byte | 2 bit |
nibble | 1/2 byte | 4 bit |
byte | 1byte | 8bit |
word | 2byte | 16bit |
double word | 4byte | 32bit |
quad word | 8byte | 64bit |
Kilobyte(KB) = 1,024 byte (2^10byte) Megabyte(MB) = 1,024 KB(2^20byte) Gigabyte(GB) = 1,024 MB(2^30byte) Terabyte(TB) = 1,024 GB(2^40byte) Petabyte(PB) = 1,024 TB(2^50byte) Exabyte(EB) = 1,024 PB(2^60byte) Zettabyte(ZB) = 1,024 EB(2^70byte) Yottabyte(YB) = 1,024 ZB(2^80byte) |
데이터의 논리적 단위는 정보를 저장 및 처리하는 데 사용된다. 이는 디지털 포렌식에서 분석의 대상이 되는 최소 단위 의미
하지만 내부는 물리적 단위로 구성되고, 물리적 단위에 대한 이해가 있어야만 포렌식 분석에서 논리적 단위의 내부를 파악할 수 있을 것이다. 특히 파일은 필드의 집합으로 응용프로그램의 처리 단위이고, 포렌식 분석의 주요 대상이 된다.
단위 | 설명 |
필드(Field) | - 여러 개의 바이트나 워드의 집합 단위 - 파일 구성의 최소 단위로 항목 또는 아이템 |
레코드(Record) | 프로그램 내의 자료 처리 기본 단위(논리적 레코드) |
블록(Block) | 저장매체 I/O 될때의 기본 단위(물리적 레코드) |
파일(File) | 사용자가 동일 대상으로 처리하는 데이터의 묶음으로 응용 프로그램의 처리 단위 |
데이터베이스 (Database) |
레코드의 집합으로 접근, 수정, 관리가 용이하게 잘 조직화된 정보의 묶음 |
2. 리틀엔디안(Little Endian) 과 빅엔디안(Big Endian)
- 디지털 데이터는 기본적으로 이진수를 사용한다. 따라서 우리가 실생활에서 사용하는 10진수와 구분하여 이진수에 대한 이해가 필요하다. 이진수에 대한 기초 내용은 다음 포스팅에 설명하도록 하고, 바이트의 순서를 설명하는 기법으로 빅 엔디안과 리틀 엔디안에 대해서 알아보도록 하겠습니다.
빅 엔디안(Big Endian):
* 바이트 쪽에서 가장 큰 쪽이 먼저 저장되는 방식.
ex) 우리가 수를 사용할 때 높은 자릿수를 먼저 쓰듯이 일상에서 사용하는 방식으로 수를 표기하는 기법
* IBM 370 컴퓨터와 대부분의 RISC(Reduced Instruction Set Computer) 기반 및 Motorola, Microprocessor 이방식 사용
리틀 엔디안(Little Endian):
* 바이트 열에서 가장 적은 값이 먼저 저장되는 방식을 의미
* 컴퓨터의 효율성을 위해 고안된 방식.
*수의 값이 증가되더라도 수의 왼편에 자릿수를 추가하여 수를 뒤로 미룰 필요가 없기 때문에 컴퓨터의 연산들이 단순해지고 속도가 빠르다.
* intel 프로세서나 DEC의 알파 프로세서에서 이 방식을 사용하고 있다.
3. 문자
- 컴퓨터는 모든 데이터를 이진수로 표현하지만 데이터의 종류에는 텍스트 데이터도 존재한다. 이진수 데이터를 텍스트 데이터로 받아들이기 위해서는 일정한 규칙이 필요. 이러한 규칙으로 아스키(ASCII), 엡시딕(EBCDIC), 유니코드(Unicode)가 대표적이다.
아스키코드(ASCII, American Standard Code for Information Interchange):
* 미국 표준 협회(ANSI)가 제정한 자료 정리 및 통신 시스템 상호간의 정보 교환용 표준코드로서 상술된 세 가지지의 방 식 중 가장 오래된 방식의 표준코드.
* 총 1byte의 크기를 차지하며, 최상위 1bit를 제외한 7bit를 사용.
* 영어 대문자와 숫자, 제어부화와 그래픽 기호 표현 가능
엡시딕(EBCDIC, Extended Binary Coded Decimal Interchange Code):
* IBM이 대형 컴퓨터에 사용하기 위해 개발한 바이너리 코드
* Fortran, PL/1 등의 일부 프로그래밍 언어에서 사용
* 아스키 코드와 달리 최상위 비트도 사용하여 8bit 문자를 표현하지만, 문자들의 일정한 체계가 없어 많이 사용하지는 않는다.
유니코드(Unicode):
* 현재 전 세계의 모든 문자를 컴퓨터에서 가장 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준을 의미
* 한글의 경우 유니코드 2.0(11,172자)가 모두 표현이 가능
* 기본적으로 31bit 문자 셋이지만, 특수한 문자를 제외한 전 세계 모든 문자를 하위 16bit의 영역 안에서 정의
* 첫 65,536개의 코드(0x0000~0xffff)를 기본 다국어 평면(BMP, Basic Multilingual Plan)이라고 한다
* 유니코드 종류: UCS-2, UCS-4, UTF-8, UTF-16, UTF-32 등이 있다. 특히 UTF를 많이 사용함.
* UTF-8
- 코드 단위 8bit
- 인터넷에 대부분에서 기본적으로 사용되는 인코딩 방식
- 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나
- 유니코드 한 문자를 나타내기 위해 1byte~4byte까지 사용한다. 사실은 6byte까지 사용하지만 일반적인 문자는 3byte 내로 처리되며 4byte 영역에는 이모트콘 같은 문자가 존재한다. 사실상 4byte 이상의 문자를 사용하는 경우가 없다 보니 1~4byte를 사용한다고 말한다.
- 영문 byte 수 : 1byte
- 한글 byte 수 : 3byte
최근 UTF-8이 많이 사용됨에 따라 Microsoft에서도 UTF-8을 지원하게 되었다.
사용하는 비트 수에 따른 비트의 구성은 다음과 같다. 숫자로 표현된 영역은 고정된 영역이며, 그외"x"로 표현된 영역에 텍스트에 대응하는 데이터가 들어간다.
Bit | Last code point | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 |
7 | U+007F | 0xxxxxxx | |||||
11 | U+07FF | 110xxxxx | 10xxxxxx | ||||
16 | U+FFFF | 1110xxxx | 10xxxxxx | 10xxxxxx | |||
21 | U+1FFFFF | 11110xxx | 10xxxxxx | 10xxxxxx | 10xxxxxx | ||
26 | U+3FFFFFF | 111110xx | 10xxxxxx | 10xxxxxx | 10xxxxxx | 10xxxxxx | |
31 | U+7FFFFFFF | 1111110x | 10xxxxxx | 10xxxxxx | 10xxxxxx | 10xxxxxx | 10xxxxxx |
'Digital Forensic 이론' 카테고리의 다른 글
HPA & DCO (0) | 2023.03.29 |
---|---|
디지털 데이터의 표현(3) (0) | 2023.03.20 |
디지털 데이터의 표현(2) (0) | 2023.03.18 |