본문 바로가기
📝Computer Science/network

네트워크 보안(2) _ SSL, Firewall

by haegomm 2023. 7. 28.

 SSL and TCP/IP 

  • 인터넷을 사용할 때 대부분의 상황은 웹브라우저를 사용하여 HTTP 프로토콜을 사용하는 것이다.
  • HTTP는 TCP 통신이기 때문에 TCP가 제공하는 기능을 사용하고 제공하지 않는 기능은 사용할 수 없다. 대표적인 것이 보안이다.
    • 이에 대한 응급처방으로 나온 것이 SSL이다.
  • SSL은 하나의 라이브러리이기 때문에 인터페이스가 존재하고, 어플리케이션에서 해당 인터페이스 창구를 이용하여 plain text를 내려보내면 SSL은 암호화 한 뒤 TCP 계층으로 내려보낸다.
  • 새로운 계층이라는 개념보다는 어플리케이션 계층에서 사용되지만 계층처럼 역할을 하기 때문에 Secure Socket Layer 라고 하기도 하고 요즘엔 Transport Layer Security (TLS) 라고도 많이 쓴다.
  • HTTP를 SSL를 통해서 내려 보낸 것 ⇒ HTTPS

 SSL 

동작 과정

  • 클라이언트와 서버 사이에 SSL이 왔다갔다 하기 위해서는 TCP 커넥션이 생성되어 있어야 한다.
  • 클라이언트는 서버에게 https로 요청을 보낸다.
  • 서버는 공인 인증기관에서 발급한 private key로 암호화된 server의 인증서를 보낸다.
    • 인증서 구성 → 자신이 누구인지와 서버의 public key가 담겨있다.
  • 클라이언트는 공인 인증기관의 public key로 복호화하여 내부에 있던 서버의 public key를 얻는다.
  • 클라이언트는 4개의 키로 구성된 master secret key를 생성하고 서버의 public key를 암호화하여 보낸다.
  • 서버는 자신의 private key로 메시지를 복호화하고, master secret으로부터 대칭키와 MAC키를 생성한다.
  • 생성된 key들로 암호화 통신을 한다.

Master secret key의 종류

1️⃣ Kc

  • client가 server에게 데이터를 보낼 때 암호화하는 대칭키

2️⃣ Mc

  • client가 server에게 데이터를 보낼 때 MAC을 만들기 위해 필요한 키

3️⃣ Ks

  • server가 client에게 데이터를 보낼 때 암호화하는 대칭키

4️⃣ Ms

  • server가 client에게 데이터를 보낼 때 MAC을 만들기 위해 필요한 키

❓ 왜 secret key를 4가지로 만들까?

❗만약에 private key가 유출된 경우 피해가 엄청 클 것이다. 이 피해를 최소화 하기 위해 secret key를 네 가지로 만든다.

 

 data records 

  • 어플리케이션에서 SSL을 통해 내려간 데이터 ⇒ records
  • records는 length, data, MAC으로 이루어져있다.
    • 이때 MAC은 message authentication code이다.
    • Hash(data | key)
    • 여기서 key는 이전 three handshake에서 만든 4가지 키 중 하나이다.
    • 공격자는 key가 없기 때문에 MAC을 만들 수 없다.
  • 이 records가 TCP의 data에 들어가게 된다. 암호화 되어 있기 때문에 볼 수 없고 MAC에 의해서 변조를 판단 할 수 있다.

 

MAC

 

  • MAC은 데이터의 뒤에 붙어서 메시지가 온전하게 도착하게 하는 보안 기능을 한다.
  • MAC key와 정보들이 해시 함수를 통과하여 도착지에 도달하면, 호스트는 정보와 자신이 가진 MAC key를 해시 함수에 넣어서 두 MAC 값을 비교한다.
    • 결국 MAC key가 있어야 메시지 변경시 호스트를 구할 수 있는데 MAC key는 구할 수 없다.
  • MAC은 일종의 해시 값으로, 위의 Mx 키와 메시지 순서, 데이터의 종류, 데이터를 합친 것을 해시 함수에 넣어서 나온 값이다.
    • + MAC = H(MACx, sequence||type||data)
  • 중간에 제 3자가 a패킷과 b패킷의 payload를 바꾸었을 때, 목적지 호스트는 바뀐 패킷인지 모르고 어플리케이션 계층으로 올려버리면 내용물이 뒤죽박죽되어 쓸 수 없어지기 때문에 sequence넘버를 넣는다.
  • 중간에 제 3자가 의도적으로 type을 바꾸어 tcp 연결을 강제로 끊는 것을 방지하기 위해 type을 넣는다.

 

 SSL record protocol 

  • data는 조각으로 나뉜다.
  • 여러 header의 정보들(type, seq, etc) 과 MAC key를 함께 해시 함수에 넣어 MAC을 만들고 붙인다.
  • 대칭키를 사용하여 data fragement와 MAC을 암호화 한다.

 

 Firewall 

  • 내부 네트워크를 외부 네트워크로부터 격리시켜서 packet의 이동을 관리하는 보호기능이다.
  • 외부의 악의적인 트래픽으로부터 보호할 수 있다.
  • Gateway router에 구현되어 있다.
  • 들어오고나가는 packet들 중 내부 네트워크 정책에 반하는 packet은 필터링해서 막는다.

 

Stateless packet filters

                                                                                                             Firewall에 설정이 적용된 table

  • 어떤 패킷을 드랍하고 들어오게 할지에 대한 정책은 네트워크 운영자가 결정한다.
  • 특정 IP, port에 대한 ingoing, outgoing 패킷을 어떻게 할지에 대한 정책을 세울 수 있다.
  • 그러나 이 룰을 구현할려면 TCP 헤더까지 봐야한다. router에서는 IP 헤더만 봐야하는데 방화벽은 TCP 헤더까지 보기 때문에 Layering Violation이 된다.

 

Stateful packet filters

  • TCP의 연결상태를 추적하여 필터링한다.
    • 위 예시에서 보면, request과 response는 독립적이다.
    • 즉, request를 안했지만 response가 들어온다면 들여보내 준다. 따라서, TCP 연결 상태를 확인할 필요가 있다.
  • SYN과 FIN을 추적하여 오는 정보인지 나가는 정보인지 확인한다.
  • Timer을 이용하여 나가고 오는 정보를 관리한다.

참고자

Network security : Firewall

 

Network security : Firewall

본 내용은 한양대학교 이석복 교수님의 강의를 참고하여 정리하였습니다. 교재는 Pearson/Addison Wesley에서 출판한 Computer networking : a top-down approach입니다. Firewall - 내부 네트워크를 외부 네트워크로

conkjh032.tistory.com