CS/네트워크

HTTP/HTTPS/대칭키/비대칭키

이-프 2023. 8. 10. 23:18

💡
Q. HTTP란?

Hyper Text Transfer Protocol

서버 http와 클라이언트 http 모델간의 데이터를 주고받기 위한(통신) 프로토콜이다. (80번 포트)

(웹서버) ↔ (브라우저)간의 웹페이지 전달을 위해 사용됨

[HTTP 과정]

  1. HTTP는 Transport Protocol 중 TCP를 사용

    ⇒ 데이터 전송 이전에 미리 연결을 맺는 메시지(ACK)를 교환하는 연결 지향 방식 사용

  1. HTTP 서버는 80번 포트를 사용
  1. TCP 연결을 위한 메시지(ACK) 가 완료되면 ⇒ HTTP 메시지들을 서버와 클라이언트 간의 송수신 진행
  1. HTTP 메시지 교환이 끝나면 ⇒ TCP 연결 종료

[HTTP 특징]

  1. stateless : 웹페이지가 클라이언트에게 어떻게 해석되는지는 아무런 상관 x (전달만!한다)
    1. 서버는 이전 클라이언트의 요청에 대해 저장하지 않아 수초 내에 동일한 obj를 요구해도 다시 보냄
    1. 이전 요청에 대한 기록을 남기는게 오히려 복잡하여, 단순화 하기 위해 stateless 성질을 갖음
  1. Method, Path, Version, Headers, Body 등으로 구성됨
  1. HTTP는 비지속 연결 | 지속 연결 2가지 방법이 존재

💡
Q. Protocol이란?

컴퓨터와 컴퓨터 사이의 이해할 수 있는 언어 (공용언어)

컴퓨터나, 네트워크 장비가 서로 통신하기 위해 미리 정해 놓은 약속, 규약

  • 신호를 보낼 때 순서, 데이터 표현 등을 정하는 규칙

[프로토콜 종류]

  • Application : HTTP, SMTP, FTP, Telnet
  • Presentation : ASCII, MPEG, JPEG, MIDI
  • Transport : TCP, UDP, SPX
  • Network : IP, IPX
  • Data Link : Ethernet, Token Ring, Apple talk’’’
💡
Q. HTTPs란?

Hyper Text Transfer Protocol Secure

HTTP에 데이터 암호화가 추가된 프로토콜 (443번 포트)

네트워크 상에서 제 3자가 정보를 훔쳐볼 수 없도록 암호화를 지원한다.

이때, 대칭키와 비대칭키를 사용해서 암호화하는 구조이다!

[HTTPS 특징]

  • HTTPS는 SSL, TLS 전송 기술을 사용함
  • SSL/TLS : TCP, UDP와 같은 일반적인 TRASNPORT PROTOCOL에 안전한 계층을 추가하는 방식
  • 이 기술을 위해 웹 서버에 SSL/TLS 인증서를 설치함
  • SSL Handshake가 정상적으로 완료되면 HTTPs 통신이 가능하다 → 완료시 폐기
💡
대칭키 - 비대칭키(공개키)
💡
Q. 대칭키란 ?

암호화, 복호화에 사용하는 키가 동일

암복호화키가 동일하므로 해당 키를 아는 사람이 문서를 복호화 할 수 있다.

장점

  • 구현이 용이
  • 데이터를 암호화하기 위한 연산이 빠름

    ⇒ 대용량 데이터 암호화에 적합

  • 기밀성을 제공

단점

  • 강한 보안을 위해 키를 주기적으로 교환해야함
  • 키 탈취 및 관리가 어려움
  • 무결성 지원이 부분적으로만 가능
  • 부인 방지 기능을 제공 x

💡
Q. 비대칭키/공개키란?

암호화 할 때, 복호화 할 때의 키가 다름

외부에 절대 노출되어서는 안되는 비공개키공개키쌍으로 이루어진 형태

장점

  • 키 분배 및 키 관리가 용이
  • 기밀성, 무결성 지원
  • 부인 방지 기능 제공 o

단점

  • 상대적으로 키의 길이가 김
  • 연산 속도가 느림

💡
Q. 부인 방지란?

송신자(보내는사람from) 수신자(받는 사람to)가 메시지를 주고받은 사실을 부인하지 못하도록 방지

  1. B는 A에게 개인키/공개키를 생성한 뒤 공개키를 공개하도록 요구
  1. B는 A에게 ‘문서’를 개인키로 암호화할 것으로 요구
  1. B는 이 ‘암호화된 문서’를 수령
  1. B는 ‘암호화 된 문서’를 A의 공개키로 해독 ⇒ 이 문서가 A의 개인키로 제대로 암호화 되었음을 검증가능
  1. IF, 해독 x ⇒ 개인키-공개키 쌍이 맞지 않음을 의미

    └ 공개한 공개키 오류 or 다른 개인키로 암호화

∵ 이 '암호화된 문서'는 A 의 공개키로만 해독이 가능하므로, 이 '암호화된 문서'는 A 만이 발행할 수 있다는 증거가 된다. 또한, 변조되지 않았음도 동시에 증명할 수 있다.

💡
Q. 왜 비대칭키/공개키를 사용해야 하는가?

데이터 보안, 인증 문제를 해결할 수 있으므로 사용ing

데이터 보안

  • 사용자가 데이터를 서버로 보내는 과정에서 개인정보와 같은 중요 데이터는 암호화해야함
  • 서버만 유일하게 가지고 있는 개인키로 복호화할 수 있고, 서버의 공개키로 암호화해서 보내도록하면 안전하게 전송 가능

⇒ 제 3자가 클라이언트로부터 전송하는 데이터를 볼 수 없어 데이터 보안을 강화 o

인증

  1. 클라이언트와 서버는 서로 확인을 위해 Handshake 과정을 진행
    1. 이때, 서버는 CA에서 인증받은 인증서를 클라이언트로 보냄
  1. 사용자는 CA의 목록을 확인해 공인 인증 기관이 서명한 인증서인지 확인
  1. CA의 공개키를 이용해 해당 인증서를 복호화
  1. 복호화에 성공하면 서버의 공개키를 얻음

⇒ 공인인증기관(CA)로부터 서명 받은 서버의 인증서가 공인 인증 기관의 공개키로 복호화가 가능하다는 것을 통해 해당 기관이 인증 받은 단체라는 것을 확인할 수 있음

💡
Q. 대칭키와 비대칭키를 혼합할 수 있나?
  1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화 ⇒ B에게 이를 보냄
  1. B는 암호문을 받고, 자신의 비밀키로 복호화
  1. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
  1. A는 자신의 대칭키로 암호문을 복호화함
  1. 앞으로 이 대칭키로 암호화를 통신,, ?


Uploaded by N2T

'CS > 네트워크' 카테고리의 다른 글

3-way & 4-way Handshaking  (0) 2023.08.09
TCP/UDP  (0) 2023.08.09