티스토리 뷰

digital forensics

 

더보기

이번 글은 디지털 포렌식을 학습할 때 알고 있어야할 최소한의 개념들을 설명한다.

 

1. 디지털과 아날로그란

  • 디지털의 어원은 손가락을 가리키는 라틴어 digitus인 것으로 알려져 있다.
  • 숫자를 셀 때 사용되는 손가락을 일컫는 말이다.
  • 디지털 데이터는 정보를 연속적 실수가 아닌 특정한 최소 단위를 갖는 이산적인 수치를 이용한다.
  • 이산적 수치로는 2진법, 8진법, 10진법, 16진법 등이 있다.
  • 디지털 데이터와 대조되는 개념으로 아날로그 데이터가 있다.
  • 아날로그는 비슷함을 의미하는 라틴어 analogia에서 유래됐다.
  • 원래의 데이터와 유사한 형태로 정보를 기록하며 물리량이 연속적으로 변화하는 특징이 있다.

출처:  [기고] 디지털과 친숙한 밀레니얼 세대가 아날로그를 찾는 이유 – 스타트업 스토리 플랫폼 '플래텀(Platum)'

 

 

  • 아날로그는 연속적으로 변화하는 물리량을 표현하는 데 사용된다.
  • 온도, 습도, 소리, 빛과 같이 현실에서 물리적인 양은 연속적으로 변하는 것이 대부분 아날로그 방식이 적합하다.
  • 반면 디지털 데이터는 이산적으로 정보를 나타내브로 변화하는 물리량을 근사적으로 표현한다.
  • 위 그림은 아날로그 데이터와 디지털 데이터의 관계를 나타내느 것으로 현대 사회에서는 대부분 아날로그 방식보다 근사적으로 기록하는 디지털 방식을 사용하고 있다.
  • 그 이융는 디지털 시스템은 아날로그 시스템에 비해 설계가 용이하고 정보를 저장하거나 가공하기 쉽고 전송 과정에서 손실이 거의 없으며 시스템 구성을 소형화 할 수 있는 등의 장점이 있다.

2. 디지털 데이터 단위

(1) 물리적 단위

  • 물리적 단위는 크게 비트(bit), 바이트(byte), 키로바이트(kibibyte,kib), 메비바이트(mebibyte, mib), 기비바이트(gibibyte, gib), 테비바이트(tebibyte, tib) 등 있다.
  • 비트는 데이터 구성의 최소 단위이며, 컴퓨팅과 디지털 통신에서 가장 기본적인 정보의 단위를 의미
  • 비트는 2진수 1개를 말하며 0 과 1의 상태를 가질 수 있다.
  • 컴퓨터는 일반적으로 이러한 비트 8개를 하나의 그룹으로 사용하여 이를  바이트라고 한다.
  • 1바이트는 256개의 정보를 나타낼 수 있으며 이는 하나의 바이트가 8개의 비트로 이루어져 있기 때문이다.
  • 바이트보다 큰 단위로 킬로바이트와 키비바이트가 있는데 각 10진수 체계와 2진수 체계를 기반으로 한다.

(2) 논리적 단위

ssd 뒷면에 표시된 용량 관련 안내문

  • 논리적인 단위로는 필드(field), 레코드(record), 블록(block), 파일(file), 데이터베이스(database)가 있다.
  • 가장 흔하게 접하는 논리적 단위는 파일이다.
  • 필드는 여러 개의 바이트가 모여 이루어진 것으로 의미있는 정보를 표현하는 최소 단위이다.
  • 레코드는 하나 이상의 관련된 필드가 모인 컴퓨터 내부의 자료 처리 단위이다.
  • 블록은 하나 이상의 레코드가 모여 구성되고 각종 저장 매체에 데이터가 입출력될 때의 기본단위이다.
  • 파일은 응용 프로그램의 처리 단위로 레코드나 블록 등의 묶음에 해당한다.
  • 데이터베이스는 논리적으로 연관된 레코드나 파일의 모임을 의미

3. 주소 체계

