HTTPS

이호인·2022년 4월 20일
0

HTTP 공부

목록 보기
3/4

📌 HTTP (HyperText Transfer Protocol)

  • 서로 다른 시스템들 사이에서 통신을 주고 받게하는 가장 기본적인 프로토콜, 통신 규약이다. 기본적으로 포트번호는 80을 사용.
  • 암호화가 되지않은 평문 데이터를 전송하는 프로토콜.

📌 HTTPS (HyperText Transfer Protocol Secure)

  • HTTP에 데이터 암호화가 추가됨. 기본적으로 포트번호는 443을 사용.
  • SSL (보안 소켓 계층)을 사용한다.

📌 HTTPS를 사용하는 이유

1) 보안성

  • 데이터들이 전송될 때, 해커와 같은 제 3자에 의해 주고받는 데이터가 가로채질 확률이 존재한다.
  • HTTP는 암호화 없이 평문 데이터를 전송하기 떄문에 해커가 중간에 데이터를 가로챘을 때 쉽게 확인이 가능하다.
  • 개인정보나 보안에 민감한 정보들은 꼭 암호화가 필요하다.

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

  • 구글은 HTTPS를 사용하는 웹 사이트들에 가산점을 부여하고 있다.
  • AMP를 만들 때는 HTTPS를 사용해야한다.
  • 점점 모바일 친화적인 웹 사이트들을 만들고, 모바일 검색 순위를 증가 시키는 것이 중요해지는 요즘엔 HTTPS 사용이 필수적이라고 볼 수 있다.

📌 SSL (Secure Sockets Layer)

  • Netscape Communications Corporation에서 웹 서버와 웹 브라우저 간의 보안을 위해 만든 프로토콜이다. 대칭키과 비대칭키 기반으로 사용.
🔍 참고하기

TLS

Transport Layer Security의 줄임말. 
과거 SSL에서 발전하며 이름이 변경 된 것이다. 하지만 아직도 SSL이란 명칭이 많이 사용되고 있다.

1) 대칭키

  • 클라이언트와 서버가 동일한 키를 사용해서 암호화, 복호화를 진행한다.
  • 키가 노출되면 위험하지만 , 연산 속도가 빠르다.

2) 비대칭키 (공개키 + 개인키)

  • 1개의 쌍으로 구성된 공개키와 개인키를 사용해 암호화, 복호화를 진행한다.
  • 노출 되어도 비교적 안전하지만, 연산 속도가 느리다.

📌 SSL의 통신 방식

대칭키와 비대칭키는 서로 장단점이 있기 때문에 HTTPS는 대칭키와 비대칭키 모두 사용해서 통신한다.

  1. A에서 B로 접속 요청을 보낸다.
  2. BA에게 자신의 공개키를 보낸다.
  3. A는 자신의 대칭키를 받은 B공개키를 사용해서 암호화한다.
  4. A는 암호화 된 자신의 대칭키B에게 보낸다.
  5. B는 받은 암호화 된 대칭키키를 자신의 개인키를 사용해서 복호화한다.
  6. AB는 서로 같은 대칭키를 얻게 되었다.
  7. 이렇게 암호화 된 대칭키로 서로 보안을 확보하고 , 대칭키를 사용해서 데이터를 주고 받아 속도, 비용적인 문제도 해결한다.

📌 HTTPS의 발급 과정

  1. 사이트는 사이트 공개키와, 사이트 정보를 인증 기관(CA 기업)에 보낸다.

  2. 인증 기관은 받은 사이트 정보를 검증한다.

  3. 검증이 완료되면 CA 기업의 이름, 서버 공개키, 서버 정보 등을 기반으로 인증서를 생성하고, CA 기업의 개인키로 암호화 (서명)하여 사이트에게 전달.

  4. 클라이언트가 사이트에 접속 요청
    (이 때, 브라우저는 CA 기업의 공개키를 이미 다운받아 가지고 내장하고 있음.)

  5. 사이트는 암호화 된 인증서를 제공한다.

  6. 클라이언트는 내장된 공개키로 인증서를 복호화한다.

  7. 인증서를 복호화하면 사이트 정보와 사이트 공개키를 얻을 수 있게 된다.

  8. 클라이언트가 대칭키를 사이트 공개키로 암호화해서 전송한다.

  9. 사이트는 받은 암호화 된 대칭키를 개인키로 복호화한다.

  10. 클라이언트와 사이트는 서로 같은 대칭키를 얻게 되었고 , 대칭키로 통신한다.

📌 HTTPS의 장단점

장점

  • HTTPS는 웹사이트의 무결성을 보호해준다. 웹 사이트와 브라우저 사이의 통신을 침입자가 건드리지 못하도록 한다. (악의가 있는 공격자는 물론, 합법이지만 통신에 침입하여 페이지에 광고를 삽입하는 경우에도 해당)
  • 가벼운 웹 서핑이라면 HTTP도 상관없지만, 사용자의 정보를 웹 서버와 주고 받아야하는 경우라면 HTTP는 정보 유출의 위험성이 있다. HTTPS는 침입자가 웹 사이트와 사용자 사이의 통신을 몰래 수신하는 것을 방지함으로써 보안을 강화한다.
  • getUserMedia()를 통한 사진 촬영이나 오디오 녹음, 프로그레시브 웹 앱과 같은 강력한 웹 플랫폼 신기능들은 실행하려면 사용자의 명시적인 권한 허락을 필요로 한다. 지오로케이션 API와 같은 오래된 API들도 실행할 때 권한이 필요하도록 업데이트되고 있는데, HTTPS는 이러한 새 기능과 업데이트 된 API에 대한 권한 허락을 가능하게 한다.
  • 키워드 검색 시 상위 노출되는 기준 중 하나가 보안 요소이다. 네이버, 다음, 구글은 SEO (검색 엔진 최적화) 관련 내용을 HTTPS 웹사이트에 대해서 적용하고 있다.

단점

  • 모든 사이트에서 텍스트를 암호화해서 주고 받으면 과부하가 걸려 속도가 느려질 수 있다. 중요한 사이트는 HTTPS로 관리하고, 그렇지 않은 사이트는 HTTP를 사용한다.
  • HTTPS를 지원한다고 해서 무조건 안전한 것은 아니다. 신뢰할 수 있는 CA 기업이 아니라 자체적으로 인증서를 발급할 수도 있고, 신뢰할 수 없는 CA 기업을 통해서 인증서를 발급받을 수도 있기 때문이다.

reference!

https://www.youtube.com/watch?v=wPdH7lJ8jf0
https://mangkyu.tistory.com/98
https://www.youtube.com/watch?v=H6lpFRpyl14
https://rachel-kwak.github.io/2021/03/08/HTTPS.html

profile
공부 기록

0개의 댓글