brunch

You can make anything
by writing

C.S.Lewis

by Metadium Oct 27. 2022

분산 신원 관리 시스템의 이해

Metadium Tech series #3


지난 포스트에서는 블록체인의 유형을 분류하고 각 유형에 대한 특징을 알아보았다. 이번 포스트에서는 블록체인이 실제 생활에 적용될 수 있는 응용에 대해 다룬다. 


블록체인을 사용하는 실생활 예는 송금, 대출, 환전 등의 여러 사례가 있지만 본 포스트에서는 블록체인을 활용한 신원 관리 프로세스에 대해 자세히 다뤄보고자 한다. 다른 응용보다도 신원관리 시스템에서 블록체인은 더욱 강점을 가질 수 있는데, 블록체인의 무결성 및 탈중앙성이 사용자가 자신의 신원에 대한 주권을 갖는 자기주권 신원관리(Self-Sovereign Identity Management)를 가능하게 하기 때문이다. 따라서, 본 포스트에서는 신원관리 시스템에 블록체인이 어떻게 이용될 수 있는지, 블록체인을 사용함으로써 얻을 수 있는 장점에 대해 다룬다.


1. 중앙집중형 신원관리


Fig 1. Centralized identity management system


가장 전통적인 방식의 신원관리 방식은 중앙집중형 신원관리(Centralized Identity Management)라고 볼 수 있다. 중앙집중형 신원관리는 서비스를 제공하는 서비스 공급자(SP: Service Provider)가 사용자의 모든 신원정보를 갖고 관리하는 시스템이다. 


예를 들어, 특정 사이트에 회원가입을 할 때 사용자는 사이트에 주민번호, 주소, 핸드폰 번호 등의 개인정보를 전달하고 위의 정보는 서비스 공급자의 서버에 저장되게 된다. 서비스 공급자의 특정 서비스를 사용하기 위해서 사용자는 서비스 공급자의 서버에서 자신의 신원정보를 불러올 필요가 있다. 이는 사용자의 신원정보가 서비스 공급자에게 그대로 노출되고, 신원정보의 보관 및 관리가 서비스 공급자에게 종속된다는 점에서 자기주권 신원관리와 거리가 멀다. 또한, 같은 신원정보가 각 서비스 공급자에게 각각 저장될 필요가 있다는 점에서 비효율적이다. 


사용자가 A라는 포털사이트에 회원가입한다고 가정해 보자. A 서비스를 이용하기 위해 사용자는 신원정보를 A 기업에 제공하는데, 위의 신원정보는 A의 서버에 저장되고 사용자가 A 서비스를 사용할 시 서버에서 가져온 신원정보가 인증에 사용된다. 


위와 같은 구조는 온전히 사용자 정보가 A 서비스의 서버에 저장되고 있기 때문에 사용자가 A 이외의 다른 서비스를 이용할 때 또다시 신원정보를 제공해야 하는 단점을 지닌다. 즉, A 서비스에 제공한 신원정보를 통해 B 서비스를 이용할 수 없는 것이다. 또한, A 서비스를 이용하기 위한 신원정보가 온전히 A의 서버에 저장되고 있기 때문에 A의 서버에 이상이 생길 시 사용자는 신원정보를 제공했음에도 불구하고 서비스를 이용할 수 없는 상황이 발생할 수 있다. 


일례로 근래 한국에서 카카오라는 기업의 데이터 센터에 화재가 발생했는데, 이로 인해 수 일간 카카오 산하 서비스를 사용자가 이용할 수 없었던 사례가 발생했다. 따라서 위의 단점을 완화하고자 연합형 신원관리 시스템(Federated Identity Management)가 제안되었다.



2. 연합형 신원관리


Fig 2. Federated identity management system


