검증가능 크리덴셜(Verifiable Credential)의 신뢰모델 분석

탈중앙신원증명(DID, Decentralized Identity)이나 더 나아가 자기주권아이디(SSI, Self-Sovereign ID)를 실현하는데 필요한 중요한 기술 중 하나는 검증가능 크리덴셜입니다. 검증가능 크리덴셜은 W3C에서 표준 규격으로 정의하고 있습니다.

SSIMeetup Korea 로고

검증가능 크리덴셜이 안정적으로 동작하기 위해서는 기반에 있는 신뢰모델을 이해하는 것이 중요합니다. 이번 글에서는 검증가능 크리덴셜 표준에서 설명하고 있는 신뢰 모델을 분석해보고 실제로 적용하기 위해 추가로 고민해야 할 포인트를 살펴보겠습니다.

신뢰 모델과 신뢰 모델 달성을 위해 필요한 것들

검증가능 크리덴셜의 표준 문서에는 기본적으로 4개의 신뢰 모델을 설명하고 있습니다.

1. 검증자는 발급자가 크리덴셜을 발급하였다는 것을 신뢰한다.

The verifier trusts the issuer to issue the credential that it received.

이 신뢰 모델을 달성하기 위해서 검증가능 크리덴셜에는 암호학적 증명인 프루프(proof)를 포함합니다. 프루프에는 기본적으로 ECDSA나 EdDSA와 같은 전자서명을 사용합니다. 하지만 영지식증명(ZKP)이나 생체 정보 기반 증명과 같은 확장된 프루프를 사용하는 것도 가능합니다.

검증자는 발급자의 DID 문서에 나열된 공개키를 이용하여 크리덴셜에 포함된 프루프를 검증함으로써 크리덴셜의 발급자가 올바르다는 것을 신뢰할 수 있게 됩니다.

하나의 검증가능 크리덴셜에는 여러개의 프루프를 포함하는 것도 가능하며, 프루프를 체인으로 구성할 수도 있습니다. 프루프와 관련해서는 2020년 3월 현재 표준화가 진행 중이며 여기에서 드래프트 버전을 확인할 수 있습니다.

2. 모든 참여자는 “검증가능 데이터 레지스트리”를 신뢰한다.

All entities trust the verifiable data registry to be tamper-evident and to be a correct record of which data is controlled by which entities.

검증가능 데이터 레지스트리에는 다음과 같은 정보들이 저장됩니다.

  • 크리덴셜 발급자나 보유자의 식별 정보 (Identifiers)
  • 크리덴셜 검증을 위한 공개키 정보. 혹은 공개키 정보가 포함된 DID 문서
  • 폐기된 크리덴셜 리스트
  • 검증가능 크리덴셜의 스키마 정보
  • 그 밖에 검증가능 크리덴셜을 사용하는데 필요한 공개 정보들

데이터 레지스트리에 대한 신뢰를 좀더 정확하게 표현하면 다음과 같습니다.

“검증가능 데이터 레지스트리”가 데이터 변조를 검출할 수 있고 어떤 데이터가 누구에 의해 컨트롤되는지 올바로 기록함을 신뢰한다.

이 신뢰모델을 달성하기 위해 가장 적합한 모델은 블록체인과 같은 분산원장기술(DLT)을 데이터 레지스트리로 사용하는 것입니다. 아시다시피 블록체인이 정확히 위와 같은 역할을 수행하기 위해 만들어진 기술이기 때문입니다.

3. 크리덴셜의 보유자와 검증자는 발급자가 “참”인 정보를 발급했음을 신뢰한다.

The holder and verifier trust the issuer to issue true (that is, not false) credentials about the subject, and to revoke them quickly when appropriate.

그리고 보유자와 검증자는 크리덴셜이 도용당한 경우 발급자가 크리덴셜을 곧바로 폐기한다는 것을 신뢰합니다.

현실 세계의 신원 증명 시스템에서도 필요로하는 아주 당연한 이야기입니다. 이 신뢰 모델을 달성하기 위해 표준문서에서 따로 언급하고 있는 기술적인 사항은 없습니다.

현실 세계의 신원 증명 시스템과는 다르게 검증가능 크리덴셜은 이론적으로 누구나 발급할 수 있습니다. 발급자에 대한 평판 모델과 같은 보조적인 장치로 보완할 수 있을 것 같기는 하지만, 아직 그에 대해 논의되고 있는지는 찾을 수 없었습니다.

