[운영체제][보호와보안] Security & Protection #1 Security

2022. 7. 29. 12:19OperatingSystem

보안(Security)이란 무엇인가?

  • 보안이란 컴퓨터 시스템의 물리적인 자원인 데이터와 코드에 대한 정보를 보호하기 위해서 사용자의 인증을 보장하는 것을 의미합니다.
  • 보안은 인증받지 않은 접근이나 악의적인 파괴나 변경, 실수에 의한 데이터 변경을 막아야 합니다.

 

보호(Protection)이란 무엇인가?

  • 보호란 운영체제로부터 적절한 권한을 얻은 프로세스만이 메모리, CPU와 같은 자원을 사용할 수 있도록 보장하는 것을 의미합니다.
  • 보호를 함으로써 사용자에게 허용되는 접근의 종류를 제한함으로써 시스템에 접근하는 것을 제어합니다.

 

보안 위배(Security Viloations) 

  • 쓰레드(Thread) : 쓰레드는 보안을 위반할 수 있는 잠재적인 가능성을 가지고 있습니다.
  • 공격(Attack) : 보안을 부수기 위해서 악의적으로 공격하는 것을 의미합니다.

 

보안 위배(Security Viloations) 종류

  • 무결성 위반(breach of confidentiality)
  • 통일성 위반(breach of integrity)
  • 유용성 위반(breach of availability)
  • 서비스의 절도(theft of service)
  • 디도스 공격(Distributed Dos)

보안의 4단계

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

 

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

  • 멀웨어(Malware)
    • 멀웨어는 컴퓨터 시스템을 공격, 비활성화 또는 손상시키도록 설계된 소프트웨어입니다.
    • 대표적으로 트로이 목마(Trojan Horse), 스파이웨어(Spyware), 랜섬웨어(Ransomware), 백도어(Backdoor), 로직붐(Logic Bomb)
  • 코드 주입(Code Injection)
    • 코드 주입의 대부분의 소프트웨어가 악의적이지는 않지만 코드 주입 공격으로 인해 심각한 피해를 입습니다.
  • 바이러스(Viruses)와 웜(Worms)
    • 바이러스는 일반적인 프로그램에 내장된 코드의 조각입니다.
    • 바이러스는 다른 프로그램을 감염하도록 자가복제합니다.
    • 웜은 사용자의 도움없이 스스로 복제하기 위해서 네트워크를 사용합니다.

 

시스템 및 네트워크의 위협

  • 네트워크 트래픽을 통한 공격
    1. 스니핑(Sniifing) : 네트워크 상에서 자신이 아닌 다른 상대방들의 패킷 교환을 가로채서 보는 공격입니다.
    2. 스푸핑(Spoofing) : 다른 사람의 컴퓨터 시스템에 접근할 목적으로 IP 주소를 변조한 후 합법적인 사용자인 것처럼 위장하여 시스템에 접근함으로써 나중에 IP 주소에 대한 추적을 피하는 해킹 기법의 종류입니다.
  • 서비스 거부 공격 (디도스 공격)
    • 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
  • 포트 스캐닝
    • 해커가 악의적인 공격을 수행하기 위해 취약점을 찾는 과정 중 수행하는 사전 작업입니다. 해당 시스템이나 네트워크가 어떤 포트를 열고 서비스를 하고 있는지 알아내기 위함입니다.

 

암호술(Cryptography)

  • 네트워크로 연결된 컴퓨터에는 네트워크 메시지의 잠재적인 송신자와 수신자가 존재합니다.
  • 그러면 어떻게 운영체제는 메시지를 신뢰할 수 있는가?
    • 암호술의 주요한 일은 네트워크에 신뢰할 필요를 제거하는 일입니다.
    • 네트워크에서 컴퓨터들에 선택적으로 분산된 키(keys)를 기반으로 합니다.
    • 키는 메시지를 암호화 또는 복호화하는데 사용됩니다.

 

암호화(Encryption)

  • 암호화는 송신자가 키를 가지고 있는 수신자만 메시지를 읽을 수 있도록 합니다.
  • 암호화 알고리즘의 컴포넌트는 다음과 같습니다.
    • 키의 집합 : K
    • 메시지의 집합 : M
    • 암호화된 문자의 집합 : C
    • 암호화 함수 E : K -> (M -> C)
    • 복호화 함수 D : K -> (C -> M)

 

