CS

[Network] HTTP/HTTPS의 차이, SSL/TLS이란?

KJihun 2023. 7. 5. 01:02
728x90

 

HTTP/HTTPS

HTTP와 HTTPS는 클라이언트와 서버 간 통신에 사용되는 프로토콜이다.

 

프로토콜이란 컴퓨터나 디지털 장치 등 다양한 기기간에 통신하기 위한 규칙과 규약이다.

 

사용자의 요청(주소창에 URL을 입력하거나 웹 페이지의 링크를 클릭 등) 시,

 

브라우저는 해당 URL로 서버에 요청(Request)을 보낸다.

 

이 요청을 HTTP 또는 HTTPS 프로토콜을 사용하여 이루어진다.

 

HTTP

HTTP (HyperText Transfer Protocol): 텍스트 기반으로 데이터를 전송하며 보안 기능이 없는 평문 통신 방식이다.

 

중간에 제3자가 데이터를 가로채거나 조작할 가능성이 있다.

 

80번 포트를 사용하여 데이터를 전송한다.

 

HTTPS

HTTP에 SSL/TLS을 사용하여 데이터를 암호화하여 안전하게 전송하는 방식이다.

 

중간에 제3자가 데이터를 엿볼 수 없도록 보안을 강화하고, 데이터 무결성을 보장한다.

 

443번 포트를 사용하여 데이터를 암호화하고 전송한다.

 


 

SSL(Secure Scokets Layer)

HTTP의 보안문제로 데이터의 보호를 위해 1995년 Netscape가 개발한 암호화 기반 인터넷 보안 프로토콜이다

전달되는 모든 데이터를 암호화하며 SSL/TLS 를 사용하는 웹사이트의 URL은 HTTP 대신 HTTPS를 사용한다.

 

TLS(Transport Layer Security)

SSL의 업그레이드 버전이며 Netscape가 업데이트에 참여하지 않게 되어 이름을 TLS로 변경하게 됐다.

같은 역할을 하기에 두개의 명칭을 합쳐 SSL/TLS이라고 부르고 있다.

 

 

SSL/TLS 의 동작 방식

  • 정보 보호를 위해 웹에서 전송되는 데이터를 암호화하여 데이터를 가로채더라도 복호화가 거의 불가능하다.
  • Handshaking으로 인증이 이루어지며 데이터 무결성을 위해 포함된 디지털 서명으로 데이터 조작 여부를 확인한다.
  • 응용계층 ~ 전송계층 사이에서 동작하며 계층에서 독립적으로 수행된다

 

SSL/TLS Handshaking

TCP 연결 후 수행된다.

1. ClientHello
   - 클라이언트가 서버에게 연결을 시작하려고 한다는 메시지를 보낸다
   - 이 메시지에는 클라이언트가 지원하는 SSL/TLS 버전, 암호화 알고리즘 목록 등이 포함된다.

2. ServerHello
   - 서버는 클라이언트의 요청에 응답하여 사용할 SSL/TLS 버전, 디지털 인증서 및 암호화 알고리즘을 선택한다.
   - 디지털 인증서는 공개키 암호화를 사용하여 서버의 신원을 확인하는 데 사용된다

3. 인증서 확인 (Certificate Verification)
   - 클라이언트는 디지털 인증서를 CA의 공개키를 사용하여 디지털 인증서의 유효성을 확인한다.

4. Pre-master Secret 생성
   - 클라이언트는 서버의 공개키를 사용하여 대칭키를 생성하는 데 사용 될 Pre-master Secret 이라는 랜덤한 데이터를 생성한다. 

5. Key Exchange (키 교환)
   - 이전 단계에서 생성한 Pre-master Secret을 사용하여 대칭키를 생성한다. 대칭키를 사용해 데이터의 암호화 및 복호화를 진행한다.

SSL/TLS 인증서

SSL/TLS는 SSL/TLS인증서가 있는 웹사이트만 실행할 수 있다. 인증서는 사람의 신분증과 유사하다.

SSL인증서에는 공개 키가 포함된다.

이 공개키 덕분에 암호화가 가능하게 된다. 클라이언트의 요청은 공개 키를 이용해 서버에 암호화 하여 전달한다.

서버에도 공개되지 않는 개인 키가 있는데 이 개인 키를 이용해 암호화된 데이터를 복호화한다.

해당 인증서를 발급하는 기관은 CA(certificate authority)라고 한다.

 

 

 

TLS Handshake는 어떻게 진행되는가? | Session Key

TLS(Transport Layer Security)란? 인터넷 상의 커뮤니케이션에서 개인 정보와 데이터 보안을 위해 설계되어 널리 채택된 보안 프로토콜이다. 주요 사용 사례는 웹 브라우저(웹 응용 프로그램)와 서버 간

sunrise-min.tistory.com

  •  

'CS' 카테고리의 다른 글

[CS] 스케줄링  (0) 2023.07.15
[CS] 병행(Concurrency)과 병렬(Parallel)  (0) 2023.07.12
[Spring] Spring AOP(Aspect-Oriented Programming)  (0) 2023.07.11
[CS] DBMS  (0) 2023.07.08
[Spring] IoC, SpringContainer, DI  (0) 2023.06.28