2016. 1. 24. 23:38ㆍ디지털포렌식/File System 이해
요즘 세상에는 많고 많은 저장장치들이 사용되고 있다. PC에서 사용되는 하드디스크는 물론이고 휴대폰 안에도 분명 파일시스템이 존재한다. USB 메모리 역시 PC 호환의 파일시스템이 있기 때문에 흔히 사용하는 윈도우에서 별도의 설정 없이 바로 읽어 들일 수 있다.
대부분의 전자체품들에도 각각의 설정을 저장하는 데이터가 있을 것이다. 설령 그것이 PC에서 사용하는 파일과 다른 것이라도 그것을 만들어 사용하는 입장에서 정해진 규격에 맞게 데이터를 읽고 쓴다면 그것 또한 파일시스템이라고 할 수 있다. 그렇게 생각하면 주변에 파일시스템을 사용하는 제품들은 쉽게 찾아볼 수 있을 것이다.
이렇게 흔하고 흔한 파일시스템이지만, 그 제품의 동작 방식에는 많은 관심을 보여도, 그 제품이 동작하기 위해 데이터가 어떤 구조로 저장되고 불려지는지에 대해 관심 갖는 이는 많지 않다. 물론 흔하고 흔한 전자제품들이 모두 문제없이 동작하는 것을 보면 어렵지 않게 해결한 듯 보여도, 실제로 제품의 규모가 점점 커지면서 파일시스템에 쓰여지는 연구 개발비는 실로 엄청나다.
파일시스템의 정의
PC 사용자 중에 윈도우 OS를 사용해 보지 않은 사람은 없을 것이다. 그런데 혹시 윈도우 NT 및 2000 이상의 버전을 설치해본 경험이 있다면 다음과 고민을 해보지 않았을까?
FAT32 와 NTFS 중 어떤것을 선택해야 하는가
파일시스템이란 단어가 낯설었던 시절에 위와 같은 선택의 상황에 있었던 사용자라면 대부분 사람들이 '그나마 한번 들어본 듯한 FAT32 로 설치하자' 라고 선택했을 지도 모른다.
도대체 저게 뭔데 선택을 꼭 해야 하는가?
PC에서 데이터 파일이란 분명 사용자가 저장한 자료들을 일컫는 말이다. 그것이 메모장에서 글자를 저장한 것이든, 게임을 하면서 세이브 파일을 저장한 것이든 PC 내의 어딘가에 저장이 되고 그것을 다시 불러올 수 있다. 예로 'C:드라이브' 의 '내문서' 폴더에 'a.txt' 라는 파일로 저장했다고 생각해보자.
그렇다면 파일은 하드디스크의 어디에 저장되는가?
사용자는 하드디스크의 물리적 위치를 지정해서 파일을 저장하지는 않는다. 그것을 자동으로 계산하고 기록해주는 것이 윈도우와 같은 운영체제라고 생각할 수도 있지만, 그보다 더 아래에는 파일시스템이란 것이 있다. 윈도우 설치 시 FAT32 와 NTFS 를 선택하는 시점이 본격적으로 설치 파일을 복사하기 전인 포맷을 결정하는 시점인 이유가 바로 OS보다 파일시스템이 먼저이기 때문이다.
OS의 '설치 파일'도 '파일'이니 파일을 관리하는 파일시스템이 먼저 설치되는 것은 당연한 절차다.
그렇다면 파일이란 어떻게 보면 단순히 하드디스크와 같은 저장장치에 저장한 데이터와 이를 가리키는 이름의 추상적인 개념이라고 생각할 수 있다. 그리고 매우 큰 저장장치에서 특정 파일이라고 불리는 데이터를 기록하고 읽어올 수 있는 것은 파일시스템이 있기 때문이다.
파일시스템은 저장장치 내에서 데이터를 읽고 쓰기 위해 미리 정해진 약속이다 |
여기에서 가장 중요한 것은 미리 정해진 약속, 규약이다. 이 규약대로 데이터를 저장하고 불러오면 그것이 바로 파일시스템이다.
간단한 예로 현재 RPG 게임을 만들고 있다고 가정해보자. 그런데 다음에 게임을 계속 진행하려면 현재까지의 과정을 저장하는 세이브 파일 기능이 필요하다. 세이브 파일에는 사용하는 캐릭터의 종류, 레벨, HP, MP, 현재위치, 돈 등의 정보들이 자세하게 기록되어 있어야 불러오기를 할 때 이전에 진행했던 위치부터 계속 게임을 즐길 수 있다.
위 그림은 파일에 데이터를 저장하기 위한 방법의 예이다. 총 6종류의 데이터를 12Byte의 공간에 위치와 크기에 대한 약속을 정해서 저장한 것이다. 만약 저장해야 할 데이터의 종류가 늘어난다면 같은 파일뒤에 위의 규약대로 이어서 저장을 하거나 아니면 다른 파일에 똑같은 방식으로 저장을 하면 된다.
그리고 읽어올 때도 앞서 지정한 위치와 크기대로 읽어 들이면 된다.
파일시스템 역시 위와 같이 저장할 데이터를 결정하고, 그 크기와 위치 등을 미리 약속한 뒤 운영체제 등에서 그대로 사용하면 된다. 실제로 사용되는 파일시스템의 데이터 구조는 훨씬 방대하고, 그 규약들이 복잡하지만 결국 '미리 약속한 방법으로 젖아하고 읽어 들이는 것'이다. 그러니 앞으로 우리가 분석할 파일시스템들을 접할 때 그 분량과 방식에 당황하지 말고 '결국 남이 만들어놓은 약속대로 읽고 쓰면 된다' 라고 생각하고 접근하면 된다.
파일시스템 선택의 필요성
수많은 파일시스템 중에서 내가 사용하기 위한 용도에 걸맞은 파일시스템의 선택에 대해 알아보자. 파일시스템들의 특징이 서로 다른 것처럼 각각의 용도에 따라 그 선택이 달라지는 것이 좋다.
제품과 PC의 호환
USB 메모리가 있다고 가정하자. 그런데 이 USB 메모리가 여러 가지 이유로 윈도우 OS와 호환되지 않는 파일시스템을 사용하고 있어서 USB 메모리를 꽂으면 바로 작동하는 것이 아니라 별도의 드라이버를 설치해야 한다고 하면 이러한 USB 메모리가 널리 사용될 수 있을까? 대부분의 경우 PC 등의 USB 호스트에 연결하기만 하면 바로 새로운 드라이브로 인식을 해서 편리하게 사용할 수 있는데 이 제품만 안된다면 바로 시장에서 사라지게 될 것이다. 따라서 어떤 제품이 사용자 PC에서 바로 인식이 가능해야 한다면 제품 제작 시 PC와 호환이 가능한 파일시스템을 사용하는 것이 바람직하다.
보안
자신의 USB 메모리에 누구도 열람해서는 안 되는 정보들이 담겨있다고 가정해보자.
이런 상황에서 만약 메모리를 잃어버리거나 도난당하면 치명적인 결과를 가져올수 있기 때문에 가급적 PC 호환의 파일시스템은 사용하지 않는 것이 좋다. 이 경우 별도의 파일시스템을 만들고 그와 연동할 수 있는 디바이스 드라이버를 추가로 제작하여 특정 PC에서만 USB 메모리를 열람 가능하도록 하는 것이 좋다. 따라서 제품 내 저장장치에 들어가야 할 데이터가 결코 공개되어서는 안 되는 것이라면 독자적인 파일시스템을 제작하는 것이 현명한 선택이다.
성능
MP3 플레이어가 있다고 가정해보자. 그런데 이상하게도 이 플레이어는 PC호환 파일시스템과 독자적인 파일시스템 모드 두 가지를 제공하고 있다. 필요에 따라서 펌웨어 업그레이드를 통해 파일시스템을 바꿀 수 있는 것이다. 양쪽 다 제공하는 것으로 보아서는 보안에도 문제가 없는 듯하고, 기술력에도 문제가 없는 것 같다. 이런 상황에서는 해당 제품의 좋은 호환성을 큰 장점으로 가질 수 있지만, 역시 최대의 속도를 낼 수 있는 것은 제품에 최적화된 파일시스템일 것이다.
그러므로 개발하고자 하는 제품의 스펙 및 특징에 따라 파일시스템의 성능이 중요한 요소로 작용한다면 독자적인 파일시스템을 고려해볼 필요가 있다.
애플리케이션 레벨의 속성
파일을 사용함에 있어서 애플리케이션에서 사용할 정보를 파일시스템 쪽에 저장할 이유가 있을까 라고 반문할지도 모르지만 다음과 같은 상황을 생각해보자.
사용자가 여러명인 PC가 있다. 이 PC를 관리하기 위해 시스템 관리자는 특정 드라이브나 폴더 등에 대해 자신과 사용자들의 접근 권한을 다르게 적용했다. 이러한 권한 정보 등은 파일시스템에 저장할 경우에는 간단히 생각하면 소스에 분기문(if와 같은) 하나를 추가하면 되겠지만, 다른 공간을 할당할 경우 파일 접근 시 권한 확인을 위해 추가적으로 I/O를 발생시켜야 하는 상황이 발생할 수도 있다. 이에 따른 성능 저하는 너무 비용이 크다. 이와 관련한 대표적인 선택 중의 하나가 바로 FAT32 와 NTFS 사이의 선택이 될 수 있다. 만약 권한 설정 및 보안 기능이 필요하다면 반드시 NTFS를 사용해야 하며 FAT32를 사용해서는 파일시스템 자체로 보안 기능을 사용할 수 없다. 또한 이 경우는 성능의 문제와도 관련이 있다. 보안 기능 등 여러 특징이 많은 NTFS는 비교적 느린 성능의 PC에서는 FAT32와 눈에 띄는 성능차이를 보일 수 있다. FAT32에 비해 NTFS32가 그만큼 많은 정보를 담고 있는 것이다. 반대의 경우로 파일 검색을 위해서라면 NTFS를 선택하는 것이 올바른 선택일 수 있다.
파일시스템을 선택할 때 짚어봐야 할 여러가지 요소들에 대해서 살펴보았다. 그러나 실제로 제품 개발 시에는 의외의 요소가 파일시스템의 선택에 영향을 미치기도 한다. 파일 시스템은 제품에 포팅한 뒤에는 변경하는 과정에 있어서 특히 손이 많이 가는 작업이기도 하므로 제품 설계 시 파일시스템의 선택에 심사숙고해야 한다.
'디지털포렌식 > File System 이해' 카테고리의 다른 글
Partition (0) | 2016.05.22 |
---|---|
하드디스크 구조 (0) | 2016.05.22 |
File System (0) | 2016.05.22 |
파일시스템 요소들 (0) | 2016.01.24 |
파일시스템 분류 (0) | 2016.01.24 |