jwt jose rfc7515 rfc7519 security authentication standards

JOSE 및 JWT 표준 가이드: RFC 7515부터 7519까지 (JWS, JWE, JWK, JWA, JWT)

JOSE 스택에 대한 심층 분석. 보안 ID 토큰을 위한 RFC 7515 (JWS), 7516 (JWE), 7517 (JWK), 7518 (JWA) 및 7519 (JWT)를 알아보세요.

2026-04-11

JOSE 및 JWT 표준 가이드: RFC 7515부터 7519까지

최신 웹 인증을 구현해 본 적이 있다면 JSON Web Token (JWT)을 사용해 보셨을 것입니다. 하지만 JWT는 **JOSE (JSON Object Signing and Encryption)**라고 불리는 더 큰 표준 제품군의 한 조각일 뿐입니다. 이러한 표준 간의 관계를 이해하는 것은 보안 응용 프로그램을 구축하는 데 필수적입니다.

이 가이드에서는 JOSE 스택을 구성하는 5가지 핵심 RFC를 살펴보겠습니다.

  • RFC 7515: JWS (JSON Web Signature)
  • RFC 7516: JWE (JSON Web Encryption)
  • RFC 7517: JWK (JSON Web Key)
  • RFC 7518: JWA (JSON Web Algorithms)
  • RFC 7519: JWT (JSON Web Token)

1. RFC 7515: JSON Web Signature (JWS)

JWS는 JWT의 가장 일반적인 형태입니다. 토큰의 내용이 변조되지 않았음을 보장합니다. 무결성인증성을 제공하지만 기밀성은 제공하지 않습니다(내용은 토큰을 보는 모든 사람에게 보입니다).

구조:

JWS는 일반적으로 마침표로 구분된 세 부분으로 구성된 Compact Serialization 형식으로 표시됩니다. BASE64URL(Header) . BASE64URL(Payload) . BASE64URL(Signature)

  • Header: 서명에 사용된 알고리즘을 지정합니다(예: {"alg": "HS256"}).
  • Payload: 실제 서명되는 데이터입니다.
  • Signature: 헤더와 페이로드를 서명한 결과입니다.

2. RFC 7516: JSON Web Encryption (JWE)

JWS가 무결성을 제공하는 반면, JWE는 기밀성을 제공합니다. 의도된 수신자만 읽을 수 있도록 페이로드를 암호화합니다.

구조:

JWE Compact Serialization은 다섯 부분으로 구성됩니다. BASE64URL(Header) . BASE64URL(Encrypted Key) . BASE64URL(Initialization Vector) . BASE64URL(Ciphertext) . BASE64URL(Authentication Tag)

JWE는 토큰에 PII(개인 식별 정보)와 같이 클라이언트나 중간 프록시에 노출되어서는 안 되는 민감한 정보가 포함되어 있을 때 주로 사용됩니다.


3. RFC 7517: JSON Web Key (JWK)

JWK는 암호화 키를 나타내는 JSON 데이터 구조입니다. 서버 간에 공개 키를 표준화된 방식으로 공유하는 데 사용됩니다.

예시:

{
  "kty": "RSA",
  "use": "sig",
  "kid": "1b94c",
  "n": "vXl...",
  "e": "AQAB"
}

JWK의 집합을 **JWKS (JSON Web Key Set)**라고 하며, 주로 /.well-known/jwks.json과 같은 엔드포인트에서 찾을 수 있습니다.


4. RFC 7518: JSON Web Algorithms (JWA)

JWA는 JOSE 스택의 "사전"입니다. 서명(JWS) 및 암호화(JWE)에 사용되는 특정 알고리즘을 정의합니다.

일반적인 알고리즘:

  • HS256: SHA-256을 사용하는 HMAC (대칭키).
  • RS256: SHA-256을 사용하는 RSASSA-PKCS1-v1_5 (비대칭키).
  • ES256: P-256 및 SHA-256을 사용하는 ECDSA (비대칭키).
  • A128GCM: 128비트 키를 사용하는 AES GCM (암호화).

5. RFC 7519: JSON Web Token (JWT)

JWT는 페이로드가 Claims (클레임) 집합인 JWS 또는 JWE의 응용입니다. 클레임은 엔티티(주로 사용자)에 대한 정보 조각입니다.

표준 클레임:

  • iss: 발행자 (Issuer)
  • sub: 대상 (Subject, 주로 사용자 ID)
  • aud: 대상자 (Audience)
  • exp: 만료 시간 (Expiration Time)
  • iat: 발행 시간 (Issued At)

요약 비교

표준 목적 비유
JWS 무결성 서명된 편지
JWE 기밀성 암호화된 봉투
JWK 키 표현 공개 키 파일
JWA 알고리즘 카탈로그 암호 목록
JWT 데이터 형식 토큰 자체

자주 묻는 질문 FAQ

Q: JWT는 항상 JWS인가요? A: 항상 그런 것은 아니지만 99%의 경우 그렇습니다. JWT는 JWS(서명됨), JWE(암호화됨) 또는 서명 없는 JWT일 수 있습니다.

Q: RS256과 HS256 중 무엇을 사용해야 하나요? A: 일반적으로 ID 토큰에는 RS256(비대칭)이 선호됩니다. 클라이언트가 서명에 사용된 개인 키 없이도 서명을 검증할 수 있기 때문입니다. HS256(대칭)이 더 빠르지만 비밀 키 공유가 필요합니다.

Q: JWT 내부를 어디서 볼 수 있나요? A: JWS 페이로드는 Base64로 인코딩되어 있을 뿐이므로 쉽게 디코딩할 수 있습니다. 하지만 서명을 검증하기 전까지는 데이터를 신뢰해서는 안 됩니다.


관련 도구