목차
-
간단 정리
-
OSI 7계층 & TCP/IP 4계층
-
Encapsulate, Decapsulate
-
HTTP 요청이 전달되는 과정 (인캡슐화):
-
HTTP 응답이 수신되는 과정 (디캡슐화):
-
TLS 1.2
-
1. 클라이언트가 서버에 인사 (ClientHello)
-
2. 서버가 응답 (ServerHello)
-
3. 서버 인증 및 키 교환 (Certificate & Server Key Exchange)
-
4. 클라이언트 키 생성 및 공유 (Client Key Exchange)
-
5. 세션 키 생성 및 완료 (Change Cipher Spec & Finished)
-
TLS 1.3
-
1. 클라이언트 인사 (ClientHello)
-
2. 서버 응답 (ServerHello)
-
3. 대칭키 생성 및 Finished 메시지 교환
-
4. 데이터 암호화 통신 시작
-
정리하자면
728x90
반응형
간단 정리
- SSL은 과거에 사용된 프로토콜로, TLS가 이를 대체.
- TLS는 현대 인터넷 보안 통신의 핵심.
- HTTPS는 TLS를 사용하여 HTTP 트래픽을 암호화하며, 웹사이트 보안을 위한 필수 요소.
OSI 7계층 & TCP/IP 4계층
OSI 모델이 너무 복잡해서 TCP/IP가 표준이랍니다~

- 네트워크 접근 계층 (Network Access Layer)
- 역할: 데이터를 물리적으로 전송하는 계층.
- 인터넷 계층 (Internet Layer)
- 역할: 데이터의 논리적 전송 경로를 결정.
- 전송 계층 (Transport Layer)
- 역할: 프로세스 간 신뢰할 수 있는 데이터 전송 제공.
- 애플리케이션 계층 (Application Layer)
- 역할: 사용자와 가장 가까운 계층으로 데이터 표현 및 통신 서비스를 제공
Encapsulate, Decapsulate
데이터가 네트워크를 통해 송신 및 수신되는 과정을 설명하는 개념

HTTP 요청이 전달되는 과정 (인캡슐화):
- 사용자가 브라우저에 URL 입력 (애플리케이션 계층).
- 브라우저가 HTTP 요청을 생성.
- 전송 계층에서 TCP 헤더 추가 → 세그먼트 생성.
- 인터넷 계층에서 IP 헤더 추가 → 패킷 생성.
- 네트워크 인터페이스 계층에서 이더넷 헤더/트레일러 추가 → 프레임 생성. (MAC 주소)
- 물리 계층에서 신호로 변환하여 네트워크를 통해 전송.
HTTP 응답이 수신되는 과정 (디캡슐화):
- 수신 장치가 신호를 수신 (물리 계층).
- 네트워크 인터페이스 계층이 신호를 프레임으로 변환.
- 인터넷 계층이 IP 헤더를 제거 → 패킷 복원.
- 전송 계층이 TCP 헤더를 제거 → 세그먼트 복원.
- 애플리케이션 계층이 데이터를 처리하여 HTTP 응답을 브라우저에 전달.
TLS 1.2

1. 클라이언트가 서버에 인사 (ClientHello)
- 클라이언트:
- "안녕 난 클라이언트야! 우리가 통신할 때 사용할 암호화 알고리즘 목록을 보내줄게."포함 정보:
- TLS 버전 (예: TLS 1.2)
- 암호화 알고리즘 목록 (예: AES, RSA, ECDSA 등)
- 난수: Client Random (통신 암호화에 사용)
- 세션 ID (옵션)
- "그리구 이건 내가 사용할 수 있는 암호화 알고리즘 목록이고, 내가 지원하는 TLS 버전은 1.2야!"
2. 서버가 응답 (ServerHello)
- 서버:
- "안녕 난 서버야! 너의 암호화 알고리즘 목록에서 하나를 선택했어. 우린 이걸 사용할 거야"포함 정보:
- 선택한 암호화 알고리즘
- 서버의 난수
- 세션 ID (옵션)
- "그리고 내가 만든 난수(Server Random)도 줄게!"
3. 서버 인증 및 키 교환 (Certificate & Server Key Exchange)
- 서버:
- "여기 내 인증서야. 이걸로 내가 누구인지 확인할 수 있어. 글구 우리가 사용할 키 교환 정보를 줄게"
- 서버 인증서: 서버의 신원을 확인할 수 있는 공인된 인증서.
- 서버의 공개키 (키 교환 방식에 따라 필요).
- 포함 정보:
4. 클라이언트 키 생성 및 공유 (Client Key Exchange)
- 클라이언트:
- "좋아 서버야! 내가 임의의 대칭키를 생성했어. 너의 공개키로 암호화해서 보낼게."
- Pre-Master Secret: 대칭키를 생성하기 위한 초기 값.
- 포함 정보:
5. 세션 키 생성 및 완료 (Change Cipher Spec & Finished)
- 클라이언트와 서버:
- 클라이언트와 서버는 각각의 난수와 Pre-Master Secret을 이용해 대칭키를 생성.클라이언트와 서버는 "Change Cipher Spec" 메시지를 보내 세션 키로 암호화 시작."Finished" 메시지를 서로 주고받아 핸드셰이크 완료.
TLS 1.3

