삼삼고
꿈꾸는 삼삼고
삼삼고
전체 방문자
오늘
어제
  • 분류 전체보기 (179)
    • 후기 (95)
      • 코딩부트캠프 (90)
      • 취업 준비 기간 (5)
    • 백엔드 (20)
      • django (1)
      • 네트워크 (13)
      • 익스프레스 (0)
      • 그래프QL (2)
      • sqlite3 (1)
    • 프론트 엔드 (49)
      • javascript (21)
      • css (6)
      • react (8)
      • HTML (5)
      • UI&UX (8)
    • experience (1)
    • python (1)
    • project (1)
    • CS (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • http://www.tcpschool.com/ajax/ajax_basic_node
  • django 첫걸음
  • 출처
  • 코드스테이츠 세션 후기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
삼삼고

꿈꾸는 삼삼고

[네트워크]HTTPS
카테고리 없음

[네트워크]HTTPS

2022. 11. 12. 23:18

출처 : https://velog.io/@iameunyu

❓HTTPS

기존의 HTTP 프로토콜은 전달되는 데이터 내용을 사용자가 그대로 볼수 있었습니다.
👉당연히 비밀번호와 아이디등의 정보들도 사용자가 그대로 볼 수 있었고 보안에 취약해질 수밖에 없었습니다.

위와 같은 이유로  HTTPS는 HTTP 프로토콜에 SSL프로토콜을 더해 보안을 강화한것이 바로 HTTPS(Hyper Text Transfer Protocol Secure)입니다.

 HTTP에 대한 내용은 아래의 참고 자료를 참고해주세요👇

https://samsamgoo.tistory.com/112

 

[네트워크]HTTP

❓What Is HTTP HTTP(Hypertext Transfer protocol)는 하이퍼 텍스트 전송 프로토콜로 인터넷을 작동시키는 역활을 하는 응용계층의 프로토콜입니다. ⚡Feature Of HTTP HTTP의 특징은 다음과 같습니다.👇 📡클라

samsamgoo.tistory.com

 

❓암호화?

그렇다면 HTTP메세지를암호화하는 방식은 무엇이 있을까요?

🔐대칭키 암호화 방식

암호화와 복호화에 같은 암호 키를 쓰는 알고리즘을 의미한다.

키가 하나이기 때문에 공개 키 방식에 비해 훨씬 빠르다. 하지만 키 탈취 시에 취약하기 때문에 주위가 많이 필요하다.

 

🔑공개 키(비대칭 키) 암호화 방식

공개 키와 비밀 키를 별도로 가지는 알고리즘을 말한다.
👉암호화와 복호화를 하는 키가 별도로 있다.

사용자가 공개키를 서버가 비밀키를 가지는 방식으로 서버가 해킹당하지 않는 이상 탈취당할 위험이 없습니다. 하지만 그만큼 복잡한 연산이 필요하여 더 많은 시간을 소모하는 단점을 가지고 있습니다.

 

🔒SSL프로토콜

HTTPS는 SSL프로토콜을 사용하여 서버인증과 데이터 암호화를 진행합니다.

📑인증서와 CA

인증서는 서버의 신원을 보증하는 중요한 자료입니다.
그리고 이 인증서를 발행해주는 공인된 기관은 CA라고 합니다.

 

인증서를 발급받기 위한 과정
서버의 정보와 공개키를 ➡ CA로 전송 ➡ 비밀키로 암호화하여 인증서 생성 ➡ 서버로 전송

서버가 클라이 언트의 요청을 받으면 서버는 CA에게 발급받은 인증서를 보내줍니다.

브라우저는 ca들의 리스트와 공개 키를 가지고 리스트에 있는 CA가 발급한 인증서인지 확인합니다.
먄약 인증서가 맞다면 공개키로 복호화를 시도합니다.

성공적으로 진행된다면 서버의 정보와 공개키를 얻을 수 있습니다.
만약 실패한다면 서버가 보내준 인증서는 신뢰할 수 없는 인증서입니다.
👉다음과 같은 일련의 과정을 통해 서버의 인증서를 성공적으로 복호화하여 서버의 공개 키를 확보할 수 있습니다.

 

🔑대칭키 전달

다음으로 서버로부터 받은 공개키를 사용하여 데이터를암호화하여 요청과 응답을 주고받을 차례입니다.

하지만 공개키는 복잡하여 시간이 많이 들고 효율이 좋지 않기 때문에 때문에 대칭키를 사용하여 요청과 응답을 주고받아야 합니다.
👉대칭키를 이용해 통신하면 보안에 취약하지 않나요❓
➡맞습니다 그렇기 때문에 이 문제를 해결하기 위해 데이터를암호화하는 과정을 거쳐야 하는데 암호화 과정에 사용되는 것이 바로 공개 키입니다.

출처 : 코드스테이츠

클라이언트와 서버의 데이터 송수신 과정
1. 클라이언트가 암호화에 주고받은 대칭키를 생성하여 공개키로 암호화하여 서버로 전달
2. 서버를 암호화한 데이터를 받아 비밀키로 암호를 복호화하여 대칭키 확보
3. 동일한 대칭키를 이용하여 데이터 송수신

출처 : 코드스테이츠

정리하자면 서버와 클라이언트 간의 CA를 통해 서버를 인증하는 과정과 암호화하는 과정을 아우른 프로토콜을 SSL이라 말하며 HTTP에 SSL을 더한 것을 HTTPS라고 한다.

 

728x90
반응형
저작자표시 (새창열림)
    삼삼고
    삼삼고
    별이 되겠습니다

    티스토리툴바