서버/서버 이론

HTTPS

season97 2024. 1. 18. 15:14

[HTTPS 란?] (Hypertext Transfer Protocol Secure)

 

・ 웹 통신의 보안을 강화하기 위해 설계된 프로토콜

 

・ 기본적으로 HTTP 프로토콜에 암호화 계층을 추가해 데이터의 기밀성과 무결성을 보장해준다

ㄴ> HTTP에 Secure Socket이 추가된 개념

 

・ SSL(Secure Sockets Layer) 또는 그 후속주자인 TLS(Transport Layer Security) 프로토콜을 사용한다.

ㄴ> HTTP + SSL

 

・ (HTTP는 80번 포트) HTTPS는 443번 포트를 사용하며, 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화 해준다.

 

HTTP와의 차이점

 

[주요 특징]

 

1. 암호화

 

・ 데이터 전송 시, 클라이언트와 서버 사이에 교환되는 정보는 암호화되어 전송

 

・ 대칭키 암호화 비대칭키 암호화의 조합을 사용하며 대칭키 암호화는 빠르고 효율적인 데이터 전송, 비대칭키 암호화는 안정성을 보장

 

2. 인증

 

・ HTTPS는 서버가 신뢰할 수 있는지 확인하는 인증 과정을 거친다.

 

・ 서버가 유효한 SSL/TLS 인증서를 제공함으로써 이루어지며, 이 인증서는 신뢰할 수 있는 인증기관(CA) 에 의해 발급되고 검증된다.

 

・ 유저는 브라우저에 표시되는 자물쇠 아이콘을 통해 확인 가능하다

 

3. 데이터 무결성 

 

・ 데이터가 송수신이 되는 동안에 원본 데이터가 변경되지 않았음을 보장

 

・ 전송 과정에서 메시지 인증코드(MAC)나 해시 함수를 사용해 검증 가능

 

4. 포워드 시크릿

 

・ 많은 HTTPS 구현에서는 포워드 시크릿을 지원한다. 세션키가 과거 또는 미래의 세션키와 무관하게 생성되어, 하나의 키가 손상되더라도 다른 세션의 통신 내용이 노출되지 않는다.

 

5. 헤더 보호

 

・ HTTPS는 HTTP헤더도 암호화하여 사용자의 쿠키, 참조된 페이지(URL), 브라우저의 유형 등 민감한 헤더 정보도 보호한다

 

6. 포트

 

・  HTTPS는 443번 포트를 사용하며, 이는 네트워크 상에서 암호화된 트래픽을 싑게 식별할 수 있게 해준다

 

[ 대칭키 암호화와 비대칭키 암호화 ]

1. 대칭키 암호화

 

・ 클라이언트와 서버가 동일한 키를 사용해 암호화/복화를 진행

・ 키가 노출되면 매우 위험하지만 연산 속도가 빠름

 

2. 비대칭키 암호화

 

・ 1개의 쌍으로 구성된 공캐기와 개인키를 암호화/복호화 하는데 사용함

・ 키가 노출되어도 비교적 안전하지만 연산 속도가 느림

비대칭키 암호화

⌘ 공개키 : 모두에게 공개한 키

⌘ 비공개키 : 나만 가지고 알고 있어야 하는 키 (로그인같은 개념인듯?)

 

[HTTPS 동작 과정]

 HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산속도와 안정성을 모두 얻고 있다.

 HTTPS 연결 과정에서는 먼저 서버와 클라이언트 간에 세션키를 교환한다. 

 

  세션키는 주고 받는 데이터를 암호화 하기 위해 사용되는 대칭키이며 데이터 간의 교환에는 빠른 연산 속도가 필요하기 때문에 세션키는 대칭키로 만들어진다. (3번쨰 그림)

 

  그리고 세션키를 클라이언트와 서버가 교환하는 과정에서 비대칭 키가 사용된다. (2번째 그림) 즉 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되고 이후 데이터를 교환하는 과정에서 빠른 연산속도를 위해 대칭키를 사용하는것

 

 

 


[그림 설명]

 

 

1. 클라이언트가 서버로 최초 연결을 시도

2. 서버는 공개키(인증서)를 브라우저에게 넘겨줌

3, 브라우저는 인증서의 유효성을 검사하고 세션키를 발급함.

4. 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화 하여 서버에 전송함

5. 서버는 개인키로 암호화된 세션키를 복호화 하여 세션키를 얻음

6. 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행

 

 

[HTTPS 발급 과정]

 

・ CA를 통해 세션키를 발급 받는다.

-예시-

1. A기업은 HTTP 기반의 애플리케이션에서 HTTPS를 적용하기 위해 공개키/개인키를 발급함

2. CA 기업에게 돈을 지불하고, 공개키를 저장하는 인증서의 발급을 요청함

3. CA기업은 CA기업의 이름, 서버의 공개키. 서버의 정보 등을 기반으로 인증서를 생성하고 ,CA기업의 개인키로 암호화 하여 A기업에게 이를제공함

4. A기업은 클라이언트에게 암호화된 인증서를 제공함

5. 브라우저는 CA기업의 공개키를 미리 다운받아 가지고 있어 암호화된 인증서를 복호화함

6. 암호화된 인증서를 복호화 하여 얻은 A기업의 공개키로 세션키를 공유함

 

⌘ 인증서는 CA의 개인키로 암호화 되어서 신뢰성을 확보할 수 있다

⌘ 클라이언트는 A기업의 공개키로 데이터를 암호화 했기 떄문에 A기업만 복호화 하여 데이터를 얻을 수 있다.

 

 

 

'서버 > 서버 이론' 카테고리의 다른 글

게임서버  (2) 2024.10.31
HTTP와 HTTP 메시지  (0) 2024.01.18
OSI 7계층  (0) 2024.01.17
패킷과 패킷통신, TCP/IP  (0) 2024.01.17