HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 보안 기능을 적용하여 데이터를 안전하게 전송하도록 만든 프로토콜입니다.
기존 HTTP에 TLS 암호화를 적용하면, HTTPS 보안 프로토콜이라고 할 수 있습니다. HTTPS는 사용자와 서버 간 데이터를 암호화하여
외부에서 내용을 확인하거나 변조할 수 없도록 보호합니다.
HTTP와 HTTPS는 데이터 전송 방식에서 차이가 있습니다.
1. HTTP : 데이터를 암호화하지 않고 전송합니다. 중간에서 데이터가 노출되거나 변조될 위험이 있습니다.
2. HTTPS : TLS 암호화를 적용하여 데이터를 안전하게 전송합니다. 개인정보 및 로그인 정보 보호가 가능합니다.


※ HTTP와 HTTPS의 차이는 기능의 차이가 아니라, 통신이 흘러가는 구조의 차이입니다.
TLS(Transport Layer Security)는 네트워크 통신 시 데이터를 암호화하는 보안 프로토콜입니다.
데이터 도청, 위변조, 중간자 공격을 방지하기 위해 사용됩니다.
SSL과 TLS는 모두 데이터를 암호화하기 위한 보안 프로토콜입니다.
1. SSL(Secure Sockets Layer): SSL은 암호화 기반 인터넷 보안 프로토콜입니다.
인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 Netscape 가 1995년 처음으로 개발했습니다. SSL은 현재 사용중인 TLS 암호화의 전신입니다.
2. TLS(Transport Layer Security): 전송 계층 보안이라고도 하며 인터넷 상의 커뮤니케이션을 위한 개인 정보와 데이터 보안을 용이하게 하기 위해 설계되었으며 널리 채택된 보안 프로토콜입니다.
TLS의 주료 사용 사례는 웹사이트를 로드하는 웹 브라우저와 같이 웹 응용 프로그램과 서버 간의 커뮤니케이션을 암호화하는 것입니다.
클라이언트는 서버에 연결을 시도하며, 클라이언트 헬로(ClientHello) 메시지를 보냅니다.
이 메시지에는 클라이언트가 지원하는 TLS 버전, 사용 가능한 암호 제품군(cipher suites), 세션 ID 등이 포함되어 있습니다.
서버는 클라이언트 메시지를 받고, 서버 헬로(ServerHello) 메시지로 응답을 합니다.
이 메시지에는 선택된 TLS 버전, 선택된 암호 제품군, 서버의 세션 ID가 포함됩니다.
서버는 자신의 인증서를 클라이언트에게 전송합니다. 클라이언트는 인증서를 검증하여 서버의 신원을 확인합니다.
이후 서버는 필요에 따라 키 교환 파라미터와 서버 키 교환 메시지를 전송할 수 있습니다.
서버는 클라이언트에게 모든 필요한 인증서 정보와 키 교환 메시지를 발송했다는 신호로 서버 완료 메시지를 보냅니다.
클라이언트는 서버와 공유할 pre-master secret 을 생성하고, 서버의 공개키로 암호화하여 서버에게 전송합니다.
클라이언트는 ChangeCipherSpec 메시지를 보내어 앞으로의 메시지가 합의된 암호 제품군을 사용해 암호화될 것임을 알립니다.
서버도 같은 메시지를 클라이언트에게 보냅니다.
클라이언트와 서버는 각각 Finished 메시지를 보냅니다.
이 메시지는 핸드셰이크 과정에서 전송된 모든 메시지의 무결성을 검증하기 위해 사용됩니다.