Veri able Credential
and Decentralized Identi ers
鈴木茂哉
慶應義塾大学大学院政策・メディア研究科 特任教授
慶応義塾大学SFC研究所ブロックチェーン・ラボ 副所長（技術統括)
WIDEプロジェクトボードメンバ

fifi@ AXIES2021, 2021/12/16

本日のお題• Decentralized ID (DID), Veri able Credentials について
• DIDの標準化状況• VCのこれから• 課題と関連トピック• ワクチン接種証明書 / SMART Health Cards

2fi© Shigeya Suzuki

fifi

Decentralized Identi er (DID) andVeri able Credentials at W3C

自己主権型で実装可能な分散型ID (Decentralized Identi er) とデジタル証明書 (Veri able Credential)• 自己主権型デジタルアイデンティティ• 誰にも依存せずに自身で制御可能なデジタルアイデンティティ• Decentralized Identi er (DID) / W3C Candidate Recommendation• 属性情報と紐付けられていない「限り無く無色の」アイデンティティ• 分散システム指向であり、自己主権型で実装可能• Veri able Credential / W3C Recommendation• 属性情報を第三者に証明してもらうための【デジタル証明書】仕様• ゼロ知識証明などの技術の組み合わせにより個人情報の「選択的最小開示」を実現できる• 詳細については「大学教育におけるDXシンポジウム」のスライドを参照 [1]
fifi

fifi

[1] https://kbcl.sfc.keio.ac.jp/events/2021̲01̲13-univ-dx/2021̲01̲13-keio-bc-univ-dx-suzuki.pdf© Shigeya Suzuki

4

DID標準化への経緯 [1]• 2014• 2015- W3C WebPayment Groupでの議論が発端 [2]- XDI.org での議論継続 [3],
- 第一回 Rebooting Web Of Trust (RWOT1) [4] でのホワイトペーパ"Decentralized Public Key Infrastructure" [5]• 2016• 2017- RWOT2でのホワイトペーパ: "Requirements for DIDs" [6]- RWOT3でのホワイトペーパ:"DID (Decentralized Identi er) Data Model and Generic Syntax 1.0
Implementerʼs Draft 01" [7]- W3C Credentials Community Group [8] の作業に統合• 2019• 2021- W3C Decentralized Identi ers Working Group による標準化開始 [9]- Decentralized Identi ers (DIDs) v1.0 が Proposed recommendation に [10][1] Decentralized Identi ers (DIDs) v1.0, Appendix D. Acknowledgements (Editorʼs Working Draft), https://w3c.github.io/did-core/#acknowledgements[2] Web Payments Community Group Telecon Minutes 2014-05-07, https://web-payments.org/minutes/2014-05-07/#topic-1[3] XDI.org Registry Working Group Charter, https://docs.google.com/document/d/1EP-KhH60y-nl4xkEzoeSf3DjmjLomfboF4p2umF51FA/edit[4] Rebooting Web of Trust, https://www.weboftrust.info[5] Decentralized Public Key Infrastructure, https://github.com/WebOfTrustInfo/rwot1-sf/blob/master/ nal-documents/dpki.pdf[6] Requirements for DIDs, https://github.com/WebOfTrustInfo/rwot2-id2020/blob/master/ nal-documents/requirements-for-dids.pdf[7] DID (Decentralized Identi er) Data Model and Generic Syntax 1.0 Implementerʼs Draft 01, https://github.com/WebOfTrustInfo/rwot3-sf/blob/master/ nal-documents/did-implementer-draft-10.pdf[8] W3C Credentials Community Group, https://www.w3.org/community/credentials/[9] W3C Decentralized Identi ers Working Group, https://www.w3.org/2019/did-wg/[10] Decentralized Identi ers (DIDs) v1.0, W3C Proposed Recommendation 03 August 2021, https://www.w3.org/TR/2021/PR-did-core-20210803/

5fi

fi

fifi

fifififififi© Shigeya Suzuki

Veri able Credentials - 検証可能な資格証明書• さまざまな「証明書」のデジタル化手段• デジタル署名技術を用いた【発行者】(Issuer)により【対象者】(Subject)が特定の条件を満たしている事を【保持者】(Holder) が示すことができる• W3C で標準化されている [1]• Subject / Issuer / Holder を示すための手段が必要→ デジタルアイデンティティ技術が必須
fifi© Shigeya Suzuki[1] Veri able Credentials Data Model 1.0

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

6

