본문 바로가기
돈되는 생활 정보

W3C 탈중앙화 신원증명

by ubmuhan 2023. 3. 23.
반응형

W3C

W3C는 World Wide Web Consortium의 약어로, 월드 와이드 웹을 발전시키기 위한 국제 컨소시엄입니다. 1994년 팀 버너스리(Tim Berners-Lee)와 함께 창설되어 웹의 표준화와 기술 발전을 위해 다양한 규격과 지침을 제정하고 있습니다.

W3C에서 제정하는 규격은 HTML, CSS, XML, 웹 서비스, 웹 접근성 등 다양한 웹 기술과 관련된 것이며, 이를 따르는 웹 사이트와 애플리케이션은 보다 안정적이고 호환성이 좋아지며, 보다 많은 사용자와 기술을 지원할 수 있게 됩니다.

또한 W3C는 웹 표준을 만들기 위한 다양한 작업 그룹을 운영하고 있으며, 이를 통해 다양한 이해 관계자들이 함께 협력하여 웹 기술의 발전을 이끌어내고 있습니다.

 

W3C 탈중앙화 신원증명

W3C 탈중앙화 신원증명 서비스는 DID(Distributed Identifiers)와 Verifiable Credentials(검증 가능한 자격증명) 기술을 사용하여 동작합니다.

  1. DID 생성: 사용자는 분산원장 기술을 이용하여 자신의 DID를 생성합니다. DID는 고유한 식별자로, 블록체인 등의 분산원장 기술을 이용하여 생성됩니다.
  2. Verifiable Credentials 발급: 사용자는 자신의 개인정보를 포함한 Verifiable Credentials를 생성하고, 이를 DID에 연결합니다. Verifiable Credentials는 사용자의 신원을 증명하기 위한 정보를 포함한 자격증명입니다.
  3. 검증: Verifiable Credentials를 검증하기 위해서는 검증자가 해당 정보를 확인할 수 있어야 합니다. 검증자는 DID를 이용하여 해당 사용자의 Verifiable Credentials를 확인할 수 있습니다.
  4. 인증: 검증자는 Verifiable Credentials를 확인한 후, 사용자의 신원을 인증합니다. 이를 통해 사용자는 중앙 집중형 인증 기관이나 제삼자 신뢰 기관의 개입 없이도, 탈중앙화된 방식으로 인증을 받을 수 있습니다.

이러한 방식으로 W3C 탈중앙화 신원증명 서비스는 분산원장 기술을 이용하여 사용자의 신원을 관리하고, 탈중앙화된 방식으로 신원증명을 제공합니다.

 

자바스크립트에서 DID와 Verifiable Credentials를 생성하고, 검증자가 해당 정보를 확인하여 인증하는 샘플 코드

const { Ed25519VerificationKey2020 } = require('@digitalbazaar/ed25519-verification-key-2020');
const { Ed25519Signature2020 } = require('@digitalbazaar/ed25519-signature-2020');
const { Ed25519VerificationKey2018 } = require('@digitalbazaar/ed25519-verification-key-2018');
const { Ed25519Signature2018 } = require('@digitalbazaar/ed25519-signature-2018');
const { Ed25519KeyPair } = require('@transmute/ed25519-key-pair');
const { Ed25519Signature2020 } = require('@digitalbazaar/ed25519-signature-2020');
const { Ed25519VerificationKey2020 } = require('@digitalbazaar/ed25519-verification-key-2020');
const vcjs = require('@transmute/vc.js');

// DID 생성
const key = await Ed25519KeyPair.generate();
const did = `did:key:${key.fingerprint()}`;

// Verifiable Credential 발급
const credential = {
  '@context': ['https://www.w3.org/2018/credentials/v1'],
  type: ['VerifiableCredential'],
  issuer: did,
  issuanceDate: new Date().toISOString(),
  credentialSubject: {
    id: 'did:example:ebfeb1f712ebc6f1c276e12ec21',
    degree: {
      type: 'BachelorDegree',
      name: 'Bachelor of Science and Arts',
    },
  },
};
const suite = new Ed25519Signature2020({ key });
const verifiableCredential = await vcjs.issue({
  credential,
  suite,
  documentLoader,
});

// 검증
const result = await vcjs.verify({
  credential: verifiableCredential,
  suite: new Ed25519VerificationKey2020({
    verificationMethod: `${did}#key`,
    key,
  }),
  documentLoader,
});
console.log(result);

 

 

 
반응형

댓글