비트 단위 주소 체계

  • 저장 매체들은 디지털 데이터를 효율적으로 저장하고 읽기 위해 주소라는 개념을 활용
  • 비트 단위로 공간을 구별한다고 가정한다면 하나의 공간에는 0 또는 1을 저장할 수 있게 된다.
  • 도식적으로 위 그림과 같이 표현 할  수 있다.
  • 주의할 점은 주소가 1번부터 시작하지 않고 0번부터 시작한다는 점이다.
  • 데이터를 읽거나 저장할 때에는 주소와 크기가 모두 필요하다.
  • 이 때 크기의 단위도 주소와 동일한 단위를 사용4
  • 예시로 위 그림과 같이 데이터가 저장되어 있는 저장매체에서 '0번지에서 3만큼의 데이터를 읽어라' 라고 명령하면 '011'을 얻을 수 있다.

바이트 단위 주소 체계

  • 주소 체계가 달라진다면 데이터를 저장하고 읽어오는 단위도 마찬가지로 변경된다.
  • 위 사진과 같이 바이트 단위로 주소가 부여되는 경우, 데이터를 읽거나 쓸 때 바이트 단위로 처리도니다.
  • 앞선 예시와 동일하게 '0번지에서 3만큼의 데이터를 읽어라'라고 명령한다면' 앞 3개를 읽는것이 아닌
    '11001011 00011010 11001100'을 출력한다.
  • 이와 같은 주소체계에서는 최소 단위가 바이트이므로 '0번지에서 3비트 만큼의 데이터를 읽어라' 와 같은 명령은 원천적으로 불가능 하다.

4. 디지털 데이터 저장 순서

  • 디지털 데이터는 바이트가 어떤 순서로 저장되는 지에 따라 빅 엔디언과 리틀 엔디언으로 나뉜다.
  • 엔디언이란 컴퓨터의 메모리와 같은 1차원 공간에 여러 개의 바이트를 컴퓨터가 정렬하는 방법을 나타내는 것으로 바이트 저장 순서라고 불린다.

빅 엔디언(big-endian)의 데이터 저장 방식

  • 빅 엔디언은 바이트 열의 최상위 바이트부터 자장하는 방식
  • 평소에 우리가 숫자를 사용하는 방식과 같아 사람이 이해하기 쉽다는 장점있고 네트워크 분야에서 많이 쓰여 네트워크 바이트 순서라고도 불린다.

리틀 엔디언(little-endian)의 데이터 저장 방식

  • 리틀 엔디언은 반대로 최하위 바이트부터 저장하는 방법으로 프로세서 아키텍쳐에서 많이 쓰이며 특히 인텔 프로세서에서 채택하고 있는 데이터 저장 방식이다.

5. 디지털 데이터 표현

(1)수 체계

  • 디지털 수 체계란 컴퓨터 또는 디지털 시스템에서 수를 저장하거나 표현하기 위한 방법 및 체계이다.
  • 비트는 0과 1을 이용하여 수를 표현할 수 있어 2진법에 해당한다.
  • 우리가 실생활에 사용하는 수 체계는 10진법이므로 디지털 데이터가 기본적으로 사용하는 2진법 체계와 다르다.

 

  • 2진법에서의 최소 단위는 0고1로만 나타낼 수 있어 간단하나, 수를 표현함에 있어 많은 자릿수가 필요하고 가독성이 떨어진다는 단점이 있다.
  • 그렇기에 2의 세제곱인 8진수나 네제곱인 16진수로 변환하곤 한다.
  • 8진법은 0에서 7까지의 숫자로 수를 표현한느 방법으로 2진수 세자리씩 묶어 표현하룻 있다. 
  • 16진법은 0부터 9까지의 숫자와 대문자 a부터 대문자 f(현재 키보드 오류로 대문자가 안됨...)까지의 문자로 수를 표현 2진수 네자리씩 묶어 표현 할 수 있다.

진법별 표기 방식

  • 위 사진은 진법별 표기 방식을 나타낸 것으로 16진수의 경우 10진수와 구분하기 위해 '0x'를 16진수 앞에 붙여 ㅏㅅ용한다. 혹은 숫자 뒤에 h를 붙이기도 하나 일반적으로 '0x' 표기를 활용한다.

