[졸과][블록체인] DID의 개념과 생성

2024. 2. 6. 03:29·프로젝트/졸업과제

배경

졸업과제의 주요 프로토콜에 DID(Decentralized Identifier)를 사용하게 되면서 DID를 이해해보려 노력해봤다. 탈중앙 ID라는 말만 들어서 굉장히 추상화된 개념이었고 실제 구현 사항과 생성 방법 같은 건 몰랐는데, 이번 기회에 DID를 파악할 수 있었다.

 

DID는 블록체인과 독립적인 개념이기 때문에 특정 네트워크에 종속적이지 않고, DID 표준만 맞추면 문제가 없다고 한다. 졸과 프로젝트를 Near Protocol에서 구현하기로 했는데 니어프로토콜에 특화된 DID 라이브러리가 없기도 해서, SpruceKit의 DIDKit 라이브러리를 사용할 것 같다. 본격적인 프로젝트 구현에 들어가기 전에 팀원들과 같이 예제 코드를 돌리면서 DID에 대한 이해도를 최대한 끌어올릴 계획이다.

 

개념

DID(Decentralized Identifiers, 탈중앙화 식별자)는 개인, 조직, 사물 등을 위한 글로벌하고 유일한 식별자이며, 중앙 집중식 기관에 의존하지 않고 자체적으로 생성 및 관리될 수 있다. DID는 탈중앙화 신원 인증의 핵심 요소로, 블록체인 및 분산 원장 기술을 기반으로 구현된다.

주요 특징

  • 자기 주권: 사용자는 자신의 DID를 직접 제어하고 관리할 수 있으며, 어떤 중앙 기관의 승인이나 간섭 없이도 신원 정보를 생성하고 사용할 수 있다.
  • 분산 관리: DID는 블록체인과 같은 분산 원장 기술에 저장되어, 데이터의 무결성과 보안을 보장한다.
  • 상호 운용성: 다양한 시스템과 플랫폼에서 DID를 사용하여 신원을 인증하고, 데이터를 교환할 수 있다.
  • 프라이버시 보호: DID를 사용하는 개인은 어떤 정보를 공개할지, 누구와 공유할지를 스스로 결정할 수 있다. 이를 통해 데이터의 최소화 원칙을 준수하며 프라이버시를 보호할 수 있다.
  • 검증 가능한 자격 증명: DID와 함께 사용되는 검증 가능한 자격 증명(Verifiable Credentials) 기술을 통해 사용자는 자신의 신원 정보나 자격을 안전하게 증명할 수 있다.

작동 방식

DID는 did:method:unique-identifier의 형식을 가진다. 여기서 method는 DID를 생성하고 해석하는 데 사용되는 특정 메소드(예: did:ethr는 이더리움을 기반으로 하는 DID)를 의미하고, unique-identifier는 해당 DID를 유일하게 식별하는 부분이다. 사용자는 자신의 DID에 대한 정보를 DID 문서에 저장하며, 이 문서는 공개적으로 접근 가능한 분산 원장에 기록된다. DID 문서에는 사용자의 공개 키, 인증 방법, 서비스 엔드포인트 등이 포함될 수 있다.

 

생성 방식

1. 사용할 DID 메소드 선택: DID가 어떻게 생성, 확인, 업데이트, 비활성화될 수 있는지 정의한다.예를 들어, Ethereum을 사용하는 'did:ethr', 또는 다른 블록체인 기반의 DID 메소드가 존재한다.

2. 개인키 및 공개키 생성: 해당 네트워크의 개인키 및 공개키 쌍을 생성한다.

3. DID Document 생성: DID와 관련된 메타데이터를 포함한 문서를 생성한다. 메타데이터에는 공개키, 인증 방법, 서비스 엔드포인트 등이 포함된다.

4. DID Document 등록: DID Document는 DID 네트워크 또는 블록체인 네트워크에 등록된다. DID를 통해 DID Document에 접근할 수 있다!

5. DID 사용: 이제 본인의 DID를 사용할 수 있다!

 

DID

did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a

 

DID Document

