CS 관련 지식 - 네트워크 _ HTTP와 HTTPS, SSL Handshake

링딩·2023년 3월 11일
0

Computer Science

목록 보기
2/49




HTTP와 HTTPS의 차이


1. HTTP 란?

서버/클라이언트 모델을 따라 데이터를 주고 받고자 하는 '프로토콜'이다.
HTTP는 인터넷에서 '하이퍼텍스트'를 교환하고자 하는 목적이며

  • 서버가 80번 포트에서 요청을 기다리고 있고 클라이언트가 80번 포트로 요청을 보낸다.

1-2. HTTP의 문제점.

🧨 문제는 암호화가 되지 않는 '평문 데이터'를 전송하는 프로토콜이여서

비밀번호 or 주민등록번호 등을 주고 받을 경우 제 3자가 정보를 조회하거나 중간에 패킷을 가로채거나 수정할 수 있었다......🤦‍♂️


이런 위험을 방지하고자 HTTPS가 등장했으니...



2. HTTPS의 등장

정의

  • HTTP에 데이터 암호화가 추가된 프로토콜

특징

  • 443 포트 사용
  • 제 3자가 정보를 조회할 수 없도록 암호화 지원
  • 암호화/복호화 과정이 필요
    -> 인증서를 발급 및 유지하기 위한 비용 발생
    => 대칭키와 비대칭키 둘 모두를 사용.



Q. 대칭키 암호화와 비대칭 키 암호화?

[대칭키 암호화]

  • 클라이언트와 서버가 동일한 키를 사용하여 암호화/복호화를 진행함.
  • 키가 노출되면 매우 위험 but 연산 속도가 빠르다

[비대칭키 암호화]

  • 1개의 쌍으로 구성된 공개키개인키를 암호화/복호화 하는데 사용함
  • 키가 노출되어도 비교적 안전하지만 연산 속도가 느림

✔ 공개키 : 모두에게 공개 가능한 키
✔ 개인키 : 나만 알아야 하는 키


암호화 공개키로 개인키

* 공개키 암호화 :

공개키로 암호화를 하면 개인키로만 복호화 할 수 있다.
-> 개인키는 나만 가지고 있으므로, 나만 볼 수 있다.

* 개인키 암호화 :

개인키로 암호화하면 공개키로만 복호화 할 수 있다.
-> 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장.






HTTPS의 동작 과정 (Hand-Shaking)


(배경)

클라이언트는 TCP 3way handshake를 수행한 이후 Client Hello를 전송합니다.

  1. 클라이언트(브라우저)가 서버로 최초 연결 시도를 함

  2. 서버는 공개키(인증기관의 개인키로 암호화 된 인증서)를 클라이언트에게 넘겨줌

  3. 클라이언트는 인증서의 유효성을 검사(인증기관의 공개키로 검증)하여 '세션키'를 발급함.

  4. 클라이언트는 세션키를 보관하며 동시에 '서버의 공개키'로 이 세션키를 암호화하여 서버로 보냄

  5. 서버는 '서버의 개인키'를 통해 암호화된 이 세션키를 복호화 한다.
    => (세션키 획득)

  6. 이제 클라이언트와 서버는 동일한 세션키를 공유
    => 데이터를 전달할 때 세션키(이 공유된 비밀키를 통해)로 암호화/복호화를 진행할 수 있다.

출처

ssl hand-shaking을 알았습니다..

profile
초짜 백엔드 개린이

0개의 댓글