세션(Session), 세션 키(Session Key)

Jan 29, 2024
세션(Session), 세션 키(Session Key)
 
 
💡
세션, 세션 키는 보안 및 통신에서 중요한 역할을 한다. 세션은 사용자의 상태를 추적, 관리하며, 세션 키는 통신의 보안을 유지하는데 사용한다
 
notion image
 
회원(클라이언트)이 헬스장(서버)에 운동을 하러 간다. 헬스장에 장비(요청 데이터)를 가지고 가면 헬스장에서 가방(HttpRequsetServlet)을 준다.
가방에 장비를 들고 다니다가 회원이 집에 갈 때 가방은 두고 가야한다. 가방 안에 장비는 모두 버린다. 장비를 유지하고 싶다면 헬스장의 락커룸(세션)에 장비를 보관하고, 회원은 락커의 키(세션 키)를 받는다.
 

1. 세션(Session)

 
클라이언트와 서버 간의 상호작용을 추적하고 관리하기 위해 사용된다. 세션은 일정 기간 동안 지속되며, 사용지의 활동 기간 동안 유지된다.
 
notion image
일반적인 데이터 요청은 요청이 완료되면 연결이 종료되는 반이중 통신이 이용된다. 하지만 반이중 통신은 연결이 종료되면 이전 상태를 저장하지 않는 Stateless 시스템이다. 따라서 클라이언트가 다시 연결되더라도 서버는 처음 만나는 것 처럼 행동하게 된다. 이때 사용되는 것이 세션이다.
 
세션(Session)은 사용자의 정보를 임시로 저장한다. 세션 내부는 해쉬맵 형태로 key = values 방식으로 되어있다. 서버는 데이터를 세션에 저장하고, 사용자별로 고유한 세션 ID가 부여된다.
 
notion image
 
 
 
시작 (Session Start): 사용자가 로그인하거나 웹사이트에 접속하면, 서버는 해당 사용자에 대한 새로운 세션을 시작한다.
식별자 부여 (Session Identifier): 각 세션은 고유한 식별자(session ID)를 가지며, 이를 통해 서버는 특정 세션을 식별한다. 대개는 브라우저 쿠키에 세션 ID를 저장하고 유지한다.
상태 유지 (State Maintenance): 세션은 사용자와 서버 간의 상태를 유지하고 관리한다. 이를 통해 서버는 사용자의 로그인 상태, 장바구니 내용, 설정 등을 추적할 수 있다.
종료 (Session End): 사용자가 로그아웃하거나 세션이 일정 시간 동안 비활성화된 경우 세션 종료된다.
 
 

2. 세션 키(Session Key)

 
세션 키는 통신의 보안을 유지하기 위해 사용된다. 이 키는 대칭 암호화나 공개키 암호화 등의 기술을 사용하여 생성된다.
 
notion image
 
서버는 HttpResponseServlet 에 set-cookie 형태로 세션키를 전송한다. 브라우저는 쿠키 저장소에 세션 키를 저장하고, 이후에 웹 서버에 접속할 때 마다 HttpRequestServlet 에 쿠키를 포함해서 전송한다.
 
기밀성 (Confidentiality): 세션 키를 사용하여 데이터를 암호화하여 중간에서 가로채기를 방지하고 정보의 기밀성을 유지한다.
무결성 (Integrity): 세션 키를 사용하여 데이터에 디지털 서명이나 해시를 적용하여 데이터의 무결성을 검증한다.
키 교환 (Key Exchange): 공개키 암호화를 사용하여 안전하게 키를 교환하고, 이를 통해 대칭 키(세션 키)를 안전하게 전송할 수 있다.
 
세션 키는 세션이 시작될 때 동적으로 생성되며, 특정 세션 동안에만 유효하다. 이를 통해 보안성을 높이고 통신 중 데이터의 안전성을 보장한다. 보통 TLS/SSL과 같은 프로토콜에서 사용되어 웹 통신의 안전성을 확보한다.
 
💡
세션 키를 쿠키 저장소에 저장하는 것은 브라우저가 자동으로 해준다. 만약 브라우저가 아니라 모바일 어플을 개발했다면 쿠키를 저장, 전송하는 프로토콜을 설정해야 한다.
Share article

{CODE-RYU};