Search

[운영체제] 운영체제 보안

제목
Tag
작성일

보호와 보안

컴퓨터 시스템에서의 보호
시스템 내부에서 각 프로세스가 자신의 자원을 안전하게 사용할 수 있도록 보장하는 것
각 프로세스가 사용하는 자원이 다른 프로세스에 의해 침해되지 않도록 보호
예: A 프로세스의 메모리에 B 프로세스가 접근하지 못하게 막는 것
컴퓨터 시스템에서의 보안
시스템 전체를 외부 위협으로부터 신뢰할 수 있게 보호하는 것
인증, 암호화, 접근 제어 등을 통해 불법적인 접근이나 조작 방지
시스템과 데이터가 손상되지 않고 신뢰할 수 있는 상태로 유지되도록 함
→ 시스템 프로세스와 사용자 프로세스가 권한을 가진 자원만 접근하도록 접근제어 규정

보호영역

한 프로세스가 접근할 수 있는 자원
각 보호 영역은 자원의 집합과 그 자원에 대해 가능한 연산으로 정의됨
하나의 영역 = 접근 권한들의 집합
접근 권한 (Access Right)
어떤 객체에 대해 어떤 연산을 수행할 수 있는지를 나타냄
형식: <객체 이름, 권한 집합>
예: <fileA, {read, write}>
다른 영역과 공유 가능

운영체제 보안

운영체제가 관리하는 자원들이 공격, 오용, 유출되지 않도록 막는 정책과 기술
직접 또는 네트워크를 통해 접속하는 사용자들이
안정적이고 안전하게 자원에 접근할 수 있도록 보장
저장된 정보가 유출되거나 손상되지 않도록 보호

운영체제 보안의 기본 목표

무결성: 객체에 저장된 정보가 항상 정확하고 신뢰할 수 있는 상태여야 함
가용성: 허가된 사용자는 시스템 자원을 언제든 정상적으로 사용할 수 있어야 함
기밀성: 허가되지 않은 사용자는 자원에 절대로 접근해서는 안 됨

정보침해

운영체제 보안의 기본 목표인 무결성, 가용성, 기밀성이 침해되는 상황
소프트웨어 오류나 오작동을 통해 보호영역이 지켜지지 못하는 경우
발생 원인:
시스템 오류, 소프트웨어 버그
공격자의 고의적인 권한 탈취나 악의적 접근

정보침해 형태

가로채기: 공격자가 허가되지 않은 자원이나 정보에 접근
흐름 차단: 시스템 일부가 파괴되거나 사용할 수 없게 됨
변조: 기존 데이터나 정보가 의도적으로 변경됨
위조: 존재하지 않던 데이터를 불법적으로 삽입

정보 침해 유형

트로이 목마: 겉보기에는 정상 프로그램처럼 보이지만 백그라운드에서 악성 행위를 수행하는 프로그램
트랩도어: 개발자가 디버깅이나 유지보수를 위해 만든 비공식적인 접근 경로가 악용되는 경우
비밀 채널: 정상적인 통신 채널이 아닌 경로(메모리 사용 패턴 등)를 통해 정보를 몰래 전달하는 기법
웜: 스스로 복제해 네트워크를 통해 전파되며 시스템을 감염시키는 악성 코드
바이러스: 정상 파일이나 프로그램에 자신을 삽입하여 함께 실행되며 퍼지는 악성 코드

보안정책 및 보안 메커니즘

보안정책

