inblog logo
|
RottenYogurt's Development Blog

    토큰

    썩은요플렛's avatar
    썩은요플렛
    Aug 08, 2024
    토큰
     
     
    토큰(Token)은 컴퓨터 과학과 정보 보안에서 다양한 의미로 사용되지만, 일반적으로 인증 및 권한 부여, 데이터 보안, 디지털 자산 등과 관련된 작은 정보 단위를 의미한다.

    1. 인증 및 권한 부여에서의 토큰

    a. JWT (JSON Web Token)
    • 정의: JSON 포맷으로 정보를 안전하게 전달하기 위한 컴팩트하고 독립적인 방식.
    • 구성: 헤더(Header), 페이로드(Payload), 서명(Signature)의 세 부분으로 구성된다.
      • 헤더: 토큰의 타입과 해싱 알고리즘 정보를 포함한다.
      • 페이로드: 사용자 정보와 추가 데이터를 포함하며, Base64URL 인코딩된다.
      • 서명: 헤더와 페이로드를 해싱하여 비밀 키로 서명한 값이다.
    • 사용 예: 사용자가 로그인하면 서버는 JWT를 생성하여 클라이언트에게 반환하고, 클라이언트는 이를 HTTP 요청의 헤더에 포함시켜 인증된 요청을 보낸다.
     
    json코드 복사 { "alg": "HS256", "typ": "JWT" } { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
    b. OAuth 토큰
    • 정의: OAuth 프로토콜에서 사용되는 액세스 토큰으로, 사용자가 제3자 애플리케이션에게 자신의 리소스에 접근할 수 있는 권한을 부여할 때 사용된다.
    • 구성: 보통 JWT 형식이나 다른 포맷을 사용할 수 있으며, 액세스 토큰과 리프레시 토큰으로 구분된다.
      • 액세스 토큰: 리소스에 접근할 때 사용되며, 만료 시간이 있다.
      • 리프레시 토큰: 액세스 토큰이 만료되었을 때 새로운 액세스 토큰을 발급받을 때 사용된다.

    2. 데이터 보안에서의 토큰

    a. 토큰화(Tokenization)
    • 정의: 민감한 데이터를 보호하기 위해 실제 데이터를 대신하여 비슷한 형식의 대체 데이터를 사용하는 방식이다.
    • 예시: 신용카드 번호 "4111 1111 1111 1111"을 "abcd efgh ijkl mnop"와 같은 토큰으로 대체한다.
    • 사용 예: 결제 처리 시스템에서 신용카드 정보를 안전하게 저장하고 전송할 때 사용된다. 실제 카드 번호는 안전한 토큰화 서버에 저장되고, 시스템 내에서는 토큰만 사용된다.

    3. 블록체인과 디지털 자산에서의 토큰

    a. 암호화폐(Cryptocurrency)
    • 정의: 비트코인, 이더리움 등 블록체인 네트워크에서 사용되는 디지털 화폐.
    • 구성: 블록체인 기술을 기반으로 하여 탈중앙화되고, 보안성이 높다.
    • 사용 예: 디지털 자산 거래, 스마트 계약 실행 등에서 사용된다.
    b. 대체 불가능 토큰(NFT, Non-Fungible Token)
    • 정의: 고유성과 희소성을 가진 디지털 자산으로, 블록체인 기술을 통해 소유권과 진위성을 보장받는다.
    • 사용 예: 디지털 아트, 게임 아이템, 가상 부동산 등의 소유권을 증명하고 거래할 때 사용된다.

    요약

    • JWT: 주로 웹 애플리케이션의 인증과 권한 부여에 사용된다.
    • OAuth 토큰: 제3자 애플리케이션에게 리소스 접근 권한을 부여하는 데 사용된다.
    • 토큰화: 민감한 데이터를 보호하기 위해 사용된다.
    • 암호화폐: 블록체인 기반의 디지털 화폐이다.
    • NFT: 고유성과 희소성을 가진 디지털 자산이다.
    토큰은 각기 다른 맥락에서 사용되지만, 공통적으로 데이터 보안과 인증, 권한 부여, 디지털 자산 관리에 중요한 역할을 한다.
     

    세션을 사용하는 대신 토큰을 사용하는 이유

    1. 확장성:
        • 세션: 서버에 상태를 저장해야 하므로 서버 확장이 어렵고, 부하가 커짐.
        • 토큰: 클라이언트 측에서 상태를 관리하므로 서버 부하가 줄고, 확장이 쉬움.
    1. 보안:
        • 세션: 세션 ID가 탈취되면 위험.
        • 토큰: 토큰 자체에 서명이 있어 위변조 방지 가능.
    1. 무상태성:
        • 세션: 서버가 상태를 유지해야 함.
        • 토큰: 서버가 상태를 유지하지 않아 RESTful API와 잘 맞음.
    Share article

    RottenYogurt's Development Blog

    RSS·Powered by Inblog