HTTP와 HTTPS 동작방식
HTTP와 HTTPS는 웹 통신 프로토콜임.
각각의 동작 방식과 차이점이 있음.
HTTP 기본 동작 원리
HTTP는 클라이언트와 서버 간의 요청 및 응답을 통해 데이터를 주고받는 프로토콜임.
HTTP 동작의 주요 과정
1. 요청 및 응답 구조
1.1 클라이언트 요청
클라이언트는 HTTP 요청 메시지를 생성함.
이 메시지는 URL, 요청 메서드(GET, POST, PUT, DELETE 등), 헤더(메타 정보), 본문(POST 요청 시 데이터 포함)으로 구성됨.
1.2 서버 응답
서버는 요청을 처리한 후, HTTP 응답 매시지를 보냄.
응답 메시지는 상태 코드(200, 404, 500 등), 응답 헤더, 응답 본문(HTML, JSON 등)으로 구성됨.
2. 상태 코드
HTTP는 상태 코드를 통해 요청의 성공 여부와 결과를 클라이언트에 전달함.
2xx : 성공
3xx : 리다이렉션
4xx : 클라이언트 오류
5xx : 서버 오류
3. TCP 연결
HTTP는 기본적으로 TCP를 사용하여 데이터를 송수신함.
TCP 3-way handshake 과정(연결 설정: SYN, SYN-ACK, ACK)을 거쳐 안정적인 데이터 전송을 보장함.
4. 비암호화 통신
HTTP는 데이터를 암호화하지 않기 때문에 요청 및 응답 데이터가 네트워크 상에서 평문으로 전송됨.
이로 인해 다음과 같은 보안 문제가 발생할 수 있음.
4.1 데이터 도청
4.2 데이터 위변조
4.3 스니핑
HTTPS: HTTP의 보안 확장
HTTPS는 HTTP에 TLS/SSL을 추가한 형태임.
TLS를 통해 암호화된 통신 채널을 제공하여 데이터의 기밀성, 무결성, 인증을 보장함.
HTTPS의 동작 원리
1. TLS/SSL 인증서
서버는 CA로부터 발급받은 인증서를 통해 자신의 신뢰성을 증명함.
클라이언트는 인증서를 검증하여 서버가 신뢰할 수 있는지 확인함.
2. 암호화
HTTPS는 두 가지 암호화 방식을 조합하여 사용함.
2.1 비대칭 키 암호화
초기 핸드셰이크에서 클라이언트의 서버가 암호화 키를 교환할 때 사용함.
RSA, ECDSA 등 공개 키 암호화 알고리즘이 사용됨.
2.2 대칭 키 암호화
실제 데이터 전송은 속도가 빠른 대칭 키 암호화 방식으로 이루어짐.
AES, ChaCha20 등의 알고리즘이 사용됨.
3. HTTPS 핸드셰이크 과정
3.1 클라이언트 Hello
클라이언트가 서버에 연결을 요청하며, 지원 가능한 암호화 알고리즘 리스트와 랜덤 값을 보냄.
3.2 서버 Hello
서버는 클라이언트의 요청을 확인하고, 사용할 암호화 알고리즘과 인증서를 클라이언트에게 전송함.
3.3 인증서 검증
클라이언트는 서버가 전송한 인증서를 검증하여 신뢰성을 확인함.
3.4 세션 키 교환
클라이언트와 서버는 비대칭 키 암호화를 통해 대칭 키(세션 키)를 안전하게 교환함.
3.5 TLS 세션 시작
세션 키를 이용해 암호화된 통신 채널을 설정하고, 이후 데이터는 암호화되어 전송됨.
4. 데이터 무결성
HTTPS는 HMAC를 사용하여 데이터가 전송 중 변조되지 않았음을 보장함.
HTTP와 HTTPS의 주요 차이점
보안 : 비암호화(HTTP), TLS/SSL로 암호화 및 인증 보장(HTTPS)
포트 번호 : 80(HTTP), 443(HTTPS)
데이터 암호화 : 없음(HTTP), 대칭 및 비대칭 암호화 사용(HTTPS)
인증서 필요 여부 : 없음(HTTP), 필요_CA인증서(HTTPS)
속도 : 빠름(HTTP), TLS 핸드셰이크로 약간 느림(HTTPS)
주요 공격에 대한 취약성 : 도청, 스니핑, MITM 공격 가능(HTTP), 보안 공격 방어 가능(HTTPS)
HTTP와 HTTPS의 사용 예시
1. HTTP
로컬 네트워크에서 민감하지 않은 데이터 전송 시 사용함.
2. HTTPS
민감한 데이터(로그인 정보, 결제 정보) 전송, 모든 현대 웹사이트에서 필수적으로 사용함.
HTTP와 HTTPS 정리
HTTPS는 HTTP의 약점을 보완하기 위해 설계된 보안 프로토콜임.
현재 웹에서 거의 표준처럼 사용되고 있음.
'Operating System > Computer' 카테고리의 다른 글
[Computer] HTTP 프로토콜 (1) | 2025.01.05 |
---|---|
[Computer] 웹 통신 프로토콜 (0) | 2024.11.22 |
[Computer] 메모리 (0) | 2024.07.08 |
[Computer] RAM (0) | 2024.07.07 |
[Computer] 파이썬 코드가 실행되는 과정 (0) | 2024.06.23 |