시스템 보안을 어떤 기준으로, 어떤 방식으로 수행할지 결정하는 방침
권한부여 (Authorization)
어떤 주체가 어떤 객체를 어떻게 접근할 수 있는지 결정
모든 주체와 객체는 다음을 통해 확인되어야 함:
식별 (Identification): 사용자의 신원을 식별
인증 (Authentication): 사용자가 주장하는 신원이 실제로 맞는지 확인
접근 제어나 보안 등급 부여의 기반이 됨
임의적 접근제어 (DAC: Discretionary Access Control)
관리자나 자원 소유자가 직접 접근 권한을 부여
자원 보호보다 공유가 중요한 경우 적합
장점: 유연하게 자원을 공유 가능
단점: 권한 추적이 어려워 관리가 복잡해질 수 있음
강제적 접근제어 (MAC: Mandatory Access Control)
시스템이 주체와 객체에 각각 등급을 부여하고 등급 비교를 통해 접근 결정
보안 관리자가 정책을 정의하고, 사용자는 이를 넘을 수 없음
장점: 강력하고 일관된 보안 관리
단점: 유연성이 낮고 자원 공유가 어려움
역할 기반 접근제어 (RBAC: Role-Based Access Control)
사용자에게 직접 권한을 부여하지 않고, 역할(Role)에 따라 권한을 할당
사용자는 역할을 통해 간접적으로 권한을 얻음
최소 권한 원칙 (Principle of Least Privilege)
사용자나 프로세스는 임무 수행에 필요한 최소한의 권한만 부여
작업이 끝나면 권한은 회수되어야 함
감사 (Auditing)
시스템에서 발생한 이벤트는 로그로 기록되고 보호되어야 함
감사 로그를 통해 침해 사고를 추적하고, 이상 행위를 감시

보안 메커니즘

보안을 어떻게 구현할 것인지, 즉 보안 정책을 구체적으로 실행하는 기술적 방법
주체 및 객체의 레이블 부여 메커니즘
주체(사용자, 프로세스)와 객체(파일, 자원)에 보안 등급 레이블을 부여
이를 기반으로 접근 가능 여부 판단 (→ MAC에서 사용됨)
안전한 암호 메커니즘
데이터를 암호화하여 외부 노출 시에도 정보가 유출되지 않도록 보호
대칭키, 공개키 암호화 방식 등을 사용
안전한 인증 메커니즘
사용자의 신원을 정확히 확인하기 위한 방법
예: 비밀번호, OTP, 생체 인식, 공개키 기반 인증 등
임의적 접근제어를 위한 메커니즘
자원 소유자가 개별적으로 권한을 설정/관리할 수 있는 기능 제공
예: Unix의 chmod, ACL(Access Control List) 등
보안등급 관리 메커니즘
주체와 객체의 등급을 체계적으로 부여하고,
접근 요청 시 정책에 따라 자동으로 비교/제어하는 기능
기록파일 관리 메커니즘
시스템의 모든 접근/행동을 로그로 기록하고 보존
이후 감사(Auditing) 시 로그 위변조 없이 분석 가능하게 함
운영자 권한의 분산 메커니즘
하나의 관리자에게 모든 권한을 부여하지 않고
역할에 따라 운영 권한을 분산시켜 위험을 최소화
예: 시스템 관리자, 보안 관리자, 감사 관리자 등 역할 분리

하드웨어 보호를 위한 방법

사용자 프로그램이 시스템 자원을 무단으로 조작하거나 손상시키는 것을 방지하기 위한 운영체제 수준의 보호 메커니즘
예외 처리 (트랩, 인터럽트)
사용자 프로세스가 불법 명령 실행 또는 허가되지 않은 메모리 접근 등 오류 발생 시
운영체제가 개입하여 프로세스를 중단하고 오류 처리 루틴을 호출
트랩(trap) 또는 인터럽트(interrupt)를 통해 제어를 커널로 넘김
이중 모드 연산 (Dual-Mode Operation)
모드 비트를 통해 사용자 모드(User Mode)와 커널 모드(Kernel Mode)를 구분
사용자 모드: 일반 사용자 프로그램은 제한된 명령만 수행 가능
대부분의 프로세스는 사용자 모드에서 실행됨
커널 모드: 운영체제가 동작하는 모드로, 모든 명령(특권 명령 포함) 수행 가능
특권 명령: 시스템 자원 상태를 변경하거나 보안에 영향을 줄 수 있는 명령
사용자 모드에서 특권 명령을 호출하면 트랩이 발생하여 커널이 개입
메모리 보호
각 프로세스는 자신의 주소 공간만 접근 가능
하드웨어적으로 2개의 레지스터 사용:
기준 레지스터(Base Register): 접근 가능한 주소의 시작점
한계 레지스터(Limit Register): 접근 가능한 주소 범위의 크기
프로세스가 허용된 범위를 벗어난 주소에 접근 시 트랩 발생
CPU 보호
프로세스가 무한 루프에 빠져 CPU를 독점하는 것을 방지
타이머 장치를 사용해 주기적으로 인터럽트 발생
프로세스가 할당된 시간(타임 슬라이스)을 모두 사용하면
→ 다른 대기 중인 프로세스로 제어를 전환
입출력(I/O) 보호
입출력 장치에 대한 직접 접근은 허용되지 않음
모든 입출력 작업은 커널 모드에서만 수행
사용자 프로세스는 시스템 호출(System Call)을 통해 간접 요청

