👉 HTTPS란?
- HTTP Secure의 약자
- 웹에서 안전하게 정보를 교환할 수 있도록 설계된 프로토콜
- HTTP의 기본적인 기능에 데이터의 보안을 강화하기 위한 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security)라는 암호화 프로토콜을 사용
- 데이터가 인터넷을 통해 전송될 때 암호화되어 전송되므로, 데이터가 도중에 타인에 의해 도청되거나 조작되는 것을 방지
- 주로 민감한 정보를 다루는 금융 기관, 쇼핑 사이트, 로그인이 필요한 서비스 등에서 사용 → 사용자 정보를 보호하는데 필수
👉 HTTPS의 주요 특징
- 암호화
- 클라이언트와 서버 간에 교환되는 데이터는 암호화되어, 중간에 데이터를 가로채려는 시도가 있더라도 정보를 해독하기 어려움
- 데이터 무결성
- 데이터가 전송 과정 중에 변조되지 않았음을 보장
- 받은 데이터가 정확하게 전송된 데이터와 일치하는지 검증할 수 있음
- 메세지 다이제스트(Message Digest) 사용
- 인증
- 서버의 신원을 확인할 수 있는 인증서를 사용
- 인증서는 신뢰할 수 있는 제3의 기관(Certificate Authority, CA)에 의해 발급됨
- 이는 사용자가 진짜 해당 서버에 연결되어 있는지 보장
👉 메세지 다이제스트(Message Digest)
- 정의
- 데이터의 무결성을 보장하는 역할
- 메세지 다이제스트는 데이터에서 생성된 고유한 해시 값(해시화)으로, 일반적으로 SHA (Secure Hash Algorithm)와 같은 해시 함수를 사용하여 계산
- 주로 데이터 전송 전후에 데이터가 변조되지 않았는지 확인하는 데 사용
- 역할
- 데이터 무결성 검증(변조 확인)
- 메시지 다이제스트는 원본 메시지에서 생성된 고정 길이의 값
- 데이터가 전송 도중에 변조되면 변조된 데이터에서 생성된 다이제스트는 원본 메시지에서 생성된 다이제스트와 다를 것
- 수신자 해시 함수를 사용하여 수신한 데이터의 메시지 다이제스트를 다시 계산하고, 이를 전송된 다이제스트와 비교하여 데이터가 변조되지 않았는지 확인
- 사용 시점
- 데이터 생성 시점(송신자 측)
- 송신자는 데이터를 생성한 후, 이 데이터에 대한 메시지 다이제스트를 계산
- 이 계산된 다이제스트는 데이터와 함께 송신되거나, 별도로 송신자에게 저장되어 수신자의 요청에 따라 제공될 수 있음
- 데이터 수신 시점(수신자 측)
- 수신자는 데이터를 받은 후, 동일한 해시 함수를 사용하여 이 데이터의 메시지 다이제스트를 다시 계산
- 수신자는 송신자로부터 받은 다이제스트와 자신이 계산한 다이제스트를 비교
- 두 다이제스트가 일치하면 데이터가 전송 도중 변조되지 않았음을 확인할 수 있음
- 작동 방식
- 데이터 전송 전, 송신자는 원본 데이터를 해시 함수에 입력하여 메시지 다이제스트를 생성
- 송신자는 원본 데이터와 메시지 다이제스트를 수신자에게 전송
- 수신자는 받은 원본 데이터를 동일한 해시 함수에 입력하여 새로운 메시지 다이제스트를 생성
- 수신자는 송신자로부터 받은 메시지 다이제스트와 자신이 생성한 메시지 다이제스트를 비교
- 두 메시지 다이제스트가 일치하면, 원본 데이터가 전송 과정에서 변경되지 않았다는 것을 확인할 수 있음
- 예시
- 송신자 측
- 송신자가 메시지를 생성 : "Hello, World!"
- SHA-256 해시 함수를 사용하여 메시지 다이제스트를 계산 :
a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b94c3a203ae28f64a
- 메시지와 다이제스트를 함께 전송
- 수신자 측
- 수신자가 메시지와 다이제스트를 수신
- 동일한 SHA-256 해시 함수를 사용하여 메시지 다이제스트를 다시 계산
- 송신자가 제공한 다이제스트와 수신자가 계산한 다이제스트를 비교
- 두 값이 일치하면 메시지가 변조되지 않았음을 확인
👉 HTTPS의 작동 방식
- 연결 설정
- 클라이언트가 서버에 연결 요청(HTTPS)
- 서버는 공개키가 포함된 자신의 인증서를 클라이언트에게 전송
- 암호화된 세션 결정
- 클라이언트는 인증서의 유효성을 확인하고, 세션키를 생성하여 서버의 공개키로 암호화해 전송
- 서버는 개인키로 세션키를 복호화
- ⇒ SSL/TLS 핸드셰이크 과정을 통해 두 시스템 사이에 암호화된 연결을 설정
- 암호화된 데이터 전송
- 암호화된 연결이 설정되면 HTTP 메세지가 암호화되어 전송됨
- 세션키로 데이터를 암호화/복호화하며 통신
👉 SSL과 TLS란?
- 정의
- SSL (Secure Sockets Layer)과 TLS (Transport Layer Security)는 인터넷 통신에서 데이터의 보안을 보장하기 위해 설계된 암호화 프로토콜
- SSL이 먼저 개발되었으며, 그 후속 버전인 TLS가 나중에 개발되어 더 향상된 보안 기능을 제공함
- 오늘날 대부분의 시스템은 TLS를 사용하지만, 흔히 SSL이라는 용어가 여전히 널리 사용되고 있음(SSL은 3.0 버전에서 멈춤)
- 작동 방식(3단계)
- 핸드 셰이크
- 클라이언트와 서버 간의 보안 연결을 시작하기 위해 서로의 신원을 확인하고 암호화 알고리즘을 결정
- 이 단계에서는
인증서 교환 → 암호화 방식 결정 → 세션 키 생성이 일어 남
- 인증서 교환
- 서버는 자신의 인증서(공개 키가 포함된)를 클라이언트에게 보냄
- 클라이언트는 해당 인증서가 신뢰할 수 있는 인증 기관(CA)에 의해 발급된 것인지를 검증
- 암호화 방식 결정
- 클라이언트와 서버는 사용할 암호화 방식을 결정
- 이는 데이터 암호화와 메시지 인증 코드(MAC) 생성에 사용
- 세션 키 생성
- 클라이언트와 서버는 대칭 키 암호화 방식을 사용하기 위한 공유된 비밀 키(세션 키)를 생성
- 암호화된 세션
- 핸드셰이크가 완료되면, 클라이언트와 서버는 세션 키를 사용하여 통신 데이터를 암호화함
- 이 단계에서 데이터의 무결성과 기밀성이 보장됨
- 세션 종료
- 통신이 끝나면, 클라이언트와 서버는 세션을 안전하게 종료하고 사용했던 모든 임시 키를 폐기
- 이는 후속 세션에서 재사용되지 않도록 보장
👉 HTTP와의 차이
- 가장 큰 차이는 데이터의 보안성
- HTTP는 핸드 셰이크 과정 없이 클라이언트가 연결을 시도 → 서버가 요청을 반환 함
- 이 데이터는 암호화되지 않아 네트워크를 통해 전송될 때 누구나 읽을 수 있음
👉 HTTPS의 장점
- 데이터 암호화로 인한 높은 보안성
- 웹사이트의 신뢰도 향상
- SEO(검색 엔진 최적화/Search Engine Optimization)에 도움 (검색 엔진에서 HTTPS 사이트 선호)
👉 HTTPS의 단점
- 암호화/복호화 과정 필요하기 때문에 HTTP 대비 속도 저하
- SSL 인증서 구매 비용 발생
- 인증서 갱신 등 추가 관리 필요