Decentralized Identi er (DIDs) v1.0 (Proposed Recommendation)• 自己主権型の識別子にまつわるデータモデル標準• 周辺技術との組み合わせで自己主権型のアイデンティティを実現できる• 複数の方式(メソッド)で実装され、メソッドにより、ブロックチェーン技術を下支えにするものも、しないものもある

Decentralized Identi er (DIDs) v1.0 (Proposed Recommendation)
https://www.w3.org/TR/2021/PR-did-core-20210803/

fi

2021/9/28 : 3つのメンバ組織から Formal Objectionがあり議論がなされている / WG Charterは3ヶ月延長
fi© Shigeya Suzuki

7

DID Methodと実装状況• DID Speci cation Registry に一覧がある。現在このリストには113個• コンフォーマンステストに提出された実装の数は47個

https://w3c.github.io/did-spec-registries/#did-methods(2021/10/8)

https://w3c.github.io/did-test-suite/

8fi© Shigeya Suzuki

DID document• DID document は DIDで示される主体を表現するのに必要なデータやメカニズ
ムが記載されている。データとしては、公開鍵、特定のブロックチェーン中の位置を示す情報などが例としてあげられる© Shigeya Suzuki

https://did.actor の https://did.actor/alice/ から9DID URL• DIDを起点としたリソースロケータ• DIDを含み、URLのようにパス、クエリ、フラグメント等の要素をもち、DIDで示される対象（リソース）に含まれるであろう要素を示す• DID documentの中では、フラグメントを用い、DID document中の公開鍵を相対的に指定するために使われる (#key-1)© Shigeya Suzuki

10プライバシー重視の仕様策定• DID は単一のユーザが多数用い、自由に使い分けができるようになっている• DID は、DID を伝える対象、組み合わせるVC等に応じて、対象ごとに都度作成 (pair-wise) で使われることが前提となっている• DID および DID document に含まれる情報に、個人識別情報(PII)を含めるだ
けでなく、個人識別に繋がる可能性のある情報が含まれないように、注意深く検討、仕様化（必要に応じた注意書き）などが行われている• DID Core仕様書の9. Security Considerations、 10. Privacy
Considerations は、デザイン上の思想が表現されている© Shigeya Suzuki

11

DID/VC Ecosystem• DID• DID itself• method implementation <-> Veri able Data Registry• resolver implementation• VC• VC itself• Issuer implementation <-> Veri able Data Registry• Holder implementation (= wallet)• Veri er implementation• Transport between entities / Negotiation Protocols• … Operation … Interoperability … etc.
12fififi© Shigeya Suzuki

Formal Objections on
DID Core v1.0 Proposed Recommendation

Key Points in Formal Objection• Interoperability• beyond data model• no standardized specs for methods - did:key or did:web?
• format compatibility
Minutes on meeting on the topic (public)• Decentralization• did:web decentralized ?
• Energy Requirement• … on public blockchain based methods© Shigeya Suzuki[1] https://www.w3.org/2021/09/21-did10-minutes.html

14© Shigeya Suzuki[1] https://www.w3.org/2019/did-wg/faqs/2021-formal-objections/15

fiVeri able Credentials 2.0
and New WG Charter

VC WG 新 Charter [1]• 何をVC 2.0標準に取り込むのか、議論中• 決定済:• 検証可能な証明書データモデルの旧バージョンで見つかった誤りに対処• クレデンシャル、プレゼンテーション、および証明のデータモデル• データモデルのレジストリ• 既存の暗号プリミティブを利用した証明の表現と検証のためのアルゴリズム• 加えて• 多言語化 (鈴木により提案中[2]。取り組むことになる見込み)• 承認されてから2年間の作業[1] Veri able Credentials' WG new charter
https://w3c.github.io/vc-wg-charter/[2] Standardization of Multilingual Support
https://github.com/w3c/vc-wg-charter/issues/19fi© Shigeya Suzuki

17

応用事例: SMART Health Cards

日本でのワクチン接種証明のデジタル化• 厚生労働省「海外渡航用の新型コロナワクチン接種証明書について」[1]• 2021/12/20から、スマホ向けで発行。マイナンバーカードで本人確認• 日本国内用は Smart Health Card [2] で、Veri able Credentialベース• 海外用+国内用は VDS-NC(ICAO)標準 (VCでは無い)+Smart Health Cardfifi

© Shigeya Suzuki[1] https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/vaccine̲certi cate.html[2] https://smarthealth.cards19

