네트워크2

2025. 1. 20. 16:44
728x90

4. HTTP와 HTTPS의 차이점

더보기

HTTP (HyperText Transfer Protocol)

: 클라이언트(브라우저)와 서버 간의 요청/응답 기반 통신 프로토콜. 브라우저가 서버에 요청을 보내면 서버가 응답을 반환한다.

- 평문 통신 : 데이터를 암호화하지 않고 전송하므로 네트워크 상에서 데이터를 가로채기 쉽다.

- 포트 : 기본적으로 80 포트를 사용한다.

- 속도 : 암호화가 없기 때문에 속도가 약간 빠르다

- 단점 : 로그인 정보, 결제 정보 등 민감한 데이터를 보호하지 못하여 보안에 취약하다.

 

HTTPS (HyperText Transfer Protocol Secure)

: HTTP에 SSL/TLS(암호화 프로토콜)를 추가한 보안 통신 프로토콜. 데이터를 암호화하여 전송하며, 서버 인증서를 통해 서버의 신뢰성을 보장한다.

- 암호화 방식 : 비대칭키 암호화(SSL/TLS Handshake)로 암호화 키를 교환한 후 대칭키 암호화 방식으로 데이터를 전송한다. 

- 보안 통신 : 데이터를 암호화하므로 스니핑이나 변조를 방지할 수 있다.

- 서버 인증 : 서버의 신뢰성을 검증하는 SSL/TLS 인증서를 사용한다.

- 포트 : 기본적으로 443 포트를 사용한다.

- 속도 : 암호화와 인증 과정이 추가되어 약간 느리다.

HTTP와 HTTPS의 가장 큰 차이점은 보안성입니다. HTTP는 데이터를 평문으로 전송하고 암호화되지 않아 중간에서 데이터를 가로채기 쉬운 구조입니다. HTTPS는 HTTP에 SSL/TLS 프로토콜을 추가하여 데이터를 암호화합니다. 그래서 데이터를 중간에 가로채거나 변조되는 것을 방지할 수 있고, 서버의 인증서를 통해 서버의 신뢰성을 확인할 수 있습니다. 보통 HTTPS는 로그인, 결제 등 민감한 정보를 다룰 때 주로 사용되고, HTTP는 보안이 덜 중요한 환경에서 사용됩니다. 

 

5. HTTPS와 SSL Handshake에 대해

더보기

HTTPS

주요 기능

- 암호화 : 데이터를 암호화하여 도청 방지

- 무결성 : 데이터가 전송 중 변경되지 않았음을 보장

- 인증 : SSL/TLS 인증서를 통해 서버의 신뢰성을 확인

 

동작 과정

- 브라우저가 서버에 HTTPS 요청을 보냄

- 서버가 SSL/TLS 인증서를 전달

- 클라이언트가 인증서를 검증하고, SSL Handshake를 수행

- 세션 키를 교환한 후 데이터 전송을 암호화하여 안전하게 통신.

 

SSL Handshake 

: 클라이언트와 서버가 서로 신뢰를 구축하고, 데이터 전송에 사용할 암호화 방식과 키를 협상하는 과정.

1) Client Hello : 클라 -> 서버에 연결 요청을 보냄. 자신이 지원하는 암호화 알고리즘과 TLS 버전을 서버에 전달

2) Server Hello : 서버 -> 클라에서 제공한 옵션 중 하나를 선택하여 응답. 서버의 SSL/TLS 인증서를 클라에 보냄. (서버의 공개 키, 인증기관이 서명한 정보 포함)

3) 인증서 검증 : 클라는 서버의 인증서를 검증.

  • 신뢰할 수 있는 인증 기관에서 발급되었는지
  • 인증서 유효기간 
  • 인증서 도메인 이름이 서버와 일치하는지

