HTTPS에 대해서 설명해주세요.
HTTP(Hypertext Transfer Protocol) 는 클라이언트와 서버 간 통신을 위한 통신 규약입니다.
하지만, HTTP는 암호화되지 않는 평문 데이터를 전송하기 때문에 제 3자가 정보를 조회할 수 있다는 위험이 있습니다.
이를 해결하기 위해서 HTTPS가 등장했습니다.
HTTPS(Hyertext Transfer Protocol Secure) 는 HTTP에 데이터 암호화가 추가되었습니다.
암호화된 데이터를 전송하기 때문에 제 3자가 볼 수 없도록 할 수 있습니다.
HTTPS는 어떻게 적용할 수 있나요?
HTTPS를 적용하기 위해서는 인증된 기관(Certificate Authority, CA)에게 인증서를 발급받아야 합니다.
CA에 인증서를 요청하면 CA 이름, 서버의 공개키, 서버의 정보를 활용하여 인증서를 생성하고 이를 CA 개인 키로 암호화하여 서버로 전송합니다.
이때 인증서는 CA 개인 키로 암호화되니 신뢰성을 확보할 수 있습니다. 이러한 인증서를 서버측에서 발급받으면 HTTPS를 적용할 수 있습니다.
HTTPS 동작 원리에 관해서 설명해 주세요. 🤔
클라이언트가 서버로 최초로 요청할 때 암호화 알고리즘, 프로토콜 버전, 무작위 값을 전달합니다.
이를 받은 서버는 클라이언트에게 암호화 알고리즘, 인증서, 무작위 값을 전달하며, 클라이언트는 서버의 인증서를 CA의 공개키로 복호화하여 검증합니다.
검증이 끝난 이후에는 클라이언트와 서버에서 생성된 무작위 값을 조합하여 Pre Master Secret 값을 생성하여 서버 공개키로 암호화하여 전달합니다.
서버는 전달받은 암호화된 데이터를 개인 키로 복호화하여 Pre Master Secret를 얻습니다.
클라이언트와 서버는 일련의 과정을 통해 Pre Master Secret를 Master Secret으로 변경하고, 해당 정보를 이용해 세션 키를 생성합니다.
이러한 과정을 TLS 핸드 쉐이크라고 하며, 이후부터 클라이언트와 서버는 세션 키를 활용한 대칭키 암호화 방식으로 데이터 송수신을 수행합니다.