2016년 11월 10일 목요일

HTTPS와 SSL이해

HTTPS가 필요한 이유

HTTP 는 통신을 암호화하지 않고 하기 때문에 내가 통신하고 있는 상대를 확인하지 않기 때문에 다른 사람이 도청,위장이 가능하다.

HTTPS 란?

HTTP는 보안상 약점이 많기 때문에 HTTP에 SSL을 더한것이라 볼수 있다. 그렇다고 HTTPS는 새로운 애플리케이션 계층의 프로토콜이 아니라 HTTP 통신을 하는 소켓 부분을 SSL(Secure Socket Layer)이나 TLS(Transport Layer SEcurity)이라는 프로토콜로 대체하는 것이다.
(SSL와 TLS는 같은 개념이다)
SSL 을 사용함으로써  암호화, 증명서, 완전성 보호를 이용할 수 있게 된다.
HTTPS를 사용할 경우 URL에 http://가 아닌 https://를 사용합니다.



위 사진처럼 구글에 hi를 검색할 때도 https를 사용한다.

SSL 이란?

SSL은 HTTP와 독립된 프로토콜이다..
애플리케이션 계층에서 동작하는 SMTP나 FTP 에서도 사용가능하다.

HTTPS의 작동원리

HTTPS는 공개키 암호기법과 대칭키 암호기법의 양쪽 성질을 가진 하이브리드 암호 시스템입니다.
두가지 방식을 조합해서 장점을 살립니다.

먼져 대칭키 암호 기법을 알아보자.

말그대로 암호화,복호화 키가 같은것을 말하는데











위 사진과 같이 같은 키로 암호화하고 복호화 하는데 도청자가 어떤 키를 쓰는 지 알면 보안이 뚫리고 말기때문에 보안성이 낮다.
암호화 알고리즘의 종류는 DES , SEED , AES 등등이 있다.

공개키 암호 기법을 알아보자.


공개키 암호화는 위와같이 public key와 private key로 나누어져 있는데 public key로 암호화했다면
private key로만 풀수 있는 기법(RSA 방식)이다. 그반대도 당연 가능하다. 이는 수학적인 방법으로 만든 한쌍의 키라고 보면 된다.  그래서 public key를 도청자가 알았다고 해도 A를 유추해낼수 없다 (키는 엄청나게 큰수라서)

그래서 A가 B랑 통신할때 A는 자신의 private key는 가지고 있고 public key를 B에게 알려준다. (공개키는 아무에게나 알려줘도 된다) 그럼 B는 자신이 보낼 데이터를 A가 준 public key로 암호화하고 A 에게 넘겨준 데이터를 받은 A는 자신의 private키로 복호화 해서 정상적인 데이터를 읽을수 있다.

이제 HTTPS 에서 사용하는 기법을 알아보자
위의 두기법의 장점만 골라서 사용한것이니 위의 기법을 잘 이해한뒤 읽어보자

여기서는 인증서가 출현하고 사용되는 대칭키는 보안상의 이유로 매번 랜덤으로 선택된다.

인증서란?
공인 인증 기관이 출현하면서 요청한 사이트에게 해당하는 인증기관의 private key 와 인증기관 public key를 만든다. 사이트에서는 인증기관의 private key로 암호화한 인증서(사이트 public key+사이트정보)를 발행하고 브라우저에게는 인증기관의 public key 를 발행한다.
인증서에는 사이트 공개키+공인 인증기관의 전자서명이 들어있다.

인증서를 발행한 기관을 Root CA라고 하며 널리 알려진 인증기관의 Root CA인증서는 웹브라우저에 기본적으로 설치되어있다.
인증서는 CA에서 자체 서명(신뢰할수 있는)한다.
























과정을 상세히 알아보자.

  1.  사이트가 인증기관에게 인증요청을 할때 site정보와 site public key를 준다.
  2. 인증기관의 검증을 거친후  site정보와 site public key를 인증기관의 private key로 암호화해서 사이트 인증서를 만든다.
  3. 사이트로 인증서를 발급한다. 
  4. 인증기관은 웹브라우저에게 자신의 public key를 제공한다.
  5. 이제 드디어 브라우저가 사이트에 접속하게 될때 SSL 프로토콜에 기반하여 통신이 이루어진다.
  6. 브라우저가 접속 요청을 하고 사이트는 발급받은 인증서를 브라우저에게 전달한다.
  7. 그렇게 되면 브라우저는 4번에서 받은 인증기관의 public key로 인증서를 복호화하게 되면 안에는 site 정보와 site의 public key가 들어있다.
  8. 획득한 사이트 public key로 대칭키를 암호화 해서 전송
  9. 사이트의 private key로 복호화하면 대칭키를 획득하게 된다.
  10. 안전하게 전달된 대칭키를 이용해서 암호문을 주고 받음

HTTPS는 보안이 좋은 반면 단점도 존재한다.


HTTPS를 사용 시 증명서를 구입하여아 합니다. 증명서의 구입 비용이 부담되는 서비스나 개인 웹사이트의 경우 HTTP만 선택하기도 합니다.
(개인이 HTTPS 만들수 있다. 허나 인증기관을 거치지 않기 때문에  와같은 표시가 뜬다.)
또한 HTTPS는 SSL 통신에 필요한 프로토콜이 추가되고 복호화하고 암호화하는데 시간도 걸린다.

0 개의 댓글:

댓글 쓰기