0️⃣ 들어가기 전
우리는 웹 브라우저와 웹 서버 간에 데이터를 주고 받기 위한 프로토콜로 HTTP를 사용하고 있다는 점은 익히 안다.
그러나, 시대가 지남에 따라 다양한 해킹 방법이 등장하고, HTTP 또한 보안적으로 취약한 프로토콜로 지적받기 시작했다.
특히, HTTP는 데이터 전송 과정에서 암호화 과정이 포함되어 있지 않기 때문에, 중간자 공격 같은 보안 위협에 쉽게 노출될 수 있다.
그래서 더욱 안전하게 리소스를 주고 받을 수 있는 보안 체계가 필요했고, HTTPS가 탄생했다.
1️⃣ HTTPS
HTTPS는 HTTP의 보안버전이며,
SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여
데이터를 암호화하고, 서버와 클라이언트 간의 통신을 안전하게 보호한다.

즉, 중간자들이 데이터를 가로채도 실제 평문으로 보이지 않기 때문에 보안적으로 유리한 면이 있다.
사실 2024년 기준으로 실제 배포된 웹사이트 중에 99퍼센트는 HTTPS를 사용하고 있다.
크롬 브라우저에서는 클라이언트가 HTTP 페이지에 접근하면 "주의 요함"이라는 보안 경고를 표시하는 패널티를 부과하여 거의 반 강제적으로 HTTPS 사용을 권장했다.

HTTP vs HTTPS
HTTP | HTTPS | |
의미 | Hypertext Transfer Protocol | Hypertext Transfer Protocol Secure |
기본 프로토콜 | HTTP/1과 HTTP/2는 TCP/IP를 사용합니다. HTTP/3은 QUIC 프로토콜을 사용합니다. | HTTP 요청 및 응답을 추가로 암호화하기 위해 SSL/TLS와 함께 HTTP/2 사용 |
포트 | 기본 포트 80 | 기본 포트 443 |
용도 | 이전 텍스트 기반 웹 사이트 | 모든 최신 웹 사이트 |
보안 | 추가 보안 기능 없음 | 퍼블릭 키 암호화에 SSL 인증서 사용 |
이점 | 인터넷을 통한 통신 지원 | 웹 사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 개선 |
2️⃣ SSL과 TLS의 역사
오늘날에는 개인 정보 및 금융 데이터 등, 인터넷에서 너무 민감한 데이터를 통신하기 때문에 데이터를 안전하게 주고받기 위한 기술들이 더욱 중요해졌다.
그 중 SSL과 TLS는 웹사이트와 사용자 간의 안전한 연결을 구축하는 핵심 기술이다.
HTTPS라는 용어는 사실 HTTP + SSL/TLS로 이해할 수 있다.

OSI 7계층을 말할때 보통 SSL(TLS)는 Layer 4-5에 포함된다고 말한다.
표현 게층의 주요 역할은 데이터를 어떻게 표현할지를 결정하는 것이다.
이를테면, 텍스트 인코딩(ASCII, UTF-8 등), 암호화, 압축 등이 이 계층에서 처리됩니다. SSL/TLS는 그 중에서도 암호화와 보안을 담당하며, 데이터의 안전한 전달을 보장합니다.
<사실상 표준이라고 불리는 TCP/IP에서는 네트워크를 사용하는 응용프로그램에 모두 뭉뜨그려서 표현된다.>

3️⃣ SSL과 TLS란?
그래서 SSL이랑 TLS가 뭔데.
✅ SSL (Secure Sockets Layer)
SSL은 인터넷에서 데이터를 암호화하여 안전하게 전송하는 프로토콜이다.
하지만 SSL은 여러 보안 취약점이 발견되면서, 현재는 더 이상 사용되지 않고 있다.
👉 SSL의 후속 버전이 바로 TLS (Transport Layer Security)
✅ TLS (Transport Layer Security)
TLS는 SSL을 개선한 보안 프로토콜이다.
사실은 현재 우리가 사용하는 HTTPS는 사실 SSL이 아닌 TLS 기반이다.
TLS는 데이터 암호화, 인증, 무결성 보장 등의 기능을 제공해서 네트워크 통신을 안전하게 유지한다.
3️⃣ SSL의 작동원리 (암호화 기법)
먼저 SSL은 대칭키 암호화와 공개키 암호화를 결합하는 방식을 사용한다.
간단하게만 설명하면,
"대칭키 암호화"는 하나의 키로 암호화와 복호화를 모두 수행하는 방식이다.
속도는 빠르지만, 키를 하이재킹 당하면 보안 문제가 있다.
"공개키 암호화"는 두 개의 키(공개키와 개인키)를 사용하는 방식이다.
누구나 가질 수 있는 공개키로 암호화하고, 개인키로만 복호화가 가능하다. (반대도 가능하다.)

