(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-13
(45)【発行日】2024-12-23
(54)【発明の名称】通信システム、通信方法、及びプログラム
(51)【国際特許分類】
G06F 21/31 20130101AFI20241216BHJP
H04L 9/16 20060101ALI20241216BHJP
【FI】
G06F21/31
H04L9/16
(21)【出願番号】P 2023166239
(22)【出願日】2023-09-27
(62)【分割の表示】P 2022577693の分割
【原出願日】2022-02-28
【審査請求日】2023-10-27
(73)【特許権者】
【識別番号】399037405
【氏名又は名称】楽天グループ株式会社
(74)【代理人】
【識別番号】110000154
【氏名又は名称】弁理士法人はるか国際特許事務所
(72)【発明者】
【氏名】蔡 永男
【審査官】中里 裕正
(56)【参考文献】
【文献】特開2012-160799(JP,A)
【文献】特開2012-027887(JP,A)
【文献】特開2007-221747(JP,A)
【文献】特開2008-097575(JP,A)
【文献】特開2009-093342(JP,A)
【文献】特表2017-531967(JP,A)
【文献】特開2006-238273(JP,A)
【文献】特開2006-331128(JP,A)
【文献】特開2007-156785(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/31
H04L 9/16
(57)【特許請求の範囲】
【請求項1】
第1装置のユーザに関する認証データが前記第1装置により変換されて生成された変換データと、前記第1装置に関する複数の情報であって互いに異なる内容を示す別々の種類の前記複数の情報に基づくハッシュ値と、を前記第1装置から受信する受信部と、
前記変換データを逆変換して前記認証データを取得する逆変換部と、
当該取得された認証データと、前記ハッシュ値と、に基づいて、前記ユーザに関する認証処理を実行する処理実行部と、
を含む第2装置
と、選択装置と、を含む通信システムであって、
前記選択装置は、前記第1装置からの要求に基づいて、複数の変換方法のうちの何れかを選択する変換方法選択部を含み、
前記受信部は、前記変換方法選択部により選択された前記変換方法に基づいて前記第1装置により変換されて生成された前記変換データを、前記第1装置から受信し、
前記第2装置は、前記選択装置に対し、逆変換方法の選択を要求する逆変換方法要求部を含み、
前記選択装置は、前記第2装置からの要求に基づいて、複数の前記逆変換方法のうちの何れかを選択する逆変換方法選択部を更に含み、
前記逆変換部は、前記逆変換方法選択部により選択された前記逆変換方法に基づいて、前記変換データを逆変換して前記認証データを取得する、
通信システム。
【請求項2】
前記処理実行部は、前記第1装置から受信した前記ハッシュ値と、予めデータベースに格納されたハッシュ値と、に基づいて、前記認証処理を実行する、
請求項1に記載の
通信システム。
【請求項3】
前記通信システムは、管理装置を
更に含み、
前記管理装置は、前記第1装置からの要求に基づいて、前記第1装置に対し、前記認証データの変換のための変換情報を送信し、
前記受信部は、前記第1装置により前記変換情報に基づいて変換されて生成された前記変換データを、前記第1装置から受信し、
前記第2装置は、前記管理装置に対し、前記変換データの逆変換のための逆変換情報を要求する情報要求部を更に含み、
前記管理装置は、前記第2装置からの要求に基づいて、前記第2装置に対し、前記逆変換情報を送信し、
前記逆変換部は、前記管理装置から受信した前記逆変換情報に基づいて、前記変換データを逆変換した前記認証データを取得する、
請求項1又は2に記載の通信システム。
【請求項4】
第1装置のユーザに関する認証データが前記第1装置により変換されて生成された変換データと、前記第1装置に関する複数の情報であって互いに異なる内容を示す別々の種類の前記複数の情報に基づくハッシュ値と、を前記第1装置から受信する受信ステップと、
前記変換データを逆変換して前記認証データを取得する逆変換ステップと、
当該取得された認証データと、前記ハッシュ値と、に基づいて、前記ユーザに関する認証処理を実行する処理実行ステップと、
が第2装置により実行され、
選択装置により、前記第1装置からの要求に基づいて、複数の変換方法のうちの何れかを選択する変換方法選択ステップが実行され、
前記受信ステップは、前記変換方法選択ステップにより選択された前記変換方法に基づいて前記第1装置により変換されて生成された前記変換データを、前記第1装置から受信し、
前記第2装置により、前記選択装置に対し、逆変換方法の選択を要求する逆変換方法要求ステップが実行され、
前記選択装置により、前記第2装置からの要求に基づいて、複数の前記逆変換方法のうちの何れかを選択する逆変換方法選択ステップが実行され、
前記逆変換ステップは、前記逆変換方法選択ステップにより選択された前記逆変換方法に基づいて、前記変換データを逆変換して前記認証データを取得する、
通信方法。
【請求項5】
第1装置のユーザに関する認証データが前記第1装置により変換されて生成された変換データと、前記第1装置に関する複数の情報であって互いに異なる内容を示す別々の種類の前記複数の情報に基づくハッシュ値と、を前記第1装置から受信する受信部、
前記変換データを逆変換して前記認証データを取得する逆変換部、
当該取得された認証データと、前記ハッシュ値と、に基づいて、前記ユーザに関する認証処理を実行する処理実行部、
として第2装置を機能させるためのプログラム
であって、
前記受信部は、前記第1装置からの要求に基づいて複数の変換方法のうちの何れかを選択する選択装置により選択された前記変換方法に基づいて前記第1装置により変換されて生成された前記変換データを、前記第1装置から受信し、
前記プログラムは、前記選択装置に対し、逆変換方法の選択を要求する逆変換方法要求部として前記第2装置を機能させ、
前記逆変換部は、前記第2装置からの要求に基づいて、複数の前記逆変換方法のうちの何れかを選択する前記選択装置により選択された前記逆変換方法に基づいて、前記変換データを逆変換して前記認証データを取得する、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、通信システム、通信方法、及びプログラムに関する。
【背景技術】
【0002】
従来、通信分野において、元データの内容が第三者に知られないように、元データを変換する技術が知られている。例えば、特許文献1には、ユーザが入力したユーザIDに基づいて、ユーザパラメータを生成し、当該生成されたユーザパラメータに基づいて、元データの一例である生体データを変換する技術が記載されている。例えば、特許文献2には、公開鍵暗号方式を利用して、元データの一例であるソルトを変換する技術が記載されている。例えば、特許文献3には、公開鍵暗号方式の一種であるチャレンジアンドレスポンスと呼ばれる技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第4966765号公報
【文献】特許第6866803号公報
【文献】再公表2020-85141号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の技術では、ネットワーク上にユーザパラメータが送信されるので、悪意のある第三者がユーザパラメータを容易に取得できる。第三者が、ユーザの生体データを何らかの形で入手すると、不正に入手したユーザパラメータ及び生体データを利用したなりすましが可能になる。ユーザパラメータは、一度発行されると原則として変わらないユーザIDに基づいて生成されるので、第三者は、一度入手したユーザパラメータを利用して、長期間にわたってなりすましが可能になる。
【0005】
特許文献2-3の公開鍵暗号方式は、第三者に公開される公開鍵と、第三者には公開されない秘密鍵と、のペアを利用した暗号方式である。しかしながら、秘密鍵は、原則として変わらない情報なので、第三者が何らかの形で秘密鍵を入手すると、第三者は、一度入手した秘密鍵を利用して、長期間にわたって不正が可能になる。特許文献1-3の技術では、長期間にわたる不正が可能になるので、通信におけるセキュリティを十分に高めることができなかった。
【0006】
本開示の目的の1つは、通信におけるセキュリティを高めることである。
【課題を解決するための手段】
【0007】
本開示の一態様に係る通信システムは、第1装置及び第2装置を含む通信システムであって、前記第1装置からの要求に基づいて、複数の情報を生成する生成部を含み、前記第1装置は、前記複数の情報に基づいて、元データを変換して前記第2装置に変換データを送信し、前記第2装置は、前記複数の情報に基づいて、前記変換データを逆変換して前記元データを取得する。
【発明の効果】
【0008】
本開示によれば、通信におけるセキュリティが高まる。
【図面の簡単な説明】
【0009】
【
図1】通信システムの全体構成の一例を示す図である。
【
図2】第1実施形態における多要素認証の流れの一例を示す図である。
【
図3】第1実施形態の通信システムで実現される機能の一例を示す機能ブロック図である。
【
図6】第1実施形態の通信システムで実行される処理の一例を示す図である。
【
図7】第1実施形態の通信システムで実行される処理の一例を示す図である。
【
図8】第2実施形態における多要素認証の流れの一例を示す図である。
【
図9】第2実施形態の通信システムで実現される機能ブロックの一例を示す図である。
【
図10】第3実施形態における認証システムの全体構成の一例を示す図である。
【
図11】第3実施形態における多要素認証の流れの一例を示す図である。
【
図12】第3実施形態の認証システムで実現される機能ブロックの一例を示す図である。
【発明を実施するための形態】
【0010】
[1.第1実施形態]
本開示に係る通信システムの実施形態の例である第1実施形態を説明する。第1実施形態では、ユーザの認証が行われる場面に通信システムを適用した場合を例に挙げるが、通信システムは、任意の場面に適用可能である。他の場面への適用例は、後述の変形例5で説明する。
【0011】
[1-1.通信システムの全体構成]
図1は、通信システムの全体構成の一例を示す図である。
図1に示すように、通信システムSは、ソルトサーバ10、認証サーバ20、及びユーザPC30を含む。ソルトサーバ10、認証サーバ20、及びユーザPC30は、インターネット又はLAN等のネットワークNに接続可能である。通信システムSは、少なくとも1台のコンピュータを含めばよく、
図1の例に限られない。
【0012】
ソルトサーバ10は、サーバコンピュータである。制御部11は、少なくとも1つのプロセッサを含む。記憶部12は、RAM等の揮発性メモリと、ハードディスク等の不揮発性メモリと、を含む。通信部13は、有線通信用の通信インタフェースと、無線通信用の通信インタフェースと、の少なくとも一方を含む。
【0013】
ソルトサーバ10は、管理装置の一例である。このため、ソルトサーバ10と記載した箇所は、管理装置と読み替えることができる。管理装置は、任意の装置であってよく、ソルトサーバ10のようなサーバコンピュータに限られない。例えば、管理装置は、パーソナルコンピュータ、タブレット端末、又はスマートフォンであってもよい。
【0014】
ソルトサーバ10は、暗号理論におけるソルトを管理する。ソルトは、変換対象となる情報を変換するための情報である。ソルトは、変換対象となる情報とともに、変換関数に入力される情報である。変換は、暗号化又はハッシュ化と呼ばれることもある。変換は、可逆性がある。変換後の情報は、逆変換することによって、変換前の情報に戻すことができる。ソルトを管理するとは、ソルトを記憶することである。
【0015】
ソルト自体は、公知のソルトを利用可能である。例えば、ソルトは、ランダムな値である。ソルトは、任意の形式であってよく、例えば、数字、文字、その他の記号、又はこれらの組み合わせである。ソルトサーバ10は、ソルトを生成してもよいし、ソルトの生成自体は、ソルトサーバ10以外の他の装置で行われてもよい。
【0016】
認証サーバ20は、サーバコンピュータである。制御部21、記憶部22、及び通信部23の物理的構成は、それぞれ制御部11、記憶部12、及び通信部13と同様であってよい。
【0017】
認証サーバ20は、第2装置の一例である。このため、認証サーバ20と記載した箇所は、第2装置と読み替えることができる。第2装置は、任意の装置であってよく、認証サーバ20のようなサーバコンピュータに限られない。例えば、第2装置は、パーソナルコンピュータ、タブレット端末、又はスマートフォンであってもよい。
【0018】
ユーザPC30は、ユーザのパーソナルコンピュータである。制御部31、記憶部32、及び通信部33の物理的構成は、それぞれ制御部11、記憶部12、及び通信部13と同様であってよい。操作部34は、マウス、キーボード、又はタッチパネル等の入力デバイスである。表示部35は、液晶ディスプレイ又は有機ELディスプレイである。撮影部36は、少なくとも1台のカメラを含む。
【0019】
ユーザPC30は、第1装置の一例である。このため、ユーザPC30と記載した箇所は、第1装置と読み替えることができる。第1装置は、任意の装置であってよく、ユーザPC30のようなパーソナルコンピュータに限られない。例えば、第1装置は、タブレット端末、スマートフォン、又はウェアラブル端末であってもよい。他にも例えば、第1装置は、ゲーム機、自動販売機、POS端末、又はATMといった他の装置であってもよい。
【0020】
なお、記憶部12,22,32に記憶されるプログラムは、ネットワークNを介して供給されるようにしてもよい。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)と、外部機器とデータの入出力をするための入出力部(例えば、USBポート)と、の少なくとも一方を介して、情報記憶媒体に記憶されたプログラムが供給されてもよい。
【0021】
[1-2.第1実施形態における通信システムの概要]
例えば、通信システムSでは、ユーザの正当性を確認するために、多要素認証が実行される。多要素認証とは、複数の要素を組み合わせた認証である。第1実施形態では、2つの要素を組み合わせた2要素認証を例に挙げるが、3つ以上の要素を組み合わせた多要素認証であってもよい。要素自体は、種々の種類を利用可能であり、例えば、生体要素、所持要素、又は知識要素であってもよい。
【0022】
多要素認証では、要素に応じた認証データが利用される。認証データ自体は、種々の種類を利用可能である。例えば、生体認証では、顔写真、顔の特徴量、指紋の写真、指紋の特徴量、静脈のスキャン画像、又は静脈の特徴量といった生体データが認証データに相当する。所持認証では、ワンタイムパスワード、ICカードに記録された情報、又はトークンに記録された情報といった所持情報が認証データに相当する。知識認証では、ユーザID、パスワード、PIN、又は秘密の質問といった知識情報が認証データに相当する。
【0023】
第1実施形態では、オンラインサービスにログインするために多要素認証が実行される場合を例に挙げるが、多要素認証は、任意の場面に適用可能である。例えば、オンラインサービスに対する申込時、電子決済の実行時、又は、オンライン上で行政手続が行われる時といった他の場面にも、多要素認証を適用可能である。オンラインサービス自体は、種々のサービスを適用可能である。例えば、金融サービス、通信サービス、決済サービス、電子商取引サービス、又はSNSがオンラインサービスに相当してもよい。
【0024】
例えば、ユーザが、オンラインサービスの利用登録をすると、オンラインサービスにログインするためのユーザID及びパスワードが発行される。ユーザは、ユーザPC30でオンラインサービスのウェブサイトにアクセスし、ユーザID及びパスワードを入力する。認証サーバ20は、ユーザが入力したユーザID及びパスワードに基づいて、ユーザの正当性を確認する。ユーザの正当性が確認されると、ユーザは、オンラインサービスにログインできる。
【0025】
ログインのたびにユーザID及びパスワードの入力が要求されると、非常に手間がかかる。このため、顔認証及びパスワード認証を組み合わせた多要素認証により、ユーザIDの入力の手間を軽減することが考えられる。しかしながら、この場合にもパスワードを入力する手間が発生する。操作部34に対する入力を発生させずに顔認証だけでユーザをログインさせると、顔が似た他のユーザとの誤認証が発生する可能性がある。3Dセンサを含む撮影部36であれば、ある程度の精度で顔認証を実行できるが、それでも誤認証が発生することがある。撮影部36が3Dセンサを含まない場合には、誤認証の確率が高まる。ユーザの顔写真を何らかの形で手に入れた第三者がユーザになりすます可能性もある。
【0026】
そこで、第1実施形態では、操作部34からの入力を発生させず、かつ、セキュリティを担保するために、ユーザがオンラインサービスにログインすると、認証サーバ20は、一時的なユーザIDを発行する。以降、この一時的なユーザIDを、TUID(Temporary User ID)という。TUIDは、ユーザを識別可能な情報である。TUIDは、所定の無効条件が満たされると無効になる。第1実施形態では、ユーザがオンラインサービスにログインすることが無効条件に相当する場合を例に挙げるが、無効条件は、任意の条件であってよい。例えば、無効条件は、所定の有効期限が経過すること、一定回数のログインが発生すること、又はユーザが所定の操作をすることであってもよい。
【0027】
認証サーバ20が発行したTUIDは、ユーザPC30に記録される。第1実施形態では、TUIDがブラウザのcookieとして記録される場合を説明するが、cookie以外の情報としてTUIDが記録されてもよい。TUIDは、表示部35に表示されてもよいが、原則としてユーザの目に触れないものとする。2回目以降のログインでは、顔認証とともに、TUIDを利用したTUID認証が実行される。TUIDが記録されたユーザPC30でなければTUID認証が成功しないので、TUID認証は、所持認証の一種である。顔認証及びTUID認証を組み合わせた多要素認証であれば、操作部34からの入力を発生させず、かつ、ある程度のセキュリティを担保できると考えられる。
【0028】
しかしながら、同じTUIDを長期間使いまわすと、悪意のある第三者に、有効なTUIDが盗まれる可能性がある。例えば、リプレイアタックによって第三者にcookieが盗まれてしまい、cookieに含まれるTUIDも盗まれる可能性がある。第三者が、TUIDだけではなく、ユーザの顔写真も何らかの形で入手したとすると、なりすましが可能になってしまう。このため、ある一定期間でTUIDを無効にすることも考えられる。
【0029】
しかしながら、TUIDがすぐに無効になると、あまり頻繁にはログインしないユーザは、ユーザID及びパスワードを毎回入力する必要があるので、ユーザの利便性が低下する。そこで、第1実施形態では、ユーザの利便性を高めつつ、第三者にTUIDを盗まれないようにするために、ソルトを利用してTUIDを変換するようにしている。ただし、同じソルトを長期間使いまわすと、第三者にソルト自体を盗まれる可能性があるので、ユーザがログインするたびに複数のソルトが生成されるようになっている。
【0030】
図2は、第1実施形態における多要素認証の流れの一例を示す図である。
図2のように、ユーザがオンラインサービスにログインする場合、ユーザPC30は、ソルトサーバ10に対し、ソルトを取得するためのソルト要求を送信する。
図2の例では、createSaltPair()といったコマンドがソルト要求に含まれる。このコマンドは、ソルトに関する条件が含まれていないので、悪意のある第三者がソルト要求を盗み見たとしても、どのような条件でソルトが生成されているかを特定することはできない。
【0031】
ソルトサーバ10は、ソルト要求を受信すると、ソルトのペアである第1ソルト「6437」及び第2ソルト「8414」を生成してソルトデータベースDB1に格納する。ソルトのペアは、その場で動的に生成されるのではなく、ソルトデータベースDB1に多数のソルトを予め格納しておき、ソルトサーバ10が、ソルトデータベースDB1の中からソルトのペアを取得してもよい。第1ソルト及び第2ソルトは、一定時間で自動的に削除されてもよい。ソルトサーバ10は、第1ソルト「6437」及び第2ソルト「8414」を、ユーザPC30に送信する。
【0032】
ユーザPC30は、ソルトサーバ10から第1ソルト「6435」及び第2ソルト「8414」を受信すると、第2ソルト「8414」と、所定の変換関数fと、に基づいて、TUID「312456」を変換する。
図2の例では、変換関数fは、TUID「312456」に、第2ソルト「8414」を加算する関数である。変換後のTUIDは、これらの和の「320870」になる。ユーザPC30は、撮影部36が生成したユーザの顔写真、第1ソルト「6437」、及び変換後のTUID「320870」を含む認証要求を、認証サーバ20に送信する。
【0033】
認証サーバ20は、認証要求を受信すると、ソルトサーバ10に対し、第1ソルト「6437」を含むソルト要求を送信する。このソルト要求は、ユーザPC30が送信するソルト要求とは異なる。このソルト要求は、getSaltAndDelete(6437)といったコマンドを含む。このコマンドは、第2ソルト「8414」の取得と、第1ソルト「6437」及び第2ソルト「8414」の削除と、を要求するコマンドである。
【0034】
ソルトサーバ10は、ソルト要求を受信すると、ソルトデータベースDB1を参照し、ソルト要求に含まれる第1ソルト「6437」に関連付けられた第2ソルト「8414」を取得し、認証サーバ20に送信する。第1ソルト「6437」は、第2ソルト「8414」を検索するためのクエリ及びインデックスとして利用される。ソルトサーバ10は、ソルトデータベースDB1から、第1ソルト「6437」及び第2ソルト「8414」を削除する。
【0035】
認証サーバ20は、ソルトサーバ10から第2ソルト「8414」を受信すると、このソルト「8414」と、逆変換関数f
-1と、に基づいて、ユーザPCから受信した変換後のTUID「320870」を逆変換する。
図2の例では、逆変換関数f
-1は、変換後のTUID「320870」から第2ソルト「8414」を減算する関数である。認証サーバ20は、逆変換により、TUID「312456」を取得する。
【0036】
認証サーバ20は、TUID「312456」を取得すると、ユーザデータベースDB2にTUID「312456」が存在するか否かを確認する。ユーザデータベースDB2には、多要素認証における正解となる認証データが格納されている。TUID「312456」の存在有無を確認する処理は、TUID認証に相当する。ユーザデータベースDB2にTUID「312456」が格納されていなければ、その時点でエラーとなり、ユーザはログインできない。
【0037】
認証サーバ20は、TUID「312456」がユーザデータベースDB2に存在することを確認すると、TUID「312456」に関連付けられてユーザデータベースDB2に格納された顔の特徴量を取得する。認証サーバ20は、当該取得された顔の特徴量と、ユーザPC30から受信した顔写真から計算した顔の特徴量と、に基づいて、顔認証を実行する。認証サーバ20は、顔認証が成功すると、ユーザPC30に対し、多要素認証が成功したことを示す認証結果を送信する。ユーザPC30は、この認証結果を受信すると、オンラインサービスにログインした状態になる。
【0038】
なお、ユーザがログインした後に、悪意のある第三者が、クロスサイトスクリプティング(XSS)攻撃等によって、変換後のTUID「320870」と、ユーザの顔写真と、を盗んだとすると、第三者によるなりすましが可能になる恐れがある。そこで、認証サーバ20は、ユーザがログインした場合に、新たなTUIDを発行し、ユーザデータベースDB2に格納してもよい。即ち、認証サーバ20は、ユーザがログインするたびに、TUIDを更新してもよい。新たなTUIDが「417632」だったとすると、認証サーバ20は、ユーザPC30に対し、新たなTUID「417632」を含む認証結果を送信すればよい。これにより、ユーザがログインするたびにTUIDが変わるので、第三者が上記のようなクロスサイトスクリプティング(XSS)攻撃等をしたとしても認証を成功させることができず、なりすましを防止できる。新たなTUID「417632」は、ソルトサーバ10から受信済みの第2ソルト「8414」で変換されてもよい。この場合、認証サーバ20は、新たなTUIDを変換するための変換関数を記憶し、ユーザPC30は、変換後の新たなTUIDを逆変換するための逆変換関数f-1を記憶しているものとする。この逆変換でも、ソルトサーバ10から受信済みの第2ソルト「8414」が利用されてもよい。
【0039】
以上のように、第1実施形態の通信システムSは、第1ソルト及び第2ソルトに基づいて、TUIDを変換したり、変換後のTUIDを逆変換したりする。これにより、TUIDがそのままネットワークN上に送信されないので、第三者は、TUIDを簡単に入手できないようになる。更に、第1ソルト及び第2ソルトは、ユーザPC30からの要求に応じて動的に生成されるので、第三者が何らかの形で第1ソルト及び第2ソルトを取得したとしても、その時点では第1ソルト及び第2ソルトが失効している可能性があるので、通信におけるセキュリティが高まるようになっている。以降、第1実施形態の通信システムSの詳細を説明する。
【0040】
[1-3.第1実施形態の通信システムで実現される機能]
図3は、第1実施形態の通信システムSで実現される機能の一例を示す機能ブロック図である。
【0041】
[1-3-1.ソルトサーバにおいて実現される機能]
データ記憶部100は、記憶部12を主として実現される。ソルト生成部101、受信部102、送信部103、第1削除部104、及び第2削除部105は、制御部11を主として実現される。
【0042】
[データ記憶部]
データ記憶部100は、ソルトを管理するために必要なデータを記憶する。例えば、データ記憶部100は、ソルトデータベースDB1を記憶する。TUIDを変換するための変換情報と、変換後のTUIDを逆変換するための逆変換情報と、がソルト以外の名前で呼ばれる情報であれば、ソルトサーバ10は、ソルトデータベースDB1以外の名前で呼ばれるデータベースを利用して、変換情報及び逆変換情報を管理すればよい。
【0043】
図4は、ソルトデータベースDB1の一例を示す図である。ソルトデータベースDB1は、複数のソルトが互いに関連付けられて格納されたデータベースである。例えば、ソルトデータベースDB1には、第1ソルト及び第2ソルトのペアが格納される。以降、第1ソルト及び第2ソルトを区別しない時は、単にソルトと記載する。ソルト生成部101により3以上のソルトが生成される場合には、当該3以上のソルトが互いに関連付けられてソルトデータベースDB1に格納される。
【0044】
ソルトデータベースDB1に互いに関連付けられた複数のソルトは、ソルト生成部101が生成する複数の情報の一例である。更に、第1ソルトは、第1情報の一例であり、第2ソルトは、第2情報の一例である。このため、互いに関連付けられた複数のソルトについて説明している箇所は、複数の情報と読み替えることができる。第1ソルトについて説明している箇所は、第1情報と読み替えることができる。第2ソルトについて説明している箇所は、第2情報と読み替えることができる。
【0045】
ソルトは、変換情報の一例であり、逆変換情報の一例でもある。ソルトと記載した箇所は、変換情報と読み替えることができる。ソルトと記載した箇所は、逆変換情報と読み替えることもできる。変換情報は、暗号理論における暗号鍵である。逆変換情報は、暗号理論における復号鍵である。第1実施形態では、変換情報及び逆変換情報が互いに同じなので、変換情報及び逆変換情報は、暗号理論における共通鍵に相当する。変換情報及び逆変換情報は、鍵以外の名前で呼ばれてもよく、例えば、ファイルの暗号化で用いられるパスワードが変換情報及び逆変換情報に相当してもよい。
【0046】
変換情報及び逆変換情報は、互いに異なってもよい。例えば、変換情報は、暗号理論における公開鍵であり、逆変換情報は、暗号理論における秘密鍵であってもよい。逆に、変換情報は、暗号理論における秘密鍵であり、逆変換情報は、暗号理論における公開鍵であってもよい。変換情報及び逆変換情報が互いに異なる場合、ソルトデータベースDB1には、変換情報及び逆変換情報の両方が格納される。これら両方のうちの変換情報がユーザPC30に送信され、逆変換情報が認証サーバ20に送信される。
【0047】
ソルト生成部101が生成する個々の情報は、通信システムSにおける通信で利用される情報である。この情報は、変換情報そのものであってもよいし、逆変換情報そのものであってもよい。更に、この情報は、変換情報を取得するために利用される情報であってもよいし、逆変換情報を取得するために利用される情報であってもよい。この情報は、ソルト以外の任意の名前で呼ばれる情報であってよい。例えば、この情報は、暗号理論における鍵、又は、ファイルに設定するパスワードであってもよい。他にも例えば、この情報は、パスコード又は合言葉といった他の名前で呼ばれてもよい。
【0048】
第1実施形態では、第1情報が識別情報に相当し、かつ、第2情報が変換情報及び逆変換情報に相当する場合を説明するが、第1情報及び第2情報の役割が逆の関係であってもよい。即ち、第1情報が変換情報及び逆変換情報に相当し、第2情報が識別情報であってもよい。識別情報は、他の情報を識別可能な情報である。識別情報は、他の情報の検索用の情報ということもできる。識別情報は、他の情報を検索する時のインデックスとして利用される。
【0049】
ソルト生成部101は、3以上の情報を生成してもよい。このため、ソルト生成部101が生成する情報をn個(nは3以上の整数)とすると、第1情報~第n情報のn個の情報が存在してもよい。例えば、変換情報及び逆変換情報が互いに異なる情報である場合には、ソルト生成部101は、第1情報、第2情報、及び第3情報といった3つの情報を生成してもよい。この場合、第1情報が識別情報に相当し、第2情報が変換情報に相当し、第3情報が逆変換情報に相当してもよい。第1情報~第3情報の役割は、識別情報、変換情報、及び逆変換情報の中で入れ替わってもよい。
【0050】
なお、データ記憶部100は、ソルトデータベースDB1以外の他の任意のデータを記憶可能である。例えば、データ記憶部100は、ソルトを生成するためのアルゴリズムを記憶してもよい。データ記憶部100は、認証サーバ20及びユーザPC30とソルトのやりとりをするためのAPIに関するデータを記憶してもよい。第1実施形態では、認証サーバ20及びユーザPC30から互いに異なる形式のソルト要求が受け付けられるので、認証サーバ20用のAPIと、ユーザPC30用のAPIと、が異なる場合を説明するが、認証サーバ20及びユーザPC30から同じ形式のソルト要求に統一し、認証サーバ20及びユーザPC30で共通のAPIとしてもよい。
【0051】
[ソルト生成部]
ソルト生成部101は、ユーザPC30からの要求に基づいて、複数のソルトを生成する。例えば、ソルト生成部101は、複数のソルトとして、第1ソルトと、変換及び逆変換をするための第2ソルトと、を生成する。ソルト生成部101は、所定のアルゴリズムに基づいて、複数のソルトを生成する。例えば、ソルト生成部101は、互いに異なる値であり、かつ、ランダムな値になるように、複数のソルトを生成する。ランダムな値を生成する方法自体は、公知の種々の方法を利用可能である。例えば、ソルト生成時のタイムスタンプを利用する方法であってもよいし、タイムスタンプ以外の他のデータを利用する方法であってもよい。
【0052】
ソルト生成部101は、ソルトデータベースDB1に、生成した複数のソルトを格納する。第1実施形態では、ソルト生成部101は、第1ソルト及び第2ソルトを生成する。ソルト生成部101は、第1ソルト及び第2ソルトを互いに関連付けてソルトデータベースDB1に格納する。互いに関連付けるとは、一方から他方を検索可能にすることである。第1実施形態では、TUIDの変換と、変換後のTUIDの逆変換と、で同じソルトが利用される場合を例に挙げる。
【0053】
[受信部]
受信部102は、認証サーバ20及びユーザPC30の各々からソルト要求を受信する。ソルト要求は、ソルトを要求するために送信される所定形式の情報である。
図2では、createSaltPair()又はgetSaltAndDelete(第1ソルト)といったコマンドを含むソルト要求を例に挙げたが、ソルト要求は、ソルトが要求されたことを示す情報であればよく、
図2の例に限られない。
【0054】
第1実施形態では、認証サーバ20からのソルト要求と、ユーザPC30からのソルト要求と、が互いに異なる形式である場合を説明するが、これらの形式は、互いに同じであってもよい。ソルト要求は、変換情報の要求の一例であり、逆変換情報の要求の一例でもある。このため、ソルト要求について説明している箇所は、変換情報の要求又は逆変換情報の要求と読み替えることができる。これらの要求は、ソルト要求以外の任意の名前で呼ばれることができる。
【0055】
[送信部]
送信部103は、認証サーバ20に対し、逆変換情報に相当する第2ソルトを送信する。例えば、送信部103は、認証サーバ20からのソルト要求に基づいて、逆変換情報に相当する第2ソルトを送信する。送信部103は、ユーザPC30に対し、識別情報に相当する第1ソルトと、変換情報に相当する第2ソルトと、を送信する。送信部103は、ユーザPC30からのソルト要求に基づいて、第1ソルト及び第2ソルトを送信する。
【0056】
なお、
図3では、1つの送信部103だけを示しているが、ユーザPC30に対するソルトの送信と、認証サーバ20に対するソルトの送信と、を別々の機能として捉えることもできる。このため、送信部103が、ユーザPC30からのソルト要求が受け付けられた場合に、ユーザPC30に対し、ソルトを送信する第1送信部103Aと、認証サーバ20からのソルト要求が受け付けられた場合に、認証サーバ20に対し、ソルトを送信する第2送信部103Bと、を含むと捉えることもできる。ユーザPC30に対するソルトの送信手順と、認証サーバ20に対するソルトの送信手順と、が異なる場合には、第1送信部103Aは、ユーザPC30に対するソルトの送信手順に沿って、ユーザPC30に対し、ソルトを送信すればよい。第2送信部103Bは、認証サーバ20に対するソルトの送信手順に沿って、認証サーバ20に対し、ソルトを送信すればよい。
【0057】
[第1削除部]
第1削除部104は、複数のソルトが生成された後に、所定の削除時点が訪れた場合に、複数のソルトを削除する。削除時点は、複数のソルトを削除すべき時点である。削除時点は、ソルトが生成された生成時点から一定時間だけ後の時点である。生成時点から削除時点までの期間の長さは、任意の長さであってよく、例えば、1秒以内、1秒~10秒程度、又はそれ以上であってもよい。削除されたソルトは無効になるので、削除時点は、ソルトを無効にする時点をいうこともできる。
【0058】
図4では省略しているが、ソルトデータベースDB1には、第1ソルト及び第2ソルトの削除時点が格納されるものとする。第1削除部104は、リアルタイムクロック又はGPS信号等を利用して現在日時を取得し、削除時点が訪れたか否かを判定する。第1削除部104は、削除時点が訪れたと判定された第1ソルト及び第2ソルトを、ソルトデータベースDB1から削除する。
【0059】
なお、ソルトデータベースDB1には、第1ソルト及び第2ソルトの削除時点ではなく、第1ソルト及び第2ソルトの生成時点が格納されてもよい。この場合、第1削除部104は、生成時点から一定時間後の削除時点を計算し、当該計算された削除時点が訪れたか否かを判定すればよい。また、生成時点から削除時点までの期間の長さは、全ての第1ソルト及び第2ソルトで共通とするのではなく、ユーザ又は時間帯等の何らかの条件に応じて設定されてもよい。
【0060】
[第2削除部]
第2削除部105は、認証サーバ20からの要求に基づいて、複数のソルトを削除する。例えば、第2削除部105は、認証サーバ20からのソルト要求が受け付けられて、認証サーバ20に対して第2ソルトが送信された場合に、第1ソルト及び第2ソルトを削除する。即ち、第2削除部105は、第1ソルト及び第2ソルトの削除時点が訪れる前であったとしても、第2ソルトが認証サーバ20に送信されて、第1ソルト及び第2ソルトが必要無くなった場合に、ソルトデータベースDB1から第1ソルト及び第2ソルトを削除する。
【0061】
[1-3-2.認証サーバにおいて実現される機能]
認証サーバ20は、複数のソルトに基づいて、変換データの一例である変換後のTUIDを逆変換して、元データの一例であるTUIDを取得する。第1実施形態では、認証サーバ20は、変換後のTUIDを逆変換してTUIDを取得し、当該取得されたTUIDに基づいて、ユーザに関する認証処理を実行する。データ記憶部200は、記憶部22を主として実現される。受信部201、ソルト要求部202、ソルト取得部203、逆変換部204、処理実行部205、TUID生成部206、及び送信部207が実現される。
【0062】
[データ記憶部]
データ記憶部200は、ユーザPC30との通信に必要なデータを記憶する。第1実施形態では、通信システムSにおいて多要素認証が実行されるので、データ記憶部200は、多要素認証に必要なデータを記憶する。例えば、データ記憶部200は、ユーザデータベースDB2を記憶する。
【0063】
図5は、ユーザデータベースDB2の一例を示す図である。ユーザデータベースDB2は、ユーザに関する情報が格納されたデータベースである。例えば、ユーザデータベースDB2には、ユーザID、パスワード、氏名、TUID、顔写真、及び顔の特徴量が格納される。ユーザデータベースDB2に格納される情報は、任意の種類であってよく、
図5の例に限られない。例えば、ユーザPC30とのセッションを維持するためのセッションID、ユーザによる過去のログイン履歴、又はユーザによるオンラインサービスの利用履歴がユーザデータベースDB2に格納されてもよい。
【0064】
顔写真は、生体データ(生体情報)の一例である。TUIDは、生体データとは異なる認証データ(認証情報)の一例である。このため、顔写真について説明している箇所は、生体データと読み替えることができる。TUIDについて説明している箇所は、生体データとは異なる認証データと読み替えることができる。生体データと、生体データとは異なる認証データと、の組み合わせは、任意の組み合わせであってよい。この組み合わせは、多要素認証における要素の組み合わせである。
【0065】
生体データは、生体認証で利用されるデータである。生体データ自体は、種々のデータであってよく、例えば、顔の特徴量が生体データに相当してもよい。顔の特徴量が変換されたテンプレートと呼ばれる情報が生体データに相当してもよい。顔認証以外の生体認証が利用される場合には、生体認証に応じた生体データが利用されるようにすればよい。他の生体データの例は、先述した通りである。生体データとは異なる認証データは、生体データとともに多要素認証で利用される情報である。この認証データは、所持情報又は知識情報である。3要素以上の多要素認証であれば、生体データとは異なる認証データは、複数存在してもよい。
【0066】
なお、データ記憶部200は、ユーザデータベースDB2以外の他の任意のデータを記憶可能である。例えば、データ記憶部200は、逆変換関数f-1を記憶してもよい。例えば、データ記憶部200は、TUIDを生成するアルゴリズムを記憶してもよい。
【0067】
[受信部]
受信部201は、ユーザPC30から、第1ソルトと、変換後のTUIDと、を受信する。変換後のTUIDは、変換データの一例である。このため、変換後のTUIDについて説明している箇所は、変換データと読み替えることができる。変換データは、元データの一例であるTUIDに対して変換が行われたデータである。元データは、変換の対象となるデータである。元データは、変換前のデータである。元データは、暗号理論における平文に相当する。第1実施形態では、元データは、ユーザPC30のユーザに関する認証データである。元データは、変換前のデータなので、生データと呼ばれることもある。
【0068】
第1実施形態では、受信部201は、ユーザPC30から、変換後のTUIDと、顔写真と、を受信する。顔写真を受信するとは、顔が撮影された画像の画像データを受信することである。顔写真は、静止画であってもよいし、動画に含まれる個々のフレームであってもよい。第1実施形態では、変換後のTUIDと、顔写真と、が認証要求に含まれる場合を例に挙げる。このため、受信部201は、ユーザPC30から認証要求を受信することによって、変換後のTUIDと、顔写真と、を受信する。認証要求は、多要素認証を実行するための要求である。認証要求は、所定の形式の情報が送信されることにより行われるようにすればよい。認証要求は、他の情報が含まれてもよい。例えば、認証要求には、ユーザPC30のIPアドレスといったように、ユーザPC30を識別可能な情報が含まれてもよい。
【0069】
[ソルト要求部]
ソルト要求部202は、複数のソルトのうちの一部のソルトに基づいて、ソルトサーバ10に対し、残りのソルトを要求する。一部のソルトは、認証サーバ20がユーザPC30から受信したソルトである。残りのソルトは、認証サーバ20がユーザPC30から受信しなかったソルトである。例えば、ソルト要求部202は、第1ソルトに基づいて、ソルトサーバ10に対し、第2ソルトを要求する。ソルト要求部202は、ソルトサーバ10に対し、第1ソルトを含むソルト要求を送信することによって、第2ソルトを要求する。このソルト要求は、第1ソルトに関連付けられた第2ソルトを要求するための要求である。
【0070】
[ソルト取得部]
ソルト取得部203は、複数のソルトのうちの一部のソルトに基づいて、残りのソルトを取得する。一部のソルトは、残りのソルトの取得に利用されるソルトである。残りのソルトは、逆変換情報として利用されるソルトである。例えば、ソルト取得部203は、第1ソルトに基づいて、第2ソルトを取得する。ソルト取得部203は、逆変換情報取得部の一例である。このため、ソルト取得部203について説明している箇所は、逆変換情報取得部と読み替えることができる。逆変換情報取得部は、ソルトを一例とする逆変換情報を取得する。逆変換情報がソルト以外の名前で呼ばれる場合には、逆変換情報取得部は、この名前に応じた名前で呼ばれてよい。例えば、逆変換情報が鍵又はパスワードと呼ばれる場合には、逆変換情報取得部は、鍵又はパスワードを取得する。
【0071】
第1実施形態では、ソルトサーバ10が第1ソルト及び第2ソルトを管理するので、ソルト取得部203は、ソルトサーバ10から、第1ソルトに関連付けられた第2ソルトを取得する。第1ソルト及び第2ソルトは、認証サーバ20自身が管理してもよい。この場合、データ記憶部200は、ソルトデータベースDB1を記憶する。更に、この場合、ソルトサーバ10で実現されるものとして説明したソルト生成部101、受信部102、送信部103、第1削除部104、及び第2削除部105は、認証サーバ20により実現される。
【0072】
[逆変換部]
逆変換部204は、ソルト取得部203により取得された残りのソルトに基づいて、変換データの一例である変換後のTUIDを逆変換して、元データ及び認証データの一例であるTUIDを取得する。例えば、逆変換部204は、第2ソルトに基づいて、変換後のTUIDを逆変換して、TUIDを取得する。逆変換部204は、変換部303の変換に応じた逆変換を実行する。逆変換は、暗号理論における復号化である。逆変換のための逆変換関数f
-1は、データ記憶部200に記憶されているものとする。逆変換部204は、逆変換情報の一例である第2ソルトに基づいて、変換後のTUIDを逆変換関数f
-1で逆変換する。
図2の例であれば、逆変換部204は、変換後のTUIDから第2ソルトを減算することによって、変換後のTUIDを逆変換してTUIDを取得する。
【0073】
なお、逆変換自体は、種々の逆変換関数f
-1を利用可能であり、
図2のような減算に限られない。例えば、加算、乗算、除算、行列変換、その他の計算、又はこれらの組み合わせにより、逆変換が行われてもよい。
図2の例では、説明の簡略化のために、変換関数f及び逆変換関数f
-1がそれぞれ単純な加算及び減算である場合を示しているが、実際には、ある程度複雑な計算式であるものとする。更に、逆変換は、暗号理論における復号化に限られず、圧縮されたファイルの解凍であってもよい。解凍が逆変換に相当する場合、圧縮が変換に相当する。圧縮は、ファイルに対して何らかの変換が行われるので、第1実施形態における変換に相当する。解凍は、圧縮済みのファイルを元の状態に戻す処理なので、第1実施形態における逆変換に相当する。
【0074】
[処理実行部]
処理実行部205は、逆変換により取得された認証データに基づいて、ユーザに関する認証処理を実行する。第1実施形態では、認証処理の一例として多要素認証を説明するが、認証処理は、1要素認証であってもよい。例えば、顔認証が利用されずに、TUIDの認証のみが実行されてもよい。処理実行部205は、通信システムSを適用する場面に応じた処理を実行すればよく、処理実行部205が実行する処理は、認証処理に限られない。他の場面に通信システムSを適用した場合の処理は、後述の変形例で説明する。処理実行部205は、逆変換部204により取得された元データに基づいて、所定の処理を実行すればよい。
【0075】
例えば、処理実行部205は、逆変換部204により逆変換されたTUIDと、受信部201が受信した顔写真と、に基づいて、多要素認証を実行する。先述したように、多要素認証自体は、種々の種類を利用可能である。第1実施形態では、処理実行部205は、ユーザデータベースDB2を参照し、逆変換部204により逆変換されたTUIDに関連付けられた顔の特徴量を取得する。この顔の特徴量は、多要素認証における正解となる認証データである。ユーザデータベースDB2に格納された顔の特徴量のうち、逆変換部204により逆変換されたTUIDに関連付けられた顔の特徴量だけが比較対象となる。他の顔の特徴量は、比較対象にならない。
【0076】
処理実行部205は、受信部201が受信した顔写真に基づいて、顔の特徴量を計算する。顔の特徴量の計算方法自体は、種々の計算方法を利用可能である。例えば、コントラストフィルタ又は主成分分析を利用した計算方法により、顔の特徴量が計算されてもよい。顔の特徴量は、多次元ベクトル、配列、又は単一の数値といった任意の形式で表現可能である。顔認証は、顔の特徴量同士を比較するものではなく、2枚の顔写真を機械学習モデルに入力して類否を判定するタイプのものであってもよい。
【0077】
処理実行部205は、ユーザデータベースDB2から取得した顔の特徴量と、受信部201が受信した顔写真から計算した顔の特徴量と、の類否を判定する。例えば、顔の特徴量が多次元ベクトルで表現される場合、ベクトル空間上における顔の特徴量の距離が閾値未満であることは、特徴量が類似することに相当する。処理実行部205は、顔の特徴量が互いに類似する場合、多要素認証が成功したと判定する。処理実行部205は、顔の特徴量が互いに類似しない場合、多要素認証が失敗したと判定する。
【0078】
[TUID生成部]
TUID生成部206は、所定のアルゴリズムに基づいて、TUIDを生成する。TUID生成部206は、ユーザPC30にTUIDが存在しない場合に、ユーザPC30に新たに記録するTUIDを生成する。TUID生成部206は、ユーザPC30にTUIDが存在する状態で、このTUIDに代えてユーザPC30に書き込むTUID(更新後のTUID)を生成する。
【0079】
例えば、TUID生成部206は、ランダムな値になるように、TUIDを生成する。ランダムな値を生成する方法自体は、公知の種々の方法を利用可能である。例えば、TUID生成時のタイムスタンプを利用する方法であってもよいし、タイムスタンプ以外の他のデータを利用する方法であってもよい。TUID生成部206は、ユーザデータベースDB2に、生成したTUIDを格納する。
【0080】
TUID生成部206は、他のユーザのTUIDと重複しないように、TUIDを生成してもよい。TUID生成部206は、顔が似ていない他のユーザのTUIDとの重複は許可するが、顔が似た他のユーザのTUIDと重複しないように、TUIDを生成してもよい。TUID生成部206は、多要素認証が成功した場合に、TUIDを生成してもよい。即ち、TUID生成部206は、ユーザがオンラインサービスにログインするたびに、TUIDを生成してもよい。1回目のログインであれば、TUID生成部206は、ユーザID及びパスワードの認証が成功した場合に、TUIDを生成する。
【0081】
なお、TUIDが生成されるタイミングは、任意のタイミングであってよく、第1実施形態の例に限られない。例えば、1回のログインだけでTUIDが無効になるのではなくい、2回以上の所定回数だけ同じTUIDを有効にする場合には、TUID生成部206は、当該所定回数のログインが発生するたびに、TUIDを生成してもよい。例えば、TUIDに有効期限を設ける場合には、TUID生成部206は、有効期限が近づいた時にユーザがログインした場合に、TUIDを生成してもよい。
【0082】
[送信部]
送信部207は、ユーザPC30に対し、多要素認証の認証結果を送信する。認証結果は、多要素認証が成功したか否かを示す所定の形式の情報である。例えば、認証結果は、ログインが許可されたか否かが示される。第1実施形態では、ログインのタイミングで新たなTUIDが生成されるので、認証結果には、新たなTUIDが含まれる。
【0083】
なお、多要素認証が成功すると、所定の処理の実行が許可される。第1実施形態では、この処理の一例として、オンラインサービスへのログインを説明するが、この処理は、多要素認証が成功したことを条件として許可される処理であればよい。この処理は、通信システムSを適用する場面に応じて定めればよい。例えば、金融サービスに通信システムSを適用する場合には、振込の実行が所定の処理に相当してもよい。例えば、決済サービスに通信システムSを適用する場合には、決済の実行が所定の処理に相当してもよい。例えば、電子商取引サービスに通信システムSを適用する場合には、商品の購入が所定の処理に相当してもよい。所定の処理は、他の任意の処理であってよい。
【0084】
[1-3-3.ユーザPCにおいて実現される機能]
ユーザPC30は、複数のソルトに基づいて、元データの一例であるTUIDを変換して、認証サーバ20に変換データの一例である変換後のTUIDを送信する。データ記憶部300は、記憶部32を主として実現される。ソルト要求部301、ソルト取得部302、変換部303、送信部304、及び受信部305は、制御部31を主として実現される。
【0085】
[データ記憶部]
データ記憶部300は、多要素認証に必要なデータを記憶する。例えば、データ記憶部300は、TUID及び変換関数fを記憶する。ユーザの顔写真を生成するために撮影部36を利用しない場合には、データ記憶部300は、ユーザの顔写真の画像データを記憶してもよい。例えば、オンラインサービス用のアプリケーションが用意されている場合には、データ記憶部300は、このアプリケーションを記憶してもよい。
【0086】
[ソルト要求部]
ソルト要求部301は、ソルトサーバ10に対し、複数のソルトを要求する。例えば、ソルト要求部301は、ソルトサーバ10に対し、第1ソルト及び第2ソルトを要求する。ソルト要求部301は、ソルトサーバ10に対し、ソルト要求を送信することによって、ソルトを要求する。第1実施形態では、ソルト要求部301は、ソルトサーバ10に対し、第1ソルト及び第2ソルトの取得ルールに関する情報を含まないソルト要求を送信する。例えば、タイムスタンプに基づいて生成された第1ソルト及び第2ソルトが取得される場合、取得ルールは、タイムスタンプとなる。ソルト要求には、タイムスタンプの情報は含まれないので、取得ルールに関する情報が含まれない。
【0087】
なお、ソルト要求には、第1ソルト及び第2ソルトの取得ルールが含まれてもよい。例えば、第1ソルト及び第2ソルトを生成するための種となる情報がソルト要求に含まれてもよい。
【0088】
第1実施形態では、ソルト要求部301は、撮影部36により顔写真が生成された場合に、ソルトサーバ10に対し、ソルト要求を送信する。ソルト要求部301は、任意のタイミングでソルト要求を送信すればよく、顔写真が生成されたタイミングに限られない。例えば、ソルト要求部301は、オンラインサービス用のアプリケーションが起動したタイミング、ユーザがログインをするための操作をしたタイミング、又はオンラインサービスのウェブサイトへのアクセスが発生したタイミングで、ソルト要求を送信してもよい。
【0089】
[ソルト取得部]
ソルト取得部302は、複数のソルトを取得する。例えば、ソルト取得部302は、第1ソルト及び第2ソルトを取得する。ソルト取得部302は、ソルトデータベースDB1において、互いに関連付けられた第1ソルト及び第2ソルトを取得する。ソルト取得部302は、変換情報取得部の一例である。このため、ソルト取得部302について説明している箇所は、変換情報取得部と読み替えることができる。変換情報取得部は、ソルトを一例とする変換情報を取得する。変換情報がソルト以外の名前で呼ばれる場合には、変換情報取得部は、この名前に応じた名前で呼ばれてよい。例えば、変換情報が鍵又はパスワードと呼ばれる場合には、変換情報取得部は、鍵又はパスワードを取得する。
【0090】
[変換部]
変換部303は、複数のソルトのうちの一部に基づいて、元データ及び認証データの一例であるTUIDを変換する。例えば、変換部303は、第2ソルトに基づいて、TUIDを変換して、変換後のTUIDを生成する。変換は、暗号理論における暗号化である。変換は、TUIDに対して何らかの変更がなされるものであればよい。例えば、TUIDを何らかの関数に入力すること、TUIDの一部を変更すること、TUIDの全部を変更すること、TUIDに対して何らかの情報を付加すること、又はTUIDの一部を削除することが変換に相当する。逆変換は、これらの逆方向の処理(TUIDを元に戻す処理)であればよい。先述したように、ファイルの圧縮が変換に相当し、ファイルの解凍が逆変換に相当してもよい。この場合、第2ソルトをパスワードとして利用し、圧縮又は解凍が実行される。
【0091】
変換のための変換関数fは、データ記憶部300に記憶されているものとする。変換部303は、変換情報の一例であるソルトに基づいて、変換前のTUIDを変換関数fで変換する。
図2の例であれば、変換部303は、変換前のTUIDに第2ソルトを加算することによって、変換前のTUIDを変換し、変換後のTUIDを取得する。変換自体は、種々の変換関数を利用可能であり、
図2のような加算に限られない。例えば、減算、乗算、除算、行列変換、その他の計算、又はこれらの組み合わせにより、変換が行われてもよい。
【0092】
[送信部]
送信部304は、認証サーバ20に対し、複数のソルトのうちの一部と、変換後のTUIDと、を送信する。送信部304は、認証サーバ20に対し、第1ソルト及び変換後のTUIDを送信する。例えば、送信部304は、認証サーバ20に対し、第1ソルト、変換後のTUID、及び顔写真を送信する。第1実施形態では、第1ソルト、変換後のTUID、及び顔写真が認証要求に含まれる場合を例に挙げる。このため、送信部304は、認証サーバ20に対し、第1ソルト、変換後のTUID、及び顔写真を含む認証要求を送信する場合を説明するが、送信部304は、第1ソルト、変換後のTUID、及び顔写真を1つのデータにまとめて送信しなくてもよい。送信部304は、第1ソルト、変換後のTUID、及び顔写真を別々に送信してもよい。なお、顔写真もそのまま送信されるのではなく、ソルト又は他の暗号鍵に基づいて変換されてもよい。ユーザPC30側で顔の特徴量が計算されて、当該計算された顔の特徴量が生体データとして送信されてもよい。
【0093】
[受信部]
受信部305は、認証サーバ20から、認証結果を受信する。この認証結果が成功を示す場合、ユーザがオンラインサービスにログインする。即ち、先述した所定の処理の実行が許可される。新たなTUIDが認証結果に含まれている場合、受信部305は、認証結果に含まれるTUIDをデータ記憶部300に記録する。それまでに記録されていた古いTUIDは、データ記憶部300から破棄される。
【0094】
[1-4.第1実施形態の通信システムで実行される処理]
図6及び
図7は、第1実施形態の通信システムSで実行される処理の一例を示す図である。制御部11,21,31がそれぞれ記憶部12,22,32に記憶されたプログラムを実行することによって、
図6及び
図7の処理が実行される。
図6及び
図7の処理が実行されるにあたり、ユーザのユーザID及びパスワードが発行済みであるものとする。
【0095】
図6のように、ユーザPC30は、オンラインサービスのアプリケーションを起動させ、記憶部32にTUIDがあるか否かを判定する(S1)。TUIDがないと判定された場合(S1;N)、ユーザPC30は、操作部34の検出信号に基づいて、ユーザによるユーザID及びパスワードの入力を受け付ける(S2)。認証サーバ20及びユーザPC30の間で、オンラインサービスにログインするためのログイン処理が実行される(S3)。S3では、ユーザデータベースDB2に基づいて、ユーザID及びパスワードの正当性が確認される。ログインが成功すると、認証サーバ20は、新たなTUIDを発行し(S4)、ユーザPC30に対し、新たなTUIDを含む認証結果を送信する(S5)。
【0096】
ユーザPC30は、認証結果を受信すると(S6)、認証結果に含まれるTUIDを記憶部32に記録し(S7)、本処理は終了する。S7において、TUIDは、cookieの一部として記録されてもよい。その後、ユーザPC30は、ユーザにオンラインサービスを利用させるための処理を実行する。ユーザがオンラインサービスからログアウトするための操作をすると、認証サーバ20及びユーザPC30の間で、オンラインサービスからログアウトするためのログアウト処理が実行される。
【0097】
S1において、TUIDがあると判定された場合(S1;Y)、ユーザPC30は、撮影部36に基づいて、ユーザの顔を撮影して顔写真を生成する(S8)。ユーザPC30は、ソルトサーバ10に対し、ソルト要求を送信する(S9)。ソルトサーバ10は、ソルト要求を受信すると(S10)、第1ソルト及び第2ソルトを生成してソルトデータベースDB1に格納し、ユーザPC30に対し、当該第1ソルト及び第2ソルトを送信する(S11)。ユーザPC30は、ソルトサーバ10から第1ソルト及び第2ソルトを受信すると(S12)、第2ソルトに基づいて、記憶部32に記憶されたTUIDを変換する(S13)。
【0098】
図7に移り、ユーザPC30は、認証サーバ20に対し、S12で受信した第1ソルト、S13における変換後のTUID、及びS8で生成した顔写真を含む認証要求を送信する(S14)。認証サーバ20は、認証要求を受信すると(S15)、ソルトサーバ10に対し、第1ソルトを含むソルト要求を送信する(S16)。ソルトサーバ10は、ソルト要求を受信すると(S17)、ソルトデータベースDB1に基づいて、認証サーバ20に対し、第1ソルトに関連付けられた第2ソルトを送信する(S18)。
【0099】
認証サーバ20は、ソルトサーバ10から第2ソルトを受信すると(S19)、この第2ソルトに基づいて、S15で受信した認証要求に含まれる変換後のTUIDを逆変換する(S20)。認証サーバ20は、S20で逆変換されたTUIDと、S15で受信した認証要求に含まれる顔写真と、に基づいて、多要素認証を実行する(S21)。S21では、認証サーバ20は、ユーザデータベースDB2に基づいて、S20で逆変換されたTUIDに関連付けられた顔の特徴量を取得する。認証サーバ20は、S15で受信した顔写真に基づいて、顔の特徴量を計算する。認証サーバ20は、当該取得された顔の特徴量の類似度が閾値以上であるか否かを判定する。TUIDがユーザデータベースDB2に存在し、顔の特徴量の類似度が閾値以上である場合に、多要素認証が成功する。
【0100】
認証サーバ20は、多要素認証が成功したか否かを判定する(S22)。多要素認証が失敗した場合(S22;N)、本処理は終了する。この場合、ユーザID及びパスワードの入力が要求されてもよい。多要素認証が成功した場合(S22;Y)、オンラインサービスへのユーザのログインが許可され、S4の処理に移行する。S4以降の処理により、ユーザPC30のTUIDが更新される。
【0101】
第1実施形態の通信システムSによれば、ユーザPC30は、複数のソルトに基づいて、TUIDを変換して認証サーバ20に変換後のTUIDを送信する。認証サーバ20は、複数のソルトに基づいて、変換後のTUIDを逆変換してTUIDを取得する。これにより、変換後のTUIDがネットワーク上に送信され、第三者がTUIDを取得しにくくなるので、通信におけるセキュリティが高まる。悪意のある第三者が、認証サーバ20からソルトサーバ10へのソルト要求を盗んだとしても、第1ソルトだけでは、変換の仕組みを把握するのが難しいので、通信におけるセキュリティがより高まる。更に、ユーザPC30からソルトサーバ10へのソルト要求に基づいて第1ソルト及び第2ソルトが生成されるので、第三者が何らかの形で第1ソルト及び第2ソルトを盗んだとしても、その時点では第1ソルト及び第2ソルトが無効になっている可能性が高く、第三者による不正を防止できる。
【0102】
また、ユーザPC30は、認証サーバ20に対し、第1ソルトと、第2ソルトに基づいて変換した変換後のTUIDを送信する。認証サーバ20は、第1ソルトに基づいて、第2ソルトを取得し、当該取得された第2ソルトに基づいて、変換後のTUIDを逆変換してTUIDを取得する。これにより、2つのソルトのペアを利用して通信におけるセキュリティが高まる。変換情報及び逆変換情報の両方として第2ソルトを利用することで、より少ないソルトによってセキュリティを担保できる。このため、通信のセキュリティを高めるための処理を簡略化し、通信システムS全体の処理負荷を軽減できる。
【0103】
また、ソルトサーバ10は、ユーザPC30からのソルト要求に基づいて、第1ソルト及び第2ソルトを生成する。ソルトサーバ10は、認証サーバ20からのソルト要求に基づいて、認証サーバ20に対し、第2ソルトを送信する。これにより、認証サーバ20が第1ソルト及び第2ソルトを管理しなくてすむので、通信における処理負荷を分散させることができる。即ち、ソルトサーバ10及び認証サーバ20で処理を分散することができる。このため、認証サーバ20の処理負荷を軽減できる。
【0104】
また、ユーザPC30は、ソルトサーバ10に対し、第1ソルト及び第2ソルトの取得ルールに関する情報を含まないソルト要求を送信する。これにより、悪意のある第三者がソルト要求を盗んだとしても、TUIDの変換の仕組みを解読されにくくなる。例えば、タイムスタンプに応じた第1ソルト及び第2ソルトが取得されていたとしても、ソルト要求だけでは、この取得ルールを把握することができないので、通信におけるセキュリティがより高まる。
【0105】
また、ソルトサーバ10は、複数のソルトが生成された後に、所定の削除時点が訪れた場合に、複数のソルトを削除する。これにより、不要になったソルトがソルトデータベースDB1から削除され、ソルトが流出することを確実に防止できるので、通信のセキュリティがより高まる。ソルトデータベースDB1のメモリ消費量を抑えることもできる。
【0106】
また、ソルトサーバ10は、認証サーバ20からの要求に基づいて、複数のソルトを削除する。これにより、不要になったソルトがソルトデータベースDB1から削除され、ソルトが流出することを確実に防止できるので、通信のセキュリティがより高まる。ソルトデータベースDB1のメモリ消費量を抑えることもできる。
【0107】
また、認証サーバ20は、変換後のTUIDを逆変換してTUIDを取得し、当該取得されたTUIDに基づいて、ユーザに関する認証処理を実行し、認証処理が成功した場合に、新たなTUIDを生成する。これにより、認証時のセキュリティが高まる。例えば、ユーザがログインするたびにTUIDが変わるので、第三者が先述したクロスサイトスクリプティング攻撃等をしたとしても認証を成功させることができないので、なりすましを防止できる。
【0108】
[2.第2実施形態]
第1実施形態では、ソルトの取得方法を工夫することによって、通信におけるセキュリティを高める場合について説明した。通信におけるセキュリティを高める方法は、第1実施形態の例に限られない。第2実施形態では、第1ソルトに応じて変換関数fを使い分けることによって、通信におけるセキュリティを高めるようにしている。以降の第2実施形態及び第3実施形態では、第1実施形態と同様の点については説明を省略する。
【0109】
図8は、第2実施形態における多要素認証の流れの一例を示す図である。第2実施形態では、大まかな流れは、第1実施形態と同様であってよい。
図8の例では、第1ソルト及び第2ソルトの取得方法は、第1実施形態と同様である。ユーザPC30は、第1実施形態の
図2の例と同様にして、ソルトサーバ10から、第1ソルト「6437」及び第2ソルト「8414」を取得する。
【0110】
第2実施形態では、ユーザPC30は、第1ソルト「6437」の下1桁に基づいて、変換関数fを使い分ける。例えば、ユーザPC30は、下1桁「0」~「9」にそれぞれ対応する変換関数f0~f9を記憶する。以降、変換関数f0~f9を区別しない時は、単に変換関数fと記載する。個々の変換関数fが示す計算方法は、互いに異なるものとする。このため、同じソルトだったとしても変換関数fが異なれば、変換後のTUIDの値も異なる。
【0111】
図8の例では、第1ソルト「6437」の下1桁「7」に対応する変換関数f7が選択される。この変換関数f7は、第1実施形態の
図2で説明した変換関数fと同様であるものとする。変換関数f7が選択された後のユーザPC30の処理は、第1実施形態と同様である。認証サーバ20は、第1ソルト「6437」及び変換済みのTUID「320870」を受信すると、第1実施形態と同様にして、ソルトサーバ10から第1ソルト「6437」を取得する。
【0112】
第2実施形態では、認証サーバ20は、第1ソルト「6437」の下1桁「7」に基づいて、逆変換関数f-1を使い分ける。例えば、認証サーバ20は、下1桁「0」~「9」にそれぞれ対応する逆変換関数f-10~f-19を記憶する。以降、逆変換関数f-10~f-19を区別しない時は、単に逆変換関数f-1と記載する。個々の逆変換関数f-1が示す計算方法は、互いに異なる。このため、同じ第2ソルト「8414」だったとしても逆変換関数f-1が異なれば、逆変換後のTUIDの値も異なる。
【0113】
図8の例では、第1ソルト「6437」の下1桁「7」に対応する逆変換関数f
-17が選択される。この逆変換関数f
-17は、第1実施形態の
図2で説明した逆変換関数f
-1と同様であるものとする。逆変換関数f
-17が選択された後の認証サーバ20の処理を含む多要素認証の流れは、第1実施形態と同様である。
【0114】
図9は、第2実施形態の通信システムSで実現される機能ブロックの一例を示す図である。
図9のように、第2実施形態では、逆変換関数選択部208及び変換関数選択部306が実現される。逆変換関数選択部208は、制御部21を主として実現される。変換関数選択部306は、制御部31を主として実現される。第2実施形態では、第1ソルトは、第2ソルトを取得するための識別情報でもあるが、TUIDの変換方法及び逆変換方法を選択するための情報でもある。
【0115】
変換関数選択部306は、第1ソルトに基づいて、複数の変換関数fのうちの何れかを選択する。変換関数fは、変換方法の一例である。このため、変換関数fについて説明している箇所は、変換方法と読み替えることができる。変換方法は、TUIDを変換する方法である。変換方法は、TUIDをどのように変換するかを定義したものであればよく、変換関数fに限られない。例えば、変換方法は、関数とは呼ばれない計算式、又は、暗号化アルゴリズムであってもよい。他にも例えば、変換方法は、ファイル圧縮のアルゴリズムであってもよい。
【0116】
変換関数選択部306は、第1ソルトに関する所定の選択方法に基づいて、複数の変換関数fのうちの何れかを選択すればよい。この選択方法は、変換関数fの選択方法である。この選択方法は、第1ソルトが条件になる方法である。第1ソルトの値が変わると、選択される変換関数fも変わり得る。例えば、変換関数選択部306は、第1ソルトの一部に基づいて、複数の変換関数fのうちの何れかを選択する。変換関数選択部306は、第1ソルトの全部に基づいて、変換関数fを選択してもよい。
【0117】
第2実施形態では、選択方法の一例として第1ソルトの下1桁の値を利用する場合を説明する。変換関数選択部306は、第1ソルトの下1桁に応じた変換関数fを選択する。第1ソルトの下1桁及び変換関数fの関係は、予めデータ記憶部300に定義されているものとする。変換関数選択部306は、第1ソルトの下1桁に対応する変換関数fを選択する。第2実施形態では、第1ソルトの下1桁が取り得る数値「0」~「9」と、変換関数「f0」~「f9」に含まれる数値と、が互いに対応している。
【0118】
第2実施形態では、変換関数選択部306は、他の装置に変換関数fの選択を要求することなく、第1ソルトに基づいて、複数の変換関数fのうちの何れかを選択する。他の装置は、ユーザPC30以外の装置である。例えば、他の装置は、ソルトサーバ10、認証サーバ20、又は他のサーバコンピュータである。変換関数選択部306は、第1ソルトが取得された後は、ユーザPC30内の処理だけで、変換関数fの選択を完了させる。後述の第3実施形態では、第2実施形態とは異なり、他の装置による変換関数fの選択が発生する。
【0119】
変換部303は、変換関数選択部306により選択された変換関数fに基づいて、変換後のTUIDを生成する。変換関数選択部306により選択された変換関数fが利用される点で、第1実施形態とは異なるが、他の点については同様である。
【0120】
逆変換関数選択部208は、第1ソルトに基づいて、複数の逆変換関数f-1のうちの何れかを選択する。逆変換関数f-1は、逆変換方法の一例である。このため、逆変換関数f-1について説明している箇所は、逆変換方法と読み替えることができる。逆変換方法は、変換後のTUIDを逆変換する方法である。逆変換方法は、変換後のTUIDをどのように逆変換するかを定義したものであればよく、逆変換関数f-1に限られない。例えば、逆変換方法は、関数とは呼ばれない計算式、又は、復号化アルゴリズムであってもよい。他にも例えば、逆変換方法は、ファイル解凍のアルゴリズムであってもよい。
【0121】
逆変換関数選択部208は、第1ソルトに関する所定の選択方法に基づいて、複数の逆変換関数f-1のうちの何れかを選択する。この選択方法は、逆変換関数f-1の選択方法である。この選択方法は、第1ソルトが条件になる方法である。第1ソルトの値が変わると、選択される逆変換関数f-1も変わり得る。例えば、逆変換関数選択部208は、第1ソルトの一部に基づいて、複数の逆変換関数f-1のうちの何れかを選択する。逆変換関数選択部208は、第1ソルトの全部に基づいて、逆変換関数f-1を選択してもよい。
【0122】
第2実施形態では、逆変換関数f-1の選択方法の一例として第1ソルトの下1桁を利用する場合を説明する。逆変換関数選択部208は、第1ソルトの下1桁に応じた逆変換関数f-1を選択する。第1ソルトの下1桁及び逆変換関数f-1の関係は、予めデータ記憶部200に定義されているものとする。逆変換関数選択部208は、逆変換関数選択部208は、第1ソルトの下1桁に対応する逆変換関数f-1を選択する。例えば、逆変換関数選択部208は、変換関数選択部306により選択された変換関数fに対応する逆変換関数f-1として、第1ソルトの下1桁に応じた逆変換関数f-1を選択する。
【0123】
第2実施形態では、逆変換関数選択部208は、他の装置に逆変換関数f-1の選択を要求することなく、第1ソルトに基づいて、複数の逆変換関数f-1のうちの何れかを選択する。逆変換関数選択部208は、第1ソルトが取得された後は、認証サーバ20内の処理だけで、逆変換関数f-1の選択を完了させる。後述の第3実施形態では、第2実施形態とは異なり、他の装置による逆変換関数f-1の選択が発生する。
【0124】
逆変換部204は、逆変換関数選択部208により選択された逆変換関数f-1に基づいて、TUIDを取得する。逆変換関数選択部208により選択された逆変換関数f-1が利用される点で、第1実施形態及び第2実施形態とは異なるが、他の点については同様である。
【0125】
第2実施形態の通信システムSによれば、ユーザPC30は、第1ソルトに基づいて、複数の変換関数fのうちの何れかを選択する。認証サーバ20は、第1ソルトに基づいて、複数の逆変換関数f-1のうちの何れかを選択する。これにより、変換関数fが動的に変わるので、第三者が変換の仕組みを把握しにくくなり、通信におけるセキュリティがより高まる。悪意のある第三者がソルト要求を盗んだとしても、第1ソルトでは、変換の仕組みを把握するのが難しいので、通信におけるセキュリティがより高まる。
【0126】
また、ユーザPC30は、他の装置に変換関数fの選択を要求することなく、第1ソルトに基づいて、複数の変換関数fのうちの何れかを選択する。認証サーバ20は、他の装置に逆変換関数f-1の選択を要求することなく、第1ソルトに基づいて、複数の逆変換関数f-1のうちの何れかを選択する。これにより、変換関数f及び逆変換関数f-1を選択するために、他の装置に対する要求が発生しないので、通信時の処理を簡易化できる。多要素認証の完了までに要する時間を短縮することもできる。
【0127】
また、ユーザPC30は、第1ソルトの一部に基づいて、複数の変換関数fのうちの何れかを選択する。認証サーバ20は、第1ソルトの一部に基づいて、複数の逆変換関数f-1のうちの何れかを選択する。これにより、第2ソルトを取得するためだけに第1ソルトを利用するのではなく、変換関数f及び逆変換関数f-1を選択するために第1ソルトを利用することができるので、第1ソルトをより有効活用できる。変換関数f及び逆変換関数f-1を選択するために、第1ソルト以外の他の情報を改めて用意する必要がないので、変換関数f及び逆変換関数f-1を選択する方法を簡易化できる。
【0128】
[3.第3実施形態]
第2実施形態では、認証サーバ20及びユーザPC30がそれぞれ逆変換関数f-1及び変換関数fを選択する場合を説明したが、逆変換関数f-1及び変換関数fは、第三者サーバにより選択されてもよい。
【0129】
図10は、第3実施形態における認証システムSの全体構成の一例を示す図である。
図10のように、第3実施形態の認証システムSは、選択サーバ40を含む。選択サーバ40は、サーバコンピュータである。制御部41、記憶部42、及び通信部43の物理的構成は、それぞれ制御部11、記憶部12、及び通信部13と同様であってよい。選択サーバ40は、選択装置の一例である。このため、選択サーバ40と記載した箇所は、選択装置と読み替えることができる。
【0130】
選択装置は、変換関数f及び逆変換関数f-1を選択する装置である。選択装置は、任意の装置であってよく、選択サーバ40のようなサーバコンピュータに限られない。例えば、選択装置は、パーソナルコンピュータ、タブレット端末、又はスマートフォンであってもよい。他にも例えば、選択装置は、ゲーム機、自動販売機、POS端末、又はATMといった他の装置であってもよい。
【0131】
図11は、第3実施形態における多要素認証の流れの一例を示す図である。第3実施形態では、大まかな流れは、第2実施形態と同様であってよい。ユーザPC30が第1ソルト及び第2ソルトを取得するまでの流れは、第2実施形態と同様である。ただし、
図11では、第1ソルトを「6430」とする。
【0132】
第3実施形態では、ユーザPC30は、選択サーバ40に対し、第1ソルト「6430」を送信する。選択サーバ40は、関数データベースDB3を記憶する。関数データベースDB3には、第1ソルトの下1桁、変換関数f、及び逆変換関数f
-1が関連付けられている。
図11の例では、fの後の数値が同じ逆変換関数f
-1が対応しているので、関数データベースDB3に変換関数fのみを示しているが、関数データベースには、変換関数f及び逆変換関数f
-1の両方が格納されていてもよい。関数データベースDB3における関連付けは、所定のタイミングで更新されるものとする。例えば、選択サーバ40は、定期的に、関数データベースDB3における関連付けをランダムに更新する。
【0133】
選択サーバ40は、ユーザPC30から受信した第1ソルト「6430」の下1桁「0」に基づいて、変換関数fを選択する。変換関数fを選択する主体が選択サーバ40になるが、変換関数fの選択方法自体は、第2実施形態と同様であってよい。選択サーバ40は、ユーザPC30に対し、変換関数fの選択結果「f7」を送信する。ユーザPC30は、変換関数fの選択結果「f7」を受信すると、TUID「312456」を変換する。この変換自体は、第2実施形態と同様であってよい。以降の流れは、認証サーバ20がソルトサーバ10から第2ソルト「8414」を取得するまでは、第2実施形態と同様である。
【0134】
認証サーバ20は、選択サーバ40に対し、第1ソルト「6430」を送信する。選択サーバ40は、認証サーバ20から受信した第1ソルト「6430」の下1桁「0」に基づいて、逆変換関数f-1を選択する。逆変換関数f-1を選択する主体が選択サーバ40になるが、逆変換関数f-1の選択方法自体は、第2実施形態と同様であってよい。選択サーバ40は、認証サーバ20に対し、逆変換関数f-1の選択結果「f-17」を送信する。認証サーバ20は、逆変換関数f-1の選択結果を受信すると、変換済みのTUID「320870」を逆変換する。この逆変換自体は、第2実施形態と同様であってよい。以降の多要素認証の流れは、第2実施形態と同様である。
【0135】
図12は、第3実施形態の認証システムSで実現される機能ブロックの一例を示す図である。
図12のように、第3実施形態では、逆変換関数要求部209、変換関数要求部307、データ記憶部400、変換関数選択部401、逆変換関数選択部402、及び更新部403が実現される。逆変換関数要求部209は、制御部21を主として実現される。変換関数要求部307は、制御部31を主として実現される。データ記憶部400は、記憶部42を主として実現される。変換関数選択部401、逆変換関数選択部402、及び更新部403は、制御部41を主として実現される。
【0136】
変換関数要求部307は、第1ソルトに基づいて、選択サーバ40に対し、変換関数fの選択を要求する。以降、この要求を変換関数選択要求という。変換関数選択要求は、所定の形式により行われるようにすればよい。変換関数選択要求は、選択サーバ40が変換関数fを選択するための基準となる情報を含んでもよいし、変換関数fを選択する旨のコマンドのみを含んでもよい。第3実施形態では、変換関数選択要求は、第1ソルトを含む場合を説明するが、変換関数選択要求は、第1ソルトの下1桁のみを含んでもよい。
【0137】
逆変換関数要求部209は、第1ソルトに基づいて、選択サーバ40に対し、逆変換関数f-1の選択を要求する。以降、この要求を逆変換関数選択要求という。逆変換関数選択要求は、所定の形式により行われるようにすればよい。逆変換関数選択要求は、選択サーバ40が逆変換関数f-1を選択するための基準となる情報を含んでもよいし、逆変換関数f-1を選択する旨のコマンドのみを含んでもよい。第3実施形態では、逆変換関数選択要求は、第1ソルトを含む場合を説明するが、逆変換関数選択要求は、第1ソルトの下1桁のみを含んでもよい。
【0138】
変換関数選択部401は、ユーザPC30からの変換関数選択要求に基づいて、複数の変換関数fのうちの何れかを選択する。第3実施形態では、第2実施形態と同様に、この選択方法が第1ソルトの下1桁の値である場合を説明するが、選択方法は、他の任意の方法であってよい。例えば、第1ソルトの上1桁の値であってもよいし、第2ソルトの値であってもよい。変換関数選択部401は、選択サーバ40が選択した変換関数fを識別可能な情報を、選択結果として送信する。
【0139】
逆変換関数選択部402は、認証サーバ20からの逆変換関数選択要求に基づいて、複数の逆変換関数f-1のうちの何れかを選択する。第3実施形態では、第2実施形態と同様に、この選択方法が第1ソルトの下1桁の値である場合を説明するが、選択方法は、他の任意の方法であってよい。例えば、第1ソルトの上1桁の値であってもよいし、第2ソルトの値であってもよい。逆変換関数選択部402は、選択サーバ40が選択した逆変換関数f-1を識別可能な情報を、選択結果として送信する。
【0140】
変換関数選択部306は、選択サーバ40による選択結果に基づいて、変換関数fを選択する。選択サーバ40により選択された変換関数fが利用される点で、第1実施形態及び第2実施形態とは異なるが、他の点については同様である。
【0141】
逆変換関数選択部208は、選択サーバ40による選択結果に基づいて、逆変換関数f-1を選択する。選択サーバ40により選択された逆変換関数f-1が利用される点で、第1実施形態及び第2実施形態とは異なるが、他の点については同様である。
【0142】
更新部403は、第1ソルトに関する選択条件と、複数の変換関数f及び複数の逆変換関数f-1の各々と、の関連付けを更新する。第3実施形態では、これらの関連付けが関数データベースDB3に格納されているので、更新部403は、関数データベースDB3を更新する。更新部403は、所定の更新条件が満たされた場合に、関数データベースDB3における関連付けを更新する。
【0143】
更新条件は、関数データベースDB3における関連付けを更新するための条件である。更新条件は、任意の条件であってよく、例えば、時間的な条件、又は、変換関数fと逆変換関数f-1の選択回数に関する条件であってもよい。例えば、管理者が所定の操作をすることが更新条件に相当してもよい。第3実施形態では、更新条件が時間的な条件であり、更新部403は、所定の更新時点が訪れた場合に、関連付けを更新する場合を説明する。更新時点は、任意の時点であってよく、例えば、1日の所定時刻であってもよいし、1週間又は1月の中で設定された時点であってもよい。
【0144】
更新部403は、更新前の関連付けとは異なる関連付けとなるように、関数データベースDB3を更新すればよい。例えば、更新部403は、第1ソルトの下1桁の値と、変換関数f及び逆変換関数f-1と、の組み合わせがシャッフルされるように、関連付けを更新する。変換関数選択部401は、更新部403により関連付けが更新された後に、更新後の関連付けに基づいて、変換関数fを選択する。逆変換関数選択部402は、更新部403により関連付けが更新された後に、更新後の関連付けに基づいて、逆変換関数f-1を選択する。更新後の関連付けが利用される点で、先述した変換関数f及び逆変換関数f-1を選択する処理とは異なるが、他の点については同様である。
【0145】
第3実施形態の認証システムSによれば、選択サーバ40が、認証サーバ20及びユーザPC30からの要求に基づいて、逆変換関数f-1及び変換関数fを選択する。これにより、逆変換関数f-1及び変換関数fを選択するアルゴリズムを認証サーバ20及びユーザPC30で持つ必要がなくなるので、多要素認証の仕組みを簡略化できる。更に、関数データベースDB3に定義された逆変換関数f-1及び変換関数fを定期的に変更しやすくなるので、第三者が変換の仕組みを推測しにくくなり、通信におけるセキュリティが高まる。
【0146】
また、選択サーバ40は、第1ソルトに関する選択条件と、複数の変換関数f及び複数の逆変換関数f-1の各々と、の関連付けを更新する。これにより、逆変換関数f-1及び変換関数fの選択方法が変わり、逆変換及び変換の仕組みが第三者に特定されにくくなるので、通信におけるセキュリティがより高まる。
【0147】
[4.変形例]
なお、本開示は、以上に説明した第1実施形態~第3実施形態に限定されるものではない。本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
【0148】
[4-1.変形例1]
例えば、第3実施形態の
図11の例において、選択サーバ40がユーザPC30からの変換関数選択要求を受け付けた時点が、関数データベースDB3の更新時点の直前だったとする。この場合、選択サーバ40が認証サーバ20からの逆変換関数選択要求を受け付けた時点が、関数データベースDB3の更新時点の直後になったとすると、TUIDの変換で用いられた変換関数fと、変換後のTUIDの逆変換で用いられる逆変換関数f
-1と、が互いに対応しない可能性がある。
【0149】
そこで、変形例1では、関数データベースDB3の更新時点の直前に、選択サーバ40がユーザPC30からの変換関数選択要求を受け付けた場合に、変換関数fが選択された選択時点に関する情報が認証サーバ20に送信されてもよい。送信部304は、認証サーバ20に対し、変換関数fが選択された選択時点に関する時点情報を更に送信する。時点情報は、関数データベースDB3が更新される前に変換関数fが選択されたか否かを識別可能な情報である。時点情報は、選択サーバ40からユーザPC30に送信されてもよいし、ユーザPC30が更新時点を予め把握している場合には、ユーザPC30により生成されてもよい。
【0150】
逆変換関数選択部402は、関数データベースDB3における関連付けが更新された直後に認証サーバ20からの要求を受け付けた場合には、更新前の関連付けに基づいて、第1逆変換関数f-1を選択し、かつ、更新後の関連付けに基づいて、第2逆変換関数f-1を選択する。ここでの直後とは、時間的な長さが閾値未満であることを意味する。このため、関数データベースDB3における関連付けの更新時点と、認証サーバ20からの要求を受け付けて変換関数fが選択される選択時点と、の間の時間的な長さが閾値未満であることは、直後であることに相当する。
【0151】
逆変換関数選択部402は、認証サーバ20からの逆変換関数選択要求を受け付けた時点が関数データベースDB3の更新よりも後であるか否かを判定する。逆変換関数選択部402は、この時点が関数データベースDB3の更新よりも後であると判定された場合に、更新前の関連付けに基づく第1逆変換関数f-1と、更新後の関連付けに基づく第2逆変換関数f-1と、を選択する。データ記憶部400には、更新前の関数データベースDB3も保持されているものとする。
【0152】
逆変換関数選択部208は、時点情報に基づいて、第1逆変換関数f-1及び第2逆変換関数f-1のうちの何れかを選択する。逆変換関数選択部208は、関数データベースDB3が更新される前に変換関数fが選択されたことを時点情報が示す場合には、第1逆変換関数f-1を選択する。逆変換関数選択部208は、関数データベースDB3が更新された後に変換関数fが選択されたことを時点情報が示す場合には、第2逆変換関数f-1を選択する。
【0153】
変形例1によれば、選択サーバ40は、関数データベースDB3における関連付けが更新された直後に認証サーバ20からの要求を受け付けた場合には、更新前の関連付けに基づいて、第1逆変換関数f-1を選択し、かつ、更新後の関連付けに基づいて、第2逆変換関数f-1を選択する。認証サーバ20は、時点情報に基づいて、第1逆変換関数f-1及び第2逆変換関数f-1のうちの何れかを選択する。これにより、更新時点間際に変換関数fが選択されたとしても、逆変換を正確に実行できる。このため、多要素認証が失敗してやり直すといった手間を省くことができるので、ユーザの利便性が高まる。ソルトサーバ10、認証サーバ20、ユーザPC30、及び選択サーバ40も不要な処理を実行しないので、これらの処理負荷を軽減できる。
【0154】
[4-2.変形例2]
例えば、選択サーバ40により変換関数fが選択された選択時点が更新時点の直前でない場合には、変形例1のような問題は発生しないと思われる。このため、ユーザPC30は、変換関数fが選択された選択時点が更新時点の直前でない場合には、認証サーバ20に対し、時点情報を送信せず、選択時点が更新時点の直前である場合に、認証サーバ20に対し、時点情報を送信してもよい。ここでの直前とは、時間的な長さが閾値未満であることを意味する。選択時点から更新時点までの時間的な長さが閾値未満であることは、直前であることに相当する。
【0155】
選択時点が更新時点の直前であるか否かは、ユーザPC30によって判定されてもよいが、ここでは、選択サーバ40により判定されるものとする。選択サーバ40は、次の更新時点を予め把握しているものとする。選択サーバ40は、ユーザPC30からの変換関数選択要求を受け付けて変換関数fを選択する選択時点から更新時点までの時間の長さが閾値未満であるか否かを判定する。この判定結果は、ユーザPC30に通知される。
【0156】
ユーザPC30は、選択時点が更新時点の直前でない場合には、そもそも時点情報を選択サーバ40から受信しなくてもよい。ユーザPC30は、選択サーバ40から時点情報を受信したとしても、選択時点が更新時点の直前でなければ、認証サーバ20に対して時点情報を送信しない。ユーザPC30は、選択時点が更新時点の直前であるか否かの判定結果を選択サーバ40から受信するものとする。ユーザPCは、選択時点が更新時点の直前である場合には、変形例1と同様に、認証サーバ20に対して時点情報を送信する。
【0157】
逆変換関数選択部402は、選択時点が更新時点の直前でない場合には、第2逆変換関数f-1を選択せずに第1逆変換関数f-1を選択し、選択時点が更新時点の直前である場合に、第1逆変換関数f-1及び第2逆変換関数f-1を選択する。選択サーバ40は、選択時点が更新時点の直前であるか否かの判定結果を保持するものとする。この判定結果は、ユーザPC30から受信した第1ソルトに関連付けられて保持されてもよい。逆変換関数選択部402は、選択時点が更新時点の直前でない場合には、第1逆変換関数f-1を選択する処理だけを行う。逆変換関数選択部402は、選択時点が更新時点の直前である場合には、変形例1と同様に、第1逆変換関数f-1及び第2逆変換関数f-1を選択する。
【0158】
逆変換関数選択部208は、選択時点が更新時点の直前でない場合には、第1逆変換関数f-1を選択し、選択時点が更新時点の直前である場合に、第1逆変換関数f-1及び第2逆変換関数f-1のうちの何れかを選択する。逆変換関数選択部208は、選択時点が更新時点の直前でない場合には、選択サーバ40から第1逆変換関数f-1を示す情報のみを受信するので、そのまま第1逆変換関数f-1を選択すればよい。逆変換関数選択部208は、選択時点が更新時点の直前である場合には、変形例1と同様にして、第1逆変換関数f-1及び第2逆変換関数f-1の何れかを選択すればよい。
【0159】
変形例2によれば、選択サーバ40は、選択時点が更新時点の直前でない場合には、第2逆変換関数f-1を選択せずに第1逆変換関数f-1を選択し、選択時点が更新時点の直前である場合に、第1逆変換関数f-1及び第2逆変換関数f-1を選択する。これにより、変形例1のような処理が必要のない時の処理を簡易化できる。その結果、認証サーバ20、ユーザPC30、及び選択サーバ40の処理負荷を軽減できる。
【0160】
[4-3.変形例3]
例えば、第2実施形態及び第3実施形態のように、第1ソルトの一部分に基づいて変換関数f及び逆変換関数f
-1が選択される場合、当該一部分が動的に変わってもよい。即ち、
図8及び
図11の例では、第1ソルトの下1桁に基づいて変換関数f及び逆変換関数f
-1が選択される場合を説明したが、第1ソルトの上1桁や2桁目に基づいて変換関数f及び逆変換関数f
-1が選択されるように、動的に変わってもよい。
【0161】
変換関数選択部306は、所定の決定方法に基づいて、変換関数fの選択で利用する一部分を決定し、当該決定された一部分に基づいて、複数の変換方法のうちの何れかを選択してもよい。この決定方法は、第1ソルトのどの部分を変換関数f及び逆変換関数f-1の選択で利用するかを決定する方法である。この決定方法は、予め定められた方法であればよく第1ソルトのうちの所定の桁をランダムに選択する方法であってもよいし、管理者が指定した方法であってもよい。
【0162】
変形例3では、変換関数選択部306は、所定の決定方法に基づいて、第1ソルトのうちの何れか1桁を、変換関数fの選択で利用する一部分として決定する。この1桁の値と、変換関数fと、の関係は、
図8及び
図11と同様であってよい。変換関数選択部306は、第1ソルトのうち、所定の決定方法に基づいて決定された1桁の値に基づいて、変換関数fを選択する。例えば、この1桁の値が「1」であれば、変換関数f1が選択される。この1桁の値が「7」であれば、変換関数f7が選択される。
【0163】
認証サーバ20の逆変換関数選択部208は、所定の決定方法に基づいて、逆変換関数f-1の選択で利用する一部分を決定し、当該決定された一部分に基づいて、複数の逆変換関数f-1のうちの何れかを選択する。この決定方法は、先述した決定方法と同じである。逆変換関数f-1の選択方法も変換関数fの選択方法と同様である。
【0164】
変形例3によれば、変換関数f及び逆変換関数f-1の選択で利用される部分が動的に変わる。これにより、第三者が変換関数f及び逆変換関数f-1の選択の仕組みを特定しにくくなるので、通信におけるセキュリティがより高まる。
【0165】
[4-4.変形例4]
例えば、ユーザがログインする前に、悪意のある第三者のクロスサイトスクリプティング攻撃等によって、ユーザPC30内のTUID、変換関数f、ソルトサーバ10へのアクセス方法(例えば、特定のIPアドレスに対し、createSaltPair()のコマンドを送信してソルトを取得する流れ)、及びユーザの顔写真が盗まれたとする。この場合、ユーザがログインするたびにTUIDを更新したとしても、第三者は、ソルトサーバ10にアクセスする一連の流れと、認証に必要な情報を入手しているので、なりすましが可能になる恐れがある。
【0166】
そこで、ユーザが、認証サーバ20に顔写真等の情報を登録したり、ユーザID及びパスワード等を利用して安全な方法でログインしたりする場合に、ユーザPC30は、自身に関する複数の情報に基づくハッシュ値を生成して認証サーバ20に送信してもよい。このハッシュ値は、ユーザIDに関連付けられてユーザデータベースDB2に格納される。ユーザがTUIDを利用した認証を実行してログインする場合には、ユーザPC30は、TUIDを変換して、認証サーバ20に、変換後のTUIDと、ユーザPC30に関する複数の情報に基づくハッシュ値と、を送信する。第1実施形態等で説明したように、送信部304は、ユーザの顔写真も送信する。
【0167】
認証サーバ20は、変換後のTUIDを逆変換してTUIDを取得し、当該取得されたTUIDと、ハッシュ値と、に基づいて、認証処理を実行する。第1実施形態等で説明した通信システムSは、TUID認証だけではなく、顔認証も併用されるので、認証サーバ20は、TUID、顔の特徴量、及びハッシュ値に基づいて、認証処理を実行する。このため、変形例4の認証処理は、三要素認証となる。TUIDと顔の特徴量を利用した認証は、第1実施形態等で説明した通りである。認証サーバ20は、ユーザPC30から受信したハッシュ値と、ユーザのユーザIDに関連付けられてユーザデータベースDB2に格納されたハッシュ値と、が一致するか否かを判定する。これらが一致する場合には、ハッシュ値を利用した認証が成功する。
【0168】
なお、ハッシュ値を生成するための複数の情報としては、任意の情報を組み合わせ可能である。例えば、ユーザPC30は、ユーザPC30の種類、オペレーティングシステムの種類、ブラウザの種類といった複数の情報に基づいて、ハッシュ値を生成してもよい。他にも例えば、ユーザPC30のシリアル番号、SIMカードの番号、又は通信カードのMACアドレスといった他の情報に基づいて、ハッシュ値が生成されてもよい。ハッシュ値を生成するためのハッシュ関数自体は、種々のハッシュ関数を利用可能である。ハッシュ値は、ユーザPC30に記憶されるのではなく、認証のたびに生成されるものとする。
【0169】
変形例4の通信システムSによれば、ハッシュ値を利用した認証によって、セキュリティが高まる。例えば、悪意のある第三者がユーザPC30内のTUID等を不正に入手したとしても、ハッシュ値までは特定できない可能性が高いので、セキュリティが高まる。
【0170】
[4-5.変形例5]
例えば、通信システムSは、認証処理が実行される場面以外の他の場面に適用可能である。他の場面としては、電子メールを送信する場面、ファイルをアップロード又はダウンロードする場面、SNSの投稿が行われる場面、ブラウザで何らかのページを表示させる場面、又はユーザが個人情報をアップロード又はダウンロードする場面といった他の画面にも通信システムSを適用可能である。
【0171】
例えば、電子メールを送信する場面に通信システムSを適用したとすると、第1装置は、電子メールの送信側のコンピュータであり、第2装置は、電子メールの受信側のコンピュータである。元データは、電子メールのデータである。元データには、電子メールの本文が含まれる。電子メールに添付ファイルが添付される場合には、元データには、添付ファイルが含まれる。第1装置は、電子メールである元データに対し、第2ソルトに基づいて、変換を行って、変換データを生成する。変換データは、変換後の電子メールである。第1装置は、第2装置に対し、第1ソルトと、変換後の電子メールである変換データと、を送信する。第2装置は、第1ソルト及び変換データを受信すると、第1ソルトに基づいて第2ソルトを取得し、当該取得された第2ソルトに基づいて変換データの逆変換を行って、元データである電子メールを取得する。第1ソルト及び第2ソルトの取得方法は、第1実施形態~第3実施形態及び変形例1~4で説明した通りである。
【0172】
例えば、ファイルをアップロードする場面に通信システムSを適用したとすると、第1装置は、ファイルをアップロードするユーザのコンピュータであり、第2装置は、ファイルを受信するサーバである。元データは、アップロード対象のファイルである。第1装置は、アップロード対象のファイルである元データに対し、第1ソルトに基づいて、変換を行って、変換データを生成する。変換データは、変換後のファイルである。第1装置は、第2装置に対し、第1ソルトと、変換後のファイルである変換データと、を送信する。第2装置は、変換データを受信すると、第1ソルトに基づいて第2ソルトを取得し、当該取得された第2ソルトに基づいて逆変換を行って、元データであるファイルを取得する。第1ソルト及び第2ソルトの取得方法は、第1実施形態~第3実施形態及び変形例1~4で説明した通りである。
【0173】
他の場面に通信システムSを適用した場合も同様であり、第1装置は、複数のソルトに基づいて、元データを変換して第2装置に変換データを送信すればよい。第2装置は、複数のソルトに基づいて、変換データを逆変換して元データを取得すればよい。変形例5の通信システムSによれば、種々の場面における通信のセキュリティが高まる。
【0174】
[4-6.その他変形例]
例えば、第1実施形態~第3実施形態を組み合わせてもよい。上記変形例を組み合わせてもよい。
【0175】
例えば、ソルトサーバ10で実現されるものとして説明した機能は、認証サーバ20又はユーザPC30で実現されてもよい。この場合、通信システムSは、ソルトサーバ10を含まなくてもよい。例えば、通信システムSが複数のサーバコンピュータを含む場合には、複数のサーバコンピュータで機能が分担されてもよい。また例えば、データ記憶部100,200で記憶されるものとして説明したデータは、ソルトサーバ10又は認証サーバ20以外のコンピュータによって記憶されてもよい。