Chapter 2. 컴퓨터 기초 (2)
지난 시간에 이어서 정리해보자
2.3 하드디스크 기술
디지털 매체에서 증거를 찾는다고 하면 대부분이 이 하드디스크에 들어있다.
ATA/IDE, SCSI등을 비롯해 배워보자
▶ 하드디스크 위치정보와 내부구조
-> 파일시스템과 파티션구조가 위치정보를 사용하고, 디스크의 감춰진 값들을 사용한다.
하드디스크는 한 개이상의 원형플레터로 구성되어있고 회전하면서 서로 층층이 쌓여있다.
구조에 대해서 설명을 간단하게 하면, 우선 데이터는 플레터라는 곳에 쓰이게 된다. 플래터는 위아래로 코팅이 되어있으며 플레터를 읽기위한 헤더가 위아래로 존재한다. (저기는 위에만 보이지만..) 대신에 한번에 하나의 헤더만 읽거나 쓸 수 있다.
플레터가 회전을 하고 헤더가 읽는 구조!!
그렇다면 어떻게 위치를 지정하고 데이터를 읽거나 쓸까?
-> 우선 물리적으로 링한개를 트랙이라고 부른다. (노란표시) 트랙은 제일 바깥부터 0번이다.
그런 트랙을 동일한 크기(512Byte)로 나누고 그 한부분을 섹터라고 부른다.(파란색) 또한 하드디스크의 주소가 할당되는 가장 작은단위가 이 섹터이다. 섹터는 1번부터 시작한다.
그리고 이러한 트랙을 주소지정을 해주기 위해 '실린더'라는 용어를 사용한다. (빨간색)
즉, 실린더 0= 플래터 위아래의 트랙 0
그래서 특정 데이터가 들어있는 위치를 보기위해 C(실린더 주소), H(앞뒤확인헤더번호), S(섹터 주소)를 이용한다.
이것이 바로 CHS방법
(디스크 사용시 특정 섹터에 문제가 생기면 그 섹터는 사용하지 않는다)
▶ ATA/IDE 인터페이스 (AT Attachment / Integrated Disk Electronics)
-> 가장 인기있는 하드디스크 인터페이스이다. (하드디스크에만 적용)
IDE란? 직접 디스크 전자장치를 의미한다. 구형에는 존재하지 않았던 논리적인 보드가 들어가있다.
그래서 정리를 하면 'IDE' 디스크가 사용하는 실제 인터페이스가 'ATA'인 것이다.
ATA disk는 컴퓨터 메인보드의 컨트롤러와 리본케이블을 통해 연결이 되어있다.
ATA DATA cable은 대체로 40핀을 이용한다. (노트북은 파워케이블도 포함해서 44핀짜리를 사용한다.)
디스크와 컨트롤러 사이의 데이터 경로를 '채널'이라 부르고 컨트롤러는 한개 또는 두개의 디스크와 연결이 가능한데,
두개일때 마스터와 슬레이브 디스크를 설정한다. 이 설정을 위해 사용되는 것이 'ATA 점퍼' 이다. (마스터와 슬레이브는 서로 제어가 불가하다.)
▶ 섹터 주소 유형
-> 디스크에 데이터를 쓰고 읽기위해 섹터에 주소를 지정할 필요가 있다. (이때 주소는 물리(실제)주소이다.)
⊙ 물리적 주소 지정방법
1. CHS방법
위에서 설명했듯이 실린더, 헤더, 섹터를 가지고 주소를 지정하는 방식이다.
ATA, 그리고 ATA와 통신을 위한 BIOS는 다음과 같이 비트를 할당한다.
ATA : 16비트(C), 4비트(H), 8비트(S)
BIOS : 10비트(C), 8비트(H), 6비트(S)
여기서 문제가 발생한다. 서로 주소 표현을 위해 할당해주는 비트수가 달라서 최대 504MB만 인식을 하게된다.
그래서 이문제를 해결하고자 응용프로그램으로 매핑을 시켜주었는데 이때도 최대로 해결한 크기가 8.1GB였다. 여기서도 문제가 다른 기기의 디스크를 '정적분석'실행시 컴퓨터마다 다른 응용프로그램을 사용하였기에 엉뚱한데이터를 매핑하게 되는 문제가 생긴다.
따라서 저장용량이 커진 지금은 CHS방식을 사용하지 않게 되었다. 그리고 LBA방식을 택하게 된다.
2. LBA(Logical Block Addresses)
-> 각각의 실제 위치를 담았던 CHS방식과 다르게 LBA방식은 시작하는 숫자(0부터 시작)를 가지고 논리적으로 위치를 알아낸다.
즉, CHS(0,0,1) = LBA(0) 인것
LBA = ((( 실린더 * 실린더당 헤드)+헤드)* 트랙당섹터)+섹터-1
Ex) C=2 H=3 S=4인 주소는 (16개 헤드, 63개의 섹터)
LBA = (((2*16)+3)*63)+4-1= 2208이 된다.
▷인터페이스 표준
-> 지역, 회사마다 다르게 쓰이던 인터페이스 용어를 정리했다. IDE/ATA는 하드디스크에서만 가능한 것을 유의하자.
CD-Rom 이나 ZIP같은 이동식 디스크들은 ATAPI(AT Attachment Packet Interface)를 사용한다.
▷ 디스크 명령어
-> 위에서 디스크는 컨트롤러와 리본케이블을 통해 연결이 되어있다고 말했다. 이번에는 명령이 어떠한 방식으로 전달되는지 간단히 알아보자.
컨트롤러에는 레지스터가 존재하는데 우선 이 레지스터에 데이터를 적어둔다. 그 후에 명령레지스터에 명령을 작성하면 그때 명령레지스터가 하드디스크로 처리한다. 즉, 명령레지스터에 쓰기전까지는 하드디스크는 아무것도 할 수 없다.
▷ 하드디스크 패스워드
-> ATA-3에서는 BIOS나 소프트웨어가 설정할 수 있는 보안기능을 소개했다.
하드디스크에는 두 종류의 패스워드가 존재한다.
'마스터 패스워드', '사용자 패스워드'
일반 사용자들은 사용자 패스워드를 이용해 하드디스크를 보호할 수 있다.
마스터 패스워드는 보안업체나 회사에서 설정한 패스워드인데 약간 마스터키라고 생각하면 쉽다.
방식에도 두가지가있는데
1. High-Security : 사용자, 마스터 패스워드로 모두 잠금해제가 가능하다.
2. Maximum-Security : 사용자 패스워드로 잠금해제 가능하고 마스터패스워드로 해제할때는 내용이 모두 지워진다.
잠금을 해제하는 여부에 떠나서 ATA명령어를 사용할 수 있다. 하지만 디스크를 읽으려하면 패스워드 해제가 필수적이다.
▷ HPA ( Host Protected Area )
-> ATA-4에서 추가된 기능이고, 데이터를 저장하는 일반인들은 볼 수 없는 특별한 영역이다.
크기는 ATA명령으로 설정이 가능하고 하드디스크를 포맷해도 지워지지 않는 영역이다. 디스크 끝에 존재한다.
그렇다면 HPA는 어떠한 방법으로 확인하고 설정할 수 있을까?
우선 두가지의 명령어를 살펴보자
READ_NATIVE_MAX_ADDRESS : 물리적 주소의 최대값을 반환한다.
IDENTIFY_DEV_ICE : 사용자가 접근가능한 섹터 수를 반환한다.
HPA로 생성한 공간은 사용자가 볼 수 없는 공간이라고 했다. 따라서 예를 들어 20GB의 디스크가 있다고 가정하자.
이때 RNMA(위) 명령어를 입력하면 20이라는 출력이 나올 것이다.
그리고 IDI(아래) 명령어를 했을 때 19가 나왔다고 하자. 그러면 전체는 20인데 사용자가 쓸 수 있는 섹터가 19이면 1GB의 공백이 생기게 된다. 이 공백이 HPA인 셈이다.
위와 같은 방법으로 HPA의 존재를 알아챘다. 그러면 어떻게 그 공간을 설정할 수 있을까?
SET_MAX_ADDRESS : HPA를 만드는 명령어(사용가능한 섹터 수 지정)
특정 공간을 만든다고 생각하기보다 사용할 수 있는 주소를 지정해버리는 것이다. 우리는 20이 최대라는 것을 명령어를 통해 확인했다. 그리고 SET 명령어를 통해 18을 지정했다고 하자. 그 이후에 IDENTIFY명령어를 실행해보면 18이 나옴을 알 수 있고 2GB의 HPA공간이 생긴것을 확인할 수 있다.
다시 초기화 하기위해서는 SET으로 20을 지정해주면 된다. (20은 READ명령으로 알아낼 수 있다.)
HPA는 '휘발성 비트(Volatility bits)'를 가지고 있어서 휘발성으로 만들수도 있고 비휘발성으로 이용도 가능하다.
또한 다음 재설정까지 SET기능을 막을수도 있다.
HPA도 패스워드 기능이 있는데 이때 패스워드는 디스크 패스워드랑은 별개의 패스워드이다.
▷ DCO (Device Configuration Overlay)
-> ATA-6에서 추가되었으며 HPA 뿐아니라 DCO를 이용해서도 데이터를 숨길 수 있다.
기존에는 IDENTIFY_DEVICE 명령을 통해 사용할 수 있는 명령어들을 볼 수 있는데 DCO는 사용가능한 명령도 아닌것처럼 보이게 할 수 있고 사용가능한 크기도 더 작게 보여준다.
전체 기능과 크기를 보기위해선 DEVICE_CONFIGURATION_IDENTIFY 명령을 사용하자.
DCO공간의 크기는 다음과 같이 확인가능하다.
HPA 공간 : READ_NATIVE_MAX_ADDRESS - IDENTIFY_DEV_ICE
DCO 공간 : DEVICE_CONFIGURATION_IDENTIFY - READ_NATIVE_MAX_ADDRESS
DCO 만드는 명령어와 삭제하는 명령어는 다음과 같다.
DEVICE_CONFIGURATION_SET
DEVICE_CONFIGURATION_RESET
DCO는 비휘발성이다.
▷ 직렬 ATA
-> 기존에 병렬로 이루어지던 케이블의 속도문제와 유연성등을 해결하고자 ATA-7에서 직렬 ATA가 개발되었다.
* 차이
기존 인터페이스 : 한번에 16비트 전송
직렬 ATA : 한번에 한비트 전송
※ 병렬 ATA처럼 보이게 하는 레지스터 때문에 컴퓨터는 자신이 직렬 ATA와 연결하는 것을 알지못한다.
▶ BIOS와 직접접근의 비교
-> 하드디스크와 소프트웨어가 연결되기 위해서 두가지의 연결방식이 존재한다.
'BIOS를 통한 접근', '하드디스크 컨트롤러를 통한 접근 = 직접접근'
▷ 컨트롤러의 직접접근
소프트웨어와 하드디스크 컨트롤러 사이에 통신이 필요하다
-> 주소지정, 명령어, 섹터구분, 소프트웨어 타입 등 하드디스크에 질릐를 해야한다.
▷ 컨트롤러의 BIOS 접근
-> 직접접근은 가장 빠르지만 소프트웨어가 하드웨어에 대해 알아야할 부분들이 많이 존재한다. 하지만 BIOS를 통한 접근은 이 둘사이를 부드럽게 연결해주는 서비스를 제공한다.
BIOS는 부팅과정에서 많은 일들을 수행하지만 여기서 두가지를 보자.
1. 현재 설치된 디스크들의 세부사항 결정
2. 운영체제나 소프트웨어 서비스를 제공할 때 사용되는 인터럽트 테이블 적재
▶ SCSI (Small Computer System Interface) 드라이브
-> 일반 PC드라이브에서 사용하는 것이 아니고 서버에서 많이 사용되며 휴대용 드라이브에 많이 들어간다.
-> ATA와 비슷하게 SCSI-1 SCSI-2 SCSI-3 과 같은 명세가 존재한다.
▶ SCSI와 ATA
-> 높은 수준의 차이와 낮은 수준의 차이 두가지가 존재한다.
1. 높은 수준의 차이
ATA : 40, 44핀의 커넥터를 가진다. / 한개 또는 두개의 디스크를 연결할 수 있다.
SCSI : 다양한 커넥터를 가진다. 또한 각각의 장치는 연결을 위한 고유한 ID를 가지고 있다. / 여러개의 장치를 연결할 수 있다.
2. 낮은 수준의 차이
SCSI는 컨트롤러가 없다. (잉?)
SCSI는 장치들이 서로 통신하는 버스구조를 가지고있다.
▷ SCSI의 타입
(여기서부터는 필기로 대체할게요)