JSON Web Tokens: 구조와 보안 취약성

JSON Web Tokens(JWT)는 RESTful API와 현대 싱글 페이지 애플리케이션 보안 통신의 표준이 되었습니다. 상태를 저장하지 않고 클라이언트 인증 등 뛰어난 확장성을 보여주나, 올바른 지식이 없을 경우 중요한 시스템 위협이 될 수 있습니다.

JWT의 기본 구조

모든 JWT는 Header, Payload, Signature라는 세 부분으로 나뉩니다. 핵심적인 Payload에는 본질적인 클레임이 포함되어 있으며, 암호화되지 않고 Base64Url로 인코딩만 되어 있습니다. 따라서 비밀 정보가 노출되지 않도록 하는 것이 필수입니다.

암호학적 서명과 취약점

보안은 세 번째 세그먼트인 Signature에 크게 의존합니다. 토큰 검증은 서버에서 이루어집니다만, 취약점 중 "None 알고리즘 무시 공격", 즉 서명 자체를 우회하는 라이브러리 결함이나 무차별 대입하기 쉬운 약한 시크릿 키가 공격의 원인이 됩니다. 클라이언트 측에서 JWT 구조를 디버그하고 이를 보호하는 방법과 로컬 환경을 유지하는 방법을 반드시 숙지해야 합니다.