Week2(2/3) Application Layer Protocol - HTTPS

HTTPS

HTTPS에 대해서 설명해주세요

  • HTTP에 **TLS(Transport Layer Security)**를 추가한 프로토콜로, 데이터의 기밀성, 무결성, 인증을 보장

  • TLS Handshake를 통해 클라이언트와 서버 간에 안전한 암호화 통신을 위한 세션 키를 협상

TLS가 뭔가요? (Transport Layer Security)

  • 클라이언트와 서버 간의 안전한 통신을 보장하기 위해 사용되는 프로토콜

  • 기밀성, 무결성, 인증을 보장

  • ClientHello, ServerHello, 서버의 공개키 -> Pre-Master-Key -> Master Key -> Session Key

대칭키 암호화 방식에 대해 설명해주세요.

  • 클라이언트와 서버가 동일한 암호화 키를 사용하여 데이터를 암호화하고 복호화하는 방식

  • 매우 빠르고 효율적이기 때문에, 대량의 데이터를 처리할 때 자주 사용

  • 단점은 키를 안전하게 전달하는 것이 어렵다는 점

비대칭키(공개키) 암호화 방식에 대해서 설명해주세요

  • **공개키(Public Key)**와 **개인키(Private Key)**를 사용하는 암호화 방식

  • 서버는 자신의 공개키를 클라이언트에게 전달하고, 클라이언트는 이 공개키를 사용하여 데이터를 암호화합니다. 암호화된 데이터는 서버가 자신의 개인키로만 복호화할 수 있습니다.

전자 서명에 대해 설명해주세요

  • 비대칭 암호화 방식을 사용하여 데이터의 무결성과 신원 인증을 보장하는 기술

  • 서명 과정: 서명자가 데이터를 해시하여 **해시 값(Hash Value)**을 생성한 후, 이를 자신의 **개인키(Private Key)**로 암호화하여 전자 서명을 만듭니다. 이 전자 서명은 데이터를 서명한 사람의 신원을 증명하는 역할을 합니다.

  • 검증 과정: 수신자는 서명자의 **공개키(Public Key)**로 전자 서명을 복호화하여 해시 값을 복원한 후, 원본 데이터로 새로운 해시 값을 계산합니다. 두 해시 값이 동일하면 데이터가 전송 중에 변조되지 않았으며, 서명자가 데이터를 생성했음을 확인할 수 있습니다.

SSL 핸드쉐이크에 대해 설명해주세요

  • 클라이언트와 서버는 먼저 TCP 연결을 설정합니다. 이 후 TLS Handshake가 시작

  • 클라이언트는 서버에게 ClientHello 메시지를 보냅니다.

  • 서버는 ServerHello 메시지로 응답하고, 서버의 **인증서(Certificate)**와 서버 측 난수를 함께 클라이언트에게 전송

  • 클라이언트는 받은 인증서의 유효성을 확인합니다. 클라이언트는 CA의 공개키로 인증서의 서명을 검증

  • 클라이언트는 Pre-Master Secret을 생성하고, 이를 서버의 공개키로 암호화하여 서버로 전송. 서버는 자신의 개인키로 이를 복호화

  • 클라이언트와 서버는 각각 자신이 가진 Pre-Master Secret과, 서로 교환한 **난수(ClientHello 및 ServerHello의 랜덤 값)**를 사용해 Master Secret을 생성

  • 클라이언트와 서버는 Master Secret을 바탕으로 세션 키(대칭키)를 생성

Last updated