블록체인에 대해 전반적인 그림을 그리기 위해 조사하며 얻은 얕은 지식입니다.
1. DID란?
- 탈중앙화 신원증명(Decentralized Identity)이다.
- 개인 정보를 사용자 개인이 보관하여(개인 소유의 단말기 등에) 개인 정보 인증 시 필요한 정보들만 골라서 인증을 진행할 수 있도록 해주는 전자신원 증명기술이다.
- 기존에는 기업이 사용자의 모든 개인 정보를 중앙집중형으로 관리하는 형태였지만, DID는 자신의 개인정보를 자신이 직접 관리하는 분산형태이다.
- 사용자들의 개인 정보는 사용자들의 개인 단말기에 저장되고, 블록체인에 존재하는 DID 문서라는 것을 통해서 개인 정보를 제출하여 인증받을 수 있다.
2. 왜 DID?
기존 인증 시스템만으로도 세상은 잘 돌아갔다. 굳이 이런 어려운 기술을 사용하는 이유는 뭘까?
1. 개인정보 관리의 위험
"유저 데이터를 소유하는 것은 자산에서 부채가 되고있다"
-비탈릭 부테린-
이런 이슈를 DID는 해결해줄 수 있다.
- 개인의 입장에선, 자신의 정보를 직접 자신이 직접 관리하기에 나의 개인 정보를 기업에 의존하지 않아도 되고,
- 기업의 입장에선, 직접 관리했다가 유출사고가 발생할 수 있는 리스크를 줄일 수 있다.
그러면 DID 기술을 어떻게 구현되는지 살펴보자.
3. DID의 구성 요소
1. DID 아이디
DID 아이디는 DID 문서의 위치를 나타낸다. 콜론을 통해서 3등분으로 구분되는데 의미는 다음과 같다.
- did: DID 스키마를 따를 것임을 의미
- example: DID 메소드의 이름을 의미, DID 메소드란 특정 분산 원장 또는 네트워크에서 DID와 관련된 DID 문서들을 생성, 읽기, 갱신, 그리고 비활성화 하는 메커니즘이다. DID 메소드들은 여기에서 확인해볼 수 있다.
- 123456789abcdefghi: DID 메소드 안의 고유 아이디를 의미한다.
2. DID 문서
DID문서는 DID아이디의 제어권, 소유권을 증명할 수 있는 공개키와 인증정보를 가지고있다. 블록체인에 올라가있으며 여기에는 민감한 개인정보는 포함돼 있지 않다.(블록체인에 보관하지 않아도 되지만 대부분 블록체인에 보관한다고 한다.)
- id: 이 DID문서가 설명하고 있는 아이디를 의미한다.
- publicKey: 아이디와 관련된 공개키 리스트.
- authentication: 이 아이디의 소유권 증명을 위한 정보.
- service: 이 아이디와 상호작용이 가능한 서비스들을 의미한다.
3. VC(Verifiable Credential)
블록체인에 올라가서 모두에게 보여지는 DID문서에는 당연히 사용자의 개인정보가 포함되면 안된다. 사용자의 민감한 정보들은 사용자가 소지하는 단말기(휴대전화 등)에 저장되며 이를 VC라고 한다.
- VC에는 이름, 나이, 주소, 백신접종여부등의 정보가 들어있다.
- VC는 개인이 단말기의 지갑 애플리케이션과 같은 안전한 영역에서 보관한다.
- 자신이 가진 모든 VC들을 인증을 위해 제출해야 하는것이 아닌, 원하는 VC들만 골라서 제출할 수 있다. 즉, 담배를 구입할 때 신분증을 제출하면 나의 이름과 주민등록번호와 주소지 등이 노출되지만, 성인여부에 대한 VC만 골라서 제출하면 다른 민감한 정보의 노출을 막을 수 있다.
- VC의 단위는 Claim이라고 한다.
4. 인증 과정
모든 종류의 DID가 다음과 같은 인증 절차를 가지는 것은 아니기에 거시적인 관점에서만 DID발급, 사용, 검증으로 나누어서 살펴보도록 하자.
1. 발급하는 법
신원정보발행자가 어떤 유저의 클레임을 발급해주는 과정이다.
- 사용자는 신원정보발행자(이슈어)에게 클레임(인증하고자 하는 항목, 예를들어 백신접종여부) 발급을 요청한다.
- 공인 인증된 이슈어는 사용자의 클레임을 생성하고 클레임에 이슈어의 개인키로 서명을 한다.
- 그 후 이슈어는 블록체인에 존재하는 사용자의 DID문서에 이슈어의 공개키를 등록한다.
- 발급된 클레임을 사용자에게 반환한다.
이제 사용자는 어떤 권한에 대해 인증할 수 있는 하나의 클레임을 얻은 것이다.(성인 여부, 백신 접종여부 등)
2. 사용하는 법
사용자가 발급받은 클레임을 통해서 자신의 정보를 인증하는 과정이다.
- 사용자는 발급받은 클레임에 자신의 개인키로 서명을 한다. (클레임은 현재 사용자의 개인키로 1회, 이슈어의 개인키로 1회, 총 두번의 개인키 서명이 된 상태)
- 사용자의 공개키를 블록체인에 존재하는 자신의 DID 문서에 등록한다. (혹은 클레임과 함께 공개키도 직접 보낸다)
- 검증자에게 클레임을 제출한다.
여기서 검증자는 백신패스를 확인하는 음식점 사장님이라고 가정해보자.
3. 검증하는 법
- 음식점 사장님은 사용자의 클레임을 받아서 검증을 진행한다.
- 검증은 클레임에 걸린 두번의 개인키 서명을 풀어야한다(복호화)
- 먼저 사용자의 DID문서를 조회하여 사용자의 공개키를 획득하고(혹은 직접 받은 공개키를 획득하고),
- 사용자가 전달한 클레임에서 사용자가 개인키로 서명한 것을 복호화한다.
- 사용자의 개인키로 된 서명이 풀렸다는 것은 -> 인증 정보가 해당 사용자의 것이 맞다는 것을 의미한다.
- 다음으로, 사용자의 DID문서에 존재하는 이슈어의 공개키를 통해서 이슈어의 개인키로 서명한 것을 복호화한다.(이제 모든 서명이 풀렸다!)
- 이슈어의 공개키로 복호화가 되었다는 것은, 해당 이슈어가 발급한 클레임이 맞다는 것이고, 이는 사용자의 인증 정보가 신뢰할 수 있음을 의미한다.
참고:
'Block Chain' 카테고리의 다른 글
[블록체인] CEX와 DEX (0) | 2022.02.14 |
---|---|
[블록체인] 클레이튼에 대해 알아보자 (0) | 2021.12.31 |
[블록체인] 암호화폐 채굴과 51% 공격 (2) | 2021.12.05 |
[블록체인] 트랜잭션의 검증(비대칭 암호화 방식) (0) | 2021.11.28 |
[블록체인] 블록체인 노드란? (1) | 2021.11.24 |