{
  '@context': [
    'https://www.w3.org/ns/did/v1',
    'https://w3id.org/security/suites/secp256k1recovery-2020/v2'
  ],
  id: 'did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a',
  verificationMethod: [
    {
      id: 'did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a#controller',
      type: 'EcdsaSecp256k1RecoveryMethod2020',
      controller: 'did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a',
      blockchainAccountId: 'eip155:1:0xb9c5714089478a327f09197987f16f9e5d936e8a'
    }
  ],
  assertionMethod: [
    'did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a#controller'
  ],
  authentication: [
    'did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a#controller'
  ]
}

 

 

참조

- ethr-did 라이브러리: https://github.com/uport-project/ethr-did

 

GitHub - uport-project/ethr-did: Create ethr DIDs

Create ethr DIDs. Contribute to uport-project/ethr-did development by creating an account on GitHub.

github.com

- spruceKit/DIDKit 라이브러리: https://www.sprucekit.dev/didkit/didkit

 

DIDKit - SpruceKit

DIDKit provides Verifiable Credential and Decentralized Identifier functionality across different platforms. DIDKit's core libraries are written in Rust due to Rust's expressive type system, memory safety, simple dependency web, and suitability across diff

www.sprucekit.dev

 

'프로젝트 > 졸업과제' 카테고리의 다른 글

[졸과][NEAR] 계정 생성 어떻게 할까?  (0) 2024.02.16
[졸과][NEAR] 계정 생성을 어떻게 처리할지 고민 중  (0) 2024.02.15
[졸과][NEAR] near-cli로 createAccount  (0) 2024.02.14
[졸과][NEAR] Account, State, Smart Contract  (1) 2024.02.08
[졸과][NEAR] 왜 NEAR인가  (0) 2024.02.08
'프로젝트/졸업과제' 카테고리의 다른 글
  • [졸과][NEAR] 계정 생성을 어떻게 처리할지 고민 중
  • [졸과][NEAR] near-cli로 createAccount
  • [졸과][NEAR] Account, State, Smart Contract
  • [졸과][NEAR] 왜 NEAR인가
KimCookieYa
KimCookieYa
무엇이 나를 살아있게 만드는가
  • KimCookieYa
    쿠키의 주저리
    KimCookieYa
  • 전체
    오늘
    어제
    • 분류 전체보기 (572)
      • 혼잣말 (87)
      • TIL (2)
      • 커리어 (24)
        • Sendy (21)
        • 외부활동 기록 (2)
      • 프로젝트 (186)
        • 티스토리 API (5)
        • 코드프레소 체험단 (89)
        • Web3 (3)
        • Pint OS (16)
        • 나만무 (14)
        • 대회 (6)
        • 정글 FE 스터디 (16)
        • MailBadara (12)
        • github.io (1)
        • 인공지능 동아리, AID (5)
        • 졸업과제 (18)
        • OSSCA 2024 (1)
      • 크래프톤 정글 2기 (80)
      • IT (167)
        • 코딩 (4)
        • CS (18)
        • 에러 (5)
        • 블록체인 (23)
        • Front-End (38)
        • 알고리즘&자료구조 정리 (3)
        • 코딩테스트 (3)
        • BOJ 문제정리 (41)
        • WILT (12)
        • ML-Agents (4)
        • 강화학습 (1)
        • Android (0)
        • LLM (2)
      • 전공 (1)
        • 머신러닝 (1)
      • 자기계발 (20)
        • 빡공단X베어유 (2)
        • 독서 (15)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Velog
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pintos
    JavaScript
    졸업과제
    코드프레소
    파이썬
    핀토스
    자바스크립트
    사이드프로젝트
    RNN
    알고리즘
    해커톤
    리액트
    니어프로토콜
    Pint OS
    NEAR Protocol
    numpy
    나만무
    위상정렬
    크래프톤정글
    MailBadara
    OS
    react
    docker
    프로그래머스
    머신러닝
    딥러닝
    부산대
    Flutter
    글리치해커톤
    블록체인
  • hELLO· Designed By정상우.v4.10.3
KimCookieYa
[졸과][블록체인] DID의 개념과 생성
상단으로

티스토리툴바