연합형 신원관리는 사용자에게 완전한 자기주권 신원을 보장하지는 않지만, 서비스 공급자와 신원 제공자를 분리하였다는 것에 의미가 있다. 연합형 신원관리에서는 서비스 제공자가 신원을 제공받은 후 보관 및 관리하는 것이 아니라, 사용자가 서비스에 접근할 때마다 특정 신뢰관계를 갖고 있는 신원 제공 서비스에 신원정보를 요청하는 형태를 취한다. 물론 사용자가 자기 신원을 신원 제공 서비스에 위탁하여 보관/관리한다는 점에서 완전한 자기주권 신원을 보장하고 있지 않지만, 서비스 제공자마다 신원정보를 보관하는 중앙집중형 모델보다는 효율적이라고 볼 수 있다. 


연합형 신원관리 시스템의 가장 대표적인 예로는 SNS 로그인 시스템이 있을 것이다. Google에 저장된 신원정보를 통해 Google과 신뢰관계를 맺고 있는 다른 서비스를 이용하는 것이 연합형 신원관리 시스템의 예라고 볼 수 있다.


3. 자기주권형 신원관리


앞서 언급했듯 연합형 신원관리 시스템 역시 완전한 자기 신원 주권을 보장할 수는 없다. 이를 보완하기 위해 최근 블록체인이 대두되면서 자기주권 신원관리에 대한 다양한 연구 및 개발이 진행되고 있다. 


블록체인은 탈중앙성을 지닌 검증 가능한 데이터 저장소이기 때문에 신원 제공자 또는 신원 검증을 위한 도구로서 사용될 수 있다. 구체적으로 자기 신원을 특정 중앙기관에 위탁하지 않는다는 점(탈중앙성), 블록체인에 기록된 데이터의 신뢰성을 보장할 수 있다는 점(데이터 무결성), 블록체인에 기록된 데이터는 유실될 수 없다는 점이 자기 주권 신원관리(Self-sovereign idendity management)를 가능할 수 있도록 하였다. 


이러한 블록체인의 특성을 사용하여 최근 분산 신원관리 시스템에 대한 표준이 확립되고 있는데, 대표적으로 W3C(World Wide Web Consortium)에서 제안한 분산 신원관리 시스템에 대해 다뤄보고자 한다.


Fig 3. Claim example


신원정보는 기본적으로 ‘A (Subject)는 a 속성(attribute)을 만족한다’와 같은 형태를 갖는다. 이와 같은 정보 단위를 클레임(Claim)이라고 한다. Fig 3.의 예를 보면, “Pat은 Example University의 졸업생이다”라는 정보가 클레임의 예라고 할 수 있다. 그러나 클레임은 일종의 주장이기 때문에 위의 정보가 그대로 서비스 제공자에게 사용될 수 없다. 예를 들어 Pat이 고등학생일 때 위의 정보가 그대로 사용되면 안 되는 것이다. 따라서 Claim에 신뢰성이 부여될 필요가 있는데, 신뢰성이 있는 클레임의 집합을 검증 가능한 크리덴셜(Verifiable Credential)이라고 한다. 구체적으로 클레임에 신뢰기관의 서명이 추가되게 되면, 그것은 단순한 주장이 아니라 인증받은 정보라고 볼 수 있다. 


검증 가능 크리덴셜은 다음과 같이 구성된다.


Fig 4. Verifiable credential


Fig 5. Verifiable credential structure


Fig 5.를 보면, 검증 가능 크리덴셜은 크리덴셜이 어떤 정보를 드러내고 있는지 요약해 주는 크리덴셜 메타데이터(Credential metadata), 실제 주장하고자 하는 신원정보인 클레임(Claims), 클레임의 진위를 증명해 주는 증명(Proof)로 구성된다.


위의 크리덴셜 정보는 “Pat이 Example University의 졸업생이다”라는 정보가 Example University에 의해 인증되었음을 드러낸다. 그러나 위의 크리덴셜에서는 바로 본인이 위의 정보를 사용한 것임을 보장할 수 없다. 누군가 Pat의 정보를 신뢰 기관에서 인증받아 사용할 수 있는 것이다. 위와 같은 것을 방지하고자 검증 가능 프레젠테이션(Verifiable Presentation)이 제안되었다.


