어떻게 하면 잘 정리했다고 소문이 날까...

[네트워크 8편] Computer Netwrok Security 본문

CS 지식/NTW(네트워크)

[네트워크 8편] Computer Netwrok Security

정리왕이되자 2023. 8. 22. 16:02

8편은 총 7개의 내용으로 구성됩니다.

 

1. What is Network Security?

2. Principle of Encryption

➕ Public Key and Shared Key

3. 메세지 무결성과 전자 서명

4. End to End Point Authentication

5. 전자우편의 보안

6. TCP 연결의 보안: SSL

7. 네트워크 계층 보안: IPSec and VPN

 

✔️ What is Network Security?

  • 안전한 통신에 요구되는 특성.
  • 기밀성: 송신자와 지정된 수신자만 내용을 알아야 함. (암호화)
  • 메세지 무결성: 주고받는 메세지가 중간에 변경되면 안된다.
  • 종단점 인증: 송,수신자는 통신에 참여한 상대방의 신원을 알아야 함.
  • 운영 보안: 네트워크가 외부에서 공격받지 않도록 보호해야 함.
  • 보안을 위해 제어 메세지와 데이터 메세지를 주고 받을 수 있음.
  • 침입자가 할 수 있는 일.
    • 엿듣기, 메세지 내용 조작 및 삽입, 삭제.

 

✔️ Principle of Encryption

  • 기밀성 보장을 위해 활용.
  • 평문 - (암호화 알고리즘 + 암호화 키 ) -> 암호문.
  • 암호문 - (복호화 알고리즘 + 복호화 키) -> 평문.
  • 암호화 키 = 복호화 키 (대칭키 알고리즘)
  • 암호화 키 != 복호화 키 (공유키 알고리즘)
    • 한 쌍의 키: Public key, Private Key
    • 한 명이 모두 소유함.
    • public key는 공개한다.
    • private key는 본인이 소유함.
  • Symmetric Key
    • 스트림 암호(무선 랜 암호) / 블록 암호(IPSec, SSL, PGP)
    • 블록 암호
      • 메세지를 k비트의 블록 단위로 암호화.
      • 사상표를 가지고 있다면 암호화, 복호화 가능.
      • 단순한 공격으로 Brute Force가 존재.
      • 실제 사용하지 않음.
    • 대신 입출력 블록의 순열 테이블을 임의로 모방하는 함수 사용하기.
    • DES/3DES/AES
      • DES(Data Encryption Standard)
        • 56비트의 키, 64비트의 블록
        • 키로 평문을 암호화 하기.
      • 3DES
        • DES를 강화한 것이 3DES.
        • DES를 3번 매번 다른 키로 암호화 하기.
      • AES(Advanced Encryption Standard)
        • 128-256비트의 블록, 128비트의 키.
        • 완전 탐색으로 해결하려면 최소 149조년이 걸림.
    • 암호 블록 체이닝
      • 원문이 너무 길다보면, 같은 블록이 반복되고 같은 블록이 생기면 내용을 예측할 수도 있음.
      • 임의의 수 r(i)를 생성하고 암호문 c(i)와 r(i)를 번갈아가며 전송.
      • 문제점 발생 - 대역폭 낭비.
      • 해결방안 - CBC(Cipher Block Chaining)
        • 첫번째 메세지와 임의의 수는 한번만 전송하고, 이후 임의의 수로 직전에 계산된 암호문 블록을 대신 사용하기.
        • c(i) = Ks(m(i) + c(i-1))
  • Public Key
    • 한 명이 public key와 private key 모두 소유.
    • 공개키는 세상에 공개, 개인키는 비밀 유지.
    • 문제점 발생: 암호화 알고리즘과 public key로 지정된 수신자가 아닌데 지정된 수신자처럼 보이게 할 수도 있음.
    • RSA 알고리즘.
      • modular 연산 + 소수 + 인수분해 사용.
      • K+(K-(m)) == K-(K+(m)) == m
    • 세션키
      • 세션키: 데이터 암호화에 사용할 비밀 키.
      • DES는 RSA보다 100배는 빠르다.
      • 상호 간 shared key(=symmetric key)를 가지기 위해서 RSA를 사용한다.
      • 첫번째 connection은 RSA로 하고 나머지는 Shared Key로 암호화 진행한다.

 

➕ Public Key and Shared Key

매번 public key와 private key로 암호화/복호화하게 되면 메세지를 주고 받는 속도가 매우 느려지게 됩니다. 그러므로 그것보다는 빠른 shared key를 활용해 암호화, 복호화하고 싶은데 문제는 shared key를 보안 상 문제 없도록 나누어 가져야 한다는 것입니다. 그래서 이 과정에서 shared key를 받는 사람의 public key로 암호화 하고 받는 사람이 private key를 활용해 복호화 하여 shared key가 서로 공유되면 이후 주고 받는 데이터는 shared key를 이용해 암호화, 복호화 합니다.

 

 

