All
보호와 보안
컴퓨터 시스템에서의 보호
시스템 내부에서 각 프로세스가 자신의 자원을 안전하게 사용할 수 있도록 보장하는 것
•
각 프로세스가 사용하는 자원이 다른 프로세스에 의해 침해되지 않도록 보호
•
예: 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의 핵심 구성 요소이며,
실제로 참조 모니터를 구현한 형태로 존재함
•
운영체제의 기본적인 작업(프로세스, 메모리, 파일 등)에 대해
접근 제어와 무결성을 보장