4) 세션 키 생성 및 교환 : 클라는 프리마스터 시크릿을 생성하고, 서버의 공개 키로 암호화하여 서버에 전달. 서버는 자신의 개인 키로 이를 복호화하여 세션 키를 얻는다.

5) 세션 키 확인 : 클라&서버는 생성된 세션 키가 일치하는지 확인. 이후 통신은 이 세션 키를 사용해 대칭 암호화로 데이터를 암호화한다. 

6) 암호화된 통신 시작.

 

특징

- 대칭 암호화와 비대칭 암호화의 조합. (비대칭 암호화 - 초기 키 교환 & 대칭 암호화 - 데이터 전송)

- 보안 강화

 

방법은

https://hehesim.tistory.com/161

 

AWS 배포 -(5) HTTPS 적용하기

이전 글 더보기 (1) https://hehesim.tistory.com/157 AWS 배포 -(1) 개발의 결과물을 웹 서비스로 사용자에게 보여주려면...? 1) 적당한 성능의 컴퓨터 구비 2) 컴퓨터에 개발한 웹 서비스 실행 3) 해당 컴퓨터

hehesim.tistory.com

HTTPS는 HTTP에 SSL/TLS 프로토콜을 추가하여 데이터를 암호화하고, 서버의 신뢰성을 보장하는 보안 통신 프로토콜입니다. 데이터 암호화, 데이터 무결성, 서버 인증을 통해 중간자 공격이나 데이터 도청을 방지합니다. HTTPS는 클라이언트와 서버 간 SSL Handshake를 통해 암호화 키를 교환하고 이후 데이터를 암호화하여 안전하게 전송합니다. 주요 단계는 다음과 같습니다. 클라이언트가 서버에 연결 요청을 보내며 지원하는 암호화 알고리즘을 전달하면, 서버는 암호화 알고리즘을 선택하고, SSL 인증서를 클라이언트에 전달합니다. 클라이언트가 인증서를 검증한 후, 세션 키를 생성하여 서버와 공유합니다. 클라이언트와 서버는 이 세션 키를 사용해 데이터를 암호화하여 안전한 통신을 시작할 수 있습니다. 

 

6. GET과 POST의 차이점

더보기

GET

- 요청 데이터가 URL 쿼리 스트링으로 전송됨. 

- 브라우저에서 요청 URL을 쉽게 공유, 북마크 가능

- 캐싱이 가능하며, 브라우저나 프록시 서버가 요청 결과를 저장하여 재사용

- 용도 : 데이터 조회, 검색 결과 요청 등 읽기 작업

- 제한 : URL 길이 제한. 데이터가 노출되어 보안이 필요한 경우 부적합.

 

POST

- 데이터를 HTTP 본문에 포함하여 전송. 

- URL에 데이터가 표시되지 않아 민감한 정보 전송에 적합. 

- 캐싱되지 않으며, 동일한 요청을 재전송하면 서버에 중복 요청이 발생할 수 있음.

- 용도 : 서버에 데이터 제출하거나 상태를 변경하는 작업. 

- 제한 : 브라우저에서 요청 데이터를 쉽게 공유하거나 북마크할 수 없음. 서버 처리 비용이 더 클 수 있음. 

GET과 POST는 주로 데이터 전송 방식과 용도에서 차이가 있습니다. GET 요청은 데이터를 URL의 쿼리 스트링에 포함하여 전송합니다. 주로 데이터를 조회하거나 서버로부터 리소스를 요청할 때 사용됩니다. POST 요청은 데이터를 HTTP 본문에 포함하여 전송하고, 주로 데이터를 서버에 제출하거나 상태를 변경하는 작업에 사용됩니다. 

 

728x90

'Programming > CS' 카테고리의 다른 글

디자인 패턴  (1) 2025.01.17
스프링  (0) 2025.01.14
데이터베이스  (0) 2025.01.11
운영체제  (0) 2025.01.10
네트워크  (0) 2025.01.09

BELATED ARTICLES

more