1단계: 클라이언트 Hello
클라이언트는 서버에게 "Client Hello" 메시지를 보낸다. 이 메시지에는 랜덤 데이터와 암호화 방식 목록이 포함된다. 암호화 방식은 대칭키 및 공개키 기법이지만, 서로 다른 암호화 방식이 존재하므로 이를 협의하기 위해 사용된다.
2단계: 서버 Hello 및 인증서 전송
서버는 클라이언트의 요청을 받으면 "Server Hello" 메시지를 보낸다. 이 메시지에는 클라이언트가 요청한 암호화 방식과 랜덤 데이터, 그리고 인증서가 포함된다. 인증서는 **공인된 인증기관(CA)**에서 발급받은 문서로, 서버의 신뢰성을 검증한다.
3단계: 인증서 검증
클라이언트는 받은 인증서를 CA에서 발급한 인증서 목록과 비교하여 검증한다. 인증서가 유효하면, 공개키로 복호화하여 서버의 신뢰성을 확인할 수 있다.
4단계: 임시 대칭키 생성
클라이언트는 데이터를 암호화하는 데 사용할 대칭키를 임시로 생성한다. 이 임시 키는 공개키로 암호화되어 서버에게 전달된다. 이 과정에서 공개키 암호화 방식이 사용되며, 이 키는 중간에서 노출되지 않도록 보장된다.
5단계: 서버가 임시 키 복호화
서버는 자신이 가진 개인키로 암호를 복호화하여 임시 키를 받는다. 이제 클라이언트와 서버는 동일한 임시 대칭키를 공유하게 된다.
6단계: 세션 키 생성
클라이언트와 서버는 해당 임시 키를 이용해 세션 키를 생성하고, 이후의 데이터 통신은 대칭키 암호화 방식으로 암호화된 세션 키를 사용하여 이루어진다. 이렇게 암호화된 데이터는 속도가 빠르며, 안전하게 통신할 수 있게 된다.
세션 종료
데이터 전송이 끝나면 세션이 종료되며, 세션 동안 사용된 키는 폐기된다. 이로써 안전한 통신이 종료된다.
4️⃣ SSL과 TLS의 차이점
보안성 | 취약점이 많음 | SSL보다 훨씬 강력한 보안 |
지원 여부 | 더 이상 사용되지 않음 | 현재 대부분의 웹사이트에서 사용 |
버전 | SSL 2.0, SSL 3.0 (모두 폐기됨) | TLS 1.0, 1.1 (구버전) / TLS 1.2, 1.3 (현재 표준) |
HTTPS 적용 | 과거에는 사용됨 | 현재 모든 HTTPS 사이트에서 사용 |
[현재 SSL은 완전히 폐기되었고, TLS 1.2 이상을 사용해야 안전]
참고 : https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
https://www.digicert.com/kr/what-is-ssl-tls-and-https
0️⃣ 들어가기 전
우리는 웹 브라우저와 웹 서버 간에 데이터를 주고 받기 위한 프로토콜로 HTTP를 사용하고 있다는 점은 익히 안다.
그러나, 시대가 지남에 따라 다양한 해킹 방법이 등장하고, HTTP 또한 보안적으로 취약한 프로토콜로 지적받기 시작했다.
특히, HTTP는 데이터 전송 과정에서 암호화 과정이 포함되어 있지 않기 때문에, 중간자 공격 같은 보안 위협에 쉽게 노출될 수 있다.
그래서 더욱 안전하게 리소스를 주고 받을 수 있는 보안 체계가 필요했고, HTTPS가 탄생했다.
1️⃣ HTTPS
HTTPS는 HTTP의 보안버전이며,
SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여
데이터를 암호화하고, 서버와 클라이언트 간의 통신을 안전하게 보호한다.

즉, 중간자들이 데이터를 가로채도 실제 평문으로 보이지 않기 때문에 보안적으로 유리한 면이 있다.
사실 2024년 기준으로 실제 배포된 웹사이트 중에 99퍼센트는 HTTPS를 사용하고 있다.
크롬 브라우저에서는 클라이언트가 HTTP 페이지에 접근하면 "주의 요함"이라는 보안 경고를 표시하는 패널티를 부과하여 거의 반 강제적으로 HTTPS 사용을 권장했다.

HTTP vs HTTPS
HTTP | HTTPS | |
의미 | Hypertext Transfer Protocol | Hypertext Transfer Protocol Secure |
기본 프로토콜 | HTTP/1과 HTTP/2는 TCP/IP를 사용합니다. HTTP/3은 QUIC 프로토콜을 사용합니다. | HTTP 요청 및 응답을 추가로 암호화하기 위해 SSL/TLS와 함께 HTTP/2 사용 |
포트 | 기본 포트 80 | 기본 포트 443 |
용도 | 이전 텍스트 기반 웹 사이트 | 모든 최신 웹 사이트 |
보안 | 추가 보안 기능 없음 | 퍼블릭 키 암호화에 SSL 인증서 사용 |
이점 | 인터넷을 통한 통신 지원 | 웹 사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 개선 |
2️⃣ SSL과 TLS의 역사
오늘날에는 개인 정보 및 금융 데이터 등, 인터넷에서 너무 민감한 데이터를 통신하기 때문에 데이터를 안전하게 주고받기 위한 기술들이 더욱 중요해졌다.
그 중 SSL과 TLS는 웹사이트와 사용자 간의 안전한 연결을 구축하는 핵심 기술이다.
HTTPS라는 용어는 사실 HTTP + SSL/TLS로 이해할 수 있다.

