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

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

▶ 楽天株式会社の特許一覧

特許7358659通信システム、通信方法、及びプログラム
<>
  • 特許-通信システム、通信方法、及びプログラム 図1
  • 特許-通信システム、通信方法、及びプログラム 図2
  • 特許-通信システム、通信方法、及びプログラム 図3
  • 特許-通信システム、通信方法、及びプログラム 図4
  • 特許-通信システム、通信方法、及びプログラム 図5
  • 特許-通信システム、通信方法、及びプログラム 図6
  • 特許-通信システム、通信方法、及びプログラム 図7
  • 特許-通信システム、通信方法、及びプログラム 図8
  • 特許-通信システム、通信方法、及びプログラム 図9
  • 特許-通信システム、通信方法、及びプログラム 図10
  • 特許-通信システム、通信方法、及びプログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-09-29
(45)【発行日】2023-10-10
(54)【発明の名称】通信システム、通信方法、及びプログラム
(51)【国際特許分類】
   H04L 9/16 20060101AFI20231002BHJP
   H04L 9/32 20060101ALI20231002BHJP
【FI】
H04L9/16
H04L9/32 200A
【請求項の数】 20
(21)【出願番号】P 2022577694
(86)(22)【出願日】2022-02-28
(86)【国際出願番号】 JP2022008319
【審査請求日】2022-12-16
【早期審査対象出願】
(73)【特許権者】
【識別番号】399037405
【氏名又は名称】楽天グループ株式会社
(74)【代理人】
【識別番号】110000154
【氏名又は名称】弁理士法人はるか国際特許事務所
(72)【発明者】
【氏名】蔡 永男
【審査官】中里 裕正
(56)【参考文献】
【文献】特許第2689383(JP,B2)
【文献】特開2006-340296(JP,A)
【文献】特開平10-242956(JP,A)
【文献】特表2017-531967(JP,A)
【文献】特開2000-244474(JP,A)
【文献】特表2001-524771(JP,A)
【文献】特開2007-156785(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/16
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
第1装置及び第2装置を含む通信システムであって、
前記第1装置は、
元データを変換するための変換情報であって、前記元データが変換される第1時点が属する第1期間の日及び時間帯に応じた第1変換情報を取得する変換情報取得部と、
前記第1変換情報に基づいて、前記元データを変換することによって第1変換を行って、第1変換データを生成する変換部と、
前記第2装置に対し、前記第1期間の分及び秒に関する第1期間情報と、前記第1変換データと、を送信する送信部と、
を含み、
前記第2装置は、
前記第1装置から、前記第1期間情報と、前記第1変換データと、を受信する受信部と、
前記第1期間情報に基づいて、前記第1変換データを逆変換するための逆変換情報であって、前記第1期間の日及び時間帯に応じた第1逆変換情報を取得する逆変換情報取得部と、
前記第1逆変換情報に基づいて、前記第1変換データを逆変換することによって第1逆変換を行って、前記元データを取得する逆変換部と、
を含む通信システム。
【請求項2】
前記変換部は、前記第1期間に属し、かつ、前記第1時点とは異なる第2時点に前記元データが変換される場合に、前記元データに対し、前記第1変換を行って、前記第1変換データを生成し、
前記変換部は、前記第1期間とは異なる第2期間に属し、かつ、前記第1時点及び前記第2時点とは異なる第3時点に前記元データが変換される場合に、前記元データに対し、前記第2期間に応じた第2変換を行って、第2変換データを生成し、
前記逆変換部は、前記第1変換データに対し、前記第1逆変換を行って、前記元データを取得し、
前記逆変換部は、前記第2変換データに対し、前記第2期間に応じた第2逆変換を行って、前記元データを取得する、
請求項1に記載の通信システム。
【請求項3】
前記第1期間は、日及び時間帯の組み合わせで示され、
前記変換情報取得部は、前記第1期間が示す日及び時間帯の組み合わせに応じた前記第1変換情報を取得し、
前記逆変換情報取得部は、前記第1期間が示す日及び時間帯の組み合わせに応じた前記第1逆変換情報を取得する、
請求項1又は2に記載の通信システム。
【請求項4】
前記通信システムは、前記第1期間と、前記第1変換情報と、を関連付けて管理する第3装置を更に含み、
前記第3装置は、前記第1装置から前記第1変換情報の取得要求を受け付けた場合に、前記第1装置に対し、前記第1期間に応じた前記第1変換情報を送信し、
前記送信部は、前記第2装置に対し、前記第3装置から受信した前記第1変換情報に応じた前記第1期間情報を送信する、
請求項1~3の何れかに記載の通信システム。
【請求項5】
前記通信システムは、複数の期間の各々と、前記逆変換情報と、を関連付けて管理する第3装置を更に含み、
前記第2装置は、前記第3装置に対し、前記逆変換情報を要求する逆変換情報要求部を更に含み、
前記第3装置は、前記第2装置に対し、前記第2装置からの要求を受け付けた場合の時点が属する期間に応じた前記逆変換情報を送信する送信部を更に含み、
前記第3装置の前記送信部は、前記第2装置からの要求を受け付けた時点が前記第1期間よりも後の第2期間である場合に、前記第2装置に対し、前記第1期間に応じた前記第1逆変換情報と、前記第2期間に応じた第2逆変換情報と、を含む複数の前記逆変換情報を送信し、
前記逆変換情報取得部は、前記第1期間情報に基づいて、前記複数の逆変換情報の中から前記第1逆変換情報を選択する、
請求項1~4の何れかに記載の通信システム。
【請求項6】
前記変換情報取得部は、前記第1期間と、前記元データの一部分と、に応じた前記第1変換情報を取得し、
前記第1変換は、前記第1期間及び前記一部分に応じた変換であり、
前記送信部は、前記第2装置に対し、未変換の前記一部分を更に送信し、
前記逆変換情報取得部は、前記第1期間と、前記未変換の一部分と、に応じた前記逆変換情報を取得し、
前記第1逆変換は、前記第1期間と、前記未変換の一部分と、に応じた逆変換である、
請求項1に記載の通信システム。
【請求項7】
前記変換部は、前記第1変換情報に基づいて、前記元データのうち、前記一部分以外の残り部分を変換することによって、前記第1変換データを生成し、
前記逆変換部は、前記逆変換情報に基づいて、前記第1変換データを逆変換して前記残り部分を取得し、当該残り部分と、前記未変換の一部分と、に基づいて、前記元データを取得する、
請求項に記載の通信システム。
【請求項8】
前記通信システムは、複数の期間の各々と、前記変換情報及び前記逆変換情報と、が関連付けられたデータベースを記憶するデータ記憶部を更に含み、
前記変換情報取得部は、前記データベースにおいて、前記第1期間に関連付けられた前記第1変換情報を取得し、
前記逆変換情報取得部は、前記データベースにおいて、前記第1期間に関連付けられた前記第1逆変換情報を取得する、
請求項1に記載の通信システム。
【請求項9】
前記通信システムは、前記データベースを更新する更新部を更に含む、
請求項に記載の通信システム。
【請求項10】
前記通信システムは、複数の期間の各々と、前記変換情報及び前記逆変換情報と、を関連付けて管理する第3装置を更に含み、
前記第1装置は、前記第3装置に対し、前記変換情報を要求する変換情報要求部を更に含み、
前記第1時点は、前記第3装置が前記第1装置からの要求を受け付けた場合の時点であり、
前記第3装置は、前記第1装置に対し、前記第1変換情報を送信する送信部を更に含み、
前記変換情報取得部は、前記第3装置から、前記第1変換情報を取得し、
前記第2装置は、前記第3装置に対し、前記逆変換情報を要求する逆変換情報要求部を更に含み、
前記第3装置は、前記第1期間に前記第2装置からの要求を受け付けた場合に、前記第2装置に対し、前記第1逆変換情報を送信し、
前記逆変換情報取得部は、前記第3装置から、前記第1逆変換情報を取得する、
請求項1に記載の通信システム。
【請求項11】
前記変換情報要求部は、前記第3装置に対し、前記変換情報の取得ルールに関する情報を含まない要求を送信し、
前記逆変換情報要求部は、前記第3装置に対し、前記逆変換情報の取得ルールに関する情報を含まない要求を送信する、
請求項1に記載の通信システム。
【請求項12】
前記第1装置は、複数の変換方法の中から、前記第1期間に応じた第1変換方法を選択する変換方法選択部を更に含み、
前記変換部は、前記第1変換方法に基づいて、前記元データを変換することによって、前記第1変換を行い、
前記第2装置は、複数の逆変換方法の中から、前記第1期間に応じた第1逆変換方法を選択する逆変換方法選択部を更に含み、
前記逆変換部は、前記第1逆変換方法に基づいて、前記元データを逆変換することによって、前記第1逆変換を行う、
請求項1~1の何れかに記載の通信システム。
【請求項13】
前記第1期間は、時間帯で示され、
前記変換方法選択部は、前記第1期間が示す時間帯に応じた前記第1変換方法を選択し、
前記逆変換方法選択部は、前記第1期間が示す時間帯に応じた前記第1逆変換方法を選択する、
請求項12に記載の通信システム。
【請求項14】
前記送信部は、前記第2装置に対し、前記第1期間に関する第1期間情報を更に送信し、
前記受信部は、前記第1装置から、前記第1期間情報を更に受信し、
前記逆変換方法選択部は、前記第1期間情報に基づいて、前記第1期間に応じた前記逆変換方法を選択する、
請求項12又は13に記載の通信システム。
【請求項15】
前記元データは、前記第1装置のユーザに関する認証データであり、
前記変換部は、前記認証データに対し、前記第1変換を行って、前記第1変換データを生成し、
前記逆変換部は、前記第1変換データに対し、前記第1逆変換を行って、前記認証データを取得し、
前記第2装置は、
前記第1逆変換により取得された前記認証データに基づいて、前記ユーザに関する認証処理を実行する処理実行部と、
前記認証処理が成功した場合に、新たな前記認証データを生成する生成部と、
を更に含む、
請求項1~1の何れかに記載の通信システム。
【請求項16】
前記元データは、前記第1装置のユーザに関する認証データであり、
前記変換部は、前記認証データに対し、前記第1変換を行って、前記第1変換データを生成し、
前記送信部は、前記第1変換データと、前記第1装置に関する複数の情報に基づくハッシュ値と、を送信し、
前記逆変換部は、前記第1変換データに対し、前記第1逆変換を行って、前記認証データを取得し、
前記第2装置は、前記第1逆変換により取得された前記認証データと、前記ハッシュ値と、に基づいて、前記ユーザに関する認証処理を実行する処理実行部を更に含む、
請求項1~14の何れかに記載の通信システム。
【請求項17】
前記処理実行部は、前記第1装置から受信した前記ハッシュ値と、予めデータベースに格納されたハッシュ値と、に基づいて、前記認証処理を実行する、
請求項16に記載の通信システム。
【請求項18】
第1装置及び第2装置の間の通信方法であって、
前記第1装置は、
元データを変換するための変換情報であって、前記元データが変換される第1時点が属する第1期間の日及び時間帯に応じた第1変換情報を取得する変換情報取得ステップと、
前記第1変換情報に基づいて、前記元データを変換することによって第1変換を行って、第1変換データを生成する変換ステップと、
前記第2装置に対し、前記第1期間の分及び秒に関する第1期間情報と、前記第1変換データと、を送信する送信ステップと、
を実行し、
前記第2装置は、
前記第1装置から、前記第1期間情報と、前記第1変換データと、を受信する受信ステップと、
前記第1期間情報に基づいて、前記第1変換データを逆変換するための逆変換情報であって、前記第1期間の日及び時間帯に応じた第1逆変換情報を取得する逆変換情報取得ステップと、
前記第1逆変換情報に基づいて、前記第1変換データを逆変換することによって第1逆変換を行って、前記元データを取得する逆変換ステップと、
を実行する通信方法。
【請求項19】
第2装置と通信可能な第1装置を、
元データを変換するための変換情報であって、前記元データが変換される第1時点が属する第1期間の日及び時間帯に応じた第1変換情報を取得する変換情報取得部、
前記第1変換情報に基づいて、前記元データを変換することによって第1変換を行って、第1変換データを生成する変換部、
前記第2装置に対し、前記第1期間の分及び秒に関する第1期間情報と、前記第1変換データと、を送信する送信部、
として機能させるためのプログラム。
【請求項20】
第1装置と通信可能な第2装置を、
前記第1装置から、元データに対し、前記元データを変換するための変換情報であって、前記元データが変換される第1時点が属する第1期間の日及び時間帯に応じた第1変換情報に基づいて第1変換が行われた第1変換データと、前記第1期間の分及び秒に関する第1期間情報と、を受信する受信部、
前記第1期間情報に基づいて、前記第1変換データを逆変換するための逆変換情報であって、前記第1期間の日及び時間帯に応じた第1逆変換情報を取得する逆変換情報取得部、
前記第1逆変換情報に基づいて、前記第1変換データを逆変換することによって第1逆変換を行って、前記元データを取得する逆変換部、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【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時点が属する第1期間に応じた第1変換を行って、第1変換データを生成する変換部と、前記第2装置に対し、前記第1変換データを送信する送信部と、を含み、前記第2装置は、前記第1装置から、前記第1変換データを受信する受信部と、前記第1変換データに対し、前記第1期間に応じた第1逆変換を行って、前記元データを取得する逆変換部と、を含む。
【発明の効果】
【0008】
本開示によれば、通信におけるセキュリティが高まる。
【図面の簡単な説明】
【0009】
図1】通信システムの全体構成の一例を示す図である。
図2】第1実施形態における多要素認証の流れの一例を示す図である。
図3】第1実施形態の通信システムで実現される機能の一例を示す機能ブロック図である。
図4】ソルトデータベースの一例を示す図である。
図5】ユーザデータベースの一例を示す図である。
図6】第1実施形態の通信システムで実行される処理の一例を示す図である。
図7】第1実施形態の通信システムで実行される処理の一例を示す図である。
図8】第2実施形態における多要素認証の流れの一例を示す図である。
図9】第3実施形態における多要素認証の流れの一例を示す図である。
図10】第3実施形態の通信システムで実現される機能ブロックの一例を示す図である。
図11】変形例1における多要素認証の流れの一例を示す図である。
【発明を実施するための形態】
【0010】
[1.第1実施形態]
本開示に係る通信システムの実施形態の例である第1実施形態を説明する。第1実施形態では、ユーザの認証が行われる場面に通信システムを適用した場合を例に挙げるが、通信システムは、任意の場面に適用可能である。他の場面への適用例は、後述の変形例4で説明する。
【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は、第3装置の一例である。このため、ソルトサーバ10と記載した箇所は、第3装置と読み替えることができる。第3装置は、任意の装置であってよく、ソルトサーバ10のようなサーバコンピュータに限られない。例えば、第3装置は、パーソナルコンピュータ、タブレット端末、又はスマートフォンであってもよい。
【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の例では、getSalt()といったコマンドがソルト要求に含まれる。このコマンドは、ソルトに関する条件が含まれていないので、悪意のある第三者がソルト要求を盗み見たとしても、どのような条件でソルトが生成されているかを特定することはできない。
【0031】
ソルトサーバ10は、ソルト要求を受信すると、ソルトデータベースDB1を参照し、現在の日及び時間帯に応じたソルトを取得する。図2のように、ソルトデータベースDB1には、日及び時間帯の組み合わせごとに、ソルトが格納されている。例えば、1ヶ月を31日間として、1日の24時間を1時間ごとの時間帯で区切ったとすると、図2の例では、31×24=744通りのソルトがソルトデータベースDB1に格納されている。ソルトサーバ10が、ソルトデータベースDB1からソルトを取得する時点が「2021年12月2日01時25分34秒」だったとすると、ソルトサーバ10は、「2日」及び「01時」に応じたソルト「8414」を取得してユーザPC30に送信する。
【0032】
ユーザPC30は、ソルトサーバ10からソルト「8414」を受信すると、ソルト「8414」と、所定の変換関数fと、に基づいて、TUID「312456」を変換する。図2の例では、変換関数fは、TUID「312456」にソルト「8414」を加算する関数である。変換後のTUIDは、これらの和の「320870」になる。ユーザPC30は、撮影部36が生成したユーザの顔写真と、変換後のTUID「320870」と、を含む認証要求を、認証サーバ20に送信する。
【0033】
認証サーバ20は、認証要求を受信すると、ソルトサーバ10に対し、ソルト要求を送信する。図2の例では、ユーザPC30からソルトサーバ10に対するソルト要求と、認証サーバ20からソルトサーバ10に対するソルト要求と、は同じ形式である。このため、認証サーバ20からソルトサーバ10に対するソルト要求も、getSalt()といったように、ソルトの条件が分からないようになっている。ソルト要求の形式を共通にすることによって、ソルトサーバ10のAPIも共通化できる。
【0034】
ソルトサーバ10は、認証サーバ20からソルト要求を受信すると、ソルトデータベースDB1を参照し、現在の日及び時間帯に応じたソルトを取得する。ソルトサーバ10が、ソルトデータベースDB1からソルトを取得する時点が「2021年12月2日01時25分35秒」だったとすると、ソルトサーバ10は、「2日」及び「01時」に応じたソルト「8414」を、認証サーバ20に送信する。このソルト「8414」は、ユーザPC30に送信されたものと同じである。
【0035】
認証サーバ20は、ソルトサーバ10からソルト「8414」を受信すると、ソルト「8414」と、逆変換関数f-1と、に基づいて、ユーザPCから受信した変換後のTUID「320870」を逆変換する。図2の例では、逆変換関数f-1は、変換後のTUID「320870」からソルト「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から受信済みのソルト「8414」で変換されてもよい。この場合、認証サーバ20は、新たなTUIDを変換するための変換関数を記憶し、ユーザPC30は、変換後の新たなTUIDを逆変換するための逆変換関数f-1を記憶しているものとする。この逆変換でも、ソルトサーバ10から受信済みのソルト「8414」が利用されてもよい。
【0039】
以上のように、第1実施形態の通信システムSは、ユーザがログインする時の日及び時間帯の組み合わせに応じたソルトに基づいて、TUIDを変換したり、変換後のTUIDを逆変換したりする。これにより、TUIDがそのままネットワークN上に送信されないので、第三者は、TUIDを簡単に入手できないようになる。更に、ソルトは、ある一定の期間だけ有効なので、第三者が何らかの形でソルトを取得したとしても、このソルトが有効な期間を一定程度の長さに抑えることができるので、通信におけるセキュリティが高まるようになっている。以降、第1実施形態の通信システムSの詳細を説明する。
【0040】
[1-3.第1実施形態の通信システムで実現される機能]
図3は、第1実施形態の通信システムSで実現される機能の一例を示す機能ブロック図である。
【0041】
[1-3-1.ソルトサーバにおいて実現される機能]
データ記憶部100は、記憶部12を主として実現される。ソルト生成部101、受信部102、送信部103、及び更新部104は、制御部11を主として実現される。
【0042】
[データ記憶部]
データ記憶部100は、ソルトを管理するために必要なデータを記憶する。例えば、データ記憶部100は、複数の期間の各々と、ソルト(変換情報及び逆変換情報の一例)と、が関連付けられたソルトデータベースDB1を記憶する。ソルトサーバ10は、ソルトデータベースDB1により、複数の期間の各々と、変換情報及び逆変換情報と、を関連付けて管理する。変換情報及び逆変換情報が、ソルト以外の名前で呼ばれる情報であれば、ソルトサーバ10は、ソルトデータベースDB1以外の名前で呼ばれるデータベースを利用して、変換情報及び逆変換情報を管理すればよい。
【0043】
図4は、ソルトデータベースDB1の一例を示す図である。ソルトデータベースDB1は、ソルトが格納されたデータベースである。例えば、ソルトデータベースDB1には、日及び時間帯の組み合わせごとに、ソルトが格納される。即ち、ソルトデータベースDB1には、日及び時間帯の組み合わせと、ソルトと、が関連付けられている。ソルトデータベースDB1に格納されるソルトは、予め定められたタイミングで更新されてもよい。
【0044】
図4の例では、過去の日及び時間で利用されたソルトと、未来の日及び時間で利用される予定のソルトと、も格納される場合を説明するが、現在の日及び時間で利用されるソルトだけがソルトデータベースDB1に格納されてもよい。例えば、現時点が「2021年12月2日01:25:34」だったとすると、「2日」及び「01時」のソルトだけがソルトデータベースDB1に格納されてもよい。この場合、「2021年12月2日02:00:00」になると、「2日」及び「02時」のソルトだけがソルトデータベースDB1に格納される。
【0045】
なお、データ記憶部100は、ソルトデータベースDB1以外の他の任意のデータを記憶可能である。例えば、データ記憶部100は、ソルトを生成するためのアルゴリズムを記憶してもよい。データ記憶部100は、認証サーバ20及びユーザPC30とソルトのやりとりをするためのAPIに関するデータを記憶してもよい。第1実施形態では、認証サーバ20及びユーザPC30から同じ形式のソルト要求を受け付けることができるように、認証サーバ20及びユーザPC30で共通のAPIとするが、認証サーバ20用のAPIと、ユーザPC30用のAPIと、が異なってもよい。
【0046】
[ソルト生成部]
ソルト生成部101は、所定のアルゴリズムに基づいて、ソルトを生成する。例えば、ソルト生成部101は、ランダムな値になるように、ソルトを生成する。ランダムな値を生成する方法自体は、公知の種々の方法を利用可能である。例えば、ソルト生成時のタイムスタンプを利用する方法であってもよいし、タイムスタンプ以外の他のデータを利用する方法であってもよい。ソルト生成部101は、ソルトデータベースDB1に、生成したソルトを格納する。
【0047】
第1実施形態では、ソルト生成部101は、将来の日及び時間帯の組み合わせごとに、ソルトを生成する。ソルト生成部101は、この組み合わせと、生成したソルトと、を関連付けてソルトデータベースDB1に格納する。後述の更新部104により、所定のタイミングで、ソルトデータベースDB1に格納されたソルトが更新されてもよい。このタイミングは、任意のタイミングであってよく、例えば、ある月の初日、ある週の初日、又は1日の始まりといったタイミングであってもよい。
【0048】
第1実施形態では、TUIDの変換と、変換後のTUIDの逆変換と、で同じソルトが利用される場合を例に挙げる。このため、ソルトは、変換情報の一例であり、逆変換情報の一例でもある。ソルトと記載した箇所は、変換情報と読み替えることができる。ソルトと記載した箇所は、逆変換情報と読み替えることもできる。変換情報は、暗号理論における暗号鍵である。逆変換情報は、暗号理論における復号鍵である。第1実施形態では、変換情報及び逆変換情報が互いに同じなので、変換情報及び逆変換情報は、暗号理論における共通鍵に相当する。変換情報及び逆変換情報は、鍵以外の名前で呼ばれてもよく、例えば、ファイルの暗号化で用いられるパスワードが変換情報及び逆変換情報に相当してもよい。
【0049】
変換情報及び逆変換情報は、互いに異なってもよい。例えば、変換情報は、暗号理論における公開鍵であり、逆変換情報は、暗号理論における秘密鍵であってもよい。逆に、変換情報は、暗号理論における秘密鍵であり、逆変換情報は、暗号理論における公開鍵であってもよい。変換情報及び逆変換情報が互いに異なる場合、ソルトデータベースDB1には、変換情報及び逆変換情報の両方が格納される。これら両方のうちの変換情報がユーザPC30に送信され、逆変換情報が認証サーバ20に送信される。第1実施形態のように、日及び時間帯の組み合わせに応じた変換情報及び逆変換情報にするのであれば、ソルトデータベースDB1には、日及び時間帯の組み合わせごとに、変換情報及び逆変換情報の組み合わせが格納される。
【0050】
[受信部]
受信部102は、認証サーバ20及びユーザPC30の各々からソルト要求を受信する。ソルト要求は、ソルトを要求するために送信される所定形式の情報である。図2では、getSalt()といったコマンドを含むソルト要求を例に挙げたが、ソルト要求は、ソルトが要求されたことを示す情報であればよい。第1実施形態では、認証サーバ20からのソルト要求と、ユーザPC30からのソルト要求と、が同じ形式である場合を説明するが、これらの形式は、互いに異なってもよい。ソルト要求は、変換情報の要求の一例であり、逆変換情報の要求の一例でもある。このため、ソルト要求について説明している箇所は、変換情報の要求又は逆変換情報の要求と読み替えることができる。これらの要求は、ソルト要求以外の任意の名前で呼ばれることができる。
【0051】
[送信部]
送信部103は、認証サーバ20に対し、逆変換情報に相当するソルトを送信する。送信部103は、ユーザPC30に対し、変換情報に相当するソルトを送信する。第1実施形態では、送信部103は、認証サーバ20及びユーザPC30の各々に対し、ソルトが取得されるソルト取得時点が属する日及び時間帯に応じたソルトを送信する。ソルト取得時点は、ソルト要求が受信されてからソルトが送信されるまでの間の時点であればよい。送信部103は、ソルトデータベースDB1を参照し、ソルト取得時点が属する日及び時間帯の組み合わせを特定する。送信部103は、認証サーバ20及びユーザPC30の各々に対し、当該特定した組み合わせに関連付けられたソルトを送信する。
【0052】
例えば、ソルトサーバ10が、ある第1時点が属する第1期間(図2の例であれば、2日の01時台)に、認証サーバ20からソルト要求を受け付けたとする。第1時点は、ソルトサーバ10がユーザPC30からのソルト要求を受け付けた場合の時点である。送信部103は、第1期間にユーザPC30からのソルト要求を受け付けた場合に、ユーザPC30に対し、第1ソルトを送信する。第1ソルトは、第1期間に応じたソルトである。図2の例であれば、第1期間が「2日」の「01時」なので、第1ソルトは、ソルトデータベースDB1において、「2日」の「01時」に関連付けられたソルト「8414」である。以降では、第1期間に応じた第1ソルトと、他の期間に応じた他のソルトと、を区別しない時は、単にソルトと記載する。
【0053】
送信部103は、第1期間に認証サーバ20からのソルト要求を受け付けた場合に、認証サーバ20に対し、第1ソルトを送信する。即ち、送信部103は、認証サーバ20からのソルト要求と、ユーザPC30からのソルト要求と、を同じ第1期間に受け付けた場合に、認証サーバ20及びユーザPC30の各々に対し、同じ第1ソルトを送信する。第1実施形態では、送信部103は、認証サーバ20からのソルト要求と、ユーザPC30からのソルト要求と、を互いに異なる期間に受け付けた場合には、認証サーバ20及びユーザPC30の各々に対し、互いに異なるソルトを送信するものとする。この場合、TUIDの変換で用いられるソルトと、TUIDの逆変換で用いられるソルトと、が対応しないので、正常な逆変換が行われずに認証処理が失敗するので、一連の認証処理の流れがやり直される。
【0054】
なお、図3では、1つの送信部103だけを示しているが、ユーザPC30に対するソルトの送信と、認証サーバ20に対するソルトの送信と、を別々の機能として捉えることもできる。このため、送信部103が、ユーザPC30からのソルト要求が受け付けられた場合に、ユーザPC30に対し、ソルトを送信する第1送信部103Aと、認証サーバ20からのソルト要求が受け付けられた場合に、認証サーバ20に対し、ソルトを送信する第2送信部103Bと、を含むと捉えることもできる。ユーザPC30に対するソルトの送信手順と、認証サーバ20に対するソルトの送信手順と、が異なる場合には、第1送信部103Aは、ユーザPC30に対するソルトの送信手順に沿って、ユーザPC30に対し、ソルトを送信すればよい。第2送信部103Bは、認証サーバ20に対するソルトの送信手順に沿って、認証サーバ20に対し、ソルトを送信すればよい。
【0055】
[更新部]
更新部104は、ソルトデータベースDB1を更新する。更新部104は、所定の更新条件が満たされたか否かを判定し、更新条件が満たされた場合に、ソルトデータベースDB1を更新する。更新条件は、ソルトデータベースDB1を更新するための条件である。更新条件は、任意の条件を設定可能である。第1実施形態では、毎日の0時が訪れること(日付が変わること)が更新条件に相当する場合を例に挙げるが、更新条件は、管理者が所定の操作をすること、認証処理が所定回数以上実行されること、又はソルトが所定回数以上取得されること、といった他の条件であってもよい。
【0056】
更新部104は、更新条件が満たされた場合に、ソルト生成部101にソルトを生成させ、ソルトデータベースDB1に格納する。ソルトデータベースDB1が更新されるたびに、ソルトの生成条件(例えば、タイムスタンプ)が異なるものとする。このため、ソルトデータベースDB1が更新されるたびに、異なる値のソルトが生成される。図4のデータ格納例であれば、毎日の0時が訪れた場合に、その日の00時から23時までのソルトが生成されるように、ソルトデータベースDB1が更新される。
【0057】
[1-3-2.認証サーバにおいて実現される機能]
データ記憶部200は、記憶部22を主として実現される。受信部201、ソルト要求部202、ソルト取得部203、逆変換部204、処理実行部205、TUID生成部206、及び送信部207が実現される。
【0058】
[データ記憶部]
データ記憶部200は、ユーザPC30との通信に必要なデータを記憶する。第1実施形態では、通信システムSにおいて多要素認証が実行されるので、データ記憶部200は、多要素認証に必要なデータを記憶する。例えば、データ記憶部200は、ユーザデータベースDB2を記憶する。
【0059】
図5は、ユーザデータベースDB2の一例を示す図である。ユーザデータベースDB2は、ユーザに関する情報が格納されたデータベースである。例えば、ユーザデータベースDB2には、ユーザID、パスワード、氏名、TUID、顔写真、及び顔の特徴量が格納される。ユーザデータベースDB2に格納される情報は、任意の種類であってよく、図5の例に限られない。例えば、ユーザPC30とのセッションを維持するためのセッションID、ユーザによる過去のログイン履歴、又はユーザによるオンラインサービスの利用履歴がユーザデータベースDB2に格納されてもよい。
【0060】
顔写真は、生体データ(生体情報)の一例である。TUIDは、生体データとは異なる認証データ(認証情報)の一例である。このため、顔写真について説明している箇所は、生体データと読み替えることができる。TUIDについて説明している箇所は、生体データとは異なる認証データと読み替えることができる。生体データと、生体データとは異なる認証データと、の組み合わせは、任意の組み合わせであってよい。この組み合わせは、多要素認証における要素の組み合わせである。
【0061】
生体データは、生体認証で利用されるデータである。生体データ自体は、種々のデータであってよく、例えば、顔の特徴量が生体データに相当してもよい。顔の特徴量が変換されたテンプレートと呼ばれる情報が生体データに相当してもよい。顔認証以外の生体認証が利用される場合には、生体認証に応じた生体データが利用されるようにすればよい。他の生体データの例は、先述した通りである。生体データとは異なる認証データは、生体データとともに多要素認証で利用される情報である。この認証データは、所持情報又は知識情報である。3要素以上の多要素認証であれば、生体データとは異なる認証データは、複数存在してもよい。
【0062】
なお、データ記憶部200は、ユーザデータベースDB2以外の他の任意のデータを記憶可能である。例えば、データ記憶部200は、逆変換関数f-1を記憶してもよい。例えば、データ記憶部200は、TUIDを生成するアルゴリズムを記憶してもよい。
【0063】
[受信部]
受信部201は、ユーザPC30から、変換後のTUIDを受信する。受信部201は、任意の期間に応じたソルトで変換された変換後のTUIDを受信可能である。先述した第1期間に応じたソルトで変換された変換後のTUIDは、第1変換データの一例である。このため、第1期間に応じたソルトで変換された変換後のTUIDについて説明している箇所は、第1変換データと読み替えることができる。第1変換データは、元データの一例であるTUIDに対して第1期間に応じた第1変換が行われたデータである。元データは、変換の対象となるデータである。元データは、変換前のデータである。元データは、暗号理論における平文に相当する。第1実施形態では、元データは、ユーザPC30のユーザに関する認証データである。元データは、変換前のデータなので、生データと呼ばれることもある。
【0064】
第1実施形態では、受信部201は、ユーザPC30から、変換後のTUIDと、顔写真と、を受信する。顔写真を受信するとは、顔が撮影された画像の画像データを受信することである。顔写真は、静止画であってもよいし、動画に含まれる個々のフレームであってもよい。第1実施形態では、変換後のTUIDと、顔写真と、が認証要求に含まれる場合を例に挙げる。このため、受信部201は、ユーザPC30から認証要求を受信することによって、変換後のTUIDと、顔写真と、を受信する。認証要求は、多要素認証を実行するための要求である。認証要求は、所定の形式の情報が送信されることにより行われるようにすればよい。認証要求は、他の情報が含まれてもよい。例えば、認証要求には、ユーザPC30のIPアドレスといったように、ユーザPC30を識別可能な情報が含まれてもよい。
【0065】
[ソルト要求部]
ソルト要求部202は、ソルトサーバ10に対し、ソルトを要求する。ソルト要求部202は、ソルトサーバ10に対し、ソルト要求を送信することによって、ソルトを要求する。第1実施形態では、ソルト要求部202は、ソルトサーバ10に対し、ソルトの取得ルールに関する情報を含まないソルト要求を送信する。例えば、日及び時間帯の組み合わせに応じたソルトが取得される場合、取得ルールは、日及び時間帯の組み合わせとなる。ソルト要求には、日及び時間帯の情報は含まれないので、取得ルールに関する情報が含まれない。
【0066】
取得ルールに関する情報がソルト要求に含まれない点は、他の取得ルールを採用する場合も同様である。例えば、時間帯を考慮せずに日ごとに異なるソルトにする場合には、取得ルールは、日のみとなる。ソルト要求には、日に関する情報は含まれないので、取得ルールに関する情報が含まれない。例えば、日を考慮せずに時間帯ごとに異なるソルトにする場合には、取得ルールは、時間帯のみとなる。ソルト要求には、時間帯に関する情報は含まれないので、取得ルールに関する情報が含まれない。
【0067】
なお、ソルト要求には、ソルトの取得ルールが含まれてもよい。例えば、ソルトを生成するための種となる情報がソルト要求に含まれてもよい。この場合、種が同じでなければ同じソルトにはならないので、認証サーバ20及びユーザPC30の間で、ソルトを生成した種が共有されるものとする。例えば、後述の第2実施形態のように、ソルトの取得ルールの一部(第2実施形態では、TUIDの下2桁)がソルト要求に含まれてもよい。
【0068】
[ソルト取得部]
ソルト取得部203は、変換後のTUIDを逆変換するためのソルトであって、第1期間に応じた第1ソルトを取得する。この第1ソルトは、第1逆変換情報の一例である。ソルト取得部203は、逆変換情報取得部の一例である。このため、ソルト取得部203について説明している箇所は、逆変換情報取得部と読み替えることができる。逆変換情報取得部は、ソルトを一例とする逆変換情報を取得する。逆変換情報がソルト以外の名前で呼ばれる場合には、逆変換情報取得部は、この名前に応じた名前で呼ばれてよい。例えば、逆変換情報が鍵又はパスワードと呼ばれる場合には、逆変換情報取得部は、鍵又はパスワードを取得する。
【0069】
第1実施形態では、ソルトサーバ10がソルトを管理するので、ソルト取得部203は、ソルトサーバ10からソルトを取得する。ソルトは、認証サーバ20自身が管理してもよい。この場合、データ記憶部200は、ソルトデータベースDB1を記憶する。更に、この場合、ソルトサーバ10で実現されるものとして説明したソルト生成部101、受信部102、送信部103、及び更新部104は、認証サーバ20により実現される。
【0070】
第1実施形態では、ソルト取得部203は、第1期間が示す日及び時間帯の組み合わせに応じたソルトを取得する。日及び時間帯の組み合わせは、第1期間の一例である。このため、日及び時間帯の組み合わせについて説明している箇所は、第1期間と読み替えることができる。第1期間は、ソルトが取得される第1時点が属する期間である。第1実施形態では、第1期間が日及び時間帯の組み合わせで示される場合を例に挙げるが、第1期間は、日だけを意味してもよいし、時間帯だけを意味してもよい。
【0071】
第1期間の区切り方は、第1実施形態のような1時間単位に限られない。個々の期間の長さは、1時間よりも長くてもよいし短くてもよい。ある期間と他の期間の長さが異なってもよい。第1期間が日及び時間帯の組み合わせ以外の他の意味だったとしても、ソルト取得部203は、第1期間に応じたソルトを取得すればよい。個々の期間と、ソルトと、の関係は、ソルトデータベースDB1に格納されているものとする。
【0072】
ソルト取得部203は、第1期間に応じたソルトを取得すればよい。例えば、ソルト取得部203は、ソルトデータベースDB1において、第1期間に関連付けられた第1ソルトを取得する。ソルト取得部203は、ソルトデータベースDB1が更新された後は、更新後のデータベースにおいて、第1期間に関連付けられた第1ソルトを取得する。ソルトサーバ10が認証サーバ20からのソルト要求を受け付けた時点が属する期間が、第1期間よりも後の第2期間だった場合には、ソルト取得部203は、第2期間に応じたソルトを取得する。
【0073】
[逆変換部]
逆変換部204は、第1変換データの一例である変換後のTUIDに対し、第1期間に応じた第1逆変換を行って、元データ及び認証データの一例であるTUIDを取得する。第1逆変換は、第1変換に応じた逆変換である。第1逆変換は、暗号理論における復号化である。認証サーバ20が変換後のTUIDを逆変換する時点が、第1期間よりも後の第2期間であれば、逆変換部204は、第2変換データに対し、第2期間に応じた第2逆変換を行って、元データを取得する。
【0074】
逆変換部204は、第1期間に応じた第1ソルトに基づいて、変換後のTUIDを逆変換することによって、第1逆変換を行う。第1逆変換のための逆変換関数f-1は、データ記憶部200に記憶されているものとする。逆変換部204は、逆変換情報の一例である第1ソルトに基づいて、変換後のTUIDを逆変換関数f-1で逆変換する。図2の例であれば、逆変換部204は、変換後のTUIDから第1ソルトを減算することによって、変換後のTUIDを逆変換してTUIDを取得する。
【0075】
なお、逆変換自体は、種々の逆変換関数f-1を利用可能であり、図2のような減算に限られない。例えば、加算、乗算、除算、行列変換、その他の計算、又はこれらの組み合わせにより、逆変換が行われてもよい。図2の例では、説明の簡略化のために、変換関数f及び逆変換関数f-1がそれぞれ単純な加算及び減算である場合を示しているが、実際には、ある程度複雑な計算式であるものとする。更に、逆変換は、暗号理論における復号化に限られず、圧縮されたファイルの解凍であってもよい。解凍が逆変換に相当する場合、圧縮が変換に相当する。圧縮は、ファイルに対して何らかの変換が行われるので、第1実施形態における変換に相当する。解凍は、圧縮済みのファイルを元の状態に戻す処理なので、第1実施形態における逆変換に相当する。
【0076】
[処理実行部]
処理実行部205は、第1逆変換により取得された認証データに基づいて、ユーザに関する認証処理を実行する。第1実施形態では、認証処理の一例として多要素認証を説明するが、認証処理は、1要素認証であってもよい。例えば、顔認証が利用されずに、TUIDの認証のみが実行されてもよい。また、処理実行部205は、通信システムSを適用する場面に応じた処理を実行すればよく、処理実行部205が実行する処理は、認証処理に限られない。他の場面に通信システムSを適用した場合の処理は、後述の変形例で説明する。処理実行部205は、逆変換部204により取得された元データに基づいて、所定の処理を実行すればよい。
【0077】
例えば、処理実行部205は、逆変換部204により逆変換されたTUIDと、受信部201が受信した顔写真と、に基づいて、多要素認証を実行する。先述したように、多要素認証自体は、種々の種類を利用可能である。第1実施形態では、処理実行部205は、ユーザデータベースDB2を参照し、逆変換部204により逆変換されたTUIDに関連付けられた顔の特徴量を取得する。この顔の特徴量は、多要素認証における正解となる認証データである。ユーザデータベースDB2に格納された顔の特徴量のうち、逆変換部204により逆変換されたTUIDに関連付けられた顔の特徴量だけが比較対象となる。他の顔の特徴量は、比較対象にならない。
【0078】
処理実行部205は、受信部201が受信した顔写真に基づいて、顔の特徴量を計算する。顔の特徴量の計算方法自体は、種々の計算方法を利用可能である。例えば、コントラストフィルタ又は主成分分析を利用した計算方法により、顔の特徴量が計算されてもよい。顔の特徴量は、多次元ベクトル、配列、又は単一の数値といった任意の形式で表現可能である。顔認証は、顔の特徴量同士を比較するものではなく、2枚の顔写真を機械学習モデルに入力して類否を判定するタイプのものであってもよい。
【0079】
処理実行部205は、ユーザデータベースDB2から取得した顔の特徴量と、受信部201が受信した顔写真から計算した顔の特徴量と、の類否を判定する。例えば、顔の特徴量が多次元ベクトルで表現される場合、ベクトル空間上における顔の特徴量の距離が閾値未満であることは、特徴量が類似することに相当する。処理実行部205は、顔の特徴量が互いに類似する場合、多要素認証が成功したと判定する。処理実行部205は、顔の特徴量が互いに類似しない場合、多要素認証が失敗したと判定する。
【0080】
[TUID生成部]
TUID生成部206は、認証処理が成功した場合に、新たなTUIDを生成する。TUID生成部206は、所定のアルゴリズムに基づいて、TUIDを生成する。TUID生成部206は、ユーザPC30にTUIDが存在しない場合に、ユーザPC30に新たに記録するTUIDを生成する。TUID生成部206は、ユーザPC30にTUIDが存在する状態で、このTUIDに代えてユーザPC30に書き込むTUID(更新後のTUID)を生成する。
【0081】
例えば、TUID生成部206は、ランダムな値になるように、TUIDを生成する。ランダムな値を生成する方法自体は、公知の種々の方法を利用可能である。例えば、TUID生成時のタイムスタンプを利用する方法であってもよいし、タイムスタンプ以外の他のデータを利用する方法であってもよい。TUID生成部206は、ユーザデータベースDB2に、生成したTUIDを格納する。
【0082】
TUID生成部206は、他のユーザのTUIDと重複しないように、TUIDを生成してもよい。TUID生成部206は、顔が似ていない他のユーザのTUIDとの重複は許可するが、顔が似た他のユーザのTUIDと重複しないように、TUIDを生成してもよい。TUID生成部206は、多要素認証が成功した場合に、TUIDを生成してもよい。即ち、TUID生成部206は、ユーザがオンラインサービスにログインするたびに、TUIDを生成してもよい。1回目のログインであれば、TUID生成部206は、ユーザID及びパスワードの認証が成功した場合に、TUIDを生成する。
【0083】
なお、TUIDが生成されるタイミングは、任意のタイミングであってよく、第1実施形態の例に限られない。例えば、1回のログインだけでTUIDが無効になるのではなくい、2回以上の所定回数だけ同じTUIDを有効にする場合には、TUID生成部206は、当該所定回数のログインが発生するたびに、TUIDを生成してもよい。例えば、TUIDに有効期限を設ける場合には、TUID生成部206は、有効期限が近づいた時にユーザがログインした場合に、TUIDを生成してもよい。
【0084】
[送信部]
送信部207は、ユーザPC30に対し、多要素認証の認証結果を送信する。認証結果は、多要素認証が成功したか否かを示す所定の形式の情報である。例えば、認証結果は、ログインが許可されたか否かが示される。第1実施形態では、ログインのタイミングで新たなTUIDが生成されるので、認証結果には、新たなTUIDが含まれる。
【0085】
なお、多要素認証が成功すると、所定の処理の実行が許可される。第1実施形態では、この処理の一例として、オンラインサービスへのログインを説明するが、この処理は、多要素認証が成功したことを条件として許可される処理であればよい。この処理は、通信システムSを適用する場面に応じて定めればよい。例えば、金融サービスに通信システムSを適用する場合には、振込の実行が所定の処理に相当してもよい。例えば、決済サービスに通信システムSを適用する場合には、決済の実行が所定の処理に相当してもよい。例えば、電子商取引サービスに通信システムSを適用する場合には、商品の購入が所定の処理に相当してもよい。所定の処理は、他の任意の処理であってよい。
【0086】
[1-3-3.ユーザPCにおいて実現される機能]
データ記憶部300は、記憶部32を主として実現される。ソルト要求部301、ソルト取得部302、変換部303、送信部304、及び受信部305は、制御部31を主として実現される。
【0087】
[データ記憶部]
データ記憶部300は、多要素認証に必要なデータを記憶する。例えば、データ記憶部300は、TUID及び変換関数fを記憶する。ユーザの顔写真を生成するために撮影部36を利用しない場合には、データ記憶部300は、ユーザの顔写真の画像データを記憶してもよい。例えば、オンラインサービス用のアプリケーションが用意されている場合には、データ記憶部300は、このアプリケーションを記憶してもよい。
【0088】
[ソルト要求部]
ソルト要求部301は、ソルトサーバ10に対し、ソルトを要求する。ソルト要求部301は、ソルトサーバ10に対し、ソルト要求を送信することによって、ソルトを要求する。第1実施形態では、ソルト要求部301は、ソルトサーバ10に対し、ソルトの取得ルールに関する情報を含まないソルト要求を送信する。この点は、認証サーバ20のソルト要求部202と同様である。ソルト要求に関する他の点についても、ソルト要求部202の処理で説明した通りである。
【0089】
第1実施形態では、ソルト要求部301は、撮影部36により顔写真が生成された場合に、ソルトサーバ10に対し、ソルトを要求する。ソルト要求部301は、任意のタイミングでソルトを要求すればよく、顔写真が生成されたタイミングに限られない。例えば、ソルト要求部301は、オンラインサービス用のアプリケーションが起動したタイミング、ユーザがログインをするための操作をしたタイミング、又はオンラインサービスのウェブサイトへのアクセスが発生したタイミングで、ソルトを要求してもよい。
【0090】
[ソルト取得部]
ソルト取得部302は、元データの一例であるTUIDを変換するためのソルトであって、第1期間に応じた第1ソルトを取得する。この第1ソルトは、第1変換情報の一例である。ソルト取得部302は、変換情報取得部の一例である。このため、ソルト取得部302について説明している箇所は、変換情報取得部と読み替えることができる。変換情報取得部は、ソルトを一例とする変換情報を取得する。変換情報がソルト以外の名前で呼ばれる場合には、変換情報取得部は、この名前に応じた名前で呼ばれてよい。例えば、変換情報が鍵又はパスワードと呼ばれる場合には、変換情報取得部は、鍵又はパスワードを取得する。
【0091】
第1実施形態では、ソルトサーバ10からユーザPC30へのソルトの取得と、ソルトサーバ10から認証サーバ20へのソルトの取得と、が同じ手順で行われるので、ソルト取得部302の処理は、認証サーバ20のソルト取得部203の処理と同様である。このため、ソルトサーバ10からソルトを取得する点、日及び時間帯の組み合わせに応じたソルトを取得する点についても同様である。
【0092】
第1実施形態では、第1期間は、日及び時間帯の組み合わせで示されるので、ソルト取得部302は、第1期間が示す日及び時間帯の組み合わせに応じた第1ソルトを取得する。ソルト取得部302は、ソルトデータベースDB1において、第1期間に関連付けられた第1ソルトを取得する。ソルト取得部302は、ソルトデータベースDB1が更新された後は、更新後のソルトデータベースDB1において、第1期間に関連付けられた第1ソルトを取得する。ソルト取得部302は、ソルトサーバ10から、第1ソルトを取得する。
【0093】
[変換部]
変換部303は、元データ及び認証データの一例であるTUIDに対し、TUIDが変換される第1時点が属する第1期間に応じた第1変換を行って、第1変換データを生成する。第1変換は、第1期間に応じた変換である。第1実施形態では、第1期間に応じた第1ソルトに基づく変換が第1変換に相当する。第1時点とは異なる第2時点ではあるが、第1時点と同じ第1期間に属する第2時点であれば、第1変換が行われる。このため、変換部303は、第1期間に属し、かつ、第1時点とは異なる第2時点にTUIDが変換される場合に、TUIDに対し、第1変換を行って、第1変換データを生成する。
【0094】
一方で、第1期間とは異なる第2期間であれば、第1変換とは異なる第2変換が行われる。このため、変換部303は、第1期間とは異なる第2期間に属し、かつ、第1時点及び第2時点とは異なる第3時点にTUIDが変換される場合に、TUIDに対し、第2期間に応じた第2変換を行って、第2変換データを生成する。第1実施形態では、第2期間に応じた第2ソルトに基づく変換が第2変換に相当する。変換関数f自体は、第1変換と第2変換で同じであるが、変換関数fに入力されるソルトは、第1変換の場合には第1ソルトであり、第2変換の場合には第2ソルトなので、第1変換と第2変換は、互いに異なる変換である。即ち、第1変換で利用される第1変換情報の一例である第1ソルトと、第2変換で利用される第2変換情報の一例である第2ソルトと、は互いに異なる。
【0095】
変換部303は、第1ソルトに基づいて、TUIDを変換することによって、第1変換を行う。変換は、暗号理論における暗号化である。変換は、TUIDに対して何らかの変更がなされるものであればよい。例えば、TUIDを何らかの関数に入力すること、TUIDの一部を変更すること、TUIDの全部を変更すること、TUIDに対して何らかの情報を付加すること、又はTUIDの一部を削除することが変換に相当する。逆変換は、これらの逆方向の処理(TUIDを元に戻す処理)であればよい。先述したように、ファイルの圧縮が変換に相当し、ファイルの解凍が逆変換に相当してもよい。この場合、第1ソルトをパスワードとして利用し、圧縮又は解凍が実行される。
【0096】
変換のための変換関数fは、データ記憶部300に記憶されているものとする。変換部303は、変換情報の一例であるソルトに基づいて、変換前のTUIDを変換関数fで変換する。図2の例であれば、変換部303は、変換前のTUIDにソルトを加算することによって、変換前のTUIDを変換し、変換後のTUIDを取得する。変換自体は、種々の変換関数を利用可能であり、図2のような加算に限られない。例えば、減算、乗算、除算、行列変換、その他の計算、又はこれらの組み合わせにより、変換が行われてもよい。
【0097】
[送信部]
送信部304は、認証サーバ20に対し、変換後のTUIDを送信する。例えば、送信部304は、認証サーバ20に対し、変換後のTUIDと、顔写真と、を送信する。第1実施形態では、変換後のTUIDと、顔写真と、が認証要求に含まれる場合を例に挙げる。このため、送信部304は、認証サーバ20に対し、変換後のTUIDと、顔写真と、を含む認証要求を送信することによって、変換後のTUIDと、顔写真と、を送信する。送信部304は、変換後のTUIDと、顔写真と、を1つのデータにまとめて送信しなくてもよい。送信部304は、変換後のTUIDと、顔写真と、を別々に送信してもよい。なお、顔写真もそのまま送信されるのではなく、ソルト又は他の暗号鍵に基づいて変換されてもよい。ユーザPC30側で顔の特徴量が計算されて、当該計算された顔の特徴量が生体データとして送信されてもよい。
【0098】
[受信部]
受信部305は、認証サーバ20から、認証結果を受信する。この認証結果が成功を示す場合、ユーザがオンラインサービスにログインする。即ち、先述した所定の処理の実行が許可される。新たなTUIDが認証結果に含まれている場合、受信部305は、認証結果に含まれるTUIDをデータ記憶部300に記録する。それまでに記録されていた古いTUIDは、データ記憶部300から破棄される。
【0099】
[1-4.第1実施形態の通信システムで実行される処理]
図6及び図7は、第1実施形態の通信システムSで実行される処理の一例を示す図である。制御部11,21,31がそれぞれ記憶部12,22,32に記憶されたプログラムを実行することによって、図6及び図7の処理が実行される。図6及び図7の処理が実行されるにあたり、ユーザのユーザID及びパスワードが発行済みであるものとする。また、ソルトデータベースDB1にソルトが格納済みであるものとする。
【0100】
図6のように、ユーザPC30は、オンラインサービスのアプリケーションを起動させ、記憶部32にTUIDがあるか否かを判定する(S1)。TUIDがないと判定された場合(S1;N)、ユーザPC30は、操作部34の検出信号に基づいて、ユーザによるユーザID及びパスワードの入力を受け付ける(S2)。認証サーバ20及びユーザPC30の間で、オンラインサービスにログインするためのログイン処理が実行される(S3)。S3では、ユーザデータベースDB2に基づいて、ユーザID及びパスワードの正当性が確認される。ログインが成功すると、認証サーバ20は、新たなTUIDを発行し(S4)、ユーザPC30に対し、新たなTUIDを含む認証結果を送信する(S5)。
【0101】
ユーザPC30は、認証結果を受信すると(S6)、認証結果に含まれるTUIDを記憶部32に記録し(S7)、本処理は終了する。S7において、TUIDは、cookieの一部として記録されてもよい。その後、ユーザPC30は、ユーザにオンラインサービスを利用させるための処理を実行する。ユーザがオンラインサービスからログアウトするための操作をすると、認証サーバ20及びユーザPC30の間で、オンラインサービスからログアウトするためのログアウト処理が実行される。
【0102】
S1において、TUIDがあると判定された場合(S1;Y)、ユーザPC30は、撮影部36に基づいて、ユーザの顔を撮影して顔写真を生成する(S8)。ユーザPC30は、ソルトサーバ10に対し、ソルト要求を送信する(S9)。ソルトサーバ10は、ソルト要求を受信すると(S10)、ソルトデータベースDB1に基づいて、ユーザPC30に対し、現在の日及び時間帯に応じたソルトを送信する(S11)。ユーザPC30は、ソルトサーバ10からソルトを受信すると(S12)、このソルトに基づいて、記憶部32に記憶されたTUIDを変換する(S13)。
【0103】
図7に移り、ユーザPC30は、認証サーバ20に対し、S13における変換後のTUIDと、S8で生成した顔写真と、を含む認証要求を送信する(S14)。認証サーバ20は、認証要求を受信すると(S15)、ソルトサーバ10に対し、ソルト要求を送信する(S16)。ソルトサーバ10は、ソルト要求を受信すると(S17)、ソルトデータベースDB1に基づいて、認証サーバ20に対し、現在の日及び時間帯に応じたソルトを送信する(S18)。
【0104】
認証サーバ20は、ソルトサーバ10からソルトを受信すると(S19)、このソルトに基づいて、S15で受信した認証要求に含まれる変換後のTUIDを逆変換する(S20)。認証サーバ20は、S20で逆変換されたTUIDと、S15で受信した認証要求に含まれる顔写真と、に基づいて、多要素認証を実行する(S21)。S21では、認証サーバ20は、ユーザデータベースDB2に基づいて、S20で逆変換されたTUIDに関連付けられた顔の特徴量を取得する。認証サーバ20は、S15で受信した顔写真に基づいて、顔の特徴量を計算する。認証サーバ20は、当該取得された顔の特徴量の類似度が閾値以上であるか否かを判定する。TUIDがユーザデータベースDB2に存在し、顔の特徴量の類似度が閾値以上である場合に、多要素認証が成功する。
【0105】
認証サーバ20は、多要素認証が成功したか否かを判定する(S22)。多要素認証が失敗した場合(S22;N)、本処理は終了する。この場合、ユーザID及びパスワードの入力が要求されてもよい。多要素認証が成功した場合(S22;Y)、オンラインサービスへのユーザのログインが許可され、S4の処理に移行する。S4以降の処理により、ユーザPC30のTUIDが更新される。
【0106】
第1実施形態の通信システムSによれば、ユーザPC30は、TUIDに対し、第1期間に応じた第1変換を行って、変換後のTUIDを生成する。ユーザPC30は、認証サーバ20に対し、変換後のTUIDを送信する。認証サーバ20は、ユーザPC30から、変換後のTUIDを受信する。認証サーバ20は、変換データに対し、第1期間に応じた第1逆変換を行って、TUIDを取得する。これにより、変換後のTUIDがネットワーク上に送信され、第三者にTUIDが取得されないので、通信におけるセキュリティが高まる。第三者が第1変換の仕組みを何らかの形で取得したとしても、この仕組みを利用できる期間が制限されているので、不正が行われる期間を一定程度に抑えることができ、通信におけるセキュリティが高まる。
【0107】
また、ユーザPC30は、互いに異なる第1時点及び第2時点だったとしても、同じ第1期間に属するのであれば、第1変換を行う。ユーザPC30は、第1期間とは異なる第2期間に属する第3時点にTUIDが変換される場合に、TUIDに対し、第2変換を行う。認証サーバ20は、第1期間には第1逆変換を行って、TUIDを取得する。認証サーバ20は、第2期間には第2逆変換を行って、TUIDを取得する。これにより、第1期間と第2期間で異なる変換をすることができるので、第三者が第1変換の仕組みを何らかの形で取得したとしても、第2期間になれば第1変換を利用できなくなるので、通信におけるセキュリティが高まる。
【0108】
また、ユーザPC30は、第1ソルトに基づいて、TUIDを変換することによって、第1変換を行う。認証サーバ20は、第1ソルトに基づいて、変換後のTUIDを逆変換することによって、第1逆変換を行う。これにより、変換関数f及び逆変換関数f-1を変えることなく、期間に応じて利用するソルトを変えることによって、通信におけるセキュリティが高まる。
【0109】
また、認証サーバ20及びユーザPC30の各々は、第1期間が示す日及び時間帯の組み合わせに応じた第1ソルトを取得する。これにより、第1ソルトが有効な期間を時間帯単位で設定することができるので、第1ソルトが有効な期間を比較的短くすることができる。第三者が第1ソルトを取得したとしても、第1ソルトを利用できる期間が短いので、通信におけるセキュリティが効果的に高まる。
【0110】
また、認証サーバ20及びユーザPC30の各々は、ソルトデータベースDB1において、第1期間に関連付けられた第1ソルトを取得する。これにより、予めソルトデータベースDB1に第1ソルトを格納することによって、その場で第1ソルトを生成する必要がなくなるので、通信時に必要な処理を簡易化できる。その結果、ソルトサーバ10の処理負荷を軽減し、認証処理の完了までに要する時間が短くなる。
【0111】
また、ソルトサーバ10は、ソルトデータベースDB1を更新する。これにより、同じソルトを長期間利用することがなくなるので、通信におけるセキュリティが高まる。
【0112】
また、認証サーバ20及びユーザPC30の各々は、ソルトサーバ10に対し、ソルト要求を送信する。ソルトサーバ10は、認証サーバ20及びユーザPC30の各々に対し、第1ソルトを送信する。認証サーバ20及びユーザPC30の各々は、ソルトサーバ10から、第1ソルトを取得する。これにより、認証サーバ20が第1ソルトを管理しなくてすむので、通信における処理負荷を分散させることができる。即ち、ソルトサーバ10及び認証サーバ20で通信に必要な処理を分散することができる。このため、認証サーバ20の処理負荷を軽減できる。
【0113】
また、認証サーバ20及びユーザPC30の各々は、ソルトサーバ10に対し、第1ソルトの取得ルールに関する情報を含まないソルト要求を送信する。これにより、悪意のある第三者がソルト要求を盗んだとしても、TUIDの変換の仕組みを解読されにくくなる。例えば、日及び時間帯に応じたソルトが取得されていたとしても、ソルト要求だけでは、この取得ルールを把握することができないので、通信におけるセキュリティがより高まる。
【0114】
また、認証サーバ20は、第1逆変換により取得されたTUIDに基づいて、認証処理を実行し、認証処理が成功した場合に、新たなTUIDを生成する。これにより、認証時のセキュリティが高まる。例えば、ユーザがログインするたびにTUIDが変わるので、第三者が先述したクロスサイトスクリプティング攻撃等をしたとしても認証を成功させることができないので、なりすましを防止できる。
【0115】
[2.第2実施形態]
第1実施形態では、日及び時間帯に応じたソルトが利用される場合を説明した。ソルトの取得方法は、第1実施形態の例に限られない。第2実施形態では、ソルトが取得される日と、TUIDの一部と、の組み合わせに応じたソルトが利用される場合を説明する。以降の第2実施形態及び第3実施形態では、第1実施形態と同様の点については説明を省略する。
【0116】
図8は、第2実施形態における多要素認証の流れの一例を示す図である。図8のように、大まかな流れは、第1実施形態と同様であるが、ソルトの取得方法が第1実施形態とは異なる。例えば、ソルトデータベースDB1には、日及びTUIDの下2桁の組み合わせごとに、ソルトが格納されている。ユーザPC30は、ソルトサーバ10に対し、TUID「312400」の下2桁「00」を含むソルト要求を送信する。悪意のある第三者は、TUIDの下2桁を盗んだとしても、TUID自体を盗むことはできないし、「00」の数値だけではソルトの取得ルールを把握することもできない。
【0117】
ソルトサーバ10は、ソルト要求を受信すると、ソルトデータベースDB1を参照し、現在の日と、ソルト要求に含まれるTUIDの下2桁と、の組み合わせに応じたソルトを取得する。図8の例では、ソルトサーバ10がユーザPC30からソルト要求を受信した日である「2日」と、TUIDの下2桁である「00」と、に応じたソルト「6435」を、ユーザPC30に送信する。
【0118】
ユーザPC30は、ソルトサーバ10からソルト「6435」を受信すると、このソルト「6435」に基づいて、TUID「312400」を変換する。図8の例では、TUIDの上4桁「3124」にソルト「6435」を加算した「9559」の後に、TUIDの下2桁「00」を付加する変換関数fが利用されるので、変換後のTUIDは、「955900」になる。ユーザPC30は、撮影部36が生成したユーザの顔写真と、変換後のTUID「955900」と、を含む認証要求を、認証サーバ20に送信する。
【0119】
認証サーバ20は、認証要求を受信すると、ソルトサーバ10に対し、変換後のTUID「955900」のうちの下2桁「00」を含むソルト要求を送信する。ソルトサーバ10は、ソルト要求を受信すると、ソルトデータベースDB1を参照し、現在の日である「2日」と、ソルト要求に含まれるTUIDの下2桁である「00」と、の組み合わせに応じたソルト「6435」を、認証サーバ20に送信する。
【0120】
認証サーバ20は、ソルトサーバ10からソルト「6435」を受信すると、このソルト「6435」に基づいて、ユーザPCから受信した変換後のTUID「955900」を逆変換する。図8の例では、変換後のTUID「955900」のうちの上4桁「9559」からソルト「6435」を減算した値の後に、変換後のTUIDの下2桁「00」を付加する変換関数f-1が利用される。認証サーバ20は、逆変換により、TUIDの上4桁「3124」を取得する。認証サーバ20は、TUIDの上4桁「3124」に対し、TUIDの下2桁「00」を付加し、TUID「312400」を取得する。以降の多要素認証の流れは、第1実施形態と同様である。
【0121】
第2実施形態の機能ブロックは、第1実施形態と同様である。ソルト取得部203,302は、TUIDの下2桁に応じたソルトを取得する。TUIDの下2桁は、TUIDの一部分の一例である。このため、TUIDの下2桁について説明している箇所は、TUIDの一部分と読み替えることができる。TUIDの一部分は、任意の部分であってよく、TUIDの下2桁に限られない。例えば、TUIDの上1桁であってもよいし、TUIDの2桁目~4桁目であってもよい。TUIDの一部分は、TUIDの上1桁と下1桁といったように、連続した桁でなくてもよい。TUIDの一部分の長さも任意の長さであってよい。
【0122】
第2実施形態では、ソルト取得部203,302は、ソルトが取得される日(第1期間の一例)と、TUIDの下2桁(元データの一部分の一例)と、に応じたソルトを取得する場合を説明するが、ソルト取得部203,302は、ソルトが取得される時間帯と、TUIDの下2桁と、に応じたソルトを取得してもよい。この場合、ソルトデータベースDB1には、この組み合わせごとに、ソルトが定義されているものとする。第1実施形態及び第2実施形態を組み合わせて、ソルト取得部203,302は、日、時間帯、及びTUIDの下2桁といった3つの組み合わせに応じたソルトを取得してもよい。この場合、ソルトデータベースDB1には、これら3つの組み合わせごとに、ソルトが定義されているものとする。
【0123】
第2実施形態の第1変換は、第1期間及びTUIDの一部分に応じた変換である。変換部303は、第1変換情報に基づいて、TUIDのうち、下2桁以外の残り部分を変換することによって、第1変換データを生成する。残り部分は、元データの一部分以外の部分である。TUIDが6桁であれば、残り部分は、上4桁である。ソルトを利用した変換方法自体は、第1実施形態で説明した通りである。
【0124】
送信部304は、認証サーバ20に対し、未変換のTUIDの下2桁を更に送信する。この下2桁は、暗号理論における平文に相当する。第2実施形態では、この下2桁が、変換済みのTUIDの下2桁として含まれる場合を説明するが、この下2桁は、変換済みのTUIDとは別の情報として送信されてもよい。この下2桁を変換済みのTUIDに含めて送信する場合であったとしても、元の位置(下2桁)とは異なる位置(例えば、上2桁)に付加してもよい。この下2桁は、未変換の一部分の一例である。このため、この下2桁について説明している箇所は、未変換の一部分と読み替えることができる。この一部分は、下2桁に限られない点は、先述した通りである。
【0125】
受信部201は、ユーザPC30から、未変換のTUIDの下2桁を更に受信する。第2実施形態では、未変換のTUIDの下2桁が変換済みのTUIDの一部として含まれているため、受信部201は、変換済みのTUIDを受信することによって、未変換のTUIDの下2桁を受信する。未変換のTUIDの下2桁が変換済みのTUIDとは異なる情報として送信される場合には、受信部201は、当該異なる情報として送信された未変換のTUIDの下2桁を受信すればよい。ソルト取得部203は、ソルトが取得される日(第1期間の一例)と、未変換のTUIDの下2桁と、に応じたソルトを取得する。ソルト取得部203によるソルトの取得方法は、ソルト取得部302によるソルトの取得方法と同様である。
【0126】
第2実施形態の第1逆変換は、第1期間と、未変換の一部分と、に応じた逆変換である。逆変換部204は、逆変換情報に基づいて、第1変換データの一例である変換後のTUIDの残り部分(上4桁)を逆変換して残り部分を取得し、当該残り部分と、未変換の一部分と、に基づいて、TUIDを取得する。図8の例であれば、逆変換部204は、逆変換によってTUIDの上4桁「3124」を取得するので、上4桁「3124」と、ユーザPC30から受信した下2桁「00」と、に基づいて、TUID「312400」を取得する。図8の例では、上4桁「3124」と下2桁「00」に付加される場合を説明するが、予め定められた結合ルールに基づいて、元データであるTUIDが取得されるようにすればよい。
【0127】
第2実施形態の通信システムSによれば、ユーザPC30は、第1期間と、TUIDの下2桁と、に応じた第1ソルトを取得し、未変換のTUIDの下2桁を送信する。認証サーバ20は、ユーザPC30から、未変換のTUIDの下2桁を受信し、第1期間と、未変換のTUIDの下2桁と、に応じた第1ソルトを取得する。これにより、変換後のTUIDがネットワーク上に送信され、第三者がTUIDを取得しにくくなるので、多要素認証におけるセキュリティが高まる。悪意のある第三者がソルト要求を盗んだとしても、TUIDの下2桁だけでは、変換の仕組みを把握するのが難しいので、通信におけるセキュリティがより高まる。
【0128】
また、ユーザPC30は、第1ソルトに基づいて、TUIDのうち、下2桁以外の残り部分である上4桁を変換することによって、変換後のTUIDの上4桁を生成する。認証サーバ20は、第1ソルトに基づいて、変換後のTUIDの上4桁を逆変換してTUIDの上4桁を取得し、当該上4桁と、未変換の下2桁と、に基づいて、TUIDを取得する。これにより、TUIDを複数の部分に分割したとしても、認証サーバ20は、1つにまとめたTUIDを取得し、認証処理を確実に完了できる。
【0129】
[3.第3実施形態]
第1実施形態及び第2実施形態では、ソルトの取得方法を工夫することによって、通信におけるセキュリティを高める場合について説明した。通信におけるセキュリティを高める方法は、第1実施形態及び第2実施形態の例に限られない。第3実施形態では、ユーザPC30は、TUIDを変換する時間帯に応じて変換関数fを使い分けることによって、通信におけるセキュリティを高めるようにしている。ユーザPC30は、複数の変換関数fを予め記憶しており、何れかの変換関数fでTUIDを変換可能する。
【0130】
図9は、第3実施形態における多要素認証の流れの一例を示す図である。第3実施形態では、大まかな流れは、第1実施形態及び第2実施形態と同様であってよい。図9の例では、第1実施形態と同様のソルトの取得方法を例に挙げる。ユーザPC30がソルトを取得するまでの流れは、第1実施形態と同様である。ユーザPC30は、ソルトサーバ10から、現在の日「2日」及び時間帯「01時」に応じたソルト「8414」を取得する。
【0131】
第3実施形態では、ユーザPC30は、TUIDを変換する時間帯に基づいて、変換関数fを使い分ける。例えば、ユーザPC30は、時間帯「00時」~「23時」にそれぞれ対応する変換関数f0~f23を記憶する。以降、変換関数f0~f23を区別しない時は、単に変換関数fと記載する。個々の変換関数fが示す計算方法は、互いに異なるものとする。このため、同じソルトだったとしても変換関数fが異なれば、変換後のTUIDの値も異なる。
【0132】
図9の例では、ユーザPC30は、TUIDを変換する時間帯が「01時」なので、変換関数f0~f23のうち、変換関数f1を選択する。変換関数f1は、第1実施形態の図2で説明した変換関数fと同様であるものとする。このため、ユーザPC30は、第1実施形態と同様にしてTUIDを変換し、認証サーバ20に対し、変換済みのTUIDを送信する。認証サーバ20は、変換済みのTUIDを受信すると、第1実施形態と同様にして、ソルトサーバ10からソルトを取得する。
【0133】
第3実施形態では、認証サーバ20は、TUIDを変換する時間帯に基づいて、逆変換関数f-1を使い分ける。例えば、認証サーバ20は、時間帯「00時」~「23時」にそれぞれ対応する逆変換関数f-10~f-123を記憶する。以降、逆変換関数f-10~f-123を区別しない時は、単に逆変換関数f-1と記載する。個々の逆変換関数f-1が示す計算方法は、互いに異なる。このため、同じソルトだったとしても逆変換関数f-1が異なれば、逆変換後のTUIDの値も異なる。
【0134】
個々の逆変換関数f-1が示す計算方法は、時間帯を同じとする変換関数fに対応したものになる。正確なTUIDを取得するためには、ユーザPC30が利用した変換関数fに対応した逆変換関数f-1で逆変換をする必要がある。図9の例では、TUIDを逆変換する時間帯が「01時」なので、逆変換関数f-10~f-123のうち、逆変換関数-1f1を選択する。逆変換関数f-11は、ユーザPC30が利用した変換関数f1に対応する。このため、認証サーバ20は、第1実施形態と同様にしてTUIDを変換し、正確なTUIDを取得できる。以降の多要素認証の流れは、第1実施形態と同様である。
【0135】
図10は、第3実施形態の通信システムSで実現される機能ブロックの一例を示す図である。図10のように、第3実施形態では、逆変換関数選択部208及び変換関数選択部306が実現される。逆変換関数選択部208は、制御部21を主として実現される。変換関数選択部306は、制御部31を主として実現される。
【0136】
変換関数選択部306は、複数の変換関数fの中から、第1期間に応じた第1変換方法を選択する。変換関数fは、第1変換方法の一例である。このため、変換関数fについて説明している箇所は、変換方法と読み替えることができる。変換方法は、TUIDを変換する方法である。変換方法は、TUIDをどのように変換するかを定義したものであればよく、変換関数fに限られない。例えば、変換方法は、関数とは呼ばれない計算式、又は、暗号化アルゴリズムであってもよい。他にも例えば、変換方法は、ファイル圧縮のアルゴリズムであってもよい。
【0137】
変換関数選択部306は、所定の選択方法に基づいて、複数の変換関数fのうちの何れかを選択すればよい。第3実施形態では、選択方法の一例として時間帯を利用する場合を説明する。変換関数選択部306は、時間帯に応じた変換関数fを選択する。時間帯及び変換関数fの関係は、予めデータ記憶部300に定義されているものとする。変換関数選択部306は、現在の時間帯に対応する変換関数fを選択する。第3実施形態では、時間帯が示す数値「00」~「23」と、変換関数「f0」~「f23」に含まれる数値と、が互いに対応している。
【0138】
第3実施形態では、時間帯は、第1期間の一例である。このため、時間帯について説明している箇所は、第1期間と読み替えることができる。第3実施形態では、第1期間が時間帯で示される場合を説明するが、第1期間は、第1実施形態及び第2実施形態のように日及び時間帯の組み合わせで示されてもよいし、日だけで示されてもよい。第1期間が他の意味だったとしても、変換関数選択部306は、第1期間が示す時間帯に応じた変換関数fを選択する。個々の期間と、変換関数fと、の関係は、予めデータ記憶部300に定義されているものとする。
【0139】
変換部303は、変換関数選択部306により選択された変換関数fに基づいて、TUIDを変換することによって、第1変換を行う。変換関数選択部306により選択された変換関数fが利用される点で、第1実施形態及び第2実施形態とは異なるが、他の点については同様である。
【0140】
逆変換関数選択部208は、複数の逆変換関数f-1の中から、第1期間に応じた逆変換関数f-1を選択する。逆変換関数f-1は、第1逆変換方法の一例である。このため、逆変換関数f-1について説明している箇所は、第1逆変換方法と読み替えることができる。第1逆変換方法は、変換後のTUIDを逆変換する方法である。逆変換方法は、変換後のTUIDをどのように逆変換するかを定義したものであればよく、逆変換関数f-1に限られない。例えば、逆変換方法は、関数とは呼ばれない計算式、又は、復号化アルゴリズムであってもよい。他にも例えば、逆変換方法は、ファイル解凍のアルゴリズムであってもよい。
【0141】
逆変換関数選択部208は、所定の選択方法に基づいて、複数の逆変換関数f-1のうちの何れかを選択すればよい。第3実施形態では、選択方法の一例として時間帯を利用する場合を説明する。逆変換関数選択部208は、第1期間が示す時間帯に応じた逆変換関数f-1を選択する。時間帯及び逆変換関数f-1の関係は、予めデータ記憶部200に定義されているものとする。逆変換関数選択部208は、現在の時間帯に対応する逆変換関数f-1を選択する。例えば、逆変換関数選択部208は、変換関数選択部306により選択された変換関数fに対応する逆変換関数f-1として、第1変換期間に応じた逆変換関数f-1を選択する。
【0142】
逆変換部204は、逆変換関数選択部208により選択された逆変換関数f-1に基づいて、変換後のTUIDを逆変換することによって、第1逆変換を行う。逆変換関数選択部208により選択された逆変換関数f-1が利用される点で、第1実施形態及び第2実施形態とは異なるが、他の点については同様である。
【0143】
第3実施形態の通信システムSによれば、ユーザPC30は、複数の変換関数fの中から、第1期間に応じた変換関数fを選択し、TUIDを変換する。認証サーバ20は、複数の逆変換関数f-1の中から、第1期間に応じた逆変換関数f-1を選択し、変換後のTUIDを逆変換する。これにより、変換後のTUIDがネットワーク上に送信され、第三者がTUIDを取得しにくくなるので、通信におけるセキュリティが高まる。また、変換関数fが動的に変わるので、第三者が変換の仕組みを把握しにくくなり、通信におけるセキュリティがより高まる。
【0144】
また、ユーザPC30は、第1期間が示す時間帯に応じた変換関数fを選択する。認証サーバ20は、第1期間が示す時間帯に応じた逆変換関数f-1を選択する。これにより、変換関数fがより短い期間に応じて変わるので、同じ変換関数fを使いまわす頻度が更に下がり、第三者が変換の仕組みを把握しにくくなる。
【0145】
[4.変形例]
なお、本開示は、以上に説明した第1実施形態~第3実施形態に限定されるものではない。本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
【0146】
[4-1.変形例1]
例えば、第1実施形態の図2の例において、ユーザPC30からのソルト要求が受け付けられた時点が「2021年12月2日01:59:59」であり、認証サーバ20からのソルト要求が受け付けられた時点が「2021年12月2日02:00:00」だったとする。この場合、ユーザPC30が取得するソルトは「8414」になり、認証サーバ20が取得するソルトは「9436」になる。この場合、TUIDの変換で利用されるソルトと、変換後のTUIDの逆変換で利用されるソルトと、が異なるので、認証サーバ20は、正確なTUIDを取得できない。そこで、変形例1では、ユーザPC30から認証サーバ20に対し、TUIDの変換で利用したソルトがどの時間帯のものなのかを識別可能な情報が送信される場合を説明する。
【0147】
図11は、変形例1における多要素認証の流れの一例を示す図である。変形例1では、ソルトサーバ10がユーザPC30からソルト要求を受信するまでの流れは、第1実施形態と同様である。ソルトサーバ10は、ユーザPC30からソルト要求を受信すると、現時点が属する日及び時間帯に応じた1つ目のソルトと、次の時間帯に応じた2つ目のソルトと、をユーザPC30に送信する。
【0148】
図11の例では、ユーザPC30からのソルト要求が受け付けられた時点を、「2021年12月2日01:59:59」とする。ソルトサーバ10は、「2日」及び「01時」に応じた1つ目のソルト「8414」と、次の時間帯である「2日」及び「02時」に応じた2つ目のソルト「9436」と、のペアを、ユーザPC30に送信する。ユーザPC30は、ソルトサーバ10から、ソルトのペア「8414」「9436」を受信する。
【0149】
ユーザPC30は、ソルトのペア「8414」「9436」のうちの何れかを選択する。ユーザPC30は、所定の選択方法に基づいて、ソルトを選択すればよい。変形例1では、1つ目のソルトを選択することが決められている場合を例に挙げるが、他の選択方法に基づいてソルトが選択されてもよい。例えば、ユーザPC30は、ソルト要求を送信した時点、ソルトのペアを受信した時点、又はソルトを選択する時点に基づいて、ソルトを選択してもよい。
【0150】
図11の例では、ユーザPC30は、1つ目のソルト「8414」に基づいて、TUID「312456」を変換する。変換後のTUIDは、「320870」になる。ユーザPC30は、認証サーバ20に対し、変換後のTUID「320870」と、1つ目のソルト「8414」に対応する時間帯を識別可能なタイムスタンプ「59:59」と、を送信する。このタイムスタンプは、現在の時点「2021年12月2日01:59:59」であってもよいが、第三者に入手される情報を少なくするために、「59:59」のみが送信されるものとする。タイムスタンプは、ソルト要求を送信した時点、ソルトを受信した時点、TUIDを変換した時点、又は変換後のTUIDが送信される時点の何れが利用されてもよい。
【0151】
認証サーバ20は、変換後のTUID「320870」と、タイムスタンプ「59:59」と、を受信すると、ソルトサーバ10に対し、ソルト要求を送信する。ソルトサーバ10は、認証サーバ20からソルト要求を受信すると、現時点が属する日及び時間帯に応じたソルトと、次又は前の時間帯に応じたソルトと、のペアを、認証サーバ20に送信する。
【0152】
図11の例では、認証サーバ20からのソルト要求が受け付けられた時点を、「2021年12月2日01:59:59」とする。この場合、ソルトサーバ10は、「2日」及び「01時」に応じた1つ目のソルト「8414」と、次の時間帯である「2日」及び「02時」に応じた2つ目のソルト「9436」と、のペアを、認証サーバ20に送信する。認証サーバ20は、ソルトサーバ10から、ソルトのペア「8414」「9436」を受信する。
【0153】
一方、認証サーバ20からのソルト要求が受け付けられた時点が「2021年12月2日02:00:00」だったとする。この場合、ソルトサーバ10は、前の時間帯である「2日」及び「01時」に応じた1つ目のソルト「8414」と、現時点が属する時間帯である「2日」及び「02時」に応じた2つ目のソルト「9436」と、のペアを、認証サーバ20に送信する。認証サーバ20は、ソルトサーバ10から、ソルトのペア「8414」「9436」を受信する。このように、ソルトサーバ10は、時間帯の区切りの直前であるか直後であるかに応じて、1つ前の時間帯のソルトを送信するか、1つ後の時間帯のソルトを送信するか、を制御してもよい。
【0154】
認証サーバ20は、ユーザPC30から受信したタイムスタンプ「59:59」により、時間帯が相対的に前のソルトが変換で利用されたことを特定できる。即ち、認証サーバ20から受信したソルトのペアのうち、1つ目のソルトが利用されたことを特定できる。認証サーバ20は、1つ目のソルト「8414」に基づいて、変換後のTUID「320870」の逆変換を実行する。以降の流れは、第1実施形態と同様である。
【0155】
一方、ユーザPC30から受信したタイムスタンプが「00:00」だったとする。この場合、ユーザPC30は、ソルト「8414」ではなく、ソルト「9436」を利用してTUID「312456」を変換している。この場合、認証サーバ20は、このタイムスタンプに基づいて、時間帯が相対的に後のソルトが変換で利用されたことを特定できる。即ち、認証サーバ20は、2つ目のソルト「9436」に基づいて、逆変換を実行する。
【0156】
なお、図11の例において、ソルトサーバ10がユーザPC30からのソルト要求を受け付けた時点が「2021年12月1日23:59:59」だったとする。ソルトサーバ10は、「1日」及び「23時」に応じた1つ目のソルト「8201」と、翌日の「2日」及び「00時」に応じた2つ目のソルト「6435」と、をユーザPC30に送信すればよい。
【0157】
送信部304は、認証サーバ20に対し、第1期間に関する第1期間情報を更に送信する。図11の例では、「2日」の「01時」が第1期間に相当する。第1期間情報は、どの期間のソルトを利用すべきかを識別可能な情報である。図11の例では、タイムスタンプ「59:59」が第1期間情報に相当する。このため、タイムスタンプ「59:59」について説明している箇所は、第1期間情報と読み替えることができる。
【0158】
受信部201は、ユーザPC30から、第1期間情報を更に受信する。図11の例では、受信部201は、ユーザPC30から、第1期間情報として、タイムスタンプ「59:59」を受信する。受信部201が第1期間情報を受信すると、ソルト要求部202は、ソルトサーバ10に対し、ソルトを要求する。ソルト要求については、第1実施形態~第3実施形態で説明した通りである。
【0159】
ソルトサーバ10は、認証サーバ20からの要求を受け付けた時点が第1期間よりも後の第2期間である場合に、認証サーバ20に対し、第1期間に応じたソルトと、第2期間に応じたソルトと、を含む複数のソルトを送信する。日及び時間帯の組み合わせは、第2期間の一例である。このため、日及び時間帯の組み合わせについて説明している箇所は、第2期間と読み替えることができる。
【0160】
図11の例であれば、第1期間は、「2日」の「01時」である。この第1期間の終了時点は、「2日」の「02:00:00」の直前の時点(例えば、「2日」の「01:59:59」)である。図11の例では、第1時点である「2021年12月2日01:59:59」がこの終了時点と同じ又は間際なので、ソルトサーバ10は、第1期間である「2日」の「01時」のソルト「8414」と、第1期間の次の第2期間である「2日」の「02時」のソルト「9436」と、を送信する。
【0161】
例えば、ソルトサーバ10は、第1期間の開始直後であれば、第1期間に応じたソルトと、第1期間の前の第3期間に応じたソルトと、を含む複数のソルトを送信する。開始直後とは、第1期間の開始時点から所定時間以内(例えば、数秒~1分以内)のことである。例えば、図11の例において、第1時点が「2021年12月2日01:59:59」ではなく「2021年12月2日02:00:00」だったとする。この場合、第1期間は、「2日」の「02時」である。この第1期間の開始時点は、「2日」の「02:00:00」である。第1時点である「2021年12月2日02:00:00」がこの開始時点と同じ又は直後なので、ソルトサーバ10は、第1期間の前の第3期間である「2日」の「01時」のソルト「8414」と、第1期間である「2日」の「02時」のソルト「9436」と、を送信する。
【0162】
ソルト取得部203は、第1期間情報に基づいて、第1期間に応じたソルトを取得する。ソルト取得部203は、第1期間情報に基づいて、ソルトサーバ10から受信した複数のソルトの中から、第1期間に応じたソルトを取得する。図11の例では、ソルト取得部203は、第1期間情報に基づいて、ソルトサーバ10から受信したソルトのペアのうちの何れかを選択する。図11の例であれば、ソルト取得部203は、タイムスタンプ「59:59」により、時間的に前のソルトを選択すればよいことを特定できる。このため、ソルト取得部203は、1つめのソルト「8414」を選択する。ソルト「8414」が選択された後の逆変換の処理は、第1実施形態~第3実施形態と同様である。
【0163】
一方、図11の例において、タイムスタンプが「59:59」ではなく「00:00」だったとする。この場合、ソルト取得部203は、タイムスタンプ「00:00」により、時間的に後のソルトを選択すればよいことを特定できる。このため、ソルト取得部203は、2つめのソルト「9436」を選択する。ソルト「9436」が選択された後の逆変換の処理は、第1実施形態~第3実施形態と同様である。
【0164】
変形例1の通信システムSによれば、ユーザPC30は、認証サーバ20に対し、第1期間情報の一例であるタイムスタンプを更に送信する。認証サーバ20は、ユーザPC30から受信したタイムスタンプに基づいて、第1ソルトを取得する。これにより、ある時間帯の終了間際に第1ソルトが取得されたとしても、逆変換を正確に実行できる。このため、多要素認証が失敗してやり直すといった手間を省くことができるので、ユーザの利便性が高まる。ソルトサーバ10、認証サーバ20、及びユーザPC30も不要な処理を実行しないので、これらの処理負荷を軽減できる。
【0165】
また、ソルトサーバ10は、認証サーバ20からのソルト要求を受け付けた時点が第1期間よりも後の第2期間である場合に、認証サーバ20に対し、第1期間に応じたソルトと、第2期間に応じたソルトと、を含む複数のソルトを送信する。認証サーバ20は、第1期間情報の一例であるタイムスタンプに基づいて、複数のソルトの中から、逆変換で利用する第1ソルトを選択する。これにより、逆変換を正確に実行することができるので、多要素認証が失敗してやり直すといった手間を省くことができる。
【0166】
[4-2.変形例2]
例えば、第3実施形態(図9)のように変換関数f及び逆変換関数f-1を選択した場合にも、変形例1と同様の課題が発生する可能性がある。例えば、ユーザPC30が変換を行う時点が「2021年12月2日01:59:59」であり、認証サーバ20が逆変換を行う時点が「2021年12月2日02:00:00」だったとする。この場合、TUIDの変換関数fと、変換後のTUIDの逆変換関数f-1と、が対応しないので、認証サーバ20が正確なTUIDを取得できない可能性がある。
【0167】
そこで、変形例2では、変形例1と同様に、ユーザPC30が、認証サーバ20に対し、タイムスタンプ「59:59」を送信するものとする。このタイムスタンプにより、認証サーバ20は、逆変換を行う時点が「2021年12月2日02:00:00」だったとしても、1つ前の時間帯に対応する逆変換関数f-1を利用すればよいことを特定できる。送信部304は、認証サーバ20に対し、第1期間情報を更に送信する。
【0168】
ユーザPC30からソルトサーバ10に対してソルト要求が送信されたタイミングが図11のようなタイミングだったとすると、「2日」の「01時」が第1期間に相当する。変形例2の第1期間情報は、どの期間の逆変換関数f-1を利用すべきかを識別可能な情報である。上記の例では、タイムスタンプ「59:59」が第1期間情報に相当する。このため、タイムスタンプ「59:59」について説明している箇所は、第1期間情報と読み替えることができる。受信部201は、ユーザPC30から、第1期間情報を更に受信する。
【0169】
逆変換関数選択部208は、第1期間情報に基づいて、第1変換期間に応じた逆変換関数f-1を選択する。逆変換関数f-1を選択する時点ではなく、第1期間情報に基づいて逆変換関数f-1が選択される点で第3実施形態とは異なるが、他の点は、第3実施形態と同様である。逆変換関数選択部208は、第1期間情報に基づいて、複数の逆変換関数f-1の中から、第1変換期間に応じた逆変換関数f-1を選択すればよい。
【0170】
変形例2の通信システムSによれば、ユーザPC30は、認証サーバ20に対し、第1変換期間に関する第1期間情報を送信する。認証サーバ20は、ユーザPC30から受信した第1期間情報に基づいて、第1変換期間に応じた逆変換関数f-1を選択する。これにより、多要素認証におけるセキュリティが高まる。ある時間帯の終了間際にTUIDの変換が実行されたとしても、多要素認証を正確に実行することができる。このため、多要素認証が失敗してやり直すといった手間を省くことができるので、ユーザの利便性が高まる。ソルトサーバ10、認証サーバ20、及びユーザPC30も不要な処理を実行しないので、これらの処理負荷を軽減できる。
【0171】
[4-3.変形例3]
例えば、ユーザがログインする前に、悪意のある第三者がクロスサイトスクリプティング攻撃等によって、ユーザPC30内のTUID、変換関数f、ソルトサーバ10へのアクセス方法(例えば、特定のIPアドレスに対し、getSalt()のコマンドを送信してソルトを取得する流れ)、及びユーザの顔写真が盗まれたとする。この場合、ユーザがログインするたびにTUIDを更新したとしても、第三者は、ソルトサーバ10にアクセスする一連の流れと、認証に必要な情報を入手しているので、なりすますしが可能になる恐れがある。
【0172】
そこで、ユーザが、認証サーバ20に顔写真等の情報を登録したり、ユーザID及びパスワード等を利用して安全な方法でログインしたりする場合に、ユーザPC30は、自身に関する複数の情報に基づくハッシュ値を生成して認証サーバ20に送信してもよい。このハッシュ値は、ユーザIDに関連付けられてユーザデータベースDB2に格納される。ユーザがTUIDを利用した認証を実行してログインする場合には、ユーザPC30の送信部304は、認証サーバ20に対し、変換後のTUIDと、ユーザPC30に関する複数の情報に基づくハッシュ値と、を送信する。第1実施形態等で説明したように、送信部304は、ユーザの顔写真も送信する。
【0173】
認証サーバ20の処理実行部205は、第1逆変換により取得されたTUIDと、ハッシュ値と、に基づいて、認証処理を実行する。第1実施形態等で説明した通信システムSは、TUID認証だけではなく、顔認証も併用されるので、処理実行部205は、TUID、顔の特徴量、及びハッシュ値に基づいて、認証処理を実行する。このため、変形例3の認証処理は、三要素認証となる。TUIDと顔の特徴量を利用した認証は、第1実施形態等で説明した通りである。処理実行部205は、ユーザPC30から受信したハッシュ値と、ユーザのユーザIDに関連付けられてユーザデータベースDB2に格納されたハッシュ値と、が一致するか否かを判定する。これらが一致する場合には、ハッシュ値を利用した認証が成功する。
【0174】
なお、ハッシュ値を生成するための複数の情報としては、任意の情報を組み合わせ可能である。例えば、ユーザPC30は、ユーザPC30の種類、オペレーティングシステムの種類、ブラウザの種類といった複数の情報に基づいて、ハッシュ値を生成してもよい。他にも例えば、ユーザPC30のシリアル番号、SIMカードの番号、又は通信カードのMACアドレスといった他の情報に基づいて、ハッシュ値が生成されてもよい。ハッシュ値を生成するためのハッシュ関数自体は、種々のハッシュ関数を利用可能である。ハッシュ値は、ユーザPC30に記憶されるのではなく、認証のたびに生成されるものとする。
【0175】
変形例3の通信システムSによれば、ハッシュ値を利用した認証によって、セキュリティが高まる。例えば、悪意のある第三者がユーザPC30内のTUID等を不正に入手したとしても、ハッシュ値までは特定できない可能性が高いので、セキュリティが高まる。
【0176】
[4-4.変形例4]
例えば、通信システムSは、認証処理が実行される場面以外の他の場面に適用可能である。他の場面としては、電子メールを送信する場面、ファイルをアップロード又はダウンロードする場面、SNSの投稿が行われる場面、ブラウザで何らかのページを表示させる場面、又はユーザが個人情報をアップロード又はダウンロードする場面といった他の画面にも通信システムSを適用可能である。
【0177】
例えば、電子メールを送信する場面に通信システムSを適用したとすると、第1装置は、電子メールの送信側のコンピュータであり、第2装置は、電子メールの受信側のコンピュータである。元データは、電子メールのデータである。元データには、電子メールの本文が含まれる。電子メールに添付ファイルが添付される場合には、元データには、添付ファイルが含まれる。第1装置は、電子メールである元データに対し、第1期間に応じた第1ソルトに基づいて、第1変換を行って、第1変換データを生成する。第1変換データは、変換後の電子メールである。第1装置は、第2装置に対し、変換後の電子メールである第1変換データを送信する。第2装置は、第1変換データを受信すると、第1ソルトに基づいて第1逆変換を行って、元データである電子メールを取得する。第1ソルトの取得方法は、第1実施形態~第3実施形態及び変形例1~3で説明した通りである。
【0178】
例えば、ファイルをアップロードする場面に通信システムSを適用したとすると、第1装置は、ファイルをアップロードするユーザのコンピュータであり、第2装置は、ファイルを受信するサーバである。元データは、アップロード対象のファイルである。第1装置は、アップロード対象のファイルである元データに対し、第1期間に応じた第1ソルトに基づいて、第1変換を行って、第1変換データを生成する。第1変換データは、変換後のファイルである。第1装置は、第2装置に対し、変換後のファイルである第1変換データを送信する。第2装置は、第1変換データを受信すると、第1ソルトに基づいて第1逆変換を行って、元データであるファイルを取得する。ソルトの取得方法は、第1実施形態~第3実施形態及び変形例1~3で説明した通りである。
【0179】
他の場面に通信システムSを適用した場合も同様であり、第1装置は、元データに対し、第1期間に応じた第1変換を行えばよい。第2装置は、第1変換データに対し、第1期間に応じた第1逆変換を行えばよい。変形例4の通信システムSによれば、種々の場面における通信のセキュリティが高まる。
【0180】
[4-5.その他変形例]
例えば、第1実施形態~第3実施形態を組み合わせてもよい。上記変形例を組み合わせてもよい。
【0181】
例えば、変形例1又は変形例2の処理は、ある時間帯の終了間際にのみ実行されるようにしてもよい。例えば、ソルトサーバ10で実現されるものとして説明した機能は、認証サーバ20又はユーザPC30で実現されてもよい。この場合、通信システムSは、ソルトサーバ10を含まなくてもよい。例えば、通信システムSが複数のサーバコンピュータを含む場合には、複数のサーバコンピュータで機能が分担されてもよい。また例えば、データ記憶部100,200で記憶されるものとして説明したデータは、ソルトサーバ10又は認証サーバ20以外のコンピュータによって記憶されてもよい。
【要約】
通信システム(S)は、第1装置(10)及び第2装置(20)を含む。第1装置(10)の変換部(303)は、元データに対し、元データが変換される第1時点が属する第1期間に応じた第1変換を行って、第1変換データを生成する。送信部(304)は、第2装置(20)に対し、第1変換データを送信する。第2装置(20)の受信部(201)は、第1装置(10)から、第1変換データを受信する。逆変換部(204)は、第1変換データに対し、第1期間に応じた第1逆変換を行って、元データを取得する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11