본문 바로가기

🔐 Security/System

[시스템보안] 윈도우 시스템 구조에서 HAL과 운영체제의 다섯가지 서브시스템

위 글은 2022년도 목포대학교 학점교류 '시스템보안' 수업에서 수행한 과제를 작성한 내용입니다.
시스템 해킹과 보안: 정보 보안 개론과 실습 3판, 양대일 (2018)

윈도우 시스템 구조에서 HAL이란?

 HALHardware Abstraction Layer의 줄임말로, 드라이버 개발자와 하드웨어 개발자가 따라야 하는 윈도우 표준이다. 기존에는 system call 인터페이스를 활용하여 하드웨어 입출력장치를 디바이스 노드에 실행하였는데, 하드웨어 종류가 늘어가면서 커널이 새로운 장치를 인식하거나 변화된 상태를 인식하는데 어려움이 생겼다. 새로운 장치가 생길 때마다 그에 맞는 적절한 인식 방식을 개별적으로 시행하는 데에 시간과 비용이 많이 들었다.

 HAL은 추상화의 개념이 들어가 있어 윈도우에서 제시한 기본 표준이 되어 새로 개발한 하드웨어를 시스템에 장착해도, 새 장치의 모든 것을 알 필요가 없다. 즉 하위 수준의 드라이버 구현을 고려하지 않아도 되게 해주는 시스템이다. 하드웨어와 개발된 소프트웨어가 원활한 통신을 할 수 있도록 보조하는 역할을 한다. 운영체제의 이식성을 향상하고, 계층 구조를 통해 하드웨어와 소프트웨어를 구분한다. 소프트웨어와 하드웨어 사이에서 소프트웨어가 직접적으로 하드웨어 장치에 접근하는 것을 막아주고, 소프트웨어는 HAL을 통해 하드웨어 종류에 관계없이 일관된 작업을 할 수 있게 된다.

 윈도우의 시스템 구조에서는 하드웨어, HAL, 마이크로 커널, 각종 관리자, 응용 프로그램 순으로 마치 링처럼 커널 모드로 계층을 이루고 있다. 이는 각 보안 요소를 충족하고 개별적으로 운영하여 높은 수준의 시스템보안을 이루기 위한 목적으로 등장하게 된 커널 구조이다.

시스템 동작을 목적으로 하는 커널 모드는 사용자가 접근할 수 없는 영역이고, 프로그램을 실행하는 기본 관리 시스템이 위치하므로, 기존 커널 모드의 링 구조에서 HAL을 무시하고 하드웨어와 통신할 수도 있는데, 이때 보안 허점이 발생하여 정보를 망가트리거나, 데이터 탈취가 발생할 수 있다.

 

운영체제의 다섯가지 서브 시스템을 설명하시오.

 메모리 관리자는 메모리는 유한하고, 따라서 부족하다는 문제가 있다. 모든 프로그램은 폰노이만 구조에 따라 메모리에 올라와야 하는데, 응용 프로그램이 같은 메모리에 올라와야 하므로 코드와 데이터를 저장할 메모리가 각각 필요하다. 따라서 따라서, 메모리 관리자는 프로세스 간 침범을 막고, 필요한 공간을 충분히 할당해주며, 가능한 많은 프로세스를 동작하도록 메모리를 할당하는 역할을 한다. 주소 변환이 이뤄질 때 페이지 테이블의 권한 비트를 이용하여 유효한 접근인지, 아닌지 확인하는 물리적 메모리 관리를 한다. 또한 보안 및 메모리 해제 기능으로 다른 프로그램이 메모리에 접근하지 못하게 관리 및 보호하고, 프로그램 종료 시 할당된 메모리를 회수하여 누수를 방지한다.

 프로세서 관리자는 프로그램 실행 시 프로세서가 코드에 해당하는 명령어를 차례로 실행하도록 한다. 어느 코드부터 시행할 것인지 코드의 주소를 가져와서 순차적으로 수행하도록 한다. 예외 사항은 조건문이나 switch , go-to , 함수 호출 등 실행 흐름이 변경되는 코드들에 한한다. 프로세서는 일반적으로 생성된 직후 PCB를 할당받은 상태에서 프로세서 관리자는 체계적이고 효율적인 명령어 실행을 위해 자신의 차례를 기다리는 스케줄링(준비상태)을 준비 큐에서 대기하도록 한다. 따라서 디스크 장치로부터 메모리에 올릴 작업을 선택하도록 한다. 사용자의 작업 요청 및 수용을 거부하는 관리 역할을 하기도 한다.

 장치 관리자는 프린터나 디스크 드라이버, 모뎀, 모니터 등의 모든 장치를 프로그램에 할당 및 회수하는 역할을 한다. 모든 장치의 설치와 사용 관리를 담당한다.

 파일 관리자는 모든 파일에 사용자별 파일 접근 권한을 부여한다. 남는 공간이 발생하면 비효율적으로 운영되는 것이므로, 적재적소에 남는 공간이 없이 관리하도록 한다. 접근 권한에 따른 파일 할당 및 해제, 읽기와 쓰기 등의 기능을 부여하고 해제한다.

 네트워크 관리자는 파일 관리자와 달리 CPU, 메모리, 프린터, 디스크 드라이버 등 네트워크에서 접근 가능한 자원을 관리한다.