(2) 시간

  • 시간 정보를 디지털 형태로 저장할 때 우리가 사용하는 날짜 표기 방식은 드물다.
  • 주로 특정 시점을 기준으로 얼마만큼의 시간이 흘렀는지를 디지털 데이터로 저장해 놓고 컴퓨터가 이를 계산하여 출력하는 형식을 사용한다.
  • 그 이유는 년월일시분초를 메모리에 저장해놓는 것이 가독성이 있고 편리하지만 불필요한 메모리 사용에 해당된다.

1) 시간 기준

  • 시간 기준되는 것으로는 utc와 gmt가 있다.
  • utc는 협정 세계시로 coordinated universal time의 머리 글자로 조합한 것이다.
  • 1972년 1월1일부터 국제 표준시로 사용되고 있다.
  • gmt는 greenwich mean time의 줄임말로 그리니치 평균시라 부른다.
  • utc와 함께 국제 표준시에 해당하고 1970년1월1일을 기점으로 그리니치 천무대에서 관측한 시간이 기준이 된다.
  • 다만 일반적으로 시간대를 표현할 때에는 utc를 사용한다.

출처 :  World Time Zone Wall Map by GeoNova - MapSales

2) ms-dos date/time

  • 과거 microsoft가 개발한 초창기 운영체제인 ms-dos에서 사용했던 시간 표현 방식으로 현대에도 일부 usb나 cctv, 블랙박스에서 사용하고 있다.
  • ms-dos date/time 방식에서는 1980년 1월1일 0시 0분 0초를 기준으로 지나간 날짜와 시간을 저장
  • 날짜와 시간 각각 2바이트씩 활용하므로 총 4바이트를 사용한다.

3) windows filetime

  • microsoft는 2초 단위로 시간을 표현하고 날짜 표현 범위가 작다는 dos date/time 방식의 단점을 극복하기 위해 filetime 방식을 고안하였다.
  • dos date/time에서는 총 4바이트를 활용하는 반면 filetime에서는 8바이트를 사용한다.

4) unix time

  • unix time은 유닉스 계열의 운영체제에서 사용하는 시간 표시 방식이다.
  • 1970년 1월 1일 0시 0분 0초로부터 현재까지의 시간을 초(second)로 계산한다.
  • 초는 시스템에서 정수 형태로 저장한다.

5) webkit/chrome time

  • webkit은 웹 브라우저를 만드는 데 기반을 제공하는 오픈소스 엔진인데 여기서 사용하는 시간 표현 방식을 webkit/chrome time이라고 한다. safari나 chrome과 같은 웹 브라우저들이 사용하고 있다. 1601년 1월 1일 0시 0분 0초를 기준으로 마이크로초 단위로 시간을 기록한다.


(3) 문자 인코딩

  • 컴퓨터는 사용자가 입력한 문자나 기호들을 컴퓨터가 이해할 수 있도록 일정한 규칙에 따라 디지털 데이터로 변한하여 저장하는데, 이를 문자열 인코딩이라고 한다.
  • 인코딩 된 문자열은 다시 사람이 볼 수 있게 일정한 규칙에 따라 해석하는 과정을 디코딩이라고 부른다.
  • 여기서 일정한 규칙은 문자와 숫자가 서로 매핑되어있는 표로 나타날 수 있는데 이를 '문자셋'이라 부른다.

1) ascii

  • 영문 알파벳을 사용하는 대표적인 문자 인코딩이다.
  • 7비트로 하나의 문자를 표현하여 33개의 출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능한 문자들이 포함된다.
  • 그러나 영어에만 한정된 인코딩 방식이기에 한국어, 일본어, 중국어와 같은 문자들은 표현할 수 없는 단점이 있다.

