HTTPS

조현근·2022년 11월 9일
0
post-thumbnail

HTTP vs HTTPS

HTTP

  • 서로 다른 시스템 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜
  • 서버에서 브라우저로 데이터를 전송하는 용도로 많이 사용함
  • 전송되는 정보가 암호화되지 않는다는 문제가 있음

HTTPS

  • HTTP에 SSL을 사용한 프로토콜
  • 전송되는 정보를 SSL을 활용해 해결
  • HTTP header, HTTP body도 둘다 암호화 함

HTTPS를 사용해야 하는 이유

1. 보안성

HTTP

  • HTTP로 데이터를 전송하면, 네트워크로 전달되는 데이터는 원본 그 자체
  • 해커가 중간에 가로챈 후 이 데이터를 보면 어떤 내용이 있는지 알 수 있음

HTTPS

  • 데이터를 암호화해서 전송. 해커가 가로채도 암호화되어 있어 어떤 내용인지 알기 어려움

2. SEO(검색엔진 최적화)

  • 구글은 HTTPS를 사용하는 웹 사이트에 가산점을 부여함
  • 자신의 웹 사이트가 검색 엔진에 더 빈번하게 노출시키고 싶으면 HTTPS를 사용해야 함
  • AMP(모바일 기기에서 컨텐츠를 훨씬 빠르게 로딩하는 방법)를 만들 땐 HTTPS를 사용해야 함

SSL/TLS

  • SSL의 업그레이드 버전이 TLS. 앞으로 둘 다 SSL이라 하겠음

SSL

  • Secure Sockets Layer
  • Netscape사에서 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜
  • 공개키 방식과 대칭키 방식을 혼합해 사용함

대칭키

  • 대칭키는 동일한 키로 암호화/복호화를 수행함
  • 대칭키를 탈취하면 쉽게 암호화/복호화를 할 수 있음. 대칭키는 적어도 한 번은 네트워크를 탐(상대방에게 전해줘야 하니까)
  • 하지만 암호화/복호화를 빠르게 할 수 있음

공개키

  • 암호화/복호화에 사용되는 키가 다름. 비대칭키 방식
  • 데이터 암호화시엔 공개키를 사용
  • 데이터 복호화시엔 개인키를 사용
  • 공개키는 해커가 가로채가도 문제가 안됨 왜냐하면 암호화만 할 수 있기 때문
  • 공개키는 상대방에게 전달하기 위해 네트워크를 타지만, 개인키는 나만 가지고 있어야 해서 네트워크를 안탐
  • 하지만 암호화/복호화에 시간이 오래걸림

SSL을 사용하는 이유

  • 서버와 브라우저간 전송되는 데이터를 해커로부터 보호하기 위해 필요함
  • 암호화의 대상은 개인정보

SSL 통신과정

  • SSL은 공개키 방식으로 대칭키를 전달
  • 대칭키를 활용해 암호화/복호화를 진행
  1. A가 B에게 자신의 공개키를 전달
  2. B는 A에게 A의 공개키를 이용해 암호화한 대칭키를 전달
  3. A는 자신의 개인키를 이용해 B가 보낸 대칭키를 복호화
  4. 이제 A와 B는 모두 대칭키를 가짐. 이를 이용해 통신

사이트가 유효한 사이트인지 확인하는 방법

[사용자가 사이트에 접속 하기 전]
1. 사이트는 인증기관에게 "사이트 정보"와 "사이트 공개키"를 전달
2. 인증기관에선 사이트에게 받은 데이터를 검증
3. 검증이 성공하면 ("사이트정보", "사이트공개키")를 인증기관 개인키로 서명
4. 인증기관 개인키로 서명된 ("사이트정보", "사이트공개키")가 바로 "사이트 인증서"
5. 생성된 "사이트 인증서"를 사이트에 전달
6. 사용자에겐 "인증기관 공개키"를 전달(사용자 브라우저에 자동으로 내장됨)

[사용자가 사이트에 접속 요청]
1. 사용자가 사이트에 접속을 요청
2. 사이트는 사용자에게 자신의 인증서를 전달
3. 사용자는 브라우저에 내장되어 있는 인증기관 공개키로 사이트 인증서를 복호화해 검증(서명이라 공개키로 복호화 하는듯). 사이트 인증서로부터 "사이트 정보", "사이트 공개키"를 얻을 수 있음
4. 사용자는 자신의 대칭키를 "사이트 공개키"로 암호화해 사이트에 전달
5. 사이트는 자신의 개인키로 "대칭키"를 복호화
6. 대칭키를 이용해 서로 통신

(그림의 번호는 위 번호와 관련없음)

출처

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

profile
안녕하세요!

0개의 댓글