Amazon Web Services ブログ

Decentralized Identityのサンプル実装

Decentralized Identityとは

分散型デジタルアイデンティティ(Decentralized Identity : DID)はW3Cで標準化が進められており、2022年7月19日にv1.0が公開されました。DIDは中央集権的なレジストリを必要とせず、これを利用する個人が情報をコントロールする仕組みを備えています。従来であればユーザーのID, 名前, メールアドレスなどはそれぞれの企業で管理されています。そこに「何が」登録されており、「誰が」アクセス可能なのかはその企業がアクセス管理をしています。

DIDはこうしたアイデンティティ情報をユーザー自身で管理するようにしたものであり、いわゆるSelf-Sovereign Identity(自己主権型アイデンティティ, SSI)の一種となります。

Verifiable Credential(VC)は内容の検証がオンラインで可能なデジタルな証明書です。DIDで示されたアイデンティティに対して、属性情報を紐づける役割を担っています。VCは発行者(Issuer)によって発行された証明書であり、対象者(Holder)がその資格情報を保有していることを表しています。HolderがVCを検証者(Verifier)にオンラインで提示したときに、VerifierはIssuerが発行した証明書であることをオンラインで検証可能な仕組みを備えています。

DIDの概要図

サンプル実装の内容

DIDを使用してVCを管理するサンプルコードを実装し、aws-samplesで公開しました。
https://github.com/aws-samples/decentralized-identity-sample

このコードには以下の機能が含まれています。

  • IssuerがVCを発行する機能
  • HolderがVCを自分のAWSアカウントのAmazon Simple Storage Service (Amazon S3) に保管する機能
  • HolderがVCを組み合わせてDIDドキュメントを作成する機能
  • HolderがVerifierに対してVCのアクセス権を与える機能
  • VerifierがHolderのVCにアクセスする機能

アーキテクチャ

Architecture

サンプル実装であるため、全て同一のAWSアカウント内にデプロイするようになっていますが、それぞれのサービスは独立しています。

DIDドキュメントはEthereumの標準規格であるERC-1056を採用しています。ブロックチェーン上にDIDの構成情報が記録されますが、属性情報の実態であるVCはHolderのAmazon Simple Storage Service(Amazon S3)に保存されており、有効なJWT(JSON Web Token)により承認されないとアクセスできない状態となっています。ブロックチェーンを参照するだけはVCの詳細はわかりません。

HolderはVerifierのブロックチェーンのウォレットのアドレスに対してアクセスを許可するようDIDドキュメントを編集します。これによって誰がこのDIDドキュメントに対してのアクセス権を保有しているかがブロックチェーン上に記録されます。VerifierはHolderのDIDドキュメントの有効なJWTを発行することがき、JWTが有効であることはブロックチェーンの記録と照らし合わせることで検証ができるようになります。

HolderのAmazon API GatewayとAWS LambdaによってVerifierからの参照要求の検証が可能となり、有効なJWTを使用したアクセスであればVCのダウンロードを許可するAmazon S3の署名付きURLをVerifierに返すことでVCにアクセスすることができるようになります。

画面イメージ

[Issuerの画面]

issuer_webapp

[Holderの画面]

holder_webapp

[Verifierの画面]

verifier_webapp

最後に

この投稿では、decentralized-identity-sampleのサンプルコードを使用することでDecentralized IdentityとVerifiable Credentialsの仕組みをAWSで簡単に作れるようになりました。DIDは今後盛り上がりを見せる技術テーマの一つだと考えています。DIDを活用したプロジェクトのご相談がありましたら、ぜひお問い合わせいただければと思います。