https://www.youtube.com/watch?v=b5aaiIaYRNw
2020: Self-Sovereign Identity with Self-Issued OpenID Providerを見ながら書いたメモ
なおIDの知識や英語力の問題でちゃんと正しく理解できている自信はないので以下の内容は部分的もしくは全体的に間違っている可能性がそれなりにある
- 自分が関係する組織と独立して認識される
- 管理主体が自分、という意味でいいと思う
- 自分またはサードパーティが保証する値を選択的に開示できる
- 特定のタイミングでクレームが保証されていることを証明できる
identity is entityに関連するクレームの組み合わせ 稲葉純(人間)、に対する[年齢、名前、性別]みたいな
- Entity:Identity=1:n
- 同じ人間が複数サービスのIDを取得できる、みたいな話?
- IdentityはIdentifierではない
- 後者はEnittyを特定するためのユニークな値
Sovereign is one that exercises supreme authority within a limited sphere
limited sphere is 'self'
他の組織によって与えられるものではない 基本的に自分でコントロールできる (Mydentity=Self-Sovereign Identityに見えるが、いまいち確信がない)
誰かに与えられるが、自分で使える Gmailのアドレスとか、雇用主に与えられたID 現代のメインストリームはこれ
自分のデータだが、自分で使えない 自分が顧客、な場合に、販売主のsalesforceに入ってる自分のデータ、みたいなやつ
第三者によってIDが削除され、インターネットからIdentityが消えるのを避けたい (多分GoogleのIDをつかってどっかのサービスにログインするケースで、GoogleのIDを消されて連携サービスにもログインできなくなるケース、みたいのがでかいと思う。サービスのアカウント、というよりもIdentity、という軸で見るべき)
mydentityは、IDが表すエンティティが秘密鍵を持つ公開鍵基盤で実現される(IDが本当に自分を表現すること、を担保) それとは別に、エンティティ間の関係を構築するために自分のクレームを送信する必要があるケースがあるが、これもSelf-Sovereign Identityのスコープ
自分に関連する情報を、すべて自分でコントロールすることはできない 例えば運転免許証で、どのタイプの乗り物を自分が運転できるか?は、自分では決められず、authority(当局)によって決められる
また、コンテキストによって提供するクレームは最小化したい(不要なデータをサービスに渡したくない)
過去の状況、を証明、提示したいケースが有る 何かあって国が消滅した時に、過去その国の国民であったこと、など あるタイミングでのクレームを検証、もSelf-Sovereign Identityのスコープ
SIOP is self issued openid provider oidcのcoreの7章で定義される http://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html#SelfIssued
OIDCは選択的にクレームを提供できるプロトコル idトークンには認証に必要なクレーム以外も入れられる、みたいな話
OIDCプロバイダーはサードパーティによって提供されるが、自分自身でローカルだったりクラウドに構築して提供することができる 後者をSIOPという
- idの保持者(自分)
- 自分自身を認証する認証機(スマホ)
- このなかでIdpが動いている
- Claims Provider
- 自分に関する保証されたクレームを提供する人
- 運転免許でいう、私が免許をもっていますよ、を保証してくれる人
- RP
- 自分が提供を受けたいサービス
RPとSIOP、Claims providerとSIOP間のやりとりがある
- SIOPがCPに認証リクエストをだす
- CPがClamsの提供可否を聞いてくるので、OKを出す(多分CPとユーザー間の認証はSIOPとは関係なくあって、必要に応じてCPにログインしたりする)(このログインもSIOPの公開鍵基盤でやるかも)
- CPがトークンを発行
- Client(サービス)がSIOPに「誰お前」って聞いてくる
- SIOPがCPにUserinfoリクエストをなげる
- CPはJWT(userinfo)を発行
- SIOPはuserinfoを含んだIDトークンをクライアントに投げる
CPが提供したuserinfoとIDトークンが表現するユーザーが同じ人間であることをどう担保するか、の話だと思うんだけど、よくわからん・・・
CPが発行したJWTはJWSでペイロードに対して署名されてるので、SIOPは勝手にクレームを必要な値に絞り込むことができない(Clientが署名検証できなくなる) CPに対してuserinfoの要求を出すタイミングで必要なclaimsのリストをわたせばよいが、現状その仕様はない(OIDCのuserinfoにclaims渡せた気がするけど、それじゃだめな理由がよくわからん)
ワーキンググループとかの話(雑)