(58)【調査した分野】(Int.Cl.,DB名)
前記ユーザ認証マルチパーティ計算において前記ユーザ装置が作成する前記正当性証明はゼロ知識証明(ZKIP:Zero-Knowledge Interactive Proof)である、
請求項4に記載の認証システム。
前記ユーザ認証マルチパーティ計算において前記ユーザ装置が作成する前記正当性証明はメッセージ認証子(MAC:Message Authentication Code)である、
請求項4に記載の認証システム。
前記機器認証マルチパーティ計算において前記ユーザ装置が作成する前記正当性証明はゼロ知識証明(ZKIP:Zero-Knowledge Interactive Proof)である、
請求項14に記載の認証システム。
前記機器認証マルチパーティ計算において前記ユーザ装置が作成する前記正当性証明はメッセージ認証子(MAC:Message Authentication Code)である、
請求項14に記載の認証システム。
前記ユーザ装置は、前記ユーザ認証マルチパーティ計算が終了すると、前記ユーザ認証結果分散シェアのいくつかを利用してユーザ認証結果を復元し、前記ユーザ認証結果が受理である場合、前記機器認証サーバ装置とサーバサイド補助装置とともに前記機器認証を実行し、前記ユーザ認証結果が拒否である場合、前記機器認証を実行することなく前記ユーザに認証が拒否された旨を通知する、
請求項1ないし17のいずれか1項に記載の認証システム。
前記検証情報分散シェア生成では、検証情報分散シェア作成マルチパーティ計算を実行することで前記検証情報分散シェアを作成し、前記検証情報分散シェア作成マルチパーティ計算を行う前に、
前記検証用ユーザ固有情報から検証用ユーザ固有情報の分散シェアであるMPC入力検証用ユーザ固有情報分散シェアを作り、前記MPC入力検証用ユーザ固有情報分散シェアを前記検証情報分散シェア作成マルチパーティ計算に参加する装置に配り、
前記検証情報分散シェア作成マルチパーティ計算に参加する装置は前記MPC入力検証用ユーザ固有情報分散シェアを前記検証情報分散シェア作成マルチパーティ計算に用いる、
請求項1ないし25のいずれか1項に記載の認証システム。
前記検証情報分散シェア生成では、前記検証情報分散シェア作成マルチパーティ計算を実行するとともに、事前準備時入力検証用ユーザ固有情報分散シェア作成と、MPC入力検証用ユーザ固有情報分散シェア作成を実行し、
前記ユーザ認証事前準備では、前記事前準備時入力検証用ユーザ固有情報分散シェア作成を実行し、
前記ユーザ認証では、前記MPC入力検証用ユーザ固有情報分散シェア作成と前記検証情報分散シェア作成マルチパーティ計算を実行し、
前記事前準備時入力検証用ユーザ固有情報分散シェア作成では、前記検証用ユーザ固有情報を入力として受け取り、前記検証用ユーザ固有情報の分散シェアである事前準備時検証用ユーザ固有情報分散シェアを出力して、前記事前準備時検証用ユーザ固有情報分散シェアを必要とする装置に送り、前記ユーザ装置および前記ユーザサイド補助装置は前記事前準備時検証用ユーザ固有情報分散シェアを保管し、
前記MPC入力検証用ユーザ固有情報分散シェア作成では、前記ユーザ装置は自身の保有する前記事前準備時検証用ユーザ固有情報分散シェアから求まるデータを前記ユーザサイド補助装置に送り、前記ユーザサイド補助装置は自身の保有する前記事前準備時検証用ユーザ固有情報分散シェアと前記ユーザ装置から送られてきた前記事前準備時検証用ユーザ固有情報分散シェアから求めた前記データとを用いて前記MPC入力検証用ユーザ固有情報分散シェアを作る、
請求項29または30に記載の認証システム。
前記事前準備時入力検証用ユーザ固有情報分散シェア作成では、Mをユーザサイド補助装置の台数とするとき、前記検証用ユーザ固有情報を前記M個に秘密分散して分散シェアe[1],...,e[M]を作り、i=1,...,Mに対して前記分散シェアe[i]を2つに秘密分散して分散シェアc[i]とd[i]を作り、前記分散シェアd[i]をi番目の前記ユーザサイド補助装置の事前準備時入力検証用ユーザ固有情報分散シェアとし、前記分散シェアc[1],...,c[M]を前記ユーザ装置の事前準備時入力検証用ユーザ固有情報分散シェアとし、
前記MPC入力検証用ユーザ固有情報分散シェア作成では、i=1,...,Mに対し、前記(c[1],...,c[M])から求まるデータであるc[i]を前記ユーザ装置がi番目の前記ユーザサイド補助装置に送り、i番目の前記ユーザサイド補助装置は自身が保有する前記分散シェアd[i]と前記ユーザ装置から送られてきた前記分散シェアc[i]とを用いて秘密分散の復元を実行することで前記分散シェアe[i]を計算し、前記分散シェアe[i]を前記MPC入力検証用ユーザ固有情報分散シェアとして用いる、
請求項31に記載の認証システム。
前記検証情報分散シェア生成では、前記検証情報分散シェア作成マルチパーティ計算を実行するとともに、MPC入力検証用ユーザ固有情報分散シェア作成と保存用分散シェア作成と検証情報分散シェア復元を実行し、
前記ユーザ認証事前準備では、前記MPC入力検証用ユーザ固有情報分散シェア作成と前記検証情報分散シェア作成マルチパーティ計算と前記保存用分散シェア作成を実行し、
前記ユーザ認証では、前記検証情報分散シェア復元を実行し、
前記MPC入力検証用ユーザ固有情報分散シェア作成では、前記検証用ユーザ固有情報を秘密分散して分散シェアである前記MPC入力検証用ユーザ固有情報分散シェアを作成し、前記MPC入力検証用ユーザ固有情報分散シェアを前記ユーザサイド補助装置に送り、
前記保存用分散シェア作成では、前記検証情報分散シェア作成マルチパーティ計算の出力として前記ユーザサイド補助装置が保有する前記検証情報分散シェアを用いて保存用分散シェアを作成し、前記保存用分散シェアを前記ユーザ装置と前記ユーザサイド補助装置が保管し、
前記検証情報分散シェア復元では、前記ユーザ装置は自身が保持する保存用分散シェアから求まるデータを前記ユーザサイド補助装置に送信し、前記ユーザサイド補助装置は自身が保管している前記保存用分散シェアと前記ユーザ装置が送信した前記ユーザ装置の前記保存用分散シェアから求まる前記データとを用いて前記検証情報分散シェアを計算する、
請求項29または30に記載の認証システム。
前記保存用分散シェア作成では、Mをユーザサイド補助装置の台数とするとき、i=1,...,Mに対し、i台目の前記ユーザサイド補助装置は前記検証情報分散シェア作成マルチパーティ計算の出力である前記検証情報分散シェアv[i]を2つに秘密分散することで前記検証情報分散シェアv[i]の分散シェアu[i]とw[i]を求め、i台目の前記ユーザサイド補助装置は前記分散シェアw[i]を自身の前記保存用分散シェアとして保管し、前記分散シェアu[i]を前記ユーザ装置に送り、前記ユーザ装置はi=1,...,Mに対し、前記分散シェアu[1],...,u[M]を受信して前記分散シェアu[1],...,u[M]を自身の前記保存用分散シェアとして保管し、
前記検証情報分散シェア復元では、i=1,...,Mに対し、前記ユーザ装置は自身が保持する前記保存用分散シェアu[1],...,u[M]から求まるデータu[i]をi番目の前記ユーザサイド補助装置に送信し、i=1,...,Mに対し、i番目の前記ユーザサイド補助装置は自身が保持する保存用シェアであるw[i]と前記ユーザ装置から送信された前記データu[i]とを用いて秘密分散の復元処理を行うことで、前記検証情報分散シェアv[i]を復元する、
請求項33に記載の認証システム。
ユーザ装置と、前記ユーザ装置のユーザを認証するユーザ認証および前記ユーザ装置を認証する機器認証を補助するユーザサイド補助装置と、前記ユーザ装置との間で前記機器認証を行う機器認証サーバ装置と、を備えた認証システムにおいて、
前記ユーザ装置が、秘密鍵の分散シェアを生成するステップと、
前記ユーザ装置が検証情報の分散シェアを用いて前記ユーザサイド補助装置との間で前記ユーザ認証のためのマルチパーティ計算を行うステップと、
前記ユーザ装置が前記秘密鍵の分散シェアを用いて、前記ユーザサイド補助装置との間で前記機器認証のためのマルチパーティ計算を行うステップと、を含み、
ユーザ認証事前準備、ユーザ認証、検証情報分散シェア生成、機器認証事前準備および機器認証を行うように構成され、
前記ユーザ認証事前準備では前記ユーザ装置が前記ユーザ認証に先立って必要情報を準備するステップを含み、
前記機器認証事前準備では前記ユーザ装置が前記機器認証に先立って必要情報を準備するステップとを含み、
前記ユーザ認証事前準備では、前記ユーザ装置が前記ユーザ装置を所有するユーザの固有情報である検証用ユーザ固有情報を取得するステップを含み、
前記検証情報分散シェア生成では、前記ユーザ装置が前記検証用ユーザ固有情報から前記ユーザ認証で取得した情報と照合するための検証情報の分散シェアである検証情報分散シェアを計算するステップと、前記ユーザサイド補助装置は前記検証情報分散シェアを取得するステップと、を含み、前記検証情報分散シェア生成の一部または全部は前記ユーザ認証事前準備で行われ、前記検証情報分散シェア生成の残部は前記ユーザ認証で行われ、
前記機器認証事前準備では、前記ユーザ装置の秘密鍵を作成するステップと、前記ユーザ装置が前記秘密鍵を秘密分散するステップと、前記秘密分散により生成された複数ある秘密鍵分散シェアのいくつかを前記ユーザサイド補助装置に送るステップと、前記ユーザサイド補助装置が前記秘密鍵分散シェアを保管のために格納するステップと、を含み、
前記ユーザ認証では、前記ユーザ装置が前記ユーザの固有情報である認証用ユーザ固有情報を取得するステップと、前記ユーザ装置が前記認証用ユーザ固有情報または前記認証用ユーザ固有情報から計算される情報を用いてユーザ認証マルチパーティ計算を実行することで前記ユーザを認証するステップと、前記ユーザサイド補助装置が前記検証情報分散シェアを用いて前記ユーザ認証マルチパーティ計算に参加するステップと、前記ユーザサイド補助装置が前記ユーザ認証マルチパーティ計算の結果として前記ユーザが受理されたのか拒否されたのかを示すデータの分散シェアであるユーザ認証結果分散シェアを取得するステップと、を含み、
前記機器認証では、前記ユーザ装置が前記機器認証サーバ装置と通信することで前記機器認証サーバ装置から認証を受けるステップと、前記ユーザ装置および前記機器認証サーバ装置は一回または複数回の通信を行い、前記機器認証サーバ装置が前記機器認証の検証に必要なデータを作成して前記ユーザ装置に送信するステップと、前記ユーザ装置が前記機器認証サーバ装置から送られてきた前記検証に必要なデータを受信するステップと、前記ユーザ装置が前記ユーザサイド補助装置と通信することで前記機器認証の証明に必要なデータを作成するステップと、を含み、
前記ユーザ装置が前記証明に必要なデータを作成するために、前記機器認証サーバ装置から送られてきた前記検証に必要なデータを加工して得られたデータを前記ユーザサイド補助装置に送信するステップと、前記ユーザサイド補助装置が前記ユーザ装置から送られてきた前記加工された前記検証に必要なデータと前記秘密鍵分散シェアを用いて機器認証マルチパーティ計算を行うステップと、前記ユーザ装置が前記機器認証マルチパーティ計算の結果として得られた分散シェアを複数用いて復元されたデータを加工したものを前記証明に必要なデータとして前記機器認証サーバ装置に送るステップと、を含む、
認証方法。
ユーザ装置と、前記ユーザ装置のユーザを認証するユーザ認証および前記ユーザ装置を認証する機器認証を補助するユーザサイド補助装置と、前記ユーザ装置との間で前記機器認証を行う機器認証サーバ装置と、を備えた認証システムにおいて、
前記ユーザサイド補助装置が、検証情報の分散シェアを用いて前記ユーザ装置との間で前記ユーザ認証のためのマルチパーティ計算を行うステップと、
前記ユーザサイド補助装置が、前記ユーザ装置が生成した秘密鍵の分散シェアを用いて、前記ユーザ装置との間で前記機器認証のためのマルチパーティ計算を行うステップと、を含み、
ユーザ認証事前準備、ユーザ認証、検証情報分散シェア生成、機器認証事前準備および機器認証を行うように構成され、
前記ユーザ認証事前準備では前記ユーザ装置が前記ユーザ認証に先立って必要情報を準備するステップを含み、
前記機器認証事前準備では前記ユーザ装置が前記機器認証に先立って必要情報を準備するステップを含み、
前記ユーザ認証事前準備では、前記ユーザ装置が前記ユーザ装置を所有するユーザの固有情報である検証用ユーザ固有情報を取得するステップを含み、
前記検証情報分散シェア生成では、前記ユーザ装置が前記検証用ユーザ固有情報から前記ユーザ認証で取得した情報と照合するための検証情報の分散シェアである検証情報分散シェアを計算するステップと、前記ユーザサイド補助装置は前記検証情報分散シェアを取得するステップと、を含み、前記検証情報分散シェア生成の一部または全部は前記ユーザ認証事前準備で行われ、前記検証情報分散シェア生成の残部は前記ユーザ認証で行われ、
前記機器認証事前準備では、前記ユーザ装置の秘密鍵を作成するステップと、前記ユーザ装置が前記秘密鍵を秘密分散するステップと、前記秘密分散により生成された複数ある秘密鍵分散シェアのいくつかを前記ユーザサイド補助装置に送るステップと、前記ユーザサイド補助装置が前記秘密鍵分散シェアを保管のために格納するステップと、を含み、
前記ユーザ認証では、前記ユーザ装置が前記ユーザの固有情報である認証用ユーザ固有情報を取得するステップと、前記ユーザ装置が前記認証用ユーザ固有情報または前記認証用ユーザ固有情報から計算される情報を用いてユーザ認証マルチパーティ計算を実行することで前記ユーザを認証するステップと、前記ユーザサイド補助装置が前記検証情報分散シェアを用いて前記ユーザ認証マルチパーティ計算に参加するステップと、前記ユーザサイド補助装置が前記ユーザ認証マルチパーティ計算の結果として前記ユーザが受理されたのか拒否されたのかを示すデータの分散シェアであるユーザ認証結果分散シェアを取得するステップと、を含み、
前記機器認証では、前記ユーザ装置が前記機器認証サーバ装置と通信することで前記機器認証サーバ装置から認証を受けるステップと、前記ユーザ装置および前記機器認証サーバ装置は一回または複数回の通信を行い、前記機器認証サーバ装置が前記機器認証の検証に必要なデータを作成して前記ユーザ装置に送信するステップと、前記ユーザ装置が前記機器認証サーバ装置から送られてきた前記検証に必要なデータを受信するステップと、前記ユーザ装置が前記ユーザサイド補助装置と通信することで前記機器認証の証明に必要なデータを作成するステップと、を含み、
前記ユーザ装置が前記証明に必要なデータを作成するために、前記機器認証サーバ装置から送られてきた前記検証に必要なデータを加工して得られたデータを前記ユーザサイド補助装置に送信するステップと、前記ユーザサイド補助装置が前記ユーザ装置から送られてきた前記加工された前記検証に必要なデータと前記秘密鍵分散シェアを用いて機器認証マルチパーティ計算を行うステップと、前記ユーザ装置が前記機器認証マルチパーティ計算の結果として得られた分散シェアを複数用いて復元されたデータを加工したものを前記証明に必要なデータとして前記機器認証サーバ装置に送るステップと、を含む、
認証方法。
ユーザ装置と、前記ユーザ装置のユーザを認証するユーザ認証および前記ユーザ装置を認証する機器認証を補助するユーザサイド補助装置と、前記ユーザ装置との間で前記機器認証を行う機器認証サーバ装置と、を備えた認証システムにおいて、
前記ユーザ装置が秘密鍵の分散シェアを生成する処理と、
前記ユーザ装置が検証情報の分散シェアを用いて前記ユーザサイド補助装置との間で前記ユーザ認証のためのマルチパーティ計算を行う処理と、
前記ユーザ装置が前記秘密鍵の分散シェアを用いて、前記ユーザサイド補助装置との間で前記機器認証のためのマルチパーティ計算を行う処理と、を前記ユーザ装置に設けられたコンピュータに実行させるプログラムであって、
ユーザ認証事前準備、ユーザ認証、検証情報分散シェア生成、機器認証事前準備および機器認証を行うように構成され、
前記ユーザ認証事前準備では前記ユーザ装置が前記ユーザ認証に先立って必要情報を準備する処理をコンピュータに実行させ、
前記機器認証事前準備では前記ユーザ装置が前記機器認証に先立って必要情報を準備する処理をコンピュータに実行させ、
前記ユーザ認証事前準備では、前記ユーザ装置が前記ユーザ装置を所有するユーザの固有情報である検証用ユーザ固有情報を取得する処理をコンピュータに実行させ、
前記検証情報分散シェア生成では、前記ユーザ装置が前記検証用ユーザ固有情報から前記ユーザ認証で取得した情報と照合するための検証情報の分散シェアである検証情報分散シェアを計算する処理と、前記ユーザサイド補助装置は前記検証情報分散シェアを取得する処理と、をコンピュータに実行させ、前記検証情報分散シェア生成の一部または全部は前記ユーザ認証事前準備で行われ、前記検証情報分散シェア生成の残部は前記ユーザ認証で行われ、
前記機器認証事前準備では、前記ユーザ装置の秘密鍵を作成する処理と、前記ユーザ装置が前記秘密鍵を秘密分散する処理と、前記秘密分散により生成された複数ある秘密鍵分散シェアのいくつかを前記ユーザサイド補助装置に送る処理と、前記ユーザサイド補助装置が前記秘密鍵分散シェアを保管のために格納する処理と、をコンピュータに実行させ、
前記ユーザ認証では、前記ユーザ装置が前記ユーザの固有情報である認証用ユーザ固有情報を取得する処理と、前記ユーザ装置が前記認証用ユーザ固有情報または前記認証用ユーザ固有情報から計算される情報を用いてユーザ認証マルチパーティ計算を実行することで前記ユーザを認証する処理と、前記ユーザサイド補助装置が前記検証情報分散シェアを用いて前記ユーザ認証マルチパーティ計算に参加する処理と、前記ユーザサイド補助装置が前記ユーザ認証マルチパーティ計算の結果として前記ユーザが受理されたのか拒否されたのかを示すデータの分散シェアであるユーザ認証結果分散シェアを取得する処理と、をコンピュータに実行させ、
前記機器認証では、前記ユーザ装置が前記機器認証サーバ装置と通信することで前記機器認証サーバ装置から認証を受ける処理と、前記ユーザ装置および前記機器認証サーバ装置は一回または複数回の通信を行い、前記機器認証サーバ装置が前記機器認証の検証に必要なデータを作成して前記ユーザ装置に送信する処理と、前記ユーザ装置が前記機器認証サーバ装置から送られてきた前記検証に必要なデータを受信する処理と、前記ユーザ装置が前記ユーザサイド補助装置と通信することで前記機器認証の証明に必要なデータを作成する処理と、をコンピュータに実行させ、
前記ユーザ装置が前記証明に必要なデータを作成するために、前記機器認証サーバ装置から送られてきた前記検証に必要なデータを加工して得られたデータを前記ユーザサイド補助装置に送信する処理と、前記ユーザサイド補助装置が前記ユーザ装置から送られてきた前記加工された前記検証に必要なデータと前記秘密鍵分散シェアを用いて機器認証マルチパーティ計算を行う処理と、前記ユーザ装置が前記機器認証マルチパーティ計算の結果として得られた分散シェアを複数用いて復元されたデータを加工したものを前記証明に必要なデータとして前記機器認証サーバ装置に送る処理と、をコンピュータに実行させる、
プログラム。
ユーザ装置と、前記ユーザ装置のユーザを認証するユーザ認証および前記ユーザ装置を認証する機器認証を補助するユーザサイド補助装置と、前記ユーザ装置との間で前記機器認証を行う機器認証サーバ装置と、を備えた認証システムにおいて、
前記ユーザサイド補助装置が検証情報の分散シェアを用いて前記ユーザ装置との間で前記ユーザ認証のためのマルチパーティ計算を行う処理と、
前記ユーザサイド補助装置が前記ユーザ装置が生成した秘密鍵の分散シェアを用いて、前記ユーザ装置との間で前記機器認証のためのマルチパーティ計算を行う処理と、を前記ユーザサイド補助装置に設けられたコンピュータに実行させるプログラムであって、
ユーザ認証事前準備、ユーザ認証、検証情報分散シェア生成、機器認証事前準備および機器認証を行うように構成され、
前記ユーザ認証事前準備では前記ユーザ装置が前記ユーザ認証に先立って必要情報を準備する処理をコンピュータに実行させ、
前記機器認証事前準備では前記ユーザ装置が前記機器認証に先立って必要情報を準備する処理をコンピュータに実行させ、
前記ユーザ認証事前準備では、前記ユーザ装置が前記ユーザ装置を所有するユーザの固有情報である検証用ユーザ固有情報を取得する処理をコンピュータに実行させ、
前記検証情報分散シェア生成では、前記ユーザ装置が前記検証用ユーザ固有情報から前記ユーザ認証で取得した情報と照合するための検証情報の分散シェアである検証情報分散シェアを計算する処理と、前記ユーザサイド補助装置は前記検証情報分散シェアを取得する処理と、をコンピュータに実行させ、前記検証情報分散シェア生成の一部または全部は前記ユーザ認証事前準備で行われ、前記検証情報分散シェア生成の残部は前記ユーザ認証で行われ、
前記機器認証事前準備では、前記ユーザ装置の秘密鍵を作成する処理と、前記ユーザ装置が前記秘密鍵を秘密分散する処理と、前記秘密分散により生成された複数ある秘密鍵分散シェアのいくつかを前記ユーザサイド補助装置に送る処理と、前記ユーザサイド補助装置が前記秘密鍵分散シェアを保管のために格納する処理と、をコンピュータに実行させ、
前記ユーザ認証では、前記ユーザ装置が前記ユーザの固有情報である認証用ユーザ固有情報を取得する処理と、前記ユーザ装置が前記認証用ユーザ固有情報または前記認証用ユーザ固有情報から計算される情報を用いてユーザ認証マルチパーティ計算を実行することで前記ユーザを認証する処理と、前記ユーザサイド補助装置が前記検証情報分散シェアを用いて前記ユーザ認証マルチパーティ計算に参加する処理と、前記ユーザサイド補助装置が前記ユーザ認証マルチパーティ計算の結果として前記ユーザが受理されたのか拒否されたのかを示すデータの分散シェアであるユーザ認証結果分散シェアを取得する処理と、をコンピュータに実行させ、
前記機器認証では、前記ユーザ装置が前記機器認証サーバ装置と通信することで前記機器認証サーバ装置から認証を受ける処理と、前記ユーザ装置および前記機器認証サーバ装置は一回または複数回の通信を行い、前記機器認証サーバ装置が前記機器認証の検証に必要なデータを作成して前記ユーザ装置に送信する処理と、前記ユーザ装置が前記機器認証サーバ装置から送られてきた前記検証に必要なデータを受信する処理と、前記ユーザ装置が前記ユーザサイド補助装置と通信することで前記機器認証の証明に必要なデータを作成する処理と、をコンピュータに実行させ、
前記ユーザ装置が前記証明に必要なデータを作成するために、前記機器認証サーバ装置から送られてきた前記検証に必要なデータを加工して得られたデータを前記ユーザサイド補助装置に送信する処理と、前記ユーザサイド補助装置が前記ユーザ装置から送られてきた前記加工された前記検証に必要なデータと前記秘密鍵分散シェアを用いて機器認証マルチパーティ計算を行う処理と、前記ユーザ装置が前記機器認証マルチパーティ計算の結果として得られた分散シェアを複数用いて復元されたデータを加工したものを前記証明に必要なデータとして前記機器認証サーバ装置に送る処理と、をコンピュータに実行させる、
プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0009】
上記非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。
【0010】
上述の既存の認証方法によると、認証サーバ側が情報漏えいを起こした際、ユーザ固有の検証情報が不正者の手に渡ってしまうという危険を伴う。パスワード認証など多くの認証システムでは検証情報から認証情報を再現することが容易である。したがって、不正者は再現された認証情報を用いることで、ユーザに成りすまして認証サーバの提供するウェブサービスを利用できてしまう。
【0011】
また、ユーザは複数のウェブサービスで同一の認証情報を利用している可能性が高い。このとき、1つのウェブサービスで検証情報が漏えいすると、不正者はユーザの利用しているすべてのウェブサービスで成りすましが可能となるという問題がある。
【0012】
特に認証情報として生体情報を利用していた場合、重大な問題が生じ得る。なぜなら、ユーザの生体情報は終生不変であるため、一度の情報漏えいで未来永劫にユーザが成りすましの危険にさらされるからである。
【0013】
また、ウェブサービスを提供する認証サーバの管理者は、ユーザの検証情報を含めた認証サーバ内の全データを閲覧することができる。したがって、認証サーバ管理者は、ユーザの検証情報を入手することで容易に成りすましができてしまう。
【0014】
[単純な問題回避策]
こうした問題を回避する方法は、いくつか提案されているものの、いずれも決定的な解決策にはなっていない。例えば、パスワード認証においてこの問題を回避する古典的な方法として、認証サーバ側にユーザのパスワードPそのものではなく、パスワードPのハッシュ値h=Hash(P)を保管するというものがある。これにより、不正者が認証サーバ側のデータを読むことで直接認証情報Pを手に入れることが不可能となる。
【0015】
しかし、かかる方法は上述の問題を完全に解決するものではない。なぜなら、認証サーバ側のデータを読むことに成功した場合、不正者はハッシュ値hを手に入れることができる。パスワードや生体情報といった認証情報はエントロピーが小さいため、h=Hash(P)を満たすパスワードPを全数探索することで特定できてしまう。特に不正者が認証サーバ管理者当人である場合、ハッシュ値hの入手は容易であるため、認証サーバ管理者には認証情報の秘密を保つことができない。
【0016】
上述の攻撃手法のように、ユーザ側の装置と通信することなく、サーバ側の装置のみを不正利用して認証情報を特定する攻撃手法を、以下「サーバサイド・オフライン攻撃」と呼ぶ。Pの探索の度にユーザ側の装置との通信が必要となるタイプの攻撃の場合、ユーザ側の装置で通信回数に上限を定めることで、不正者に全数攻撃をさせないように防御することができる。しかしながら、サーバサイド・オフライン攻撃の場合、ユーザ側の装置とは一切通信しない。この場合、不正者はユーザに気付かれることなくPの全数探索ができてしまうため、大きな問題となる。
【0017】
別の解決手法として、検証情報Pを直接認証サーバに保管する代わりに、Pを暗号化した暗号文Enc(P)を認証サーバに保管する方法が知られている。この方法によれば、認証サーバに保管された暗号文を不正者に奪われたとしても、Pの情報を秘匿することができる。
【0018】
しかし、この解決手法の場合、Enc(P)を復号するための秘密鍵をどこに保管すべきかという問題が生じる。秘密鍵を認証サーバ自身に保管すると、認証サーバに侵入した不正者は、Enc(P)と秘密鍵の両方を取得することができ、検証情報Pを容易に復元できてしまう。さらに、上述のように、不正者はPからユーザの認証情報を再現することができる。このことは、かかる解決手法がサーバサイド・オフライン攻撃に弱いことを意味する。
【0019】
以上に述べたように、サーバサイド・オフライン攻撃に対して安全性を保証することは容易ではない。特に、不正者が認証サーバの管理者自身である場合、不正者はサーバサイド・オフライン攻撃を簡単に実行でき、非常に大きな問題となる。
【0020】
[既存の暗号技術]
認証に関して既にいくつかの発明が提案されている。これらの既存発明について述べるための準備として、既存の暗号技術である秘密分散、マルチパーティ計算(MPC:Multi-Party Computation)、および、依頼計算について述べる。
【0021】
[秘密分散]
秘密分散とは、秘密のデータを複数の装置で「分散シェア」することで、データの秘匿性を高める技術である。
【0022】
秘密分散には、1台の「分散装置」と、複数台の「シェア保有装置」と、1台の「復元装置」が関与する。なお、分散装置と復元装置とが同一である場合、または、シェア保有装置のうちの1台と分散装置もしくは復元装置とが同一である場合もある。以下では、分散装置、シェア保有装置および復元装置は、別個の装置である場合について説明する。
【0023】
ここで、シェア保有装置の台数をMとする。
【0024】
分散装置は秘密のデータKを入力として受け取り、K(とM)を使用して「分散手段」を実行し、分散手段の出力として「シェア」s[1],...,s[M]を得る。i=1,...,Mに対し、分散装置はシェアs[i]をi台目のシェア保有装置に送信する。
【0025】
秘密のデータKが必要になった場合、復元装置はシェア保有装置の何台かからシェアを受け取り、これらのシェアを入力して「復元手段」を実行することで秘密のデータKを復元することができる。
【0026】
秘密分散には「秘密分散安全性条件」と呼ばれている条件が存在し、以下を満たす。
不正者に乗っ取られた装置の集合が秘密分散安全性条件を満たしている限り、不正者は秘密のデータKの情報を一切知ることができない。
不正者に乗っ取られた装置の集合が秘密分散安全性条件を満たしている限り、不正者に乗っ取られていない装置のシェアを復元装置に送ることで復元装置は復元手段により秘密のデータKを復元することができる。
【0027】
[Shamir秘密分散]
秘密分散の代表的な方法の1つとして、Shamir秘密分散がある(非特許文献10)。
Shamir秘密分散では、値t≦Mを1つ固定し、t+1個以上の元を持つ有限体Fを1つ固定し、さらにFの元a[0],...,a[M]を固定する。
【0028】
Shamir秘密分散法において、秘密Kは有限体Fの元である。Shamir秘密分散法の分散手段では、f(a[0])=Kを満たすt次多項式fをランダムに選び、s[1]=f(a[1]),...,s[M]=f(a[M])とする。
【0029】
復元装置が、これらのシェアのうちのt個のシェアs[i1],....,s[it]を得たとする。すると、復元装置は任意のj=1,...,tに対してs[ij]=f(a[ij])を満たす多項式fを一意に決定できるため、多項式fを用いて秘密K=f(a[0])を復元することができる。
【0030】
Shamir秘密分散法において、秘密分散安全性条件は「不正者に乗っ取られた装置の台数はt-1台以下である」という条件である。したがって、Shamir秘密分散法では以下が満たされる。
不正者に乗っ取られた装置の台数がt-1台以下であれば、不正者は秘密Kの情報を一切得ることができない。
不正者に乗っ取られた装置の台数がt-1台以下であれば、不正者に乗っ取られていない装置のシェアを復元装置に送ることで復元装置は復元手段により秘密Kを復元することができる。
【0031】
[マルチパーティ計算(MPC:Multi-Parti Computation)]
認証の安全性を高める方式は、他にもいくつか提案されている。これらを説明するために、これらの要素技術であるマルチパーティ計算(MPC:Multi-Party Computation)を説明する。
【0032】
MPCとは、複数台の装置(以下、MPC装置)が相互に通信することで、与えられたデータx[1],...,x[M]の秘匿性を保ちつつ、計算結果のデータf(x[1],...,x[M])を計算する手法である。ここでfは事前に定められた関数である。本明細書では以下、関数fのことをMPCの「計算関数」と呼ぶ。
【0033】
マルチパーティ計算として、様々な手法が知られている。これらの手法の多くは、装置が複数台結託して不正を行った場合に対しても安全である。すなわち、結託した装置の集合が事前に定められた条件(以下、「MPC安全性条件」という。例えば「結託した装置の台数が閾値kよりも小さい」という条件)を満たしている限り、次のことが保証される。すなわち、データx[1],...,x[N]の秘匿性が保証され、かつ、MPCの計算結果として出力されるデータyがf(x[1],...,x[N])と等しいことが保証される。
【0034】
一方、結託した装置の集合がMPC安全性条件を満たさない場合、結託した装置に対してデータx[1],...,x[N]の情報が漏れる可能性があり、さらに、MPCの計算結果として出力されるデータyがf(x[1],...,x[N])とは異なる値になる可能性がある。
【0035】
特に、MPCに参加するすべての装置が結託した場合、結託した装置にデータx[1],...,x[N]の情報が完全に漏れてしまう。
【0036】
[秘密分散を利用したMPC]
既存のMPCの多くでは、秘密分散をサブルーチンとして用いる。このようなMPCでは、上述したMPC装置以外に、秘密分散の「分散装置」と「復元装置」がある。MPC装置は、秘密分散のシェア保有装置に対応する。なお、分散装置と復元装置が同一である場合、分散装置とMPC装置が同一である場合、または、復元装置とMPC装置が同一である場合も考えられる。ただし、以下では、分散装置、MPC装置および復元装置が別個の装置である場合について説明する。それ以外の場合も、同様である。
【0037】
MPCは以下の手段で行われる。以下、MPC装置の台数をMとする。
【0038】
各MPC装置には、事前に関数fを計算する手段が(回路図やアルゴリズムの形で)入力されているものとする。
【0039】
まず、分散装置はi=1,...,Nに対して秘密のデータx[i]を入力として受け取り、秘密分散の「分散手段」を実行することで、秘密のデータx[i]の「シェア」s[i,1],...,s[i,M]を作成する。次に、分散装置は、j=1,...,Mに対し、シェアs[1,j],...,s[N,j]をj番目のMPC装置に送信する。
【0040】
次に、MPC装置は相互に通信しながら「MPC手段」を実行し、計算結果として「出力のシェア」を得る。j番目のMPC装置が得た出力のシェアをt[j]とする。1番目,...,M番目のMPC装置は、それぞれ出力のシェアt[1],....,t[M]を復元装置に送る。
【0041】
復元装置は、t[1],....,t[M]を用いて「復元手段」を実行することで「MPCの出力」yを得る。
【0042】
分散装置、MPC装置および復元装置のいずれも不正を行っていない場合、MPCの出力yはf(x[1],...,x[N])と一致する。
【0043】
以上で述べたMPCには、サブルーチンとして用いた秘密分散法が定める秘密分散安全性条件がある。MPCの安全性を保証するMPC安全性条件は、秘密分散安全性条件とは必ずしも一致しない。ただし、秘密分散安全性条件はMPC安全性条件の必要条件である。すなわち、MPC安全性条件が成り立てば秘密分散安全性条件が成り立つが、逆は必ずしも成り立たない。
【0044】
例えば、秘密分散安全性条件が「結託した装置の台数が閾値kよりも小さい」という条件とし、MPC安全性条件が「結託した装置の台数が閾値tよりも小さい」という条件とする。このとき、k≧tは成り立つものの、k=tは成り立つとは限らない。
【0045】
[事前計算を利用したMPC]
非特許文献5〜7では、MPCの計算に必要となるデータの一部を事前計算しておくことでMPCの効率化を図る。
【0046】
本明細書では、事前計算について詳述しない。ただし、何らかの方法(例えば非特許文献5〜7の方法)で事前計算データが用意されている場合も考慮して、「事前計算データがもしあれば、それを用いる」という趣旨の文言を実施形態の説明に加えた。
【0047】
[ZKIP法、MAC法]
秘密分散を利用した既存のMPCには、不正者に乗っ取られたMPC装置が不正を働くことで秘密の情報を盗んだり、計算結果を偽ったりできないような仕組みを持っているものが多い。
【0048】
このような仕組みとして、ゼロ知識証明(ZKIP:Zero-Knowledge Interactive Proof)法(非特許文献4)とメッセージ認証子(MAC:Message Authentication Code)法(非特許文献5〜7)が知られている。いずれの方法も、MPC装置が行った計算が不正なものではないことを示すための「正当性証明」を作成する「正当性証明作成部」と正当性証明を検証する「正当性検証部」を備えている。ただし、正当性証明の作り方やその検証方法については、ZKIP法とMAC法とで相違する。また、「正当性証明作成部」と「正当性検証部」を備えた装置構成自体は、ZKIP法とMAC法の間で共通する。
【0049】
ZKIP法およびMAC法のMPC装置の装置構成は、以下のとおりである。
入力部
通信部
計算部
MPC実行部
正当性証明部
正当性証明検証部
出力部
【0050】
ZKIP法およびMAC法では秘密分散をサブルーチンとして用いており、MPC装置以外に秘密分散のための「分散装置」と「復元装置」が用いられる。
【0051】
ZKIP法およびMAC法では、各MPC装置に事前に関数fを計算する手段が回路図の形で入力されているものとする。関数fの回路図はANDゲートやORゲートのような「素子」から構成され、各素子には「素子番号」が振られているものとする。以下では、説明を簡単にするため、入力ゲートに近い素子ほど小さい素子番号が割り振られていると仮定して説明する。ただし、かかる仮定は必須のものではない。
【0052】
また、以下では、何らかの事前計算データが用意されていることを仮定して説明する。ただし、以下の記述の中から事前計算データに関する記述を無視することで、事前計算のないMPCに対しても同様の説明が当てはまる。
【0053】
ZKIP法およびMAC法は、いずれも以下のように動作する。
j=1,...,Mに対し、j番目のMPC装置は、分散装置から秘密x[1],...,x[N]のシェアs[1,j],...,s[N,j]を入力部を用いて受け取る。
関数fの回路図を構成する各素子Rに対し、素子番号が小さいものから順に以下を実行する。
各MPC装置は素子R、素子Rの入力端子に対応するシェア、および、事前計算データ(もしあれば)をMPC実行部に入力する。そして、通信部を用いることで相互通信しながらMPC実行部の処理を実行する。
各MPC装置は素子R、素子Rの入力端子に対応するシェア、事前計算データ(もしあれば)、および、MPC実行部の実行に使用した乱数(もしあれば)を入力として正当性証明部の処理を実行することで正当性証明を作成し、他のMPC装置に正当性証明を送信する。
各MPC装置は素子Rと正当性証明を正当性証明検証部に入力することで、他のMPC装置の正当性証明の正当性を検証する。
関数fの回路図の出力端子に対応するシェアを、出力部を用いて出力する。
出力されたシェアは、復元装置に送られる。復元装置は、送られてきたシェアからMPCの出力を復元する。
【0054】
上記の説明では、MPC装置の正当性証明部が生成した正当性証明を別のMPC装置が受け取った上で正当性証明検証部を使って正当性証明を検証することを仮定して説明した。ただし、既存のMPC方式の中には、非特許文献4に記載された方式のように、正当性証明部と正当性証明検証部の間で複数回の相互通信を伴うものもある。
【0055】
また、非特許文献6に記載された方式のように、最後に一括して正当性証明を検証することでMPCを効率化するものもある。
【0056】
しかし、いつどのような方法で正当性証明部と正当性証明検証部の処理を実行するのかという点を除くと、いずれの方式も上述のフローに当てはまる。
【0057】
[ZKIP法とMAC法の問題点]
ZKIP方式とMAC方式には、以下の問題点がある。
実行速度が遅く、サーバ同士、ユーザ・サーバ間双方の通信量が多い。
認証システムにおいては、数多くのユーザがシステムを利用する。したがって、これらのユーザの処理をすべて実行するために、システムには高い性能が求められる。既存方式は、実行速度や通信量の点で難がある。したがって、認証システムに求められる性能を出すためには、システムで用いるサーバを高性能なものにしたり、回線を高速度のものにしたりすることが求められる。このとき、システム構築に必要となる費用が嵩むという問題が生じる。
ユーザ端末として、スマートフォンのような計算能力および通信性能が低い端末が用いられることが想定される。したがって、ZKIP方式またはMAC方式のように高い実行速度と多くの通信量を必要とする方式は、利用できない可能性もある。
【0058】
[依頼計算とガーブルドサーキット(GC:Garbled Circuit)法]
依頼計算(Secure Function Evaluation)とは、2つの装置を利用した方式である。具体的には、1つ目の装置が関数f(の回路図)を保持し、2つ目の装置が秘密の情報x[1],....,x[N]を保持する状態からスタートして、1つ目の装置が関数値f(x[1],...,x[N])を得ることを目標に行われる(非特許文献8)。
【0059】
依頼計算では2つ目の装置は関数fの情報を完全には知ることはできず、1つ目の装置は秘密の情報x[1],....,x[N]の情報を一切知ることはできない。
【0060】
ガーブルドサーキット(GC:Garbled Circuit)法(非特許文献9)は、依頼計算の代表的な方法である。GC法では、関数fを保有する側の装置が「GC(Garbled Circuit)」というデータを作成し、秘密の情報x[1],....,x[N]を保有する側の装置がGCを計算する。以下では、前者の装置を「GC作成装置」と呼び、後者の装置を「GC実行装置」と呼ぶ。
【0061】
GC作成装置は、以下のユニットを備えている。
入力部
GC生成部
GC出力生成部
送信部
出力部
【0062】
一方、GC実行装置は、以下のユニットを備えている。
入力部
GC実行部
送信部
【0063】
GCは、以下のように動作する。
GC作成装置は、関数fを入力としてGC生成部の処理を実行することでGCと鍵データKを作成し、GCをGC実行装置に送信する。
GC実行装置はGCと秘密の情報x[1],...,x[N]を入力としてGC実行部の処理を実行することで、「GCの出力」Eを取得し、GCの出力EをGC作成装置に送信する。
GC作成装置はGCの出力Eと鍵データKとを入力としてGC出力生成部の処理を実行することで、出力yを得て、出力yを出力する。
【0064】
GC法においては、以下の性質が成立する。
(たとえGC実行装置が不正者に乗っ取られたとしても)GC作成装置が不正者に乗っ取られない限り、出力yはf(x[1],...,x[N])に一致する。
【0065】
[GC法の問題点]
後述するように、本願開示ではGC法に適切に改良を施した上でMPCとして用いる。しかし、GC法それ自身には以下の問題があるため、そのままでは本願開示には適用することができない。
GC法自身はあくまで依頼計算を実現するための方式であり、MPCを実現するための方式ではない。したがって、GC実行装置が秘密の情報x[1],...,x[N]を知っていることを前提にしている。しかし、本願開示ではGC法をMPCとして用いるため、秘密のデータx[1],...,x[N]の秘匿性も担保する必要がある。
GC法ではGC作成装置が不正者に乗っ取られないかぎり、出力yがf(x[1],...,x[N])に一致することが保証できる。しかしながら、GC作成装置が不正者に乗っ取られた場合に関しては何ら保証がない。
【0066】
[既存の認証技術とその問題点]
以上で本願開示および既存方式において利用する技術に関する説明を終了する。以下では、認証に関する既存方式を説明する。
【0067】
[FIDO方式]
前述した認証に関する問題を解決する一手法として、オンライン認証技術の標準化を行っている標準化団体FIDO(Fast Identify Online)は、UAF(Universal Authentiation Framework)標準と呼ばれる認証手法を提案している(非特許文献1)。以下では、この認証手法を「FIDO方式」と呼ぶ。
【0068】
FIDO方式の特徴は、ユーザ装置に「セキュア領域」と呼ばれる安全性の高い領域の存在を仮定した点にある。FIDO方式では、ユーザの本人性を認証する「ユーザ認証」とユーザの機器を認証する「機器認証」が別個に行われる。ユーザの本人認証に用いる検証情報およびユーザの機器認証に使う秘密鍵は、このセキュア領域に格納される。
【0069】
図1は、FIDO方式の構成を例示するブロック図である。
【0070】
認証を行うには、以下の事前準備を行う必要がある。
【0071】
ユーザ装置11はユーザ情報取得部111を有する。ユーザ情報取得部111は、顔情報、指紋情報、光彩情報などの1つまたは複数のユーザ認証情報を取得する取得部1111を提供する。ユーザ装置11は、認証におけるこれらの検証情報を登録するため、ユーザ13からユーザ固有情報(顔情報、指紋情報、光彩情報など)を、取得部1111を用いて取得する。また、ユーザ装置11は取得したユーザ固有情報を検証情報導出部11211に入力することで検証情報を得る。登録された検証情報は、セキュア領域112(非特許文献1の「FIDO AUTHENTICATOR」)の記憶部1122に保管される。
【0072】
ユーザ装置11は、セキュア領域112の鍵ペア生成部11214を用いて(事前に定められた何らかの公開鍵認証方式の)鍵生成を行う。また、ユーザ装置11は生成された公開鍵pkと秘密鍵skをセキュア領域112の記憶部1122に保管し、公開鍵pkを機器認証サーバ装置12に送信する。機器認証サーバ装置12は、受信した公開鍵pkを自身の公開鍵データベース1221に保存する。
【0073】
認証を行う際、まず機器認証サーバ装置12はユーザ認証方法選択部1211を用いていずれの認証方法を用いて認証するのかを指定する。
【0074】
ユーザ装置11は、指定された認証方法におけるユーザ固有情報を、取得部1111を用いてユーザ13から受け取る。ユーザ装置11は、受け取ったユーザ固有情報を認証情報導出部11212に入力することで認証情報を得る。
【0075】
ユーザ装置11は、入力された認証情報と記憶部1122に保管された検証情報とを用いて、セキュア領域112のユーザ認証部11213の処理を実行する。これにより、ユーザ装置11はユーザ13の当人性を確認する。
【0076】
ユーザ認証部11213がユーザ13の認証を拒否した場合、ユーザ装置11は通知部114を用いて認証が拒否された旨をユーザ13に伝えて動作を終了する。
【0077】
一方、ユーザ認証部11213がユーザ13の認証を受理した場合、ユーザ装置11はセキュア領域112の記憶部1122に保管された秘密鍵skと公開鍵pkを用いて機器認証部11215の処理を実行する。機器認証サーバ装置12は、これを受けて公開鍵データベース1221に保管されたユーザ装置11の公開鍵pkを用いて機器認証検証部1212の処理を実行する。これにより、機器認証サーバ装置12はユーザ装置11の認証を受理または拒否する。最後に、ユーザ装置11は認証が受理または拒否された旨を通知部114を用いてユーザ13に伝えて動作を終了する。
【0078】
なお、機器認証部11215と機器認証検証部1212が通信する際には、ユーザ装置フロントエンド1131とサーバ装置フロントエンド1231を経由する。これらのフロントエンドはFIDOにより通信方法の標準化がなされているフロントエンドであり、広く普及している。
【0079】
[FIDO方式の問題点]
FIDO方式には、ユーザ装置11にセキュア領域112が存在することを仮定している(ないし前提としている)という問題がある。
【0080】
例えばマルウェア感染などによりセキュア領域112が侵された場合、そこに保存されている検証情報や秘密鍵が漏えいしてしまう可能性がある。
【0081】
特に、不正者は漏えいした検証情報や秘密鍵を用いることでユーザ13に成りすましてウェブサービスを行うことができるため、深刻な問題が生じ得る。
【0082】
また、FIDO方式の認証を利用したユーザアプリを開発した企業にとっては、企業イメージの悪化、これに伴う収益の減少、さらにはユーザ13に対する損害賠償費用の負担といったリスクも生じ得る。
【0083】
さらに、認証として生体認証を用いた場合、検証情報は生体情報という最高度に機微な情報であることから、重大な危険が生じ得る。
【0084】
以上の理由により、FIDO方式のようにユーザ装置11にセキュア領域112の存在を仮定する方式は望ましくない。
【0085】
[サーバサイドMPC方式]
MPCを利用した認証方式の一形態について、説明する。以下では、この認証方式を「サーバサイドMPC方式」と呼ぶ。
【0086】
図2は、サーバサイドMPC方式の装置構成を例示するブロック図である。以下、サーバサイドユーザ認証MPC装置22の台数をMとする。
【0087】
サーバサイドMPC方式の基本的なアイデアは、通常の認証方式であればサーバ装置1台で認証の正当性を検証するところを、M台の「サーバサイドユーザ認証MPC装置22」を使ってMPCを行いながら認証の正当性を検証するところにある。
【0088】
サーバサイドユーザ認証MPC装置22は、全部でM台ある。そこで、以下j番目のサーバサイドユーザ認証MPC装置22に含まれるユニットの符号には、末尾に「[j]」を付すことで装置を区別する。例えば、「サーバサイドユーザ認証MPC装置22[j]の分散ユーザ検証情報データベース2221[j]」といった表現を用いる。
【0089】
図2は、1つの認証方法のみを提供する場合を図示した。なお、FIDO方式の場合と同様、複数の認証方法を提供して、それらの中から認証方法を選ぶように拡張することも可能である。
【0090】
FIDO方式では、ユーザ認証と機器認証が行われる。一方、サーバサイドMPC方式ではユーザ認証のみが行われる。なお、サーバサイドMPC方式を機器認証も行うように改良することも可能である。ただし、このように改良しても、後述するようにサーバサイドMPC方式の問題点は解決されない。以下では、サーバサイドMPC方式において機器認証を行う場合についての説明を省略する。
【0091】
サーバサイドMPC方式では、ユーザ装置21がMPCにおける分散装置の役割を果たす。ユーザ装置21は、ユーザ23の認証情報を分散する認証情報分散部2123と検証情報を分散する検証情報分散部2124を備えている。
【0092】
サーバサイドユーザ認証MPC装置22は、MPCにおけるMPC装置である。しかし、1台目のサーバサイドユーザ認証MPC装置22[1]のみは復元装置の役割も担っており、MPCの出力である認証結果を復元するための認証結果復元部2212[1]を有する。
【0093】
サーバサイドMPC方式におけるMPCの計算関数fは、ユーザ認証の認証関数である。すなわち、関数fはユーザ23の認証情報と検証情報を入力として受け取り、認証を受理または拒否したことを示す何らかのデータ(例えば受理なら1、拒否なら0)を出力する。サーバサイドMPC方式は、以下のように行われる。
【0094】
まず事前準備として、ユーザ装置21はユーザ情報取得部211の取得部2111を用いてユーザ23からユーザ固有情報を受け取る。次に、ユーザ装置21は検証情報導出部2121を用いてユーザ固有情報から検証情報を導出し、導出した検証情報を検証情報分散部2124に入力して検証情報のシェアv[1],...,v[M]を得る。次に、ユーザ装置21は独自仕様通信部2131を用いることでシェアv[1]をサーバサイドユーザ認証MPC装置22[1]に送り、...、シェアv[M]をサーバサイドユーザ認証MPC装置22[M]に送る。
【0095】
サーバサイドユーザ認証MPC装置22[1]、...、サーバサイドユーザ認証MPC装置22[M]は、それぞれ独自仕様通信部2231[1],...,独自仕様通信部2231[M]を用いることでシェアv[1],...,v[M]を受信し、それぞれ分散ユーザ検証情報データベース2221[1],...,分散ユーザ検証情報データベース2221[M]に保管する。
【0096】
認証を受けるには、ユーザ装置21はユーザ情報取得部211の取得部2111を用いてユーザ23からユーザ固有情報を受け取る。次に、ユーザ装置21は認証情報導出部2122を用いてユーザ固有情報から認証情報を導出し、導出した認証情報を認証情報分散部2123に入力することで認証情報のシェアs[1],...,s[M]を作る。次に、ユーザ装置21は独自仕様通信部2131を用いることで、シェアs[1]をサーバサイドユーザ認証MPC装置22[1]に送り、...、シェアs[M]をサーバサイドユーザ認証MPC装置22[M]に送る。
【0097】
サーバサイドユーザ認証MPC装置22[1]、...、サーバサイドユーザ認証MPC装置22[M]は、それぞれ独自仕様通信部2231[1],...,独自仕様通信部2231[M]を用いることでシェアs[1],...,s[M]を受信する。次に、サーバサイドユーザ認証MPC装置22[1]、...、サーバサイドユーザ認証MPC装置22[M]は、それぞれ分散ユーザ検証情報データベース2221[1],...,分散ユーザ検証情報データベース2221[M]からユーザ23の検証情報のシェアv[1],...,v[M]を読み出し、そしてシェアv[1],...,v[M]およびシェアs[1],...,s[M]を使用して相互に通信しながらユーザ認証MPC部2211[1],...,ユーザ認証MPC部2211[M]の処理を実行する。これにより、サーバサイドユーザ認証MPC装置22[1]、...、サーバサイドユーザ認証MPC装置22[M]は、それぞれMPCの出力のシェアt[1],...,t[M]を得る。
【0098】
サーバサイドユーザ認証MPC装置22[2]、...、サーバサイドユーザ認証MPC装置22[M]は、それぞれ独自仕様通信部2231[2],...,独自仕様通信部2231[M]を用いることで、それぞれシェアt[2],...,t[M]をサーバサイドユーザ認証MPC装置22[1]に送信する。サーバサイドユーザ認証MPC装置22[1]は、独自仕様通信部2231[1]を用いてこれらのシェアを受け取り、シェアt[1],...,t[M]を入力して認証結果復元部2212[1]の処理を実行することで、認証結果が受理なのか拒否なのかを把握する。
【0099】
[サーバサイドMPC方式の問題点]
通常のユーザ認証における通信プロトコルには、様々な標準がある。しかしながら、いずれの通信プロトコルもユーザ装置とサーバ装置の1対1の通信を前提としたものである。実際、FIDOが提案している通信プロトコルもユーザ装置とサーバ装置の1対1の通信を前提としている。具体的には、
図1におけるユーザ装置フロントエンド1131とサーバ装置フロントエンド1231がFIDOの提案する通信プロトコル標準に対応する箇所である。
【0100】
しかるに、サーバサイドMPC方式では、1台のユーザ装置21とM台のサーバサイドユーザ認証MPC装置22による1対多の通信を利用する。しかし、1対1の通信を前提とした通信プロトコルを利用したウェブサービスやインフラストラクチャーが普及している現状において、サーバサイドMPC方式のように1対多の通信を利用する方式を利用することは現実的ではない。
【0101】
また前述のように、MPCは不正なMPC装置の集合がMPC安全性条件を満たしている場合に限って安全性を保つことができる。サーバサイドMPC方式では、ユーザ装置21はユーザ23の検証情報の特徴量のシェアをサーバ側に送出してしまう。したがって、MPC安全性条件を超える台数のMPC装置が不正に結託した場合、サーバ側にユーザ23の検証情報の特徴量という最高度に機微な情報を知られてしまう危険が生じる。
【0102】
[サーバサイドMPC方式の変形例とその問題点]
上述したサーバサイドMPC方式では、ユーザの認証情報のみを用いて認証を行うことを想定している。ここで、サーバサイドMPC方式の変形例として、FIDO方式のようにユーザの認証情報とユーザ秘密鍵情報の両方を用いて認証するものが考えられる。
【0103】
しかしながら、かかる変形例によると、ユーザ秘密鍵をどのように保管するべきかという問題を抱える。
【0104】
ここでFIDO方式と同様に、ユーザ装置21にセキュア領域の存在を仮定した上で、セキュア領域にユーザ秘密鍵を保存した場合、FIDO方式と同様にマルウェアなどによりセキュア領域が侵される危険性が生じる。
【0105】
また、M台のサーバサイドユーザ認証MPC装置22にユーザ秘密鍵を分散した場合、サーバサイドMPC装置側がMPC条件を超えて結託したときにユーザ秘密鍵の秘匿性を担保できないという問題が生じる。
【0106】
[暗号化通信方式]
最後に暗号化通信を利用した認証方式の一形態について説明する。以下では、この方式を「暗号化通信方式」と呼ぶ。暗号化通信方式の例として、例えば非特許文献2に記載されたものがある。ここでは、非特許文献2のものよりも簡略化したものを紹介する。
【0107】
暗号化通信方式の基本的なアイデアは、ユーザの認証情報および検証情報をサーバ装置の公開鍵で暗号化した上でサーバ装置に送信するというものである。これにより、サーバ装置には、認証情報や検証情報が暗号化された形でしか保管されない。したがって、サーバ装置のデータが不正者に見られたとしても安全性を保つことができる。
【0108】
しかし、サーバ装置の秘密鍵もサーバ装置上に置いた場合、サーバ装置のデータを不正者に見られたときに、認証情報や検証情報の暗号文のみならず秘密鍵も不正者にとられてしまう。このとき、不正者は暗号文を復号することで、認証情報や検証情報という機微な情報を復元できてしまうという問題がある。
【0109】
そこで暗号化通信方式では、サーバ装置とは別に「サーバ補助装置」という装置を設け、サーバ装置の秘密鍵をサーバ装置ではなくサーバ補助装置に保管する。
【0110】
FIDO方式では、ユーザ認証と機器認証が行われる。一方、暗号化通信方式では、ユーザ認証しか行わない。なお、暗号化通信方式を機器認証も行うように改良することができる。しかしながら、そのように改良しても、後述するような暗号化通信方式の問題点は解決されない。そこで、以下では、暗号化通信方式において機器認証を行う場合に関する説明を省略する。
【0111】
図3は、暗号化通信方式の構成を例示するブロック図である。
【0112】
まず事前準備として、ユーザ認証サーバ補助装置33は、計算部331のサーバ補助装置鍵生成部3311の処理を実行することで(何らかの公開鍵暗号方式における)サーバ補助装置秘密鍵skとサーバ補助装置公開鍵pkを生成し、サーバ補助装置秘密鍵skを記憶部332に保管し、サーバ補助装置公開鍵pkを、通信部333を経由してユーザ装置31に送る。
【0113】
ユーザ装置31は、サーバ補助装置公開鍵pkを受信して記憶部313に保管する。
【0114】
次にユーザ装置31は、ユーザ情報取得部311の取得部3111を用いてユーザ34からユーザ固有情報を受け取る。ユーザ装置31は、ユーザ固有情報を検証情報導出部3122に入力することで検証情報を取得する。ユーザ装置31は、検証情報とサーバ補助装置公開鍵pkを検証情報暗号化部3124に入力することで検証情報の暗号文を作成する。ユーザ装置31は、ユーザ装置独自仕様フロントエンド3141を経由して暗号文をユーザ認証サーバ装置32に送る。ユーザ認証サーバ装置32は、サーバ装置独自仕様フロントエンド3231を経由して暗号文を受け取り、暗号文を暗号化ユーザ検証情報データベース3221に保管する。
【0115】
認証の際、ユーザ装置31はユーザ情報取得部311の取得部3111を用いてユーザ34からユーザ固有情報を受け取る。ユーザ装置31は、ユーザ固有情報を認証情報導出部3121に入力することで認証情報を得る。ユーザ装置31は、認証情報とサーバ補助装置公開鍵を認証情報暗号化部3123に入力することで認証情報の暗号文を作成する。ユーザ装置31は、ユーザ装置独自仕様フロントエンド3141を経由して暗号文をユーザ認証サーバ装置32に送る。ユーザ認証サーバ装置32は、暗号化ユーザ検証情報データベース3221からユーザの暗号化された検証情報を探し出す。
【0116】
次に、ユーザ認証サーバ装置32は暗号化された検証情報と暗号化された認証情報をサーバ装置暗号化認証検証部3211に入力する。また、ユーザ認証サーバ補助装置33は、サーバ補助装置秘密鍵skをサーバ補助装置暗号化認証検証部3312に入力する。ユーザ認証サーバ装置32とユーザ認証サーバ補助装置33は、補助通信部3232と補助通信部3331を利用して相互に通信しながら、それぞれサーバ装置暗号化認証検証部3211とサーバ補助装置暗号化認証検証部3312の処理を実行する。最終的に認証結果(受理するか拒否するか)を決定し、ユーザ認証サーバ装置32はサーバ装置独自仕様フロントエンド3231を用いて認証結果をユーザ装置31に通知する。ユーザ装置31は、ユーザ装置独自仕様フロントエンド3141を使って認証結果を受信する。また、ユーザ装置31は通知部315を使用して認証結果をユーザ34に通知する。
【0117】
サーバ装置暗号化認証検証部3211とサーバ補助装置暗号化認証検証部3312をどのように実現するかには、様々な方法がある。一例として、MPCを実行することで認証の受理または拒否を決定する方法が考えられる。
【0118】
[暗号化通信方式の問題点]
ユーザ認証サーバ装置32とユーザ認証サーバ補助装置33の両方が不正者に乗っ取られた場合、ユーザの認証情報という最高度に機微な情報が不正者の手に渡ってしまうという問題がある。
【0119】
また、ユーザ認証サーバ装置32のみが不正者に乗っ取られた場合であっても、以下の方法によりサーバサイド・オフライン攻撃が可能である。
ユーザ認証サーバ装置32は、通常の手段でユーザ装置31の検証情報の暗号文Cを受け取る。
ユーザ認証サーバ装置32は、任意の情報Mを暗号化して暗号文C'を作成する。
ユーザ認証サーバ装置32は暗号文C、C'をサーバ装置暗号化認証検証部3211に入力し、ユーザ認証サーバ補助装置33と通信しながらサーバ装置暗号化認証検証部3211の処理を実行する。
サーバ装置暗号化認証検証部3211の出力が受理であるか拒否であるかに応じて、ユーザ認証サーバ装置32は任意の情報Mがユーザの認証情報と一致するか否かを判定することができる。
【0120】
上述の攻撃は、ユーザ装置31と通信することなく実行可能である。したがって、ユーザ装置31(または、ユーザ装置31を保有するユーザ)に気付かれることなく、不正者は何度でも攻撃を実行することができる。ユーザの認証情報がパスワードや生体情報である場合、認証情報のエントロピーは小さい。したがって、上述の攻撃をMを変えつつ何度も実行することで、不正者はユーザの認証情報を特定することができる。
【0121】
暗号化通信方式のもう1つの問題点は、ユーザ装置31とユーザ認証サーバ装置32の間の認証情報のやり取りが(暗号化された状態で)行われる点である。
【0122】
FIDOが標準化しているフロントエンドでは、ユーザ装置31とユーザ認証サーバ装置32の間で認証情報をやり取りしていることを想定していない。したがって、暗号化通信方式では、FIDOのフロントエンドというすでに普及している標準を使うことができないという問題がある。
【0123】
[暗号化通信方式の変形例とその問題点]
暗号化通信方式の変形例として、以下のものが考えられる。ただし、いずれの変形例も、上述した問題と同様の問題を抱える。
ユーザの検証情報や認証情報の暗号化において、公開鍵暗号ではなく共通鍵暗号を使う。
上述の方式では、ユーザサイド補助装置が1台であることを想定している。そこで、複数台のユーザサイド補助装置を用意し、ユーザサイド補助装置秘密鍵を分散シェアする。
【0124】
次に、本発明が解決しようとする課題について、さらに詳細に説明する。これまで説明したように、既存の認証方式は、いずれも以下に挙げる1つ以上の問題をはらんでいる。
ユーザ装置にセキュア領域が存在することを仮定する必要がある。したがって、セキュア領域がマルウェアに侵されるなどした場合、ユーザの認証情報という最高度に機微な情報が不正者に漏えいする。
サーバ側の装置(サーバ装置やサーバ補助装置)がMPC条件以上に結託すると、ユーザの認証情報という最高度に機微な情報が不正者に漏えいする。
サーバサイド・オフライン攻撃に対して、安全でない。したがって、不正者がサーバの乗っ取りに成功すると、サーバサイド・オフライン攻撃によりユーザの認証情報という最高度に機微な情報が不正者に漏えいする。特にサーバの管理者自身が不正者である場合、一切安全を保てない。
FIDOが標準化しているフロントエンドをはじめとする既存の通信標準を満たしていない。したがって、既存の通信標準を利用している大多数の装置との通信が不可能である。
【0125】
なお、既存の認証方式の中には、MPCを使うものも存在する。しかしながら、既存のMPCであるZKIP法およびMAC法には、以下の問題点がある。
ZKIPやMACを生成、送受信および検証するのに計算コストと通信コストがかかるため、計算効率と通信効率が悪化する。特にユーザ装置がスマートフォンのような非力なデバイスである場合、計算効率と通信効率の悪さがネックとなる。したがって、既存の認証方式は実用性に乏しい。
【0126】
さらに、GCには以下の問題がある。
GC法自身はあくまで依頼計算を実現するための方式であり、MPCを実現するための方式ではない。したがって、GC法によると、入力データの秘密を担保できない。
GC作成装置が不正者に乗っ取られた場合に関して、何ら保証がない。
【0127】
そこで、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用可能とすることが課題となる。本発明の目的は、かかる課題解決に寄与する認証システム、認証方法およびプログラムを提供することにある。その他の課題および解決手段は、以下の説明において明らかとなる。
【課題を解決するための手段】
【0128】
本発明の第1の態様に係る認証システムは、ユーザ装置と、前記ユーザ装置のユーザを認証するユーザ認証および前記ユーザ装置を認証する機器認証を補助するユーザサイド補助装置と、前記ユーザ装置との間で前記機器認証を行う機器認証サーバ装置と、を備えている。前記ユーザサイド補助装置は、検証情報の分散シェアを用いて前記ユーザ装置との間で前記ユーザ認証のためのマルチパーティ計算を行うとともに、前記ユーザ装置が生成した秘密鍵の分散シェアを用いて、前記ユーザ装置との間で前記機器認証のためのマルチパーティ計算を行う。
【0129】
本発明の第2の態様に係る認証方法は、ユーザ装置と、前記ユーザ装置のユーザを認証するユーザ認証および前記ユーザ装置を認証する機器認証を補助するユーザサイド補助装置と、前記ユーザ装置との間で前記機器認証を行う機器認証サーバ装置と、を備えた認証システムにおいて、前記ユーザ装置が、秘密鍵の分散シェアを生成するステップと、検証情報の分散シェアを用いて前記ユーザサイド補助装置との間で前記ユーザ認証のためのマルチパーティ計算を行うステップと、前記秘密鍵の分散シェアを用いて、前記ユーザサイド補助装置との間で前記機器認証のためのマルチパーティ計算を行うステップと、を含む。
【0130】
本発明の第3の態様に係る方法は、ユーザ装置と、前記ユーザ装置のユーザを認証するユーザ認証および前記ユーザ装置を認証する機器認証を補助するユーザサイド補助装置と、前記ユーザ装置との間で前記機器認証を行う機器認証サーバ装置と、を備えた認証システムにおいて、前記ユーザサイド補助装置が、検証情報の分散シェアを用いて前記ユーザ装置との間で前記ユーザ認証のためのマルチパーティ計算を行うステップと、前記ユーザ装置が生成した秘密鍵の分散シェアを用いて、前記ユーザ装置との間で前記機器認証のためのマルチパーティ計算を行うステップと、を含む。
【0131】
本発明の第4の態様に係るプログラムは、ユーザ装置と、前記ユーザ装置のユーザを認証するユーザ認証および前記ユーザ装置を認証する機器認証を補助するユーザサイド補助装置と、前記ユーザ装置との間で前記機器認証を行う機器認証サーバ装置と、を備えた認証システムにおいて、秘密鍵の分散シェアを生成する処理と、検証情報の分散シェアを用いて前記ユーザサイド補助装置との間で前記ユーザ認証のためのマルチパーティ計算を行う処理と、前記秘密鍵の分散シェアを用いて、前記ユーザサイド補助装置との間で前記機器認証のためのマルチパーティ計算を行う処理と、を前記ユーザ装置に設けられたコンピュータに実行させる。
【0132】
本発明の第5の態様に係るプログラムは、ユーザ装置と、前記ユーザ装置のユーザを認証するユーザ認証および前記ユーザ装置を認証する機器認証を補助するユーザサイド補助装置と、前記ユーザ装置との間で前記機器認証を行う機器認証サーバ装置と、を備えた認証システムにおいて、検証情報の分散シェアを用いて前記ユーザ装置との間で前記ユーザ認証のためのマルチパーティ計算を行う処理と、前記ユーザ装置が生成した秘密鍵の分散シェアを用いて、前記ユーザ装置との間で前記機器認証のためのマルチパーティ計算を行う処理と、を前記ユーザサイド補助装置に設けられたコンピュータに実行させる。なお、プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することもできる。
【発明の効果】
【0133】
本発明に係る認証システム、認証方法およびプログラムによると、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用することができる。
【発明を実施するための形態】
【0135】
<一実施形態>
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【0136】
図19は、一実施形態に係る認証システムの構成を例示する図である。
図19を参照すると、認証システムは、ユーザ装置41と、ユーザ装置41のユーザを認証するユーザ認証およびユーザ装置41を認証する機器認証を補助するユーザサイド補助装置43[1]-43[M](Mは自然数)と、ユーザ装置41との間で機器認証を行う機器認証サーバ装置42とを備えている。ユーザサイド補助装置43[1]-43[M]は、検証情報の分散シェアを用いてユーザ装置41との間でユーザ認証のためのマルチパーティ計算を行うとともに、ユーザ装置41が生成した秘密鍵の分散シェアを用いて、ユーザ装置41との間で機器認証のためのマルチパーティ計算を行う。
【0137】
一実施形態に係る認証システムでは、ユーザサイド補助装置とユーザ装置との間で検証情報の分散シェアを用いてマルチパーティ計算を行う。したがって、ユーザ装置は検証情報をそのまま保持する必要がなく、FIDO方式のようにユーザ装置内にセキュアな領域の存在を仮定する必要がなくなる。また、一実施形態では、ユーザ装置と機器認証サーバ装置の間でやり取りされるデータは既存のFIDO方式と同様である。したがって、一実施形態によれば、サーバサイドMPC方式および暗号化通信方式のように独自仕様の通信フロントエンドを設けることなく、既存の機器認証サーバとの通信フロントエンドを利用することができる。さらに、一実施形態によると、FIDO方式と同様にユーザ認証および機器認証の双方の認証が可能となる。すなわち、一実施形態の認証システムによると、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用することができる。
【0138】
<第1ないし第8の実施形態の概要>
はじめに、以下で詳述する第1ないし第8の実施形態の構成および効果について概説する。
【0139】
実施形態では、2種類のマシンを利用することを想定する。1つ目のマシンはユーザが自身のユーザ装置として用いられるマシンであり、具体的にはスマートフォン、タブレット、PC(Personal Computer)などである。2つ目のマシンは、サーバマシンである。サーバマシンはユーザ装置として使われるマシンよりも高性能であり、複数のユーザ装置と通信することが可能である。
【0140】
実施形態では、サーバとして用いられるマシンの方がユーザ装置として用いられるマシンよりも、以下の理由によりはるかにセキュリティの強度が高いことを利用する。安価であることが求められるユーザ装置は、セキュリティ保護機能が軽視される傾向にある上、ユーザ装置にはユーザが様々なアプリを自由にインストールできる。したがって、ユーザが不正なアプリをインストールしてしまうことなどにより、ユーザ装置は不正者に乗っ取られる可能性が高い。一方、サーバマシンであるユーザサイド補助装置は、ユーザ装置よりも高度なセキュリティ保護機能を備えることができ、しかもアプリのインストールなどは行われないため、ユーザ装置よりもはるかに安全性が高い。
【0141】
そこで、以下の実施形態では、ユーザ装置の認証を補助するサーバマシンである「ユーザサイド補助装置」を準備する。なお、ここで「ユーザサイド」とは、サーバサイド(例えば
図1の機器認証サーバ装置12の側)と対比する意味でのユーザサイド(例えば
図1のユーザ装置11の側)を意味するに過ぎない。すなわち、「ユーザサイド補助装置」はユーザ装置のユーザが保持する装置を意味するものではなく、むしろ複数の(多数の)ユーザ装置によって「ユーザサイド補助装置」が共有される使用形態が想定される。
【0142】
実施形態では、FIDO方式と同様、ユーザ認証と機器認証を分離する。ユーザ装置は、ユーザサイド補助装置の助けを借りながらユーザ認証を行う。その後、ユーザ装置はユーザサイド補助装置の助けを借りながら外部の「機器認証サーバ装置」から機器認証を受ける。
【0143】
具体的には、実施形態では(何らかの公開鍵認証方式における)ユーザ装置の秘密鍵と公開鍵を作成し、秘密鍵をユーザ装置とユーザサイド補助装置で分散シェアする。そしてユーザ装置とユーザサイド補助装置とがユーザの検証情報と認証情報の分散シェアを用いてMPCを実行することでユーザ認証を行う。その後、ユーザ秘密鍵の分散シェアを用いてMPCを実行することで、機器認証サーバ装置との公開鍵認証で必要な情報を作成する。
【0144】
なお、ユーザサイド補助装置は多数のユーザの検証情報の分散シェアを保管し、多数のユーザ装置とともにユーザ認証のMPCを行うサーバであることを想定している。
【0145】
実施形態においては、機器認証の公開鍵認証方式のMPCを効率的に実行するために、次のアイデアを用いる。既知の多くの公開鍵認証方式における認証は、秘密鍵を利用する「秘密鍵利用演算」と「それ以外」の部分に分けられる。以下、「それ以外」の部分を「秘密鍵不用演算」と呼ぶ。例えば、乱数cに対するHash-then-RSA署名H(c)
d mod Nを計算するタイプの認証では、h=H(c)の計算が「秘密鍵不用演算」に相当する。一方、h
d mod Nの計算が「秘密鍵利用演算」に相当する。
【0146】
秘密鍵利用演算に関しては、効率的なMPCが知られている。
【0147】
例えば、xが秘密鍵であり、y=g
x mod pを計算したいものとする。また、gの位数をqとする。
【0148】
M台のユーザサイド補助装置があり、i番目のユーザサイド補助装置がxの分散シェアx[i]∈{0,...,q-1}を保持し、x=x[1]+...+x[M] mod qが成り立つ場合、yは以下のMPCによって計算することができる。
i=1,...,Mに対し、i番目のユーザサイド補助装置はy[i]=h
x[i] mod qを計算し、y[i]を他のユーザサイド補助装置に送信する。
各ユーザサイド補助装置は、積y=y[1]…y[M] mod qを計算する。
【0149】
このように、秘密鍵利用演算に関しては効率的なMPCが知られている。したがって、ユーザ装置はユーザサイド補助装置とともに、こうした効率的なMPCを実行することで効率的に秘密鍵利用演算を実行する。一方、秘密鍵不用演算では秘密鍵を使用しない。そこで、ユーザ装置はユーザサイド補助装置の助けを借りることなく、ユーザ装置単独で秘密鍵不用演算を実行する。
【0150】
[第1の実施形態の概要]
第1の実施形態では、さらに以下のアイデアに基づいて問題点を解決する。
【0151】
前述のとおり、実施形態のユーザサイド補助装置はサーバマシンであることが想定されている。すなわち、ユーザサイド補助装置は通常のマシンよりもはるかにセキュアである。しかも、サーバマシンでは、通常ログ監視などが行われている。したがって、サーバマシンが不正者に乗っ取られたとしても、不正者が行った不正をログ監視により特定することができる。
【0152】
実施形態においては、不正者がユーザサイド補助装置を乗っ取ることに成功したとしても、定められたMPCのプロトコルを逸脱した場合、ログ監視により不正者の存在が発覚してしまう。かかる場合には、不正者はMPCのプロトコルを逸脱しないものと考えられる。
【0153】
既存のMPCであるZKIP法およびMAC法では、MPC装置がMPCのプロトコルを逸脱することを防ぐため、ZKIPやMACを生成し、これらを他のMPC装置に送信し、受信したMPC装置がZKIPやMACの正当性を検証する。これらの一連の手続きが、MPCの計算効率および通信効率を悪化させている。
【0154】
しかし、実施形態の装置構成においては、上述のようにユーザサイド補助装置はMPCのプロトコルを逸脱しない。したがって、ユーザサイド補助装置はZKIPやMACを生成する必要がなくなる。一方、PCやスマートフォンであることが想定されているユーザ装置にはログ監視機能がない。すなわち、ユーザ装置が不正者に乗っ取られた場合、不正者に操られたユーザ装置はMPCのプロトコルを逸脱するおそれがある。
【0155】
以上の理由により、実施形態のユーザ認証においては、ユーザ装置のみがZKIPまたはMACを生成し、ユーザサイド補助装置はZKIPおよびMACを生成しないものとする。これにより、本実施形態によると、既存発明と比較してZKIPまたはMACの生成、送受信および検証に要するコストを削減することができる。
【0156】
また、既存発明ではZKIPまたはMACの生成、送受信および検証がMPCの計算効率および通信効率において支配的である。したがって、実施形態によると、既存発明と比較してはるかに効率の良い処理が実現可能となる。
【0157】
[第2の実施形態の概要]
第2の実施形態では、MPCとしてGC法を利用する。GC法には、前述した2つの問題点がある。第2の実施形態では、これらの問題点を以下のように解決する。
【0158】
第1の問題として、GC法にはGCを作成する装置が不正を行った場合に安全性が損なわれる。前述のように実施形態において、ユーザサイド補助装置はMPCのプロトコルを逸脱しないと考えられる。そこで、第2の実施形態ではユーザサイド補助装置がGCを作成する装置として振る舞うことにより、かかる問題を回避することができる。
【0159】
第2の問題として、GC法は依頼計算でありMPCではないため、入力データの秘密を守ることができない。この問題を解決するため、実施形態では入力データ(実施形態では認証情報や検証情報が入力データとして取り扱われる)をユーザ装置とユーザサイド補助装置の間で分散シェアする。以下、ユーザ装置が保持する認証情報および検証情報の分散シェアをそれぞれs[0],v[0]とする。一方、ユーザサイド補助装置が保持する認証情報および検証情報の分散シェアをそれぞれs[1],v[1]とする。
【0160】
また、f(a,b)を以下の関数とする。すなわち、関数f(a,b)はa,bをそれぞれ認証情報および検証情報の分散シェアとみなし、分散シェアaと分散シェアs[1]とを用いて認証情報xを復元し、分散シェアbと分散シェアv[1]を用いて検証情報yを復元し、認証情報xと検証情報yを用いてユーザ認証を行い、認証結果を出力する。
【0161】
GCを作成する装置であるユーザサイド補助装置は、分散シェアs[1],v[1]を用いることでf(a,b)の回路図を作成し、その回路図をGC生成部に入力することでGCと鍵データKを作成し、GCをユーザ装置に送る。また、ユーザ装置はGC実行部にGCと分散シェアs[0],v[0]を入力してGCの出力Eを得て、出力Eをユーザサイド補助装置に送る。最後に、ユーザサイド補助装置は出力Eと鍵データKから出力ansを得る。
【0162】
上述の方法に従って認証を行う場合、ユーザ装置が入手可能なデータは認証情報および検証情報自身ではなく、それらのシェアs[0],v[0]とGCのみである。したがって、本実施形態によると、秘密の情報である認証情報と検証情報がユーザ装置に漏れてしまうという問題が解決される。
【0163】
なお、実施形態では、安全性を高めるために以下の3つの手法を盛り込むことが可能である。
【0164】
[安全性を高める手法(その1)]
まず、1つ目の手法について述べる。この手法の詳細は、第3の実施形態として記載する。実施形態において、ユーザ装置とユーザサイド補助装置は、MPCでユーザ認証を終えた後、機器認証サーバとの機器認証プロトコルにおける返答をMPCで作成する。このとき、ユーザ認証を通った場合に限って機器認証が行われる。すなわち、実施形態において、前者のMPCで「拒否」が出た場合には、後者のMPCを実行する必要はない。しかし、前者のMPCで「拒否」の場合に後者のMPCを行わないものとすると、後者のMPCを行なったか否かという1ビット分の情報をユーザサイド補助装置が取得してしまう。
【0165】
ユーザの認証情報の秘匿性を高めるためには、ユーザ認証でユーザが受理されたのか否かという情報も、ユーザサイド補助装置から隠すことが好ましい。そこで、ユーザ認証でユーザが受理されたのか否かに関する情報をユーザサイド補助装置から隠したいケースでは、以下のような動作を行う。すなわち、ユーザ認証が受理された場合、ユーザ装置は通常通り機器認証に関するMPCを行う。一方、それ以外の場合、機器認証に関するMPCを行っているかのように偽装するためのプロトコル(以下「機器認証シミュレートMPC」という)を実行する。これにより、機器認証に関するMPCを行ったか否かに関する1ビット分の情報をユーザサイド補助装置に対して隠ぺいすることができる。
【0166】
なお、「機器認証シミュレートMPC」は、ユーザ認証でユーザが受理されたのか否かという情報をユーザサイド補助装置から隠したいケースに対処するためのオプションである。したがって、かかる情報をユーザサイド補助装置に隠す必要がないケースでは、「機器認証シミュレートMPC」を実行する必要はない。
【0167】
[安全性を高める手法(その2)]
次に、安全性を高めるための2つ目の手法について述べる。この手法の詳細は、第4および第5の実施形態として記載する。
【0168】
この手法について説明するために、まず実施形態に係る認証システムに対する攻撃について述べる。実施形態の認証システムでは、ユーザ装置を乗っ取った不正者は、(実際にはユーザからユーザ認証の要求がないにも関わらず)、ユーザからユーザ認証の要求があったかのように偽ることで、ユーザサイド補助装置にユーザ認証MPCを実行させることが可能である。具体的には、任意に選んだ認証情報Mを用いてユーザサイド補助装置とともにユーザ認証MPCを実行し、結果が受理であるか拒否であるかを知ることができる。これにより、不正者は任意に選択した認証情報Mがユーザの認証情報と一致するか否かを知ることができる。認証情報のエントロピーは小さいため、認証情報Mをいろいろな値に変えつつ全数検索することで、不正者はユーザの認証情報を特定できてしまう。
【0169】
しかし、この攻撃手法は、ユーザ装置とユーザサイド補助装置の間の通信を伴う。そこで、ユーザ装置側でユーザサイド補助装置との通信回数に制限を課すことにより、不正者による解析を逃れることができ、安全性が保証される。
【0170】
[安全性を高める手法(その3)]
次に、安全性を高めるための3つ目の手法について述べる。この手法の詳細は、第6ないし第8の実施形態として記載する。第6ないし第8の実施形態では、構成に若干の差がある。そこで、最初に第6の実施形態について説明する。
【0171】
この手法について説明する前に、まず背後にある動機について説明する。これまでに説明した実施形態では、ユーザ認証のMPCをユーザ装置とユーザサイド補助装置が共同で行う。このため、ユーザ装置とユーザサイド補助装置の双方がユーザ認証のアルゴリズムを保持することを前提としている。しかしながら、ユーザ認証、特に生体認証のアルゴリズムは企業秘密として保護すべき対象であることが多い。また、ユーザ認証に付随してユーザ固有情報(顔、光彩、指紋などの情報)から認証情報や検証情報を得るために特徴量を抽出する認証情報導出や検証情報導出も企業秘密として保護すべき対象であることが多い。したがって、企業秘密を保護するために、不特定多数のユーザの手に渡るおそれがあるユーザ装置に対して、認証情報導出のアルゴリズム、検証情報導出のアルゴリズム、および、ユーザ認証アルゴリズムを隠したいケースが考えられる。
【0172】
これらのアルゴリズムをユーザ装置から隠すための方法として、次の方法が考えられる。すなわち、ユーザ装置はユーザ固有情報の取得とその秘密分散のみを実行する。一方、ユーザサイド補助装置の側で、ユーザ固有情報の分散シェアを使用してMPCにより検証情報や認証情報の分散シェアを計算し、MPCでユーザ認証アルゴリズムを実行する方法が考えられる。
【0173】
しかし、かかる方法によると、不正者がMPC安全性条件以上のユーザサイド補助装置と結託した場合、検証情報や認証情報という非常に機微な情報が不正者の手に渡ってしまうという問題がある。
【0174】
そこで、第6の実施形態では、まずユーザ装置がユーザからユーザ固有情報を取得し、ユーザ固有情報を秘密分散することで分散シェアe[1],...,e[M]を得る。ここで、Mはユーザサイド補助装置の台数である。そしてi=1,...,Mに対し、分散シェアe[i]をさらに秘密分散することで、「ユーザ固有情報の分散シェアの分散シェア」c[i],d[i]を得て、c[1],...,c[M]をユーザ装置自身が保管し、d[i]をi番目のユーザサイド補助装置が保管する。
【0175】
このように、第6の実施形態ではユーザ固有情報の分散シェアをユーザ装置とユーザサイド補助装置で分けて保管している。したがって、不正者がMPC安全性条件以上のユーザサイド補助装置を乗っ取った場合にも安全性を担保することができる。
【0176】
一方、認証情報導出のアルゴリズム、検証情報導出のアルゴリズム、および、ユーザ認証アルゴリズムはユーザ装置には秘密にし、ユーザサイド補助装置のみに記憶させる。
【0177】
ユーザ認証の際には、ユーザ装置は、自身が保持する「ユーザ固有情報の分散シェアの分散シェア」c[i]をi番目のユーザサイド補助装置に送り、i番目のユーザサイド補助装置はc[i]とd[i]からe[i]を復元する。
【0178】
さらに、ユーザ装置はユーザから取得したユーザ固有情報を秘密分散して分散シェアf[1],...,f[M]を得て、i=1,...,Mに対しf[i]をi番目のユーザサイド補助装置に送る。i番目のユーザサイド補助装置は、e[i]、f[i]、認証情報導出のアルゴリズム、検証情報導出のアルゴリズム、および、ユーザ認証アルゴリズムを使用して、他のユーザサイド補助装置と相互通信しながらMPCを行うことでユーザ認証を行う。
【0179】
なお、第6の実施形態では、ユーザ認証の際にユーザ装置が「ユーザ固有情報の分散シェアの分散シェア」c[i]をユーザサイド補助装置に送付する。したがって、ユーザ認証の際に不正者にユーザサイド補助装置を乗っ取られた場合、不正者はユーザサイド補助装置に保管されているd[i]とユーザ装置から受け取ったc[i]を用いることで、e[i]を復元できてしまう。よって、この段階でMPC安全性条件以上のユーザサイド補助装置が不正者に乗っ取られていた場合、e[i]からユーザ固有情報や認証情報、検証情報が復元されてしまい、これら機微な情報の秘匿性を保つことができない。
【0180】
そこで、第6の実施形態では、ユーザ認証が終わり次第、ユーザサイド補助装置が「ユーザ固有情報のシェアのシェア」c[i]を消去することを義務化する。これにより、かかる危険を可能な限り回避する。
【0181】
一方、第7の実施形態は、第6の実施形態と同一の動機に基き、第6の実施形態と類似した方法で問題を解決する。しかし、第7の実施形態では、事前登録段階でユーザ装置がユーザ固有情報を取得すると、これを秘密分散した上でユーザサイド補助装置に送り、ユーザサイド補助装置間のMPCを行う。これにより、i=1,...,Mに対し、i番目のユーザサイド補助装置はユーザ検証情報の分散シェアv[i]を得る。そしてi番目のユーザサイド補助装置はv[i]を秘密分散することで「検証情報の分散シェアの分散シェア」u[i]とw[i]を作り、u[i]をユーザ装置に送り、w[i]を自身で保管する。
【0182】
ユーザ認証の際、ユーザ装置はu[i]をi番目のユーザサイド補助装置に送り、i番目のユーザサイド補助装置はu[i]とw[i]から検証情報の分散シェアv[i]を復元する。さらに、ユーザ装置はユーザから得た固有情報を秘密分散することでユーザ固有情報の分散シェアf[1],...,f[M]を取得し、i=1,...,Mに対し、f[i]をi番目のユーザサイド補助装置に送る。i番目のユーザサイド補助装置は、v[i]、f[i]、認証情報導出のアルゴリズム、検証情報導出のアルゴリズム、および、ユーザ認証アルゴリズムを用いて他のユーザサイド補助装置と相互通信しながらMPCを行うことでユーザ認証を行う。
【0183】
また、第8の実施形態では、ユーザの認証情報およびそのシェアを計算する専用のサーバマシンである「ユーザ認証情報分散シェア生成装置」と、ユーザの検証情報およびそのシェアを計算する専用のサーバマシンである「ユーザ検証情報分散シェア生成装置」を用意する。これらの装置は、認証情報、検証情報、および、これらのシェアの計算をユーザ装置の代わりに実行する。
【0184】
かかる方法により、ユーザ装置は認証情報や検証情報の計算を行わなくなる。したがって、認証情報や検証情報の導出アルゴリズムをユーザ装置に明かす必要がなくなる。
【0185】
<実施形態によってもたらされる効果の概要>
本発明の各実施形態によると、上述の各課題が解決される。
【0186】
第1に、FIDO方式では認証情報および検証情報をユーザ装置に保管しているため、ユーザ装置にはこれらの情報を守るセキュア領域の存在が必須とされ、セキュア領域が不正者に侵された場合、ユーザの認証情報および検証情報という最高度に機微な情報が不正者の手に渡ってしまうという問題点がある。しかし、本発明の実施形態では、ユーザ装置には(認証情報や検証情報の分散シェアは保存されているが)認証情報や検証情報自身は保存されていない。したがって、仮にユーザ装置が不正者に完全に乗っ取られたとしても、不正者に認証情報や検証情報を奪われる危険はなく、セキュア領域も必要とされない。
【0187】
なお、実施形態においても、ユーザ装置のみならずユーザサイド補助装置の側もMPC条件を超えて不正者に乗っ取られた場合、認証情報および検証情報が不正者に漏えいする。しかしながら、前述のように実施形態では、ユーザサイド補助装置としてサーバマシンを想定している。したがって、ユーザ装置と併せてユーザサイド補助装置も不正者に乗っ取られるという危険性は非常に小さい。
【0188】
また、実施形態では、ユーザ認証が通ったか否かをユーザサイド補助装置に隠す方法も第3の実施形態として提示している。かかる方法を用いれば、不正者にユーザサイド補助装置が乗っ取られた場合における安全性を高めることができる。
【0189】
さらに、FIDO方式では、ユーザ認証のアルゴリズム、認証情報導出のアルゴリズム、および、検証情報導出のアルゴリズムもセキュア領域に保管することで、これらのアルゴリズムが漏えいしないよう保護している。しかしながら、このことは、セキュア領域が不正者に侵された場合にこれらのアルゴリズムが流出することを意味する。ユーザ認証の方法として生体認証を用いている場合、これらのアルゴリズムは企業秘密であることが多い。したがって、アルゴリズムが不正者に流出することに対する懸念は大きい。
【0190】
そこで、実施形態では、これらのアルゴリズムをユーザ装置に秘匿しつつユーザ認証を実行する方法を第6および第7の実施形態として提示している。
【0191】
第2に、既存技術の中には、認証サーバ装置やこれを補助する装置がMPC条件を超えて不正者に乗っ取られると、認証情報または検証情報という最高度に機微な情報が不正者に漏えいしてしまう問題を抱えているものがある。しかし、本願開示の実施形態では、FIDO方式と同様にユーザ認証と機器認証を分離している。したがって、認証サーバ装置には、認証情報や検証情報を教えないのみならず、これらの分散シェアすらも教えない。したがって、認証サーバ装置やこれを補助する装置がMPC条件を超えて不正者に乗っ取られた場合であっても、不正者は認証情報や検証情報を一切知ることはできない。
【0192】
第3に、既存方式の中には、認証サーバ装置がユーザ装置と通信することなく認証情報を全数探索できてしまう「サーバサイド・オフライン攻撃」に対して脆弱性を抱えているものがある。しかし、本願開示の実施形態では、前述のように認証サーバ装置やその補助装置には認証情報や検証情報はもちろんそれらの分散シェアすら教えない。すなわち、本願開示の実施形態では、かかる攻撃は不可能である。
【0193】
また、実施形態では、ユーザ装置が不正者に乗っ取られた場合であっても、ユーザ認証回数を制限することで認証情報や検証方法の漏洩を防ぐ方法を第4および第5の実施形態として提示している。
【0194】
第4に、実施形態では、ユーザ装置とサーバ装置の間で通信するデータをMPCで作成する。このとき、データの作り方については、実施形態とFIDO方式などの既存の認証方式との間で相違する。しかしながら、通信するデータ自身は既存の認証方式のものと全く同一である。したがって、本願開示の実施形態によると、既存の認証方式の通信標準をそのまま利用することができる。すなわち、本願開示の実施形態によると、既存の認証方式の通信標準を満たすすべてのサーバ装置と通信可能であり、既存方式のような通信プロトコルの互換性の問題は生じない。
【0195】
<実施形態1>
次に、第1の実施形態に係る認証システムについて図面を参照して説明する。
【0196】
[構成]
図4を参照して、本実施形態の認証システムの構成を説明する。
【0197】
本実施形態の認証システムは、ユーザ装置41、ユーザサイド補助装置43、および、機器認証サーバ装置42を備えている。ユーザ44は、ユーザ装置41を保有するユーザである。
【0198】
ユーザ装置41はユーザ44が保有する装置であり、例えばスマートフォン、タブレット、PC(Personal Computer)などが想定される。
【0199】
ユーザサイド補助装置43および機器認証サーバ装置42は、何らかのサーバマシンであることが想定される。
【0200】
ユーザ装置41、ユーザサイド補助装置43および機器認証サーバ装置42は、「計算部」、「記憶部」および「通信部」を備えている。計算部はCPU(Central Processing Unit)などのプロセッサである。記憶部は、メモリやハードディスクなどの記憶媒体である。通信部は、インターネットなどを介して装置同士が相互に通信することを可能にするための部分である。
【0201】
ユーザ装置41は、さらにユーザ情報取得部411および通知部415を備えている。ユーザ情報取得部411は、認証に使う情報をユーザ44から取得する。通知部415は、認証が受理されたのか拒否されたのかをユーザ44に伝える。通知部415は、例えばPCやスマートフォンのディスプレイである。
【0202】
本実施形態の認証システムでは、1人または複数のユーザ44が存在する。各ユーザ44は、1台以上のユーザ装置41を保有する。
図4は、そのうちの1人のユーザ44と当該ユーザ44が保有する1台のユーザ装置41のみを示す。
【0203】
機器認証サーバ装置42は、ユーザ装置41を認証するサーバである。機器認証サーバ装置42は、例えばユーザ44がユーザ装置41を使用して何らかのウェブサービスを利用する際の認証に用いられる。本実施形態の認証システムにおいて、機器認証サーバ装置42は一般には複数台存在する。
図4は、そのうちの1台のみを示す。
【0204】
機器認証サーバ装置42は、一般には複数台のユーザ装置41と通信する。機器認証サーバ装置42は、各装置の公開鍵を保存するためのデータベースである公開鍵データベース4221を記憶部422に保持する。なお、記憶部422は公開鍵データベース4221以外の領域も有し、そこに必要な情報を適時保存することもできる。
【0205】
ユーザサイド補助装置43は、認証においてユーザ装置41を補助する。
図4にはM台のユーザサイド補助装置43を示す。これらのユーザサイド補助装置43は認証の際、ユーザ装置41や他のユーザサイド補助装置43と通信しながら、認証を遂行する。
【0206】
各ユーザサイド補助装置43は、一般に複数の認証を補助し、各認証において(認証ごとに異なるまたは同一の)ユーザ装置41と通信をする。
【0207】
以下、1台目,...,M台目のユーザサイド補助装置43をユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]と表記する。
【0208】
同様に、ユーザサイド補助装置43に含まれるユニットについても、末尾に「[i]」を付すことでi番目のユーザサイド補助装置43のものであることを明示する。例えば、ユーザサイド補助装置43[3]の計算部431を計算部431[3]のように表記する。
【0209】
各ユーザサイド補助装置43は、ユーザ44の検証情報の分散シェアや、ユーザ44の保有するユーザ装置41の秘密鍵の分散シェアを保有するためのデータベースである分散シェアデータベース4321を記憶部432に保持する。なお、記憶部432は分散シェアデータベース4321以外の領域も有し、そこに必要な情報を適時保存することもできる。
【0210】
[本実施形態における認証]
本実施形態では、認証として、ユーザ44を認証するための「ユーザ認証」とユーザ44が持っている装置であるユーザ装置41を認証する「機器認証」の2種類の認証がある。本実施形態において、ユーザ認証とはユーザ44がユーザ装置41に対して自身が事前登録されたユーザ44と同一であることを証明する行為を指す。一方、機器認証とは、ユーザ装置41が機器認証サーバ装置42に対して、自身が事前登録された装置と同一であることを証明することをいう。
【0211】
ユーザ44は、ユーザ装置41を利用してユーザ認証を行う。ユーザ装置41はユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]と通信することでユーザ認証を行う。また、ユーザ認証が受理された場合、ユーザ装置41は機器認証サーバ装置42と通信することで機器認証を行う。この際、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]はユーザ装置41と通信することで、機器認証を手助けする。
【0212】
機器認証において、ユーザ装置41と機器認証サーバ装置42は事前に定められた何らかの通信プロトコル(例えばFIDOが提案しているUAF標準)に従って通信すべきデータを決定する。この通信プロトコルに従って通信するためのユニット(ないし手段)が、通信部414のユーザ装置フロントエンド4142と通信部423のサーバ装置フロントエンド4231である。
【0213】
上述したようにユーザ装置フロントエンド4142は、機器認証の通信プロトコルに従って機器認証サーバ装置42と通信するためのものである。一方、これとは別にユーザ装置41の通信部414は、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]と通信するための補助通信部4141を有する。同様に、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]の通信部433はユーザ装置41と通信するための補助通信部4331を有する。
【0214】
補助通信部4141および補助通信部4331は、認証情報や検証情報のシェアを送出するなど、ユーザ装置41とユーザサイド補助装置43の間の様々な通信を行う。
【0215】
ユーザ認証においては、ユーザ44を識別するための情報(以下「ユーザ固有情報」という)として、例えば以下の3種類のものが用いられる。
ユーザの記憶(暗証番号、パスワード、パスフレーズなど)
ユーザ生体情報(顔、指紋、光彩など)
ユーザの所有物(セキュリティトークン、IC(Integrated Circuit)カードなど)
【0216】
ユーザ装置41は、これらのユーザ固有情報の1つ以上を読み取るための手段を有するものとする。ユーザ装置41のユーザ情報取得部411は、読み取る認証情報ごとにその情報を読み取るための取得部4111を有する。
【0217】
取得部4111として、例えば以下のものが考えられる。
暗証番号、パスワード、パスフレーズなどを読み取るためのキーボード
顔、指紋、光彩などを読み取るためのカメラ
セキュリティトークンやICカード内の情報を読み取るための読み取り機
【0218】
ユーザ装置41は、取得部4111が得たユーザ固有情報を加工して「認証情報」を得る認証情報導出部41211と、ユーザ固有情報を加工して「検証情報」を得る検証情報導出部41221を有する。
【0219】
「認証情報」とは、ユーザ認証においてユーザの当人性を示すための情報である。一方、「検証情報」とは、認証情報と比較するために事前に登録されている情報である。
【0220】
認証情報導出部41211および検証情報導出部41221の具体例をいくつか示す。
【0221】
例えば、認証情報および検証情報が生体情報である場合、取得部4111は画像データとして生体情報を取得する。また、認証情報導出部41211と検証情報導出部41221は、画像データから生体情報の特徴量を抽出し、抽出された特徴量を認証情報および検証情報として用いる。
【0222】
一方、認証情報がパスワードPである場合、安全性の観点から、検証情報としてパスワードPそのものではなくPのハッシュ値Hash(P)を使うことが考えられる。この場合、検証情報導出部41221は取得部4111が取得したパスワードPをハッシュ化する操作に対応する。一方、認証情報導出部41211は、取得部4111が取得したパスワードPをそのまま使用する。このとき、認証情報導出部41211は「取得部4111が得た情報Pをそのまま出力する」手段となる。
【0223】
図4に例示した構成によると、機器認証サーバ装置42の計算部421に設けられたユーザ認証方法選択部4211が、複数のユーザ認証の方法のうちのいずれを用いるのかを決定する。ただし、ユーザ認証方法選択部4211はユーザ装置41に実装されていてもよい。
【0224】
機器認証においては、ユーザ装置41が作成した(何らかの公開鍵認証方式における)公開鍵・秘密鍵ペアを利用して認証を行う。
図4は、機器認証に用いられる公開鍵認証方式が事前に1通りに決定していることを前提に記載した。しかし、ユーザ認証の場合と同様に、複数の公開鍵認証方式から1つの方式を選ぶように拡張することも可能である。
【0225】
[予め装置に登録されているデータ]
ユーザ装置41は、事前に以下のデータを受け付けて記憶部413に保持するものとする。
ユーザサイド補助装置43の台数M
ユーザ認証の検証プロトコル(複数のユーザ認証が提供されている場合、それらすべての認証プロトコル)
機器認証の認証プロトコル
【0226】
ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]は、事前に以下のデータを受け付けて記憶部432に保持するものとする。
ユーザサイド補助装置43の台数M
ユーザ認証の検証プロトコル(複数のユーザ認証が提供されている場合、それらすべての認証プロトコル)
【0227】
機器認証サーバ装置42は、事前に以下のデータを受け付けて記憶部422に保持するものとする。
機器認証の検証プロトコル
【0228】
また、ユーザ認証や機器認証で行うMPCが事前計算を必要とするものである場合、ユーザ装置41および機器認証サーバ装置42は、それぞれ記憶部413および記憶部432にMPCの事前計算データを保管しておく。
【0229】
[全体の流れ]
本実施形態の認証システムの各部の詳細を述べる前に、全体の流れを概括する。
【0230】
本実施形態では、認証に先立って以下の事前準備を行う。
ユーザ認証事前準備
ユーザ認証で必要となるデータを事前準備する。本実施形態では、検証情報を計算しておく。
機器認証事前準備
機器認証で必要となるデータを事前準備する。本実施形態では、ユーザ装置の公開鍵および秘密鍵の生成を行う。
【0231】
認証において、以下の2つの動作を行う
ユーザ認証
ユーザ装置41がユーザサイド補助装置43の助けを借りながらユーザ44を認証する。
機器認証
ユーザ装置41がユーザサイド補助装置43の助けを借りながら機器認証サーバ装置42から認証を受ける。
【0232】
[ユーザ認証事前準備]
本実施形態では、ユーザ認証事前準備においてユーザ44が検証情報を事前登録する。検証情報を事前登録する方法として、様々な方法を用いることができる。
図4は、ユーザ装置41の取得部4111を利用して検証情報を事前登録する場合を示す。しかし、例えば企業が新入社員全員を認証システムに一括登録するようなケースでは、検証情報を登録するための専用マシンを用意し、これを利用して検証部の事前登録を行ってもよい。以降、
図4に記載した装置構成における検証情報の事前登録を説明する。
【0233】
ユーザ認証を複数用意している場合、すべての認証に対して以下の動作を行う。
【0234】
図5に従って検証情報の登録を説明する。
【0235】
ステップ51:まず、ユーザ装置41は以下を実行する。
ステップ511:取得部4111は、ユーザ44からユーザ固有情報を取得する。
ステップ512:検証情報導出部41221はユーザ固有情報を入力とし、検証情報を出力する。
ステップ513:検証情報分散部41222は検証情報とユーザサイド補助装置43の台数Mとを入力とし、検証情報の分散シェアv[0],v[1],...,v[M]を出力する。
ステップ514:記憶部413は分散シェアv[0]を保管する。
ステップ515:通信部414の補助通信部4141は、分散シェアv[1]をユーザサイド補助装置43[1]に送信し,...,分散シェアv[M]をユーザサイド補助装置43[M]に送信する。
ステップ516:ユーザ装置41は、ユーザ固有情報、検証情報および分散シェアv[1],...,v[M]を消去する。
【0236】
ステップ52:次に、i=1,...,Mに対し、ユーザサイド補助装置43[i]は以下を実行する。
ステップ521:通信部433[i]の補助通信部4331[i]は、ユーザ装置41が送信した分散シェアv[i]を受信する。
ステップ522:分散シェアデータベース4321[i]は、分散シェアv[i]を保持する。
【0237】
[機器認証事前準備]
本実施形態では、機器認証の事前準備として、公開鍵・秘密鍵ペアの生成と登録を行う。
【0238】
図6に従って、公開鍵・秘密鍵ペアの生成と登録を説明する。
【0239】
ステップ61:ユーザ装置41は、以下を実行する。
ステップ611:鍵ペア生成部4125は、ユーザ装置41の公開鍵pkと秘密鍵skを生成する。
ステップ612:秘密鍵分散部4126は生成された秘密鍵skを入力とし、秘密鍵の分散シェアk[0],...,k[M]を出力する。
ステップ613:記憶部413は秘密鍵の分散シェアk[0]と公開鍵pkをに保管する。
ステップ614:i=1,...,Mに対し、通信部414の補助通信部4141は秘密鍵の分散シェアk[i]と公開鍵pkをユーザサイド補助装置43[1]に送信する。
ステップ615:ユーザ装置41は、秘密鍵skおよび秘密鍵の分散シェアk[1],...,k[M]を消去する。
ステップ616:ユーザ装置フロントエンド4142は、公開鍵pkを機器認証サーバ装置42に送信する。
【0240】
ステップ62:i=1,...,Mに対し、ユーザサイド補助装置43[i]は以下を実行する。
ステップ621:通信部433[i]の補助通信部4331[i]は、秘密鍵の分散シェアk[i]と公開鍵pkを受信する。
ステップ622:分散シェアデータベース4321[i]は、秘密鍵の分散シェアk[i]と公開鍵pkを保持する。
【0241】
ステップ63:機器認証サーバ装置42は、以下を実行する。
ステップ631:サーバ装置フロントエンド4231は、ユーザ装置41の公開鍵pkを受信する。
ステップ632:公開鍵データベース4221は、受信した公開鍵pkを保持する。
【0242】
[ユーザ認証]
図7に従って、ユーザ認証を説明する。
【0243】
ステップ71:ユーザ装置41は、以下を実行する
ステップ711:取得部4111は、ユーザ44からユーザ固有情報を取得する。
ステップ712:認証情報導出部41211はユーザ固有情報を入力とし、認証情報を出力する。
ステップ713:認証情報分散部41212は認証情報とユーザサイド補助装置43の台数Mとを入力とし、認証情報の分散シェアs[0],s[1],...,s[M]を出力する。
ステップ714:i=1,...,Mに対し、通信部414の補助通信部4141は認証情報の分散シェアs[i]をユーザサイド補助装置43[i]に送信する。
ステップ715:ユーザ装置41は、ユーザ固有情報と認証情報の分散シェアs[1],...,s[M]を消去する。
ステップ716:ユーザ装置ユーザ認証MPC部4123は、記憶部413からユーザ44の検証情報のシェアv[0]とユーザ認証の検証プロトコルと事前計算データp[0](もしあれば)を読み込む。
【0244】
ステップ72:i=1,...,Mに対し、ユーザサイド補助装置43[i]は以下を実行する。
ステップ721:通信部433[i]の補助通信部4331[i]は、認証情報の分散シェアs[i]を受信する。
ステップ722:ユーザサイド補助装置ユーザ認証MPC部4311[i]は、分散シェアデータベース4321[i]から、ユーザ装置41を保有するユーザ44の検証情報のシェアv[i]とユーザ認証の検証プロトコルを読み込み、記憶部432[i]から事前計算データp[i](もしあれば)を読み込む。
【0245】
ステップ73:ユーザ装置41は、認証情報の分散シェアs[0]と検証情報の分散シェアv[0]と事前計算データp[0](もしあれば)とユーザ認証の検証プロトコルをユーザ装置ユーザ認証MPC部4123に入力する。また、i=1,...,Mに対し、ユーザサイド補助装置43[i]は認証情報の分散シェアs[i]と検証情報の分散シェアv[i]と事前計算データp[i](もしあれば)とユーザ認証の検証プロトコルを、ユーザサイド補助装置ユーザ認証MPC部4311[i]に入力する。これにより「ユーザ認証MPC」を実行する。実行結果として、ユーザ装置41はユーザ認証結果のシェアa[0]を得る。また、i=1,...Mに対し、ユーザサイド補助装置43[i]はユーザ認証結果のシェアa[i]を得る。なお「ユーザ認証MPC」の詳細については後述する。
【0246】
ステップ74:i=1,...,Mに対し、ユーザサイド補助装置43[i]の補助通信部4331[i]はユーザ認証結果のシェアa[i]をユーザ装置41に送る。
【0247】
ステップ75:ユーザ装置41は、以下を実行する。
ステップ751:補助通信部4141は、ユーザ認証結果のシェアa[1],...,a[M]を受信する。
ステップ752:ユーザ認証結果復元部4124はa[0],...,a[M]を入力とし、ユーザ認証の結果accを出力する。
ステップ753:ユーザ認証結果復元部4124は、ユーザ認証の結果accが「受理」か「拒否」かを判定する。
ステップ754:ユーザ認証の結果accが「受理」の場合、ユーザ装置41はユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]の助けを借りながら機器認証サーバ装置42から機器認証を受ける。なお「機器認証」の詳細については後述する。
ステップ755:ユーザ認証の結果が「拒否」の場合、ユーザ装置41は認証が拒否された旨を、通知部415を経由してユーザ44に伝えて終了する。
【0248】
[ユーザ認証MPC]
ZKIP法またはMAC法に基づいてユーザ認証MPCを実現する方法を述べる。
【0249】
図7に記載したユーザ認証のステップ73で行うユーザ認証MPCの詳細を述べる。ユーザ認証MPCでは、ユーザ装置41はユーザ装置ユーザ認証MPC部4123を用いる。一方、ユーザサイド補助装置43はユーザサイド補助装置ユーザ認証MPC部4311を用いる。
【0250】
まず、ユーザ装置ユーザ認証MPC部4123およびユーザサイド補助装置ユーザ認証MPC部4311の構成を説明する。
【0251】
図8は、ユーザ装置ユーザ認証MPC部4123の構成を例示するブロック図である。
【0252】
図9は、ユーザサイド補助装置ユーザ認証MPC部4311の構成を例示するブロック図である。
【0253】
図8および
図9を参照すると、ユーザ装置ユーザ認証MPC部4123は正当性証明生成部84を有し、一方ユーザサイド補助装置ユーザ認証MPC部4311は正当性証明検証部94を有する点で相違する。
【0254】
既存のZKIP法およびMAC法においては、いずれも、MPCの各ステップを実行するたびに、各MPC装置がそのステップの実行を正しく行ったことを証明する正当性証明を生成するステップと、他のMPC装置がそのステップの実行を正しく行ったことを確認するために他のMPC装置が生成した正当性証明を検証するステップがある。
【0255】
しかし、本実施形態の場合、[第1の実施形態の概要]で述べた理由により、ユーザ装置41のみに正当性証明を作成する正当性証明生成部84を設け、ユーザサイド補助装置43にはユーザ装置41の正当性証明を検証する正当性証明検証部94のみを設ける。
【0256】
図10に従ってユーザ認証MPCを説明する。
【0257】
ステップ101:ユーザ装置41において、ユーザ装置ユーザ認証MPC部4123の入力部81は認証情報の分散シェアs[0]と検証情報の分散シェアv[0]とユーザ認証の検証プロトコルを入力とし、認証情報の分散シェアs[0]と検証情報の分散シェアv[0]を一時記憶部82に保管する。i=1,...Mに対し、ユーザサイド補助装置43[i]におけるユーザサイド補助装置ユーザ認証MPC部4311[i]の入力部91[i]は、認証情報の分散シェアs[i]と検証情報の分散シェアv[i]とユーザ認証の検証プロトコルを入力とし、一時記憶部92[i]に保管する。
【0258】
ステップ102:ユーザ認証の検証プロトコルの各素子Rに対し、素子番号が小さいものから順番に以下を実行する。
ステップ1021:素子Rの入力端子をc[1],...,c[N]とする。ここで、Nは素子Rの入力端子の個数である。ユーザ装置41は素子Rの入力端子c[1],...,c[N]に対応するシェアt[0,1],...,t[0,N]と事前計算データq[0,R](もしあれば)を一時記憶部82から読み込み、素子Rとシェアt[0,1],...,t[0,N]をユーザ認証MPC実行部83に入力する。i=1,...,Mに対し、ユーザサイド補助装置43[i]は素子Rの入力端子c[1],...,c[N]に対応するシェアt[i,1],...,t[i,N]を一時記憶部92[i]から読み込み、素子Rとシェアt[i,1],...,t[i,N]と事前計算データq[i,R](もしあれば)をユーザ認証MPC実行部93[i]に入力する。
ステップ1022:ユーザ認証MPC実行部83およびユーザ認証MPC実行部93[1],...,ユーザ認証MPC実行部93[M]は、通信部414、通信部433[1],..,通信部433[M]を用いて通信し、素子Rに関するMPCを実行する。
ステップ1023:ユーザ認証MPC実行部83は、素子Rの出力端子のシェアu[0]をユーザ装置41に返す。i=1,...,Mに対し、ユーザ認証MPC実行部93[i]は素子Rの出力端子のシェアu[i]をユーザサイド補助装置43[i]に返す。
ステップ1024:ユーザ装置41は、素子R、シェアt[0,1],...,t[0,N]、ユーザ認証MPC実行部83の実行に利用した乱数(もしあれば)および事前計算データq[0,R](もしあれば)を正当性証明生成部84に入力する。i=1,...,Mに対し、ユーザ装置41およびユーザサイド補助装置43[i]は、それぞれ、通信部414および通信部433[i]を用いて通信しながらは正当性証明生成部84および正当性証明検証部94の処理を実行する。
【0259】
ステップ103:実行結果として、ユーザ装置41はユーザ認証結果のシェアa[0]を得る。i=1,...,Mに対し、ユーザサイド補助装置43[i]はユーザ認証結果のシェアa[i]を得る。
【0260】
ステップ104:ユーザ装置41は、ユーザ認証結果のシェアa[0]を出力する。i=1,...,Mに対し、ユーザサイド補助装置43[i]はユーザ認証結果のシェアa[i]を出力する。
【0261】
[機器認証]
次に、本実施形態の機器認証の詳細について説明する。本実施形態の機器認証では、ユーザ装置41と機器認証サーバ装置42がFIDOのUAF標準で標準化されている認証などの何らかの公開鍵認証を実行する。既知の公開鍵認証では、ユーザ装置41は自身の秘密鍵を使用することで認証を行う。一方、機器認証サーバ装置42はユーザ装置41の公開鍵を使用することでユーザ装置41の認証を検証する。
【0262】
しかし、本実施形態の場合、ユーザ装置41は自身の秘密鍵を保有しておらず、ユーザ装置41の秘密鍵はユーザ装置41、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]で分散シェアされている。したがって、既知の公開鍵認証をそのまま本実施形態で使用することはできない。
【0263】
そこで、本実施形態では、公開鍵認証においてユーザ装置41が秘密鍵を使用して計算するデータは、ユーザ装置41、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]のMPCで計算するように変更する。
【0264】
なお、以上で説明したように、本実施形態では、ユーザ装置41が必要データを計算する方法は通常の公開鍵認証とは異なる。しかし、ユーザ装置41と機器認証サーバ装置42の間でやり取りされる通信データは、通常の公開鍵認証と同一である。また、機器認証サーバ装置42の側で行う計算も、通常の公開鍵認証と同一である。したがって、本実施形態では、既存の認証方式の通信標準をそのまま利用することができる。すなわち、本実施形態によると、既存の認証方式の通信標準を満たしているすべてのサーバ装置と通信可能である。これにより、本実施形態では、既存技術のような通信プロトコルの互換性の問題は生じない。
【0265】
本実施形態における公開鍵認証に基づく機器認証は、以下の仮定を満たすものとする。
機器認証は「秘密鍵利用演算部」(ないし、ユニット名の一部に「秘密鍵利用演算」を含むユニット、以下同様)というサブルーチン(ないしユニット)を用いて行われ、秘密鍵は「秘密鍵利用演算部」でのみ用いられる。
【0266】
機器認証を行うサブルーチンのうちの「秘密鍵利用演算部」以外の部分を「秘密鍵不用演算部」と呼ぶ。
【0267】
本実施形態では、認証手段のうちの秘密鍵利用演算部の部分のみをユーザ装置41と機器認証サーバ装置42の間でのMPCで実行する。一方、秘密鍵不用演算部の部分はユーザ装置41が単独で実行する。
【0268】
図11は、ユーザ装置機器認証MPC部4127の構成を例示するブロック図である。
【0269】
図12は、ユーザサイド補助装置機器認証MPC部4312の構成を例示するブロック図である。
【0270】
図13は、機器認証の動作を例示するフロー図である。
【0271】
ステップ131:各装置は、以下のようにデータの入力を行う。
ステップ1311:ユーザ装置41は秘密鍵のシェアk[0]とユーザ装置41の公開鍵pkを記憶部413から読み込み、ユーザ装置機器認証MPC部4127の入力部111に入力する。
ステップ1312:i=1,...,Mに対し、ユーザサイド補助装置43[i]は秘密鍵のシェアk[i]とユーザ装置41の公開鍵pkを分散シェアデータベース4321から読み込み、ユーザサイド補助装置機器認証MPC部4312の入力部121に入力する。
ステップ1313:機器認証サーバ装置42はユーザ装置41の公開鍵pkを公開鍵データベース4221から読み込み、機器認証検証部4212に入力する。
【0272】
ステップ132:機器認証サーバ装置42およびユーザ装置41は、以下のようにデータの送受信を行う。
ステップ1321:機器認証サーバ装置42は機器認証検証部4212を実行し、機器認証検証部4212がユーザ装置41へのデータの送信要求を出した場合、サーバ装置フロントエンド4231を用いてユーザ装置41にデータを送信する。
ステップ1322:ユーザ装置41はユーザ装置フロントエンド4142を使って機器認証サーバ装置42から送られてきたデータを受信し、受信したデータを秘密鍵不用演算部115に入力し、以下を実行する。
ステップ13221:秘密鍵不用演算部115がサブルーチンとして秘密鍵利用演算を要求するたびに、秘密鍵不用演算部115がサブルーチンに投げたデータを秘密鍵利用演算MPC実行部113に入力し、以下を実行する。
ステップ132211:秘密鍵利用演算MPC実行部113はユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]の秘密鍵利用演算MPC実行部122[1],...,秘密鍵利用演算MPC実行部122[M]と相互通信してMPCを実行し、必要データを計算し、計算されたデータを秘密鍵不用演算部115に返答する。
ステップ132212:i=1,...,Mに対し、ユーザ装置41およびユーザサイド補助装置43[i]は、それぞれ補助通信部4141および補助通信部4331[i]を用いて通信しながら、秘密鍵利用演算正当性証明生成部114および秘密鍵利用演算正当性証明検証部123[i]の処理を実行する。これにより、ステップ132211で行ったMPCの正当性証明とその検証を行う。
ステップ13222:秘密鍵不用演算部115が機器認証サーバ装置42へのデータ送信要求を出した場合、ユーザ装置41はユーザ装置フロントエンド4142を用いて機器認証サーバ装置42にデータを送信する。
ステップ1323:最終的に、機器認証サーバ装置42の機器認証検証部4212が「受理」または「拒否」を意味するデータを出力した場合、機器認証サーバ装置42は機器認証検証部4212を終了する。
【0273】
本実施形態に係る認証システムでは、ユーザサイド補助装置とユーザ装置との間で検証情報および認証情報の分散シェアを用いてマルチパーティ計算を行う。したがって、ユーザ装置は検証情報および認証情報をそのまま保持する必要がなく、FIDO方式のようにユーザ装置内にセキュアな領域の存在を仮定する必要がなくなる。また、本実施形態では、ユーザ装置と機器認証サーバ装置の間でやり取りされるデータは既存のFIDO方式と同様である。したがって、本実施形態によれば、サーバサイドMPC方式および暗号化通信方式のように独自仕様の通信フロントエンドを設けることなく、既存の機器認証サーバとの通信フロントエンドを利用することができる。さらに、本実施形態によると、FIDO方式と同様にユーザ認証および機器認証の双方の認証が可能となる。すなわち、本実施形態の認証システムによると、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用することができる。したがって、本実施形態によると、FIDO方式、サーバサイドMPC方式および暗号化通信方式などの既存方式が抱える上述の問題を解消することが可能となる。
【0274】
また、本実施形態では、ユーザサイド補助装置としてサーバマシンを採用することで、ユーザサイド補助装置がMPCのプロトコルを逸脱することを防ぐ。このとき、ユーザ装置のみが正当性証明を作成し、サーバサイド補助装置による正当性証明の生成を省略することができる。したがって、本実施形態によると、既存のZKIP法およびMAC法と比較して計算効率および通信効率を大幅に改善することが可能となる。
【0275】
<実施形態2>
次に、第2の実施形態に係る認証システムについて図面を参照して説明する。本実施形態では、ガーブルドサーキット(GC:Garbled Circuit)法に基づくユーザ認証MPCを採用する。
【0276】
本実施形態の認証システムの構成は、第1の実施形態の構成(
図4)と同様である。
【0277】
本実施形態のユーザ認証を示すフロー図は、第1の実施形態(
図7)と同様である。ただし、本実施形態では、ステップ73のユーザ認証MPCが以下に説明するものに置換される。
【0278】
[ユーザ認証MPC]
GC法に基づくユーザ認証MPCについて説明する。
【0279】
図7に示した認証手続きのステップ73で行うユーザ認証MPCの詳細について説明する。ユーザ認証MPCでは、ユーザ装置41はユーザ装置ユーザ認証MPC部4123の処理を実行する。一方、ユーザサイド補助装置43はユーザサイド補助装置ユーザ認証MPC部4311の処理を実行する。
【0280】
まず、ユーザサイド補助装置ユーザ認証MPC部4311およびユーザ装置ユーザ認証MPC部4123の構成を説明する。
【0281】
図14は、ユーザサイド補助装置ユーザ認証MPC部4311の構成を例示するブロック図である。
【0282】
なお、ここで述べるユーザ認証では、ユーザサイド補助装置43は1台のみである。
図14の装置構成は、この1台のみのユーザサイド補助装置43[1]について説明するためのものである。
【0283】
図15は、ユーザ装置ユーザ認証MPC部4123の構成を例示するブロック図である。
【0284】
図16に従って、本実施形態におけるユーザ認証MPCを説明する。
【0285】
ステップ161:ユーザサイド補助装置43[1]は、認証情報の分散シェアs[1]と検証情報の分散シェアv[1]とユーザ認証の検証プロトコルをユーザサイド補助装置ユーザ認証MPC部4311に入力する。ユーザサイド補助装置ユーザ認証MPC部4311は、これらのデータを入力部141から受け取り、関数fの回路図をGC生成部142に入力することでGCと鍵データKを作成する。ここで、関数f(a,b)は「a,bをそれぞれ認証情報、検証情報の分散シェアとみなし、aとs[1]とを使って認証情報xを復元し、bとv[1]を使って検証情報yを復元し、xとyを使ってユーザ認証を行い、認証結果を出力する」関数とする。ユーザサイド補助装置43[1]は、通知部433[1]を用いてユーザ装置41にGCを送信する。
【0286】
ステップ162:ユーザ装置41のユーザ装置ユーザ認証MPC部4123は通信部414を使ってGCを受け取り、GCを使用してGC実行部152の処理を実行する。ユーザ装置41は、GC実行部152の出力Eを取得し、通信部414を用いて出力Eをユーザサイド補助装置43[1]に送る。
【0287】
ステップ163:ユーザサイド補助装置43[1]のユーザサイド補助装置ユーザ認証MPC部4311は通知部415[1]を用いて出力Eを受信し、出力Eと鍵データKをGC出力生成部143に入力し、その出力としてユーザ認証の結果が「受理」または「拒否」であることを意味するデータansを得る。
【0288】
ステップ164:ユーザ装置41は出力部144から何も出力しない。すなわち、MPCの出力のシェアs[0]は空文字列である。ユーザサイド補助装置43[1]はMPCの出力のシェアs[1]としてansを出力する。次に、ユーザ装置41はユーザサイド補助装置43[1]からs[1]=ansを受信し、ユーザ認証結果復元部4124はansを出力する。
【0289】
上述したMPCでは、第1の実施形態と同様にステップ713で行う認証情報分散部41212で認証情報が秘密分散され、結果として分散シェアs[0],s[1]が生成されることを前提として説明した。しかし、ステップ713において認証情報分散部41212を実行せず、s[0]を認証情報自身として、s[1]を空文字列とした場合にも、本実施形態は正しく動作し、安全性も担保することができる。
【0290】
本実施形態に係る認証システムにおいても、第1の実施形態と同様の効果がもたらされる。すなわち、本実施形態の認証システムによると、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用することができる。また、本実施形態では、ユーザ装置は認証情報および検証情報そのものではなく、これらのシェアとGCしか入手できない。したがって、本実施形態によると、ユーザ装置に対して認証情報および検証情報が漏れるというGC法の問題点を解消することができる。
【0291】
<実施形態3>
次に、第3の実施形態に係る認証システムについて図面を参照して説明する。
【0292】
第1および第2の実施形態においては、ユーザ認証が受理された場合、ユーザ装置41はユーザサイド補助装置43の助けを借りながら機器認証を行う。一方、ユーザ認証が拒否された場合、機器認証は行わず、ユーザ認証が拒否された旨をユーザ44に通知して終了する。このとき、ユーザサイド補助装置43は、ユーザ認証が受理されたのか拒否されたのかという1ビット分の情報を取得してしまう。
【0293】
本実施形態では、ユーザ認証が受理されたのか拒否されたのかという情報をユーザサイド補助装置43に対して隠す方法を説明する。
【0294】
本実施形態の認証システムの構成は、第1の実施形態(
図4)と同様である。ただし、本実施形態では、ユーザ装置41はユーザ認証結果復元部4124の(「許否」の)後段にさらに機器認証シミュレートMPC部17を有する。
【0295】
また、本実施形態の動作は、ユーザ認証を示すフロー図(
図7)のステップ755を除いて、第1の実施形態と同様である。
【0296】
本実施形態では、ステップ755の代わりに以下の動作を実行する。
ユーザ認証の結果が「拒否」の場合、ユーザ装置41はユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]の助けを借りながら、機器認証サーバ装置42の代わりに機器認証シミュレートMPCを実行する。なお、機器認証シミュレートMPCの詳細については、後述する。機器認証シミュレートMPCが終了すると、ユーザ装置41は認証が拒否された旨を、通知部415を経由してユーザ44に伝えて終了する。
【0297】
図7のステップ73のユーザ認証MPCは、第1の実施形態で説明したZKIP法またはMAC法を用いたものでもよいし、第2の実施形態で説明したGC法を用いたものでもよい。
【0298】
図7のステップ754の機器認証は、第1の実施形態で説明したRSAを用いたものでもよいし、第2の実施形態で説明した離散対数を用いたものでもよい。
【0299】
[機器認証シミュレートMPC]
機器認証シミュレートMPCの基本的なアイデアは、通常の機器認証において機器認証サーバ装置42が実行していた機器認証検証部4212の動作を、ユーザ装置41が実行するというものである。このようにすると、
図7のステップ754は、機器認証検証部4212の処理を実行するのが機器認証サーバ装置42なのかユーザ装置41なのかを除いて同一になる。
【0300】
ユーザサイド補助装置43には、機器認証検証部4212を実行しているのが機器認証サーバ装置42なのかユーザ装置41なのかを判定する方法がない。したがって、ユーザサイド補助装置43には、ユーザ認証が受理された(すなわちステップ754を実行している)のか、それともユーザ認証が拒否された(すなわちステップ755を実行している)のかを判別する方法はない。
【0301】
図17は、機器認証シミュレートMPC部17の構成を例示するブロック図である。
【0302】
機器認証シミュレートMPC部17は、ユーザ装置41が秘密鍵利用演算MPC実行部173の処理を実行する際、ユーザサイド補助装置43の秘密鍵利用演算MPC実行部122と相互通信しながらMPCを実行する。
【0303】
図17における秘密鍵利用演算MPC実行部173、秘密鍵利用演算正当性証明生成部174および秘密鍵不用演算部175は、それぞれ、
図11におけるユーザ装置機器認証MPC部4127の秘密鍵利用演算MPC実行部113、秘密鍵利用演算正当性証明生成部114および秘密鍵不用演算部115と同一である。また、
図17における公開鍵認証検証部176は、
図4における機器認証サーバ装置42の機器認証検証部4212と同一である。
【0304】
図18は、機器認証シミュレートMPCの動作を例示するフロー図である:
【0305】
ステップ181:各装置は、以下のようにデータ入力を行う。
ステップ1811:ユーザ装置41は秘密鍵のシェアk[0]を記憶部413から読み込み、機器認証シミュレートMPC部17の入力部171に入力する。ユーザ装置41は、さらに自身の公開鍵pkを記憶部413から読み込み、公開鍵認証検証部176に入力する。
ステップ1812:i=1,...,Mに対し、ユーザサイド補助装置43[i]は秘密鍵のシェアk[i]を分散シェアデータベース4321から読み込み、ユーザサイド補助装置機器認証MPC部4312の入力部121に入力する。
【0306】
ステップ182:ユーザ装置41は以下を実行する。
ステップ1821:ユーザ装置41は公開鍵認証検証部176を実行し、公開鍵認証検証部176がデータの送信要求を出すと、送信要求されたデータを秘密鍵不用演算部175に入力する。
ステップ1822:ユーザ装置41は送信要求されたデータを秘密鍵不用演算部175に入力し、以下を実行する。
ステップ18221:秘密鍵不用演算部175がサブルーチンとして秘密鍵利用演算を要求するたびに、秘密鍵不用演算部175がサブルーチンに投げたデータを秘密鍵利用演算MPC実行部173に入力し、以下を実行する。
ステップ182211:秘密鍵利用演算MPC実行部173はユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]の秘密鍵利用演算MPC実行部122[1],...,秘密鍵利用演算MPC実行部122[M]と相互通信してMPCを実行し、必要データを計算し、計算されたデータを秘密鍵不用演算部175に返答する。
ステップ182212:i=1,...,Mに対し、ユーザ装置41およびユーザサイド補助装置43[i]は、それぞれ補助通信部4141および補助通信部4331[i]を用いて通信しながら、秘密鍵利用演算正当性証明生成部174および秘密鍵利用演算正当性証明検証部123[i]の処理を実行する。これにより、ステップ182211で行ったMPCの正当性証明とその検証を行う。
ステップ18222:秘密鍵利用演算正当性証明生成部174がデータ送信要求を出すと、ユーザ装置41は要求されたデータを公開鍵認証検証部176に入力する。
ステップ1823:最終的に公開鍵認証検証部176が「受理」または「拒否」を意味するデータを出力すると、ユーザ装置41は機器認証シミュレートMPCを終了する。
【0307】
本実施形態に係る認証システムにおいても、上記実施形態と同様の効果がもたらされる。すなわち、本実施形態の認証システムによると、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用することができる。また、本実施形態では、ユーザ認証が許否された場合、ユーザ装置が機器認証シミュレートMPCを実行することで、ユーザサイド補助装置に対して、ユーザに受理されたか否かに関する情報を一切与えないようにすることができる。したがって、本実施形態によると、上述の実施形態に係る認証システムの安全性をさらに高めることが可能となる。
【0308】
<実施形態4>
次に、第4の実施形態に係る認証システムについて図面を参照して説明する。
【0309】
本実施形態では、i=1,...,Mに対し、ユーザ認証で拒否された回数をカウントするカウンタを第1の実施形態のユーザサイド補助装置43[i]に付け加え、カウンタが定められたしきい値を超えた場合にはユーザ認証を拒絶する。
【0310】
本実施形態では、i=1,...,Mに対し、ユーザサイド補助装置43[i]にもユーザ装置41と同様、ユーザ認証結果復元部4124が備わっている。この点を除くと、本実施形態のシステム構成は第1の実施形態の構成と同様である。
【0311】
i=1,...,Mに対し、ユーザサイド補助装置43[i]の記憶部432[i]は、ユーザ装置41を用いたユーザ認証においてユーザ44が拒否された回数Cを(ユーザ装置41ごとに)保管しているものとする。ここでは、ユーザ44が拒否された回数Cを拒否回数カウンタと呼ぶ。拒否回数カウンタCは、予めゼロ(0)に初期化されている。また、しきい値Tが事前に定められ、ユーザサイド補助装置43[i]は、しきい値Tを記憶部432[i]に保管している。
【0312】
本実施形態の動作は、ユーザ認証を示すフロー図(
図7)のステップ74とステップ75との間に以下のステップが挿入される点を除いて、第1の実施形態と同様である。
【0313】
i=1,...,M、j=1,...,Mに対し、ユーザサイド補助装置43[i]は補助通信部4331[i]を用いてユーザ認証結果のシェアa[i]をユーザサイド補助装置43[j]に送るi=1,...,Mに対し、ユーザ装置41は補助通信部4141を用いてユーザ認証結果のシェアa[0]をユーザサイド補助装置43[i]に送る。
【0314】
i=1,...,Mに対し、ユーザサイド補助装置43[i]は補助通信部4331[i]を用いてユーザ認証結果のシェアa[0],...,a[M]を受信し、ユーザ認証結果のシェアa[0],...,a[M]を入力してユーザ認証結果復元部の処理を実行する。これにより、ユーザサイド補助装置43[i]はユーザ認証の結果accを得る。ユーザ認証の結果accが「拒否」を表している場合、ユーザサイド補助装置43[i]は記憶部432[i]が保持するユーザ装置41の拒否回数カウンタCに1加える。拒否回数カウンタCの値が記憶部432[i]に保管されているしきい値T以上である場合、ユーザサイド補助装置43[i]は以後ユーザ装置41からのユーザ認証要求をすべて拒絶する。
【0315】
本実施形態に係る認証システムにおいても、上記実施形態と同様の効果がもたらされる。すなわち、本実施形態の認証システムによると、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用することができる。また、本実施形態では、ユーザ認証が許否された回数が所定のしきい値以上となると、ユーザサイド補助装置は以降のユーザ認証を許否する。したがって、本実施形態によると、不正者による解析を回避することができ、第1の実施形態に係る認証システムの安全性をさらに高めることが可能となる。
【0316】
<実施形態5>
次に、第5の実施形態に係る認証システムについて図面を参照して説明する。本実施形態では、ユーザ認証で拒否された回数をカウントするカウンタを実施形態2のユーザサイド補助装置43[1]に付け加え、カウンタが定められたしきい値を超えた場合にはユーザ認証を拒絶する。
【0317】
本実施形態の認証システムの構成は、第2の実施形態の構成と同様である。
【0318】
ユーザサイド補助装置43[1]の記憶部432[1]は、ユーザ装置41を用いたユーザ認証においてユーザ44が拒否された回数Cを(ユーザ装置41ごとに)保管しているものとする。ここでは、ユーザ44が拒否された回数Cを拒否回数カウンタと呼ぶ。拒否回数カウンタCは、予めゼロ(0)に初期化されている。また、しきい値Tが事前に定められており、ユーザサイド補助装置43[1]は、しきい値Tを記憶部432[1]に保管している。
【0319】
本実施形態の動作は、ユーザ認証MPC部を示すフロー図(
図16)のステップ163とステップ164の間に以下のステップが追加される点を除いて、第2の実施形態と同様である。
【0320】
accが「拒否」を表す場合、ユーザサイド補助装置43[1]は記憶部432[1]が保持するユーザ装置41の拒否回数カウンタCに1加える。拒否回数カウンタCの値が記憶部432[1]に保管されているしきい値T以上である場合、ユーザサイド補助装置43[1]は以後ユーザ装置41からのユーザ認証要求を拒絶する。
【0321】
本実施形態に係る認証システムにおいても、上記実施形態と同様の効果がもたらされる。すなわち、本実施形態の認証システムによると、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用することができる。また、本実施形態では、ユーザ認証が許否された回数が所定のしきい値以上になると、ユーザサイド補助装置は以降のユーザ認証を許否する。したがって、本実施形態によると、不正者による解析を回避することができ、第2の実施形態に係る認証システムの安全性をさらに高めることが可能となる。
【0322】
<実施形態6>
次に、第6の実施形態に係る認証システムについて図面を参照して説明する。
【0323】
本実施形態の認証システムの構成は、第1の実施形態の構成と以下の点で相違する。
第1の実施形態では、ユーザ装置41は検証情報分散シェア生成部4122を備えている。一方、本実施形態における「検証情報分散シェア生成」には、ユーザ装置41およびユーザサイド補助装置43の双方が参加する。また、第1の実施形態とは異なり、本実施形態の検証情報分散シェア生成は第1の実施形態における検証情報導出部41221および検証情報分散部41222の機能を有していない。
第1の実施形態では、ユーザ装置41は認証情報分散シェア生成部4121を備えている。一方、本実施形態における「認証情報分散シェア生成」は、ユーザサイド補助装置43が参加するMPCであり、ユーザ装置41はこのMPCに参加しない。また、第1の実施形態と異なり、本実施形態の「認証情報分散シェア生成」は第1の実施形態における認証情報導出部41211および認証情報分散部41212の機能を有していない。
【0324】
本実施形態の「検証情報分散シェア生成」は、下記の3つの動作を含む。
事前準備時入力検証用ユーザ固有情報分散シェア作成
MPC入力検証用ユーザ固有情報分散シェア作成
検証情報分散シェア作成マルチパーティ計算
【0325】
「事前準備時入力検証用ユーザ固有情報分散シェア作成」を実行する装置、実行されるとき、および、入出力は、以下のとおりである。
この処理は、ユーザ認証事前準備で行われる。
この処理は、ユーザ装置41によって実行される。
この処理は、ユーザ固有情報とユーザサイド補助装置43の台数Mとを入力として受け取り、M+1個の「事前準備時検証用ユーザ固有情報分散シェア」を出力する。これらのうちの1つはユーザ装置41のためのものであり、他のM個はM台のユーザサイド補助装置43のためのものである。
【0326】
「事前準備時入力検証用ユーザ固有情報分散シェア作成」の詳細は、次のとおりである。
入力として受け取ったユーザ固有情報を秘密分散してM個のユーザ固有情報の分散シェアe[1],...,e[M]を得る。
i=1,...,Mに対し、ユーザ固有情報の分散シェアe[i]を秘密分散して2個の「ユーザ固有情報の分散シェアの分散シェア」c[i],d[i]を得る。
分散シェアe[1],...,e[M]を消去する。
ユーザ装置の「事前準備時検証用ユーザ固有情報分散シェア」はD=(c[1],...,c[M])である。i=1,...,Mに対し、ユーザサイド補助装置43[i]の「事前準備時検証用ユーザ固有情報分散シェア」はd[i]である。
【0327】
「MPC入力検証用ユーザ固有情報分散シェア作成」を実行する装置、実行されるとき、および、入出力は、以下のとおりである。
この処理は、ユーザ認証時に実行される。
この処理は、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]によって実行される。
この処理の入力は、以下の2つである。
ユーザ装置41が保管している「事前準備時検証用ユーザ固有情報分散シェア」から求められるデータ
ユーザサイド補助装置43[i]が保管している「事前準備時検証用ユーザ固有情報分散シェア」
この処理の出力は、ユーザ固有情報の分散シェア(以下「MPC入力検証用ユーザ固有情報分散シェア」という)である。
【0328】
i=1,...,Mに対し、ユーザサイド補助装置43[i]が実行する「MPC入力検証用ユーザ固有情報分散シェア作成[i]」の詳細は、次のとおりである。
ユーザ装置41が保管している「事前準備時検証用ユーザ固有情報分散シェア」D=(c[1],...,c[M])から求められるデータc[i]と、自身の保持している「事前準備時検証用ユーザ固有情報分散シェア」d[i]を入力として受け取る。
c[i],d[i]を用いて秘密分散の復元を実行することで、ユーザ固有情報の分散シェア(すなわちMPC入力検証用ユーザ固有情報分散シェア)e[i]を得てe[i]を出力する。
【0329】
「検証情報分散シェア作成マルチパーティ計算」を実行する装置、実行されるとき、および、入出力は、以下のとおりである。
この処理は、ユーザ認証時に実行される。
この処理は、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]が参加するMPCである。
i=1,...,Mに対し、ユーザサイド補助装置43[i]は自身の持っているユーザ固有情報の分散シェアをMPCで用い、MPCの出力として検証情報の分散シェアを得る。
【0330】
本実施形態における「認証情報分散シェア生成」を実行する装置、実行されるとき、および、入出力は、以下のとおりである。
この処理は、ユーザ認証時に実行される。
この処理は、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]が参加するMPCである。
i=1,...,Mに対し、ユーザサイド補助装置43[i]は自身の持っているユーザ固有情報の分散シェアをMPCで用い、MPCの出力として認証情報の分散シェアを得る。
【0331】
「検証情報分散シェア作成マルチパーティ計算」と「認証情報分散シェア生成のMPC」は、第1の実施形態の他のMPCと同様に、事前計算データを入力として受け取る場合がある。
【0332】
また、第1の実施形態でも述べたように、サーバマシンであるユーザサイド補助装置43はユーザ装置41と比較してはるかに安全性が高く、ログ監視も行われている。このとき、たとえ不正者がユーザサイド補助装置43を乗っ取ったとしても、ユーザサイド補助装置43が定められた動作から外れた行動をとることは考えづらい。
【0333】
したがって、「検証情報分散シェア作成マルチパーティ計算」と「認証情報分散シェア生成」のMPCでは、既存のMPCであるZKIP法やMAC法における正当性証明および検証が必要なくなる。このとき、これらのMPCは高速に実行することができる。
【0334】
次に、第1の実施形態の動作のうちの、本実施形態とは詳細が異なるものに関して述べる。
ユーザサイド補助装置ユーザ認証MPC部4311[i]は、検証情報の分散シェアv[i]と認証情報の分散シェアs[i]と事前計算データ(もしあれば)を入力として受け取り、他のユーザサイド補助装置43のユーザサイド補助装置ユーザ認証MPC部4311と相互通信しながらMPCの計算を進め、認証結果の分散シェアa[i]を出力する。しかし、本実施形態では、第1の実施形態とは異なり、ユーザ装置41がこのMPCに参加しない。第1の実施形態においては、サーバマシンであるユーザサイド補助装置43よりも安全性の劣るユーザ装置41と相互通信しながらMPCを実行している。このため、第1の実施形態のユーザサイド補助装置ユーザ認証MPC部4311[i]は、ユーザ装置41の動作の正当性を検証する正当性証明検証部94を備えている。しかし、本実施形態では、上述したように、ユーザサイド補助装置ユーザ認証MPC部4311[i]の行うMPCにユーザ装置41が参加しない。したがって、本実施形態では、MPCを行う際に、正当性証明検証部94の実行を省略することができる。
【0335】
第1の実施形態では、ユーザ認証結果復元部4124はM+1個の分散シェアを入力として受け取っている。一方、本実施形態では、ユーザ認証結果復元部4124は入力としてM個の分散シェアしか受け取らない。これは上述したように、ユーザ認証のMPCにユーザ装置41が参加しないため、シェアがそもそもM個しか存在しないからである。
【0336】
[ユーザ認証事前準備]
本実施形態のユーザ認証事前準備は、以下のとおりである。
【0337】
まず、ユーザ装置41は以下を実行する。
取得部4111によりユーザ44からユーザ固有情報を取得する。
ユーザ固有情報とユーザサイド補助装置43の台数Mを用いて「事前準備時入力検証用ユーザ固有情報分散シェア作成」を実行し、M+1個の「事前準備時入力検証用ユーザ固有情報分散シェア」D=(c[1],...,c[M]),d[1],...,d[M]を得る。
D=(c[1],...,c[M])を記憶部413に保管する。
i=1,...,Mに対し、通信部414の補助通信部4141を用いてd[i]をユーザサイド補助装置43[i]に送信する。
ユーザ固有情報および分散シェアd[1],...,d[M]を消去する。
【0338】
次に、i=1,...,Mに対し、ユーザサイド補助装置43[i]は以下を実行する。
ユーザ装置41が送信した分散シェアd[i]を通信部433[i]の補助通信部4331[i]を用いて受信する。
分散シェアd[i]を分散シェアデータベース4321[i]に保存する。
【0339】
[機器認証事前準備]
第1の実施形態と同一である。
【0340】
[ユーザ認証]
本実施形態のユーザ認証は、以下のとおりである。
【0341】
ユーザ装置41は、以下を実行する。
取得部4111によりユーザ44からユーザ固有情報を取得する。
ユーザ固有情報とユーザサイド補助装置43の台数Mとを用いてユーザ固有情報を秘密分散し、、認証情報の分散シェアf[1],...,f[M]を得る。
記憶部413から「事前準備時入力検証用ユーザ固有情報分散シェア」D=(c[1],...,c[M])を読み込む。
i=1,...,Mに対し、通信部414の補助通信部4141を用いてf[i]とc[i]をユーザサイド補助装置43[i]に送信する。
ユーザ固有情報と分散シェアf[1],...,f[M]を消去する。
【0342】
i=1,...,Mに対し、ユーザサイド補助装置43[i]は以下を実行する。
f[i]とc[i]を通信部433[i]の補助通信部4331[i]を用いて受信する。
分散シェアデータベース4321[i]から「事前準備時入力検証用ユーザ固有情報分散シェア」d[i]を読み込む。
c[i]とd[i]を入力して「MPC入力検証用ユーザ固有情報分散シェア作成」を実行することで、ユーザ固有情報の分散シェア(MPC入力検証用ユーザ固有情報分散シェア)e[i]を得る。
記憶部432から検証情報導出部のアルゴリズムと事前計算データp[i](もしあれば)を読み込み、e[i]と事前計算データp[i](もしあれば)と検証情報導出部のアルゴリズムを用いて、「検証情報分散シェア作成マルチパーティ計算[i]」を他のユーザサイド補助装置43と相互通信しながら実行し、出力として検証情報の分散シェアv[i]を得る。
記憶部432から認証情報導出部のアルゴリズムと事前計算データq[i](もしあれば)を読み込み、f[i]と事前計算データq[i](もしあれば)と認証情報導出部のアルゴリズムを用いて、「認証情報分散シェア生成[i]」を他のユーザサイド補助装置43の「認証情報分散シェア生成[j]」と相互通信しながらマルチパーティ計算により実行し、出力として認証情報の分散シェアs[i]を得る。
記憶部432からユーザ認証のアルゴリズムと事前計算データb[i](もしあれば)を読み込み、v[i]とs[i]とb[i](もしあれば)とユーザ認証のアルゴリズムをユーザサイド補助装置ユーザ認証MPC部4311[i]に入力し、ユーザサイド補助装置ユーザ認証MPC部4311[i]を他のユーザサイド補助装置43のユーザサイド補助装置ユーザ認証MPC部4311と相互通信しながら実行し、実行結果としてユーザ認証結果の分散シェアa[i]を得る。
補助通信部4331[i]を用いてa[i]をユーザ装置41に送る。
f[i]、c[i]、v[i]、s[i]、a[i]を消去する。
【0343】
ユーザ装置41は、以下を実行する。
補助通信部4141を用いてa[1],...,a[M]を受信する。
a[1],...,a[M]をユーザ認証結果復元部4124に入力し、その出力としてユーザ認証の結果accを得る。
ユーザ認証の結果accが「受理」か「拒否」かを判定する。
ユーザ認証の結果accが「受理」である場合、ユーザ装置41はユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]の助けを借りながら、機器認証サーバ装置42から機器認証を受ける。
ユーザ認証の結果が「拒否」である場合、ユーザ装置41は認証が拒否された旨を、通知部415を経由してユーザ44に伝えて終了する。
【0344】
本実施形態では、第1の実施形態と同様、ユーザ認証の結果が「拒否」の場合にはその旨をユーザ44に伝えて終了するものとした。ただし、第3の実施形態と同様に、機器認証シミュレートMPCを実行した後、ユーザ44に「拒否」された旨を通知してもよい。これにより、ユーザ認証の結果が「拒否」されたか否かがユーザサイド補助装置43には分からないようにすることもできる。
【0345】
また、本実施形態においても、第4の実施形態と同様に、ユーザ認証が拒否される回数の上限を定め、安全性を高めることも可能である。
【0346】
本実施形態に係る認証システムにおいても、上記実施形態と同様の効果がもたらされる。すなわち、本実施形態の認証システムによると、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用することができる。また、本実施形態では、認証情報導出、検証情報導出およびユーザ認証の各アルゴリズムをユーザサイド補助装置にのみ記憶させる。したがって、本実施形態によると、これらのアルゴリズムを不特定多数のユーザによって使用されるユーザ装置に対して隠蔽することが可能となる。
【0347】
<実施形態7>
次に、第7の実施形態に係る認証システムについて図面を参照して説明する。
【0348】
本実施形態の認証システムの構成は、以下の点を除いて第1の実施形態の構成と同一である。
第1の実施形態では、ユーザ装置41は検証情報分散シェア生成部4122を備えている。一方、本実施形態における「検証情報分散シェア生成」には、ユーザ装置41およびユーザサイド補助装置43の双方が参加する。また、第1の実施形態と異なり、本実施形態の「検証情報分散シェア生成」は、第1の実施形態における検証情報導出部41221と検証情報分散部41222の機能を有していない。
第1の実施形態では、ユーザ装置41は認証情報分散シェア生成部4121を備えている。一方、本実施形態における「認証情報分散シェア生成」は、ユーザサイド補助装置が参加するMPCであり、ユーザ装置41はこのMPCに参加しない。また、第1の実施形態と異なり、本実施形態の「認証情報分散シェア生成」は第1の実施形態における認証情報導出部41211と認証情報分散部41212の機能を有していない。
【0349】
本実施形態の「検証情報分散シェア生成」は、以下の4つの処理を含む。
MPC入力検証用ユーザ固有情報分散シェア作成
検証情報分散シェア作成マルチパーティ計算
保存用分散シェア作成
検証情報分散シェア復元
【0350】
「MPC入力検証用ユーザ固有情報分散シェア作成」を実行する装置、実行されるとき、および、入出力は、以下のとおりである。
この処理は、ユーザ装置が実行する。
この処理は、ユーザ認証事前準備で実行される。
この処理は、ユーザ固有情報とユーザサイド補助装置43の台数Mを入力として受け取り、ユーザ固有情報の分散シェアを出力する。
【0351】
「MPC入力検証用ユーザ固有情報分散シェア作成」の詳細は、以下のとおりである。
ユーザ固有情報Eとユーザサイド補助装置43の台数Mを入力として受け取る。
ユーザ固有情報EをM個に秘密分散してユーザ固有情報の分散シェア(MPC入力検証用ユーザ固有情報分散シェア)e[1],...,e[M]を得る。
e[1],...,e[M]を出力する。
【0352】
「検証情報分散シェア作成マルチパーティ計算」を実行する装置、実行されるとき、および、入出力は、以下のとおりである。
この処理は、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]が参加するMPCである。
この処理は、ユーザ認証事前準備で実行される。
i=1,...,Mに対し、ユーザサイド補助装置43[i]は、自身の保持するユーザ固有情報の分散シェアe[i]をMPCで用い、MPCの出力として検証情報の分散シェアv[i]を得る。
【0353】
「保存用分散シェア作成」を実行する装置、実行されるとき、および、入出力は、以下のとおりである。
この処理は、ユーザ認証事前準備で実行される。
この処理は、検証情報の分散シェアを入力として受け取り、保存用分散シェアを出力する。
この処理は、まずi=1,...,Mに対し、ユーザサイド補助装置43[i]が実行することで自身の保存用分散シェアとユーザ装置41に送るデータを作成する。ユーザ装置41は、ユーザサイド補助装置43から送られてきたデータをもとに自身の保存用分散シェアを作成する。
【0354】
「保存用分散シェア作成」の詳細は以下のとおりである。
i=1,...,Mに対し、ユーザサイド補助装置43[i]は以下を実行する。
検証情報の分散シェアv[i]を入力として受け取り、v[i]を2つに秘密分散することで「検証情報の分散シェアの分散シェア」u[i]とw[i]を得る。
w[i]をユーザサイド補助装置43[i]自身の保存用分散シェアとする。
u[i]をユーザ装置41に送る。
ユーザ装置41は、以下を実行する
i=1,...,Mに対し、u[i]をユーザサイド補助装置43[i]から受け取る。
W=(u[1],...,u[M])をユーザ装置41の保存用分散シェアとする。
【0355】
「検証情報分散シェア復元」を実行する装置、実行されるとき、および、入出力は以下のとおりである。
この処理は、ユーザ認証で実行される。
この処理は、保存用分散シェアを入力として受け取り、検証情報分散シェアを出力する。
この処理では、まずユーザ装置41が自身の保存用分散シェアから得られる情報をユーザサイド補助装置43に送り、ユーザサイド補助装置43は送られてきたデータと自身の保存用分散シェアからユーザ認証を計算する。
【0356】
「検証情報分散シェア復元」の詳細は、以下のとおりである。
i=1,...,Mに対し、ユーザ装置41は自身の保存用分散シェアW=(u[1],...,u[M])から求まるデータu[i]をユーザサイド補助装置43[i]に送る。
i=1,...,Mに対し、ユーザサイド補助装置43[i]はユーザから送られてきたデータu[i]と自身の保存用分散シェアw[i]を用いて秘密分散の復元部を行い、検証情報の分散シェアv[i]を得る。
【0357】
本実施形態における「認証情報分散シェア生成」を実行する装置、実行されるとき、および、入出力は、以下のとおりである。
この処理は、ユーザ認証時に実行される。
この処理は、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]が参加するMPCである。
i=1,...,Mに対し、ユーザサイド補助装置43[i]は自身が保持するユーザ固有情報の分散シェアをMPCで用い、MPCの出力として認証情報の分散シェアを得る。
【0358】
「検証情報分散シェア作成マルチパーティ計算」と「認証情報分散シェア生成」のMPCは、第1の実施形態の他のMPCと同様に、事前計算データを入力として受け取る場合がある。
【0359】
また、第1の実施形態でも述べたように、サーバマシンであるユーザサイド補助装置43はユーザ装置41と比較してはるかに安全性が高く、ログ監視も行われている。このとき、たとえ不正者がユーザサイド補助装置43を乗っ取ったとしても、ユーザサイド補助装置43が定められた動作から外れた行動をとることは考えづらい。
【0360】
したがって、「検証情報分散シェア作成マルチパーティ計算」と「認証情報分散シェア生成」のMPCでは、既存のMPCであるZKIP法やMAC法における正当性証明および検証が必要なくなる。したがって、これらのMPCは高速に実行することができる。
【0361】
次に、第1の実施形態の構成および動作のうちの、本実施形態とは詳細が異なるものに関して述べる。
【0362】
ユーザサイド補助装置ユーザ認証MPC部4311[i]は、第6の実施形態のユーザサイド補助装置ユーザ認証MPC部4311[i]と同様である。すなわち、ユーザサイド補助装置ユーザ認証MPC部4311[i]は、検証情報の分散シェアv[i]と認証情報の分散シェアs[i]と事前計算データ(もしあれば)を入力として受け取り、他のユーザサイド補助装置43のユーザサイド補助装置ユーザ認証MPC部4311と相互通信しながらMPCの計算を進め、認証結果の分散シェアa[i]を出力する。しかし、第1の実施形態とは異なり、ユーザ装置41はこのMPCに参加しない。また、第6の実施形態と同様の理由により、本実施形態の場合、MPCを行う際に正当性証明検証部94の実行を省略することができる。
【0363】
第6の実施形態と同様の理由により、ユーザ認証結果復元部4124は入力としてM個の分散シェアしか受け取らない。
【0364】
なお、第6の実施形態と同様の理由により、本実施形態でも、ユーザサイド補助装置ユーザ認証MPC部4311[i]の行うMPCで、正当性証明検証部94の実行を省略することができる。
【0365】
[ユーザ認証事前準備]
ユーザ認証事前準備は、以下のとおりである。
【0366】
まず、ユーザ装置41は以下を実行する。
取得部4111によりユーザ44からユーザ固有情報Eを取得する。
ユーザ固有情報Eを用いて「MPC入力検証用ユーザ固有情報分散シェア作成」を実行し、出力としてユーザ固有情報の分散シェアe[1],...,e[M]を得る。
通信部414の補助通信部4141を用いてe[1]をユーザサイド補助装置43[1]に送信し,...,e[M]をユーザサイド補助装置43[M]に送信する。
ユーザ固有情報Eおよび分散シェアe[1],...,e[M]を消去する。
【0367】
次に、i=1,...,Mに対し、ユーザサイド補助装置43[i]は以下を実行する。
ユーザ装置41が送信したe[i]を通信部433[i]の補助通信部4331[i]を用いて受信する。
記憶部432から検証情報導出部のアルゴリズムと事前計算データp[i](もしあれば)を読み込み、e[i]と事前計算データp[i](もしあれば)と検証情報導出部のアルゴリズムを用いて「検証情報分散シェア作成マルチパーティ計算」を他のユーザサイド補助装置43と相互通信しながら実行する。このマルチパーティ計算の出力として、検証情報の分散シェアv[i]を得る。
v[i]を入力して「保存用分散シェア作成」を実行する。結果として、ユーザサイド補助装置43[i]は自身の保存用シェアw[i]を得て分散シェアデータベース4321[i]に保管し、ユーザ装置41は自身の保存用シェアW=(u[1],...,u[M])を得る。
ユーザサイド補助装置43[i]は、v[i]、u[i]を消去する。
【0368】
ユーザ装置41は、以下を実行する。
保存用シェアW=(u[1],...,u[M])を記憶部413に保管する。
【0369】
[機器認証事前準備]
第1の実施形態と同一である。
【0370】
[ユーザ認証]
本実施形態のユーザ認証は、以下のとおりである。
【0371】
ユーザ装置41は、以下を実行する。
取得部4111によりユーザ44からユーザ固有情報を取得する。
ユーザ固有情報とユーザサイド補助装置43の台数Mとを用いて、ユーザ固有情報を秘密分散し、認証情報の分散シェアf[1],...,f[M]を得る。
記憶部413から保存用分散シェアW=(u[1],...,u[M])を読み込む。
i=1,...,Mに対し、通信部414の補助通信部4141を用いてf[i]とu[i]をユーザサイド補助装置43[i]に送信する。
ユーザ固有情報とf[1],...,f[M]を消去する。
【0372】
i=1,...,Mに対し、ユーザサイド補助装置43[i]は以下を実行する。
f[i]とu[i]を通信部433[i]の補助通信部4331[i]を用いて受信する。
分散シェアデータベース4321[i]から保存用シェアw[i]を読み込む。
保存用シェアu[i],w[i]を入力して「検証情報分散シェア復元」を実行することで検証情報の分散シェアv[i]を復元する。
記憶部432から認証情報導出部のアルゴリズムと事前計算データq[i](もしあれば)を読み込み、f[i]と事前計算データq[i](もしあれば)と認証情報導出部のアルゴリズムとを用いて、「認証情報分散シェア生成」を他のユーザサイド補助装置43の「認証情報分散シェア生成」と相互通信しながら実行し、出力として認証情報の分散シェアs[i]を得る。
記憶部432からユーザ認証のアルゴリズムと事前計算データb[i](もしあれば)を読み込み、v[i]とs[i]とb[i](もしあれば)とユーザ認証のアルゴリズムをユーザサイド補助装置ユーザ認証MPC部4311[i]に入力し、ユーザサイド補助装置ユーザ認証MPC部4311[i]を他のユーザサイド補助装置43のユーザサイド補助装置ユーザ認証MPC部4311と相互通信しながら実行し、実行結果としてユーザ認証結果の分散シェアa[i]を得る。
補助通信部4331[i]を用いてa[i]をユーザ装置41に送る。
f[i]、u[i]、v[i]、s[i]、a[i]を消去する。
【0373】
ユーザ装置41は、以下を実行する。
補助通信部4141を用いてa[1],...,a[M]を受信する。
a[1],...,a[M]をユーザ認証結果復元部4124に入力し、その出力としてユーザ認証の結果accを得る。
ユーザ認証の結果accが「受理」か「拒否」かを判定する。
ユーザ認証の結果accが「受理」である場合、ユーザ装置41はユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]の助けを借りながら、機器認証サーバ装置42から機器認証を受ける。
ユーザ認証の結果が「拒否」である場合、ユーザ装置41は認証が拒否された旨を、通知部415を経由してユーザ44に伝えて終了する。
【0374】
本実施形態においても、第6の実施形態と同様に、第3の実施形態における機器認証シミュレートMPCを実行した後、ユーザ44に「拒否」された旨を通知してもよい。これにより、ユーザ認証の結果が「拒否」されたか否かが、ユーザサイド補助装置43には分からないようにすることもできる。
【0375】
また、本実施形態においても、第4の実施形態と同様に、ユーザ認証が拒否される回数の上限を定め、安全性の向上を図ることも可能である。
【0376】
本実施形態に係る認証システムにおいても、上記実施形態と同様の効果がもたらされる。すなわち、本実施形態の認証システムによると、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用することができる。また、本実施形態では、認証情報導出、検証情報導出およびユーザ認証の各アルゴリズムをユーザサイド補助装置のみが使用する。したがって、本実施形態によると、これらのアルゴリズムを不特定多数のユーザによって使用されるユーザ装置に開示する必要がなくなり、これらのアルゴリズムを企業秘密(例えばサーバサイド補助装置を提供する企業の企業秘密)として保護することができる。
【0377】
<実施形態8>
次に、第8の実施形態に係る認証システムについて図面を参照して説明する。
【0378】
本実施形態の認証システムの構成は、以下の点を除いて、第1の実施形態の構成と同一である。
本実施形態には、「ユーザ認証情報分散シェア生成装置」、「ユーザ検証情報分散シェア生成装置」というサーバマシンがある。以下、これらが別個のサーバマシンであることを前提として話を進めるが、これらは同一のサーバマシンであってもよい。
第1の実施形態では、ユーザ装置41は検証情報分散シェア生成部4122を備えている。一方、本実施形態では、ユーザ装置41はこのユニットを有しておらず、ユーザ検証情報分散シェア生成装置にこのユニットを設ける。検証情報分散シェア生成部4122は、第1の実施形態と同様に、検証情報導出部41221と検証情報分散部41222を有する。
第1の実施形態では、ユーザ装置41は認証情報分散シェア生成部4121を備えている。一方、本実施形態では、ユーザ装置41はこのユニットを有しておらず、ユーザ認証情報分散シェア生成装置にこのユニットを設ける。本実施形態の認証情報分散シェア生成部は、第1の実施形態と同様に、認証情報導出部41211と認証情報分散部41212を有する。
【0379】
本実施形態では、第1の実施形態と異なり、ユーザ装置41用の検証情報分散シェアも認証情報分散シェアも作成しない。すなわち、検証情報分散部41222は、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]が保有するM個のシェアしか生成しない。同様に、認証情報分散部41212も、ユーザサイド補助装置43[1],...,ユーザサイド補助装置43[M]が保有するM個のシェアしか生成しない。
【0380】
また、本実施形態では、ユーザ装置41はユーザ認証MPCに参加しない。したがって、ユーザ装置41はユーザ装置ユーザ認証MPC部4123を備えていない。i=1,...,Mに対し、ユーザサイド補助装置43[i]のユーザサイド補助装置ユーザ認証MPC部4311[i]は、他のユーザサイド補助装置43と通信するものの、ユーザ装置41とは通信しない。
【0381】
本実施形態の詳細は、以下のとおりである。
【0382】
[ユーザ認証事前準備]
ユーザ装置41は、
図5のステップ511と同様、ユーザ44からユーザ固有情報を取得する。次に、ユーザ装置41はユーザ固有情報をユーザ検証情報分散シェア生成装置に送る。その後、ユーザ装置41はユーザ固有情報を消去する。
ユーザ検証情報分散シェア生成装置は、ユーザ装置41の代わりに、
図5のステップ512〜516を実行する。すなわち、ユーザ検証情報分散シェア生成装置は以下を実行する。
ユーザ検証情報分散シェア生成装置は、ユーザ装置41から受け取ったユーザ固有情報を検証情報導出部41221に入力して検証情報を得る。次に、検証情報と、ユーザサイド補助装置43の台数Mを検証情報分散部41222に入力し、その出力として検証情報の分散シェアv[1],...,v[M]を得る。i=1,...,Mに対し、ユーザ検証情報分散シェア生成装置は検証情報の分散シェアv[i]をユーザサイド補助装置43[i]に送る。その後、ユーザ検証情報分散シェア生成装置は、ユーザ固有情報、検証情報、および、検証情報の分散シェアv[1],...,v[M]を消去する。
i=1,...,Mに対し、ユーザサイド補助装置43[i]は検証情報の分散シェアv[i]を受信して分散シェアデータベース4321[i]に保存する。
【0383】
[機器認証事前準備]
第1の実施形態と同様である。
【0384】
[ユーザ認証]
第1の実施形態との相違点は、以下のとおりである。
ユーザ装置41は、
図7のステップ711と同様、ユーザ44からユーザ固有情報を取得する。次に、ユーザ装置41は、ユーザ固有情報をユーザ検証情報分散シェア生成装置に送る。その後、ユーザ装置41はユーザ固有情報を消去する。そして、ユーザ認証情報分散シェア生成装置は、
図7ステップ712〜715をユーザ装置41の代わりに実行する。すなわち、ユーザ認証情報分散シェア生成装置は以下を実行する。
・ユーザ認証情報分散シェア生成装置は、ユーザ装置41から受け取ったユーザ固有情報を認証情報導出部41211に入力して認証情報を得る。次に、認証情報と、ユーザサイド補助装置43の台数Mを認証情報分散部41212に入力し、その出力として、認証情報の分散シェアs[1],...,s[M]を得る。i=1,...,Mに対し、ユーザ認証情報分散シェア生成装置はs[i]をユーザサイド補助装置43[i]に送る。その後、ユーザ認証情報分散シェア生成装置はユーザ固有情報、認証情報、および、認証情報の分散シェアs[1],...,s[M]を消去する。
ユーザ装置ユーザ認証MPC部4123が存在しないため、ユーザ装置ユーザ認証MPC部4123の入力を読み込む
図7のステップ716は不要となる。同様に、
図7のステップ73においても、ユーザ装置ユーザ認証MPC部4123に関連する処理がなくなる。
図7のステップ73のユーザ認証MPCに対して、ユーザ装置41は参加しない。i=1,..,Mに対し、ユーザサイド補助装置ユーザ認証MPC部4311[i]は他のユーザサイド補助装置43と通信するものの、ユーザ装置41とは通信しない。このとき、ユーザ装置41はユーザ認証MPCの出力としてa[0]を得ることもない。
a[0]がないため、
図7のステップ752ではa[1],...,a[M]からユーザ認証の結果を復元する。
【0385】
なお、本実施形態では、ユーザ認証情報分散シェア生成装置およびユーザ検証情報分散シェア生成装置がそれぞれ1台の場合を想定した。ただし、これらの装置を複数台用意し、複数の装置間でMPCを実行することで、ユーザ認証情報の分散シェアや検証情報の分散シェアを計算してもよい。
【0386】
本実施形態に係る認証システムにおいても、上記実施形態と同様の効果がもたらされる。すなわち、本実施形態の認証システムによると、ユーザ認証と機器認証を行う認証システムにおいて、ユーザ装置内にセキュアな領域を必要とせず、既存の機器認証サーバとの通信フロントエンドを利用することができる。また、本実施形態では、ユーザの認証情報および検証情報、ならびに、これらのシェアをユーザ装置の代わりに計算する専用のサーバマシンを設けた。したがって、本実施形態によると、認証情報および検証情報を導出するアルゴリズムを不特定多数のユーザによって使用されるユーザ装置に開示する必要がなくなり、これらのアルゴリズムを企業秘密(例えば専用のサーバマシンおよびユーザサイド補助装置を提供する企業の企業秘密)として保護することができる。
【0387】
本願開示は、さまざまな用途に適用可能である。例えば、決済システムをはじめとする多くのウェブサービスにおいて、認証が使われている。本願開示は、こうした認証を必要とする認証システムにおいて広く利用することができる。特に、本願開示は既存の認証方式のフロントエンドをそのまま利用できるため、FIDO方式をはじめとするすでにデファクト・スタンダードとして広まっている認証システムにおいて、ユーザ装置の内部の構成を変えるだけで利用可能である。
【0388】
(付記)
本発明の請求の範囲全記載が、実施形態として以下に繰り込み記載されているものとする。但し、「請求項」は「形態(mode)」と読み替えるものとし、その際、従属関係は単に好ましい関係を示しそれに限定されないものとする。
【0389】
なお、上記非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。