OSI 7계층을 말할때 보통 SSL(TLS)는 Layer 4-5에 포함된다고 말한다.
표현 게층의 주요 역할은 데이터를 어떻게 표현할지를 결정하는 것이다.
이를테면, 텍스트 인코딩(ASCII, UTF-8 등), 암호화, 압축 등이 이 계층에서 처리됩니다. SSL/TLS는 그 중에서도 암호화와 보안을 담당하며, 데이터의 안전한 전달을 보장합니다.
<사실상 표준이라고 불리는 TCP/IP에서는 네트워크를 사용하는 응용프로그램에 모두 뭉뜨그려서 표현된다.>

3️⃣ SSL과 TLS란?
그래서 SSL이랑 TLS가 뭔데.
✅ SSL (Secure Sockets Layer)
SSL은 인터넷에서 데이터를 암호화하여 안전하게 전송하는 프로토콜이다.
하지만 SSL은 여러 보안 취약점이 발견되면서, 현재는 더 이상 사용되지 않고 있다.
👉 SSL의 후속 버전이 바로 TLS (Transport Layer Security)
✅ TLS (Transport Layer Security)
TLS는 SSL을 개선한 보안 프로토콜이다.
사실은 현재 우리가 사용하는 HTTPS는 사실 SSL이 아닌 TLS 기반이다.
TLS는 데이터 암호화, 인증, 무결성 보장 등의 기능을 제공해서 네트워크 통신을 안전하게 유지한다.
3️⃣ SSL의 작동원리 (암호화 기법)
먼저 SSL은 대칭키 암호화와 공개키 암호화를 결합하는 방식을 사용한다.
간단하게만 설명하면,
"대칭키 암호화"는 하나의 키로 암호화와 복호화를 모두 수행하는 방식이다.
속도는 빠르지만, 키를 하이재킹 당하면 보안 문제가 있다.
"공개키 암호화"는 두 개의 키(공개키와 개인키)를 사용하는 방식이다.
누구나 가질 수 있는 공개키로 암호화하고, 개인키로만 복호화가 가능하다. (반대도 가능하다.)

1단계: 클라이언트 Hello
클라이언트는 서버에게 "Client Hello" 메시지를 보낸다. 이 메시지에는 랜덤 데이터와 암호화 방식 목록이 포함된다. 암호화 방식은 대칭키 및 공개키 기법이지만, 서로 다른 암호화 방식이 존재하므로 이를 협의하기 위해 사용된다.
2단계: 서버 Hello 및 인증서 전송
서버는 클라이언트의 요청을 받으면 "Server Hello" 메시지를 보낸다. 이 메시지에는 클라이언트가 요청한 암호화 방식과 랜덤 데이터, 그리고 인증서가 포함된다. 인증서는 **공인된 인증기관(CA)**에서 발급받은 문서로, 서버의 신뢰성을 검증한다.
3단계: 인증서 검증
클라이언트는 받은 인증서를 CA에서 발급한 인증서 목록과 비교하여 검증한다. 인증서가 유효하면, 공개키로 복호화하여 서버의 신뢰성을 확인할 수 있다.
4단계: 임시 대칭키 생성
클라이언트는 데이터를 암호화하는 데 사용할 대칭키를 임시로 생성한다. 이 임시 키는 공개키로 암호화되어 서버에게 전달된다. 이 과정에서 공개키 암호화 방식이 사용되며, 이 키는 중간에서 노출되지 않도록 보장된다.
5단계: 서버가 임시 키 복호화
서버는 자신이 가진 개인키로 암호를 복호화하여 임시 키를 받는다. 이제 클라이언트와 서버는 동일한 임시 대칭키를 공유하게 된다.
6단계: 세션 키 생성
클라이언트와 서버는 해당 임시 키를 이용해 세션 키를 생성하고, 이후의 데이터 통신은 대칭키 암호화 방식으로 암호화된 세션 키를 사용하여 이루어진다. 이렇게 암호화된 데이터는 속도가 빠르며, 안전하게 통신할 수 있게 된다.
세션 종료
데이터 전송이 끝나면 세션이 종료되며, 세션 동안 사용된 키는 폐기된다. 이로써 안전한 통신이 종료된다.
4️⃣ SSL과 TLS의 차이점
보안성 | 취약점이 많음 | SSL보다 훨씬 강력한 보안 |
지원 여부 | 더 이상 사용되지 않음 | 현재 대부분의 웹사이트에서 사용 |
버전 | SSL 2.0, SSL 3.0 (모두 폐기됨) | TLS 1.0, 1.1 (구버전) / TLS 1.2, 1.3 (현재 표준) |
HTTPS 적용 | 과거에는 사용됨 | 현재 모든 HTTPS 사이트에서 사용 |
[현재 SSL은 완전히 폐기되었고, TLS 1.2 이상을 사용해야 안전]
참고 : https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
https://www.digicert.com/kr/what-is-ssl-tls-and-https