본문 바로가기
CS이론/네트워크

네트워크 보안

by limew 2024. 2. 16.

Network security

네트워크 보안의 4가지 요소

 

 

1. confidentiality: 기밀성, 센더와 리시버의 통신 내용을 제 3자가 알아서는 안된다

2. authentication: 인증, 상대방이라는걸 확신할 수 있어야 한다

3. message integrity: 중간에 메시지 변경이 일어나면 안된다

4. access and availability: 데이터 통신은 24시간 내내 누구에게나 이루어 질 수 있어야 한다

 

- 하지만 이런 요소들은 OSI 계층 어디에도 포함되어 있지 않음, 새로운 문제가 생길때마다 각각 계층에 필요한 패치를 추가하는 방식으로 보안을 구축하고 있음

 

 

 

- Wireshark 툴을 사용하면 IP패킷의 sour, desc와 TCP 세크먼트의 헤더, 메시지 다 보임(HTTPS는 메시지는 감춰줌)

- 모두가 trudy가 될 수 있다.

 

TOR

 

TOR : 여러 곳을 둘러 접근하여 내가 어떤 서버에 접근하는지 모르게함

너무 느림, 테러리스트가 씀

 

proxy를 통해 우회

 

symmetric key 방식:

- 앨리스랑 밥이 plaintext(m)를 주고 받을때

- 암호화 하기 위해서는 2가지의 key가 필요함, 암호화 하는 key(Ka(m))와 해독하는 key(Kb(Ka(m)))

 

 

- 앨리스와 밥이 같은 key를 갖고 있어 앨리스가 보낼때 해당 key로 암호화 하고 밥이 받을때 해당 key로 해독함

- 하지만 이 경우 데이터 통신 전에 어떤 key를 써서 암호화 할건지 사전 합의하는 작업이 필요함

 

 

 

 

- 사전 합의 없이 암호화를 하기 위해 모든 인터페이스마다 2가지 종류의 key를 가지게 함

- 모든 사람에게 공개되는 public key와 자기 자신만 볼수 있는 private key

- 앨리스는 공개된 public key로 밥에게 메시지를 보내면 밥은 자기 자신만 볼수 있는 private key로 암호를 해독함

- 이렇게 암호화 하는 방식을 RSA78 이라고 함

- RSA의 특징 중 하나는 key의 순서가 상관 없다는것, public key 먼저 적용시키나 private key 먼저 적용시키나 똑같은 메시지를 볼수있음

- RSA는 key를 하나만 가지는 암호화 방식보다 몇천배 더 시간이 소요됨, 그래서 처음에 symmetric key를 사용하기 위해 어떤 key를 쓸건지 정할때만 RSA 방식을 사용하고 key가 정해진 다음에는 symmetric key 방식으로 통신함

 

 

Authentication

- symmetric key 혹은 RSA 방식을 사용하면 내가 보내는 데이터를 다른 사람이 알아차리지 못하게 상대방 에게만 전달 할 수 있음

- 하지만 그 발신자를 믿을 수 있는지에 대해서 검증을 해야됨

 

 

- 앨리스가 데이터를 보내고 밥이 받으면, 그게 앨리스인지 확인하기 위해 랜덤한 숫자(R)를 보냄

- 앨리스는 그 숫자를 암호화 해서 밥에게 보냄, 밥이 그걸 받아서 해독한 후 R과 같으면 앨리스인지 확인할 수 있음

 


 

http는 tcp기반의 프로토콜

tcp는 reliable, inorder delivery, 혼잡제어, 흐름제어를 제공하지만, 보안을 제공하지 않는다.

SSL secure socket layer

- 실제 레이어는 아닌데 애플리케이션 층, 전송계층 사이에서 TCP 보안을 제공하는 라이브러리이다.

- TLS (transport layer security) 라고도 불린다

 

 

 

http를 SSL을 사용하여 내려보내는 것이 바로 https이다

http + ssl = https

 

 

어떤식으로 동작할까

 

 

 

ssl을 위해 필요한 기본동작

 

 

- ssl은 tcp기반

- tcp가 연결된 뒤 ssl연결

- 서버가 클라이언트에게 인증서를 주고, 클라이언트가 서버의 키를 가지고 암호화

 

 

우리나라는 우리가 인증서를 제공해야하니까 불편하다 (기술보다 정책적 문제)

 

app의 전송단위는 메시지

ssl의 전송단위는 레코드

transport의 전송단위는 세그먼트

 

메시지가 들어오면 아래와같은 레코드로 변환한 뒤 내려간다

 

 

  • length
  • data: 해쉬 함수에 넣어 나온값
    • key를 data와 같이 붙여서 전송하는데 key는 제3자는 모른다.
    • 따라서 attacker는 key가 없기 때문에 mac을 만들수 없다
  •  mac: 보안 message authentication code (링크레이어의 mac과 다름)

위의 record가 더 아래로 내려가면 세그먼트의 data 부분에 담긴다

 

 

attacker가 할 수 있는 일

센더, 리시버 모르게 방해

 

레코드의 순서를 바꾸는 문제

=> 이걸 막기위해 mac에 sequence도 같이 넣는다

tcp의 시퀀스와 다르다

 

데이터가 다 도착하기 전에 tcp fin을 보내는 문제

=> ssl이 데이터전송을 다 했는지 까지 확인

type이 0이 될때까지 

 

 

 

 

https를 사용하고 싶으면 인증서를 준비해야함

 

 

  • tcp 연결, tcp syn, syn ack
  • hello
  • 서버가 클라한테 인증서 제공
  • 클라이언트가 인증서를 통해 secret key를 정하고
  • key4가지 생성
  • 데이터통신

 

 

app data 메시지에 + mac을 붙히고 

key를 사용하여 mac을 포함한 이 전체를 encrypt하여 내려보낸다

 

받는 사람은 key를 풀어서 두번째 줄을 끄집어내고, mac을 확인하고 맞으면 위로 올린다.

 

 

Firewall

 

네트워크 gateway에 자리하여 외부로 나가거나 내부를 들어오는 패킷을 감시하여 통과시킬지 결정한다.

모니터링 필터링 디바이스이다.

네트워크를 가진 대부분 기관에 firewall이 설치되있다.

 

 

통과시키는 룰은 다음과 같은 네트워크 정책을 따른다

 

첫번째 정책

웹브라우저 못 하는 것

라우터는 ip헤더까지만 확인하는데, firewall은 tcp 헤더까지 확인한다

 

gateway router에서 동작하는 것

NAT, DHCP, DNS, Firewall

 

두번째 정책

내부 네트워크에 웹사이트 하나만 운영하고 나머지는 운영금지

내부로 들어오는 tcp, syn packer 다 드롭

 

 

ssh: 

 

firewall에 들어가는 rule table (패킷 별로 판단한다)

 

1. http req

2. http res

3. dns req

4. dns res

 

 

 

 

패킷을 판단하기 전에 tcp연결이 있어야한다

모든 tcp 연결을 트래킹해서 있으면 통과한다

 

 

강의요약 키워드