[ETC] http, https 동작 방식 및 SSL 암호화란

2023. 8. 3. 13:57ETC

HTTP는 HyperText Transfer Protocol의 약자로, 웹에서 데이터를 주고 받는 프로토콜입니다. 즉, 클라이언트(일반적으로 웹 브라우저)와 서버 사이에 정보를 주고 받는 방식을 정의합니다. HTTP는 stateless protocol로, 각 요청이 독립적으로 처리되며, 이전 요청에 대한 정보는 저장되지 않습니다.

HTTPS는 HTTP에 보안 기능이 추가된 것으로, Secure Socket Layer (SSL) 또는 Transport Layer Security (TLS) 프로토콜을 사용하여 전송되는 데이터를 암호화합니다. 이는 중간에서 데이터를 가로채도 원래의 내용을 알 수 없도록 하는 역할을 합니다. 따라서 민감한 정보(예: 신용 카드 정보, 로그인 정보 등)를 전송할 때 HTTPS를 사용해야 합니다.

HTTP와 HTTPS는 동작 방식에 큰 차이가 있습니다. 기본적으로 HTTP는 클라이언트가 서버에 요청(request)을 보내면, 서버는 해당 요청에 대한 응답(response)을 보내는 방식으로 동작합니다. HTTP는 80번 포트를 기본으로 사용하며, 암호화되지 않은 텍스트 데이터를 전송합니다.

반면에 HTTPS는 SSL 또는 TLS를 이용해 데이터를 암호화하여 전송합니다. 클라이언트와 서버 사이에 '안전한 터널'을 만들어 데이터를 보호합니다. HTTPS는 443번 포트를 기본으로 사용합니다.

HTTPS 연결은 다음과 같은 단계로 이루어집니다:

1. 클라이언트가 서버에 접속하면 서버는 자신의 공개키와 함께 디지털 인증서를 보냅니다.
2. 클라이언트는 이를 검증하고, 검증이 성공하면, 서버의 공개키를 이용해 데이터를 암호화하고, 이를 서버에 전송합니다.
3. 서버는 자신의 개인키를 이용해 데이터를 복호화하고, 이후의 통신은 이 공유된 키(세션 키)를 이용해 암호화/복호화를 수행합니다.

이러한 방식을 통해 HTTPS는 웹에서의 통신을 안전하게 보호합니다.

SSL 암호화란?

SSL은 웹 서버와 클라이언트(일반적으로 웹 브라우저) 사이에 암호화된 연결을 설정하기 위한 표준 기술인 Secure Sockets Layer를 나타냅니다. 민감한 정보의 안전한 전송을 허용하여 범죄자가 전송된 정보를 읽고 수정하는 것을 방지합니다.

SSL은 서버 컴퓨터와 클라이언트 컴퓨터에 존재하는 프로그램과 암호화/암호 해독 루틴의 조합을 통해 작동합니다. 다음은 SSL 작동 방식에 대한 개략적인 개요입니다.

  1. SSL 핸드셰이크 : 클라이언트(일반적으로 웹 브라우저)는 먼저 서버와의 보안 연결을 설정하려고 시도할 때 SSL '핸드셰이크'를 시작합니다. 이 과정에서 클라이언트와 서버는 사용할 SSL/TLS 버전, 사용할 암호화 제품군을 결정하고 서버의 ID도 확인합니다. 핸드셰이크가 성공하면 클라이언트와 서버 모두 세션 키를 생성하고 보안 연결이 설정됩니다.
  2. 암호화 : SSL은 비대칭 및 대칭 암호화를 모두 사용하여 전송 중인 데이터의 기밀성과 무결성을 보호합니다. SSL 핸드셰이크 중에 비대칭 암호화(공개 키 암호화라고도 함)가 사용되어 공유 비밀을 교환한 다음 대칭 암호화를 사용하여 대화의 나머지 부분을 암호화하는 데 사용됩니다.
  3. 인증서 및 키 : SSL을 구현하려면 웹 서버에서 SSL 인증서를 사용해야 합니다. 인증서는 조직의 세부 정보에 암호화 키를 디지털 방식으로 바인딩하는 데이터 파일입니다. 서버의 SSL 인증서에는 서버의 공개 키가 포함되어 있습니다. 서버에 안전하게 저장된 개인 키는 누구에게도 공개되어서는 안됩니다.
  4. 인증 및 확인 : SSL에는 서버가 누구인지 확인하기 위해 디지털 인증서를 사용하는 확인 프로세스도 포함되어 있습니다. 이 프로세스를 SSL 인증서 인증이라고 합니다.

1999년에 SSL은 전송 계층 보안(TLS)에 의해 계승되었지만 "SSL"이라는 용어는 웹 트래픽을 암호화하는 일반적인 프로세스를 지칭하는 데 여전히 널리 사용됩니다. TLS에는 향상된 기능이 포함되어 있지만 기본적인 프로세스는 비슷합니다.

결론적으로 SSL/TLS 암호화는 중요한 데이터가 전송되는 동안 가로채는 것을 방지하고 브라우저와 서버 간에 전송되는 데이터의 무결성을 보장하여 안전한 인터넷 브라우징의 중요한 구성 요소가 되도록 하는 데 중요합니다.

'ETC' 카테고리의 다른 글

[ETC] 서브셋 폰트 경량화  (1) 2023.11.08
[ETC] -lock.json or .lock 파일은 뭘까?  (0) 2023.08.04
[ETC] HMR (Hot Module Replacement)  (0) 2023.08.01
[ETC] 트레일링 슬래시(trailing slash)  (0) 2023.07.27
[ETC] Axios interceptors  (0) 2023.07.15