<파일 시스템이란?>
컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 하는 체계입니다.
이와 관련된 개념으로 파티션, 볼륨이 있습니다.
- 파티션 : 하나의 저장 장치 내의 공간을 분리해 독립적인 공간을 만든 것
- 볼륨 : 하나의 저장 장치 내의 공간을 분리 + 파일 시스템을 갖춘 상황(드라이브라고도 부름)
<파일 시스템을 알아야 하는이유?>
- 파일 시스템 정보 없이 데이터 저장 위치를 알아내는 것은 힘들다
- 데이터 위치를 알아냈다고 해도, 메타데이터(쓰기 시간, 생성시간 등..)을 알아내기 위해서는 전반적인 파일 시스템의 구조에 대해 이해해야 한다.
- 대부분의 파일 시스템의 경우 저널링 기능을 지원하는데, 이를 통해 파일 변경 이력을 알아내거나 삭제 파일을 복구할수도 있다
<대표적인 파일 시스템의 종류>
Windows
- NTFS : Windows NT 3.1 이후부터 현재까지 사용하고 있는 파일 시스템. 파일 암호화, 저널링, 파일 복구 기능 등을 지원
- ReFS : NTFS를 대체하기 위한 차세대 파일 시스템. 파일 무결성 검사, 데이터 복구 기능 제공
리눅스
- EXT4 : EXT2와 3에서 사용하던 블록 매핑 방식을 Extent 방식으로 바꾸면서 많은 파일을 빠르게 접근할 수 있게 되었음. 최대 볼륨 크기와 최대 파일 크기를 확장했음.
Unix
- UFS
macOS
- HFS+ : 애플 구형 파일시스템. 매킨토시에서 사용하던 HFS의 상위 버전
- APFS : 애플 신형 파일시스템. 데이터 체크섬, 나노초 타임스탬프. 스냅샷 등의 기능을 제공
공통
- FAT/FAT32
- FAT32는 최대 파일 크기가 4GB, 최대 파티션 크기가 8TB로 약간 작은편. 자료 구조가 단순하고 데이터 복구와 같은 기능을 지원 X
- 하지만 FAT32는 다양한 운영체제와의 호환성이 좋음 → 현재는 USB 등에 주로 사용됨
- exFAT : FAT32의 크기 단점을 개선
<MBR과 VBR>
파일 시스템 내에서 컴퓨터의 부팅 과정에서 사용되는 영역을 의미합니다.
파일 시스템 종류에 따라 조금씩 저장 위치 등이 다를수는 있지만 파일 시스템 내에서 만드시 필요한 부분이기도 합니다.
MBR : Master Boot Record로, 디스크의 첫 섹터(맨앞 512바이트)에 저장된 정보를 말합니다. 이 디스크의 파티션 정보, 각 파티션에 설치된 볼륨 정보 등 디스크에 관한 정보가 저장되어 있습니다.
VBR : Volume Boot Record로, 볼륨 각각에 관한 정보가 저장되어 있는 것을 말합니다. 각 볼륨마다 다른 VBR을 가지고 있게 됩니다.
컴퓨터 메인보드의 BIOS가 POST 과정 을 마치고나면 MBR내에 있는 부터 코드를 호출 하게 되고, MBR에서 다시 VBR로 흐름이 이어지는 구조입니다.
즉, 디스크 불러오고, 디스크에서 나눠진 볼륨 정보 확인하는 흐름인 것입니다
<MBR 구조 (512바이트)>
Offest | 설명 |
0x0 ~ 0x1BD (446바이트) | 부트코드(부팅 과정에서 이용) |
0x1BE ~ 0x1CD(16바이트) | 파티션 테이블 엔트리 #1 |
0x1CE ~ 0x1DD(16바이트) | 파티션 테이블 엔트리 #2 |
0x1DE ~ 0x1ED(16바이트) | 파티션 테이블 엔트리 #3 |
0x1EE ~ 0x1FD(16바이트) | 파티션 테이블 엔트리 #4 |
0x1FE ~ 0x1FF | 시그니처. 값은 0x55 0xAA로 고정 |
그리고 각 파티션 테이블 엔트리에 대해서 자세히 알아보겠습니다
<MBR의 파티션 테이블 엔트리(16바이트)>
Offset 크기 | 설명 |
1byte | 부트 플래그 (0x00은 부팅 불가 0x80은 가능) |
3bytes | CHS 시작 주소(섹터 단위) |
1byte | 파일 시스템 타입(0x07은 NTFS, 0x0c는 FAT32) |
3bytes | CHS 끝주소 (섹터 단위) |
4bytes | LBA 시작 주소 (섹터 단위) |
4bytes | 파티션 총 섹터 개수 |
파티션 엔트리는 디스크 내의 할당해놓은 파티션의 정보를 담고 있습니다.
파티션 엔트리 내의 값으로 여러 주요한 정보들을 찾을 수 있습니다.
LBA 시작주소 * 0x200 ⇒ 해당 파티션의 VBR 시작 주소
파티션 총 섹터 개수 *200 = 해당 파티션 총 크기
VBR의 경우 파일 시스템마다 전부 다르기 때문에 MBR에서 지시한 정보를 우선적으로 안 후에 각 파일시스템 종류별 학습이 필요합니다.
다음 블로그 글에서 VBR을 포함한 여러 파일시스템의 구조를 분석해보도록 하겠습니다!
참고자료
https://en.m.wikipedia.org/wiki/Volume_boot_record
https://en.wikipedia.org/wiki/Master_boot_record
https://en.wikipedia.org/wiki/File_system
(문제시 삭제하겠습니다)
'보안이론' 카테고리의 다른 글
[File System] NTFS (0) | 2025.09.04 |
---|---|
[File System] FAT32 (0) | 2025.09.04 |
[Cryptography] 블럭 암호 운영 모드 ECB, CBC, CFB, OFB, CTR (0) | 2025.02.14 |
[Cryptography] 블럭암호 AES 원리, 안전성 (0) | 2025.02.14 |
[Cryptography] - 블럭암호 DES 원리, 취약점 (0) | 2025.02.13 |