암호화

데이터를 외부로부터 보호하기 위해 내용을 변환(암호화)하고,
허가된 사용자만 복호화하여 원래 데이터로 복원할 수 있게 하는 기법
비밀키 암호 시스템 (대칭키 암호)
하나의 키로 암호화와 복호화를 모두 수행
비밀키를 공유한 사람만 데이터를 해독할 수 있음
공개키 방식보다 속도가 빠르고 연산이 간단함
단점: 키를 안전하게 공유하는 것이 어려움 → 키 분배 문제
공개키 암호 시스템 (비대칭키 암호)
서로 다른 두 개의 키 사용:
공개키(Public Key): 누구나 알 수 있음 → 암호화에 사용
개인키(Private Key): 본인만 알고 있음 → 복호화에 사용
전자서명에 활용 가능 (개인키로 서명 → 공개키로 검증)
비밀키를 안전하게 전달하는 데에도 사용됨 (하이브리드 암호 방식 등)

운영체제 보안 모델

참조 모니터 모델

주체(Subject)가 객체(Object)에 접근할 때, 그 접근을 중앙에서 감시하고 제어하는 핵심 보안 모델
모든 접근 요청은 참조 모니터(Reference Monitor) 를 통해 이루어져야 함
접근 제어 정책을 강제하고, 허가된 접근만 수행되도록 보장
완전 중재성 (Complete Mediation): 모든 접근을 검사
격리성 (Isolation): 참조 모니터 자체는 보호되어야 함
검증 가능성 (Verifiability): 논리적으로 검증 가능해야 함

정보 흐름 모델

시스템 내에서 정보가 흐르는 경로를 제어하여 기밀성 또는 무결성이 침해되지 않도록 보장하는 모델
정보가 낮은 등급 → 높은 등급 혹은 높은 등급 → 낮은 등급으로 부적절하게 흐르는 것을 차단
벨-라파듈라 모델 (Bell-LaPadula, BLP)
읽기는 위로 못하고, 쓰기는 아래로 못한다 (기밀성 중심)
No Read Up (읽기 금지): 낮은 등급 사용자는 높은 등급 데이터 읽기 금지
No Write Down (쓰기 금지): 높은 등급 사용자는 낮은 등급에 쓰기 금지
군사 시스템 등 기밀 유지가 중요한 환경에 적합
비바 모델 (Biba)
읽기는 아래로 못하고, 쓰기는 위로 못한다(무결성 중심)
No Read Down (읽기 금지): 높은 무결성 사용자는 낮은 무결성 데이터 읽기 금지
No Write Up (쓰기 금지): 낮은 무결성 사용자는 높은 무결성에 쓰기 금지
금융/회계 시스템 등 데이터 변경의 신뢰성 확보가 중요한 환경에 적합

보안커널

운영체제에서 보안을 담당하는 핵심 부분으로 접근 제어와 보안 정책을 실제로 강제하는 컴포넌트
보안 정책을 참조 모니터 모델 기반으로 구현
커널 모드에서 동작하며, 시스템의 모든 접근 요청을 검사하고 제어
완전 중재성 (Complete Mediation): 모든 접근을 감시
격리성 (Isolation): 외부로부터 보호되어야 함
검증 가능성 (Verifiability): 논리적으로 검증 가능해야 함

TCB (Trusted Computing Base)

시스템 보안에 직접적으로 영향을 미치는 신뢰할 수 있는 컴포넌트들의 집합
하드웨어, 펌웨어, 운영체제의 커널 코드, 보안 정책, 설치 장소 등
보안을 구성하는 모든 핵심 요소들을 포함
이 중 일부라도 손상되면 전체 시스템 보안이 위협받을 수 있음
보안 커널은 TCB의 핵심 구성 요소이며,
실제로 참조 모니터를 구현한 형태로 존재함
운영체제의 기본적인 작업(프로세스, 메모리, 파일 등)에 대해
접근 제어와 무결성을 보장