본 포스팅은 공룡책으로 불리는 Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 10th』 기반으로 정리한 글입니다.


보안과 보호

보안(Security)

  • 컴퓨터 시스템의 물리적 자원인 데이터와 코드에 대한 정보 무결성을 보호하기 위해 사용자 인증 보장
  • 인증받지 않은 접근, 악의적인 파괴, 변경/실수에 의한 데이터 변경 방지
  • 지정된 일부의 인원만 알고 있어야하는 정보를 위험으로부터 지킴
  • authentication : 인증

 

보호(Protection)

  • 운영체제로부터 적절한 권한을 획득한 프로세스만이 memory segments, CPU와 같은 자원 사용할 수 있도록 보장
  • 사용자에게 허용되는 접근의 종류를 제한함으로써 시스템에 접근하는 것을 제어
  • 보호해야할 가치가 있는 정보를 외부의 위협으로부터 지키는 일련의 행동
  • authroization : 인가, 권한 보호

 

 

Security Problem

컴퓨터 자원 (Computer Resources)

  • 우연히 혹은 의도적으로 잘못 사용되는 것을 방지
  • 공격을 감지하여 방어하고, 실수를 제어함
  • cryptography(암호학)

 

컴퓨터 자원 보안 (Security)

  • 보안은 컴퓨터 자원을 보호해야함
    • 권한 없는 접근
    • 악의적인 침입 및 변경
    • 실수로 데이터 일관성을 해치는 행위

 

보안 위배 요소

  • thread: 보안 위반을 일으킬 수 있는 잠재적인 가능성, 주로 실수에 의해 발생
  • attack: 악의적인 공격

 

보안 위배 사항 분류

  • 무결성 위반 (Confidentiality)
  • 데이터 안정성 위반 (integrity)
  • 유용성 위반 (availability)
  • 서비스 절도 (Theft of service)
  • 서비스 방해, 디도스 공격 (Denial of service (Dos) 혹은 Distributed Dos (DDos))

 

 

보안의 4단계 

  • 물리적 단계(Physical) : 인가된 사용자만이 진입할 수 있도록 물리적으로 보호
  • 네트워크 단계(Network) : 보안 측면에서 해로운 단계
  • 운영체제 단계(Operating System) : 공격할 수 있는 지점을 줄이고 침투를 못하게 막음
  • 응용 프로그램 단계(Application) : 보안을 위배하는 버그를 포함 (가장 상위 단계)

 

 

Program Threats

프로그램 (또는 프로세스) 보안 취약점 

  • 멀웨어 (Malware)
    • 컴퓨터 시스템을 공격, 비활성화 또는 손상시키도록 설계된 소프트웨어
    • 트로이 목마(Trojan horse), 스파이웨어(spyware), 랜섬웨어(ransomware), 백도어(backdoor), 로직붐(logic bomb)
  • 코드 주입 (Code Injection)
    • 대부분 소프트웨어는 악의적이지 않으나 code-injection 공격으로 심각한 피해
  • 바이러스와 웜 (Viruses and Worms)
    • 바이러스 : 일반적인 프로그램에 있는 코드의 조각, 다른 프로그램 감염하도록 자가복제
    • 웜: 사람의 도움 없이 스스로 복제하기 위해 네트워크 사용

 

 

System and Network Threats

시스템 및 네트워크의 위협

  • 네트워크 트래픽을 통한 공격
    • 스니핑 (sniffing) : 침입자가 능동적으로 다른 상대방들의 네트워크 트래픽을 intercept
    • 스푸핑 (spoofing) : 다른 사람의 컴퓨터 시스템에 접근할 목적으로 IP 주소를 변조 후 합법적인 사용자인 것처럼 위장하여 시스템 접근 ⇒ IP 주소에 대한 추적을 피하는 해킹 기법
  • 서비스 거부 공격 (Denial of Service)
    • 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
  • Port Scanning
    • 취약점 탐지의 사전 작업
    • 포트 스캐닝 자체로는 정상적인 동작이나 공격 용도로 이용할 때가 있음
    • 시스템이나 네트워크가 어떤 포트를 열고 서비스하고 있는지 알아내기 위한 작업

 

Standard security attacks

 

 

Cryptography as a Security Tool

네트워크로 연결된 컴퓨터에서는 네트워크 메세지의 잠재적인 송신자와 수신자가 존재한다.

운영체제 입장에서는 이 메세지를 어떻게 신뢰할까?

바로 Cryptography, 암호술이다. cryptography는네크워크에서 컴퓨터들에 대해 선택적으로 분산된 키(keys)를 기반으로 하여 네트워크를 신뢰할 수 있도록 한다.

 

 

암호화 (Encryption)

