티스토리 뷰

HTTP와 HTTPS의 차이점이 뭔가요?

음...HTTPS가 더 보안에 강하다는 점?

그럼 왜 보안에 강할까, 대체 어떤 차이 점이 있을까 이 글을 다 마쳤을 때 적어도 저 질문에 대해 단답으로 끝내는 일이 없도록 해보자.

HTTP(HyperText Tranfer Protocol)

우선 HTTP 는 url앞에 http://와 같은 형태로 많이 봤을 것이다. 이는 웹 상에서 정보를 주고받을 수 있는 통신규약이다. 주로 HTML문서를 주고받을 때 사용한다. TCP와 UDP를 사용하며, 80번 포트를 사용한다.

HTTPS(HyperText Transfer Protocol over Secure Socket Layer)

HTTP에서 Secure Socket Layer가 추가된 것을 볼 수 있다. 통신의 인증과 암호화를 위해 개발되었다. SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다. 기본 TCP/IP 포트는 443이다. 원어에서 알 수 있듯이 SSL프로토콜 위에서 HTTPS프로토콜이 동작한다.

  • TLS(Transport Layer Security)는 과거 SSL에서 이름이 변경 된 것이다. 하지만 아직도 SSL이란 명칭이 많이 사용되고 있다.

HTTPS라하여 무조건 안전한 것은 아니고, 웹 브라우저에서의 구현 정확도와 서버 소프트웨어, 지원하는 암호화 알고리즘에 따라 보안수준이 다르다.

SSL의 동작방식

공개키 암호화 방식과 공개키의 단점을 보완한 대칭키 암호화 방식을 함께 사용한다.(공개키 방식은 느리다는 단점이 있다.)

공개키방식으로 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.

공개키 방식

  • A키로 암호화를 하면 B키로 복호화 할 수 있다.
  • B키로 암호화를 하면 A키로 복호화 할 수 있다.
  • 둘 중 하나를 비공개키(private key) 혹은 개인키라 불리며 이는 자신만 가지고 있고 공개되지 않는다.
  • 나머지 하나는 공개키(public key)라 불리며 타인에게 제공한다. 공개키는 유출이 되어도 비공개키를 모르면 복호화 할 수 없기 때문에 안전하다.

대칭키 방식

  • 암호화를 할 때 사용하는 비밀번호를 키(key)라고 한다. 대칭키는 동일한 키로 암호화, 복호화가 가능하다.
  • 대칭키는 매번 랜덤으로 생성되어 누출되어도 다음번에 사용할 때에는 다른 키가 사용되기 때문에 안전하다.
  • 공개키보다 빠르게 통신할 수 있다.

이러한 SSL방식을 적용하려면 인증서를 발급받아 서버에 적용시켜야한다. 인증서는 사용자가 접속한 서버가 우리가 의도한 서버가 맞는지를 보장하는 역할을 한다. 이러한 인증서를 발급하는 기관을 CA(Certificate authority)라고 부른다. 공인인증기관의 경우 브라우저는 미리 CA 리스트와 함께 각 CA의 공개키를 알고 있다.

그렇담 이제 순서대로 인증서 발급과정과 함께 어떤식으로 사이트가 안전하게 사용자와 통신을 하는지 알아보자

  1. 인터넷 사이트는 자신의 정보와 공개키를 인증기관에 제출한다.
  2. 인증기관은 제출된 데이터 검증절차를 거쳐 개인키로 사이트에서 제출한 정보를 암호화한다. ==> 인증서 발급
  3. 인증기관은 웹 브라우저에게 자신의 공개키를 제공한다.

여기까지가 인증서가 발급되는 과정이다. 사용자가 사이트에 접속할 경우 그 다음은 어떻게 될까?

  1. 사용자가 사이트에 접속하면 자신의 인증서를 웹 브라우저에게 보낸다.
  2. 웹브라우저는 미리 받았던 인증기관의 공개키로 인증서를 해독하여 검증한다. 그러면 사이트의 정보와 사이트의 공개키를 알 수 있게 된다.
  3. 이렇게 얻은 사이트 공개키로 대칭키를 암호화해서 다시 사이트에 보낸다.
  4. 사이트는 개인키로 암호문을 해독해 대칭키를 얻게 되고, 이제 대칭키로 데이터를 주고받을 수 있게 된다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함