DID(Decentralized Identifiers:非中央集権型識別子)、Verifiable Claims(暗号技術で証明可能な個人・法人情報)とは?

Alex Kodate
10 min readMar 8, 2019

--

ブロックチェーン証明書専門家のアレックスです。

今回はDIDについて説明します。

DIDとは、Decentralized Identifiersの略で、分かりやすく表現すると「非中央集権型のデジタルID」です。

DIDは、HTML、XML、CSS、DOM等の規格を提唱した非営利・標準化団体W3C(World Wide Web Consortium)が開発しています。

DIDの基本的機能を説明する前に、DIDとVerifiable Claimsが生まれた経緯を説明します。

背景説明

現在、自分が自分であることを証明するためには、多大なコストを必要とします。例えば、日本では転職時に卒業証明書を必要としますが、それを発行するための戸籍抄本を求められたり、お酒を買う時に身分証明書の提示を求められることもあり、非常に面倒です。

さてIT分野の急成長に伴い、各種オンラインサービスの本人確認やデジタルな契約における署名などを行うケースが増えてきました。

しかし、それらの個人情報はFAANGに代表される巨大IT企業によって中央集権的に管理されており、ハッキングやデータ改ざん、不正流出のリスクを常に孕んでいますし、各ID情報と各サービスの互換性は不十分です。

そこでW3CはSSI(自己主権型アイデンティティ)という、「自分が自分の個人情報を管理する」というデジタル個人情報のポリシーを提唱し、DID(Decentralized Identifiers:非中央集権型識別子)と、Verifiable Claims(暗号技術で証明可能な個人・法人情報)を開発しました。

これらは、暗号技術を駆使し、「第三者機関の認証なしに、自分が自分であることを証明」できる画期的なID、そして個人情報の電子形式です。

SSIの詳細については、「SSI(自己主権型アイデンティティ)のメリットとは?」が参考になるかと思いますので、合わせてお読みください。

DIDの基本的な機能と構造について

まず、ユーザーは様々な用途、様々なタイミングでDIDを作ることができます。

例として、イーサリアムネットワークで実際使われているDIDのサンプルを用意しました。

既存のイーサリアムのアドレスをそのままDIDとして使用できます。

did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a

そしてDIDには必ず「DID Document」というものが紐づけられています。

DIDは、JSON-LD(リンクドデータが入っているJSONファイル)に書かれたID情報(DID Document)にアクセスするための形式です。

DIDはURIの一種で、URLの兄妹のような存在と考えれば理解しやすいと思います。

DIDのリンク先にあるDID Documentは以下のようなものです:

{
"@context": "https://w3id.org/did/v1",
"id": "did:example:123456789abcdefghi",
"authentication": [{
// this key can be used to authenticate as did:...fghi
"id": "did:example:123456789abcdefghi#keys-1",
"type": "RsaVerificationKey2018",
"controller": "did:example:123456789abcdefghi",
"publicKeyPem": "-----BEGIN PUBLIC KEY...END PUBLIC KEY-----\r\n"
}],
"service": [{
"type": "ExampleService",
"serviceEndpoint": "https://example.com/endpoint/8377464"
}]
}

(W3Cの「Decentralized Identifiers (DIDs) v0.11」より)

DID Documentをブロックチェーンに載せることで:

・情報が改ざんできない
・ハッシュを書き込んだチェーンが消滅しないかぎり永久に残る
・一つの組織に依存せずに使用できる

などのメリットがあります。

驚くべきことに、DID Documentにはユーザー名、住所や電話番号などの個人情報が全く入っていません。

そう、DIDは単体ではあまり役に立ちません。個人情報はVerifiable Claimに入っているからです。

Verifiable Claimsについて

次に、Verifiable Claims(W3Cが開発している規格。2018年前半、「Verifiable Credentials」に改名)について説明します。

{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
],
"id": "http://example.com/credentials/4643",
"type": ["VerifiableCredential"],
"issuer": "https://example.com/issuers/14",
"issuanceDate": "2018-02-24T05:28:04Z",
"credentialSubject": {
"id": "did:example:abcdef1234567",
"name": "Jane Doe"
},
"proof": { ... }
}

