뚝딱햄 탈출기

[기술면접대비] HTTP vs. HTTPS 본문

web

[기술면접대비] HTTP vs. HTTPS

hyrmzz1 2024. 5. 2. 01:53

HTTP vs. HTTPS

HTTPS는 TLS 혹은 SSL을 사용하여 기존의 HTTP를 암호화한 프로토콜이다.

따라서 HTTP와 HTTPS의 가장 큰 차이점은 데이터의 보안성이다.

HTTP 포트 번호: 80, HTTPS 포트 번호: 443

HTTP

  • HTTP는 데이터 전송 과정에서 암호화를 하지 않는다.
  • 따라서 데이터가 평문으로 전송된다.
  • 이는 해커가 데이터를 가로채어 변조나 도용할 수 있는 위험이 있다.
  • 따라서, 비밀번호, 계좌번호, 신용카드 정보 등 민감한 정보가 포함된 웹사이트를 HTTP로 전송할 경우 보안상 취약점이 생길 수 있다.

HTTPS

  • SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화한다.
    • TLS란 인터넷에서의 정보를 암호화해 송수신하는 프로토콜
  • 이를 통해 데이터가 안전하게 전송되어 해커가 데이터를 가로채어도 읽을 수 없도록 보호한다.
  • 따라서, HTTPS를 사용하면 보안적으로 안전한 통신이 가능하다.
  • HTTPS는 HTTP와 달리 인증서를 사용하여 서버의 신원을 확인할 수 있다.
    • 이를 통해 사용자는 피싱(Phishing) 사이트를 방지할 수 있다.
  • 암호화와 인증 절차 때문에 HTTP에 비해 처리 속도가 느릴 수 있다.
  • HTTPS를 사용하려면 SSL/TLS 인증서를 구입하거나 발급받아야 하기 때문에 비용이 발생할 수 있다.

HTTPS 동작방식

HTTPS는 대칭키 암호화를 사용하며 다음과 같은 과정을 거친다.

  1. 클라이언트가 서버에게 접속 요청을 하면 서버는 CA에서 발급받은 인증서를 보낸다. 인증서에는 CA의 비밀키로 암호화된 사이트 정보와 공개키가 들어있다.
  2. 클라이언트는 인증서를 받아 CA의 공개키로 복호화하여 접속 요청한 서버가 신뢰할만한지 검증한다.
  3. 복호화가 되면 인증서가 신뢰할만하기 때문에 데이터를 주고받을 대칭키를 생성한다.
  4. 대칭키를 서버의 공개키로 암호화하여 서버에게 전송한다.
  5. 서버는 자신의 비밀키로 클라이언트가 보낸 대칭키를 복호화한 뒤 그 대칭키를 통해 데이터를 주고받는다.

공개키(Public Key)와 비밀키(Private Key)

공개키는 모두가 볼 수 있는 키이며 비밀키는 소유자만이 가지고 있는 키로 암/복호화에 사용된다.

대칭키 암호화

  • 서버와 클라이언트가 암호화/복호화에 동일한 비밀키를 사용하는 방식
  • 키를 공유하는데 어려움이 있으나 속도가 빠르다.

비대칭키 암호화

  • 서버와 클라이언트가 암호화/복호화에 각각 다른 비밀키를 사용하는 방식
  • 공개키를 통해서 암호화를 하고 비밀키를 통해서 복호화를 한다.
  • 공개키는 공개해도 상관없으니 키 관리에 어려움이 없으나, 속도가 느리다.

인증기관(Certificate Authority, CA)

  • 클라이언트가 접속을 요청한 서버가 의도한 서버가 맞는지 인증해주는 역할을 하는 보증된 기업들이다.
  • 클라이언트는 서버에 요청을 해서 CA가 발급한 인증서를 받은 뒤 CA의 공개키로 복호화하여 신뢰할 만한 인증서인지 검증한다.
  • CA의 공개키로 복호화되는 암호화는 오직 CA의 비밀키로 암호화한 경우밖에 없기 때문에 복호화되면 신뢰할 만한 것이다.
Comments