[운영체제] 11. 운영체제 보안
1. 보안의 개요
보호와 보안
보호란 각 프로세스가 프로세서를 점유하는 시간, 사용하는 자료, 자료가 관리되는 작업, 점유하는 장치 등을 대상으로 컴퓨터 시스템 내부 자원 각각의 영역을 보장해주는 것을 의미한다.
보안이란 원거리에서 접근하는 사용자들에 대해 인증 및 암호화 메커니즘을 통해 합법적인 처리만이 이루어지도록 하여, 시스템 내의 자료가 결함이 없도록 유지시키고 신뢰도를 유지하는 기법이다.
보호 영역
컴퓨터 시스템은 시스템을 구성하는 프로세스와 객체들로 구성되어 있는데, 프로세스들은 접근권한이 부여되어 있는 자원에 대해서만 접근 가능해야 하고, 프로세스가 작업 수행을 위해 필요한 자원에만 접근할 수 있어야 한다.
이를 위해 보호영역(protection domain)의 개념을 이용한다. 한 프로세스는 한개의 보호영역 내에서 동작하며, 이는 그 프로세스가 접근할 수 있는 자원의 영역을 의미한다.
운영체제 보안
운영체제의 보안은 운영체제상에 내제된 보안상 결함을 이용하여 자원에 대해 허가받지 않은 수정, 참조 등을 방지하는 기법을 의미한다.
운영체제 보안의 기본 목표는 다음과 같다.
- 기밀성(confidentiality): 자원의 부적절한 노출을 예방한다.
- 가용성(availability): 합법적인 경우에는 자원에 접근이 가능해야 한다.
- 무결성(integrity): 비인가된 주체가 자원을 생성, 변경, 삭제 하는 것이 불가능해야 한다.
운영체제에서 안전하게 유지되어야 할 정보에 대해, 불법적인 참조나 변조가 가해지는 것을 정보 침해라고 한다. 운영체제 내에서는 고의적 침해와 우연한 상황의 침해가 발생할 수 있다. 운영체제 내의 침해 형태는 다음과 같은 네가지 요소가 있다.
- 흐름 차단(interruption): 시스템의 일부가 파괴되거나 사용할 수 없게 된 상태이다.
- 가로채기(interception): 인가받지 않은 주체가 자원에 접근하는 경우이다.
- 변조(modification): 인가받지 않은 주체가 자원을 수정하는 경우이다.
- 위조(fabrication): 인가받지 않은 주체가 운영체제 내 위조물을 삽입하는 경우이다.
운영체제를 통한 침해 유형으로 대표적인 것들로는 다음과 같은 것들이 있다.
- 트로이 목마
- 트랩 도어
- 비밀 채널
- 웜과 바이러스
2. 보안 정책 및 보안 메커니즘
보안 정책
운영체제의 보안 정책은 특성에 맞추어 다음과 같이 구분할 수 있다.
- 권한부여(Authorization)
- 어떤 객체를 어떻게 액세스 할 수 있는지 결정한다.
- 임의적 접근제어(Discretionary Access Control, DAC)
- 관리자 혹은 자원 소유자가 보안 관리자의 개입 없이 자율적 판단에 따라 보유 자원의 접근권한을 타인에게 양도할 수 있는 기법이다. 자원의 공동 활용이 중요한 환경에 적합하다.
- 강제적 접근제어(Mandatory Access Control, MAC)
- 개별적으로 객체 파일에 비밀등급을 결합시키고, 허가등급에 만족하는 주체에게만 접근권한을 부여한다. 군사적 환경 같이 정보의 기밀성이 매우 중요한 환경에서만 사용한다.
- 역할 기반 접근제어(Role-Based Access Control, RBAC)
- 역할의 개념을 사용하여 사용자와 권한을 효율적으로 관리하는 정책이다.
- 최소권한(least privilege)
- 사용자 또는 프로세서가 특정 임무를 수행하는데 필요한 최소한의 권한만 할당받아 임무를 수행하는 동안만 유지하는 정책이다.
- 감사(Auditing)
- 시스템에 발생한 모든 중요한 사건의 영구적인 기록이며 추적 및 감시가 가능해야 한다.
보안 메커니즘
다음은 운영체제의 보안을 어떤식으로 구현할 것인가에 대한 방법론이다.
- 주체 및 객체의 레이블 부여 메커니즘
- 안전한 암호 매커니즘
- 패스워드 시스템을 비롯한 안전 인증 메커니즘
- 임의적 접근제어를 위한 메커니즘
- 보안등급 관리 메커니즘
- 기록 파일 관리 메커니즘
- 운영자 권한 분산 메커니즘
하드웨어 보호를 위해 사용되는 방법
- 이중 모드 연산
- 오동작 하는 프로그램으로부터 운영체제와 자료를 보호해야 한다. 이를 위한 접근방법으로 하드웨어에서 모드 비트를 이용하여 실행 모드가 구분되도록 한다.
- 메모리 보호
- 잘못된 메모리를 참조하는것을 방지하기 위해 2개의 레지스터를 사용한다. 그중 하나는 프로그램이 접근할 수 있는 최하위 물리적 기억주소를 가리키는 기준 레지스터(base register) 이고, 나머지 하나는 기준 레지스터로부터 접근 가능한 범위를 갖는 한계 레지스터(limit register) 이다.
- CPU 보호
- 타이머(timer)는 사용자 프로그램이 무한 루프에 빠지거나 제어가 운영체제로 복귀하지 않는 것을 방지하기 위해 미리 설정된 특정 시간 이후에 컴퓨터에 인터럽트를 발생하는 장치이다. 현재 시간을 계산하는 데도 이용된다.
암호화
암호 알고리즘은 암호화/복호화에 사용되는 키의 특성에 따라 비밀키 암호화 방식과 공개키 암호화 방식으로 분류된다.
비밀키 암호 알고리즘은 암호화에 사용된 키를 공개하지 않고 개인이 비밀로 가지고 있는 알고리즘을 말한다. 비밀키 알고리즘은 암호화 키와 복호화 키가 같으므로 대칭키 암호 알고리즘이라고도 한다.
공개키 암호 알고리즘은 암호화 키와 복호화 키가 다르므로 비대칭키 암호 알고리즘이라고도 한다. 공개키 암호 알고리즘에서는 암호화에 사용된 키가 공개되어 누구든지 사용할 수 있게 하지만, 복호화할 때에는 개인만이 가지고 있는 키를 사용한다. 따라서 암호화에 사용되는 키를 공개키(public key) 라고 부르고, 복호화에 사용되는 키를 개인키(private key)라고 부른다.
3. 운영체제 보안 모델
참조 모니터 모델
참조 모니터 모델은 안전한 운영체제에서 프로세스와 파일의 정보 흐름을 감시하는 보안 모델이다. 참조 모니터는 주체와 객체의 접근권한을 정의한 데이터베이스를 참조하여 보안정책을 수행한다.
참조 모니터 모델은 단순하게 주체가 접근요청을 보냈을 경우 단순 접근 허용 여부만을 결정한다. 따라서 기밀의 유포등에 취약하다.
정보 흐름 모델
정보 흐름 모델은 앞선 참조 모니터 모델의 정보 흐름에 대한 제어 문제를 해결하기 위해 수학적 개념을 기반으로 한다. 주로 벨-라파듈라 모델과 비바 모델 두 가지로 표현된다. 벨-라파듈라 모델은 정보가 상위 보안 수준에서 하위 보안 수준으로 흐르는 것을 방지하는데에 관심을 두며, 비바 모델은 낮은 보안 수준에서 상위 보안수준으로 쓰기 접근을 하지 못하도록 방지하는데에 관심을 둔다.
4. 보안 커널
보안 커널은 기존의 운영체제 커널에 보안기능을 통합시킨 것이다. 보안 커널을 이식한 운영체제를 안전한 운영체제라 하며, 사용자에 대한 식별 및 인증, 강제적 접근통제, 임의적 접근통제, 재사용 방지, 침입 탐지 등의 보안기능 요소를 갖추어야 한다.