(W3Cの「Verifiable Credentials Data Model 1.0」より)

Verifiable Claimとは、個人情報における特定の事実を証明するためのデータ形式です。また、副次的な使用法として、法人の認可情報などの証明にも応用可能です。例えば、Verifiable ClaimはとあるDIDの持ち主(Alice)が成人であることを証明できます。

Verifiable Claimは暗号技術を使用しているため改ざんができず、発行者のアイデンティティが証明されているので、Aliceが持っているVerifiable Claimでお酒を買ったりすることができます。

しかし信頼性が担保されていても、Verifiable Claimに「成人である」以外の個人情報が入っていないにも関わらず、販売店側はどうやってそれがAliceのVerifiable Claimだと分かるのでしょうか?

ここでもまた暗号技術が活用されます:
Aliceは、DIDの公開鍵で暗号化されたメッセージをそのDIDの秘密鍵で復号化します。その秘密鍵を持っているのはそのDIDの持ち主だけなので、DIDの持ち主がAliceであることが証明されます。

よって、Verifiable Claimの内容はAliceのことを指しています。

DIDとVerifiable Credentialによって誕生されるSSI型のインターネット(Web of Trust)のエコシステム
https://www.w3.org/TR/verifiable-claims-data-model/を筆者が日本語に訳したものです)

Verifiable Credentialとは?

Verifiable Claimsは、検証可能な個人・法人情報の一単位です(例:個人名や年齢など)。

そして、このVerifiable Claimsを複数含んだ個人・法人情報のセットが”Verifiable Credential”です。(個人名、年齢、生年月日等、複数の情報が束になったもの)Verifiable Credentialについては、Blockcertsとの関連も含めて後述します。

DIDやVerifiable Claimsのもう一つの画期的なメリットとは?

DIDとVerifiable Claimsの組み合わせは、もう一つの斬新なメリットをもたらします。個人情報(法人の情報も可)をデジタルに、しかも「第三者機関の承認なしに、自分が自分であることを証明できる」ようになるDIDの技術によって、トラディショナルな本人確認証(免許証、パスポート、学生証など、第三者機関が発行したカード)では実現不可能な特殊な認証ができます。

例えば、

「名前は明かさず、成人であることだけを証明してビールを買う(実年齢は分からない)」

「番地までは答えず、東京都千代田区在住であることだけを証明する(名前、年齢は分からない)」

「大学名は伏せて大卒であることだけを証明する(名前も年齢も住所も分からない)」

というように、必要な個人情報だけを提示することができます。

いかがでしょうか?「自分が何者かも名乗らず、自分の個人情報の一部だけを提示し、かつそれが正しい情報であることをブロックチェーンを使って瞬時に証明できる。そしてそのデータは分散化されていて特定の企業や機関に依存しない」というのがDIDの特徴です。

管理する中央集権的な機関がなく、かつデータの正当性が証明できるため、原理的には、GoogleのアカウントもApple、TSUTAYAの会員証もたった一つのDIDに統合できてしまうということになります。

プライバシーを守るためにそれぞれの取引でそれぞれのDIDを使うことも可能です!(DIDをPPID:Pairwise Pseudonymous Identifierとして使います)

Blockcertsは今後Verifiable Credentialの一種になります

筆者はブロックチェーン証明書の世界標準規格であるBlockcertsに準拠したブロックチェーン学位証明書の発行システムを開発し、アジア、特に日本で展開したいと考えています。

このBlockcertsは、複数の検証可能な情報(生徒名、学校名、学部名、学籍番号、卒業日等)を含むため、今後は先程説明したVerifiable Credentialとして扱えるようになります。

これが実現した場合、先程の例で示したように「大学名は伏せて大卒であることだけを証明する(名前も年齢も住所も分からない)」というような応用が可能になり、Blockcerts準拠の証明書は他のプラットフォームとの互換性と拡張性に優れたものとなります。

Blockcertsについての詳細は、「Blockcerts(ブロックサーツ)の開発経緯とメリットについて」という関連記事をご覧ください。

お問い合わせ:alex.kodate@gmail.com

--

--

Alex Kodate

ブロックチェーン証明書システム開発の専門家。日英バイリンガル。