[CS] HTTP vs HTTPS & SSL

일단 해볼게·2022년 11월 23일
1

CS

목록 보기
3/10
post-thumbnail

HTTP (Hypertext Transfer Protocal)

  • 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜
  • 서버에서 브라우저로 데이터를 전송하는 용도
  • 데이터가 암호화되지 않음 → 데이터가 쉽게 도난당할 수있다.

HTTPS (Hypertext Transfer Protocal Secure)

  • HTTP + SSL
  • SSL(보안 소켓 계층) 사용
  • HTTP message body암호화 But Header는 암호화하지 않음

왜 HTTPS 사용?

  1. 보안성
    1. 데이터를 암호화해서 전송한다.
  2. 검색엔진 최적화
    1. 구글은 HTTPS를 사용하면 검색엔진에 가산점을 준다. → 더 노출이 많이된다.
    2. AMP(가속화된 모바일 페이지)를 만들 때 HTTPS를 사용해야만 한다.

SSL/TLS

TLS = SSL의 업그레이드 버전

SSL (Secure Sockets Layer)

  • 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜
  • 공개키/개인키 & 대칭키 방식을 혼합해서 사용
    • 공개키의 단점을 대칭키로 보완, 대칭키의 단점을 공개키로 보완

대칭키

  • 동일한 키로 암호화와 복호화 수행
  • 누구든지 암호화에 이용된 키를 가지고 있다면 해당 데이터 쉽게 복호화 → 암호화와 복호화가 쉽다.
  • 키를 배송할 때 문제가 된다.

공개키(비대칭키)

  • 암호화할 때는 공개키 사용, 복호화할 때는 개인키 사용 → 누구든지 공개키를 가져도 상관없다.
  • 암호화 연산시간이 더 오래걸려 비용이 크다.

SSL 통신 과정

  • 공개키 방식으로 대칭키를 전달
  • 대칭키를 활용해서 암호화와 복호화를 하고, 서버와 브라우저간 통신을 진행

예제)

  1. A가 B에게 접속요청

  1. B는 A에게 자신의 공개키 전송

  1. A는 자신의 대칭키를 B에서 전달받은 B의 공개키로 암호화한다.

  1. 암호화한 자신의 대칭키를 B에게 전달

  1. B는 A의 대칭키를 자신의 개인키로 복호화 → 복호화 결과로 A의 대칭키를 얻는다.

  1. 안전한 통신

참고

https://www.youtube.com/watch?v=wPdH7lJ8jf0

profile
시도하고 More Do하는 백엔드 개발자입니다.

1개의 댓글

comment-user-thumbnail
2022년 12월 4일

와 SSL 통신 어려웠는데 감사합니다 ㅎㅎ

답글 달기