✔️ 메세지 무결성과 전자서명

  • 확인해야 하는 중요한 요소 2가지
    • 진짜 약속된 송신자로부터 온것인가?
    • 중간에 메세지 내용이 바뀌지 않았는가?
  • 암호화 해시 함수
    • 해시를 사용하는 이유는? 고정 크기로 만들기 위해서.
    • 조건
      • H(x) = H(y)는 성립되면 안되므로, H(x)가 되는 y가 존재해서는 안된다.
    • MD5, SHA-1 알고리즘이 존재한다.
  • 메세지 인증 코드 (Message Authentication Code)
    • 암호화 해시 함수 + 인증 키(비트열 형태의 공유키)
    • m + H(m+s) -> H(m+s)와 m에 s를 더하여 해싱한 뒤 비교.
    • MAC의 특성
      • 암호화 알고리즘을 사용하지 않음.
      • 복잡한 알고리즘을 사용하지 않고도 메세지 인증 가능.
    • 인증 키 공유 방법
      • 네트워크 관리자가 공유.
      • RSA로 암호화 해서 전달.
    • OSPF와 같은 라우팅 쪽에서 사용.
  • 전자서명
    • 서명자 입증 + 위조가 아님을 증명. (고유한 키를 지녀야 함.)
    • MAC은 키를 공유한다는 점에서 전자서명으로 적합하지 않다.
    • public key 방식이 적당함.
    • K-(m): private key로 암호화 하여 전송하기.
      • 개인키를 가진 사람은 본인이 유일하다.
      • K+(K-(m))으로 메세지를 획득할 수 있다.
    • 공개키 방식은 larger load이다. -> 해시 사용하기.
      • 고정 크기로 바뀌면 시간이 작아짐.
    • K-(H(m)), m -> K+(K-(H(m))과 H(m)을 비교하기.
    • MAC과 전자서명의 차이
      • MAC은 공개키나 대칭키 알고리즘을 사용하지 않음.
      • 전자서명은 공개키 알고리즘을 사용하기 때문에 더 무겁다.
  • 공개키 인증
    • 전자서명의 중요한 인증.
    • 공개키가 특정 통신 개체에 속한다는 것을 보장.
    • 통신하려는 상대 게체의 공개키를 잘 가지고있는 것인지 확인이 필요.
    • 인증 기관 (Cerificate Authority)
      • 공개키가 보증된 키임을 보장하는 것.
      • CA는 해당 개체의 신분을 확인.
      • 이를 바탕으로 (공개 키와 신분 확인서)를 활용하여 인증서 제작.
    • (K+, 통신개체) -> K-ca로 암호화 하기 -> K+ca로 풀어서 가지기.
    • public key 얻는 방법
      • request 시에 CA가 인증서 전송.
      • CA의 public key로 열어서 유효성 검증 후 통신 개체의 public key 획득.

 

✔️ End-to-End Point Authentication

  • 종단점 인증
    • 하나의 통신 개체가 다른 개체에게 자신의 신원을 컴퓨터 네트워크 상으로 증명하는 작업.
  • 인증 프로토콜
    • 가장 먼저 수행되어어야 하는 프로토콜
  • ap 1.0
    • 앨리스 - m -> 밥
    • 문제 상황: 트루디 - m -> 밥 (트루디가 앨리스 인척 밥에게 메세지 전달)
  • ap 2.0
    • 앨리스 - m, 앨리스의 IP 주소 -> 밥
    • 문제 상황: 트루디 - m, 앨리스의 IP주소 -> 밥
      • 트루디가 IP datagram에서 자신의 주소를 앨리스의 주소 바꾸어 전송할 수 있다. -> IP Spoofing
  • ap 3.0
    • 앨리스 - m, pwd -> 밥
    • 문제: 트루디가 둘이 주고 받는 pwd를 알아버리고 앨리스 인척 전송 가능.
  • ap 3.1
    • 앨리스 - m, Ks(pwd) -> 밥
      • 자기랑 pwd가 같다면 인증.
    • 문제점
      • pwd는 안전할지라도, 재생 공격(Playback Attack)에 노출.
        • Ks(pwd)를 가지고 있다가 보내기.
        • ap 3.0과 같은 상황.
  • ap 4.0
    • ap 3점대의 문제는 live 하지 않다는 점.
    • 그래서 TCP는 3 way handshaking으로 SYN과 ACK을 주고 받으면서 seq number로 현재 live 한지 확인한다.
    • nonce는 프로토콜이 평생에 한번 사용.

 

✔️ 전자 우편과 보안

  • 왜 보안 기능이 하나 이상의 계층에서 제공되어야 하나?
    • 네트워크 계층 보안이 사용자 수준의 보안까지 보장할 수 없다.
    • 사용자 서비스의 구현이 다양화되고 있다.
  • 보안 전자 우편
    • 기밀성, 송신자 인증, 메세지 무결성, 수신자 인증이 보장되어야 함.
    • 기밀성, 수신자 인증: 이 메세지는 송신자와 수신자 만이 내용을 알아야 함. (대칭키, 공개키 암호화)
    • 메세지 무결성, 송신자 인증: 전자서명, 해시
    • 전체적인 플로우
      • 전달하고자하는 메세지: m
      • H(m) 해싱함수를 거치고 Client의 private 키로  Client-(m+H(m)) 생성. -> 메세지 무결성.
      • PR-(m+H(m)) == O
      • 공유키로 암호화 하고  이를 server의 public key로 암호화한 공유키를 같이 보내기.
        • Server+(Ks) + Ks(O) 전송. -> 기밀성
    • Pretty Good Privacy
      • PGP 소프트웨어가 설치 되면,
        • 공개키 쌍이 생성됨.
          • 공개키는 서버에 등록되거나 브라우저에 공개.
          • 개인키는 비밀번호로 접근이 가능.
        • 공개키 인증은 CA로 하지 않고 사용자가 신뢰의 그물(web of trust)로 인증.

 

✔️ TCP 연결의 보안: SSL

  • 향상시킨 TCP = SSL (Secure Socket Layer)
  • 브라우저와 서버 간 통신은 SSL 위에서 이루어짐.
  • SSL은 기밀성, 데이터 무결성, 클라이언트 및 서버의 인증으로 TCP 향상.
  • SSL은 HTTP에 행해지는 거래에 보안을 제공하기 위해 사용.
  • SSL은 TCP를 보호하기 위해 생성.
  • SSL은 Socket을 이용해 API 제공 가능.
  • 실제로 응용 계층에 위치해있지만, 개발자적 관점에서는 통신 계층에 있는 것으로 본다. 
  • SSL 개요

SSL 핸드셰이크 과정

  • almost SSL: SSL의 단순 버전.
  • 총 3단계 : 핸드셰이크, 키유도, 데이터 전달.

  • 핸드셰이크
    • 클라이언트와 서버가 SSL 세션의 처음인 핸드셰이킹 단계에서 암호화 알고리즘에 대한 협의를 함.
    • SSL에서 사용할 nonce는 키 생성을 위해 존재.
    • 클라이언트는 모든 핸드셰이킹 메세지를 연결하고 이에 대한 MAC을 전송.
      • 중간에 변경된 내용이 없는 지 확인하기 위함.
    • 서버는 자신의 MAC과 비교.
    • nonce는 연결재생공격을 방지.
    • 순서 번호는 개별 패킷의 재생 대응.
  • 키 유도
    • Master Secret으로 4개의 키를 생성.
      • E(client): 클라이언트에서 서버로 데이터 전송 시 사용하는 세션 키(대칭 키)
      • M(client): 클라이언트에서 서버로 데이터 전송 시 사용하는 MAC 키.
      • E(server): 서버에서 클라이언트로 데이터 전송 시 사용하는 세션 키.
      • M(server): 서버에서 클라이언트로 데이터 전송 시 사용하는 MAC zl.
    • 각자 4개씩 생성.
  • 데이터 전송
    • TCP는 바이트 스트림으로 SSL에 끊임없이 암호화되고 전송.
    • 무결성을 확인하기 위해 SSL은
      • 스트림을 record 단위로 쪼재고
      • record + MAC키 포함시킨다.
    • 전송: E<client>(H(record+M<client>+counter)+record)
    • 트루디가 순서를 바꿀 수 있기 때문에 순서번호도 사용.
  • 종료
    • SSL 레코드의 타입 필드 자리에 해당 레코드가 SSL 종료를 수행할 것인지를 표시.

 

✔️ 네트워크 계층 보안: IPSec과 VPN

  • VPN 구축을 위해 IPSec 사용.
  • IPSec과 VPN: Virtual Private Network
    • PN(Private Network)
      • 기관의 공공 인터넷과 완벽하게 분리된 라우터, 링크, DNS 시스템을 포함한 물리적으로 독립된 네트워크.
      • 공공 인터넷 상에 VPN 설치.
    • VPN(Virtual Private Network)
      • 공공 인터넷 트래픽으로 들어가기 전 암호화하는 과정.
        • ex) 
          • 본부 직원이 호텔에 있는 직원에게 데이터그램 전송.
          • gateway router는 IPV4 데이터그램을 IPSec 데이터그램으로 바꿈.
          • IPSec Datagram에는 IPSec header가 존재.
    • AH and ESP
      • IPSec 프로토콜 내의 주요 2가지. (IPSec 개체 전송 시 사용하는 프로토콜)
        • AH(Authentication Header): 출발지 인증, 메세지 무결성.
        • ESP(Encapsulation Security Payload): 출발지 인증, 메세지 무결성, 기밀성.
    • Security Associations
      • SA(Security Associations): 데이터 그램 전송 전 네트워크 개체 간의 논리적 연결 설립.
        • 단방향 연결 (그러므로 상호 주고 받기 위해서는 양방향으로 해야함)
      • IPSec 개체는 SA 정보를 알고 유지하고 접근한다.
        • SA에 대한 모든 정보는 OS의 커널 SAD에 저장.
    • IPSec Datagram
      • 패킷이 2가지 형식
        • tunnel 모드 (종단 라우터 간)
        • 전송 모드 (종단 호스트 간)
      • 데이터 그램
        • 새 IP header+ ESP header + Secure Payload + Original IP header + ESP trailer + ESP MAC