본문 바로가기

CS 전공수업/컴퓨터 네트워크

[네트워크] 네트워크 보안

1 네트워크 보안 개요 Network Security Overview

네트워크 보안에서 중요한 여러가지 요소들은,

  • Confidentiality 기밀성: 오직 의도된 수신자만 메시지를 볼 수 있도록 함. Encryption - Decryption.
  • Authentication 인증: 수신자는 메시지의 발신자를 확인할 수 있음.
  • Availability 가용성: 서비스 및 데이터가 사용자에게 제공될 수 있도록 함. <-> DDoS 공격에 취약함.
  • Data Integrity 데이터 무결성: 메시지의 변경 사항(전송 中 또는 이후)을 감지할 수 있음.

뭔가 그럴듯한 이름을 붙였지만, 사실 당연한 것들이다. 이메일로 예를 들자면,

 

이메일 받기로 한 사람이 받아야 하고 - 기밀성,

받는 사람은 누가 보냈는지 알 수 있어야 하고 - 인증,

받았으면 열어 내용을 확인할 수 있어야 하고 - 가용성,

이메일 내용이 송신인에 의해 편집되거나 하면 받는 사람이 알 수 있어야 하고 - 데이터 무결성

 

 

2 암호화 기본 Basics of Crytography

Alice와 Bob이 커뮤니케이션을 진행하려는데, Trudy가 사이에 껴서 이를 방해하려고 함.

이대로 두면 Alice가 보내는 족족 Trudy가 열어서 개판 만들고 다시 모른 체하며 Bob에게 넘겨주기 십상.

그래서 나온 게 보안 알고리즘.

 

그런데, Alice와 Bob이 오프라인 상으로 실제로 만날 수 없을 수도 있는데, 어떻게 둘만의 키를 만들지?

RSA 알고리즘

 

Alice와 Bob 사이에만 쓰는 둘만의 비밀 키 같은 건 없다! 대신, 각자가 한 쌍의 키를 가지고 있다: public - private

  • 보낼 때: Alice는 Kb+라는, Bob의 public 키를 들고 본인의 편지를 잘 잠근다.
  • 받을 때: Bob은 본인의 Kb- 키로 그걸 연다.

* 참고로, Kb+ 키를 통해 Kb- 키를 유추할 방법은 없다.

* 그리고, Kb-(Kb+(m)) = m = Kb+(Kb-(m)) 이다. 즉, 무슨 키를 먼저 쓰든 나머지 하나의 키로 열 수 있음.

 

이렇게 하면 깔끔하게 잠글 수 있다. 그런데 문제가, public 키를 써서 암호화하는 게 비싸다는 것....

 

3 메시지 무결성 및 디지털 서명 Msg Integrity and Digital Signatures

암호 해시 함수 (Cryptographic Hash Functions)

 

 

- 목표: 가변 길이 메시지를 고정 길이의 디지털 "지문"으로 매핑하기.

- 특성: Messege Integrity(메시지 무결성), Digital Signatures

  • 해시 함수는 메시지를 고정 길이의 해시 값으로 변환. 전송된 메시지와 함께 해시 값을 전송하면, 수신자가 메시지를 다시 해시 함수로 처리하여 받은 해시 값과 비교할 수 있음.
  • 메시지의 해시 값을 발신자의 개인 키로 암호화하여 생성됨. 수신자는 발신자의 공개 키로 서명을 복호화하고, 메시지를 해시 함수로 처리하여 해시 값과 비교. 이를 통해 수신자는 메시지가 변조되지 않았고, 올바른 발신자로부터 왔음을 확인. 너무 똑똑한 발상이다. 후덜덜,,,

그러나, 원래의 데이터와 해싱된 데이터 두 가지를 모두 보내기 때문에, 전송 과정에서 누군가에게 읽힐 위험이 있다. 그래서 이를 보안하기 위해서 TLS를 사용한다. 또한, 수신인이 데이터와 해시값을 비교해서 이게 변조되었는지 여부를 확인(무결성 확인) 할 수 있지만, 변조 자체를 방지할 수는 없다. 이 또한 TLS에서 막아준다.

 

4 전송 계층 보안 Transport Layer Security

https://docs.tosspayments.com/resources/glossary/tls

 

TLS(Transport Layer Security) | 토스페이먼츠 개발자센터

TLS(Transport Layer Security)는 온라인 네트워크에서 데이터를 안전하게 주고받기 위한 암호화 프로토콜이에요.

docs.tosspayments.com

 

TLS는 네트워크 통신의 보안을 제공하는 프로토콜.

TLS는 주로 웹 브라우저와 서버 간의 안전한 통신을 위해 사용되고, 데이터의 기밀성, 무결성, 인증을 보장.

 

* 흔히, HTTP 중 TLS가 적용된 녀석을 HTTPS라고 부름.

 

 

TLS 데이터 레코드

1 데이터 분할: 원래의 데이터 스트림을, 여러 개의 레코드(위와 같은 형태)로 분할함.

2 암호화 및 인증: 각 레코드를 MAC와 함께 암호화됨.

3 전송 및 검증: 수신자는 각 레코드를 수신할 때 MAC를 확인하여 데이터의 무결성을 검증함.

 

 

TLS Handshake Protocol: TCP처럼 핸드셰이크를 진행함

 

 

TLS 데이터 전송 및 MAC 과정:

데이터 분할 -> MAC 생성 -> 암호화 -> 전송 -> 복호화 -> MAC 검증 * 여기서 Hashing이 들어감.

 

간단히 정리하면, TLS는 두 가지 역할을 한다.

 

1 데이터를 암호화하여 전송하기 때문에, 중간에 누가 데이터를 가로채도 내용을 모르게 함 - 기밀성 보장

2 MAC이라는 메시지 인증 코드를 사용하여 데이터가 변경되지 않았음을 확인함 - 무결성 보장 (Hash 포함)

 

 

TLS over TCP