1단계: 클라이언트 헬로 (Client Hello)
- 클라이언트(예: 브라우저)가 서버에 요청을 보냅니다:
- 지원하는 암호화 방식 목록(Cipher Suite).
- 난수(Random Data) 1개.
- 사용할 TLS 버전.
2단계: 서버 헬로 (Server Hello)
- 서버는 클라이언트의 요청에 응답하며 다음 정보를 보냅니다:
- 선택한 암호화 방식(예: AES-256-GCM).
- 난수(Random Data) 1개.
- 서버의 디지털 인증서(SSL/TLS 인증서):
- 서버의 공개 키 포함.
- 신뢰할 수 있는 인증 기관(CA)에 의해 서명됨.
3단계: 인증서 검증
- 클라이언트는 서버가 보낸 디지털 인증서를 검증합니다:
- 인증서가 신뢰할 수 있는 CA(인증 기관)에 의해 서명되었는지 확인.
- 인증서에 포함된 도메인 이름과 접속한 도메인이 일치하는지 확인.
- 인증서가 유효한 기간 내에 있는지 확인.
목적: 서버가 신뢰할 수 있는지 확인.
4단계: 세션 키 교환
- 클라이언트와 서버는 서로 공유할 세션 키를 생성합니다.
- 세션 키는 실제 데이터를 암호화하는 데 사용되는 대칭 키입니다.
- 키 교환 방식:
- RSA: 클라이언트가 서버의 공개 키를 사용해 세션 키를 암호화해 보냄.
- ECDHE(TLS 1.3 기본): 클라이언트와 서버가 난수와 수학적 연산으로 세션 키를 안전하게 생성.
5단계: 완료 메시지
- 클라이언트와 서버가 "Finished" 메시지를 주고받고, TLS 핸드셰이크가 완료됩니다.
- 이후 모든 데이터는 세션 키를 사용하여 암호화됩니다.
'개발기술 > 보안' 카테고리의 다른 글
네트워크 접근제어(NAC) ; NAT, 방화벽 (0) | 2025.02.25 |
---|---|
보안의 개념과 기술 (0) | 2025.01.19 |
Security JWT,세션, 쿠키방식 (0) | 2025.01.15 |
Spring Security 전체개념 (0) | 2024.09.09 |
Spring Security - JWT 인증방식 구현 (0) | 2024.09.03 |