2) ansi

  • ansi 본래 미국 국립표준협회의 약자로 미국의 산업 표준을 제정하는 단체를 의미한다.
  • 아스키만으로는 영어 이외의 다른 언어를 표현하기가 어려워 7비트에서 8비트로 확장한 아스키 코드를 개발 이를 ansi라 부른다.
  • ansi는 8비트를 사용하므로 총 256개의 숫자, 문자 등을 지정할 수 있다. 0부터 127까지는 아스키와 동일하며 나머지를 영어 이외의 언어를 나타내기 위해 사용한다.
  • 128개만으로는 다른 언어를 모두 표현 할 수 없으므로 언어별로 코드 페이지를 사용한다.

3) 유니코드

  • 유니코드란 언어 별로 독립적인 코드 페이지를 사용하는 ansi의 한계저을 극복하기 위해 제정된 국제 표준 문자표
  • 유니코드는 최대 21비트에 전세계의 모든 문자를 포함한다. 0x0000부터 0x(대문자)ffff까지 65,536개의 문자를 배정해놓은 17개의 세트를 사용한다. 이러한 세트를 평면이라고 한다.
  • 유니코드는 방대한 문자들을 포함하고 있고 평면을 표시하는 추가 바이트가 필요해 용량이 크다는 단점이 있다.
  • 이러한 문제를 해결하기 위해 ucs-2,ucs-4, utf-16, utf-32등 다양한 인코딩 방식이 제시되었다.

(4) 데이터 인코딩

  • 데이터 인코딩은 바이너리, 숫자, 문자, 시간 등 데이터를 정해진 규칙에 따라 특수한 형태의 데이터로 변환하는 것이다.

1) base64

  • 바이너리 데이터를 아스키 영역의 문자로 구성된 텍스트로 바꾸는 인코딩 방식
  • 인코딩 문자열은 알파벳 대문자, 소문자, 숫자, 특수문자로 구성되어 있으며 옵션으로 패딩 기호 '='을 사용
  • 패딩이란 일정한 크기를 맞추기 위해 빈 부분을 채워주는 것을 의미
  • base64 인코딩은 먼저 입력 데이터를 24비트만큼 읽은 뒤 6비트 단위로 잘라 base64 테이블의 문자로 변환하는 과정을 거친다. 디코딩은 이 과정을 역으로 거친다.

base64 색인표

2)퍼센트 인코딩

  • url에 문자를 표현하는 문자 인코딩 방식
  • url 인코딩이라고도 불린다.
  • url에 사용할 수 없는 문자 혹은 url로 사용할 수 있지만 의미가 왜곡될 수 있는 문자들을 '%xx'의 형태로 변환하는 인코딩 방식

(5) 압축

  • 압축이란 데이터를 더 작은 저장 공간에 효율적으로 기록하기 위한 기술
  • 복원 시 원본 데이터와 복원 데이터의 품질 차이에 따라 '무손실 압축'과 '손실 압축'으로 나뉜다.

1) 무손실 압축

  • 무손실 압축은 압축된 상태에서도 원본 데이터와 동일한 형태를 유지하는 방식을 의미한다.
  • 손실 없이 중복을 없애는 방식으로 활용
  • 우리가 사용하는 파일 확장자가 zip,7z,png,bmp,wav,lflac등에 해당하는 것들은 무손실 압축 방식에 의해 생성된 파일

2) 손실 압축

  • 손실 압축은 인간이 변화를 지각하기 어려운 수준에서 불필요하거나 중복되는 데이터를 삭제하여 파일의 크기를 줄이는 압축 방식
  • 손실 압축이 된 데이터는 원래의 데이터로 완전 복원하는 것이 불가능하다.
  • 이 기법은 이미지나오디오, 비디오에 주로 적용하고 온라인 상에서 공유를 위해 용량을 줄여야 하거나 굳이 초고화질의 영상이나 오디오가 필요하지 않는 기기에서 활용
  • jpeg, mp3, mp4등의 확장자를 사용하는 파일들은 손실 압축 방식

'Digital Forensics > 디지털 포렌식 개론' 카테고리의 다른 글

Digital Forensics Framework  (0) 2024.05.11
Digital Evidence  (1) 2024.03.02
네트워크와 암호  (0) 2024.02.21
컴퓨터 구조  (3) 2024.02.19
디지털 포렌식이란  (2) 2024.02.11