암호화 알고리즘의 필수적인 속성

  • 암호화된 문자 c ( c는 집합 C의 요소)가 주어졌을때 메시지를 해석할 수 있습니다.
    • E_k(m) = c
  • 키 k를 보유한 컴퓨터는 암호문자를 복호화하여 일반 텍스트로 복호화 할 수 있습니다.
  • 키 k를 보유하지 못한 컴퓨터는 암호문자를 복호화할 수 없습니다.
  • 암호문자를 일반적으로 노출이 되어 있지만 암호문자로부터 키 k를 도출하는 것은 불가능합니다.

 

암호화 알고리즘의 종류

  1. 대칭형(symmetric) 암호화 알고리즘
    • 동일한 키(key)가 암호화와 복호화에 사용됩니다.
    • 키 k는 무조건 보호되어야 합니다.
  2. 비대칭형(asymmetric) 암호화 알고리즘
    • 암호화와 복호화하는데 다른 키를 사용합니다.
    • 암호화하는데 사용되는 키를 공개키(public key)라고 하고 복호화 하는데 사용되는 키를 개인키(private key)라고 합니다.
    • 공개키는 외부에 공개되도 상관없지만 개인키는 노출되서는 안됩니다.

 

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

  • 대칭형 암호화와 복호화는 송신자와 수신자 둘 간의 발생할수도 있고 신뢰받는 3자를 통해서 발생할 수 있습니다.
  • 대칭형 암호화 알고리즘 종류
    • DES : Data Encryption Standard
    • AES : Advanced Encryption Standard

위 그림을 보면 송신자와 수신자 모두 동일한 키를 가지고 암호화와 복호화를 수행하는 것을 볼 수 있습니다.

 

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

  • 비대칭형 암호화 알고리즘은 공개키(public key)와 개인키(private key)를 구분하여 암호화와 복호화를 수행하는 방식입니다.
  • 공개키는 외부에 노출되어도 되고, 개인키는 노출되면 안됩니다.
  • RSA 알고리즘의 종류 : Rivest, Shamir, Adleman

위 그림을 보면 송신자는 공개키를 이용해서 암호화를 수행하고 수신자는 개인키를 이용해서 복호화를 수행하는 것을 볼 수 있습니다.

 

인증(Authentication)

  • 암호화는 메시지를 수신이 가능한 수신자들을 제한하는 방법을 제공합니다.
  • 그에 반해 인증은 메시지를 송신할 수 있는 송신자를 제한하는 방법을 제공합니다.
  • 인증은 메시지가 변질되지 않았다는 것을 보장하는데 유용합니다.

 

인증 알고리즘의 컴포넌트

  • 키의 집합 : K
  • 메시지의 집합 : M
  • 인증자들의 집합 : A
  • 보안(해시) 함수 S : K-> (M->A)
  • 검증(verification) 함수 V : K->(M X A -> {true, false})

 

인증 알고리즘의 속성

  • 메시지 m이 주어졌을 때 컴퓨터는 한 인증자 a를 생성할 수 있습니다.
    • 오직 k를 가지고 있는 경우에만 V_k (m, a) = true입니다.
  • 컴퓨터가 k를 가지고 있는 경우에 메시지에 인증자를 생성하여 k를 보유한 모든 컴퓨터가 인증자를 확인할 수 있습니다.
  • 그러나 컴퓨터가 k를 가지고 있지 않은 경우에는 메시지에 인증자를 생성하지 못합니다.

 

인증 알고리즘의 종류

  • 해시 함수 H(m)은 작고 고정된 크기의 데이터 블록을 생성합니다. 이 데이터 블록은 메시지 m에서 메시지 요약(또는 해시 값)으로 알려져 있습니다.
  • MAC : Message-Authenication Code
    • 비밀키를 사용하여 암호화된 체크섬이 생성됩니다.
  • Digital Signature Algorithm
    • DSA는 누구나 메시지의 신뢰성을 확인할 수 있는 디지털 서명을 생성하는 알고리즘입니다.
    • 디지털 서명은 공개키에서 개인키를 도출하는것이 계산적으로 불가능하기 때문에 매우 유용합니다.

 

References

source code : https://github.com/yonghwankim-dev/OperatingSystem_Study
Operating System Concepts, 10th Ed. feat. by Silberschatz et al.
[인프런] 운영체제 공룡책 강의