4. 크리덴셜 보유자는 크리덴셜 저장소가 안전함을 신뢰한다.

The holder trusts the repository to store credentials securely, to not release them to anyone other than the holder, and to not corrupt or lose them while they are in its care.

보통 크리덴셜 저장소는 지갑 프로그램이 담당합니다. 암호화폐 지갑과 마찬가지로 크리덴셜 지갑 또한 보안성이 중요합니다. 크리덴셜 지갑에 저장되거나 관리되는 정보들은 다음과 같은 것이 있을 수 있습니다.

  • 다수의 검증가능 크리덴셜
  • 검증가능 프레젠테이션(Verifiable Presentation) 서명을 위한 개인키

크리덴셜 저장소 신뢰를 달성하기 위한 방법이 표준문서에 따로 언급되진 않았지만, (예를들어 디센트 콜드월렛과 같은) 기존의 암호화폐 지갑에서 사용된 기술들이 크리덴셜 지갑에도 적용될 것 같습니다.

검증가능 크리덴셜 신뢰 모델의 특징

신뢰모델의 측면에서 W3C의 검증가능 크리덴셜이 가진 다른 모델과의 큰 차이점은 참여자들 사이의 결합도를 낮춰 놓았다는 것입니다. 좀더 정확하게는 다음과 같이 정리할 수 있습니다.

  1. 발급자와 검증자는 크리덴셜 저장소, 즉 지갑을 신뢰할 필요가 없고,
  2. 발급자는 검증자가 누구인지 알 필요도 없으며,
  3. 발급자는 검증자를 신뢰할 필요가 없습니다.

각 위험 상황에 따라 검증가능 크리덴셜의 신뢰모델이 어떻게 동작하는지는 W3C의 검증가능 크리덴셜 유즈케이스 문서에 설명되어 있습니다.

신뢰 모델 달성을 위한 질문들

검증 가능 크리덴셜이 제대로 동작하기 위해서는 신뢰 모델을 달성하는 것이 중요합니다. 신뢰 모델을 분석하면서 추가로 고민해야 할 사항은 크게 두 가지로 정리할 수 있을 것 같습니다.

발급자의 평판 문제

위에 언급한 바와 같이 발급자가 사실을 발급했음을 어떻게 신뢰할 수 있을 것인가의 문제가 있습니다. 이 문제는 또한 발급자가 사실과 맞지 않는 크리덴셜을 발급한 경우에 어떻게 대응할 수 있을 것인가의 문제와 연결됩니다. 이는 결국 발급자의 평판 문제와 연결될 것 같습니다.

이미 많은 온라인 플랫폼에서 평판 시스템을 통해 신뢰문제를 해결하고 있습니다. 대표적으로 에어비엔비가 평판 시스템을 잘 구축해 놓았습니다. 혹은 블록체인 오라클 분야에서 연구되고 있는 것처럼 평판 시스템과 보상 모델을 연계시키는 방향도 고민해볼 수 있을 것 같습니다.

발급자 도용의 문제

발급자가 사실과 다른 크리덴셜을 발급하는 경우와 별개로 발급자가 해당 기관(혹은 개인)이 맞는지 어떻게 신뢰할 수 있는가의 문제도 존재합니다. 예를 들어 A 대학교가 학위 증명을 검증가능 크리덴셜로 발급한 경우, 그 크리덴셜이 실제 A 대학교가 발급한 것임을 어떻게 신뢰할 수 있는가의 문제입니다.

PKI(Public Key Infrastructure) 시스템에서는 Root CA의 공개키를 공개하고, 인증서의 화이트리스트를 공유함으로써 인증서의 주체를 확인할 수 있습니다. DID에서도 같은 방식을 적용할 수 있는지는 모르겠지만, 비슷한 문제를 풀기 위한 고민이 필요해보입니다.

디센트 채널 링크

공식 웹사이트 : https://dcentwallet.com/

미디엄 : https://medium.com/dcentwallet

트위터 : https://twitter.com/DCENTwallets

페이스북 : https://www.facebook.com/dcentwallet

유튜브 : https://www.youtube.com/channel/UCKnYqiM3g3iaaAKcRZf-kbA

참고

--

--

Minho, Yoo | D'CENT wallet & WEPIN wallet
IOTRUST : Team Blog

Interested in Blockchain Tech. Developing Cryptocurrency wallet D’CENT and WEPIN. Learning is best way to improve.