HTTP, HTTPS

CheolHyeon Park·2022년 11월 29일
0

기초지식

목록 보기
12/15

HTTP와 HTTPS의 차이점은 무엇인지 확인해보고자 한다.

HTTP

HTTP는 HyperText Transfer Protocol의 약자다. 해석하자면 HyperText를 전송하는 규약을 뜻한다. 즉, 서로 다른 시스템 간에 데이터를 주고받게 해주는 프로토콜이다. 하지만 HTTP는 데이터를 있는 그대로 전송한다. 그래서 중간에 다른 누군가 데이터를 직접 확인하고 위조, 변조를 할 수 있게 된다. 이러한 문제를 해결하기 위해 사용하는 것이 HTTPS다.

HTTPS

HTTPS는 HyperText Transfer Protocol Secure의 약자로 HTTP에 데이터의 보안, 인증과 무결성을 더한 프로토콜이라고 생각하면 된다. HTTPS는 중간에 데이터를 가로채어 보더라도 암호화되어 있기 때문에 데이터 식별이 불가능하게 된다. 또한, 데이터가 위조, 변조 되었는지 확인하는 것도 가능하다. 이러한 기능이 가능한 것은 SSL/TLS 덕분이다.

SSL/TLS

SSL

SSL은 Secure Socket Layer의 약자로 TLS의 전신이 된 방식입니다. Netscape가 SSL의 개발을 진행하다가 더 이상 참여하지 않게 되고, IETF가 개발을 주도하면서 TLS로 변경되었다.

TLS

TLS는 Transport Layer Security의 약자로 SSL을 이어 HTTPS에 이용되고 있는 프로토콜입니다. SSL과 TLS 용어가 혼용되어 사용되는 경우가 많아서, SSL/TLS 암호화라고도 부릅니다. 이메일이나 메세지, VoIP와 같은 커뮤니케이션 통신을 암호화하는데 사용한다.

TLS 동작

우선 통신의 두 당사자가 신뢰할 수 있는 사람임을 체크하기 위해 handshake를 진행한다. 이 과정에서 사용하는 방식은 비대칭키 암호화 방식이다.

💡 비대칭키, 대칭키 암호화 방식

  • 공개키 암호화 방식(비대칭키 암호화 방식)
    암호화를 진행하는 키와 복호화를 진행하는 키가 다른 암호화 방식. 암호화를 진행하는 키는 공개키를 이용하고, 복호화는 비공개키으로만 진행할 수 있어, 비대칭 암호화 방식이라고도 한다.
    주로 디지털 서명등에 사용하며, 연산량이 많다는게 특징이다. 대표적인 방식이 RSA이다.
  • 대칭 암호화 방식
    서로 암호화와 복호화를 같은 키를 가지고 하는 방식을 뜻한다. 연산량은 작지만 키를 전달하는데 위험성이 있다. 대표적인 방식이 AES, DES이다.

https://cf-assets.www.cloudflare.com/slt3lc6tev37/3wZIhjRIjfVSmCbVqkBKzb/4a7aa34324108c725dc25fc9e7c4ea4a/tls-ssl-handshake.png

출처: https://www.cloudflare.com/ko-kr/learning/ssl/transport-layer-security-tls/

  1. 클라이언트가 서버에게 ClientHello메세지를 통해 TLS버전, 서버 도메인, 세션 식별자, 암호 설정과 같은 정보가 포함된 메세지를 보낸다.
  2. 서버는 ServerHello메세지와 함께 TLS버전, 서버 도메인, 세션 식별자, 암호 설정과 같은 정보가 포함된 메세지를 보낸다.
  3. 서버는 클라이언트에게 Certificate 메세지를 통해 서버의 인증서를 전달한다.
  4. 클라이언트는 전달 받은 인증서를 검증하여 신뢰할 수 있는지를 판단한 후, 넘어간다.
  5. 신뢰할 수 있다면, pre-master secret을 생성하여 서버가 보낸 인증서에 포함된 공개키를 사용해 암호화한다. 암호화한 데이터를 ClientKeyExchange 메세지에 포함시켜 전송한다.
  6. 서버는 이를 개인키로 복호화하여 master secret을 만들어 세션 키를 생성하고, 이를 통해 암호화하여 통신을 하게 된다. 클라이언트는 스스로 pre-master secret을 통해 세션 키를 만들어 암호화 통신을 하게 된다.
  7. 이제 서버-클라이언트 모두 동일한 키를 가지고 암호화하는 대칭키 암호화방식으로 통신을 할 수 있게 됬다. 서로 ChangeCipherSpec과 Finished를 보내 앞으로 대칭키 암호화로 통신하겠다고 알리고 핸드쉐이킹을 끝낸다.

HTTPS의 이점

안정성

HTTPS는 데이터의 암호화, 인증, 데이터의 무결성 이 3가지에 이점을 가지고 있다. 데이터를 private key를 가지고 있지 않다면 데이터를 확인할 수 없어 보안에 유리하고, 인증서를 통해 사이트가 신뢰할 수 있는 사이트임을 말하며, 데이터가 위조 혹은 변조 되었을 때 이를 검증할 수 있게 되어 무결성을 지킬 수 있게 된다.

SEO효과

구글의 서치엔진은 HTTPS를 순위 결정의 신호로 사용하고 있다. 이는 검색시 HTTPS를 이용하지 않는 홈페이지는 검색 순위가 낮아지게 된다는 의미다.

참고
https://www.cloudflare.com/ko-kr/learning/ssl/transport-layer-security-tls/
https://www.ascentkorea.com/difference-between-http-and-https/

profile
나무아래에 앉아, 코딩하는 개발자가 되고 싶은 박철현 블로그입니다.

0개의 댓글