[HTML] HTTPS

Updated:

HTTPS

HTTPS(HyperText Transfer Protocol over TLS/SSL)은 기존의 HTTP를 암호화한 프로토콜로 보안이 강화된 버전이다. 약어에서의 “S”가 원래 SSL(Secure Socket Layer)의 약자였지만 SSL 버전 3.1 부터 TLS(Transport Layer Security)로 명칭이 바뀌고 TLS와 혼용하고 있다. TCP의 연결이 이루어진 후 TLS를 통해 암호화 설정이 되고 통신을 하는 방식이다.

필요한 개념

  • 공개키(Public Key)와 비밀키 또는 개인키(Private Key) : 공개키는 모두가 볼 수 있는 키이며 비밀키는 소유자만이 가지고 있는 키로 암/복호화에 사용된다.

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

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

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

동작방식

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

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

용어정리

  • 암호화(Encryption) : 평문을 암호문으로 변환하는 과정
    • ex) 평문("123456") > 암호화 > 암호문("aBD#fefa$fae!")
  • 복호화(Decryption) : 암호문을 평문으로 변환하는 과정
    • ex ) 암호문("aBD#fefa$fae!") > 복호화 > 평문("123456")
  • 대칭키(Symmetric Key) 암호화는 하나의 키로 암호화와 복호화를 모두하는 암호화 방식이다.

  • 비대칭키(Asymmetric Key) 암호화는 두개의 키로 암호화와 복호화하는 방식이다. A , B두개의 키가 있다면 A키로 암호화 하면 B키로 복호화 할 수 있고, B키로 암호화하면 A키로 복호화 할 수 있다.

  • SSL(Secure Sockets Layer)와 TLS(Transport Layer Security)는 같은 것이라 할 수 있다. SSL은 TCP/IP 암호화 통신에 사용되는 규약으로써 넷스케이프에서 만들었다. SSL3.0버전부터는 IETF에서 표준으로 정해서 TSL1.0이 되었다. 하지만 아직도 SSL이라고 더 많이 불린다.

출처 :

Tags:

Categories:

Updated:

Leave a comment