Dev

웹3 세상의 Access Token, UCAN 소개

ingeeC 2025. 2. 6. 11:12

들어가며.
UCAN은 웹3 세상을 위한 Authorization(이후 AuthZ) 기술 입니다.
DID를 이용해서, DID document가 제공하는 pub-key를 인증 수단으로 사용하자는 아이디어가 핵심입니다.

 

웹3를 위한 Access Token, UCAN

 

개요

  • UCAN은 User Controlled AuthZ Network의 약자 (본질은 Access Token)
  • 사용자 데이터의 통제권을 사용자 개인에게 부여하는 기술
  • UCAN의 특징
    • Trustless: UCAN 토큰의 유통 및 권한 행사에 참여하는 누구도 신뢰를 강요하지 않는다 (Trustless한 객체들이 모여 신뢰할 수 있는 결과를 만든다)
    • Secure: 암호 알고리즘이 안전을 보장한다
    • 그리고, local-first, user-originated 하다

 

상세

  • 아이디어의 배경: 탈중앙화된 웹3 환경에서는 기존과 다른 AuthZ 방식을 고민해야 한다
    • ACL을 관리하는 '중앙'이 없기 때문이다
    • AuthZ 관리에 필요한 모든 내용을 포함한 토큰을 이용하면 탈중앙화된 방식으로 권한 관리를 수행할 수 있다 (UCAN은 SPKI와 OCAP/object capability 기술을 참조했다)
  • UCAN 토큰은 영화티켓에 비유할 수 있다
    • 누구도 당신의 신원/Identity을 묻지 않는다
    • 다른 사람에게 티켓을 양도할 수 있다 (이를 위해 극장과 협의할 필요도 없다)
  • UCAN은 자원, 권한, 주체를 명시하기 위해 DID를 사용한다
    • UCAN 규격은 다음 예시와 같다 (Payload 스펙 참조)
      {
        `header`: {
          `alg`: Algorithm, // the type of signature.
          `typ`: Type, // the type of this data structure, JWT.
          `uav`: UCAN version.
        },
        `payload`: {
          `iss`: DID, // Required. Issuer DID (sender)
          `aud`: DID, // Required. Audience DID (receiver)
          `sub`: DID, // Required. Principal that the chain is about (the [Subject])
          `cmd`: String, // Required. The [Command] to eventually invoke
          `args`: {String : Any}, // Required. Any [Arguments] for the Invocation
          `nonce`: Bytes, // Required. Nonce
          `meta`: {String : Any}, // Not Required. [Meta] (asserted, signed data)
          `nbf`: Integer, // Not Required. "Not before" UTC Unix Timestamp
          `exp`: Integer | Null, // Required. Expiration UTC Unix Timestamp
        },
        `signature`: Bytes // A signature (using alg) of the base64 encoded header and payload concatenated together and delimited by '.'
      }
  • UCAN으로 할 수 있는 일
    • Delegation/위임: 권한을 발급, 전달, 제한한다
    • Invocation/사용: 위임된 권한을 행사한다
    • Revocation/철회: UCAN 토큰에 명시된 권한을 철회한다
  • UCAN 토큰 발급과 검증을 위한 다수의 라이브러리가 존재한다

 

Ref.

 

요약.
UCAN은 DID를 기반으로 정의한 탈중앙화 Web3 시대를 위한 억세스 토큰(AuthZ 토큰)입니다.
UCAN이 동작하려면 DID 인프라가 갖춰져 있어야 합니다.