確認済みの情報としての健康情報の交換 (Apple, iOS15)• WWDCʼ2021 "Explore Veri able Health Records" セッション [1]• ポイント• 仕様としては SMART Health Cards [2] 標準を用いている• 健康情報を集中的に保持するHealthKitのデータとして保持• 健康情報サービス提供業者(アメリカ、イギリス、カナダのみ）から、あるいは直接のQRコードでの読み込みで取り込める• アプリから、取り込まれた情報の存在を問い合わせ取得できる• アプリからの操作は毎回必ずアプリに情報を渡すか否かをユーザに確認• アイデンティティウォレットとしての機能提供ではない[1] Explore Veri able Health Records https://developer.apple.com/videos/play/wwdc2021/10089/

20[2] https://smarthealth.cardsfifi© Shigeya Suzuki© Shigeya Suzuki

https://developer.apple.com/news/?id=7h3vwlh5

21

https://smarthealth.cards© Shigeya Suzuki

https://spec.smarthealth.cards

22

[1]
SMART Health Cardの仕様概要• JSON Web Token[2] 形式の Veri able Credential[3] として実装[4] のレコードとして表現
証明対象(credentialSubject)
はHL7•• COVID-19 ワクチンの場合は Patient レコードとワクチン関連レコードをHL7 FHIR
Bundleで指示• 証明書発行者の指示はURL ("iss") → 例: https://smarthealth.cards/examples/issuer[5]で指示
公開鍵は発行者URL指示先にある
well-known
URLのJSONWebKeySet•→ 例: https://smarthealth.cards/examples/issuer/.well-known/jwks.json• JSON Web Key Set に X.509証明書チェインを同梱できる• SMART Health Card データ生成手順:• 圧縮 ( minify + zip de ate )• JWSヘッダ追加[6] で署名JSONWebSignature•• 数値エンコード → QR Code (複数可）[2] RFC7519 JSON Web Token (JWT) https://www.rfc-editor.org/rfc/rfc7519[3] Veri able Credentials Data Model 1.0 https://www.w3.org/TR/2019/REC-vc-data-model-20191119/[4] HL7 Standards https://www.hl7.org[5] JSON Web Key (JWK) https://www.rfc-editor.org/rfc/rfc7517[6] JSON Web Signature (JWS) https://www.rfc-editor.org/rfc/rfc7515

23fifl© Shigeya Suzukifi[1] SMART Health Card https://smarthealth.cards

デモ QRコード

Jupyter Notebook Walkthrough: https://github.com/dvci/health-cards-walkthrough/blob/main/SMART%20Health%20Cards.ipynb
から借用© Shigeya Suzuki

24

構造の概略{"iss": "<<Issuer URL>>","nbf": 1591037940, // nbf = Not Before - Time Stamp"vc": {
"type": ["https://smarthealth.cards#health-card","<<Additional Types>>",],"credentialSubject": {"fhirVersion": "<<FHIR Version, e.g. '4.0.1'>>","fhirBundle":{"resourceType": "Bundle","type": "collection","entry": ["<<FHIR Resource>>", "<<FHIR Resource>>", "..."]}}}}
Jupyter Notebook Walkthrough: https://github.com/dvci/health-cards-walkthrough/blob/main/SMART%20Health%20Cards.ipynb
Demo Portal: https://demo-portals.smarthealth.cards© Shigeya Suzuki

25

Example Payload with FHIR Bundle{"iss": "https://smarthealth.cards/examples/issuer","nbf": 1620992383.218,"vc": {"@context": ["https://www.w3.org/2018/credentials/v1"],"type": ["VerifiableCredential","https://smarthealth.cards#health-card","https://smarthealth.cards#immunization","https://smarthealth.cards#covid19"],"credentialSubject": {"fhirVersion": "4.0.1","fhirBundle": {"resourceType": "Bundle","type": "collection","entry": [{"fullUrl": "resource:0","resource": {"resourceType": "Patient","name": [{"family": "Anyperson","given": ["John","B."]}],"birthDate": "1951-01-20"}
},

{},

{

"fullUrl": "resource:1","resource": {"resourceType": "Immunization","status": "completed","vaccineCode": {"coding": [{"system": "http://hl7.org/fhir/sid/cvx","code": "207"}]},"patient": {"reference": "resource:0"},"occurrenceDateTime": "2021-01-01","performer": [{"actor": {"display": "ABC General Hospital"}}],"lotNumber": "0000001"}"fullUrl": "resource:2","resource": {"resourceType": "Immunization","status": "completed","vaccineCode": {"coding": [{"system": "http://hl7.org/fhir/sid/cvx","code": "207"}]},"patient": {"reference": "resource:0"},"occurrenceDateTime": "2021-01-29","performer": [{"actor": {"display": "ABC General Hospital"}}],"lotNumber": "0000007"}}]}

Header and Patient Information}

First Vaccination Record}}

