들어가며.
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 규격은 다음 예시와 같다 (Payload 스펙 참조)
- UCAN으로 할 수 있는 일
- Delegation/위임: 권한을 발급, 전달, 제한한다
- Invocation/사용: 위임된 권한을 행사한다
- Revocation/철회: UCAN 토큰에 명시된 권한을 철회한다
- UCAN 토큰 발급과 검증을 위한 다수의 라이브러리가 존재한다
- ts-ucan 타입스크립트 라이브러리
- rs-ucan 러스트 라이브러리
- go-ucan 고랭 라이브러리
- 그 외 다른 랭귀지를 위한 다수의 라이브러리를 제공
Ref.
- UCAN Working Group 소스레포
- UCAN 스펙 소스레포
- ts-ucan 라이브러리 소스레포
- IPFS 사용자를 위한 UCAN 동영상(27분)
- ucanto 라이브러리 소스레포
- W3C DID 스펙
요약.
UCAN은 DID를 기반으로 정의한 탈중앙화 Web3 시대를 위한억세스 토큰(AuthZ 토큰)
입니다.
UCAN이 동작하려면 DID 인프라가 갖춰져 있어야 합니다.