학습 개요
- 현대 사회에서 컴퓨터는 거의 모든 분야에서 활용 되어 이전에 생각하기 어려운 수준으로 인간의 생활을 편리하게 만들어 주고 있음
- 반면, 컴퓨터의 이용이 보급 됨에 따라 불법적인 방법을 통해 컴퓨터 시스템에 침투하여 이익을 보려는 해킹이 기술적인 문제 뿐만 아니라 사회적인 문제가 되고 있음
- 이에 대응하는 보안이 학문적으로나 경제적으로나 중요성이 커지고 있음
- 운영 체제 관점에서 보호와 보안에 대한 개념을 알아보고, 운영 체제에서 보안에 대해 할 수 있는 일에 대해 살펴봄
학습 목표
- 보호와 보안의 개념을 설명할 수 있음
- 운영 체제에서 보안이 달성하고자 하는 목표를 설명할 수 있음
- 운영 체제에 대한 침해 유형을 설명할 수 있음
- 운영 체제 수준에서의 보안 기법과 보안 모델을 설명할 수 있음
- 안전한 운영 체제에 대해 설명할 수 있음
강의록
보안의 개요
보호와 보안
- 컴퓨터 시스템에서의 보호
- 컴퓨터 시스템 내부 자원 각각의 영역을 보장해 주는 것
- 각 프로세스가 사용하는 자원이 다른 프로세스에 영향을 받지 않도록 하는 것
- 컴퓨터 시스템에서의 보안
- 인증, 암호화 등을 통해 합법적인 처리만 이루어지도록 보장
- 시스템이 정상적으로 동작함으로써 저장된 자료가 결함이 없도록 하며 시스템을 신뢰할 수 있게 하는 것
보호와 보안의 목적
- 악의적인 사용자가 시스템 자원 접근 제한을 의도적으로 위반하는 것 방지
- 잠재적 오류를 미리 검출하여 시스템의 신뢰도를 높임
- 시스템 자원을 권한이 없는 사용자가 잘못 사용하는 것을 막음
- 권한이 있는 사용자와 권한이 없는 사용자 구별
- 시스템 프로세스와 사용자 프로세스가 권한을 가진 자원만 접근하도록 접근 제어 규정
보호 영역
- 한 프로세스가 접근할 수 있는 자원
- 각 영역은 자원의 집합과 그 자원에 대해 프로세스가 할 수 있는 연산을 정의
- 하나의 영역은 접근 권한의 집합
- 접근 권한
- 프로세스가 객체(자원)에 대한 연산을 수행할 수 있는 능력
<객체 이름, 권한 집합>
영역 사이에서 공유
운영 체제 보안
- 운영 체제가 관리하는 자원이 공격에 의해 불법적으로 이용되는 것을 막는 정책과 기법
- 직접 또는 네트워크를 통해 접속하는 다수의 사용자가 모든 자원을 안정적으로 이용할 수 있도록 함
- 저장된 정보가 소실되거나 유출되지 않도록 함
- 적절한 접근 제어 설정, 정보의 암호화, 시스템 접속 및 자원 사용에 대한 기록 등 활용
운영체제 보안의 기본 목표
- 기밀성
- 주체가 자원을 합법적으로 사용할 수 없다면 사용되어서는 안 됨
- 무결성
- 객체에 저장된 정보는 항상 정확함
- 가용성
- 주체가 자원을 사용하는 데 문제가 없다면 반드시 사용할 수 있어야 함
정보 침해
- 운영 체제 보안의 기본 목표가 달성 되지 못하고 정보가 불법적으로 읽히거나 다른 값이 덮어 쓰이는 것
- 정보 침해가 발생하는 경우
- 소프트웨어 오류나 오작동을 통해 보호 영역이 지켜지지 못하는 경우
- 공격자가 의도적으로 다른 사용자의 권한을 도용하는 경우
정보 침해 형태
- 가로 채기
- 공격자가 허락 받지 않은 컴퓨터 자원 접근 (기밀성 공격)
- 흐름 차단
- 시스템의 일부를 파괴하거나 사용할 수 없게 함 (가용성 공격)
- 변조
- 공격자가 기존에 있던 데이터의 내용을 바꿈 (무결성 공격)
- 위조
- 공격자가 기존에 없던 불법적인 정보 삽입 (무결성 공격)
정보 침해 유형
- 트로이 목마
- 숨겨진 기능이 있는 프로그램을 사용자가 실행하게 만들어 사용자의 권한을 이용하여 시스템에 침투
- 트랩 도어
- 정상적인 인증 절차나 암호화를 피해 갈 수 있는 비밀 통로
- 백도어
- 비밀 채널
- 데이터를 주고받을 수 없는 프로세스 사이에 정상적이지 않은 방법으로 정보를 주고받음
- 웜
- 자기 자신을 복사하여 다른 컴퓨터에 전파
- 바이러스
- 다른 프로그램을 감염 시켜 전파
보안 정책 및 보안 메커니즘
보안 정책과 보안 메커니즘
- 보안 정책
- 보안을 어떠한 관점에서 무엇을 행할 것인지 결정하는 것
- 권한 부여, 접근 제어, 최소 권한, 감사 등
- 보안 메커니즘
- 보안을 어떠한 방법으로 할 것인지 결정하는 것
- 암호, 인증, 보안 등급 관리 등
보안 정책
- 권한 부여(authorization)
- 어떤 주체가 어떤 객체를 어떻게 액세스할 수 있는지 결정하는 것
- 모든 주체와 객체는 식별 및 인증이 가능해야 함
- 식별(identification)
- 신분을 알아내는 것
- 인증(authentication)
- 정말 그 주체와 객체가 맞는지 확인하는 것
- 식별(identification)
- 주체의 객체에 대한 접근 제어 및 보안 등급 부여를 가능하게 함
- 임의적 접근 제어 (DAC, Discretionary Access Control)
- 관리자 또는 자원 소유자가 보안 관리자의 개입 없이 주체에 자원의 접근 권한을 부여할 수 있음
- 자원의 보호보다 자원의 공유가 중요할 때 적합
- 장점
- 유연하게 자원을 공유할 수 있음
- 단점
- 관리가 쉽지 않음
- 누가 권한을 가지고 있는지 판단 어려움
- 관리가 쉽지 않음
- 강제적 접근 제어 (MAC, Mandatory Access Control)
- 주체에는 허가 등급, 객체에는 비밀 등급이 주어짐
- 접근 요청이 올 때마다 허가 등급과 비밀 등급을 비교하여 허가 여부를 결정
- 보안 관리자가 시스템 전체에 대한 보안 정책을 구현하고 강제
- 각 사용자는 이 정책을 넘어서는 행동을 할 수 없음
- 장점
- 관리가 확실함
- 단점
- 자원의 공유가 어려움
역할 기반 접근 제어 (RBAC, Role-Based Access Control):
- 역할 개념을 사용하여 권한을 관리
- 주체는 역할이 주어졌을 때, 그리고 그 역할에 권한이 주어졌을 때만 권한 사용 가능
- 최소 권한
- 사용자는 임무를 수행하기 위해 필요한 최소한의 권한을 받아야 함
- 임무가 끝나면 이 권한을 반환해야 함
- 감사(auditing)
- 발생한 이벤트는 해당 내용 정보가 기록되어야 하고 변조 되지 않고 보존되어야 함
- 감사 과정을 통해 로그 파일을 조사하여 발생한 이벤트를 추적하고 침해 사고 등이 발생했는지 여부를 확인하고 감시해야 함
보안 메커니즘
- 주체 및 객체의 레이블 부여 메커니즘
- 유일한 식별자를 부여하여 서로 구별이 가능하게 함
- 보안 등급을 부여하여 허락되지 않은 접근을 막음
- 강제적 접근 제어를 구현하는 데 필요
- 안전한 암호 메커니즘
- 비밀 키 암호 알고리즘과 공개 키 암호 알고리즘
- 서로 다른 특징으로 사용되는 분야가 다름
- 안전한 인증 메커니즘
- 패스워드
- 가장 간단한 방법
- 수정이나 탈취를 막기 위해 암호화하여 저장
- 가장 간단한 방법
- 다요소 인증
- 사용자 인증에 둘 이상의 방법 요구
- 패스워드
- 임의적 접근 제어를 위한 메커니즘
- UNIX
- 파일 소유자가 각 파일마다 자신, 자신이 속한 그룹, 나머지에 대해 읽기, 쓰기, 실행 권한을 부여 가능
- 접근 제어 리스트(ACL) 이용
- UNIX
- 보안 등급 관리 메커니즘
- 사용자에게 다양한 종류의 보안 등급 부여
- 체계적이고 안전한 방법으로 관리되어야 함
- 기록 파일 관리 메커니즘
- 로그를 수정하지 못하게 접근 제어와 암호화를 통해 안전하게 보관
- 운영자 권한의 분산 메커니즘
- 시스템 관리자의 권한을 세분화하여 목적에 따라 해당 역할을 담당하는 운영자에게 부여
하드웨어 보호를 위한 방법
- 사용자 프로세스가 불법적인 명령을 수행하거나 허락되지 않은 메모리에 접근하는 등 오류가 발생
- 프로세서 상태 변경
- 트랩 또는 인터럽트를 이용
- 이중 모드 연산
- 모드 비트를 이용하여 사용자 모드와 커널 모드 구분
- 사용자 모드
- 자신에게 허용된 권한만 행사 가능
- 대부분의 경우 프로세스는 사용자 모드에서 수행
- 자신에게 허용된 권한만 행사 가능
- 커널 모드
- 특권 명령 수행 가능
- 특권 명령
- 시스템의 상태를 바꾸어 보안에 위험을 줄 수 있는 명령
- 사용자 모드에서 특권 명령이 호출되면 트랩 발생
- 메모리 보호
- 각 프로세스가 가지는 주소 공간은 서로 분리
- 2개의 레지스터 이용
- 기준 레지스터
- 프로세스가 접근할 수 있는 물리적 주소의 최솟 값
- 한계 레지스터
- 프로세스가 접근할 수 있는 주소 범위의 길이
- 기준 레지스터
- 운영 체제가 사용하는 메모리 영역을 사용자 프로세스가 접근하려는 경우 트랩 발생
- CPU 보호
- 무한 루프에 빠진 프로세스가 CPU를 독점하는 것을 막음
- 타이머
- 주기적으로 인터럽트를 발생 시키는 장치
- 프로세스가 자신에게 할당된 시간을 다 쓰면 대기하고 있는 다른 프로세스로 제어를 옮김
- 입출력 보호
- 한 프로세스의 입출력에 다른 프로세스가 영향을 미치면 안됨
- 입출력은 커널 모드에서 동작
암호화
- 비밀 키 암호 시스템
- 비밀 키를 아는 사람만 암호화와 복호화 가능
- 공개 키 암호 시스템에 비해 속도가 빠름
- 키 공유 문제
- 공개 키 암호 시스템
- 암호화 키(공개 키)와 복호화 키(개인 키)가 다름
- 전자 서명에 응용
- 비밀 키 공유에 활용
운영체제 보안 모델
참조 모니터
주체가 객체를 접근하는 과정에 대해 접근 제어 수행
- 주체와 객체 사이에서 단순 접근의 허용 여부만 결정
- 접근 허용 여부를 결정하고, 이를 강제함
- 접근한 객체에 포함 된 기밀 정보를 유포하는 것은 막지 못함
정보 흐름 모델
- 정보의 유형에 따라 정보가 흐르는 방향을 제어하는 모델
- 모든 허가 된 정보 흐름은 허용하고 모든 허가 받지 않은 정보 흐름은 방지
- 벨-라파듈라 모델 (BLP; Bell-LaPadula)
상위 보안 수준에서 하위 보안 수준으로 정보가 흐르는 것을 방지하는 것이 주된 목적
- 기밀성 유지에 초점
- 무결성이 깨질 수 있음
- 비바 모델 (Biba)
하위 보안 수준에서 상위 보안 수준으로 정보가 흐르는 것을 방지하는 것이 주된 목적
- 무결성을 보장하기 위한 모델
- 권한이 없는 주체가 데이터를 수정하는 것을 막음
- 권한이 없는 주체가 수정한 데이터를 사용하지 못하게 막음
보안 커널
보안 커널
- 기존의 운영 체제 커널에 보안 기능을 통합 시킨 것
- 자주 수행되고 중요한 일을 커널에 둠
- 보안 커널을 사용한 운영 체제는 보안 기능 요소를 갖추어야 함
- 사용자에 대한 식별 및 인증, 접근 제어, 객체 보호, 침입 탐지 등
시스템 호출을 통해 보안 경계를 통과
- TCB의 하드웨어, 펌웨어, 소프트웨어 요소
- TCB(Trusted Computing Base)
- 컴퓨터 시스템의 보안을 구성하는 핵심 요소들의 집합
- 정상적으로 동작하지 않을 경우 시스템 보안에 문제가 생길 수 있는 하드웨어, 펌웨어, 소프트웨어, 물리적 설치 장소, 보안 정책 등의 집합
- 참조 모니터를 구현한 형태
- 운영 체제의 기본적인 작업에 대한 보안성 및 무결성을 감시
- 컴퓨터 시스템의 보안을 구성하는 핵심 요소들의 집합
정리 하기
- 운영 체제 보안에서 달성하려는 기본 목표는 기밀성, 가용성, 무결성임
- 정보 침해 위협 요소로는 가로 채기, 흐름 차단, 변조, 위조 등이 있음
- 임의적 접근 제어에서는 각 사용자가 자신이 보유하고 있는 자원에 대한 접근 권한을 자신의 자율적 판단에 따라 부여하고 자신이 가진 접근 권한을 다른 사용자에게 전달할 수 있음
- 강제적 접근 제어는 각 객체의 비밀 등급, 개별 사용자의 허가 등급에 따른 중앙의 규칙에 따라 제어가 이루어짐
- 역할 기반 접근 제어에서는 사용자의 역할의 멤버가 됨으로써 권한을 배정 받음
- 비밀 키 암호 시스템은 암호 시스템의 보안이 암호화와 복호화에 사용되는 키를 아는 사람만 정보를 공유할 수 있다는 사실을 이용함
- 공개 키 암호 시스템에서는 암호화와 복호화에 사용하는 키가 다르며, 암호화에 사용되는 키는 공개 되고 복호화에 사용되는 키는 공개 되지 않음
- 참조 모니터는 주체와 객체의 접근 권한을 정의한 데이터 베이스를 참조하여 보안 정책을 수행함
- 벨 - 라파듈라 모델에서는 기밀성에 중점을 두어, 상위 보안 수준의 정보가 하위 보안 수준으로 흐르는 것을 막음
- 비바 모델에서는 무결성에 중점을 두어, 하위 보안 수준의 정보가 상위 보안 수준으로 흐르는 것을 막음