Second Vaccination Record© Shigeya Suzuki

26

Chain of Trust of SMART Health Card
JSON File: example.smart-health-card
JWS - Header

Web Server: https://smarthealth.cards/
JWKS file: in URL: https://smarthealth.cards/examples/issuer/.well-known/jwks.json{{"warning": "You should be using spec.smarthealth.cards. <snip>","keys": [{"kty": "EC","kid": "3Kfdg-XwP-7gXyywtUfUADwBumDOPKMQx-iELL11W9s","use": "sig","alg": "ES256","crv": "P-256","x": "11XvRWy1I2S0EyJlyf_bWfw_TQ5CJJNLw78bHXNxcgw","y": "eZXwxvO1hvCY0KucrPfKo7yAyMT6Ajc3N7OkAB6VYy8"},{"kty": "EC","kid": "OBztBGRexV0me4ycPTBp-lAMWQmU1_OY1q8m4awW_34","use": "sig","alg": "ES256","x5c": ["MIICBjCCAYygAwIBAgIUGgXqplmagmOhhHUnRDUnQhTKaZUwCgYIKoZIz<snip>","MIICBjCCAWigAwIBAgIUWgu3m7SToFGJKDerCOQcMK5AlbUwCgYIKoZIz<snip>","MIICMTCCAZOgAwIBAgIUB+niLVaidI3U3xO2i7niRkithEQwCgYIKoZIz<snip>",],"crv": "P-256","x": "f6GJiCnbnBaIm2jDaH_3UPC7Yl-x5yBAi5ddZ8v3Y_w","y": "jKcqirFw4G9v9gWTDCqAjvcCRQpbIK76bWqKBtseFzQ"}]

alg: 'ES256',
zip: 'DEF',
kid: 'OBztBGRexV0me4ycPTBp-lAMWQmU1_OY1q8m4awW_34'}

JWS - Payload{"iss": "https://smarthealth.cards/examples/issuer","nbf": 1620992383.218,"vc": {"@context": ["https://www.w3.org/2018/credentials/v1"],"type": ["VerifiableCredential","https://smarthealth.cards#health-card","https://smarthealth.cards#immunization","https://smarthealth.cards#covid19"],"credentialSubject": {"fhirVersion": "4.0.1","fhirBundle": {"resourceType": "Bundle","type": "collection","entry": [// ----- Snip -----]}}}

X.509 CA Certificates for Issuer’s Signing Key

Issuer’s Signing Key}

Signing Key
Certificate

CACertificate

root CACertificate

CN=SMART Health Card
Example Issuer

CN=SMART Health Card
Example CA

CN=SMART Health Card
Example Root CA}

Verifying Device
JWS - Signature
RH5TVWBaYrPnbtb2LXU9gpC1WRra0gQHjZxSE_htNScq8NdIdgoUt5C1kvdiXbYq
D79W87si9x66fFCwmCmgw© Shigeya Suzuki

Trust Store
root CA
Certificate

Note: Part of this example is modified, and not from a real execution results due to the experimental environment27

DID/VC応用における課題

DID/VCの課題 (1)• 対象領域（〜業界）毎の国際的に合意されたスキーマの作成は困難• 玉虫色の仕様 → 複数の実装が存在するシステムの宿命• データモデル仕様 / Representation と Abstract Data Model• JSON vs JSON-LD & @context / MIME type (ふたつの ̀+̀)[1] vs LD-Proofs[2])
署名方式(JSONWebTokens•• Dereferencerの仕様が心配（複雑・挙動が十分に仕様化されていない）[1] Linked Data Proofs 1.0 https://w3c-ccg.github.io/ld-proofs/© Shigeya Suzuki[2] The Security Vocabulary https://w3c-ccg.github.io/security-vocab/

29

DID/VCの課題 (2)• 既存トラストフレームワーク/ミドルウェアとの連携あるいは構築• DIDあるいはVCのインターオペラビリティ• DIDの置き換え、method レベルでの置き換え• VC提示・交換のプロトコル• クレデンシャルウォレット / アイデンティティウォレット• セキュリティ• (古典的な公開鍵暗号運用の問題)• (ライブラリ、ツールチェインなどのトレーサビリティ問題)© Shigeya Suzuki

30ラップアップ• Decentralized ID (DID), Veri able Credentials について
• DIDの標準化状況• VCのこれから• 課題と関連トピック• ワクチン接種証明書 / SMART Health Cards

31fi© Shigeya Suzuki