1. 클라이언트 인사 (ClientHello)
- 클라이언트:포함 정보:
- 클라이언트 지원 암호화 스위트(Cipher Suite)
- 난수
- 키 교환 데이터(Ephemeral Key, 예: ECDHE)
- TLS 버전(TLS 1.3)
- "안녕, 난 클라이언트야! 우리가 통신할 때 사용할 암호화 알고리즘과 키 교환 방식을 알려줄겡. 그리고 내가 미리 생성한 난수와 키 교환 데이터를 줄게!"
2. 서버 응답 (ServerHello)
- 서버:포함 정보:
- 선택한 암호화 스위트
- 서버의 키 교환 데이터
- 난수
- "안녕, 난 서버야! 네가 제안한 암호화 알고리즘 중 하나를 선택했어. 그리고 나의 키 교환 데이터와 난수를 줄게."
3. 대칭키 생성 및 Finished 메시지 교환
- 클라이언트와 서버는 서로 교환한 키 교환 데이터를 기반으로 대칭키를 생성.
- 세션 키는 Diffie-Hellman 키 교환 알고리즘을 사용해 계산.
- 양측은 생성한 대칭키를 사용하여 "Finished" 메시지를 암호화하고 주고받아 통신을 확인.
4. 데이터 암호화 통신 시작
- 핸드셰이크가 완료되면, 클라이언트와 서버는 세션 키를 사용해 애플리케이션 데이터를 암호화하여 통신을 시작.

정리하자면
- 응용계층에서 url을 입력하면
- 전송계층에서 3 way handshake를 수행하여 연결을 하고
- TLS 핸드셰이크를 통해 보안 세션을 설정
- 이제야 처음 보낸 요청을 서버에 전달
728x90
반응형
'박치기 공룡' 카테고리의 다른 글
OAuth 2.0 카카오 로그인 구현하기 (Express) (0) | 2025.02.01 |
---|---|
k8s에서 데이터 영속성을 보장하는 방법 (0) | 2025.01.23 |
언제 JWT이 아닌 쿠키/세션으로 인증/인가를 해야하는지 (3) | 2024.12.03 |
네트워크 개념 한줄정리 (1) | 2024.12.03 |
728x90
반응형
간단 정리
- SSL은 과거에 사용된 프로토콜로, TLS가 이를 대체.
- TLS는 현대 인터넷 보안 통신의 핵심.
- HTTPS는 TLS를 사용하여 HTTP 트래픽을 암호화하며, 웹사이트 보안을 위한 필수 요소.
OSI 7계층 & TCP/IP 4계층
OSI 모델이 너무 복잡해서 TCP/IP가 표준이랍니다~

- 네트워크 접근 계층 (Network Access Layer)
- 역할: 데이터를 물리적으로 전송하는 계층.
- 인터넷 계층 (Internet Layer)
- 역할: 데이터의 논리적 전송 경로를 결정.
- 전송 계층 (Transport Layer)
- 역할: 프로세스 간 신뢰할 수 있는 데이터 전송 제공.
- 애플리케이션 계층 (Application Layer)
- 역할: 사용자와 가장 가까운 계층으로 데이터 표현 및 통신 서비스를 제공
Encapsulate, Decapsulate
데이터가 네트워크를 통해 송신 및 수신되는 과정을 설명하는 개념

HTTP 요청이 전달되는 과정 (인캡슐화):
- 사용자가 브라우저에 URL 입력 (애플리케이션 계층).
- 브라우저가 HTTP 요청을 생성.
- 전송 계층에서 TCP 헤더 추가 → 세그먼트 생성.
- 인터넷 계층에서 IP 헤더 추가 → 패킷 생성.
- 네트워크 인터페이스 계층에서 이더넷 헤더/트레일러 추가 → 프레임 생성. (MAC 주소)
- 물리 계층에서 신호로 변환하여 네트워크를 통해 전송.
HTTP 응답이 수신되는 과정 (디캡슐화):
- 수신 장치가 신호를 수신 (물리 계층).
- 네트워크 인터페이스 계층이 신호를 프레임으로 변환.
- 인터넷 계층이 IP 헤더를 제거 → 패킷 복원.
- 전송 계층이 TCP 헤더를 제거 → 세그먼트 복원.
- 애플리케이션 계층이 데이터를 처리하여 HTTP 응답을 브라우저에 전달.
TLS 1.2