Fig 6. Verifiable presentation


검증 가능한 프레젠테이션은 여러 인증 가능 크리덴셜을 모아서 사용자 본인의 서명을 덧붙인 것을 의미한다. 사용자의 서명이 추가되었기 때문에, 위의 정보는 사용자 본인이 사용하는 것임을 증명할 수 있다. 따라서, 서비스 제공자에게 검증 가능한 프레젠테이션을 제공함으로써 서비스 제공자는 신원정보를 확인할 수 있다.


검증 가능 프레젠테이션이 갖고 있는 증명(서명)을 검증하기 위해서는 공개 검증키가 필요하다. 이 공개 검증키를 보관하는 것에 블록체인이 사용될 수 있다. 블록체인에 위의 정보를 검증할 수 있는 검증키를 각 주체별로 저장하고, 블록체인은 일종의 공개 데이터베이스이기 때문에 누구나 각 주체의 공개 검증키를 가지고 사용자/신뢰 기관이 제공한 신원정보를 검증할 수 있다.


Fig 7. Verifiable credential data model


Fig 7.은 위의 프로세스를 보여주는 그림이라 볼 수 있다. 사용자는 신뢰 기관(Issuer)으로부터 크리덴셜을 발급받고 여러 신뢰 기관으로부터 발급받은 크리덴셜을 조합하여 본인만의 프레젠테이션으로 구성할 수 있다. 서비스 제공자는 블록체인에 기록된 신뢰 기관/사용자의 공개검증키를 사용하여 제공받은 프레젠테이션을 검증할 수 있다. 위의 공개검증키를 보다 효율적으로 관리하기 위해 DID(Decentralized ID)가 제안되었다. DID는 각 주체별로 데이터 검증에 필요한 공개검증키 및 공개정보를 블록체인에 저장할 수 있도록 하는데, 구체적인 구조는 다음과 같다.


Fig 8. DID structure


각 주체(Subject)는 각각 자신만의 DID를 가지고 이는 실제 공개키 정보를 확인하기 위한 인덱스로서 사용된다. DID를 통해 실제 공개 검증 값의 집합인 DID document에 접근할 수 있으며, 또한 DID URL을 통해 URL의 형태로 DID document에 접근할 수 있다. 이러한 DID 구조 및 Verifiable credential data model을 통해 자기 자신이 자기 신원에 대해 주권을 가질 수 있는 자기주권 신원관리가 가능해질 수 있으며, 이를 통해 다양한 서비스 역시 구축될 수 있다.


일례로 메타디움에서는 위의 검증 가능 크리덴셜, 검증 가능 프레젠테이션 및 DID 사용을 위한 API를 제공하고 있으며 위 API를 사용한 서비스 역시 구축하고 있다. DID를 사용한 통합인증 서비스인 MYKEEPiN 서비스를 제공하고 있으며 이를 사용하기 위한 지갑 역시 서비스되고 있다.


블록체인 등장 이전 모든 데이터는 중앙관리자, 즉 서버에 의해 관리되었다. 따라서 신원정보를 관리함에 있어 불가피하게 중앙관리자에 의해 종속될 수 밖에 없었다. 하지만 탈중앙화된 환경에서 데이터를 관리할 수 있고, 데이터 무결성을 보장하는(데이터가 수정되지 않고 유실 위험이 없는) 블록체인이 등장함으로써 사용자는 자신의 신원정보를 특정 기업의 서버에 위탁하지 않고도 신원정보를 관리할 수 있게 되었다. 즉, 제 3자가 갖고 있는 개인의 신원 주권을 개인에게 돌려줄 수 있다는 점에서 블록체인은 자기신원 주권을 실현함에 있어 큰 의미가 있다고 볼 수 있을 것이다.




참고문헌

[1] https://www.w3.org/TR/vc-data-model/


작성자 Ljh












브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari