CS

CS)네트워크_HTTP/HTTPS

99duuk 2024. 5. 26. 18:31

ㅁ 네트워크 프로토콜

네트워크 프로토콜은 네트워크에서 데이터 통신을 원활하게 하기 위해 정의된 규칙과 표준이다.

이를 통해 데이터의 형식, 전송 방식, 오류 처리 등을 정의하여 다양한 기기들이 상호작용하고 통신할 수 있게 한다. 

 

1. 데이터 패키징 및 형식화 

          데이터를 작은 패킷으로 나누고 이를 전송 가능한 형식으로 변환한다.

2. 주소 지정 및 라우팅

          데이터를 올바른 수신자에게 전달하기 위해 주소를 지정하고, 경로를 설정한다.

3. 연결 설정 & 관리 

          통신 세션을 설정하고 관리, 데이터가 순서대로 전달되고, 오류 없이 전송되도록 한다. 

4. 오류 검출 및 수정

          데이터 전송 중 발생할 수 있는 오류를 검출하고 수정한다.

5. 흐름 제어

          송신자가 수신자의 처리 능력을 초과하지 않도록 데이터 전송 속도를 조절한다.

6. 보안

          데이터의 기밀성, 무결성 및 인증을 보장한다.

 

네트워크 프로토콜에는 대표적으로 TCP, UDP, HTTP, HTTPS, FTP, SMTP 등이 있다.

 

[패킷]

네트워크를 통해 전송되는 데이터의 작은 단위

데이터는 전송되기 전에 여러 개의 패킷으로 분할되며, 각 패킷에는 송신지와 목적지 정보, 오류 검출 정보등이 포함된다.


HTTP (HyperText Transfer Protocol)

웹 브라우저웹 서버 간에 웹페이지 같은 자원을 주고 받을 때 쓰는 통신 규약이다. 

 

LIKE '편지봉투 없이 편지를 보내는 것과 같다. 누구나 편지 내용을 볼 수 있다.'

 

 

 

http요청과 응답은

 

- 요청 (Request) : 클라이언트 -> 서버 데이터 요청

          > 메서드 (GET, POST, PUT, DELETE)

          > URL

          > HTTP 버전

          > 헤더

          > 본문 (POST와 같은 메서드에는 본문에 데이터가 포함된다.)

 

- 응답(Response) : 서버 -> 클라이언트 응답

          > HTTP 상태 코드 (200 OK, 404 Not Found 등)

          > HTTP 버전

          > 헤더

          > 본문 (HTML, JSON, XML 등)

 

과 같은 구조로 이루어져 있다. 

 

 

□ 특징

1. 텍스트 기반 : http는 텍스트 기반 프로토콜로, 사람이 읽을 수 있는 형태로 요청과 응답을 교환한다. 

 

2. 비연결성 : 비연결성 프로토콜이다. 하나의 요청/응답 사이클이 끝나면 연결이 끊어진다.

 

3. 비상태성 :  상태를 유지하지 않는다. 각 요청은 독립적이며, 서버는 이전 요청에 대한 정보를 유지하지 않는다. 

 

 

 

 

http는 텍스트 교환이다. html 페이지도 텍스트다. 단순 텍스트(평문)를 주고 받기 때문에 누군가 네트워크에서 신호를 가로채 본다면 내용이 노출될 수 있고,전송 중에 조작될 수도 있다. 

 

 

 

 

 

 

 

이런 보안상의 문제를 해결 해주는

프로토콜이 바로 


HTTPS (HyperText Transfer Protocol Secure)

HTTP에 보안 계층(SSL/TLS)을 추가데이터를 암호화하고, 통신의 기밀성과 무결성을 보장한다.

 

1. 암호화 : 데이터는 암호화 되어 전송되므로 중간에서 데이터를 도청하더라도 내용을 알 수 없다.

2. 데이터 무결성 : 데이터가 전송 중에 변경되지 않았음을 보장한다.

3. 인증 : 서버의 신원을 인증함으로써 클라이언트가 신뢰할 수 있는 서버와 통신하고 있음을 보장한다. 

 

 

http 메시지(텍스트)를 암호화하는 것이다. 

LIKE '봉인된 봉투에 편지를 넣어 보내는 것과 같다. 봉투를 열기 전까지는 내용을 알 수 없다.'

 

 

"https는 대칭키나 공개키 암호화 방식으로 암호화한다."

 

공개키는 누구나 얻을 수 있고 공개키를 알면 서버가 주는 데이터(response)를 알 수 있는데 보안상 의미가 있을까? 

-> 해당 서버로부터 온 응답임을 확신할 수 있다. 

      공개키로 해독이 가능했으니 반드시 해당 서버의 개인키로 암호화했다는 것을 보장하기 때문이다. 


더보기

 □ 특징

HTTP HTTPS
데이터 암호화 없음 데이터 암호화
빠른 속도 속도는 약간 느림
보안 취약 보안 강화

 

 □ 장점

HTTP HTTPS
빠른 데이터 전송 보안 강화
설정이 간단 사용자 신뢰도 상승

 

 □ 문제점(취약점)

HTTP HTTPS
데이터 탈취 위험 인증서 비용
중간자 공격 가능 초기 연결 속도 지연

중간자 공격 (Man-in-the-Middle Attack) 
                   : HTTP를 사용할 경우, 공격자가 중간에서 데이터를 가로채거나 조작할 수 있는 위험이 있다.

                     HTTPS를 사용하면 이런 공격을 방지할 수 있다. 

 □ 보완

HTTP HTTPS
HTTPS로 전환 최신 보안 프로토콜 사용, 인증서 관리 

 

HTTP는 보안이 없고, HTTPS는 SSL/TLS를 사용하여 보안을 강화한다.

HTTPS는 암호화 과정 때문에 약간 느릴 수 있다.

HTTPS는 SSL/TLS 인증서가 필요하다

 

 

HTTP는 평문으로 데이터를 주고받고,

HTTPS는 SSL/TLS를 사용해 데이터를 암호화하여 주고 받는다.


 □ CA(Certificate Authority)

SSL/TLS 인증서를 발급하고 관리할 수 있는 기관

 

도메인 소유자의 신원을 확인하고, 인증서를 발급해 보안 통신을 가능케 한다.


 SSL/TLS (Secure Socket Layer, Transport Layer Security)

SSL : 데이터를 암호화하여 전송하는 보안 프로토콜. 이를 통해 도청과 데이터 변조를 방지한다. 

          과거에 널리 사용되었으나, 취약점으로 인해 현재는 대부분 사용하지 않는다. 

          현재는 TLS로 대체되었다. 

 

 

□ TLS : SSL의 개선된 버전, 강력한 보안 기능을 제공한다.

          현재 대부분의 보안 통신에서 사용된다. 

 

 

 □ TLS  Handshake 

클라이언트와 서버 간의 보안 연결 설정 과정

 

1. 핸드셰이크 과정 : 클라이언트와 서버가 통신을 시작할 때, 서로를 인증하고 암호화 알고리즘을 협상한다.

           - 클라이언트가 서버에  지원하는 암호화 알고리즘과 TLS 버전을 제안하며 연결 요청을 보낸다.

           - 서버는 응답하며, 사용할 암호화 알고리즘과 인증서를 클라이언트에게 보낸다. 

          - 클라이언트는 서버 인증서를 검증하고, 세션 키를 생성하고 교환한다.

          - 서버는 클라이언트가 보낸 세션 키로 암호화를 설정한다.

 

2. 데이터 전송 : 핸드셰이크가 완료되면 세션 키를 사용해 데이터를 암호화하고 전송한다. 

 

3. 연결 종료 : 데이터 전송이 완료되면, 클라이언트와 서버는 연결을 종료한다. 

 

 

 

 

 

 


 

 

 

 

'CS' 카테고리의 다른 글

CS)네트워크_TCP&UDP  (0) 2024.05.30
CS)네트워크_OSI 7계층  (0) 2024.05.26
CS)네트워크_대역폭  (1) 2024.05.22
CS)네트워크_네트워크 기초  (0) 2024.05.22
CS)Spring_11_스프링 MVC 패턴  (0) 2024.05.20