HTTP와 HTTPS



1. HTTP란?

HTTP(HyperText Transfer Protocol)는 웹 서버 및 웹 브라우저 상호간의 데이터 전송을 위한 응용계층 프로토콜이다. 서버에서 브라우저로 전송되는 정보가 암호화되지 않아 데이터가 쉽게 도난당할 수 있다는 단점이 있다.

2. HTTPS란?

HTTPS(HyperText Transfer Protocol Secure)는 SSL(Secure Socket Layer) 인증서를 사용하는 HTTP로, 표준 HTTP와 동일한 방식으로 작동한다. SSL인증서는 일반 HTTP 요청 및 응답을 암호화하기 때문에, 웹 사이트에 추가적인 보호를 제공하여 HTTP보다 더 안전한 보안용 프로토콜이라고 할 수 있다. TLS(Transport Layer Security)는 SSL의 업그레이드 버전으로 데이터 무결성을 제공하여 데이터가 전송 중에 수정되거나 손상되는 것을 방지하고 사용자가 자신이 의도하는 웹 사이트와 통신하고 있음을 입증하는 인증 기능을 제공한다.

3. SSL 암호화 방식

대칭키(Symmetric Key)

암호화와 복호화에 사용하는 키가 같은 방식

동일한 키를 주고받기 때문에, 매우 빠르다는 장점이 있다. 하지만 클라이언트와 서버는 통신을 하기 위해서 대칭키를 알고 있어야 한다. 따라서 통신을 하기에 앞서 키를 전달해야하는 과정이 필요한데, 그러한 과정에서 만약 대칭키가 유출된다면 키를 획득한 공격자는 암호화된 데이터를 복호화하여 볼 수 있기 때문에, HTTPS를 사용하는 이점이 사라진다.

공개키(Public Key)

암호와와 복호화에 사용하는 키가 다른 방식

공개키 방식은 대칭키 방식과 다르게 2개의 키를 사용한다. 그 중 하나는 공개키(public key)라 부르고, 다른 하나는 비밀키(private key)라 부른다. 각 사용자는 자신에게 전송하기 위해 사용될 키를 공개하고, 공개된 키의 정보로 암호화된 정보를 복호화할 수 있는 키를 비밀로 보유하고 있다. 즉, 누구나 암호화할 수 있지만, 공개키에 대응되는 비밀키를 가진 사람만이 복호화할 수 있는 것이 특징이다.

공개키 통신 절차
개인키로 암호화한 정보는 그 쌍이 되는 공개키로만 복호화가 가능하고, 공개키로 암호화한 정보는 그 쌍이 되는 개인키로만 복호화가 가능하다.

  1. 송신자는 수신자의 공개키를 구한다.
  2. 송신자는 수신자의 공개키로 평문을 암호화한다.
  3. 송신자는 암호화된 메시지를 상대방에게 전달한다. (메시지는 암호화되어 있기 때문에 전달 도중에 유출되더라도 암호문으로부터 원문을 알아내기 어렵다)
  4. 수신자는 자신의 비밀키로 암호화된 메시지를 해독해서 평문을 얻는다.


SSL 통신 원리
대칭키와 공개키 암호화 방식을 혼합하여 사용

  1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄.
  2. B는 암호문을 받고, 자신의 비밀키로 복호화함
  3. B는 A로부터 얻은 대칭키로 평문을 암호화하여 A에게 보냄.
  4. A는 자신의 대칭키로 암호문을 복호화하여 평문을 얻음.

대칭키를 주고받을 때 공개키 암호화 방식을 사용하고, 이후 계산 속도가 빠른 대칭키 방식을 사용함.

댓글남기기