# 04-03 Http와 Https

## Q. HTTP와 HTTPS의 주요 차이점은 무엇인가요?

HTTP와 HTTPS의 주요 차이점에 대해 말씀드리겠습니다.\
먼저, HTTP는 Hypertext Transfer Protocol의 약자로, 웹 상에서 정보를 주고받는 프로토콜입니다. 반면, HTTPS는 HTTP Secure의 약자로, HTTP에 보안 계층을 추가한 프로토콜입니다.

\
가장 큰 차이점은 보안에 있습니다.\
HTTP는 평문으로 데이터를 전송하기 때문에 중간에 누군가가 데이터를 가로챌 경우 내용을 쉽게 볼 수 있습니다.\
하지만 HTTPS는 SSL 또는 TLS라는 보안 프로토콜을 사용해 데이터를 암호화합니다. 이로 인해 데이터가 노출되더라도 내용을 쉽게 해독할 수 없죠.

\
또한, 사용하는 포트도 다릅니다. HTTP는 80번 포트를, HTTPS는 443번 포트를 기본적으로 사용합니다.\
URL 구조도 차이가 있는데요, HTTP는 'http://'로 시작하고 HTTPS는 'https://'로 시작합니다.

\
HTTPS의 또 다른 장점은 인증 기능입니다. SSL/TLS 인증서를 통해 접속한 웹사이트가 신뢰할 수 있는 곳인지 확인할 수 있습니다.

\
데이터 무결성 측면에서도 HTTPS가 우수합니다. 전송 중 데이터가 변조되었는지 감지할 수 있기 때문이죠.\
마지막으로 성능 면에서는 HTTPS가 암호화/복호화 과정 때문에 약간 느릴 수 있지만, 최근에는 그 차이가 거의 없어졌습니다.

결론적으로, HTTPS는 HTTP에 비해 보안성이 크게 향상되어 데이터의 기밀성과 무결성을 보장하며, 현대 웹 환경에서 그 중요성이 계속 커지고 있습니다.

***

## Q. HTTPS에서 사용하는 SSL/TLS는 어떤 방식으로 동작하나요?

SSL/TLS는 `공개키 암호화`와 `대칭키 암호화` 이 두 가지 암호화 방식을 혼합해서 사용합니다.\
먼저, 초기 연결 단계에서는 `공개키 암호화`를 사용합니다. 이 방식은 안전하게 키를 교환할 수 있지만, 계산 비용이 높아 대량의 데이터를 처리하기에는 적합하지 않습니다.\
그래서 실제 데이터 전송 단계에서는 `대칭키 암호화`를 사용합니다. 대칭키 암호화는 공개키 암호화에 비해 훨씬 빠르기 때문이죠.\
초기 핸드셰이크 과정에서 `공개키 암호화`를 이용해 안전하게 `대칭키`를 교환합니다. 이렇게 교환된 `대칭키`를 이용해 이후의 모든 통신을 암호화하는 거죠.\
이런 방식을 통해 SSL/TLS는 보안성과 효율성을 모두 확보할 수 있습니다. 안전하게 키를 교환하면서도, 실제 데이터 전송은 빠르게 이루어질 수 있는 것이죠.

***

## Q. SSL/TLS 핸드셰이크 과정에 대해 자세히 설명해주실 수 있나요?

SSL/TLS 핸드셰이크는 다음과 같은 단계로 진행됩니다:

1. 클라이언트가 서버에 연결을 요청하며 지원 가능한 암호화 방식 목록을 전송합니다.
2. 서버는 암호화 방식을 선택하고, SSL 인증서를 클라이언트에게 전송합니다.
3. 클라이언트는 서버의 인증서를 확인하고, 세션 키 생성에 사용할 랜덤 데이터를 전송합니다.
4. 서버와 클라이언트는 각자 세션 키를 생성합니다.
5. 이후 통신은 이 세션 키를 사용하여 암호화됩니다.

***

## Q. HTTPS를 사용할 때의 장단점은 무엇인가요?

HTTPS의 장점은 데이터 암호화로 인한 보안 강화, 데이터 무결성 보장, 사용자 신뢰도 향상, 그리고 SEO 개선 등이 있습니다.\
단점으로는 SSL 인증서 구입 및 갱신에 따른 비용, 초기 연결 시 약간의 속도 저하, 그리고 서버 리소스 사용량 증가 등이 있습니다.