1. 클라이언트가 서버에 인사 (ClientHello)
- 클라이언트:
- "안녕 난 클라이언트야! 우리가 통신할 때 사용할 암호화 알고리즘 목록을 보내줄게."포함 정보:
- TLS 버전 (예: TLS 1.2)
- 암호화 알고리즘 목록 (예: AES, RSA, ECDSA 등)
- 난수: Client Random (통신 암호화에 사용)
- 세션 ID (옵션)
- "그리구 이건 내가 사용할 수 있는 암호화 알고리즘 목록이고, 내가 지원하는 TLS 버전은 1.2야!"
2. 서버가 응답 (ServerHello)
- 서버:
- "안녕 난 서버야! 너의 암호화 알고리즘 목록에서 하나를 선택했어. 우린 이걸 사용할 거야"포함 정보:
- 선택한 암호화 알고리즘
- 서버의 난수
- 세션 ID (옵션)
- "그리고 내가 만든 난수(Server Random)도 줄게!"
3. 서버 인증 및 키 교환 (Certificate & Server Key Exchange)
- 서버:
- "여기 내 인증서야. 이걸로 내가 누구인지 확인할 수 있어. 글구 우리가 사용할 키 교환 정보를 줄게"
- 서버 인증서: 서버의 신원을 확인할 수 있는 공인된 인증서.
- 서버의 공개키 (키 교환 방식에 따라 필요).
- 포함 정보:
4. 클라이언트 키 생성 및 공유 (Client Key Exchange)
- 클라이언트:
- "좋아 서버야! 내가 임의의 대칭키를 생성했어. 너의 공개키로 암호화해서 보낼게."
- Pre-Master Secret: 대칭키를 생성하기 위한 초기 값.
- 포함 정보:
5. 세션 키 생성 및 완료 (Change Cipher Spec & Finished)
- 클라이언트와 서버:
- 클라이언트와 서버는 각각의 난수와 Pre-Master Secret을 이용해 대칭키를 생성.클라이언트와 서버는 "Change Cipher Spec" 메시지를 보내 세션 키로 암호화 시작."Finished" 메시지를 서로 주고받아 핸드셰이크 완료.
TLS 1.3

1. 클라이언트 인사 (ClientHello)
- 클라이언트:포함 정보:
- 클라이언트 지원 암호화 스위트(Cipher Suite)
- 난수
- 키 교환 데이터(Ephemeral Key, 예: ECDHE)
- TLS 버전(TLS 1.3)
- "안녕, 난 클라이언트야! 우리가 통신할 때 사용할 암호화 알고리즘과 키 교환 방식을 알려줄겡. 그리고 내가 미리 생성한 난수와 키 교환 데이터를 줄게!"
2. 서버 응답 (ServerHello)
- 서버:포함 정보:
- 선택한 암호화 스위트
- 서버의 키 교환 데이터
- 난수
- "안녕, 난 서버야! 네가 제안한 암호화 알고리즘 중 하나를 선택했어. 그리고 나의 키 교환 데이터와 난수를 줄게."
3. 대칭키 생성 및 Finished 메시지 교환
- 클라이언트와 서버는 서로 교환한 키 교환 데이터를 기반으로 대칭키를 생성.
- 세션 키는 Diffie-Hellman 키 교환 알고리즘을 사용해 계산.
- 양측은 생성한 대칭키를 사용하여 "Finished" 메시지를 암호화하고 주고받아 통신을 확인.
4. 데이터 암호화 통신 시작
- 핸드셰이크가 완료되면, 클라이언트와 서버는 세션 키를 사용해 애플리케이션 데이터를 암호화하여 통신을 시작.

정리하자면
- 응용계층에서 url을 입력하면
- 전송계층에서 3 way handshake를 수행하여 연결을 하고
- TLS 핸드셰이크를 통해 보안 세션을 설정
- 이제야 처음 보낸 요청을 서버에 전달
728x90
반응형
'박치기 공룡' 카테고리의 다른 글
OAuth 2.0 카카오 로그인 구현하기 (Express) (0) | 2025.02.01 |
---|---|
k8s에서 데이터 영속성을 보장하는 방법 (0) | 2025.01.23 |
언제 JWT이 아닌 쿠키/세션으로 인증/인가를 해야하는지 (3) | 2024.12.03 |
네트워크 개념 한줄정리 (1) | 2024.12.03 |