HTTPS에 대해서 설명해주세요.
HTTPS는 HyperText Transfer Protocol Secure의 약자로, 웹 통신 프로토콜인 HTTP의 보안 버전을 의미한다. 데이터의 안전한 전송을 위해 사용되며, 웹 사이트와 웹 브라우저 간의 통신을 암호화하여 보호한다.
HTTPS는 대칭키 암호화와 공개키 암호화를 조합하여 작동한다. SSL(Secure Socket Layer)이나 TLS(Transport Layer Security) 프로토콜을 통해 세션 데이터를 암호화하며, 기본 TCP/IP 포트는 443이고, SSL 프로토콜 위에서 HTTPS 프로토콜이 동작한다.
SSL/TLS이 뭔가요?
SSL/TLS는 인터넷 상에서 데이터의 안전한 전송을 위한 암호화 프로토콜입니다. SSL(Secure Sockets Layer)은 초기 버전이고, 이를 개선한 최신 표준이 TLS(Transport Layer Security)입니다. 주로 웹사이트와 브라우저 간의 통신을 보호하기 위해 사용되며, 데이터 암호화, 무결성 검증, 서버 인증을 통해 중간 공격이나 도청을 방지합니다. HTTPS는 TLS 위에서 동작하는 프로토콜로, 사용자에게 안전한 웹 연결을 제공합니다.
대칭키 암호화 방식에 대해 설명해주세요.
대칭키 암호화는 암호화와 복호화에 같은 키를 사용하는 방식입니다.
속도가 빠르고 대량의 데이터를 처리하는 데 적합하지만, 송신자와 수신자가 동일한 키를 공유해야 하므로 키 관리가 어렵다는 단점이 있습니다.
비대칭키(공개키) 암호화 방식에 대해서 설명해주세요.
비대칭키 암호화 방식은 두 개의 키, 즉 공개키와 개인키를 사용하는 암호화 방식입니다. 이 방식에서 공개키는 누구나 접근할 수 있도록 공개되지만, 개인키는 오직 소유자만이 알고 있습니다. 데이터를 암호화할 때 공개키로 암호화하면, 해당 데이터는 개인키로만 복호화할 수 있습니다.
이 방식은 주로 데이터의 기밀성을 확보하거나 전자서명을 통해 송신자의 신원을 검증할 때 사용됩니다. 예를 들어, 누군가가 제 공개키로 데이터를 암호화해 보내면, 오직 저만이 개인키로 이를 복호화할 수 있게 됩니다.
전자 서명에 대해서 설명해주세요.
디지털 서명(영어: digital signature, digital 署名)은 네트워크에서 송신자의 신원을 증명하는 방법으로, 송신자가 자신의 비밀키로 암호화한 메시지를 수신자가 송신자의 공용 키로 해독하는 과정이다.
앨리스(Alice)는 메시지와 비밀키로부터 연산된 서명을 추가함으로써 보내려는 메시지("Hello Bob!")에 서명한다. 메시지와 서명을 받은 밥(Bob)은 앨리스의 공개키를 통해 서명된 메시지가 진짜임을 확인할 수 있다.
HTTPS 암호화 과정에 대해 설명해주세요. (SSL Handshake의 동작 과정을 설명해 주세요.)
- 클라이언트 Hello: 클라이언트가 서버에 연결 요청을 보내며, 사용할 암호화 방식과 SSL/TLS 버전을 제안합니다.
- 서버 Hello: 서버가 클라이언트의 요청을 받고, 클라이언트가 지원하는 암호화 방식 중 하나를 선택해 응답합니다. 또한, 서버의 SSL 인증서를 클라이언트에게 보냅니다.
- 인증서 검증: 클라이언트는 서버가 보낸 인증서가 신뢰할 수 있는 CA에 의해 발급된 것인지 확인하여 서버의 신원을 검증합니다.
- 세션 키 교환: 클라이언트는 세션 키를 생성하여 서버의 공개키로 암호화한 후 서버에 전달합니다.
- 암호화 통신 시작: 서버는 자신의 개인키로 세션 키를 복호화한 후, 클라이언트와 동일한 세션 키를 가지게 됩니다. 이 세션 키로 이후의 데이터를 암호화하여 안전한 통신을 시작합니다.
'외부활동 > JSCODE 네트워크' 카테고리의 다른 글
[3주차] 쿠키, 세션, 토큰, CORS (0) | 2024.11.15 |
---|---|
[2주차] DNS (0) | 2024.11.08 |
[2주차] HTTP (0) | 2024.11.08 |
인터넷과 웹의 차이 (0) | 2024.11.08 |
HTTP keep-alive란? (0) | 2024.11.06 |