보안 및 인증 분야에서 "토큰(Token)"은 사용자의 인증·인가 상태를 표현하는 데이터 구조로, 시스템 간 신뢰를 전달하는 핵심 수단입니다. 토큰은 형식/발급 주체/사용 목적에 따라 다양한 종류가 있습니다.

 

🔑 1. 전통적 토큰

  • Session ID
    • 서버 메모리에 세션 상태 저장, 클라이언트는 세션 키만 쿠키에 보관
    • 단점: 서버 확장성(Scaling) 낮음
  • Kerberos Ticket
    • KDC(Key Distribution Center)에서 발급
    • TGT(Ticket Granting Ticket) + Service Ticket 구조
    • 대칭키 기반, 엔터프라이즈 네트워크 환경에서 사용

🔑 2. 웹/모바일 인증 토큰

  • JWT (JSON Web Token)
    • 가장 널리 사용되는 토큰
    • 구조: Header.Payload.Signature (Base64URL 인코딩)
    • 장점: 상태 비저장(stateless), REST API 친화적
    • 용도: OAuth 2.0 / OpenID Connect ID Token, Access Token
  • Opaque Token
    • 무작위 문자열만 전달, 실제 정보는 Authorization Server(DB)에서 조회
    • 장점: 토큰 크기 작음, 민감 정보 노출 방지
    • 단점: 서버 조회 필요 → 부하 증가
  • Refresh Token
    • Access Token보다 장기적, 새로운 Access Token 발급용
    • 보관 위험이 커서 보안 관리 중요 (예: 저장 시 암호화 필요)

🔑 3. 표준 프로토콜 토큰

  • SAML Assertion (XML 토큰)
    • IdP ↔ SP 간 사용자 인증 결과 전달
    • XML Signature, XML Encryption 적용
    • 엔터프라이즈 SSO 환경에서 여전히 많이 사용
  • ID Token (OIDC)
    • JWT 기반, 사용자 프로필 정보 포함
    • 클라이언트가 사용자를 "누구인지" 식별할 때 사용
  • Access Token (OAuth 2.0)
    • API 접근 권한을 표현
    • 일반적으로 Bearer Token 방식 (HTTP Header: Authorization: Bearer <token>)

🔑 4. 하드웨어/소프트웨어 토큰

  • OTP 토큰 (TOTP/HOTP)
    • 1회용 비밀번호(One Time Password)
    • TOTP: 시간 기반, HOTP: 카운터 기반
    • 예: Google Authenticator, YubiKey
  • Smart Card / Hardware Token
    • PKI 기반 인증서 저장 (예: 공인인증서 USB, FIDO2 보안키)
    • 비밀키를 디바이스 밖으로 꺼낼 수 없음 → 강력 보안
  • FIDO2/WebAuthn Credential
    • 공개키 기반 (서버: Public Key, 클라이언트: Private Key)
    • 토큰 자체는 "서명 값(Signature)"
    • 비밀번호 없는 인증(Passwordless)에 최적화

🔑 5. 특수 토큰

  • CSRF Token
    • 웹에서 CSRF 공격 방지용
    • 서버가 세션과 연계된 난수 발급 → 폼 제출 시 검증
  • Nonce (Number used once)
    • Replay Attack 방지용
    • 토큰이라기보단 "임시 검증 값"
  • MAC Token (Message Authentication Code)
    • 토큰 자체가 서명(HMAC) 포함
    • 무결성 보장 강화

📌 정리

  • 전통: Session ID, Kerberos Ticket
  • 웹 표준: JWT, Opaque Token, Refresh Token, Access/ID Token
  • 엔터프라이즈: SAML Assertion
  • 강화 인증: OTP, FIDO2/WebAuthn
  • 보조 보안: CSRF Token, Nonce, MAC Token

 

📊 토큰 종류별 비교

구분 토큰 종류 포맷 주요 용도 장점 단점
전통 Session ID 랜덤 문자열 웹 세션 유지 단순, 구현 쉬움 서버 상태 저장 필요 → 확장성 낮음
  Kerberos Ticket 바이너리 (대칭키 기반) 엔터프라이즈 SSO (AD) 빠른 인증, 재사용 최소화 네트워크 내부 환경 한정, 복잡한 KDC 구성
웹 표준 JWT (JSON Web Token) JSON(Base64URL 인코딩) OAuth2, OIDC, API 인증 Stateless, 서명 검증 가능 크기 큼, 만료 전 탈취 위험
  Opaque Token 랜덤 문자열 API 인증 (Access Token) 노출 시 내부 정보 없음, 안전 매 요청 시 서버 DB 확인 필요
  Access Token JWT or Opaque API 접근 권한 단기 권한 위임 탈취 시 API 오남용 위험
  Refresh Token 보통 Opaque 새 Access Token 발급 장기 세션 유지 가능 탈취 시 장기간 악용 가능
  ID Token JWT 사용자 식별 (OIDC) 사용자 프로필 제공 유효기간 관리 필수
엔터프라이즈 SAML Assertion XML (서명/암호화 지원) 기업 SSO, B2B 연동 표준성, 풍부한 속성 XML 무겁고, 모바일·SPA에 부적합
강화 인증 OTP (HOTP/TOTP) 숫자 코드 MFA, 2FA 구현 간단, 보안 강화 사용자 입력 불편
  Hardware Token (스마트카드, YubiKey) PKI 기반 고강도 인증 키 유출 불가, 매우 안전 장치 분실/관리 부담
  FIDO2/WebAuthn 공개키 암호화 (서명값) 패스워드리스 인증 강력 보안, 피싱 저항 호환성 문제(구형 브라우저/서비스)
보조 보안 CSRF Token 랜덤 문자열 웹 폼 보호 CSRF 방지 세션 연계 필요
  Nonce 임시 난수 재사용 공격 방지 단순·효율적 잘못 관리 시 인증 실패
  MAC Token 토큰+HMAC API 요청 무결성 보장 위·변조 방지 서버·클라이언트 모두 키 관리 필요

'소프트웨어 > 상식' 카테고리의 다른 글

Apache Kafka  (1) 2025.09.20
JWT(JSON Web Token)  (0) 2025.09.20
SAML(Security Assertion Markup Language)  (0) 2025.09.20
SSO(Single Sign-On, 단일 로그인)  (0) 2025.09.20
KCMVP(Korea Cryptographic Module Validation Program)  (0) 2025.09.19

+ Recent posts