HTTPS; Hypertext Transfer Protocol Secure
- HTTP는 텍스트 기반의 통신으로, 데이터가 암호화되지 않아 보안 위협에 노출될 수 있다
- HTTPS는 HTTP에 보안 기능을 더해 데이터를 암호화하여 보안성을 강화하는 프로토콜이다
- 데이터 보안, 신원 도용 방지, 개인 정보 보호의 역할을 한다
- 온라인 쇼핑, 온라인 뱅킹, 개인 정보를 입력하는 사이트 등에 사용한다
- SSL 또는 TLS 프로토콜을 사용하여 데이터를 암호화하고 보호하여, 민감한 정보의 안전한 전송을 보장한다

SSL/TLS; Secure Sockets Layer/Transport Layer Security
- SSL은 클라이언트와 서버가 데이터를 암호화해 통신할 수있도록 돕는 보안 계층이다
- SSL 2.0의 취약점을 보완하기 위해 SSL 3.0을 개발했으며, 이후 버전에서는 TLS로 명칭이 변경되었다
- SSL/TLS는 대칭키와 공개키로 암호화를 시도하며, 핸드셰이크, 세션, 세션 종료 세 단계로 동작한다.
HTTPS 작동 원리

- 클라이언트가 서버에 접속하면, 서버는 자신의 도메인 이름, IP 주소, 공개키 등과 함께 서버의 인증서를 포함한 HTTPS 응답 메시지를 전달한다
- SSL 핸드셰이크 실행
- Client Hello, 클라이언트가 랜덤 데이터와 지원하는 암호화 방식 등을 서버에게 전달한다
- Server Hello, 서버가 랜덤 데이터와 선택한 암호화 방식, CA에서 발급 받은 인증서를 Server Certificate 메시지를 통해 클라이언트에게 전달한다
- 클라이언트는 인증 기관(CA)가 발급한 인증서 목록 중 서버의 인증서를 확인한다
- 클라이언트는 대칭 키(랜덤 세션 키)를 임시로 생성하고, 서버의 공개키로 암호화하여 서버로 전송한다
- 서버는 자신의 비밀 키로 대칭 키(랜덤 세션 키)를 복호화한다
- 이를 사용하여 세션 키를 생성함으로써 클라이언트와 서버는 동일한 세션 키를 갖게 된다.
- 클라이언트와 서버는 서로 공유하는 세션 키를 데이터 전송을 암호화하는 데 사용한다
- 데이터 전송이 끝나면 세션을 종료하고, 사용한 세션 키도 함께 삭제한다
클라이언트는 비대칭 키(공개 키)를 사용하여 대칭 키(비공개 키)를 암호화하여 전달
서버는 비대칭 키(공개 키)를 사용해여 대칭 키(비공개 키)를 복호화하여 클라이언트-서버가 대칭 키를 공유
이 대칭 키를 통해 데이터를 안전하게 교환
→ 대칭 키는 대량의 데이터를 빠르게 암/복호화 할 수 있지만 중간에 가로채 제3자가 복호화하여 악용할 수 있다
→ 비대칭 키는 자신의 개인 키로만 복호화할 수 있으므로 중간에 가로채더라도 제3자가 복호화할 수 없기 때문에 키를 안전하게 전달할 수 있다
→ 따라서, 대칭 키를 비대칭 키로 암호화하여 전달하면 대칭 키의 효율성과 공개 키의 안전성을 모두 활용할 수 있다
CA; Certification Authority, 인증기관
전자서명 및 암호화를 위한 디지털 인증서를 발급, 관리하는 서비스 제공 기관(서버)
디지털 서명의 서명자 신원을 확인하고, 서명자의 공개키를 맡아 보관
인증서 및 인증서 폐기 목록을 발행할 수 있다