Decentralized Identifier에 대한 기술적 이해
본 문서는 DID(분산아이디), DID Document(분산 아이디 메타데이터), Verifiable Credential(검증 가능한 신원증명), DID Authentication(분산 아이디 인증)에 관한 기술적 개요 및 메타디움 DID 시스템의 구성요소와 인증방법에 대하여 설명한다. 기술적 이해를 바탕으로 뒷부분에는 DID의 효용성에 대해서 이야기하며 글을 마무리하겠다.
Decentralized Identifier (DID) 기술 개요
DID의 핵심 구조 (core architecture) 및 데이터모델 (data model)에 대한 기술 표준화 작업은 World Wide Web Consortium (W3C) Decentralized Identifier (DID) Working Group에서 진행 중이며 이 글을 작성하는 2021년 6월 현재 DID Spec v1.0은 W3C Candidate Recommendation (CR) 상태이다.
모든 “분산아이디” 데이터는 다음의 두 부분으로 구성되어 있다.
- unique identifier
- associated metadata (DID document)
모든 unique identifier는 다음과 같은 포맷을 가진다.
누구나 플랫폼에서 제공하는 resolver API를 통하여 블록체인에서 unique identifier와 유일하게 1:1로 매핑되는 DID document를 찾을 수 있다.
위 그림에서 보는 바와 같이 unique identifier의 포맷은 “did:”+<method>+“:”+<method-specific-identifier>의 구조를 가진다. 현재 등록된 did method는 수십 종에 이르며, 각각의 method는 사용할 블록체인을 정의하고 DID document를 찾는(resolve) 방법을 정의하며 DID CRUD(Create, Read, Update, and Delete) 방법을 명시적으로 설명하고 있다.
DID document는 JSON-LD 구조의 개체로 블록체인에 저장된 정보를 기준으로 구성된다. 블록체인의 영속성(persistent)과 불변성(immutable)으로 인해 DID의 소유자(owner) 이외에는 DID document의 내용을 변경하는 것이 불가능하다.
DID document는 다음의 내용을 반드시 포함한다.
- a list of cryptographic public keys (암호학적 공개키 리스트)
- a list of ways that the DID can be used to authenticate (DID가 인증에 사용될 수 있는 방법에 대한 목록)
- a list of services where the DID can be used (DID를 사용할 수 있는 서비스에 대한 목록)
- any number of externally defined extensions (기타 확장 가능한 정보)
중요한 점은 DID document에는 개인을 식별할 수 있는 그 어떤 종류의 “개인정보”도 포함되지 않아야 한다는 것이다. 또한 DID생태계 내에서 개인 정보의 전달은 반드시 암호화된 Verifiable Credential에 의해서만 이루어진다는 것을 잊지 말자.
Verifiable Credentials (VCs) 기술 개요
DID 의 실사용 사례는 대부분 Verifiable Credential (VC, 검증 가능한 자격 증명)과 연결되어 있다.
VC는 다음의 3가지 정보를 반드시 포함한다.
- subject: 대부분의 경우 우리와 같은 사용자이지만 기업, 단체, 동물, 사물 또는 “설명할 수 있는 모든 개체”가 될 수 있으므로 한정할 수 없다.
- issuer: 정부기관, 학교, 은행 등과 같은 개인 정보와 부가적인 정보를 저장하고 있으며 특정 데이터의 진위를 확인하는 기능이 있는 일종의 단체이거나 개인일 수 있다.
- claim: 표현 가능한 모든 문장일 수 있다. 예를 들어 “~는 18살 이상이다”, “~라는 주소에 산다” 혹은 “~의 이름은 ~이다”등이 될 수 있으며, 좀 더 폭넓게는 상황을 묘사하는 모든 문장이 될 수 있다.
따라서, VC는 holder의 요청에 따라 issuer가 생성한 subject에 대한 claim이라고 할 수 있다. Verifiable (검증 가능한)이라고 부르는 이유는 VC는 issuer에 의해 암호 학적으로 서명되어 있기 때문이다. 누구라도 공개된 issuer의 public key를 획득하면 (e.g., DID document를 통하여) VC 검증을 통하여 claim의 신뢰 여부를 결정할 수 있다. 명심해야 할 부분은 VC는 issuer의 서명으로 인해 생성 이후 변조가 불가능하다.
VC는 단순한 JSON 문서로 구성되어 있으며, W3C VC 규격은 데이터 모델만을 정의하고 있다. 즉, VC를 어떻게 전달하고 관리하는지에 대해서는 표준화되어있지 않다고 보아야 한다.
- holder: 하나 이상의 검증 가능한 자격 증명(VC)을 소유하고 검증 가능한 프레젠테이션(VP, Verifiable Presentation: holder가 하나 이상의 VC를 verifier에게 제출할 때 본인의 전자서명으로 무결성을 보장한 데이터)을 생성하여 전달하는 역할을 수행한다. Holder는 subjec와 동일하게 사용자, 기업, 단체, 동물, 사물 또는 “설명 할 수 있는 모든 개체”가 될 수 있다.
- verifier(검증자): 하나 이상의 검증 가능한 자격 증명(VCs)을 수신하여 검증을 수행하는 역할을 가진다. Verifer는 고용주, 보안 담당자 및 서비스 웹 사이트 등 VC를 전달받을 수 있는 모든 것이 될 수 있다.
위 그림을 설명하기 위하여 사용자가 편의점에서 주류를 구매하려고 하는 시나리오를 생각해보자.
- 사용자(holder)는 경찰청(issuer)으로부터 발급받은 “사용자가 만18세 이상이다”라는 VC를 편의점(verifier)에 제출한다.
- 편의점(verifier)은 전달받은 VC가 경찰청(issuer)에서 발급된 내용인지를 issuer의 서명을 검증하여 확인한다.
- 편의점(verifier)은 VC 파기되지 않았으며, 유효기간이 남아있다면 성인임을 신뢰하게 된다.
- 편의점(verifier)은 검증된 사용자(holder)에게 주류를 판매한다.
DID Authentication (인증)
DID 인증 방법은 W3C 표준에서 정의하고 있지 않다. 따라서 각각의 DID 프로토콜(e.g., 마이키핀)은 인증 과정 및 메시지를 개별적으로 규격화하여 사용하고 있다.
기본적으로 DID Authentication은 challenge-response protocol을 기반으로 한다. 사용자는 이용하고자 하는 서비스로부터 random challenge를 전달받으면 사용자의 private key(개인키)를 이용하여 challenge를 서명한 후 DID와 함께 서비스로 전달하는 형태가 기본적인 인증플로우이다.
메타디움 DID Authentication 서비스
본 장에서는 “메타디움 플랫폼을 이용한 DID 인증 서비스”의 시스템 구성과 주요 엔티티들에 대해서 설명한다.
위 그림에서 보는 바와 같이 DID 앱을 중심으로 DID 서비스를 제공하는데 필요한 여러 가지 서버들이 존재한다. 또한, VC를 생성 및 검증하는 issuer, verifier도 생태계에 포함된다.
- 통합어드민서버: Issuer, Verifer, VC 관리 및 인증 서비스 사용내역 및 과금을 위해 도입한 관리 서버
- DID resolver: DID를 입력으로 주면 DID document를 출력으로 전달하는 서버
- Fee delegator: 퍼블릭 메타디움 블록체인에 거래를 생성할 때 사용자를 대신하여 거래비용을 지불해 주는 서버
- Blockchain: DID smart contract가 배포되어있는 메타디움 퍼블릭 블록체인 노드 서버
- Backup 서버: 사용자의 private key를 사용자가 지정한 키로 암호화하여 저장 및 복구해 주는 서버
- Push 서버: 사용자에게 VC 만료 및 인증 요청 정보등을 알려주는 서버
위의 6가지 서버 이외에 메타디움 DID 서비스의 핵심 영역에 해당하는 Issuer(AA 서버), Holder(DID 앱), Verifier(SP 서버), 서버/앱 SDK 및 Trusted Agency(인증서버)에 대한 구성과 기능을 도표로 설명한 자료이다.
메타디움 DID 서비스
메타디움 서비스 플랫폼 제공하는 DID 관련 서비스는 다음과 같다.
- DID CRUD (생성, 읽기, 갱신, 삭제)
- VC CRUD (생성, 읽기, 갱신, 삭제)
- DID Authentication Service (인증)
아래 그림은 DID CRUD 중 DID Create(생성)에 관한 플로우이다. DID -RUD도 유사한 흐름을 가지고 있으므로 상세 플로우는 생략한다.
위 그림에서 1~11까지의 과정을 모두 완료하면 아래의 두 가지 결과가 발생한다.
- Private key와 DID는 DID 앱에서 저장 관리 (사용자 단말)
- Public key와 DID는 DID smart contract에서 저장 관리 (블록체인)
아래 그림은 VC CRUD 중 VC Create(생성)에 관한 플로우이다. VC -RUD도 유사한 흐름을 가지고 있으므로 상세 플로우는 생략한다.
VC에 대해서도 위 그림에서 1~11까지의 과정을 모두 완료하면 아래의 두 가지 결과가 발생한다.
- 이메일 인증 VC는 DID 앱에서 저장 관리 (사용자 단말)
- VC ID는 revocation을 위해 VC 관리 database에 저장
아래 그림은 DID 앱을 통하여 특정 서비스를 이용하는 방법 중 전자서명을 전달하는 플로우이다. 이러한 종류의 서비스는 “공동 인증서 전자서명”이 사용되는 모든 시나리오에 적용될 수 있다 (e.g., 서비스 로그인, 거래서명 등).
아래 그림은 DID 앱을 통하여 특정 서비스를 이용하는 방법 중 VC를 제출하는 플로우를 설명한다. 이러한 종류의 서비스는 O’Auth를 이용한 소셜 로그인에 사용되는 시나리오와 동일하다. 큰 차이는 개인 정보를 중앙 서버에 저장하는 O’Auth 방식과는 다르게 DID 앱이 서비스가 요구한 개인 정보를 직접 서비스에 암호화하여 제출하는 구조라는 것이다.
메타디움 DID 인증기술은 퍼블릭 블록체인 영역에서는 “마이키핀”, “비패스”, “더폴”의 기반기술로 이미 30만 명이 넘는 개인 사용자들이 적극적으로 사용하고 있으며, 프라이빗 블록체인 영역에서는 “메타패스”라는 이름으로 패키징 되어, 기업형 솔루션으로 활용 영역을 넓혀가고 있다. 메타패스는 2021년 5월 조달청 혁신 시제품으로 인증 및 지정되었으며, 2021년 6월에는 TTA GS 1등급 인증을 획득하였다.
더 나아가 누구라도 쉽게 DID 앱을 만들어 사용할 수 있도록 “DID SDK” 패키징 작업이 진행 중에 있으며 2021년 6월 중 출시 예정이다.
DID의 효용성
기술적인 부분을 뒤로하고 이번 장에서는 DID의 효용성에 대해서 이야기해보자. 현업에 있다 보면 DID와 관련하여 많은 질문들을 듣게 되는데,그 질문들을 정리해보면 아래의 두 가지로 압축된다.
- DID는 어떤 문제를 어떻게 해결하는가?
- DID의 혜택은 누가 받는 것인가?
위의 두 가지 대답을 하기 위해서는 실제로 DID 생태계에 존재하는 행위자들이 누구인지를 살펴볼 필요가 있다.
- 사용자(user)는 각 DID의 소유주이며 VC Holder임
- 서비스 제공자(service provider)는 앱이나 웹을 통해서 사용자에게 서비스를 제공하는 주체이며 VC Verifier임
- 증명서 발급자(attestation agency)는 앱, 웹 혹은 API를 통해서 사용자에게 온라인 증명서를 발급 해주며 VC Issuer임
- 기술 제공자(technology company)는 DID 생태계를 구성하는데 필요한 기술을 제공하며 코인플러그 같은 전문 기술 회사임
사용자 관점
사용자에게 DID가 가져다줄 수 있는 가장 큰 가치는 본인 데이터의 “제어권”을 사용자에게 돌려준다는 것이다. 우리가 일반적으로 사용되는 식별자에는 이메일 주소와 도메인 이름 같은 것이 있다. 사용자들은 본인이 이메일 주소나 도메인 이름을 스스로 소유하고 있다고 생각하지만 실제로 해당 정보들은 제3자에 의해 제어된다. 예를 들어, 이메일 제공 업체는 여러분의 이메일 주소를 파기하거나 일시 중지할 수 있으며, 도메인 이름도 기간이 만료되면 소유권이 종료되거나 권한이 바뀌기도 한다. 하지만 DID와 연결되어 있는 private key를 사용자가 안전하게 유지하고 있는 한 사용자는 DID를 영원히 제어할 수 있게 된다.
현재 사람 혹은 사물에 대한 증명서를 발급할 수 있는 기관은 매우 제한적이다. 예를 들면 운전면허증, 여권, 학생증 등은 제3자에게 본인의 신원을 증명하는 데 사용될 수 있다. 그러나 생활 속에서는 다양한 종류의 증명서 특히 개인의 성향 및 취향을 나타내는 다양한 증명서(e.g., 채식주의자, 롯데 자이언츠 팬)들이 DID 생태계에서는 쉽게 생성 가능하며 누구나 발급자가 될 수 있으므로 증명서 시장에 공개 시장 경쟁이 발생하여 서비스의 품질과 가용성이 향상될 것이다.
오늘날 많은 사람들이 페이스북, 구글, 애플, 네이버, 카카오 등 거대한 ID 제공 업체를 사용하여 타사 서비스에 로그인하고 있다 (O’Auth). 이를 통해 이들 기업들은 사용자들의 삶에 엄청난 통제력과 통찰력을 얻을 수 있는 것이 사실이다. 하지만 DID를 사용하면 사용자는 더 이상 이러한 중앙화된 ID 제공 업체들에 의존하지 않을 수 있으며 개인정보의 주체로서 내 정보를 활용한 서비스로부터 정당한 대가를 지불 받을 수 있게 될 것이다.
대부분의 경우 사용자는 본인이 어떤 데이터를 언제 공유하는지를 제어할 수 없다. 일반적으로 중앙화된 계정 시스템에서는 개인은 본인의 개인 정보를 무조건적으로 기업과 공유해야 하는 경우가 자주 발생한다. DID를 사용하면 반드시 필요한 정보만을 선별하여 제공하는 것이 가능하며, 사용자가 원하는 시간 동안 지정된 용도로만 저장하고 사용하도록 명시적으로 요청하는 것이 가능하다.
서비스 제공자 관점
서비스 제공자가 DID를 사용하여 얻을 수 있는 가장 큰 이득는 개인 정보 처리 및 보관의 위험을 줄일 수 있다는 것이다. 검증 가능한 신원증명(VC)을 사용하면 서비스 제공자가 개인 정보를 유지 보관하지 않을 수 있으므로 GDPR 및 기타 데이터 및 개인 정보 위험에 대한 노출을 현저히 줄일 수 있다. 또한 DID를 사용하면 신원 증명서 발급의 책임이 증명서 발급자에게로 돌아가고 서비스 제공자는 전달받은 증명서의 유효성만 확인하여 서비스를 제공하면 된다.
반면에 서비스 제공자가 DID 생태계와의 통합을 선택했을 때 가장 어려운 부분은 그들이 수용할 발급자와 검증 가능한 신원증명을 선택하는 것이다. 다수의 VC 발급자와 통합하는 것이 사용자에게는 많은 편의성을 제공하지만 발급자를 이해하고 기술 인터페이스를 개발하는데 상당한 작업이 필요할 것이다. 이를 단순화하고 편리화하기 위해서 코인플러그는 SP가 legacy 시스템에 쉽게 DID를 연동할 수 있도록, 다양한 SDK(앱, 웹, 서버)를 언어별로 제공하고 있다.
발급자 관점
많은 사용자와 서비스 제공자가 DID를 채택하기로 했다면 VC 발행자가 생태계에 참여하지 않을 이유는 없다. 암호 학적으로 검증 가능한 VC를 제공함으로써 VC 발급자는 자신이 제공하는 VC의 영향력과 가치를 높일 수 있으며 수익 모델을 창출할 수 있다.
기술 제공자 관점
DID 생태계에서 블록체인, 신원관리 시스템, 인증 시스템 등을 구축하는 기술 제공자는 필수이다. 코인플러그는 DID가 사용자, 서비스 제공자, VC 발급자에게 제공하는 가치에 대한 신념으로 새로운 시장을 구축하는데 다양한 노력을 기울이고 있으며, 특히 기존 시스템과 연결을 쉽게 할 수 있는 다양한 툴을 제공하려고 노력하고 있다.
맺음말
지난 10년간 블록체인 기술을 이용한 다양한 서비스 개발이 있었지만 DID처럼 커다란 관심을 받는 분야는 거의 없었다. 세계적으로는 현재 DID 기술은 W3C에서 표준화가 거의 완료된 상황이며, 국내에서는 DID 표준화 포럼을 통하여 업체들 간 표준화 작업이 진행 중에 있다.
블록체인 전문 기업 코인플러그는 축적된 기술력과 경험을 바탕으로 블록체인 기반의 DID 솔루션과 서비스를 제공하고 있다. 2020년 DID 기반 안전한 인증과 개인 정보 관리서비스인 “마이키핀”, 블록체인 기반 온라인 여론조사・투표 서비스인 “더폴”, 부산 블록체인 규제자유특구 DID 서비스 “B PASS”가 시장에 출시되어 사용되고 있다.
2021년 7월에는 메타디움 블록체인 기반 NFT 발행 및 거래 플랫폼인 메타파이가 출시될 예정이다. 코인플러그는 계속해서 의미 있는 서비스를 만들어갈 것이며 여러분의 많은 관심을 바란다.