3月8日にX(旧Twitter)でお知らせしましたが、EU Digital Identity Wallet の Reference Implementation が公開されました。
GitHubのアドレスは、こちらです。曰く:
EUDIウォレットリファレンス実装は、アーキテクチャリファレンスフレームワーク(ARF)に基づいて構築され、欧州連合全体の共通規格に基づくデジタル識別、認証、電子署名のための堅牢で相互運用可能なプラットフォームを紹介することを目的としています。
EUDIウォレット・リファレンス実装は、ビジネスにとらわれない再利用可能なコンポーネントで構成されるモジュラー・アーキテクチャーに基づいており、段階的に進化させ、複数のプロジェクトで再利用することができる。具体的には、EUDI Wallet Reference Implementationの一部として、以下のコンポーネントが提供されます:(出所) Kanellopoulos, V., (2024), EUDI Wallet Reference Implementation, https://github.com/eu-digital-identity-wallet/.github/blob/main/profile/reference-implementation.md (2024-03-11取得)
- フレームワークに必要とされるライブラリとその他のソフトウェアコンポーネント
- 発行, 近接およびリモートフローのEUDI Walletモバイルネイティブデモアプリ
- Verifier のモバイルネイティブアプリおよびWebサービス(近接およびリモートフロー用)
- Issuer アプリとWebサービス
上記のページを一つづつたどって行くのはけっこう大変だなと思っていたら、IdM実験室の富士榮さんがモジュール一覧をまとめてくださっていました。
公開されているのは、以下のモジュール群です。
(出所)富士榮, (2024), 「EUのDigital Identity Walletのリファレンス実装が公開されています」, https://idmlab.eidentity.jp/2024/03/eudigital-identity-wallet.html
- Wallet Core(Android) and Wallet Kit(iOS) Coordinator Libraries
- Wallet Core(Android)
- Wallet Kit(iOS)
- Proximity Sharing iOS Libraries
- mDoc Security(iOS)
- mDoc Data Transfer(iOS)
- mDoc Data Model(iOS)
- Proximity Sharing Android Libraries
- mDoc Data Transfer(Android)
- Remote Presentation iOS Libraries
- Presentation Exchange(iOS)
- SIOPv2 and OpenID4VP protocols(iOS)
- SD-JWT(iOS)
- Remote Presentation Android Libraries
- Presentation Exchange(Android)
- SIOPv2 and OpenID4VP protocols(Android)
- SD-JWT(Android)
- Issuing iOS Libraries
- OpenId4VCI(iOS)
- Issuing Android Libraries
- OpenId4VCI(Android)
- Wallet Data Storage and Cryptographic Management iOS Libraries
- mDoc Document Storage (iOS)
- Wallet Data Storage and Cryptographic Management Android Libraries
- mDoc Document Storage (Android)
- Wallet UI App and demo App for Android and iOS
- UI / Demo App (Android)
- UI / Demo App (iOS)
- Verifier Apps and Services
- Web Verifier
- Restful API (web-services)
- Issuing Apps and Services
- OpenId4VCI issuer (Python)
- OpenId4VCI issuer (Kotlin)
デモビデオ
基本、これらを使って各実装者がユーザインターフェース(UI)など含めて構築するのが前提ですが、リファレンス実装としてのUIも提供されており、このページからダウンロードしてインストールして試すこともできます。ただ、OSのセキュリティを弱めたりしなければならないのでハードルが高いですね。そのような方のために、動作を画面収録したビデオも提供されています(Android版のみ)。以下では、そのビデオの内容を説明します。(以下、スクショの出所はすべて「https://github.com/eu-digital-identity-wallet/eudi-app-android-wallet-ui?tab=readme-ov-file」です)
発行
発行のデモでは国民身分証明書(National Identity Document, National ID)の発行と運転免許証の発行の模様を見せてくれます。
デモ画面では、まずアプリの立ち上げスプラッシュスクリーンと思しきEU旗の画面が出、暫く待つと、ウォレットへのログイン画面と思しき6桁PINの入力画面になります。
これでユーザ認証がされると、アイデンティティ文書(Identity Document, ID)の取得画面になります。ここでは、国民身分証明書の取得ができるようになっています。運転免許証はこの段階ではできないようです。
ここで、National IDを選択すると画面が遷移して国の選択画面になります。デモではEUを選択していますがこれはあくまでデモ用途で、実際の場合には個別の国を選択するのだと思います。
「Submit」(提出)ボタンを押すと、再び画面が遷移し、当該プロバイダーへの個人情報の入力画面になります。多分ここで当該個人を識別するということなのでしょう。氏名と生年月日の入力を求められます。実際の発行にあたってはここで何らかの身元確認・当人認証が行われると思われます。
入力して送信すると、国民身分証明書が表示されます。
ここで「CONTINUE」(つづける)を押すと、この身分証明書(ID)がウォレットに格納されます。
ここで「ADD DOC」(文書を追加)を押すと、今度は運転免許証(Driving License)を足すことができるようになっています。
早速追加してみます。すると、今度は運転免許証発行者に画面が遷移します。先ほどと同じようにして個人情報を入力するとモバイル運転免許証が発行されてウォレットへ格納されます。
デモではこの後、証明書の削除もやってみせてくれます。
提示
提示においては、OpenID for Verifiable Presentation (OID4VP)+CBORでの選択提示、OID4VP+CBOR, OID4VP Customの3種類の提示フローがサポートされているようです。
フローを選ぶと、まずVerifier画面になって、どの属性をユーザに要求するかを決めることができます。
そして、NEXTをクリックすると、ぱっとユーザの画面に切り替わり、認可を求めるための画面に切り替わります。多分、この画面以降をユーザが操作するという前提だと思いますが、この辺、画面を見ているだけだと大変わかりにくい。
ここで認可する(AUTHORIZE)ボタンを押すと、画面が切り替わり6桁のPINを入れる「ログイン画面」になります。これは、ユーザのスマホの上にあるWalletにログインするということだと思います。
ログインすると一瞬Welcomeback Jan と表示され、
Verifierが次のデータを求めていますと表示されます。ここで、「なぜあなたのデータを求めるのか 8Why we need your data?)」という多分リンクである太文字部分があるので、これをクリックすると理由も見ることができるのだと思います。
ここで少し待つと、より詳細に、誰が求めてきているのか、どのデータを求めてきているのかが出てきます。
Verification Dataのセクションを開くと、これらの属性データを証明するための付随情報として何が送られるのかが出てきます。これらはデータに対するメタデータなわけですが、この情報から国籍だとかどこに住んでいるのかなどがわかってしまう可能性があります。そのことを考えると、ユーザにはもう少しわかりやすく出してあげることが求められるのではないかと思います。
誰が求めてきているかということに関しては、信頼できる受取者(Relying Party, RP)からの要求であるかどうかということを確認することもできるようになっているようです。
OKを押してTrusted relying partyの画面を閉じて前の画面に戻り、そこで「SHARE」を押すともう一度PINを求められ、情報が提供されます。
近接提示の場合
近接提示とは、NFCでタップしたりQRコードを読み取ったりして、ネットワークを介さずにローカルでデータを引き渡すユースケースです。
デモでは左側がVerifier画面、右側が提示するユーザ/Holder/Presenter画面になります。
まず、ユーザがウォレットにPINを入れてログインします。
ログインが成功すると、文書選択画面になります。
ここで、「SHOW QR or TAP」ボタンを押すとQRコードが表示されます。
次は、Verifier側での作業です。「Scan QR code」ボタンを押し、カメラを起動し、QRコードを読みます。
ここから先の流れは先程までのリモート提示の場合とほぼ同様です。
すべてうまく行くと、提供された属性が左側のVerifier画面に表示されます。
注意点〜ARFの状況について
EUデジタルアイデンティティウォレットのリファレンス実装を紹介しましたが、注意点が一つあります。リファレンス実装のページに「EUDIウォレットリファレンス実装は、アーキテクチャリファレンスフレームワーク(ARF)に基づいて構築され、欧州連合全体の共通規格に基づくデジタル識別、認証、電子署名のための堅牢で相互運用可能なプラットフォームを紹介する」とあるわけですが、このARFがまだ決まってないんですね。リンク先には3月7日段階のものが ver.1.3としてアップロードされていますが、広くコメントを募るために公開されたもので、eIDAS expert group の承認が得られなかったバージョンとのことです。Ver.1.2は3月1日に公開されており、かなりペースが早く変更が加えられていることがわかります。ですので、まだこれから変更がある可能性は見越しておいた方がよさそうです。
@_Nat Zoneをもっと見る
購読すると最新の投稿がメールで送信されます。