IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヤフー株式会社の特許一覧

特開2024-60266情報処理装置、情報処理方法及び情報処理プログラム
<>
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図1
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図2
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図3
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図4
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図5
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図6
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図7
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図8
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図9
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図10
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図11
  • 特開-情報処理装置、情報処理方法及び情報処理プログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024060266
(43)【公開日】2024-05-02
(54)【発明の名称】情報処理装置、情報処理方法及び情報処理プログラム
(51)【国際特許分類】
   H04L 9/08 20060101AFI20240424BHJP
   G06F 21/33 20130101ALI20240424BHJP
【FI】
H04L9/08 B
G06F21/33
H04L9/08 F
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022167536
(22)【出願日】2022-10-19
(71)【出願人】
【識別番号】500257300
【氏名又は名称】LINEヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】五味 秀仁
(72)【発明者】
【氏名】大神 渉
(57)【要約】
【課題】認証の効率をさらに向上させる。
【解決手段】本願に係る情報処理装置は、証明書の発行者の情報処理装であって、ユーザに関する検証可能証明書を発行する証明書発行部と、検証可能証明書をユーザの端末装置に提供する証明書提供部と、検証可能証明書を更新する機能を有するカセットを作成するカセット作成部と、カセットをユーザの端末装置に提供するカセット提供部と、を備えることを特徴とする。
【選択図】図3
【特許請求の範囲】
【請求項1】
証明書の発行者の情報処理装であって、
ユーザに関する検証可能証明書を発行する証明書発行部と、
前記検証可能証明書を前記ユーザの端末装置に提供する証明書提供部と、
前記検証可能証明書を更新する機能を有するカセットを作成するカセット作成部と、
前記カセットを前記ユーザの端末装置に提供するカセット提供部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記ユーザの端末装置側で前記カセットが前記検証可能証明書を更新した際の署名に用いるカセット検証用秘密鍵と、前記カセットによる署名を検証するためのカセット検証用公開鍵との鍵ペアを作成するカセット用鍵作成部と、
前記カセット検証用公開鍵を公開用のリポジトリに登録するカセット用鍵登録部と、
をさらに備え、
前記カセット提供部は、前記カセットとともに前記カセット検証用秘密鍵を前記ユーザの端末装置に提供する
をさらに備えることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記検証可能証明書の署名に用いるVC検証用秘密鍵と、前記検証可能証明書の署名を検証するためのVC検証用公開鍵との鍵ペアを作成する証明書用鍵作成部と、
前記VC検証用秘密鍵を用いて前記検証可能証明書に署名する証明書署名部と、
前記VC検証用秘密鍵を内部に保管する証明書用鍵管理部と、
前記VC検証用公開鍵を公開用のリポジトリに登録する証明書用鍵登録部と、
をさらに備えることを特徴とする請求項1に記載の情報処理装置。
【請求項4】
証明書の保有者の情報処理装置であって、
証明書の発行者が発行したユーザに関する検証可能証明書を受信する証明書受信部と、
前記証明書の発行者が作成した前記検証可能証明書を更新する機能を有するカセットを受信するカセット受信部と、
前記カセットの機能により前記検証可能証明書を更新する証明書更新部と、
更新された前記検証可能証明書を証明書の検証者に送信して提示する証明書提示部と、
を備えることを特徴とする情報処理装置。
【請求項5】
前記カセット受信部は、前記証明書の発行者から、前記カセットとともに、前記カセットの機能による前記検証可能証明書の更新時の署名に用いられるカセット検証用秘密鍵を受信し、
前記証明書更新部は、前記カセットの機能により前記検証可能証明書を更新し、更新された前記検証可能証明書に前記カセット検証用秘密鍵を用いて署名する
ことを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記カセットの機能により、複数の前記検証可能証明書を組み合わせて1つの提示証明書を作成する提示証明書作成部をさらに備え、
前記提示証明書作成部は、前記カセットの機能により前記検証可能証明書が更新された際、前記提示証明書に、暗号化された更新前の前記検証可能証明書と、更新後の前記検証可能証明書とを添付する
ことを特徴とする請求項5に記載の情報処理装置。
【請求項7】
ユーザ本人が作成したことを認証する本人証明用秘密鍵と、対応する本人証明用公開鍵との鍵ペアを作成する本人証明用鍵作成部と、
前記本人証明用秘密鍵を用いて前記提示証明書に署名する提示証明書署名部と、
前記本人証明用秘密鍵を内部に保管する本人証明用鍵管理部と、
前記本人証明用公開鍵を公開する本人証明用鍵公開部と、
をさらに備えることを特徴とする請求項6に記載の情報処理装置。
【請求項8】
証明書の発行者の情報処理装置が実行する情報処理方法であって、
ユーザに関する検証可能証明書を発行する証明書発行工程と、
前記検証可能証明書を前記ユーザの端末装置に提供する証明書提供工程と、
前記検証可能証明書を更新する機能を有するカセットを作成するカセット作成工程と、
前記カセットを前記ユーザの端末装置に提供するカセット提供工程と、
を含むことを特徴とする情報処理方法。
【請求項9】
ユーザに関する検証可能証明書を発行する証明書発行手順と、
前記検証可能証明書を前記ユーザの端末装置に提供する証明書提供手順と、
前記検証可能証明書を更新する機能を有するカセットを作成するカセット作成手順と、
前記カセットを前記ユーザの端末装置に提供するカセット提供手順と、
を証明書の発行者の情報処理装置に実行させることを特徴とする情報処理プログラム。
【請求項10】
証明書の保有者の情報処理装置が実行する情報処理方法であって、
証明書の発行者が発行したユーザに関する検証可能証明書を受信する証明書受信工程と、
前記証明書の発行者が作成した前記検証可能証明書を更新する機能を有するカセットを受信するカセット受信工程と、
前記カセットの機能により前記検証可能証明書を更新する証明書更新工程と、
更新された前記検証可能証明書を証明書の検証者に送信して提示する証明書送信工程と、
を含むことを特徴とする情報処理方法。
【請求項11】
証明書の発行者が発行したユーザに関する検証可能証明書を受信する証明書受信手順と、
前記証明書の発行者が作成した前記検証可能証明書を更新する機能を有するカセットを受信するカセット受信手順と、
前記カセットの機能により前記検証可能証明書を更新する証明書更新手順と、
更新された前記検証可能証明書を証明書の検証者に送信して提示する証明書送信手順と、
を証明書の保有者の情報処理装置に実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【0002】
FIDO(Fast Identity Online)に関する技術であって、認証器を用いる技術が開示されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2020-141331号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記の従来技術では、認証時の本人確認を含め、FIDO認証に関してまだまだ改善の余地がある。
【0005】
本願は、上記に鑑みてなされたものであって、認証の効率をさらに向上させることを目的とする。
【課題を解決するための手段】
【0006】
本願に係る情報処理装置は、証明書の発行者の情報処理装であって、ユーザに関する検証可能証明書を発行する証明書発行部と、前記検証可能証明書を前記ユーザの端末装置に提供する証明書提供部と、前記検証可能証明書を更新する機能を有するカセットを作成するカセット作成部と、前記カセットを前記ユーザの端末装置に提供するカセット提供部と、を備えることを特徴とする。
【発明の効果】
【0007】
実施形態の一態様によれば、認証の効率をさらに向上させることができる。
【図面の簡単な説明】
【0008】
図1図1は、FIDO認証の概要を示す説明図である。
図2図2は、検証可能証明書(VC)の流通方式の構想の概要を示す説明図である。
図3図3は、実施形態に係る証明書流通装置の概要を示す説明図である。
図4図4は、実施形態に係る情報処理システムの構成例を示す図である。
図5図5は、実施形態に係る端末装置の構成例を示す図である。
図6図6は、実施形態に係るサーバ装置の構成例を示す図である。
図7図7は、利用者情報データベースの一例を示す図である。
図8図8は、履歴情報データベースの一例を示す図である。
図9図9は、鍵情報データベースの一例を示す図である。
図10図10は、カセット情報データベースの一例を示す図である。
図11図11は、実施形態に係る処理手順を示すシーケンス図である。
図12図12は、ハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0009】
以下に、本願に係る情報処理装置、情報処理方法及び情報処理プログラムを実施するための形態(以下、「実施形態」と記載する)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。また、以下の実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0010】
〔1.情報処理方法の概要〕
まず、図1を参照し、FIDO認証の概要について説明する。図1は、FIDO認証の概要を示す説明図である。なお、図1では、FIDO認証の基本的な仕組みについて説明する。
【0011】
図1に示すように、情報処理システム1は、端末装置10とサーバ装置100とを含む。端末装置10とサーバ装置100とは、ネットワークN(図4参照)を介して有線又は無線で互いに通信可能に接続される。本実施形態では、端末装置10は、サーバ装置100と連携する。
【0012】
端末装置10は、利用者U(ユーザ)により使用されるスマートフォンやタブレット端末等のスマートデバイスであり、4G(Generation)やLTE(Long Term Evolution)等の無線通信網を介して任意のサーバ装置と通信を行うことができる携帯端末装置である。また、端末装置10は、液晶ディスプレイ等の画面であって、タッチパネルの機能を有する画面を有し、利用者Uから指やスタイラス等によりタップ操作、スライド操作、スクロール操作等、コンテンツ等の表示データに対する各種の操作を受付ける。なお、画面のうち、コンテンツが表示されている領域上で行われた操作を、コンテンツに対する操作としてもよい。また、端末装置10は、スマートデバイスのみならず、デスクトップPC(Personal Computer)やノートPC等の情報処理装置であってもよい。
【0013】
本実施形態では、端末装置10は、FIDO認証(Fast Identity Online)におけるFIDOクライアントとして機能する。FIDOクライアントは、認証器(Authenticator)と連携してユーザの認証を行う。なお、認証器は、FIDOクライアントと同一のデバイスに実装されることがあってもよく(内蔵認証器)、FIDOクライアントとは物理的に異なるデバイスに実装されていてもよい(外部認証器)。
【0014】
例えば、FIDO認証では、PIN(Personal Identification Number)、USB(Universal Serial Bus)セキュリティキー、スマートカードなどの記憶や所有物を用いた認証方式や、指紋、顔、虹彩、静脈、声紋などの生体情報や行動情報を用いた認証方式を実装できる。認証方式は、これらに限定されず、あらゆる方式を導入することができる。また、複数の認証方式を組み合わせて、マルチモーダル生体認証や多要素認証を実現することもできる。
【0015】
以下、説明の簡略化のため、FIDOクライアントと認証器とを区別せず、端末装置10をFIDOクライアントかつ認証器として説明する。すなわち、認証器が内部認証器である場合を例に説明する。なお、実際には、認証器は、端末装置10から物理的に独立し、端末装置10と連携可能な外部認証器であってもよい。
【0016】
また、FIDOクライアントのWebブラウザに表示されるウェブコンテンツから認証器を呼び出し、認証サーバとのやり取りでFIDO認証を可能にするためのWeb認証API(Application Programming Interface)も実装可能であるが、本実施形態では説明を割愛する。
【0017】
サーバ装置100は、FIDO認証における認証サーバ(FIDOサーバ)として機能する情報処理装置であり、コンピュータやクラウドシステム等により実現される。認証サーバは、RP(Relying Party)/IdP(Identity Provider)に相当する。RP(Relying Party)は、FIDOサーバを実装するエンティティ・組織のことを指す。FIDO認証では、認証器(Authenticator)と認証サーバとの間で、パスワードや生体情報のような「秘密」を共有しないので、フィッシングに対する耐性がある。
【0018】
図1に示すように、FIDO認証では、認証サーバは、ユーザからの認証要求を受けると、ユーザ側の認証器にチャレンジ(Challenge)を送る。チャレンジは、一度だけ有効なランダムな文字列であり、乱数を元に決めた毎回異なるデータ列である。ユーザは、認証器を用いてユーザ検証(User verification)を行い、本人性の検証をローカルで実施する。そして、認証器は、検証結果を秘密鍵(Private Key)で署名し、署名付き検証結果(Signed response)として認証サーバに送る。認証サーバは、署名付き検証結果を受け取ると、公開鍵(Public Key)で署名検証する。秘密鍵と公開鍵との組を、鍵ペアと称する。
【0019】
なお、FIDO登録用の鍵ペアは、例えば認証器証明書(Attestation:アテステーション)の署名用の秘密鍵(登録用秘密鍵)とその検証用の公開鍵(登録用公開鍵)の鍵ペアである。FIDO認証用の鍵ペアは、例えば認証器でのユーザ検証結果の証明書(Assertion:アサーション)の署名用の秘密鍵(認証用秘密鍵)とその検証用の公開鍵(認証用公開鍵)の鍵ペアである。
【0020】
このように、FIDO認証では、認証サーバが、公開鍵を用いて、ユーザ側の認証器が適切な秘密鍵を保有することを確認することによって認証を実現する。認証器と認証サーバは「秘密鍵」を共有しない。
【0021】
また、サーバ装置100は、FIDO認証に対応したRP/IdPとのID連携(フェデレーション)によりアイデンティティサービスを提供する連携RP/SP(Service Provider)としても機能する。FIDO認証とID連携とを組み合わせると、認証コンテキストは認証器からRP/IdPを介して連携RP/SPへと伝搬する。
【0022】
以下、説明の簡略化のため、RP/IdPと連携RP/SPとを区別せず、サーバ装置100をRP/IdPかつ連携RP/SPとして説明する。なお、実際には、RP/IdPとしてのサーバ装置と、連携RP/SPとしてのサーバ装置とは、物理的に独立した異なるサーバ装置であってもよい。
【0023】
例えば、サーバ装置100は、各利用者Uの端末装置10と連携し、各利用者Uの端末装置10に対して、各種アプリケーション(以下、アプリ)等に対するAPI(Application Programming Interface)サービス等と、各種データを提供してもよい。
【0024】
また、サーバ装置100は、各利用者Uの端末装置10に対して、オンラインで何らかのWebサービスを提供する情報処理装置であってもよい。例えば、サーバ装置100は、Webサービスとして、インターネット接続、検索サービス、SNS(Social Networking Service)、電子商取引(EC:Electronic Commerce)、電子決済、オンラインゲーム、オンラインバンキング、オンライントレーディング、宿泊・チケット予約、動画・音楽配信、ニュース、地図、ルート検索、経路案内、路線情報、運行情報、天気予報等のサービスを提供してもよい。実際には、サーバ装置100は、上記のようなWebサービスを提供する各種サーバと連携し、Webサービスを仲介してもよいし、Webサービスの処理を担当してもよい。
【0025】
なお、サーバ装置100は、利用者Uに関する利用者情報を取得可能である。例えば、サーバ装置100は、利用者Uの性別、年代、居住地域といった利用者Uの属性に関する情報を取得する。そして、サーバ装置100は、利用者Uを示す識別情報(利用者ID等)とともに利用者Uの属性に関する情報を記憶して管理する。
【0026】
また、サーバ装置100は、利用者Uの端末装置10から、あるいは利用者ID等に基づいて各種サーバ等から、利用者Uの行動を示す各種の履歴情報(ログデータ)を取得する。例えば、サーバ装置100は、利用者Uの位置や日時の履歴である位置履歴を端末装置10から取得する。また、サーバ装置100は、利用者Uが入力した検索クエリの履歴である検索履歴を検索サーバ(検索エンジン)から取得する。また、サーバ装置100は、利用者Uが閲覧したコンテンツの履歴である閲覧履歴をコンテンツサーバから取得する。また、サーバ装置100は、利用者Uの商品購入や決済処理の履歴である購入履歴(決済履歴)を電子商取引サーバや決済処理サーバから取得する。また、サーバ装置100は、利用者Uのマーケットプレイスへの出品の履歴である出品履歴や販売履歴を電子商取引サーバや決済処理サーバから取得してもよい。また、サーバ装置100は、利用者Uの投稿の履歴である投稿履歴を口コミの投稿サービスを提供する投稿サーバやSNSサーバから取得する。なお、上記の各種サーバ等は、サーバ装置100自体であってもよい。すなわち、サーバ装置100が上記の各種サーバ等として機能してもよい。
【0027】
〔1-1.検証可能証明書の流通〕
検証可能証明書(Verifiable Credentials:VC)は、属性情報を第三者に証明してもらうためのデジタル証明書であり、DID(Decentralized Identifier:分散型ID)で示されたアイデンティティ(属性情報と紐付けられていないアイデンティティ)に対し、属性情報を紐付ける役割を持つ。例えば、検証可能証明書(VC)は、運転免許証や学歴証明書、資格証明書、その他の機密データなどの物理的に存在する個人の属性を表す情報等を格納することができる。実際には、検証可能証明書(VC)は情報そのものを指すものではなく、その情報を格納する入れ物であり、その入れ物の真正性を検証できるもの(検証可能な輸送用コンテナのようなもの)である。
【0028】
図2は、検証可能証明書(VC)の流通方式の構想の概要を示す説明図である。当該構想は、W3Cが標準仕様として勧告化している構想であり、信頼できプライバシーにも配慮したデータの流通方法を規定している。なお、複数のサーバ装置100(100-i、i=1~n:nは任意)のうち、証明書を発行する事業者のサーバ装置100-1を「証明書の発行者(Issuer)」とし、証明書を検証する企業のサーバ装置100-2を「証明書の検証者(Verifier)」とする。また、利用者U(ユーザ)及びその端末装置10(認証器)を「証明書の保有者(Holder)」とする。また、リポジトリ200をサーバ装置100間で共通の「保管場所(Verifiable Data Registry)」とする。リポジトリ200は、公開鍵などの検証用データを保管する。
【0029】
なお、リポジトリ200は、独立したデータベースであってもよいし、複数のサーバ装置100のうちの1台であってもよい。すなわち、リポジトリ200は、複数のサーバ装置100のうちの1台に搭載されていてもよい。また、リポジトリ200は、分散型台帳技術(DLT:Distributed Ledger Technology)を用いて、ブロックチェーンで公開鍵などの検証用データを管理してもよい。例えば、リポジトリ200は、ブロックチェーンのネットワークを構成するノードであってもよい。
【0030】
例えば、図2に示すように、証明書の発行者(Issuer)である事業者のサーバ装置100-1は、検証可能証明書(VC)を作成する。このとき、証明書の発行者(Issuer)である事業者のサーバ装置100-1は、秘密鍵と公開鍵の鍵ペアを作成し、検証可能証明書(VC)に秘密鍵で署名する。また、証明書の発行者(Issuer)である事業者のサーバ装置100-1は、公開鍵などの検証用データを保管場所(Verifiable Data Registry)であるリポジトリ200に登録する。また、証明書の発行者(Issuer)である事業者のサーバ装置100-1は、証明書の保有者(Holder)となる利用者Uの端末装置10(認証器)に検証可能証明書(VC)を発行する。
【0031】
証明書の保有者(Holder)となる利用者Uの端末装置10(認証器)は、発行された検証可能証明書(VC)を保管する。また、証明書の保有者(Holder)である利用者Uの端末装置10(認証器)は、証明書の検証者(Verifier)である企業のサーバ装置100-2に検証可能証明書(VC)を提示する。例えば、証明書の保有者(Holder)である利用者Uの端末装置10(認証器)は、VC管理アプリ(例:ウォレットアプリ)などに検証可能証明書(VC)を保管し、店舗などでVC管理アプリ(例:ウォレットアプリ)を使用した時に、店舗などの証明書の検証者(Verifier)である企業のサーバ装置100-2に検証可能証明書(VC)を提示する。
【0032】
なお、当該構想においては、個々の署名付き発行済みの検証可能証明書(VC)を組み合わせて1つの提示証明書(Verifiable Presentation:VP)として提示することができる。提示証明書(VP)は、1つ以上の検証可能証明書(VC)を含み、証明書の検証者(Verifier)である企業のサーバ装置100-2に提示される。
【0033】
証明書の検証者(Verifier)である企業のサーバ装置100-2は、保管場所(Verifiable Data Registry)であるリポジトリ200に登録された公開鍵などの検証用データを参照し、提示された検証可能証明書(VC)を検証する。例えば、証明書の検証者(Verifier)である企業のサーバ装置100-2は、保管場所(Verifiable Data Registry)であるリポジトリ200に登録された公開鍵を使用して、提示証明書(VP)に含まれる署名付き発行済みの検証可能証明書(VC)の署名を検証する。
【0034】
しかし、従来の検証可能証明書(VC)では、証明書の内容に署名するので、一旦署名付きで発行すると、利用者Uが更新することができない。すなわち、一旦検証可能証明書(VC)に署名を済ませると、その検証可能証明書(VC)のデータを更新できない。
【0035】
例えば、証明書の発行者(Issuer)である事業者のサーバ装置100-1が、証明書の保有者(Holder)である利用者Uの端末装置10(認証器)となる利用者Uの運転免許証の検証可能証明書(VC)を作成し、署名付きで発行したとする。利用者Uは、検証可能証明書(VC)に相手に開示したくない情報(例:本籍情報)が含まれているときには、証明書を利用できない。あるいは、不本意ながら仕方なく証明書を開示することになる。そのため、検証可能証明書(VC)に相手に開示したくない情報が含まれていると、情報活用ができないか、プライバシーが漏洩するなどの問題が生じる。
【0036】
しかし、検証可能証明書(VC)から相手に開示したくない情報を削除することを所望しても、一度署名を済ませると、一文字でもデータを変更すると署名情報が変わってしまい、改竄とみなされるため、証明書の検証ができなく(不成功と)なる。
【0037】
〔1-2.証明書流通装置〕
図3は、実施形態に係る証明書流通装置の概要を示す説明図である。本実施形態では、署名付き発行済みの検証可能証明書(VC)を更新して発行し流通させることを可能にする。具体的には、証明書の発行者(Issuer)が、検証可能証明書(VC)の更新が可能な機能を有するVC更新カセット(以下、カセット)を作成し、信頼性を検証可能な形態で配布する。そして、証明書の保有者(Holder)が、そのカセットを取り込んで動作させることで、そのカセットが証明書を更新する。証明書の検証者(Verifier)は、そのカセットの真正性を検証することで、更新証明書の真正性を検証する。
【0038】
このとき、検証可能証明書(VC)に対して選択的属性情報の開示(Selective Disclosure)を実施してもよい。選択的属性情報の開示では、収集の必要のない属性情報は読めないように不可視化した提示証明書(VP)を動的に作成する。不可視化の例としては、黒塗り、ぼかし、モザイク、画像重畳、文字・画像変換、暗号化、空白化・削除等が挙げられる。ただし、実際には、これらの例に限定されない。不可視化の手段(方法)は任意である。これを通じて、データ要求者とデータ提供者の間で合意した属性情報のみを授受できる。
【0039】
例えば、図3に示すように、証明書の発行者(Issuer)であるサーバ装置100は、ネットワークN(図4参照)を介して、VC管理アプリ(例:ウォレットアプリ)を証明書の保有者(Holder)となる利用者Uの端末装置10(認証器)に提供する。証明書の保有者(Holder)となる利用者Uの端末装置10(認証器)は、証明書の発行者(Issuer)から提供されたVC管理アプリを導入(インストール)して搭載している。このVC管理アプリは、VP作成機能と、VC更新機能と、VC保管機能とを有する。
【0040】
VP作成機能は、1つ以上の署名付き発行済みの検証可能証明書(VC)を組み合わせて1つの提示証明書(VP)を作成する機能である。また、VC更新機能は、署名付き発行済みの検証可能証明書(VC)を更新する機能である。また、VC保管機能は、更新された検証可能証明書(VC)を保管する機能である。図3の例では、VC管理アプリに取り込まれたカセットであるVC更新カセット群(C1、C2、・・・、Cn(nは任意))の各々がVC更新機能を有する。C1、C2、・・・は、個々のカセットを示す。また、VC保管機能は、署名付き発行済みの検証可能証明書(VC)であるVC群(VC1、VC2、・・・、VCn(nは任意))を保管する。VC1、VC2、・・・は、個々の検証可能証明書(VC)を示す。
【0041】
〔1-2-1.検証可能証明書(VC)の更新〕
VC管理アプリに取り込まれたカセットによる検証可能証明書(VC)の更新の意図や処理内容として、例えば「情報の削除」、「情報の曖昧化」、「情報の匿名化」、「情報の加工」等が挙げられる。ただし、これらは一例に過ぎない。実際には、これらの例に限定されない。
【0042】
(1)情報の削除
例えば、VC管理アプリに取り込まれたカセットは、検証可能証明書(VC)に不要な情報(他人に開示したくない情報等)を含めない。すなわち、VC管理アプリに取り込まれたカセットは、検証可能証明書(VC)から不要な情報を削除する。また、VC管理アプリに取り込まれたカセットは、提示証明書(VP)の作成時に冗長な情報(VC間で重複する情報等)を排除する。
【0043】
(2)情報の曖昧化
例えば、VC管理アプリに取り込まれたカセットは、利用者Uの年齢情報は「年齢:30歳」であるが、情報としては20歳以上であることがわかれば充分である場合に、「年齢:20歳以上」等に変更する。また、利用者Uの居住地や職場等の位置情報が「東経135.55度,北緯35.55度」であるが、詳細な値を示さずに、小数点以下についてはぼかしたい場合には、「東経135度~136度,北緯35度~36度」等に変更する。あるいは、利用者Uの居住地や職場等の位置情報が「A地点から半径1km未満」であるが、詳細な値を示さずに、より大まかな値でぼかしたい場合には、「A地点から半径5km未満」等に変更する。
【0044】
(3)情報の匿名化
例えば、VC管理アプリに取り込まれたカセットは、利用者Uのアカウント情報を「ユーザID:taro-tanaka」から「ID:anonymous」(匿名)に変更する。あるいは、利用者Uのアカウント情報を「ユーザID:taro-tanaka」から「ID:A部門の1人」(特定しないがグループの一員である)に変更する。
【0045】
(4)情報の加工
例えば、VC管理アプリに取り込まれたカセットは、「A=1」、「B=2」、「C=1」が判明している場合に、「A+B+C=4」に変更する。このように、構成要素がわかっている場合に、構成要素の代わりにその合計を算出して提示することで、内訳を示さずに合計値のみ示して情報をぼかすことができる。
【0046】
〔1-2-2.VC更新カセット〕
カセットは、検証可能証明書(VC)を更新する機能を有するVC更新カセットであり、ソフトウェア/ハードウェアのいずれにより実現されてもよい。カセットは、所定の更新(削除、曖昧化、匿名化、加工など)を、所定の処理(演算・アルゴリズムなど)を用いて実施する。カセットの真正性は検証可能である。カセットの真正性の検証方法としては、検証可能証明書(VC)のバイナリ情報に署名を検証する方法や、所定の要求(インプット)に対して適切な応答(アウトプット)を返すか調べる方法等がある。
【0047】
なお、カセットは、あらゆる主体(事業者など)が作成可能であり、その処理内容(アルゴリズムなど)を公開するなどして、その信頼性を他者から判断できる。また、カセットは、発行された検証可能証明書(VC)ごとに作成されてもよい。また、カセットは、検証可能証明書(VC)に対する個々の更新の内容(削除、曖昧化、匿名化、加工など)ごとに作成されてもよい。
【0048】
このとき、証明書の発行者(Issuer)であり、VC管理アプリの提供元である事業者のサーバ装置100-1は、カセットに対応するカセットの公開鍵(カセット検証用公開鍵)をVC更新カセット管理のリポジトリ200に登録しておく。証明書の検証者(Verifier)は、カセットによる更新前(元)の検証可能証明書(VC)のバイナリ情報(暗号化情報)である暗号化VCの真正性と、カセットの真正性の検証を以って、カセットにより更新された検証可能証明書(更新VC)の適切さを検証する。元の暗号化VCの真正性は、証明書の発行者(Issuer)の公開鍵(VC検証用公開鍵)で検証可能である。カセットの真正性は、カセットの公開鍵(カセット検証用公開鍵)で検証可能である。例えば、サーバ装置100-1は、カセットの秘密鍵(カセット検証用秘密鍵)による署名を、カセットの公開鍵(カセット検証用公開鍵)により検証する。
【0049】
(1)カセット登録
例えば、証明書の発行者(Issuer)であり、VC管理アプリ(例:ウォレットアプリ)の提供元である事業者のサーバ装置100-1は、独自のカセット(例:情報削除カセット)を作成する。このとき、サーバ装置100-1は、カセットの秘密鍵(カセット検証用秘密鍵)とカセットの公開鍵(カセット検証用公開鍵)との鍵ペアを作成する。サーバ装置100-1は、VC更新カセット管理のリポジトリ200に、カセットの公開鍵(カセット検証用公開鍵)を登録する。同時に、カセットの意図や処理内容も公開情報として登録して公開する。カセットの公開鍵(カセット検証用公開鍵)と、カセットの意図や処理内容(公開情報)とは紐づけられていてもよい。証明書の検証者(Verifier)は、リポジトリ200に登録された公開情報を参照することで、カセットによりどのような行進が行われたかを確認することができる。なお、カセットの秘密鍵(カセット検証用秘密鍵)については、後述のように、カセットとともに、VC管理アプリ(例:ウォレットアプリ)側に提供する。
【0050】
(2)VC保管
証明書の保有者(Holder)となる利用者U(ユーザ)の端末装置10(認証器は、証明書の発行者(Issuer)である事業者のサーバ装置100-1から、検証可能証明書(VC)(例:本籍情報つき運転免許証)を署名付きで発行してもらい、VC管理アプリ(例:ウォレットアプリ)で保管する。同時に、端末装置10(認証器)は、証明書の発行者(Issuer)ある事業者のサーバ装置100-1から、検証可能証明書(VC)のバイナリ情報(暗号化情報)である暗号化VCも署名付きで発行してもらい、VC管理アプリ(例:ウォレットアプリ)で保管する。暗号化VCは、例えば検証可能証明書(VC)のバイナリ情報等である。暗号化VCの署名は、証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)で署名可能である。
【0051】
このとき、証明書の発行者(Issuer)である事業者のサーバ装置100-1は、検証可能証明書(VC)(例:本籍情報つき運転免許証)の発行時に、証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)と証明書の発行者(Issuer)の公開鍵(VC検証用公開鍵)との鍵ペアを作成する。そして、サーバ装置100-1は、証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)を用いて検証可能証明書(VC)のバイナリ情報(暗号化情報)である暗号化VCに署名する。また、サーバ装置100-1は、証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)を内部(又は安全な保管場所)に保管するとともに、VC更新カセット管理のリポジトリ200に、証明書の発行者(Issuer)の公開鍵(VC検証用公開鍵)を登録する。
【0052】
(3)VC更新
証明書の保有者(Holder)である利用者U(ユーザ)は、証明書の検証者(Verifier)となる企業に提出する証明書として、運転免許証が必要だが、本籍情報は不要とわかれば、検証可能証明書(VC)(例:本籍情報つき運転免許証)から本籍情報を取り除いた提示証明書(VP)の発行を所望する。
【0053】
証明書の保有者(Holder)である利用者Uの端末装置10(認証器)は、上記カセットが安全で評価されていることを確認した上で、VC管理アプリ(例:ウォレットアプリ)の提供元である事業者のサーバ装置100-1から、上記カセットと、対応する上記カセットの秘密鍵(カセット検証用秘密鍵)とをダウンロードし、VC管理アプリ(例:ウォレットアプリ)に取り込む。このとき、利用者Uの端末装置10(認証器)及び事業者のサーバ装置100-1は、FIDO登録後は、ダウンロード前/時にFIDO認証を実施し、FIDO認証に成功した場合にのみダウンロード可能としてもよい。また、利用者Uの端末装置10(認証器)は、上記カセットの秘密鍵(カセット検証用秘密鍵)を、セキュア領域(セキュアエレメント)に保管してもよい。そして、利用者Uの端末装置10(認証器)は、VC管理アプリ(例:ウォレットアプリ)に取り込んだ上記カセットの機能を使用(実行)して、ウェレットアプリ上で本籍情報なしの提示証明書(VP)を発行する。
【0054】
ここで、利用者Uの端末装置10(認証器)は、上記カセットの機能により、提示証明書(VP)に、署名付きで暗号化VCを添付する。このとき、利用者Uの端末装置10(認証器)は、上記カセットの機能により、提示証明書(VP)には、カセットにより更新された検証可能証明書(更新VC)を含め、カセットの秘密鍵(カセット検証用秘密鍵)による署名を添付する。例えば、利用者Uの端末装置10(認証器)は、上記カセットにより更新された検証可能証明書(更新VC)に対して、当該カセットの秘密鍵(カセット検証用秘密鍵)を用いて署名する。なお、利用者Uの端末装置10(認証器)は、上記カセットの機能により検証可能証明書(VC)を更新したときに、当該カセットの秘密鍵(カセット検証用秘密鍵)を用いて署名してもよい。
【0055】
なお、利用者Uの端末装置10(認証器)は、上記カセットの機能により、提示証明書(VP)に、カセットにより更新された検証可能証明書(更新VC)とともに、カセットによる更新前(元)の検証可能証明書(VC)のバイナリ情報(暗号化情報)である暗号化VCを添付する。更新VCと暗号化VCとは紐づけられていてもよい。元の検証可能証明書(VC)を添付する理由は、証明書の検証者(Verifier)による元の検証可能証明書(VC)の真正性の検証を可能にするためである。元の検証可能証明書(VC)を暗号化する理由は、元の検証可能証明書(VC)には、更新VCには含まれていない情報、例えばカセットによる更新前の情報(削除した情報、不要な情報等)がそのまま含まれているためである。
【0056】
カセットによる更新前(元)の検証可能証明書(VC)のバイナリ情報(暗号化情報)である暗号化VCは、証明書の発行者(Issuer)であり、カセットの提供元である事業者のサーバ装置100-1(及び、当該カセットを有する利用者Uの端末装置10(認証器))のみ復号可能とし、証明書の検証者(Verifier)である企業のサーバ装置100-2は復号して元の検証可能証明書(VC)を参照することはできないものとする。なお、暗号化の手法は、バイナリ変換に限定されない。暗号化の手法は任意である。また、実際には、更新VCが提示できれば十分であるため、暗号化VCを復号しなくてもよい。例えば、暗号化の代わりに、元の検証可能証明書(VC)をベクトル化してベクトルデータに変換してもよい。
【0057】
また、利用者Uの端末装置10(認証器)は、提示証明書(VP)全体には、ユーザ本人が作成したことを証明する本人証明用秘密鍵(認証用秘密鍵)で署名し、対応する本人証明用公開鍵(認証用公開鍵)をリポジトリ200に登録することで、リポジトリ200に登録された本人証明用公開鍵(認証用公開鍵)を用いて提示証明書(VP)の署名を検証可能にしてもよい。なお、実際には、利用者Uの端末装置10(認証器)は、本人証明用秘密鍵と本人証明用公開鍵の鍵ペアとして、認証用秘密鍵と認証用公開鍵の鍵ペアとは別に、新たにユーザ本人が作成したことを証明する秘密鍵と公開鍵の鍵ペアを作成し、この秘密鍵を用いて提示証明書(VP)全体に署名してもよい。また、利用者Uの端末装置10(認証器)は、本人証明用公開鍵をリポジトリ200に登録することなく、直接、証明書の保有者(Holder)や証明書の検証者(Verifier)に本人証明用公開鍵を提供(公開)してもよい。
【0058】
(4)VP検証
証明書の検証者(Verifier)である企業のサーバ装置100-2は、上記の提示証明書(VP)を受け取ると、提示証明書(VP)の検証とともに、署名付きの暗号化VCの検証と、カセットの真正性の検証とを実施する。暗号化VCの署名は、証明書の発行者(Issuer)の公開鍵(VC検証用公開鍵)で検証可能である。カセットの真正性は、カセットの公開鍵(カセット検証用公開鍵)で検証可能である。例えば、サーバ装置100-2は、カセットの秘密鍵(カセット検証用秘密鍵)による署名を、リポジトリ200に保管されているカセットの公開鍵(カセット検証用公開鍵)により検証することで、カセットの真正性を検証する。
【0059】
〔1-3.特徴〕
このように、本実施形態では、署名付き検証可能証明書(VC)を改変したり、証明書の発行者(Issuer)に検証可能証明書(VC)の再発行を依頼したりすることなく、証明書の保有者(Holder)である利用者U(ユーザ)が検証可能証明書(VC)に含まれる情報(VC記載情報)を更新した提示証明書(VP)を発行することができる。
【0060】
また、証明書の保有者(Holder)の情報開示ポリシー(preference)と、検証可能証明書(VC)を活用する主体である証明書の検証者(Verifier)の情報受け取りポリシーとに合致したに必要最小限の情報を提供することができる。その結果、利用者のプライバシーを保護することができる。
【0061】
なお、上記の説明では、カセットにより更新された検証可能証明書(更新VC)に格納される情報として、カセットによる更新前(元)の証可能証明書(VC)のバイナリ情報(暗号化情報)である暗号化VCを含めているが、元の暗号化VCを含めることは必須ではない。例えば、更新VC自体に暗号化VCが含まれていなくても、リポジトリ200に登録されたVC更新機能(カセット)の処理内容(公開情報)に、インプット情報(入力情報)として元の暗号化VCの情報が含まれていれば、カセットにより更新された検証可能証明書(更新VC)が、元の暗号化VCをベースにカセットにより正規に更新された情報であることが確認できる。あるいは、そのカセットの機能の一つとして、更新VCの作成時の前処理に「元の暗号化VCの検証」を含めてもよい。また、更新VCの内容に、「元の暗号化VCを検証した」、あるいは、「元の暗号化VCをベースに更新した」という情報を記載しておいてもよい。
【0062】
〔2.情報処理システムの構成例〕
次に、図4を用いて、実施形態に係るサーバ装置100が含まれる情報処理システム1の構成について説明する。図4は、実施形態に係る情報処理システム1の構成例を示す図である。図4に示すように、実施形態に係る情報処理システム1は、端末装置10とサーバ装置100とリポジトリ200とを含む。これらの各種装置は、ネットワークNを介して、有線又は無線により通信可能に接続される。ネットワークNは、例えば、LAN(Local Area Network)や、インターネット等のWAN(Wide Area Network)である。
【0063】
また、図4に示す情報処理システム1に含まれる各装置の数は図示したものに限られない。例えば、図4では、図示の簡略化のため、端末装置10を1台のみ示したが、これはあくまでも例示であって限定されるものではなく、2台以上であってもよい。
【0064】
端末装置10は、利用者Uによって使用される情報処理装置である。例えば、端末装置10は、スマートフォン(スマホ)やタブレット端末等のスマートデバイス、フィーチャーフォン(ガラケー・ガラホ)等の携帯電話、PC(Personal Computer)、PDA(Personal Digital Assistant)、通信機能を備えたゲーム機やAV機器、情報家電・デジタル家電、カーナビゲーションシステム、スマートウォッチやヘッドマウントディスプレイ等のウェアラブルデバイス(Wearable Device)、スマートグラス等である。また、端末装置10は、IOT(Internet of Things)に対応した住宅・建物、車、家電製品、電子機器等であってもよい。
【0065】
また、かかる端末装置10は、LTE(Long Term Evolution)、4G(4th Generation)、5G(5th Generation:第5世代移動通信システム)等の無線通信網や、Bluetooth(登録商標)、無線LAN(Local Area Network)等の近距離無線通信を介してネットワークNに接続し、サーバ装置100と通信することができる。
【0066】
サーバ装置100及びリポジトリ200は、例えばPCやブレードサーバ(blade server)等のコンピュータ、あるいはメインフレーム又はワークステーション等である。なお、サーバ装置100及びリポジトリ200は、クラウドコンピューティングにより実現されてもよい。
【0067】
〔3.端末装置の構成例〕
次に、図5を用いて、端末装置10の構成について説明する。図5は、端末装置10の構成例を示す図である。図5に示すように、端末装置10は、通信部11と、表示部12と、入力部13と、測位部14と、センサ部20と、制御部30(コントローラ)と、記憶部40とを備える。
【0068】
(通信部11)
通信部11は、ネットワークN(図4参照)と有線又は無線で接続され、ネットワークNを介して、サーバ装置100との間で情報の送受信を行う。例えば、通信部11は、NIC(Network Interface Card)やアンテナ等によって実現される。
【0069】
(表示部12)
表示部12は、位置情報等の各種情報を表示する表示デバイスである。例えば、表示部12は、液晶ディスプレイ(LCD:Liquid Crystal Display)や有機ELディスプレイ(Organic Electro-Luminescent Display)である。また、表示部12は、タッチパネル式のディスプレイであるが、これに限定されるものではない。
【0070】
(入力部13)
入力部13は、利用者Uから各種操作を受け付ける入力デバイスである。例えば、入力部13は、文字や数字等を入力するためのボタン等を有する。なお、入力部13は、入出力ポート(I/O port)やUSB(Universal Serial Bus)ポート等であってもよい。また、表示部12がタッチパネル式のディスプレイである場合、表示部12の一部が入力部13として機能する。また、入力部13は、利用者Uから音声入力を受け付けるマイク等であってもよい。マイクはワイヤレスであってもよい。
【0071】
(測位部14)
測位部14は、GPS(Global Positioning System)の衛星から送出される信号(電波)を受信し、受信した信号に基づいて、自装置である端末装置10の現在位置を示す位置情報(例えば、緯度及び経度)を取得する。すなわち、測位部14は、端末装置10の位置を測位する。なお、GPSは、GNSS(Global Navigation Satellite System)の一例に過ぎない。
【0072】
また、測位部14は、GPS以外にも、種々の手法により位置を測位することができる。例えば、測位部14は、位置補正等のための補助的な測位手段として、下記のように、端末装置10の様々な通信機能を利用して位置を測位してもよい。
【0073】
(Wi-Fi測位)
例えば、測位部14は、端末装置10のWi-Fi(登録商標)通信機能や、各通信会社が備える通信網を利用して、端末装置10の位置を測位する。具体的には、測位部14は、Wi-Fi通信等を行い、付近の基地局やアクセスポイントとの距離を測位することにより、端末装置10の位置を測位する。
【0074】
(ビーコン測位)
また、測位部14は、端末装置10のBluetooth(登録商標)機能を利用して位置を測位してもよい。例えば、測位部14は、Bluetooth(登録商標)機能によって接続されるビーコン(beacon)発信機と接続することにより、端末装置10の位置を測位する。
【0075】
(地磁気測位)
また、測位部14は、予め測定された構造物の地磁気のパターンと、端末装置10が備える地磁気センサとに基づいて、端末装置10の位置を測位する。
【0076】
(RFID測位)
また、例えば、端末装置10が駅改札や店舗等で使用される非接触型ICカードと同等のRFID(Radio Frequency Identification)タグの機能を備えている場合、もしくはRFIDタグを読み取る機能を備えている場合、端末装置10によって決済等が行われた情報とともに、使用された位置が記録される。測位部14は、かかる情報を取得することで、端末装置10の位置を測位してもよい。また、位置は、端末装置10が備える光学式センサや、赤外線センサ等によって測位されてもよい。
【0077】
測位部14は、必要に応じて、上述した測位手段の一つ又は組合せを用いて、端末装置10の位置を測位してもよい。
【0078】
(センサ部20)
センサ部20は、端末装置10に搭載又は接続される各種のセンサを含む。なお、接続は、有線接続、無線接続を問わない。例えば、センサ類は、ウェアラブルデバイスやワイヤレスデバイス等、端末装置10以外の検知装置であってもよい。図5に示す例では、センサ部20は、加速度センサ21と、ジャイロセンサ22と、気圧センサ23と、気温センサ24と、音センサ25と、光センサ26と、磁気センサ27と、画像センサ(カメラ)28とを備える。
【0079】
なお、上記した各センサ21~28は、あくまでも例示であって限定されるものではない。すなわち、センサ部20は、各センサ21~28のうちの一部を備える構成であってもよいし、各センサ21~28に加えてあるいは代えて、湿度センサ等その他のセンサを備えてもよい。
【0080】
加速度センサ21は、例えば、3軸加速度センサであり、端末装置10の移動方向、速度、及び、加速度等の端末装置10の物理的な動きを検知する。ジャイロセンサ22は、端末装置10の角速度等に基づいて3軸方向の傾き等の端末装置10の物理的な動きを検知する。気圧センサ23は、例えば端末装置10の周囲の気圧を検知する。
【0081】
端末装置10は、上記した加速度センサ21やジャイロセンサ22、気圧センサ23等を備えることから、これらの各センサ21~23等を利用した歩行者自律航法(PDR:Pedestrian Dead-Reckoning)等の技術を用いて端末装置10の位置を測位することが可能になる。これにより、GPS等の測位システムでは取得することが困難な屋内での位置情報を取得することが可能になる。
【0082】
例えば、加速度センサ21を利用した歩数計により、歩数や歩くスピード、歩いた距離を算出することができる。また、ジャイロセンサ22を利用して、利用者Uの進行方向や視線の方向、体の傾きを知ることができる。また、気圧センサ23で検知した気圧から、利用者Uの端末装置10が存在する高度やフロアの階数を知ることもできる。
【0083】
気温センサ24は、例えば端末装置10の周囲の気温を検知する。音センサ25は、例えば端末装置10の周囲の音を検知する。光センサ26は、端末装置10の周囲の照度を検知する。磁気センサ27は、例えば端末装置10の周囲の地磁気を検知する。画像センサ28は、端末装置10の周囲の画像を撮像する。
【0084】
上記した気圧センサ23、気温センサ24、音センサ25、光センサ26及び画像センサ28は、それぞれ気圧、気温、音、照度を検知したり、周囲の画像を撮像したりすることで、端末装置10の周囲の環境や状況等を検知することができる。また、端末装置10の周囲の環境や状況等から、端末装置10の位置情報の精度を向上させることが可能になる。
【0085】
(制御部30)
制御部30は、例えば、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM、入出力ポート等を有するマイクロコンピュータや各種の回路を含む。また、制御部30は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路等のハードウェアで構成されてもよい。制御部30は、送信部31と、受信部32と、処理部33と、登録要求部34と、鍵作成部35と、VC管理部36と、認証要求部37とを有する。
【0086】
(送信部31)
送信部31は、例えば入力部13を用いて利用者Uにより入力された各種情報や、端末装置10に搭載又は接続された各センサ21~28によって検知された各種情報、測位部14によって測位された端末装置10の位置情報等を、通信部11を介してサーバ装置100へ送信することができる。
【0087】
(受信部32)
受信部32は、通信部11を介して、サーバ装置100から提供される各種情報や、サーバ装置100からの各種情報の要求を受信することができる。
【0088】
(処理部33)
処理部33は、表示部12等を含め、端末装置10全体を制御する。例えば、処理部33は、送信部31によって送信される各種情報や、受信部32によって受信されたサーバ装置100からの各種情報を表示部12へ出力して表示させることができる。
【0089】
なお、実際には、処理部33は、アプリを起動又はプログラムを実行することで、下記の登録要求部34、鍵作成部35、VC管理部36、及び認証要求部37として機能してもよい。
【0090】
(登録要求部34)
登録要求部34は、送信部31を介して、証明書の発行者(Issuer)である事業者のサーバ装置100に、登録要求(Reg request)を送信する。例えば、登録要求は、FIDO登録の要求である。そして、登録要求部34は、登録要求に対する応答として、受信部32を介して、証明書の発行者(Issuer)である事業者のサーバ装置100から発行された検証可能証明書(Verifiable Credentials:VC)を受け取る。本実施形態では、登録要求部34は、証明書受信部34Aを有する。
【0091】
(証明書受信部34A)
証明書受信部34Aは、受信部32を介して、証明書の発行者(Issuer)が発行した利用者U(ユーザ)に関する検証可能証明書(VC)を受信する。
【0092】
(鍵作成部35)
鍵作成部35は、秘密鍵と公開鍵との鍵ペアを作成する。例えば、鍵作成部35は、登録用秘密鍵と登録用公開鍵との鍵ペアを作成する。また、鍵作成部35は、認証用秘密鍵と認証用公開鍵との鍵ペアを作成する。なお、鍵作成部35は、検証可能証明書(VC)の発行前/発行時に、送信部31を介して、証明書の発行者(Issuer)である事業者のサーバ装置100に、認証用公開鍵を送信・提供してもよい。
【0093】
本実施形態では、鍵作成部35は、本人証明用鍵作成部35Aと、本人証明用鍵管理部35Bと、本人証明用鍵公開部35Cとを有する。
【0094】
(本人証明用鍵作成部35A)
本人証明用鍵作成部35Aは、ユーザ本人が作成したことを認証する本人証明用秘密鍵と、対応する本人証明用公開鍵との鍵ペアを作成する。なお、本人証明用秘密鍵と本人証明用公開鍵との鍵ペアは、認証用秘密鍵と認証用公開鍵との鍵ペアであってもよい。
【0095】
(本人証明用鍵管理部35B)
本人証明用鍵管理部35Bは、本人証明用秘密鍵を内部に保管する。例えば、本人証明用鍵管理部35Bは、本人証明用秘密鍵を記憶部40のセキュア領域(セキュアエレメント)に保管する。
【0096】
(本人証明用鍵公開部35C)
本人証明用鍵公開部35Cは、本人証明用公開鍵を公開する。このとき、本人証明用鍵公開部35Cは、本人証明用鍵公開部35Cは、本人証明用公開鍵を公開用のリポジトリ200に登録してもよいし、直接、証明書の保有者(Holder)や証明書の検証者(Verifier)に本人証明用公開鍵を提供(公開)してもよい。
【0097】
(VC管理部36)
VC管理部36は、証明書の発行者(Issuer)が発行した利用者U(ユーザ)に関する検証可能証明書(VC)を管理する。このとき、VC管理部36は、VC管理アプリ(例:ウォレットアプリ)の各種機能を実行してもよい。このVC管理アプリは、VP作成機能と、VC更新機能と、VC保管機能とを有する。
【0098】
本実施形態では、VC管理部36は、カセット受信部36Aと、証明書更新部36Bと、提示証明書作成部36Cと、提示証明書署名部36Dとを有する。
【0099】
カセット受信部36Aは、証明書の発行者(Issuer)が作成した検証可能証明書(VC)を更新する機能を有するカセットを受信する。例えば、カセット受信部36Aは、証明書の発行者(Issuer)である事業者のサーバ装置100から、検証可能証明書(VC)を更新する機能を有するカセットをダウンロードする。このとき、カセット受信部36Aは、証明書の発行者(Issuer)から、カセットとともに、カセットの機能による検証可能証明書(VC)の更新時の署名に用いられるカセットの秘密鍵(カセット検証用秘密鍵)を受信する。そして、カセット受信部36Aは、カセットと、カセットの秘密鍵(カセット検証用秘密鍵)とをVC管理アプリに取り込む(格納/登録する)。
【0100】
証明書更新部36Bは、カセットの機能により検証可能証明書(VC)を更新する。このとき、証明書更新部36Bは、カセットの機能により検証可能証明書(VC)を更新した際に、更新された検証可能証明書(VC)にカセットの秘密鍵(カセット検証用秘密鍵)を用いて署名する。
【0101】
提示証明書作成部36Cは、カセットの機能により、複数の検証可能証明書(VC)を組み合わせて1つの提示証明書(VP:Verifiable Presentation)を作成する。また、提示証明書作成部36Cは、カセットの機能により検証可能証明書(VC)が更新された際、提示証明書(VP)に、暗号化された更新前の検証可能証明書(暗号化VC)と、更新後の検証可能証明書(更新VC)とを添付する。
【0102】
提示証明書署名部36Dは、本人証明用秘密鍵を用いて提示証明書(VP)に署名する。すなわち、提示証明書署名部36Dは、本人証明用秘密鍵を用いて、複数の検証可能証明書(VC)を含む提示証明書(VP)の全体に署名する。なお、提示証明書署名部36Dは、提示証明書作成部36Cの一部であってもよい。すなわち、提示証明書作成部36Cが、提示証明書署名部36Dの機能を有し、提示証明書(VP)を作成した際に、提示証明書(VP)に署名してもよい。
【0103】
(認証要求部37)
認証要求部37は、送信部31を介して、証明書の検証者(Verifier)である企業のサーバ装置100に、認証要求(Auth request)を送信する。このとき、認証要求部37は、送信部31を介して、証明書の検証者(Verifier)である企業のサーバ装置100に、認証要求とともに、検証可能証明書(VC)を含む提示証明書(VP)を送信する。例えば、認証要求に応じて、証明書の検証者(Verifier)である企業のサーバ装置100により、FIDO認証とパスワード認証とが実施される。そして、認証要求部37は、認証に成功した場合、証明書の検証者(Verifier)である企業のサーバ装置100にログインし、証明書の検証者(Verifier)である企業のサーバ装置100(又はその先にある連携RP/SP)からサービスの提供を受ける。本実施形態では、認証要求部37は、証明書提示部37Aを有する。
【0104】
(証明書提示部37A)
証明書提示部37Aは、送信部31を介して、更新された検証可能証明書(VC)を証明書の検証者(Verifier)に送信して提示する。なお、実際には、証明書提示部37Aは、更新された検証可能証明書(VC)を含む提示証明書(VP)を証明書の検証者(Verifier)に提示する。すなわち、証明書提示部37Aは、提示証明書(VP)として、更新された検証可能証明書(VC)を証明書の検証者(Verifier)に提示する。また、証明書提示部37Aは、提示証明書(VP)(それ自体、又は2次元コード)を表示部12に表示して、読み取り機又は証明書の検証者(Verifier)に提示してもよい。
【0105】
(記憶部40)
記憶部40は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置によって実現される。かかる記憶部40には、各種プログラムや各種データ等が記憶される。
【0106】
また、記憶部40のセキュア領域(セキュアエレメント)には、登録用秘密鍵40Aと、認証用秘密鍵40Bと、VC管理アプリ40Cとが記憶される。このとき、登録用秘密鍵40Aと、認証用秘密鍵40Bと、VC管理アプリ40Cとは異なるセキュア領域に記憶されてもよい。
【0107】
登録用秘密鍵40Aは、例えば認証器証明書(Attestation:アテステーション)の署名用の秘密鍵(登録用秘密鍵)である。認証用秘密鍵40Bは、例えば認証器でのユーザ検証結果の証明書(Assertion:アサーション)の署名用の秘密鍵(認証用秘密鍵)である。
【0108】
VC管理アプリ40Cは、検証可能証明書(VC)と、証明書の更新が可能な機能(カセット)と、カセットの秘密鍵(カセット検証用秘密鍵)を保管するアプリ(例:ウォレットアプリ)である。処理部33は、VC管理アプリの提供元であるサーバ装置100から、各種のカセットとともに、対応するカセットの秘密鍵(カセット検証用秘密鍵)をダウンロードし、VC管理アプリ40Cに取り込む。カセットは複数でもよく、カセットの秘密鍵(カセット検証用秘密鍵)はカセットと1対1の関係にある。すなわち、カセットの秘密鍵(カセット検証用秘密鍵)の本数はカセットと同数である。
【0109】
本実施形態では、VC管理アプリ40Cは、少なくとも、VP作成機能と、VC更新機能と、VC保管機能とを有する。なお、VC管理アプリ40Cは、1つ以上の検証可能証明書(VC)を含む提示証明書(VP)を保管してもよい。また、実際には、VC管理アプリ40Cのうちカセットの秘密鍵(カセット検証用秘密鍵)、検証可能証明書(VC)、提示証明書(VP)等の秘匿すべき情報のみセキュア領域(セキュアエレメント)に記憶され、VC管理アプリ自体やカセットは通常の記憶領域に記憶されてもよい。
【0110】
〔4.サーバ装置の構成例〕
次に、図6を用いて、実施形態に係るサーバ装置100の構成について説明する。図6は、実施形態に係るサーバ装置100の構成例を示す図である。図6に示すように、サーバ装置100は、通信部110と、記憶部120と、制御部130とを備える。
【0111】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。また、通信部110は、ネットワークN(図4参照)と有線又は無線で接続される。
【0112】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、HDD、SSD、光ディスク等の記憶装置によって実現される。図6に示すように、記憶部120は、利用者情報データベース121と、履歴情報データベース122と、鍵情報データベース123と、カセット情報データベース124とを有する。
【0113】
(利用者情報データベース121)
利用者情報データベース121は、利用者Uに関する利用者情報を記憶する。例えば、利用者情報データベース121は、利用者Uの属性等の種々の情報を記憶する。図7は、利用者情報データベース121の一例を示す図である。図7に示した例では、利用者情報データベース121は、「利用者ID(Identifier)」、「年齢」、「性別」、「自宅」、「勤務地」、「興味」といった項目を有する。
【0114】
「利用者ID」は、利用者Uを識別するための識別情報を示す。なお、「利用者ID」は、利用者Uの連絡先(電話番号、メールアドレス等)であってもよいし、利用者Uの端末装置10を識別するための識別情報であってもよい。
【0115】
また、「年齢」は、利用者IDにより識別される利用者Uの年齢を示す。なお、「年齢」は、利用者Uの具体的な年齢(例えば35歳など)を示す情報であってもよいし、利用者Uの年代(例えば30代など)を示す情報であってもよい。あるいは、「年齢」は、利用者Uの生年月日を示す情報であってもよいし、利用者Uの世代(例えば80年代生まれなど)を示す情報であってもよい。また、「性別」は、利用者IDにより識別される利用者Uの性別を示す。
【0116】
また、「自宅」は、利用者IDにより識別される利用者Uの自宅の位置情報を示す。なお、図7に示す例では、「自宅」は、「LC11」といった抽象的な符号を図示するが、緯度経度情報等であってもよい。また、例えば、「自宅」は、地域名や住所であってもよい。
【0117】
また、「勤務地」は、利用者IDにより識別される利用者Uの勤務地(学生の場合は学校)の位置情報を示す。なお、図7に示す例では、「勤務地」は、「LC12」といった抽象的な符号を図示するが、緯度経度情報等であってもよい。また、例えば、「勤務地」は、地域名や住所であってもよい。
【0118】
また、「興味」は、利用者IDにより識別される利用者Uの興味を示す。すなわち、「興味」は、利用者IDにより識別される利用者Uが関心の高い対象を示す。例えば、「興味」は、利用者Uが検索エンジンに入力して検索した検索クエリ(キーワード)等であってもよい。なお、図7に示す例では、「興味」は、各利用者Uに1つずつ図示するが、複数であってもよい。
【0119】
例えば、図7に示す例において、利用者ID「U1」により識別される利用者Uの年齢は、「20代」であり、性別は、「男性」であることを示す。また、例えば、利用者ID「U1」により識別される利用者Uは、自宅が「LC11」であることを示す。また、例えば、利用者ID「U1」により識別される利用者Uは、勤務地が「LC12」であることを示す。また、例えば、利用者ID「U1」により識別される利用者Uは、「スポーツ」に興味があることを示す。
【0120】
ここで、図7に示す例では、「U1」、「LC11」及び「LC12」といった抽象的な値を用いて図示するが、「U1」、「LC11」及び「LC12」には、具体的な文字列や数値等の情報が記憶されるものとする。以下、他の情報に関する図においても、抽象的な値を図示する場合がある。
【0121】
なお、利用者情報データベース121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、利用者情報データベース121は、利用者Uの端末装置10に関する各種情報を記憶してもよい。また、利用者情報データベース121は、利用者Uのデモグラフィック(人口統計学的属性)、サイコグラフィック(心理学的属性)、ジオグラフィック(地理学的属性)、ベヘイビオラル(行動学的属性)等の属性に関する情報を記憶してもよい。例えば、利用者情報データベース121は、氏名、家族構成、出身地(地元)、職業、職位、収入、資格、居住形態(戸建、マンション等)、車の有無、通学・通勤時間、通学・通勤経路、定期券区間(駅、路線等)、利用頻度の高い駅(自宅・勤務地の最寄駅以外)、習い事(場所、時間帯等)、趣味、興味、ライフスタイル等の情報を記憶してもよい。
【0122】
(履歴情報データベース122)
履歴情報データベース122は、利用者Uの行動を示す履歴情報(ログデータ)に関する各種情報を記憶する。図8は、履歴情報データベース122の一例を示す図である。図8に示した例では、履歴情報データベース122は、「利用者ID」、「位置履歴」、「検索履歴」、「閲覧履歴」、「購入履歴」、「投稿履歴」といった項目を有する。
【0123】
「利用者ID」は、利用者Uを識別するための識別情報を示す。また、「位置履歴」は、利用者Uの位置や移動の履歴である位置履歴を示す。また、「検索履歴」は、利用者Uが入力した検索クエリの履歴である検索履歴を示す。また、「閲覧履歴」は、利用者Uが閲覧したコンテンツの履歴である閲覧履歴を示す。また、「購入履歴」は、利用者Uによる購入の履歴である購入履歴を示す。また、「投稿履歴」は、利用者Uによる投稿の履歴である投稿履歴を示す。なお、「投稿履歴」は、利用者Uの所有物に関する質問を含んでいてもよい。
【0124】
例えば、図8に示す例において、利用者ID「U1」により識別される利用者Uは、「位置履歴#1」の通りに移動し、「検索履歴#1」の通りに検索し、「閲覧履歴#1」の通りにコンテンツを閲覧し、「購入履歴#1」の通りに所定の店舗等で所定の商品等を購入し、「投稿履歴#1」の通りに投稿したことを示す。
【0125】
ここで、図8に示す例では、「U1」、「位置履歴#1」、「検索履歴#1」、「閲覧履歴#1」、「購入履歴#1」及び「投稿履歴#1」といった抽象的な値を用いて図示するが、「U1」、「位置履歴#1」、「検索履歴#1」、「閲覧履歴#1」、「購入履歴#1」及び「投稿履歴#1」には、具体的な文字列や数値等の情報が記憶されるものとする。
【0126】
なお、履歴情報データベース122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、履歴情報データベース122は、利用者Uの所定のサービスの利用履歴等を記憶してもよい。また、履歴情報データベース122は、利用者Uの実店舗の来店履歴又は施設の訪問履歴等を記憶してもよい。また、履歴情報データベース122は、利用者Uの端末装置10を用いた決済(電子決済)での決済履歴等を記憶してもよい。
【0127】
(鍵情報データベース123)
鍵情報データベース123は、リポジトリ200に保管された公開鍵に関する各種情報を記憶する。図9は、鍵情報データベース123の一例を示す図である。図9に示した例では、鍵情報データベース123は、「鍵ID」、「公開鍵URL」、「ユーザID」といった項目を有する。
【0128】
「鍵ID」は、リポジトリ200に保管された公開鍵を識別するための識別情報を示す。公開鍵は、利用者U(ユーザ)の端末装置10(認証器)により作成された登録用公開鍵や認証用公開鍵に限らず、証明書の発行者(Issuer)の公開鍵(VC検証用公開鍵)であってもよいし、カセットの公開鍵(カセット検証用公開鍵)であってもよい。
【0129】
また、「公開鍵URL」は、リポジトリ200に保管された公開鍵の所在を示す参照DIDを示す。ここでは、参照DIDは、リポジトリ200に保管されている公開鍵に紐づけられた参照DIDと対応している。
【0130】
また、「ユーザID」は、公開鍵によりFIDO認証を受ける利用者U(ユーザ)を識別するための識別情報を示す。なお、実際には、ユーザIDではなく、認証器を識別するための識別情報(認証器ID)であってもよい。
【0131】
例えば、図9に示す例において、鍵ID「KID1」により示される公開鍵は、公開鍵URL「DID1」が示す場所(リポジトリ200)にあり、公開鍵を用いたFIDO認証に成功した場合、ユーザID「UID1」が抽出されることを示す。
【0132】
ここで、図9に示す例では、「KID1」、「DID1」及び「UID1」といった抽象的な値を用いて図示するが、「KID1」、「DID1」及び「UID1」には、具体的な文字列や数値等の情報が記憶されるものとする。
【0133】
なお、鍵情報データベース123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、鍵情報データベース123は、公開鍵に限らず、サーバ装置100自体が生成した秘密鍵に関する情報を記憶してもよい。また、鍵情報データベース123は、認証器証明書(Attestation:アテステーション)やユーザ検証結果の証明書(Assertion:アサーション)を記憶してもよい。また、鍵情報データベース123は、サーバ装置100により発行された検証可能証明書(VC)を記憶してもよい。また、鍵情報データベース123は、リポジトリ200として機能してもよい。例えば、複数のサーバ装置100のうちの1台は、記憶部120にリポジトリ200を保管していてもよい。
【0134】
(カセット情報データベース124)
カセット情報データベース124は、検証可能証明書(VC)を更新する機能を有するVC更新カセット(カセット)に関する各種情報を記憶する。図10は、カセット情報データベース124の一例を示す図である。図10に示した例では、カセット情報データベース124は、「カセットID」、「カセット本体」、「秘密鍵」、「ユーザID」といった項目を有する。
【0135】
「カセットID」は、検証可能証明書(VC)を更新する機能を有するカセットを識別するための識別情報を示す。また、「カセット本体」は、利用者U(ユーザ)の端末装置10(認証器)に提供されるカセット本体のデータを示す。
【0136】
また、「秘密鍵」は、カセットとともに提供(配布)されるカセットの秘密鍵(カセット検証用秘密鍵)のデータを示す。なお、実際には、カセットの秘密鍵の本体データだけではなく、カセットの秘密鍵を識別するための識別情報(鍵ID)を含んでいてもよい。このとき、カセットの秘密鍵の鍵IDとカセットの公開鍵の鍵IDとを紐づけて記憶してもよい。
【0137】
また、「ユーザID」は、カセットが提供された利用者U(ユーザ)を識別するための識別情報を示す。なお、実際には、ユーザIDではなく、カセットをダウンロードした端末装置10(認証器)を識別するための識別情報(認証器ID)であってもよいし、カセットを取り込んだVP管理アプリを識別するための識別情報(アプリID)であってもよい。
【0138】
例えば、図10に示す例において、カセットID「CID1」により示されるカセット「C1」は、カセットの秘密鍵(カセット検証用秘密鍵)「Prikey1」とともに、ユーザID「UID1」により識別される利用者Uの端末装置10(認証器)にダウンロードされ、VP管理アプリに取り込まれることを示す。
【0139】
ここで、図10に示す例では、「CID1」、「C1」、「Prikey1」及び「UID1」といった抽象的な値を用いて図示するが、「CID1」、「C1」、「Prikey1」及び「UID1」には、具体的な文字列や数値又はデータ等の情報が記憶されるものとする。
【0140】
なお、カセット情報データベース124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、カセット情報データベース124は、カセットを取り込むVP管理アプリのデータを記憶してもよい。また、カセット情報データベース124は、カセットにより更新された検証可能証明書(VC)や提示証明書(VP)を記憶してもよい。また、カセット情報データベース124は、カセットと検証可能証明書(VC)との対応関係に関する情報を記憶してもよい。
【0141】
(制御部130)
図6に戻り、説明を続ける。制御部130は、コントローラ(Controller)であり、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等によって、サーバ装置100の内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAM等の記憶領域を作業領域として実行されることにより実現される。図6に示す例では、制御部130は、取得部131と、登録処理部132と、認証処理部133と、証明書発行部134と、作成部135と、登録部136と、証明書署名部137と、提供部138とを有する。
【0142】
(取得部131)
取得部131は、利用者U(ユーザ)により入力された検索クエリを取得する。例えば、取得部131は、利用者Uが検索エンジン等に検索クエリを入力してキーワード検索を行った際に、通信部110を介して、当該検索クエリを取得する。すなわち、取得部131は、通信部110を介して、利用者Uにより検索エンジンやサイト又はアプリの検索窓に入力されたキーワードを取得する。
【0143】
また、取得部131は、通信部110を介して、利用者Uに関する利用者情報を取得する。例えば、取得部131は、利用者Uの端末装置10から、利用者Uを示す識別情報(利用者ID等)や、利用者Uの位置情報、利用者Uの属性情報等を取得する。また、取得部131は、利用者Uのユーザ登録時に、利用者Uを示す識別情報や、利用者Uの属性情報等を取得してもよい。そして、取得部131は、利用者情報を、記憶部120の利用者情報データベース121に登録する。
【0144】
また、取得部131は、通信部110を介して、利用者Uの行動を示す各種の履歴情報(ログデータ)を取得する。例えば、取得部131は、利用者Uの端末装置10から、あるいは利用者ID等に基づいて各種サーバ等から、利用者Uの行動を示す各種の履歴情報を取得する。そして、取得部131は、各種の履歴情報を、記憶部120の履歴情報データベース122に登録する。
【0145】
また、取得部131は、登録時に、通信部110を介して、利用者Uの端末装置10(認証器)から登録要求を受け取る。また、取得部131は、認証時に、通信部110を介して、利用者Uの端末装置10(認証器)から、認証要求を受け取る。
【0146】
また、取得部131は、パスワード認証が行われた際に、通信部110を介して、利用者Uの端末装置10から利用者UのユーザID及びパスワードを受け取る。例えば、取得部131は、利用者Uのユーザ登録時やユーザ認証に、通信部110を介して、利用者Uの端末装置10から利用者UのユーザID及びパスワードを受け取る。なお、実際には、取得部131は、ユーザIDが入力済みである場合には、パスワードのみ受け取ってもよい。
【0147】
(登録処理部132)
登録処理部132は、登録要求に応じて、認証器として端末装置10を用いる利用者Uの登録処理を行う。このとき、登録処理部132は、登録時に、FIDO認証を実施する他のサーバ装置(認証サーバ)に、事前に公開された登録用公開鍵を用いたFIDO登録を要求し、応答としてFIDO登録結果を受信し、FIDO登録結果に基づいて、FIDO登録の成否を判定し、FIDO登録に成功した場合に、利用者Uの登録処理を行う。例えば、登録処理部132は、FIDO登録に成功した場合に、利用者UのユーザID及びパスワードを含むユーザ登録を行う。
【0148】
なお、FIDO登録結果は、認証器の真正性確認(署名検証)の結果であってもよい。すなわち、登録処理部132は、認証器の真正性確認(署名検証に成功した場合に、利用者UのユーザID及びパスワードを含むユーザ登録を行うようにしてもよい。
【0149】
また、後述する証明書発行部134と、作成部135と、登録部136と、証明書署名部137とは、登録処理部132の一部であってもよい。すなわち、登録処理部132は、後述する証明書発行部134と、作成部135と、登録部136と、証明書署名部137とを有していてもよい。
【0150】
(認証処理部133)
認証処理部133は、認証時に、認証用公開鍵を用いてFIDO認証を実施する。例えば、認証処理部133は、認証時に、検証可能証明書(VC)の真正性を検証するとともに、認証用公開鍵を用いて、認証用秘密鍵で署名された署名付きチャレンジの署名検証を実施する。
【0151】
このとき、認証処理部133は、認証時に、FIDO認証を実施する他のサーバ装置(認証サーバ)にFIDO認証を要求(又はリダイレクト)し、応答としてFIDO認証結果を受信し、FIDO認証結果に基づいて、FIDO認証の成否を判定してもよい。
【0152】
(証明書発行部134)
証明書発行部134は、利用者U(ユーザ)に関する検証可能証明書(VC)を発行する。なお、証明書発行部134は、上記の登録処理部132の一部であってもよい。
【0153】
(作成部135)
作成部135は、カセット作成部135Aと、カセット用鍵作成部135Bと、証明書用鍵作成部135Cとを有する。
【0154】
(カセット作成部135A)
カセット作成部135Aは、検証可能証明書(VC)を更新する機能を有するカセットを作成する。
【0155】
(カセット用鍵作成部135B)
カセット用鍵作成部135Bは、利用者U(ユーザ)の端末装置10(認証器)側でカセットが検証可能証明書(VC)を更新した際の署名に用いるカセットの秘密鍵(カセット検証用秘密鍵)と、カセットによる署名を検証するためのカセットの公開鍵(カセット検証用公開鍵)との鍵ペアを作成する。
【0156】
(証明書用鍵作成部135C)
証明書用鍵作成部135Cは、検証可能証明書(VC)の署名に用いる証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)と、検証可能証明書(VC)の署名を検証するための証明書の発行者(Issuer)の公開鍵(VC検証用公開鍵)との鍵ペアを作成する。なお、証明書用鍵作成部135Cは、上記の登録処理部132の一部であってもよい。
【0157】
(登録部136)
登録部136は、カセット用鍵登録部136Aと、証明書用鍵管理部136Bと、証明書用鍵登録部136Cとを有する。
【0158】
(カセット用鍵登録部136A)
カセット用鍵登録部136Aは、通信部110を介して、カセットの公開鍵(カセット検証用公開鍵)を公開用のリポジトリ200に登録する。
【0159】
(証明書用鍵管理部136B)
証明書用鍵管理部136Bは、検証可能証明書(VC)の署名に用いる証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)を内部(又は安全な保管場所)に保管する。例えば、証明書用鍵管理部136Bは、証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)を内部のデータベース又はテーブルに登録する。
【0160】
(証明書用鍵登録部136C)
証明書用鍵登録部136Cは、通信部110を介して、証明書の発行者(Issuer)の公開鍵(VC検証用公開鍵)を公開用のリポジトリ200に登録する。
【0161】
(証明書署名部137)
証明書署名部137は、証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)を用いて検証可能証明書(VC)に署名する。例えば、証明書署名部137は、通信部110を介して、リポジトリ200に保管されている証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)を参照し、この証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)を用いて検証可能証明書(VC)に署名する。なお、証明書署名部137は、登録部136の一部であってもよい。
【0162】
(提供部138)
提供部138は、証明書提供部138Aと、カセット提供部138Bと、サービス提供部138Cとを有する。
【0163】
(証明書提供部138A)
証明書提供部138Aは、通信部110を介して、検証可能証明書(VC)を利用者U(ユーザ)の端末装置10(認証器)に提供する。なお、証明書提供部138Aは、証明書発行部134の一部であってもよい。
【0164】
(カセット提供部138B)
カセット提供部138Bは、通信部110を介して、カセットを利用者U(ユーザ)の端末装置10(認証器)に提供する。このとき、カセット提供部138Bは、カセットとともにカセットの秘密鍵(カセット検証用秘密鍵)を利用者U(ユーザ)の端末装置10(認証器)に提供する。なお、カセット提供部138Bは、カセット作成部135Aの一部であってもよい。
【0165】
(サービス提供部138C)
サービス提供部138Cは、FIDO認証に成功した場合、通信部110を介して、利用者Uの端末装置10(又は利用者U自身、あるいは利用者Uが保有する他の機器)に、サービスを提供する。また、サービス提供部138Cは、通信部110を介して、他のサーバ装置(認証サーバ)に、認証用公開鍵を提供してもよい。
【0166】
〔5.処理手順〕
次に、図11を用いて実施形態に係るサーバ装置100による処理手順について説明する。図11は、実施形態に係る処理手順を示すシーケンス図である。なお、以下に示す処理手順は、端末装置10の制御部30と、サーバ装置100の制御部130によって繰り返し実行される。
【0167】
例えば、証明書の発行者(Issuer)である事業者のサーバ装置100-1の証明書発行部134は、通信部110を介して、証明書の保有者(Holder)となる利用者U(ユーザ)の端末装置10(認証器)に、利用者Uに関する検証可能証明書(VC)を発行する(ステップS101)。
【0168】
このとき、サーバ装置100-1の証明書署名部137は、証明書の発行者(Issuer)の秘密鍵(VC検証用秘密鍵)を用いて検証可能証明書(VC)に署名する。そして、サーバ装置100-1の証明書提供部138Aは、検証可能証明書(VC)を利用者Uの端末装置10に提供する。利用者Uの端末装置10の証明書受信部34Aは、受信部32を介して、検証可能証明書(VC)を受信する。
【0169】
続いて、サーバ装置100-1の作成部135は、検証可能証明書(VC)を更新する機能を有するカセットと、カセットが検証可能証明書(VC)を更新した際の署名に用いるカセットの秘密鍵(カセット検証用秘密鍵)とを作成して配布する(ステップS102)。
【0170】
このとき、サーバ装置100-1のカセット作成部135Aは、検証可能証明書(VC)を更新する機能を有するカセットを作成する。また、サーバ装置100-1のカセット用鍵作成部135Bは、利用者Uの端末装置10側でカセットが検証可能証明書(VC)を更新した際の署名に用いるカセットの秘密鍵(カセット検証用秘密鍵)と、カセットによる署名を検証するためのカセットの公開鍵(カセット検証用公開鍵)との鍵ペアを作成する。サーバ装置100-1のカセット用鍵登録部136Aは、カセットの公開鍵(カセット検証用公開鍵)を公開用のリポジトリ200に登録する。サーバ装置100-1のカセット提供部138Bは、カセットとともにカセットの秘密鍵(カセット検証用秘密鍵)を利用者Uの端末装置10に提供する。
【0171】
続いて、証明書の保有者(Holder)である利用者Uの端末装置10のカセット受信部36Aは、サーバ装置100-1から、検証可能証明書(VC)を更新する機能を有するカセットとともに、カセットの秘密鍵(カセット検証用秘密鍵)を受信し、カセットと、カセットの秘密鍵(カセット検証用秘密鍵)とをVC管理アプリに取り込む(ステップS103)。
【0172】
続いて、利用者Uの端末装置10の証明書更新部36Bは、カセットの機能により検証可能証明書(VC)を更新し、更新された検証可能証明書(VC)にカセット検証用秘密鍵を用いて署名する(ステップS104)。
【0173】
続いて、利用者Uの端末装置10の提示証明書作成部36Cは、カセットの機能により、複数の検証可能証明書(VC)を組み合わせて1つの提示証明書(VP:Verifiable Presentation)を作成する(ステップS105)。このとき、提示証明書作成部36Cは、カセットの機能により検証可能証明書(VC)が更新された際、提示証明書(VP)に、暗号化された更新前の検証可能証明書(暗号化VC)と、更新後の検証可能証明書(更新VC)とを添付する。
【0174】
続いて、利用者Uの端末装置10の提示証明書署名部36Dは、本人証明用秘密鍵(認証用秘密鍵)を用いて提示証明書(VP)に署名する(ステップS106)。すなわち、提示証明書署名部36Dは、本人証明用秘密鍵を用いて、複数の検証可能証明書(VC)を含む提示証明書(VP)の全体に署名する。
【0175】
続いて、利用者Uの端末装置10の証明書提示部37Aは、送信部31を介して、更新された検証可能証明書(VC)を含む提示証明書(VP)を、証明書の検証者(Verifier)である企業のサーバ装置100-2に送信して提示する(ステップS107)。
【0176】
続いて、証明書の検証者(Verifier)である企業のサーバ装置100-2の認証処理部133は、リポジトリ200に保管されている各種の公開鍵を参照して、提示証明書(VP)と検証可能証明書(VC)の真正性を検証する(ステップS108)。このとき、認証処理部133は、暗号化された更新前の検証可能証明書(暗号化VC)の真正性と、カセットの真正性の検証を以って、更新後の検証可能証明書(更新VC)の適切さを検証する。
【0177】
続いて、サーバ装置100-2のサービス提供部138Cは、真正性の検証に成功した場合、通信部110を介して、利用者Uの端末装置10(又は利用者U自身、あるいは利用者Uが保有する他の機器)に、サービスを提供する(ステップS109)。
【0178】
〔6.変形例〕
上述した端末装置10及びサーバ装置100は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、実施形態の変形例について説明する。
【0179】
上記の実施形態において、サーバ装置100が実行している処理の一部又は全部は、実際には、端末装置10が実行してもよい。例えば、スタンドアローン(Stand-alone)で(端末装置10単体で)処理が完結してもよい。この場合、端末装置10に、上記の実施形態におけるサーバ装置100の機能が備わっているものとする。また、上記の実施形態では、端末装置10はサーバ装置100と連携しているため、利用者Uから見れば、サーバ装置100の処理も端末装置10が実行しているように見える。すなわち、他の観点では、端末装置10は、サーバ装置100を備えているともいえる。
【0180】
また、上記の実施形態において、認証サーバであるサーバ装置100は、FIDO認証と他の認証とを組み合わせて多段階認証としてもよい。例えば、認証サーバであるサーバ装置100は、FIDO認証とパスワード認証とを組み合わせて2段階認証としてもよい。あるいは、認証サーバであるサーバ装置100は、FIDO認証と秘密の質問とを組み合わせて2段階認証としてもよい。
【0181】
また、上記の実施形態において、認証サーバであるサーバ装置100は、FIDO認証において、認証の3要素である「知識情報」、「所持情報」、「生体情報」のうち、2つ以上を組み合わせて認証するようにしてもよい。すなわち、認証サーバであるサーバ装置100は、多要素認証(MFA:Multi-Factor Authentication)を採用してもよい。
【0182】
また、上記の実施形態において、証明書の保有者(Holder)(Holder)である利用者Uの端末装置10(認証器)は、VC更新機能(カセット)により、検証可能証明書(VC)(例:本籍情報つき運転免許証)から「20歳以上(成人)」という情報のみ抽出して新たな検証可能証明書(VC)を作成して発行することもできる。このように、カセットが元の暗号化VCの情報に基づいて(あるいは分割して)新たなVCを発行することも、「VCの更新」の1つである。そのため、更新VCの検証と同様に、証明書の検証者(Verifier)(Verifier)は、元の暗号化VCの真正性と、カセットの真正性の検証を以って、カセットにより新たに発行された検証可能証明書(VC)(カセット発行VC)の適切さを検証することができる。元の暗号化VCの真正性は、証明書の発行者(Issuer)(Issuer)の公開鍵(VC検証用公開鍵)で検証可能である。カセットの真正性は、カセットの公開鍵(カセット検証用公開鍵)で検証可能である。
【0183】
〔7.効果〕
上述してきたように、本願に係る情報処理装置(サーバ装置100)は、証明書の発行者(Issuer)の情報処理装であって、ユーザに関する検証可能証明書(VC)を発行する証明書発行部と、検証可能証明書(VC)を利用者U(ユーザ)の端末装置10(認証器)に提供する証明書提供部138Aと、検証可能証明書(VC)を更新する機能を有するカセットを作成するカセット作成部135Aと、カセットを利用者U(ユーザ)の端末装置10(認証器)に提供するカセット提供部138Bと、を備えることを特徴とする。
【0184】
また、本願に係る情報処理装置(サーバ装置100)は、利用者U(ユーザ)の端末装置10(認証器)側でカセットが検証可能証明書(VC)を更新した際の署名に用いるカセット検証用秘密鍵と、カセットによる署名を検証するためのカセット検証用公開鍵との鍵ペアを作成するカセット用鍵作成部135Bと、カセット検証用公開鍵を公開用のリポジトリ200に登録するカセット用鍵登録部136Aと、をさらに備える。カセット提供部138Bは、カセットとともにカセット検証用秘密鍵を利用者U(ユーザ)の端末装置10(認証器)に提供する。
【0185】
また、本願に係る情報処理装置(サーバ装置100)は、検証可能証明書(VC)の署名に用いるVC検証用秘密鍵と、検証可能証明書(VC)の署名を検証するためのVC検証用公開鍵との鍵ペアを作成する証明書用鍵作成部135Cと、VC検証用秘密鍵を用いて検証可能証明書(VC)に署名する証明書署名部137と、VC検証用秘密鍵を内部に保管する証明書用鍵管理部136Bと、VC検証用公開鍵を公開用のリポジトリ200に登録する証明書用鍵登録部136Cと、をさらに備える。
【0186】
別の観点では、本願に係る情報処理装置(端末装置10)は、証明書の保有者(Holder)の情報処理装置であって、証明書の発行者(Issuer)が発行したユーザに関する検証可能証明書(VC)を受信する証明書受信部と、証明書の発行者(Issuer)が作成した検証可能証明書(VC)を更新する機能を有するカセットを受信するカセット受信部36Aと、カセットの機能により検証可能証明書(VC)を更新する証明書更新部36Bと、更新された検証可能証明書(VC)を証明書の検証者(Verifier)に送信して提示する証明書提示部37Aと、を備えることを特徴とする。
【0187】
また、カセット受信部36Aは、証明書の発行者(Issuer)から、カセットとともに、カセットの機能による検証可能証明書(VC)の更新時の署名に用いられるカセット検証用秘密鍵を受信する。証明書更新部36Bは、カセットの機能により検証可能証明書(VC)を更新し、更新された検証可能証明書(VC)にカセット検証用秘密鍵を用いて署名する。
【0188】
また、本願に係る情報処理装置(端末装置10)は、カセットの機能により、複数の検証可能証明書(VC)を組み合わせて1つの提示証明書(VP)を作成する提示証明書作成部36Cをさらに備える。提示証明書作成部36Cは、カセットの機能により検証可能証明書(VC)が更新された際、提示証明書(VP)に、暗号化された更新前の検証可能証明書(暗号化VC)と、更新後の検証可能証明書(更新VC)とを添付する。
【0189】
また、本願に係る情報処理装置(端末装置10)は、ユーザ本人が作成したことを認証する本人証明用秘密鍵と、対応する本人証明用公開鍵との鍵ペアを作成する本人証明用鍵作成部35Aと、本人証明用秘密鍵を用いて提示証明書(VP)に署名する提示証明書署名部36Dと、本人証明用秘密鍵を内部に保管する本人証明用鍵管理部35Bと、本人証明用公開鍵を公開する本人証明用鍵公開部35Cと、をさらに備える。
【0190】
上述した各処理のいずれかもしくは組合せにより、本願に係る情報処理装置は、認証の効率をさらに向上させることができる。
【0191】
〔8.ハードウェア構成〕
また、上述した実施形態に係る端末装置10やサーバ装置100は、例えば図12に示すような構成のコンピュータ1000によって実現される。以下、サーバ装置100を例に挙げて説明する。図12は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力I/F(Interface)1060、入力I/F1070、ネットワークI/F1080がバス1090により接続された形態を有する。
【0192】
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。演算装置1030は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等により実現される。
【0193】
一次記憶装置1040は、RAM(Random Access Memory)等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等により実現される。二次記憶装置1050は、内蔵ストレージであってもよいし、外付けストレージであってもよい。また、二次記憶装置1050は、USB(Universal Serial Bus)メモリやSD(Secure Digital)メモリカード等の取り外し可能な記憶媒体であってもよい。また、二次記憶装置1050は、クラウドストレージ(オンラインストレージ)やNAS(Network Attached Storage)、ファイルサーバ等であってもよい。
【0194】
出力I/F1060は、ディスプレイ、プロジェクタ、及びプリンタ等といった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインターフェースであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力I/F1070は、マウス、キーボード、キーパッド、ボタン、及びスキャナ等といった各種の入力装置1020から情報を受信するためのインターフェースであり、例えば、USB等により実現される。
【0195】
また、出力I/F1060及び入力I/F1070はそれぞれ出力装置1010及び入力装置1020と無線で接続してもよい。すなわち、出力装置1010及び入力装置1020は、ワイヤレス機器であってもよい。
【0196】
また、出力装置1010及び入力装置1020は、タッチパネルのように一体化していてもよい。この場合、出力I/F1060及び入力I/F1070も、入出力I/Fとして一体化していてもよい。
【0197】
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、又は半導体メモリ等から情報を読み出す装置であってもよい。
【0198】
ネットワークI/F1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が作成したデータを他の機器へ送信する。
【0199】
演算装置1030は、出力I/F1060や入力I/F1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
【0200】
例えば、コンピュータ1000がサーバ装置100として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムを実行することにより、制御部130の機能を実現する。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器から取得したプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行してもよい。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器と連携し、プログラムの機能やデータ等を他の機器の他のプログラムから呼び出して利用してもよい。
【0201】
〔9.その他〕
以上、本願の実施形態を説明したが、これら実施形態の内容により本発明が限定されるものではない。また、前述した構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。さらに、前述した構成要素は適宜組み合わせることが可能である。さらに、前述した実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換又は変更を行うことができる。
【0202】
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0203】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【0204】
例えば、上述したサーバ装置100は、複数のサーバコンピュータで実現してもよく、また、機能によっては外部のプラットフォーム等をAPI(Application Programming Interface)やネットワークコンピューティング等で呼び出して実現するなど、構成は柔軟に変更できる。
【0205】
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0206】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【0207】
1 情報処理システム
10 端末装置
33 処理部
34A 証明書受信部
35A 本人証明用鍵作成部
35B 本人証明用鍵管理部
35C 本人証明用鍵公開部
36A カセット受信部
36B 証明書更新部
36C 提示証明書作成部
36D 提示証明書署名部
37A 証明書提示部
40C VC管理アプリ
100 サーバ装置
110 通信部
120 記憶部
121 利用者情報データベース
122 履歴情報データベース
123 鍵情報データベース
124 カセット情報データベース
130 制御部
131 取得部
132 登録処理部
133 認証処理部
134 証明書発行部
135A カセット作成部
135B カセット用鍵作成部
135C 証明書用鍵作成部
136A カセット用鍵登録部
136B 証明書用鍵管理部
136C 証明書用鍵登録部
137 証明書署名部
138A 証明書提供部
138B カセット提供部
138C サービス提供部
200 リポジトリ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12