(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-07
(45)【発行日】2024-10-16
(54)【発明の名称】本人確認プログラム、本人確認方法、及びユーザ端末
(51)【国際特許分類】
H04L 9/32 20060101AFI20241008BHJP
H04L 9/08 20060101ALI20241008BHJP
G06F 21/31 20130101ALI20241008BHJP
【FI】
H04L9/32 200C
H04L9/32 200F
H04L9/32 100A
H04L9/08 B
G06F21/31
(21)【出願番号】P 2021524820
(86)(22)【出願日】2020-05-29
(86)【国際出願番号】 JP2020021494
(87)【国際公開番号】W WO2020246402
(87)【国際公開日】2020-12-10
【審査請求日】2023-05-12
(31)【優先権主張番号】P 2019105622
(32)【優先日】2019-06-05
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000002185
【氏名又は名称】ソニーグループ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】丸山 信也
(72)【発明者】
【氏名】影山 雄一
【審査官】松平 英
(56)【参考文献】
【文献】中国特許出願公開第109274481(CN,A)
【文献】特開2016-105567(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14
21/00-21/88
G09C 1/00-5/00
H04K 1/00-3/00
H04L 9/00-9/40
(57)【特許請求の範囲】
【請求項1】
ゼロ知識証明による本人確認のための処理機能を、ユーザ端末であるコンピュータに実行させるための本人確認プログラムであって、
前記ユーザ端末のユーザ本人しか知り得ない情報であるWitnessを取得し、
取得したWitnessに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成し、
生成したproofに基づくユーザ認証要求を認証装置に送信
し、
前記本人確認のための本人証明アルゴリズムに基づいて、前記ゼロ知識証明によるユーザ認証のための公開パラメータを生成するセットアップ処理を実行し、
前記ユーザ端末のユーザに固有のユーザ識別情報と、前記公開パラメータと、前記Witnessを暗号化した暗号化Witnessとを関連付けて、前記認証装置に登録し、
前記Witnessと、前記公開パラメータと、前記暗号化Witnessとを用いて、前記Witnessが正しいことを条件に多項式時間で導出可能な多項式を生成し、
前記多項式を用いて、前記proofを生成し、
前記ユーザ識別情報と前記proofとに基づくユーザ認証要求を認証装置に送信する
本人確認プログラム。
【請求項2】
前記多項式を用いて、前記ユーザのユーザデータを暗号化するためのユーザ秘密鍵を生成する請求項
1に記載の本人確認プログラム。
【請求項3】
前記多項式を用いて、前記ユーザ秘密鍵を暗号化するためのバックアップ秘密鍵を生成し、
前記バックアップ秘密鍵を用いて、前記ユーザ秘密鍵を暗号化した暗号化ユーザ秘密鍵を生成し、
前記暗号化ユーザ秘密鍵を前記認証装置に登録する
請求項
2に記載の本人確認プログラム。
【請求項4】
前記ユーザ端末のユーザから、前記本人証明アルゴリズムの選択を受け付けるためのインターフェイスを提供する
請求項
1に記載の本人確認プログラム。
【請求項5】
ゼロ知識証明による本人確認のための処理機能を実行するユーザ端末であるコンピュータが、
前記ユーザ端末のユーザ本人しか知り得ない情報であるWitnessを取得し、
取得したWitnessに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成し、
生成したproofを用いたユーザ認証要求を認証装置に送信
し、
前記本人確認のための本人証明アルゴリズムに基づいて、前記ゼロ知識証明によるユーザ認証のための公開パラメータを生成するセットアップ処理を実行し、
前記ユーザ端末のユーザに固有のユーザ識別情報と、前記公開パラメータと、前記Witnessを暗号化した暗号化Witnessとを関連付けて、前記認証装置に登録し、
前記Witnessと、前記公開パラメータと、前記暗号化Witnessとを用いて、前記Witnessが正しいことを条件に多項式時間で導出可能な多項式を生成し、
前記多項式を用いて、前記proofを生成し、
前記ユーザ識別情報と前記proofとに基づくユーザ認証要求を認証装置に送信する
ことを含む本人確認方法。
【請求項6】
ゼロ知識証明による本人確認のための処理機能を実行するユーザ端末であって、
前記ユーザ端末のユーザ本人しか知り得ない情報であるWitnessを取得する取得部と、
前記Witnessに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成する生成部と、
前記proofを用いたユーザ認証要求を認証装置に送信する送信部と
、
前記本人確認のための本人証明アルゴリズムに基づいて、前記ゼロ知識証明によるユーザ認証のための公開パラメータを生成するセットアップ処理を実行するセットアップ処理部と、
前記ユーザ端末のユーザに固有のユーザ識別情報と、前記公開パラメータと、前記Witnessを暗号化した暗号化Witnessとを関連付けて、前記認証装置に登録する登録部と
を備え
、
前記生成部は、
前記Witnessと、前記公開パラメータと、前記暗号化Witnessとを用いて、前記Witnessが正しいことを条件に多項式時間で導出可能な多項式を生成し、
記多項式を用いて、前記proofを生成し、
前記送信部は、
前記ユーザ識別情報と前記proofとに基づくユーザ認証要求を認証装置に送信する
ユーザ端末。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、本人確認プログラム、本人確認方法、及びユーザ端末に関する。
【背景技術】
【0002】
クラウドサービスなどの各種オンラインサービスの利用が盛んになり、たとえばユーザIDとパスワードを用いた不正アクセス対策や、ユーザデータの暗号化による漏洩対策など、ユーザデータを管理及び保護するための様々な対策が試みられている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
各種オンラインサービスの提供に際し、ユーザデータを保護するための対策においては、ユーザプライバシーの保護とユーザ利便性の向上との両立が課題となる。
【0005】
そこで、本開示では、ユーザプライバシーの保護とユーザ利便性の向上とを両立できる本人確認プログラム、本人確認方法、及びユーザ端末を提案する。
【課題を解決するための手段】
【0006】
上記の課題を解決するために、本開示に係る一形態の本人確認プログラムは、ゼロ知識証明による本人確認のための処理機能を、ユーザ端末であるコンピュータに実行させる。かかる本人確認プログラムは、ユーザ端末のユーザ本人しか知り得ない情報であるWitnessを取得し、取得したWitnessに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成し、生成したproofに基づくユーザ認証要求を認証装置に送信する。
【図面の簡単な説明】
【0007】
【
図1】実施形態に係る情報処理システムの一例を示す図である。
【
図2】実施形態に係るセットアップ処理の概要を示す図である。
【
図3】実施形態に係るユーザ端末の処理の概要を示す図である。
【
図4】実施形態に係るユーザ登録処理の手順の一例を示す図である。
【
図5】実施形態に係るユーザ認証処理の手順の一例を示す図である。
【
図6】実施形態に係るユーザ秘密鍵の生成及び保存処理の手順の一例を示す図である。
【
図7】実施形態に係るユーザ秘密鍵の生成及び保存処理の手順の他の例を示す図である。
【
図8】変形例に係る公開パラメータの保存処理の手順の一例を示す図である。
【
図9】変形例に係る本人証明アルゴリズムの選択用ユーザインターフェイスの一例を示す図である。
【
図10】変形例に係るユーザ秘密鍵の生成及び保存処理の手順の他の例を示す図である。
【
図11】変形例に係る公開パラメータによるユーザ秘密鍵の復旧処理の手順の一例を示す図である。
【
図12】変形例に係るバックアップ秘密鍵の生成及び保存処理の手順の一例を示す図である。
【
図13】変形例に係るバックアップ秘密鍵によるユーザ秘密鍵の復旧処理の手順の一例を示す図である。
【
図14】複数の本人証明アルゴリズムの適用例を示す図である。
【
図15】ユーザ端末の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【0008】
以下に、本開示の実施形態について図面に基づいて詳細に説明する。なお、以下の各実施形態において、同一の部位には同一の符号を付することにより重複する説明を省略する場合がある。
【0009】
また、以下に示す項目順序に従って本開示を説明する。
1.はじめに
2.機能構成例
3.処理手順例
4.変形例
5.その他
6.効果
7.ハードウェア構成
【0010】
(1.はじめに)
各種オンラインサービスの提供に際し、ユーザデータを管理及び保護するためのサービス形態は、中央集権型のサービス形態と、非中央集権型のサービス形態とに大別される。
【0011】
中央集権型のサービス形態では、サービス事業者側でユーザの秘密情報が管理される。例えば、ユーザIDとパスワードによるログイン認証を行う場合、サービス事業者側でパスワードやパスワードを忘れた場合の秘密の合言葉が管理される。このため、パスワードの紛失に対して柔軟に対応できる。また、サービス事業者側で、ユーザの暗号化データを復号するための情報(復号鍵)も管理する。このため、暗号化データを復号するための情報を紛失するリスクがなく、データ可用性が高い。このように、中央集権型のサービス形態は、ユーザ利便性が高い。その一方で、サービス事業者側で暗号化データを復号するための情報(復号鍵)を管理しているので、権限を持つ管理者であれば、暗号化されたユーザデータを復号して中身を覗くことができる。また、サービスの利用に際して、ユーザデータがサードパーティに提供される場合もあり、暗号化データがサービス事業者側で復号できてしまうことはできるだけ回避したい。このように、中央集権型のサービス形態では、ユーザプライバシーを保護するという観点で問題がある。ユーザプライバシーの問題に対して、非中央集権型のサービス形態が考えられる。
【0012】
非中央集権型のサービス形態では、ユーザ自らが、ユーザデータを暗号化した暗号化データを復号するための情報(ユーザ鍵)を管理する。このため、暗号化データの管理を行うサービス事業者側で暗号化データを復号することはできず、ユーザのみが復号できるので、ユーザプライバシーを守ることができる。その一方、万が一、ユーザが暗号化データを復号するための情報(ユーザ鍵)を紛失してしまうと、暗号化データを復元して参照することができず、データ可用性が低い。このように、非中央集権型のサービス形態は、ユーザ利便性の面で課題がある。
【0013】
また、ユーザデータの暗号化に用いたユーザ鍵をサービス事業者側で暗号化して管理するバックアップ方法があるが、サービス事業者側でユーザ鍵を復号できてしまうので、ユーザプライバシーの面で課題がある。また、ユーザ自らがユーザ鍵をオフラインでバックアップする方法もあるが、ユーザが別途ユーザ鍵をバックアップする場所を用意する必要があり、ユーザ利便性の面で課題がある。また、ユーザがパスワードなどにより暗号化した暗号化ユーザ鍵をサービス事業者側でバックアップする方法もあるが、パスワードを忘れてしまうリスクや、パスワードなどサービス事業者側から提供される定型の方法により暗号化ユーザ鍵が管理されるので、ユーザ利便性の面で課題がある。
【0014】
このようなことから、本実施形態では、ユーザプライバシーの保護とユーザ利便性の向上とを両立できる情報処理装置を提案する。
【0015】
(2.機能構成例)
図1は、実施形態に係る情報処理システム1の一例を示す図である。
図1に示すように、情報処理システム1は、通信ネットワーク10を介して相互にデータ通信が可能なユーザ端末100とクラウドサーバ200とを含んで構成される。
【0016】
ユーザ端末100は、クラウドサーバ200により提供されるオンラインサービスの利用者であるユーザにより利用されるユーザデバイスである。ユーザ端末100は、例えば、スマートフォンを含む携帯電話機や、タブレット端末や、デスクトップ型PCや、ノート型PCや、PDA(Personal Digital Assistant)等の情報処理装置により実現される。
【0017】
クラウドサーバ200は、ユーザ端末100に対して、クラウド環境上で各種オンラインサービスを提供するサービス事業者が管理する装置である。クラウドサーバ200は、ユーザ端末100から送信されたユーザ認証要求を処理する認証装置の一例である。なお、
図1に示すクラウドサーバ200は、以下に説明する実施形態に係る処理ごとに分散された複数のサーバで構成されていてもよい。
【0018】
[2-1.ユーザ端末]
ユーザ端末100は、通信部101と、入力部102と、出力部103と、撮像部104と、測位部105と、検出部106と、記憶部115と、制御部117とを備える。
【0019】
通信部101は、例えば、NIC(Network Interface Card)等によって実現される。かかる通信部101は、通信ネットワーク10と有線又は無線で接続され、かかる通信ネットワーク10を介して、クラウドサーバ200等との間で情報の送受信を行う。通信ネットワーク10は、LAN(Local Area Network)、WAN(Wide Area Network)、電話網(携帯電話網、固定電話網等)、地域IP(Internet Protocol)網、インターネット等を含む。
【0020】
入力部102は、キーボードやマウスなどを備え、ユーザ端末100のユーザから各種操作を受け付ける。入力部102がユーザ端末100から受け付ける操作には、クラウドサーバ200から提供されるサービスの利用に伴ったユーザ登録操作やログイン操作などが含まれる。入力部102は、マイクなどの音入力デバイスを備えてもよく、ユーザの音声などの入力を受け付ける。
【0021】
出力部103は、ディスプレイやスピーカなどを備え、各種情報を出力する。出力部103が出力する情報には、クラウドサーバ200から提供されるユーザ登録やサービス利用のためのユーザインターフェイスなどを含む。
【0022】
撮像部104は、カメラなどのデバイスを備え、画像を撮像する。撮像部104は、本人証明アルゴリズムで取扱い可能なユーザのデータとして、ユーザの顔画像や虹彩の画像などを取得できる。
【0023】
測位部105は、GPS(Global Positioning System)などを備え、ユーザ端末100の位置を取得する。測位部105は、本人証明アルゴリズムで取扱い可能なユーザデータとして、ユーザの自宅や実家の位置情報などを取得できる。
【0024】
検出部106は、加速度センサやジャイロセンサ、生体センサなどを備え、ユーザ端末100に作用する各種情報を検出する。検出部106は、本人証明アルゴリズムで取扱い可能なユーザデータとして、ユーザの歩容に対応する特徴量や心拍の波形、指紋の特徴点などの生体情報を取得できる。
【0025】
記憶部115は、制御部117により実行される各種処理機能を実現するためのプログラム及びデータ等を記憶する。記憶部115は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部115が記憶するプログラムには、制御部117の各部に対応する処理機能を実現するための本人確認プログラムが含まれる。本人確認プログラムは、以下に説明するゼロ知識証明による本人確認のための処理機能を、ユーザ端末100に実行させるための機能を提供する。
【0026】
制御部117は、ユーザ端末100における各種処理を実行する。制御部117は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等のプロセッサにより実現される。例えば、制御部117は、ユーザ端末100の内部に備えられた記憶装置に記憶されている各種プログラムを、プロセッサがRAM(Random Access Memory)等を作業領域として実行することにより実現される。なお、制御部107は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
【0027】
制御部117は、本人証明アルゴリズム生成部171と、ZKP-Setup処理部172と、Witness入力部173と、ユーザ登録部174と、ZKP-Prove処理部175と、鍵生成部176とを備える。制御部107は、かかる各部により、以下に説明するユーザ端末100の各種処理の機能や作用を実現または実行する。制御部107の機能構成は、
図1に示した構成例に特に限定される必要はなく、後述するユーザ端末100の各種処理を行うことができる構成であれば他の構成であってもよい。
【0028】
本人証明アルゴリズム生成部171は、本人確認を行う方法である本人証明アルゴリズムを生成する。本人証明アルゴリズム生成部171は、入力部102を介して、ユーザ端末100のユーザ本人しか知り得ない情報であるWitness(以下、「Witness」と記載する)を用いて生成される。本人証明アルゴリズムとして、例えば、名前とパスワードの一致、名前と複数の秘密の合言葉の一致、名前と顔画像の位置、名前と指紋の一致などが例示される。
【0029】
本人証明アルゴリズムとして取り扱い可能なデータとして、上述したもの以外に、カード番号などの秘密情報、公知の情報の組合せ、センシングデータ、マイナンバー、クレジットカード情報などのその他の情報が例示される。公知の情報の組合せとして、家族の名前、自宅の住所や電話番号、実家の住所や電話番号、親の旧姓などが例示される。センシングデータとして、上述した指紋の他、自宅など特定の場所の位置情報、虹彩、顔、歩容などの生体情報が例示される。
【0030】
本人証明アルゴリズムは、本人証明アルゴリズムで取り合うデータに応じて、完全一致、あいまい一致、大小比較や包含関係などの条件式を適宜採用できる。パスワードや秘密の合言葉、生体情報を取り合う本人証明アルゴリズムである場合、条件式として完全一致を採用できる。生体情報や秘密の合言葉を取り合う本人証明アルゴリズムである場合、条件式としてあいまい一致を採用できる。位置情報を取り合う本人証明アルゴリズムである場合、例えば、位置情報が特定のエリアに含まれるか否かなどの包含関係を条件式として採用できる。本人証明アルゴリズムで取り合うデータや条件式の組合せを、AND条件やOR条件としてもよい。
【0031】
本人証明アルゴリズムのデータは、入力部102や撮像部104などを介してインタラクティブに入力されてもよいし、非インタラクティブに入力されてもよい。
【0032】
ZKP(Zero Knowledge Proof)-Setup処理部172は、本人証明アルゴリズムに基づいて、ゼロ知識証明によるユーザ認証のための公開パラメータを生成するセットアップ処理を実行する。ZKP-Setup処理部172は、ゼロ知識証明によるユーザ認証のための公開パラメータを生成するセットアップ処理を実行するセットアップ処理部として機能する。
【0033】
図2は、実施形態に係るセットアップ処理の概要を示す図である。
図2に示すように、ZKP-Setup処理部172は、本人証明アルゴリズム生成部171により生成された本人証明アルゴリズムA1を論理ゲートG1に入力することにより、本人証明アルゴリズムA1をNP完全クラス問題Q1に変換する。
【0034】
かかるNP完全クラス問題Q1は、本人証明アルゴリズムの生成に用いられたユーザしか知り得ない情報であるWitnessを知らない限り、多項式時間に問題を解くことができない。これにより、本人証明アルゴリズムを用いた本人確認の完全性、健全性、ゼロ知識性を実現する。ユーザ端末100のユーザは、Witnessをサービス事業者に開示することなく、ユーザ本人であることを証明できる。
【0035】
Witness入力部173は、ユーザ端末100のユーザのWitnessの入力を受け付ける。Witness入力部173は、ユーザ端末100のユーザ本人しか知り得ない情報であるWitnessを取得する取得部として機能する。
【0036】
ユーザ登録部174は、クラウドサーバ200にユーザ端末100のユーザ情報の登録を行う。ユーザ登録部174は、入力部102を介して、ユーザ端末100のユーザから、ユーザに固有のユーザ識別情報(ユーザID)を取得する。ユーザ登録部174は、ユーザ識別情報(ユーザID)と、公開パラメータと、暗号化Witnessとを関連付けて、クラウドサーバ200に登録する。ユーザ識別情報として、Eメールアドレスなどのユーザが失念しにくい情報が使用されることを前提とする。
【0037】
ZKP-Prove処理部175は、WitnessReduction処理部175aと、Proof生成部175bとを備える。ZKP-Prove処理部175は、かかる各部により、Witnessに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成する生成部として機能する。また、ZKP-Prove処理部175は、proofを用いたユーザ認証要求をクラウドサーバ200に送信する送信部としても機能する。
【0038】
WitnessReduction処理部175aは、Witnessと、公開パラメータと、暗号化Witnessとに基づいて、秘密の多項式hを生成するWitnessRedution処理を実行する。WitnessRedution処理により生成される秘密の多項式h(以下、多項式hと記載する)は、ユーザしか知り得ない情報であるWitnessがなければ、多項式時間に生成することができない多項式である。すなわち、Witnessと暗号化Witnessとが一致しなければ、WitnessRedution処理により正しい多項式hが生成されない。
【0039】
Proof生成部175bは、WitnessRedution処理により生成される多項式hに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成する。Proof生成部175bは、例えば、多項式hをハッシュ化したものをproofとして生成する。Proof生成部175bは、生成したproofをクラウドサーバ200に送信する。
【0040】
鍵生成部176は、多項式hを用いて、ユーザ端末100のユーザのユーザデータを暗号化するためのユーザ秘密鍵を生成する。また、鍵生成部176は、多項式hを用いて、ユーザ秘密鍵を暗号化するためのバックアップ秘密鍵を生成する。
【0041】
[2-2.クラウドサーバ]
クラウドサーバ200は、通信部201と、記憶部202と、制御部203とを備える。
【0042】
通信部201は、例えば、NIC(Network Interface Card)等によって実現される。かかる通信部201は、通信ネットワーク10と有線又は無線で接続され、かかる通信ネットワーク10を介して、ユーザ端末100等との間で情報の送受信を行う。
【0043】
記憶部202は、制御部203により実行される各種処理機能を実現するためのプログラム及びデータ等を記憶する。記憶部202は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部202が記憶するプログラムには、制御部203の各部に対応する処理機能を実現するためのユーザ認証プログラムが含まれる。ユーザ認証プログラムは、Witnessに基づいて生成されたゼロ知識証明によるユーザ認証のためproofと、Witnessを暗号化した暗号化Witnessとに基づいて、ユーザ認証を実行するための機能を提供する。
【0044】
制御部203は、クラウドサーバ200における各種処理を実行する。制御部203は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等のプロセッサにより実現される。例えば、制御部203は、クラウドサーバ200の内部に備えられた記憶装置に記憶されている各種プログラムを、プロセッサがRAM(Random Access Memory)等を作業領域として実行することにより実現される。なお、制御部203は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
【0045】
制御部203は、サービス部231と、公開パラメータ管理部232と、ZKP-Verify処理部233とを備え、かかる各部により、以下に説明するクラウドサーバ200の各種処理の機能や作用を実現または実行する。制御部203の機能構成は、
図1に示した構成例に特に限定される必要はなく、後述するクラウドサーバ200の各種処理を行うことができる構成であれば他の構成であってもよい。
【0046】
サービス部231は、ユーザ端末100のユーザに対する各種オンラインサービスを提供する。サービス部231は、各種オンラインサービスの提供に際し、ユーザ登録やユーザ認証要求をユーザ端末100から受け付ける。
【0047】
公開パラメータ管理部232は、ユーザ端末100から提供される公開パラメータ、ユーザ識別情報(ユーザID)、及び暗号化Witnessを相互に関連付けて登録して管理する。
【0048】
ZKP-Verify処理部233は、ユーザ端末100から受信するユーザ認証要求に含まれるproofに基づいて、ユーザ端末100のユーザのユーザ認証を実行する。ZKP-Verify処理部233は、ユーザ認証要求に含まれるユーザIDに紐付く公開パラメータ及び暗号化Witnessを公開パラメータ管理部232から取得する。ZKP-Verify処理部233は、公開パラメータ及び暗号化Witnessに基づいて、ユーザ端末100から受信するproofの検証を行う。ユーザ端末100のユーザにより生成されたproofであるかを検証する。ZKP-Verify処理部233は、公開パラメータ及び暗号化Witnessに基づく計算結果とproofとの突合せを行い、正しい多項式hから生成されたproofであるか否かを検証する。
【0049】
ZKP-Verify処理部233は、正しい多項式hから生成されたproofであることが証明できた場合、proofの送信元であるユーザ端末100のユーザが真正なユーザ本人であるという検証結果を導出する。正しい多項式hとは、公開パラメータの生成時に用いられた本人証明アルゴリズムに用いられたWitnessと、同一のWitnessにより生成された多項式であることを意味する。一方、ZKP-Verify処理部233は、正しい多項式hから生成されたproofであることが証明できなかった場合、proofの送信元であるユーザ端末100のユーザが真正なユーザ本人ではないという検証結果を導出する。
【0050】
図3は、実施形態に係るユーザ端末100の処理の概要を示す図である。
図3に示すように、本人証明アルゴリズム生成部171は、本人証明アルゴリズムを生成する。ZKP-Setup処理部172は、本人証明アルゴリズムに基づいて、本人証明アルゴリズムに基づいて、ゼロ知識証明によるユーザ認証のための公開パラメータを生成する。
【0051】
Witness入力部173は、ユーザ登録に伴って入力されたWitnessを暗号化した暗号化Witnessを生成する。ユーザ登録部174は、ユーザIDと、公開パラメータと、暗号化Witnessとを関連付けて、クラウドサーバ200に送信する。このようにして、ユーザ端末100はユーザ登録処理を完了する。
【0052】
また、Witness入力部173は、ユーザ認証に伴い、ユーザからWitnessの入力を受け付ける。WitnessReduction処理部175aは、Witnessと、公開パラメータと、暗号化Witnessとに基づいて、秘密の多項式hを生成するWitnessRedution処理を実行する。
【0053】
Proof生成部175bは、WitnessRedution処理により生成される多項式hに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成する。Proof生成部175bは、例えば、多項式hをハッシュ化したものをproofとして生成する。ユーザ端末100は、Proof生成部175bにより生成されたproofをクラウドサーバ200に送信することにより、クラウドサーバ200によるユーザ認証処理を受ける。
【0054】
また、鍵生成部176は、WitnessReduction処理部175aにより生成された多項式hを用いてユーザ秘密鍵を生成する。
【0055】
(3.処理手順例)
[3-1.ユーザ登録]
図4は、実施形態に係るユーザ登録処理の手順の一例を示す図である。
図4に示すように、ユーザ端末100の本人証明アルゴリズム生成部171は、本人証明アルゴリズムを生成する(ステップS101)。
【0056】
ユーザ端末100のZKP-Setup処理部172は、本人証明アルゴリズムに基づいて、ゼロ知識証明によるユーザ認証のための公開パラメータを生成するセットアップ処理を実行する(ステップS102)。
【0057】
ユーザ端末100のWitness入力部173は、入力されたWitnessを暗号化した暗号化Witnessを生成する(ステップS103,S104)。
【0058】
ユーザ端末100のユーザ登録部174は、ユーザIDと、公開パラメータと、暗号化Witnessとを関連付けて、クラウドサーバ200に送信する(ステップS105)。
【0059】
クラウドサーバ200のサービス部231は、ユーザ端末100から受信したユーザID、公開パラメータ、及び暗号化Witnessの登録を公開パラメータ管理部232に要求する(ステップS106)。
【0060】
サービス部231は、ユーザ登録の完了通知をユーザ端末100に送信する(ステップS107)。
【0061】
[3-2.ユーザ認証]
図5は、実施形態に係るユーザ認証処理の手順の一例を示す図である。
図5に示すように、ユーザ端末100は、ユーザ認証に伴ってユーザにより入力されたユーザIDに紐付く公開パラメータの取得要求をクラウドサーバ200に送信する(ステップS201)。
【0062】
クラウドサーバ200のZKP-Verify処理部233は、公開パラメータの提供を公開パラメータ管理部232に要求する(ステップS202)。
【0063】
クラウドサーバ200の公開パラメータ管理部232は、ZKP-Verify処理部233からの要求に応じて、ZKP-Verify処理部233に公開パラメータ及び暗号化Witnessを提供する(ステップS203)。
【0064】
クラウドサーバ200のZKP-Verify処理部233は、公開パラメータ及び暗号化Witnessをユーザ端末100に送信する(ステップS204)。
【0065】
ユーザ端末100のWitness入力部173は、ユーザ認証に伴って、ユーザからWitnessの入力を受け付ける(ステップS205)。
【0066】
ZKP-Prove処理部175は、Witnessと、暗号化Witnessと、公開パラメータとに基づいてZKP-Prove処理を実行し、ゼロ知識証明によるユーザ認証のためのproofを生成する(ステップS206)。
【0067】
ZKP-Prove処理部175は、ステップS201で入力されたユーザIDとステップS206で生成したproofとに基づくユーザ認証要求をクラウドサーバ200に送信する(ステップS207)。
【0068】
クラウドサーバ200のZKP-Verify処理部233は、ユーザ端末100から受信したユーザ認証要求に含まれるユーザIDに紐付いた暗号化Witnessの提供を公開パラメータ管理部232に要求する(ステップS208)。
【0069】
クラウドサーバ200の公開パラメータ管理部232は、ZKP-Verify処理部233からの要求に応じて、ZKP-Verify処理部233に暗号化Witnessを提供する(ステップS209)。
【0070】
クラウドサーバ200のZKP-Verify処理部233は、ユーザ認証要求に含まれるproofと、ユーザ認証要求に含まれるユーザIDに紐付く公開パラメータ及び暗号化Witnessに基づいて、proofの検証を行う(ステップS210)。
【0071】
[3-3.本人確認によるユーザ秘密鍵の生成及び保存]
<3-3-1.ハッシュ化>
図6は、実施形態に係るユーザ秘密鍵の生成及び保存処理の手順の一例を示す図である。なお、
図6に示す処理の手順において、ステップS301~ステップS304の処理は、
図5に示すステップS201~ステップS204の処理と基本的には同様の手順であるので、詳細な説明は割愛する。
【0072】
図6に示すように、ユーザ端末100は、本人確認(ユーザ認証)に伴い、ユーザに対して本人証明アルゴリズムの生成に用いたWitnessの入力を要求し、Witness入力部173は、Witnessの入力を受け付ける(ステップS305)。
【0073】
WitnessReduction処理部175aは、ステップS305で取得されたWitnessと、暗号化Witnessと、公開パラメータとに基づいて、WitnessReduction処理を実行して、多項式hを生成する(ステップS306)。
【0074】
鍵生成部176は、WitnessReduction処理により生成された多項式hをエンコードしてハッシュ化したものをユーザ秘密鍵として生成し(ステップS307)、生成したユーザ秘密鍵をデバイス保存する(ステップS308)。
【0075】
<3-3-2.乱数>
図7は、実施形態に係るユーザ秘密鍵の生成及び保存処理の手順の他の例を示す図である。なお、
図7に示す処理の手順において、ステップS401~ステップS404の処理は、
図5に示すステップS201~ステップS204の処理と基本的には同様の手順であるので、詳細な説明は割愛する。
【0076】
図7に示すように、ユーザ端末100は、本人確認(ユーザ認証)に伴い、ユーザに対して本人証明アルゴリズムの生成に用いたWitnessの入力を要求し、Witness入力部173は、Witnessの入力を受け付ける(ステップS405)。
【0077】
WitnessReduction処理部175aは、ステップS405で取得されたWitnessと、暗号化Witnessと、公開パラメータとに基づいて、WitnessReduction処理を実行して、多項式hを生成する(ステップS406)。
【0078】
鍵生成部176は、任意の乱数rを生成し(ステップS407)、生成した乱数rを多項式hに入力して得られた値をユーザ秘密鍵として生成する(ステップS408)。
【0079】
鍵生成部176は、ステップS407で生成した乱数rのバックアップ要求をクラウドサーバ200に送信し(ステップS409)、ステップS408で生成したユーザ秘密鍵をデバイス保存する(ステップS410)。
【0080】
クラウドサーバ200のサービス部231は、ユーザ端末100から乱数rのバックアップ要求を受信すると、乱数rのバックアップを公開パラメータ管理部232に要求する(ステップS411)。
【0081】
(4.変形例)
[4-1.複数の本人証明アルゴリズムの生成及び管理]
上記の実施形態において、ユーザ端末100は、ユーザが選択する複数の本人証明アルゴリズムを生成し、複数の本人証明アルゴリズムのそれぞれに対応する公開パラメータをクラウドサーバ200に登録してもよい。
図8は、変形例に係る公開パラメータの保存処理の手順の一例を示す図である。
図9は、変形例に係る本人証明アルゴリズムの選択用ユーザインターフェイスの一例を示す図である。
【0082】
図8に示すように、本人証明アルゴリズム生成部171は、
図9に示す選択用ユーザインターフェイス113をユーザに提供して本人証明アルゴリズムの生成を行い、ZKP-Setup処理部172は、公開パラメータの生成を行う(ステップS501)。
【0083】
図9に示すように、本人証明アルゴリズム生成部171は、複数の本人確認方法を選択可能な選択用ユーザインターフェイス113を出力部103に表示し、ユーザに提供する。
図9に示す選択用ユーザインターフェイス113は、本人確認方法を選択するための複数の選択項目113a~113dを有する。選択用ユーザインターフェイス113は、選択項目113a~113dの選択をユーザから受け付けて、選択項目113a~113dのそれぞれに対応するWitnessの入力画面131a~131dを表示可能に構成される。本人証明アルゴリズム生成部171は、本人証明方法の選択及びWitnessの入力が行われるたびに本人証明アルゴリズムを生成する。
【0084】
ZKP-Setup処理部172は、本人証明アルゴリズム生成部171により生成される複数の本人証明アルゴリズムのそれぞれについて、本人証明アルゴリズムに基づく公開パラメータを生成する。
【0085】
図8に戻り、ユーザ登録部174は、ユーザIDと、ZKP-Setup処理部172により生成された全ての公開パラメータと関連付けて、公開パラメータの保存要求をクラウドサーバ200に送信する(ステップS502)。
【0086】
クラウドサーバ200のサービス部231は、ユーザ端末100から公開パラメータの保存要求を受信すると、公開パラメータ管理部232に公開パラメータの保存を要求する(ステップS503)。公開パラメータ管理部232は、ユーザIDと、全ての公開パラメータと関連付けて登録して管理する。
【0087】
[4-2.初回ユーザ登録時のユーザ秘密鍵の生成及び保存]
図10は、変形例に係るユーザ秘密鍵の生成及び保存処理の手順の他の例を示す図である。
図10は、初回ユーザ登録時のユーザ秘密鍵の生成及び保存の手順を示している。なお、
図10に示す処理の手順において、ステップS601~ステップS607の処理は、
図4に示すステップS101~ステップS107の処理と同様の手順であるので、詳細な説明は割愛する。また、
図10に示す処理の手順において、ステップS608~ステップS610の処理は、
図6に示すステップS306~ステップS308の処理と基本的には同様の手順である。
【0088】
ユーザ登録完了通知を受信すると、ユーザ端末100のWitnessReduction処理部175aは、ステップS603で取得されたWitnessと、暗号化Witnessと、公開パラメータとに基づいて、多項式hを生成する(ステップS608)。
【0089】
鍵生成部176は、WitnessReduction処理により生成された多項式hをエンコードしてハッシュ化したものをユーザ秘密鍵として生成し(ステップS609)、生成したユーザ秘密鍵をデバイス保存する(ステップS610)。
【0090】
なお、上記ステップS609において、ユーザ端末100は、上記
図7に示すように、任意の乱数rを生成し、生成した乱数rを多項式hに入力して得られた値をユーザ秘密鍵として生成してもよい。
【0091】
[4-3.公開パラメータによるユーザ秘密鍵の復旧]
図11は、変形例に係る公開パラメータによるユーザ秘密鍵の復旧処理の手順の一例を示す図である。なお、
図11に示すステップS701~ステップS708は、
図6に示すステップS301~ステップS308と基本的には同様の手順であるので、詳細な説明は割愛する。ユーザ端末100のユーザが、デバイス保存等によりユーザ秘密鍵を自己管理している場合、ユーザ秘密鍵を紛失してしまう状況も起こり得る。このとき、ユーザ端末100は、ユーザに対して本人証明アルゴリズムの生成に用いたWitnessの入力を要求する(ステップS705)。続いて、ユーザ端末100は、クラウドサーバ200から取得した公開パラメータ及び暗号化Witnessと、ユーザから取得したWitnessとに基づいて、WitnessReduction処理を実行して、多項式hを生成する(ステップS706)。ユーザ端末100は、WitnessReduction処理により生成された多項式hを用いて、改めてユーザ秘密鍵を生成することにより、ユーザ秘密鍵を復旧できる(ステップS707)。
【0092】
[4-4.バックアップ秘密鍵の生成及び保存]
図12は、変形例に係るバックアップ秘密鍵の生成及び保存処理の手順の一例を示す図である。なお、
図12に示す処理の手順において、ステップS803~ステップS810の処理は、
図10に示すステップS601~ステップS610の処理と基本的には同様の手順であるので、詳細な説明は省略する。
【0093】
図12に示すように、ユーザ端末100は、生成した任意の乱数に基づいて、ユーザ秘密鍵を生成し(ステップS801)、生成したユーザ秘密鍵をデバイス保存する(ステップS802)。
【0094】
続いて、ユーザ端末100とクラウドサーバ200との間で、ユーザID、公開パラメータ、及び暗号化Witnessの登録が行われる(ステップS803~ステップS809)。そして、ユーザ登録の完了後に、ユーザ端末100において、多項式hの生成が行われる(ステップS810)。
【0095】
鍵生成部176は、ステップS810で生成された多項式hに基づいて、ステップS801で生成したユーザ秘密鍵を暗号化するためのバックアップ秘密鍵を生成する(ステップS811)。鍵生成部176は、例えば、多項式hをエンコードしてハッシュ化したものをバックアップ秘密鍵として生成する。
【0096】
鍵生成部176は、ステップS811で生成したバックアップ秘密鍵で、ステップS801で生成したユーザ秘密鍵を暗号化した暗号化ユーザ秘密鍵を生成する(ステップS812)。
【0097】
鍵生成部176は、ステップS812で生成した暗号化ユーザ秘密鍵のバックアップ要求をクラウドサーバ200に送信する(ステップS813)。
【0098】
クラウドサーバ200のサービス部231は、ユーザ端末100から暗号化ユーザ秘密鍵のバックアップ要求を受信すると、公開パラメータ管理部232に対して、暗号化ユーザ秘密鍵のバックアップを要求する(ステップS815)。公開パラメータ管理部232は、ユーザIDに紐付けて、暗号化ユーザ秘密鍵を登録して管理する。
【0099】
[4-5.バックアップ秘密鍵によるユーザ秘密鍵の復旧]
図13は、変形例に係るバックアップ秘密鍵によるユーザ秘密鍵の復旧処理の手順の一例を示す図である。
【0100】
図13に示すように、ユーザ端末100は、ユーザからのユーザ秘密鍵の復旧依頼に伴い、ユーザIDの入力を要求し、入力されたユーザIDに基づく暗号化ユーザ秘密鍵及公開パラメータの取得要求をクラウドサーバ200に送信する(ステップS901)。
【0101】
クラウドサーバ200のサービス部231は、暗号化ユーザ秘密鍵及公開パラメータの取得要求をユーザ端末100から受信すると、暗号化ユーザ秘密鍵及公開パラメータの提供を公開パラメータ管理部232に要求する(ステップS902)。
【0102】
クラウドサーバ200の公開パラメータ管理部232は、サービス部231からの要求に応じて、暗号化ユーザ秘密鍵、公開パラメータ、及び暗号化Witnessをサービス部231に提供する。
【0103】
サービス部231は、ユーザ端末100に、暗号化ユーザ秘密鍵、公開パラメータ、及び暗号化Witnessを送信する(ステップS904)。
【0104】
ユーザ端末100は、続いて、暗号化ユーザ秘密鍵のバックアップを行ったときの本人証明アルゴリズムの生成に用いたWitnessの入力を要求し、Witness入力部173は、Witnessの入力を受け付ける(ステップS905)。
【0105】
WitnessReduction処理部175aは、ステップS905で取得されたWitnessと、暗号化Witnessと、公開パラメータとに基づいて、WitnessReduction処理を実行し、多項式hを生成する(ステップS906)。
【0106】
鍵生成部176は、WitnessReduction処理により生成された多項式hをエンコードしてハッシュ化したバックアップ秘密鍵を改めて生成する(ステップS907)。
【0107】
鍵生成部176は、ステップS907で再生成したバックアップ秘密鍵を用いて、クラウドサーバ200から取得した暗号化ユーザ秘密鍵を復号することにより、ユーザ秘密鍵を復旧する(ステップS908)。
【0108】
(5.その他)
[5-1.複数の本人証明アルゴリズムの適用例]
例えば、
図13に示す暗号化ユーザ秘密鍵をバックアップする際、複数の本人証明アルゴリズムを適用できる。
図14は、複数の本人証明アルゴリズムの適用例を示す図である。
図14に示すように、例えば、ユーザ端末100は、複数の本人証明アルゴリズムA
1~A
nから、それぞれバックアップ秘密鍵SK
1~SK
nを生成する。すなわち、バックアップ秘密鍵SK
1は、本人証明アルゴリズムA
1に基づく多項式hから生成され、バックアップ秘密鍵SK
nは、本人証明アルゴリズムA
nに基づく多項式hから生成される。続いて、ユーザ端末100は、バックアップ秘密鍵SK
1~SK
nのそれぞれを用いて、ユーザ秘密鍵UKを暗号化した暗号化ユーザ秘密鍵E
1~E
nを生成し、例えばクラウドサーバ200にバックアップしておく。ユーザ端末100のユーザは、複数の本人証明アルゴリズムのうち、どれか一つの本人証明アルゴリズムによって本人確認ができれば、暗号化ユーザ秘密鍵をバックアップ先から取得できる。そして、ユーザ端末100のユーザは、バックアップ先から取得した暗号化ユーザ秘密鍵を用いて、ユーザ秘密鍵を復旧できる。
【0109】
[5-2.ユースケース]
上述した実施形態に係るユーザ認証方法は、クラウドサーバ200により提供されるウェブサービスなどのオンラインサービスへのログイン以外にも利用できる。たとえば、コンサートやイベントなどの入場時における本人確認、各種契約における本人確認、学生割引などの各種サービスにおける本人確認などに利用できる。また、各種ゲームアプリケーションの処理と連動させることにより、ゲームの進行に関わる処理、たとえばイベントを発生させる秘密情報の入手や秘密の場所への到達したことの証明に上述した実施形態に係るユーザ認証を利用することができる。たとえば、ゲームフィールド上に、秘密の合言葉が書かれている特定の場所を用意し、かかる特定の場所に到達したユーザだけが(その場所に到達したことを証明できる)proofを生成できるようにしてもよい。
【0110】
また、上記各実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0111】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。たとえば、
図1に示すZKP-Prove処理部175の処理機能をユーザ端末100から分散させて、ユーザ端末100の外部に設けられた検証装置に実装されてもよい。この場合、検証装置は、ユーザ端末100からWitnessを取得すると、クラウドサーバ200から公開パラメータなどを取得し、取得した公開パラメータ等に基づいてユーザ認証処理を実行して、ユーザ認証結果の結果をクラウドサーバ200に送信する。
【0112】
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0113】
また、本明細書に記載された効果はあくまで例示であって限定されるものでは無く、また他の効果があってもよい。また、本開示中に記載された少なくともいずれか一つの効果であってもよい。
【0114】
(6.効果)
上述のように、本開示に係る本人確認プログラムは、ゼロ知識証明による本人確認のための処理機能を、ユーザ端末(実施形態におけるユーザ端末100等)であるコンピュータに実行させる。かかる本人確認プログラムは、ユーザ端末のユーザ本人しか知り得ない情報であるWitnessを取得する。かかる本人確認プログラムは、取得したWitnessに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成する。かかる本人確認プログラムは、生成したproofに基づくユーザ認証要求を認証装置(実施形態におけるクラウドサーバ200等)に送信する。これにより、本開示に係る本人確認プログラムは、認証装置に、ユーザ本人しか知り得ない情報を開示することのないユーザ認証処理を実行させることができる。このため、本開示に係る本人確認プログラムは、例えばオンラインサービス利用の際のユーザ認証におけるユーザプライバシーの保護を実現できる。
【0115】
また、本開示に係る本人確認プログラムは、本人確認のための本人証明アルゴリズムに基づいて、ゼロ知識証明によるユーザ認証のための公開パラメータを生成するセットアップ処理を実行する。かかる本人確認プログラムは、ユーザ端末のユーザに固有のユーザ識別情報と、公開パラメータと、暗号化Witnessとを関連付けて、認証装置に登録する。かかる本人確認プログラムは、Witnessと、公開パラメータと、witnessを暗号化した暗号化Witnessとを用いて、Witnessが正しいことを条件に多項式時間で導出可能な多項式を生成する。かかる本人確認プログラムは、多項式を用いて、proofを生成する。かかる本人確認プログラムは、ユーザ識別情報とproofとに基づくユーザ認証要求を認証装置に送信する。これにより、本開示に係る本人確認プログラムは、本人証明アルゴリズムに基づく公開パラメータを予め認証装置に登録しておき、かかる公開パラメータに基づいて、ユーザ本人しか知り得ない情報を開示することのないユーザ認証処理をユーザ端末に実行させることができる。このため、本開示に係る本人確認プログラムによれば、例えばオンラインサービス利用の際のユーザ認証におけるユーザプライバシーの保護を実現できる。
【0116】
また、本開示に係る本人確認プログラムは、多項式を用いて、ユーザのユーザデータを暗号化するためのユーザ秘密鍵を生成する。これにより、本開示に係る本人確認プログラムは、ユーザ本人しか知り得ない情報に基づいて本人確認に成功しなければ生成できないユーザ秘密鍵により、ユーザデータを安全に暗号化できる。このため、本開示に係る本人確認プログラムによれば、ユーザデータをユーザ秘密鍵により暗号化したデータをオンラインサービス上にアップロードしたとしても、ユーザデータが復号される心配がなく、オンラインサービスの利用におけるユーザプライバシーを保護できる。
【0117】
また、本開示に係る本人確認プログラムは、多項式を用いて、ユーザ秘密鍵を暗号化するためのバックアップ秘密鍵を生成し、バックアップ秘密鍵を用いて、ユーザ秘密鍵を暗号化した暗号化ユーザ秘密鍵を生成し、暗号化ユーザ秘密鍵を認証装置に登録する。これにより、本開示に係る本人確認プログラムは、本人確認に成功したことを条件に生成されるバックアップ秘密鍵により、ユーザデータを暗号化したユーザ秘密鍵の安全なバックアップを実現できる。すなわち、本開示に係る本人確認プログラムは、本人確認に成功しなければ生成できないバックアップ秘密鍵でユーザ秘密鍵を暗号化した暗号化ユーザ秘密鍵をバックアップする。このため、本開示に係る本人確認プログラムによれば、暗号化ユーザ秘密鍵が復号される心配がない。また、本開示に係る本人確認プログラムによれば、ユーザ秘密鍵を紛失したとしても、バックアップ秘密鍵を用いて、オンラインサービス上にバックアップしておいた暗号化ユーザ秘密鍵を復号することにより、ユーザ秘密鍵を復旧できる。このため、本開示に係る本人確認プログラムによれば、データ可用性を高めることができ、ユーザデータの安全なバックアップにおけるユーザの利便性を向上できる。
【0118】
また、本開示に係る本人確認プログラムは、ユーザ端末のユーザから、本人証明アルゴリズムの選択を受け付けるためのインターフェイスを提供する。これにより、本開示に係る本人確認プログラムは、ユーザが選択した本人証明アルゴリズムを用いたユーザ認証処理をユーザ端末に実行させることができる。これにより、本開示に係る本人確認プログラムによれば、オンラインサービスを提供するサービス事業者が設定する本人証明アルゴリズムではなく、ユーザが希望する本人証明アルゴリズムを利用できる。このため、本開示に係る本人確認プログラムによれば、例えばオンラインサービスなどを利用する際のユーザ認証におけるユーザプライバシーの保護しつつ、オンラインサービス利用の際のユーザ認証におけるユーザの利便性を向上できる。
【0119】
(7.ハードウェア構成)
上述してきた各実施形態に係るユーザ端末100は、例えば
図15に示すような構成のコンピュータ1000によって実現される。
図15は、ユーザ端末100の機能を実現するコンピュータ1000の一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス1500、及び入出力インターフェイス1600を有する。コンピュータ1000の各部は、バス1050によって接続される。
【0120】
CPU1100は、ROM1300又はHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。例えば、CPU1100は、ROM1300又はHDD1400に格納されたプログラムをRAM1200に展開し、各種プログラムに対応した処理を実行する。
【0121】
ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるBIOS(Basic Input Output System)等のブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
【0122】
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を非一時的に記録する、コンピュータ1000が読み取り可能な記録媒体である。具体的には、HDD1400は、たとえば
図3に示すアンテナ切替処理を実現するためのプログラムを記録する記録媒体である。
【0123】
通信インターフェイス1500は、コンピュータ1000が外部ネットワーク1550(例えばインターネット)と接続するためのインターフェイスである。例えば、CPU1100は、通信インターフェイス1500を介して、他の機器からデータを受信したり、CPU1100が生成したデータを他の機器へ送信したりする。
【0124】
入出力インターフェイス1600は、入出力デバイス1650とコンピュータ1000とを接続するためのインターフェイスである。例えば、CPU1100は、入出力インターフェイス1600を介して、キーボードやマウス等の入力デバイスからデータを受信する。また、CPU1100は、入出力インターフェイス1600を介して、ディスプレイやスピーカーやプリンタ等の出力デバイスにデータを送信する。また、入出力インターフェイス1600は、所定の記録媒体(メディア)に記録されたプログラム等を読み取るメディアインターフェイスとして機能してもよい。メディアとは、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【0125】
例えば、コンピュータ1000が実施形態に係るユーザ端末100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラム(アンテナ切替処理を実現するためのプログラムなど)を実行する。これにより、ユーザ端末100の制御部117により実行される各種処理等の機能が実現される。また、HDD1400には、本開示に係るユーザ端末100の処理を実現するためのプログラム(本人確認プログラムの一例)や、記憶部111に記憶されるデータなどが格納される。なお、CPU1100は、プログラムデータ1450をHDD1400から読み取って実行するが、他の例として、外部ネットワーク1550を介して、他の装置からこれらのプログラムを取得してもよい。
【0126】
なお、本技術は以下のような構成も取ることができる。
(1)
ゼロ知識証明による本人確認のための処理機能を、ユーザ端末であるコンピュータに実行させるための本人確認プログラムであって、
前記ユーザ端末のユーザ本人しか知り得ない情報であるWitnessを取得し、
取得したWitnessに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成し、
生成したproofに基づくユーザ認証要求を認証装置に送信する
本人確認プログラム。
(2)
前記本人確認のための本人証明アルゴリズムに基づいて、前記ゼロ知識証明によるユーザ認証のための公開パラメータを生成するセットアップ処理を実行し、
前記ユーザ端末のユーザに固有のユーザ識別情報と、前記公開パラメータと、前記Witnessを暗号化した暗号化Witnessとを関連付けて、前記認証装置に登録し、
前記Witnessと、前記公開パラメータと、前記暗号化Witnessとを用いて、前記Witnessが正しいことを条件に多項式時間で導出可能な多項式を生成し、
前記多項式を用いて、前記proofを生成し、
前記ユーザ識別情報と前記proofとに基づくユーザ認証要求を認証装置に送信する
前記(1)に記載の本人確認プログラム。
(3)
前記多項式を用いて、前記ユーザのユーザデータを暗号化するためのユーザ秘密鍵を生成する
前記(2)に記載の本人確認プログラム。
(4)
前記多項式を用いて、前記ユーザ秘密鍵を暗号化するためのバックアップ秘密鍵を生成し、
前記バックアップ秘密鍵を用いて、前記ユーザ秘密鍵を暗号化した暗号化ユーザ秘密鍵を生成し、
前記暗号化ユーザ秘密鍵を前記認証装置に登録する
前記(3)に記載の本人確認プログラム。
(5)
前記ユーザ端末のユーザから、前記本人証明アルゴリズムの選択を受け付けるためのインターフェイスを提供する
前記(2)~(4)のいずれか1つに記載の本人確認プログラム。
(6)
ゼロ知識証明による本人確認のための処理機能を実行するユーザ端末であるコンピュータが、
前記ユーザ端末のユーザ本人しか知り得ない情報であるWitnessを取得し、
取得したWitnessに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成し、
生成したproofを用いたユーザ認証要求を認証装置に送信する
ことを含む本人確認方法。
(7)
ゼロ知識証明による本人確認のための処理機能を実行するユーザ端末であって、
前記ユーザ端末のユーザ本人しか知り得ない情報であるWitnessを取得する取得部と、
前記Witnessに基づいて、ゼロ知識証明によるユーザ認証のためのproofを生成する生成部と、
前記proofを用いたユーザ認証要求を認証装置に送信する送信部と
を備えるユーザ端末。
(8)
ゼロ知識証明によるユーザ認証の処理機能をコンピュータに実行させるためのユーザ認証プログラムであって、
ユーザ端末からユーザ認証要求を受信し、
前記ユーザ認証要求に含まれる情報であって、前記ユーザ端末のユーザ本人しか知り得ない情報であるWitnessに基づいて生成されたゼロ知識証明によるユーザ認証のためproofと、前記ユーザ認証要求に含まれるユーザ識別情報に関連付けて予め登録された情報であって、前記Witnessを暗号化した暗号化Witnessとに基づいて、ユーザ認証を実行する
ユーザ認証プログラム。
【符号の説明】
【0127】
1 情報処理システム
10 通信ネットワーク
100 ユーザ端末
101 通信部
102 入力部
103 出力部
104 撮像部
105 測位部
106 検出部
115 記憶部
117 制御部
171 本人証明アルゴリズム生成部
172 ZKP-Setup処理部
173 Witness入力部
174 ユーザ登録部
175 ZKP-Prove処理部
175a WitnessReduction処理部
175b Proof生成部
176 鍵生成部
200 クラウドサーバ
201 通信部
202 記憶部
203 制御部
231 サービス部
232 公開パラメータ管理部
233 ZKP-Verify処理部