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
- 어떤 패킷을 드랍하고 들어오게 할지에 대한 정책은 네트워크 운영자가 결정한다.
- 특정 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
본 내용은 한양대학교 이석복 교수님의 강의를 참고하여 정리하였습니다. 교재는 Pearson/Addison Wesley에서 출판한 Computer networking : a top-down approach입니다. Firewall - 내부 네트워크를 외부 네트워크로
conkjh032.tistory.com
'📝Computer Science > network' 카테고리의 다른 글
네트워크 보안(1) _ Symmetric key, Public Key, Authentication (0) | 2023.07.28 |
---|---|
멀티미디어 네트워크 _ DASH, manifest (0) | 2023.07.28 |
무선 이동 네트워크(3) _ Cellular Network, mobility (0) | 2023.07.28 |
무선 이동 네트워크(2) _ IEEE 802.11 frame (0) | 2023.07.28 |
무선 이동 네트워크(1) _ CSMA/CA, RTS, CTS (0) | 2023.07.22 |