sender가 키를 가지고 receiver만 메세지를 읽을 수 있도록 함

  • 암호화 알고리즘의 컴포넌트
    • 키의 집합 : K
    • 메시지의 집합 : M
    • 암호화된 문자의 집합 : C
    • 암호화 함수 E : K -> (M -> C)
    • 복호화 함수 D : K -> (C -> M)
  • 암호화 알고리즘의 핵심적인 특징
    • 암호화된 문자 c가 주어졌을때 메시지 해석
    • 키 k를 보유한 컴퓨터는 암호문자를 복호화하여 일반 텍스트로 복호화 가능
    • 키 k를 보유하지 못한 컴퓨터는 암호문자를 복호화 불가능
    • 암호문자를 일반적으로 노출이 되어 있지만 암호문자로부터 키 k를 도출하는 것은 불가능

 

 

암호화 알고리즘의 종류

1. 대칭형(symmetric) 암호화 알고리즘

  • A와 B가 사용하는 key가 같을 때 (암호화, 복호화시 사용하는 키같음)
  • key는 보호되어야함

 

2. 비대칭형(asymmetric) 암호화 알고리즘

  • 암호화와 복호화하는데 key가 다름
  • 공개키 (public key) : 암호화하는데 사용되는 키
  • 개인키 (private key) : 복호화하는데 사용되는 키
  • 공개키는 외부에 공개되어도 상관 없지만, 개인키는 노출되어선 안

 

대칭형 암호화 알고리즘 (Symmetric Encryption)

  • 송신자와 수신자 모두 동일한 키를 가지고 암호화, 복호화 수행
  • 암호화와 복호화는 송신자와 수신자 둘 간의 발생할수도 있고 신뢰받는 3자를 통해서 발생할 수 있음
  • 대칭형 암호화 알고리즘 종류
    • DES : Data Encryption Standard
    • AES : Advanced Encryption Standard

 

 

비대칭형 암호화 알고리즘 (Asymmetric Encryption)

  • 공개키와 개인키를 구분하여 암호화와 복호화 수행하는 방식
  • 암호화 키와 복호화 키를 서로 다르게 쓰면 누가 listening해도 상관 없음
  • 공개키는 외부에 노출 가능하지만 개인키는 노출되어선 안됨
  • RSA 알고리즘 : Rivest, Shamir, and Adleman
    • 현대까지도 많이 사용되는 비대칭 알고리즘

 

 

인증 (Authentication)

  • hashing을 통해 키를 가진 수신자만 복호화
  • 송신자의 메세지를 제한하여 중간에 수정되지 않도록 보장
  • 인증 알고리즘  
    • 키의 집합 : K
    • 메시지의 집합 : M
    • 인증자들의 집합 : A
    • 보안(해시) 함수 S : K-> (M->A)
    • 검증(verification) 함수 V : K->(M x A -> {true, false})
  • 메세지 m이 주어지면 메세지를 가지고 k를 알아야 컴퓨터는 인증자 a 생성 가능 (ex 전자서명)
  • 오직 k를 가지고 있는 경우에 V_k(m, a) = true 
    • k를 가지고 있는 경우 메세지에 인증자를 생성하여 확인 
    • 그렇지 않으면 인증자 생성 불가
  • 인증 알고리즘의 종류
    • MAC : Message-Authentication Code
    • Digital Signature Algorithm

 

 

Goals of Protection

  • 컴퓨터 시스템에 의해 정의된 자원에게만 프로세스와 사용자에게 권한 부여해줌 
  • 컴퓨터 시스템의 reliability를 증가하여 인터넷과 같은 보안 커뮤니케이션 platform에 접근하도록 함

 

 

최소한의 권한 원칙 (The Principle of Least privilege)

  • 프로세스, 유저, 시스템에게 최소한의 권한 부여
    • ex) UNIX user & file privileges : root, sudo, chmod
    • permissions 획득해야지 악성 공격 가능성 완화

 

Access Matrix

  • matrix로 ACL (Access Control LIst, 권한의 집합)을 생성하여 어디까지 접근 가능한지 정리
  • 어떤 도메인에 어떤 객체가 접근 가능한지 행렬로 정리해 정책(policy)을 관리

 

Sandboxing & Code Signing

  • Sandboxing
    • credential 있는 프로세스만 유효한 범위 내에서 실행 가능
    • running process와 같이 할 수 있는 거만 제한
      • ex) JAVA and .NET
  • Code signing
    • 어떤 프로그램이나 스크립트, 앱을 어떻게 실행할 수 있을까? 만약 코드나 스크립트가 바뀐다면?
    • 프로그램에 Code signing을 하여 안전한 프로그램임을 인증 (digital siging of programs and executables)
      • 전자 서명, Operating System의 patch 작업, 안드로이드나 iOS 앱에서 사용

'CS > 운영체제' 카테고리의 다른 글

[공룡책🦖] ch11 Storage Managemet  (0) 2023.07.29
[공룡책🦖] ch10 Virtual Memory  (0) 2023.07.27
[공룡책🦖] ch9 Main Memory  (0) 2023.07.25
[공룡책🦖] ch8 Deadlocks  (0) 2023.07.23
[공룡책🦖] ch7 Synchronization Examples  (0) 2023.07.21

+ Recent posts