HTTP(Hypertext Transfer Protocol)와 HTTPS(Hypertext Transfer Protocol Secure)는 인터넷에서 데이터를 전송하는 프로토콜이다.
HTTP는 웹 브라우저와 웹 서버 간의 데이터 통신을 위한 프로토콜입니다. 웹 브라우저가 웹 페이지를 요청하면, HTTP 프로토콜을 사용하여 요청 메세지가 서버로 전송되고, 서버는 요청에 따른 응답 메세지를 다시 웹 브라우저로 전송합니다.
HTTP는 웹 서버와 웹 브라우저 간데 데이터를 평문으로 전송합니다. 따라서, HTTP는 데이터의 보안성이 낮습니다. 또한, HTTP는 데이터의 무결성도 보장하지 않기 때문에 민감한 정보를 주고받는 경우에는 보안성이 부족합니다.
HTTP는 요청 메세지와 응답 메세지로 구성됩니다. 요청 메세지는 웹 브라우저에서 웹 서버로 전송되는 메세지로, HTTP 메소드(GET, POST, PUT, DELETE 등)와 요청 URI(Uniform Resource Identifier) 등의 정보를 포함합니다. 응답 메세지는 웹 서버에서 웹 브라우저로 전송되는 메세지로, 요청에 대한 결과 데이터와 상태 코드 등의 정보를 포함합니다.
HTTPS( Hypertext Transfer Protocol Secure)는 인터넷에서 데이터를 암호화하여 전송하는 프로토콜입니다. HTTPS는 HTTP 프로토콜과 SSL/TLS 암호화 프로토콜을 결합한 것으로, 클라이언트와 서버 간의 통신에서 암호화된 데이터를 전송하여 보안성을 강화합니다.
HTTPS는 HTTP 프로토콜과 다르게, 데이터를 평문으로 전송하지 않고, SSL/TLS 인증서를 사용하여 서버의 신원을 확인하고, 클라이언트와 서버 간의 통신에서 대칭키를 안전하게 전달하기 위한 공개키/개인키 암호화 방식을 사용합니다. 이러한 보안 기능 덕분에 HTTPS는 민감한 정보를 주고받는 경우에 매우 중요한 보안 프로토콜로 인식되고 있습니다.
공개키/개인키 암호화 방식은 대칭키 암호화 방식과는 다른 암호화 방식으로, 대칭키 암호화 방식에서 발생하는 대칭키를 안전하게 전달하는 문제를 해결하기 위해 개발되었습니다.
공개키/개인키 암호화 방식은, 두 개의 서로 다른 키를 사용하여 암호화와 복호화를 처리합니다. 이 중 하나의 키는 공개키(Public Key)이고, 다른 하나는 개인키(Private Key)입니다. 공개키는 누구나 알 수 있지만, 개인키는 해당 키를 소유한 사람만이 알고 있습니다.
공개키/개인키 암호화 방식은, 데이터를 전송하기 전에, 데이터를 암호화하는 공개키와, 데이터를 복호화하는 개인키를 함께 생성합니다. 데이터 송신자는 수신자의 공개키를 사용하여 데이터를 암호화하고, 데이터 수신자는 자신의 개인키를 사용하여 데이터를 복호화합니다.
이러한 공개키/개인키 암호화 방식은 대칭키 암호화 방식과는 달리 대칭키를 안전하게 전달하지 않아도 되는 장점이 있습니다. 또한, 공개키/개인키 암호화 방식은 SSL/TLS 프로토콜에서 사용되는 방식으로, HTTPS와 같은 보안 프로토콜에서 중요한 역할을 합니다.
HTTPS는 온라인 쇼핑, 은행 업무, 이메일 등 인터넷 상에서 민감한 정보를 주고받는 과정에서 보안성이 요구되는 모든 곳에서 사용됩니다. 이러한 이유로 HTTPS는 현재 인터넷에서 가장 중요한 보안 프로토콜 중 하나로 인식되고 있습니다.
클라이언트(웹 브라우저)가 HTTPS로 암호화된 페이지를 요청합니다. 이때, URL의 프로토콜이 "https://"로 시작하며, 기본 포트 번호는 443입니다.
서버는 클라이언트에게 SSL/TLS 인증서를 전송합니다. 인증서는 서버의 신원을 확인하는 데 사용되며, 일반적으로 인증기관에서 발급받은 인증서를 사용합니다.
클라이언트는 서버의 인증서를 확인합니다. 인증서가 유효한지, 인증서의 발급 기관이 신뢰할 수 있는지 등을 확인합니다.
클라이언트와 서버는 SSL/TLS 핸드셰이크 프로토콜을 사용하여 대칭키를 생성합니다. 이 대칭키는 데이터를 암호화하고 복호화하는 데 사용됩니다.
클라이언트와 서버는 대칭키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 전송합니다.
서버는 대칭키를 사용하여 암호화된 데이터를 복호화합니다.
서버는 요청에 대한 HTTPS 응답을 클라이언트에게 전송합니다. 이때, 응답 데이터는 대칭키를 사용하여 암호화되어 전송됩니다.
클라이언트는 대칭키를 사용하여 HTTPS 응답을 복호화합니다.