(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2025-12-16
(45)【発行日】2025-12-24
(54)【発明の名称】情報処理システム、情報処理方法、情報処理プログラム、クライアント、サーバ
(51)【国際特許分類】
H04L 9/32 20060101AFI20251217BHJP
【FI】
H04L9/32 200A
(21)【出願番号】P 2025532987
(86)(22)【出願日】2024-12-23
(86)【国際出願番号】 JP2024045374
【審査請求日】2025-06-05
(31)【優先権主張番号】PCT/JP2024/032928
(32)【優先日】2024-09-13
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】PCT/JP2024/043100
(32)【優先日】2024-12-05
(33)【優先権主張国・地域又は機関】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】白井 達広
(72)【発明者】
【氏名】大西 崇之
(72)【発明者】
【氏名】小澤 謹裕
(72)【発明者】
【氏名】伏井 洋平
(72)【発明者】
【氏名】太田 翔也
(72)【発明者】
【氏名】坂井 仁
(72)【発明者】
【氏名】井戸 雄介
(72)【発明者】
【氏名】馬野 泰成
(72)【発明者】
【氏名】ボリソフ ユージーン
(72)【発明者】
【氏名】ガネサン ビジェイ
(72)【発明者】
【氏名】ル・メートル テオウェン
(72)【発明者】
【氏名】ゲルマンク シルヴァン
【審査官】打出 義尚
(56)【参考文献】
【文献】特開2005-301577(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
ネットワークに接続されたクライアント、および、サーバを備え、前記クライアントおよび前記サーバとの間で、チャレンジ&レスポンス方式により前記クライアントの認証処理を行う、情報処理システムであって、
前記サーバは、チャレンジデータを発行し、前記クライアントへの送信を行う手段を備え、
前記クライアントは、
第1パラメータを記憶する手段と、
クライアント側のレスポンスキーの設定を行う手段と、
前記チャレンジデータの受信を行う手段と、
前記設定されたクライアント側のレスポンスキーを用いて、前記受信されたチャレンジデータからレスポンスデータの生成を行う手段と、
前記サーバに、前記生成されたレスポンスデータと、前記記憶された第1パラメータの送信を行う手段とを備え、
前記サーバは、さらに、
前記レスポンスデータと前記第1パラメータの受信を行う手段と、
前記受信された前記第1パラメータを用いて、前記サーバ側のレスポンスキーを設定する演算のシードデータの特定を行う手段と、
前記特定されたシードデータを用いて前記演算を実行することで、サーバ側のレスポンスキーの設定を行う手段と、
前記チャレンジデータと前記設定されたサーバ側のレスポンスキーを用いて、前記受信されたレスポンスデータを検証する手段と、
前記クライアントに前記検証の結果を通知する手段とを備え、
前記クライアントは、さらに、
前記検証の結果を受信する手段を備える、情報処理システム。
【請求項2】
前記クライアント側のレスポンスキーの設定は、前記第1パラメータを用いることなく行われる、請求項1に記載の情報処理システム。
【請求項3】
前記第1パラメータは、少なくとも前記第1パラメータを含むデータの署名を付した署名付きデータであり、
前記シードデータの特定は、前記署名の検証を行うとともに、前記第1パラメータを用いて行われる、請求項
1に記載の情報処理システム。
【請求項4】
前記クライアントは、さらに、
署名されないデータである第2パラメータを記憶する手段、
前記サーバに前記記憶された第2パラメータを送信する手段を備え、
前記サーバは、さらに、前記第2パラメータを受信する受信手段を備え、
前記シードデータの特定は、前記第1パラメータおよび前記第2パラメータを用いて行われる、請求項3に記載の情報処理システム。
【請求項5】
前記サーバはさらに、前記第1パラメータと前記第2パラメータの組み合わせと、前記シードデータの対応を規定したデータを記憶する手段を含み、
前記シードデータの特定は、前記規定したデータに基づいて行われる、請求項4に記載の情報処理システム。
【請求項6】
前記演算は第1演算と第2演算を含み、
前記クライアントは、さらに、
前記第1演算の演算結果データを記憶する手段と、
前記演算結果データを前記サーバに送信を行う手段とを備え、
前記サーバは、さらに、
前記送信された演算結果データを受信する手段を備え、
前記サーバ側のレスポンスキーの設定は、前記特定されたシードデータと、前記演算結果データを用いて前記第2演算を実行することで行われる、請求項4に記載の情報処理システム。
【請求項7】
前記演算結果データと前記第1パラメータは、少なくともそれらのデータの署名が付された署名付きデータであり、
前記サーバ側のレスポンスキーの設定は、前記署名の検証をおこなうとともに、前記特定されたシードデータと、前記演算結果データを用いて前記第2演算を実行することで行われる、請求項6に記載の情報処理システム。
【請求項8】
前記サーバと前記クライアントの間の認証処理のための通信セッションは、前記チャレンジデータの送受信が行われる第1通信セッションと、前記第1通信セッションとは異なる通信セッションであり、前記レスポンスデータの送受信、前記レスポンスデータの検証およびその結果の送受信が行われる第2通信セッションを含み、
前記第1通信セッションのサーバ装置と前記第2通信セッションのサーバ装置は異なることを許容される、請求項1に記載の情報処理システム。
【請求項9】
前記クライアントは、さらに、前記受信されたチャレンジデータを前記サーバに送信する手段を備え、
前記サーバは、さらに、前記チャレンジデータを受信する手段を備え、
前記検証においては、前記受信されたチャレンジデータと前記設定されたサーバ側のレスポンスキーを用いて、前記受信されたレスポンスデータの検証を行う、請求項8に記載の情報処理システム。
【請求項10】
前記クライアントは、さらに、前記検証の結果に基づいて、アプリケーションに所定の情報を引き渡す手段を備える、請求項1に記載の情報処理システム。
【請求項11】
前記第1パラメータは、前記クライアントによって異なる値である、請求項1に記載の情報処理システム。
【請求項12】
前記第1パラメータおよび前記第2パラメータは、前記クライアントによって異なる値である、請求項4に記載の情報処理システム。
【請求項13】
請求項1ないし12のいずれかに記載の情報処理システムにおけるクライアント。
【請求項14】
コンピュータを、請求項1ないし12のいずれかに記載の情報処理システムにおけるクライアントが備える各手段として機能させるための情報処理プログラム。
【請求項15】
請求項1ないし12のいずれかに記載の情報処理システムにおけるサーバ。
【請求項16】
コンピュータを、請求項1ないし12のいずれかに記載の情報処理システムにおけるサーバが備える各手段として機能させるための情報処理プログラム。
【請求項17】
サーバとの間で、チャレンジ&レスポンス方式により認証処理を行うクライアントのコンピュータに、
クライアント側のレスポンスキーの設定を行う処理と、
前記サーバからチャレンジデータを受信する処理と、
前記設定されたクライアント側のレスポンスキーを用いて、前記受信されたチャレンジデータからレスポンスデータの生成を行う処理と、
前記サーバに、前記生成されたレスポンスデータを送信する処理と、
サーバ側で実行されるサーバ側のレスポンスキーを設定する処理に用いられる第1パラメータを前記クライアントのメモリから読み出す処理と、
前記サーバに、前記読み出した第1パラメータを送信する処理と、
前記第1パラメータに基づいて、前記サーバ側のレスポンスキーを設定する演算のシードデータを特定することによりおこなわれる、前記レスポンスデータの検証結果に基づく認証結果を前記サーバから受信する処理を実行させる、プログラム。
【請求項18】
前記クライアント側のレスポンスキーの設定は、前記第1パラメータを用いることなく行われる、請求項17に記載のプログラム。
【請求項19】
前記第1パラメータは、少なくとも前記第1パラメータを含むデータの署名を付した署名付きデータである、請求項17または18に記載のプログラム。
【請求項20】
前記コンピュータに、さらに、
前記署名されないデータである第2パラメータを前記クライアントのメモリから読み出す処理と、
前記サーバに前記読み出された第2パラメータを送信する処理を実行させ、前記サーバで行われる前記シードデータの特定は、前記第1パラメータおよび前記第2パラメータに基づいて行われる、請求項19に記載のプログラム。
【請求項21】
前記演算は第1演算と第2演算を含み、
前記コンピュータに、さらに、
前記第1演算の演算結果データを前記クライアントのメモリから読み出す処理と、
前記演算結果データを前記サーバに送信を行う処理を実行させ、
前記サーバ側のレスポンスキーの設定は、前記特定されたシードデータと、前記演算結果データを用いて前記第2演算を実行することで行われる、請求項20に記載のプログラム。
【請求項22】
前記演算結果データと前記第1パラメータは、少なくともそれらのデータの署名が付された署名付きデータである、請求項21に記載のプログラム。
【請求項23】
前記サーバと前記クライアントの間の認証処理のための通信セッションは、前記チャレンジデータの送受信が行われる第1通信セッションと、前記第1通信セッションとは異なる通信セッションであり、前記レスポンスデータの送受信、前記レスポンスデータの検証およびその結果の送受信が行われる第2通信セッションを含み、
前記第1通信セッションのサーバ装置と前記第2通信セッションのサーバ装置は異なることを許容される、請求項17に記載のプログラム。
【請求項24】
前記コンピュータに、さらに、前記受信されたチャレンジデータを前記サーバに転送する処理を実行させ、前記サーバは、前記転送された前記チャレンジデータを用いて、前記受信されたレスポンスデータの検証を行う、請求項23に記載のプログラム。
【請求項25】
前記コンピュータに前記検証の結果に基づいて、アプリケーションに所定の情報を引き渡す処理を実行させる、請求項24に記載のプログラム。
【請求項26】
前記第1パラメータは、前記クライアントによって異なる値である、請求項17に記載のプログラム。
【請求項27】
前記第1パラメータおよび前記第2パラメータは、前記クライアントによって異なる値である、請求項20に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、チャレンジ&レスポンス方式を利用するデバイス認証方法に関する。
【背景技術】
【0002】
従来から、クライアントデバイスを認証するための手法として、チャレンジ&レスポンス方式による認証方法が知られている(例えば、非特許文献1)。
【先行技術文献】
【非特許文献】
【0003】
【文献】RFC Editor、”RFC7616”、[online]、[令和6年8月29日検索]、インターネット(URL:https://www.rfc-editor.org/info/rfc7616)
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記チャレンジ&レスポンス方式を利用するデバイス認証方法について、新たな方法を提供する余地があった。
【課題を解決するための手段】
【0005】
上記の点に鑑みて、例えば以下のような構成例が挙げられる。
【0006】
(構成1)
構成1は、ネットワークに接続されたクライアント、および、サーバを備え、前記クライアントおよび前記サーバとの間で、チャレンジ&レスポンス方式により前記クライアントの認証処理を行う、情報処理システムである。
サーバは、チャンレジデータを発行し、前記クライアントへの送信を行う手段を備える。
クライアントは、第1パラメータを記憶する手段と、クライアント側のレスポンスキーの設定を行う手段と、チャレンジデータの受信を行う手段と、設定されたクライアント側のレスポンスキーを用いて、受信されたチャレンジデータからレスポンスデータの生成を行う手段と、サーバに、生成されたレスポンスデータと、記憶された第1パラメータの送信を行う手段とを備える。
上記サーバ(サーバ群の意味であり、チャンレジデータを発行し、クライアントに送信するサーバ装置と異なるサーバ装置であってもよい)は、さらに、レスポンスデータと第1パラメータの受信を行う手段と、受信された第1パラメータを用いて、サーバ側のレスポンスキーを設定する演算のシードデータの特定を行う手段と、特定されたシードデータを用いて演算を実行することで、サーバ側のレスポンスキーの設定を行う手段と、チャレンジデータと設定されたサーバ側のレスポンスキーを用いて、受信されたレスポンスデータを検証する手段と、クライアントに検証の結果を通知する手段とを備える。
クライアントは、さらに、上記検証の結果を受信する手段を備える。
【0007】
上記構成によれば、クライアントに記憶されるパラメータをサーバに送信し、それを用いてサーバ側でシードデータを特定し、サーバ側のレスポンスキーを設定するため、クライアントに応じたレスポンスキーとすることができる。この構成はシードデータの秘匿性がある場合であっても適用することができる。
【0008】
(構成2)
構成2は、上記構成1において、クライアント側のレスポンスキーの設定は、第1パラメータを用いることなく行われてもよい。
【0009】
(構成3)
構成3は、上記構成1または2において、第1パラメータは、少なくとも第1パラメータを含むデータの署名を付した署名付きデータであってもよく、シードデータの特定は、署名の検証を行うとともに、第1パラメータを用いて行われてもよい。
【0010】
(構成4)
構成4は、上記構成3において、クライアントは、さらに、署名されないデータである第2パラメータを記憶する手段、サーバに記憶された第2パラメータを送信する手段を備えてもよい。また、サーバは、さらに、第2パラメータを受信する受信手段を備えてもよい。そして、シードデータの特定は、第1パラメータおよび第2パラメータを用いて行われてもよい。
【0011】
上記構成によれば、署名されたパラメータと非署名パラメータの双方を用いて複数の異なる側面からシードデータを特定できる。
【0012】
(構成5)
構成5は、上記構成4において、サーバはさらに、第1パラメータと第2パラメータの組み合わせと、シードデータの対応を規定したデータを記憶する手段を含んでいてもよい。そして、シードデータの特定は、上記規定したデータに基づいて行われてもよい。
【0013】
(構成6)
構成6は、上記構成4において、演算は第1演算と第2演算を含んでいてもよく、クライアントは、さらに、第1演算の演算結果データを記憶する手段と、演算結果データをサーバに送信を行う手段とを備えていてもよい。
サーバは、さらに、送信された演算結果データを受信する手段を備えてもよく、サーバ側のレスポンスキーの設定は、特定されたシードデータと、演算結果データを用いて第2演算を実行することで行われてもよい。
【0014】
上記構成によれば、サーバ側でのレスポンスキーの設定のための演算の少なくとも一部についてサーバ側での演算を省略することができる。例えば、クライアントによって演算に用いる値や演算式などが異なる場合であっても、サーバ側の情報処理の増加を抑えることができる。また、クライアントによって演算に用いる値や演算式などが異なる場合、異ならない場合のいずれであっても、第一演算で使用する第1演算で使用する各種データ(キーデータやシードデータなど)をサーバーが持たないようにしてそれらのデータがサーバから漏洩するリスクを減らすことができる。
【0015】
(構成7)
構成7は、上記構成6において、演算結果データと第1パラメータは、少なくともそれらのデータの署名が付された署名付きデータであり、サーバ側のレスポンスキーの設定は、署名の検証をおこなうとともに、特定されたシードデータと、演算結果データを用いて第2演算を実行することで行われてもよい。
【0016】
(構成8)
構成8は、上記構成1において、サーバとクライアントの間の認証処理のための通信セッションは、チャレンジデータの送受信が行われる第1通信セッションと、第1通信セッションとは異なる通信セッションであり、レスポンスデータの送受信、レスポンスデータの検証およびその結果の送受信が行われる第2通信セッションを含み、第1通信セッションのサーバ装置と第2通信セッションのサーバ装置は異なることを許容されてもよい。
【0017】
(構成9)
構成9は、上記構成8において、クライアントは、さらに、受信されたチャレンジデータをサーバに送信する手段を備えてもよく、サーバは、さらに、チャレンジデータを受信する手段を備えてもよい。上記検証においては、受信されたチャレンジデータと設定されたサーバ側のレスポンスキーを用いて、受信されたレスポンスデータの検証を行ってもよい。
【0018】
(構成10)
構成10は、上記構成1において、クライアントは、さらに、検証の結果に基づいて、アプリケーションに所定の情報を引き渡す手段を備えていてもよい。
【0019】
(構成11)
構成11は、上記構成1において、検証の結果は、所定のオンラインサービスを利用するためのデータを含み、クライアントは、さらに、オンラインサービスを利用するためのデータをアプリケーションに引き渡す手段を備えていてもよい。
【0020】
(構成12)
構成12は、上記構成1において、クライアントは、さらに、検証の結果に基づいて、所定のオンラインサービスを利用する手段を備えていてもよい。
【0021】
(構成13)
構成13は、上記構成1において、第1パラメータは、クライアントによって異なる値であってもよい。
【0022】
(構成14)
構成14は、上記構成3において、第1パラメータおよび第2パラメータは、クライアントによって異なる値であってもよい。
【0023】
(構成15)
構成15は、上記構成1ないし14のいずれかに記載の情報処理システムにおけるクライアントであってよい。
【0024】
(構成16)
構成16は、コンピュータを、上記構成1ないし14のいずれかに記載の情報処理システムにおけるサーバが備える各手段として機能させるための情報処理プログラムであってもよい。
【0025】
(構成17)
構成17は、上記構成1ないし14のいずれかに記載の情報処理システムにおけるサーバであってもよい。
【0026】
(構成18)
構成18は、コンピュータを、上記構成1ないし14のいずれかに記載の情報処理システムにおけるサーバが備える各手段として機能させるための情報処理プログラムであってもよい。
【0027】
(構成19)
構成19は、サーバとの間で、チャレンジ&レスポンス方式により認証処理を行うクライアントのコンピュータに、クライアント側のレスポンスキーの設定を行う処理と、サーバからチャンレジデータを受信する処理と、設定されたクライアント側のレスポンスキーを用いて、受信されたチャレンジデータからレスポンスデータの生成を行う処理と、上記サーバに、生成されたレスポンスデータを送信する処理と、サーバ側で実行されるサーバ側のレスポンスキーを設定する処理に用いられる第1パラメータを読み出す処理と、上記サーバに、上記読み出した第1パラメータを送信する処理と、第1パラメータに基づいて上記サーバ側のレスポンスキーを設定する演算のシードデータを特定することにより行われる、レスポンスデータの検証結果に基づく認証結果を上記サーバから受信する処理を実行させる、プログラムである。
【0028】
(構成20)
構成20は、上記構成19において、クライアント側のレスポンスキーの設定は、第1パラメータを用いることなく行われてもよい。
【0029】
(構成21)
構成21は、上記構成19または20において、第1パラメータは、少なくとも第1パラメータを含むデータの署名を付した署名付きデータであってもよい。
【0030】
(構成22)
構成22は、上記構成21において、コンピュータに、さらに、署名されないデータである第2パラメータを読み出す処理と、サーバに上記読み出された第2パラメータを送信する処理を実行させ、上記サーバで行われるシードデータの特定は、第1パラメータおよび第2パラメータを用いて行われてもよい。
【0031】
(構成23)
構成23は、上記構成22において、演算は第1演算と第2演算を含んでいてもよく、コンピュータに、さらに、第1演算の演算結果データを読み出す処理と、演算結果データを上記サーバに送信を行う処理を実行させ、上記サーバ側のレスポンスキーの設定は、特定されたシードデータと、演算結果データを用いて第2演算を実行することで行われてもよい。
【0032】
(構成24)
構成24は、上記構成23において、演算結果データと第1パラメータは、少なくともそれらのデータの署名が付された署名付きデータであってもよい。
【0033】
(構成25)
構成25は、上記構成19において、サーバとクライアントの間の認証処理のための通信セッションは、チャレンジデータの送受信が行われる第1通信セッションと、第1通信セッションとは異なる通信セッションであり、レスポンスデータの送受信、レスポンスデータの検証およびその結果の送受信が行われる第2通信セッションを含み、第1通信セッションのサーバ装置と第2通信セッションのサーバ装置は異なることを許容されてもよい。
【0034】
(構成26)
構成26は、上記構成25において、コンピュータに、さらに、受信されたチャレンジデータをサーバに転送する処理を実行させ、サーバは、転送されたチャレンジデータを用いて、受信されたレスポンスデータの検証を行ってもよい。
【0035】
(構成27)
構成27は、構成26において、コンピュータに検証の結果に基づいて、アプリケーションに所定の情報を引き渡す処理を実行させてもよい。
【0036】
(構成28)
構成28は、構成19において、第1パラメータは、クライアントによって異なる値であってもよい。
【0037】
(構成29)
構成29は、構成22において、第1パラメータおよび第2パラメータは、クライアントによって異なる値であってもよい。
【図面の簡単な説明】
【0038】
【
図2】レスポンスキー設定処理の概要を説明するための図
【
図5】チャレンジデータセットの生成及び送信の処理の概要を示す図
【
図6】チャレンジデータセットD102の構成の一例
【
図7】レスポンスデータセットの生成処理の概要を示す図
【
図8】クライアント3がサーバ1に送信するデータの一例
【
図9】サーバ1におけるレスポンスキー設定処理の概要を示す図
【
図10】カウンタ値特定テーブルSV404のデータ構成の一例
【
図11】第2KDFシードデータ特定テーブルSV405のデータ構成の一例
【
図13】クライアント3のハードウェア構成を示すブロック図
【
図14】クライアント3の記憶部32に記憶されるデータの一例
【
図15】システムプログラムCL201の機能的構成を説明するための図
【
図16】サーバ1の記憶部12に記憶されるデータの一例
【
図17】PC4の記憶部42に記憶されるデータの一例
【
図18】証明書生成・書込処理のフローチャートの一例
【
図19】チャレンジ発行セッションにおける処理の詳細を示す図
【
図20】チャレンジ生成処理の詳細を示すフローチャート
【
図21】検証セッションにおける処理の詳細を示す図
【
図22】レスポンス生成処理の詳細を示すフローチャート
【
図23】第1派生鍵設定処理の第1の例を示すフローチャート
【
図24】第1派生鍵設定処理の第2の例を示すフローチャート
【
図25】第2派生鍵設定処理の第1の例を示すフローチャート
【
図26】第2派生鍵設定処理の第2の例を示すフローチャート
【
図27】レスポンスデータセット生成処理の詳細を示すフローチャート
【
図30】オンラインゲーム処理の詳細を示すフローチャート
【発明を実施するための形態】
【0039】
以下、実施形態について説明する。
【0040】
本実施形態は、デバイス認証にかかる処理に関する。本実施形態では、デバイスへ所定の通信サービスを提供したり、デバイスの所定の機能を実行可能にするにあたって(より、具体的には、例えば、オンラインサービスを提供する等(例えば、オンラインゲームや相手のマッチング、オンラインショップ(ソフトウェアやコンテンツのダウンロードサイト)へのアクセス等)にあたって)、デバイス認証を行う処理を例として説明する。デバイス認証において、クライアント装置(以下、単にクライアントと呼ぶ)の正当性が確認される。
【0041】
本実施形態では、デバイス認証の手法として、チャレンジ&レスポンス方式を用いる。この方式では、以下のような手法で認証が行われる。まず、
図1に、本実施形態にかかる認証処理システムの全体的な構成を模式的に示す。
図1では、クライアント認証サーバ(以下、単にサーバと呼ぶ)1と、クライアント装置(以下、単にクライアントと呼ぶ)3とがネットワークを介して接続されている。なお、サーバ1については、複数台のサーバ装置で構成されていてもよい。このような構成において、まず、(1)オンラインゲームの開始を希望するクライアント3がサーバ1(本実施形態では、オンラインゲームを提供するサーバとは異なる)にチャレンジデータの送信をリクエストする。(2)リクエストに応じて、サーバ1は、チャレンジデータを生成してクライアント3に送信する。(3)クライアント3は、チャレンジデータを元に所定の演算処理を行ってレスポンスデータを生成して、サーバ1に送信する。(4)サーバ1は、クライアントから受信したレスポンスデータを検証し、検証の成否に応じた所定のデータをクライアント3に送信することで、クライアント3の正当性の認証が行われる。複数台のサーバ装置で構成されるサーバの場合、上記(2)の処理を行うサーバ装置と(4)の処理をおこなうサーバ装置は異なることが許容されても良い。
【0042】
次に、本実施形態における、チャレンジ&レスポンス方式を用いたデバイス認証処理(以下、単に認証処理と呼ぶ)の概要を説明する。まず、認証処理で用いられる「レスポンスキー」に関して説明する。
【0043】
[レスポンスキーについて]
レスポンスキーとは、レスポンスデータを作成する処理において用いられる鍵データである。サーバ1から受信したチャレンジデータに、このレスポンスキーを用いる演算を行うことでレスポンスデータが生成される。
【0044】
図2は、本実施形態における、レスポンスキー設定処理の概要を説明するための図であり、当該処理におけるデータの流れを模式的に示すものである。
図2では、楕円で示す要素はデータ・パラメータ的要素を示し、矩形で示す要素は処理的要素を示している。なお、説明の便宜上、
図2では、データ・パラメータ的要素については、「Dnn(nnは整数)」の形式の参照符号を付している。以降、同様の図が出てくるが、これらについても同じように参照符号を付している。
【0045】
図2に示す例では、鍵導出関数(key derivation function、以下、KDFと呼ぶ)を用いて、所定のデータから鍵データを生成して、生成した鍵データをレスポンスキーとして設定する。ここで、KDFとは、鍵データを元にして、別の鍵を生成するための関数である。鍵データと、シードデータと呼ばれる所定のデータをKDFに入力すると、これらに基づいた別の鍵データが生成される。以下、KDFで出力された鍵データのことを「派生鍵」と呼ぶ。また、本実施形態では、複数段のKDF(本実施形態では、2段のKDF)を用いて生成される派生鍵データをレスポンスキーとして用いる。以下の説明では、1段階目のKDFのことを「第1KDF」、2段階目のKDFのことを「第2KDF」と呼び、第1KDFにより出力される鍵データを「第1派生鍵データ」または単に「第1派生鍵」と呼び、第2KDFにより出力される鍵データを「第2派生鍵データ」または単に「第2派生鍵」と呼ぶ。なお、各KDFの演算内容はどのようなものでもよいが、例えばHMACまたはCMACをPRFとして使用するKDFや、ハッシュ関数またはブロック暗号を使用するKDFなどが挙げられる。また、各段のKDFの演算内容は同じであってもよいし、異なってもよい。
【0046】
図2を用いて、レスポンスキー設定の流れを説明する。レスポンスキーの設定処理は、サーバおよびクライアントのそれぞれで実行されるが、本実施形態では、後述するように、サーバで実行されるレスポンスキーの設定処理と、クライアントで実行されるレスポンスキーの設定処理には異なる点がある。
図2では、クライアント3で実行されるレスポンスキーの設定処理を説明する。なお、クライアント3で設定されるレスポンスキーを「レスポンスキー(クライアント)」、サーバ1で設定されるレスポンスキーを「レスポンスキー(サーバ)」と呼ぶことがある。また、クライアント3で算出される第2派生鍵を「第2派生鍵(クライアント)」、サーバ1で算出される第2派生鍵を「第2派生鍵(サーバ)」と呼ぶことがある。
【0047】
まず、クライアント3の記憶部には、マスターキーD01、カウンタ値D02、第1KDFシードデータD03、第2KDFシードデータD04が記憶されている。マスターキーD01は、第1KDFに入力される鍵データである。マスターキーD01は、固定値のデータとして構成されていてもよいし、変更可能なデータとして構成されていてもよい。また、マスターキーD01は、クライアントによって異なるデータであってもよい。クライアントをエミュレータ技術で実現する場合は、エミュレートする対象のマスターキーと同じデータであってもよい。
【0048】
カウンタ値D02、第1KDFシードデータD03、第2KDFシードデータD04はそれぞれ、KDFのシードデータとして用いられるデータである。カウンタ値D02は、クライアント3によって異なる値を取り得る。例えば、クライアント3のシステムのアップデート等に応じて変更され得る値であり、具体的には、1ずつインクリメントされる。本実施形態では、一例として、カウンタ値が0~3の4つの値のいずれかを取りうる場合を例として説明する。また、本実施形態では、カウンタ値D02の初期値は0である。
【0049】
第1KDFシードデータD03は、第1KDFに入力されるシードデータであり、クライアント3によって異なる値を取り得る。第2KDFシードデータD04は、第2KDFに入力されるシードデータであり、クライアント3によって異なる値を取り得る。これらのシードデータはどのようなデータでもよいが、例えば、第1KDFシードデータD03は、固定値であってもよく、より具体的には、例えば、クライアント3の或る特性を示す識別データであってもよい。例えば、開発機または製品機のいずれかを示す識別データであってもよい。なお、クライアントをエミュレータ技術で実現する場合は、当該識別データは、エミュレートする対象の特性を示すデータであってもよい。また、第2KDFシードデータD04は、クライアント3が、自ら、または、サーバ等の外部からの指示に応じて設定または変更可能なデータであってもよい。より具体的には、例えば、クライアント3の別の特性を示す識別データ(例えば、セキュリティ設定を示すデータ)であってもよい。また、システムバージョンに応じて異なるデータ(バージョンアップにより更新されるデータ)であってもよい。なお、クライアントをエミュレータ技術で実現する場合は、当該識別データは、エミュレートする対象の特性を示すデータであってもよい。また、各KDFシードデータD03、D04は、例えば、システムソフトウェアのアップデートにより変更されるものであってもよい。また、第1KDFシードデータD03、第2KDFシードデータD04は共に、クライアントによって異なる値となってもよい。
【0050】
これらのデータのうち、まず、マスターキーD01、(現在の)カウンタ値D02、第1KDFシードデータD03が、第1KDFに入力される。その結果、第1KDF演算により出力された派生鍵である「第1派生鍵」D05が生成される。
【0051】
次に、第2KDFシードデータD04が、生成された第1派生鍵D05と共に、第2KDFに入力される。これにより、第2KDF演算により出力された派生鍵である「第2派生鍵(クライアント)」D06が生成される。
【0052】
そして、本実施形態では、第2派生鍵(クライアント)D06がレスポンスキー(クライアント)として使用される。すなわち、本実施形態では、レスポンスキー(クライアント)の設定は、第2派生鍵の生成により行われ、後述するレスポンスデータセットD103を生成する処理に用いられる。
【0053】
なお、レスポンスキー設定処理における各KDFの演算は、ランタイムで(すなわち、認証処理が行われる毎にその都度演算して)実行してもよいが、事前に演算した結果を記憶しておいて、認証処理が行われる際にそれを読み出すことで都度の演算をしないようにしてもよい。例えば、クライアント3のシステム起動時等に第1派生鍵データおよび/または第2派生鍵データを演算して記憶しておいて、認証処理が行われる際にそれを読み出すことでレスポンスキーを設定してもよい。また、例えば、演算済のデータ(第1派生鍵データおよび/または第2派生鍵データ)を外部から取得して記憶しておき、認証処理が行われる際にそれを読み出すことによってレスポンスキーを設定してもよい。また、第1KDFの演算と第2KDFの演算の一方をランタイムとし、他方を事前演算したデータを読み出すようにしてもよい。
【0054】
上述した通り、本実施形態においては、サーバ1で実行されるレスポンスキーの設定処理と、クライアント3で実行されるレスポンスキーの設定処理は異なる。その相違の1つとして、サーバ1で行われるレスポンスキー設定処理において、第1KDFの演算処理は実行されない。より具体的には、事前に(認証処理の開始の前に、例えば、事前に行われるクライアント3の設定処理において、)第1KDFの演算を実行した結果である演算済データ(第1派生鍵データ。本実施形態では、後述する通り、暗号化した第1派生鍵データ)をクライアント3の記憶部に書き込んでおく。そして、認証処理が行われる際にその演算済データをクライアント3からサーバ1に送信し、サーバ1ではその演算済データを用いて、第1KDFの演算を実行することなく、第2KDFの演算を実行してレスポンスキーの設定を行う。本実施例では、後述の通り、この演算済データはクライアント証明書データ(以下、単に証明書データと呼ぶ)に含まれる。
【0055】
ここで、証明書データの生成方法について説明する。クライアント3には、上記証明書データが予め(認証処理の開始前に)記憶される。当該証明書データは、クライアント3の設定処理時に、クライアント3の記憶部(後述)に書き込まれる。
図3は、PC(以下、PC4と呼ぶ)によって書込処理が実行される場合の証明書作成処理の概要を模式的に示した図である。
図3において、まず、製造対象のクライアント3のマスターキーD01と、カウンタ値D02、第1KDFシードデータD03が第1KDFに入力される。これにより、第1派生鍵D05が生成される。なお、マスターキーD01については、例えば、PC4に接続され、証明書データの書き込み処理の対象となっているクライアント3から読み出されればよい。ここで、上記のように、本実施形態ではカウンタ値D02が取り得る値が4つである。そのため、PC4における第1KDFの演算はカウンタ値D02の取りうる値(0~3)毎に行われ、カウンタ値D02の値のそれぞれに対応した第1派生鍵D05が生成される。すなわち、この例では、4つの第1派生鍵D05が生成される。以下では、これら4つの第1派生鍵D05を個別に表記するときは、第1派生鍵(カウンタ値0時)D05A、第1派生鍵(カウンタ値1時)D05B、第1派生鍵(カウンタ値2時)D05C、第1派生鍵(カウンタ値3時)D05Dと表記する。
【0056】
次に、各第1派生鍵D05を暗号化する処理が行われる。具体的には、各第1派生鍵D05を、暗号鍵である第1サーバ鍵D07を用いて暗号化する処理が行われる。以下では、暗号化された第1派生鍵D05を「暗号化第1派生鍵」D08と呼ぶ。また、本実施形態では、第1サーバ鍵D07は、カウンタ値D02毎に異なるものが用意されている。以下では、カウンタ値D02が0である場合に用いられる第1サーバ鍵は「第1サーバ鍵(カウンタ値0時)D07A」、カウンタ値D02が1である場合に用いられる第1サーバ鍵D07は「第1サーバ鍵(カウンタ値1時)D07B」などのように表記し、暗号化された暗号化第1派生鍵を、「暗号化第1派生鍵(カウンタ値0時)D08A」、「暗号化第1派生鍵(カウンタ値1時)D08B」などのように表記する。このように、カウンタ値D02毎に暗号化第1派生鍵D08が生成され、本実施形態では、合計4つの暗号化第1派生鍵D08が生成される。なお、第1サーバ鍵D07は共通鍵であってもよいし、秘密鍵/公開鍵であってもよい。
【0057】
次に、クライアント証明書に付する電子署名(以下、単に署名と呼ぶ)D12が生成される。署名D12は、署名用の鍵である署名用鍵D09を用いる所定の署名生成アルゴリズムによる演算を行うことで生成される。具体的には、(A)クライアントID_D10と、(B)後述の第2KDFシード特定用第1パラメータ(以下、第1特定パラメータと呼ぶこともある)D11と、(C)上記4つの暗号化第1派生鍵D08と、の合計7つのデータ要素を含むデータに対して、署名用鍵D09を用いて署名を行うことで生成される。
【0058】
ここで、クライアントID_D10とは、クライアント3を識別するためのIDである。例えば、クライアントデバイスのSoCのID、シリアル番号、または、製造番号等をクライアントID_D10としてもよい。なお、クライアントをエミュレータ技術で実現する場合は、当該番号は、エミュレートする対象のそれらの情報であってもよい。証明書生成に際しては、例えば、PC4に接続され、証明書データの書き込み処理の対象となっているクライアント3から当該クライアントID_D10が読み出されて用いられてもよい。また、第1特定パラメータD11は、サーバ1において第2KDFシードデータD04の値を特定するために用いられる(詳細は後述する)。
【0059】
次に、クライアントID_D10と、第1特定パラメータD11と、上記4つの暗号化第1派生鍵D08とを含み、上述の通り生成された署名D12が付された証明書データD101が生成される。
図4に、証明書データD101の構成を示す。証明書データD101には、署名D12、4つの暗号化第1派生鍵D08A~08D、クライアントID_D10、上記第1特定パラメータD11が含まれる。
【0060】
最後に、生成した証明書データD101をクライアント3の不揮発記憶部(後述)に書き込む処理が実行される。後述の通り、証明書データD101は、認証処理の過程で、クライアント3からサーバ1に送信され、証明書データD101に含まれる各データはサーバ1で使用される。証明書データD101に含まれるデータのうち、暗号化第1派生鍵D08(厳密には、それを復号化した第1派生鍵D05)は、第1KDF演算を行った結果である第1派生鍵データであり、サーバ1はこのデータを用いてレスポンスキーの設定を行う。そのため、サーバ1では第1KDF演算を実行する必要がない。なお、証明書データD101は所定のサーバや他のPCからクライアント3にダウンロードまたは転送等されてクライアント3に書き込みされてもよい。
【0061】
また、本実施形態では、カウンタ値D02をレスポンスキー設定のためのKDF演算のシードデータとしている。これにより、状況に応じてレスポンスキーを変更することが可能になる。
【0062】
また、本実施形態では、証明書内に複数の派生鍵を含めて選択して用いることができるようにしており、レスポンスキーの変更を効率的に実現できる。
【0063】
[チャレンジの生成・送信の概要]
次に、サーバ1におけるチャレンジデータの生成・送信処理の概要について説明する。この処理は、クライアント3からのチャレンジ発行要求により実行される。クライアント3は、チャレンジ発行要求時に証明書データD101を送信する。
図5は、サーバ1におけるチャレンジデータの生成及び送信の処理の概要を示し、当該処理におけるデータの流れを模式的に示した図である。当該処理では、まず、クライアント3から証明書データD101を受信し、その検証(署名の検証)が行われる、当該検証の結果、問題が無ければ、証明書データD101からクライアントID_D10が取り出される。
【0064】
次に、当該クライアントID_D10と、「チャレンジバージョン」D14と、「チャレンジ発行時刻」D15とを演算対象にして、「第2サーバ鍵」D13を用いた所定のMAC演算が行われて、第1MAC(Message Authentication Code)値D16が算出される。第1MAC値D16がチャレンジデータとして利用される。
【0065】
なお、本実施態様では、MAC演算によってチャレンジデータを生成したが、改ざん検証データ(改ざん検証に用いられるデータ)を生成可能な暗号学的演算であればなんでもよく、例えば、AES-GCMアルゴリズム等が用いられてもよい。また、当該演算に用いる第2サーバ鍵は、共通鍵であってもよいし、秘密鍵/公開鍵であってもよい。
【0066】
ここで、チャレンジバージョンD14は、サーバ1に記憶されているデータであり、ある時点でサーバ1で生成されるチャレンジデータの生成方法の「バージョン」を定義する情報であり、現在のバージョンを示す情報である。例えば、最初はチャレンジバージョンD14は「1.0」と設定されており、所定の時点で「2.0」に変更され得る。
【0067】
また、チャレンジ発行時刻D15は、サーバ1でチャレンジデータを生成する処理が行われるときのサーバ1の時刻である。
【0068】
また、第2サーバ鍵D13は、第1MAC値(チャレンジデータ)D16の算出に用いられる鍵データであり、本実施形態では、チャレンジバージョンD14毎に第2サーバ鍵D13は異なり得る(バージョンが変わっても鍵が変わらないことがあってもよい。)。本実施形態では、現在のチャレンジバージョンD14に対応する第2サーバ鍵D13が選択され、これが第1MAC値(チャレンジデータ)D16の算出に用いられる。第1MAC値D16が、クライアント3においてレスポンスキーを用いた演算対象になるデータであり、いわゆるチャレンジデータである。
【0069】
第1MAC値D16が算出されれば、(現在の)チャレンジバージョンD14と、チャレンジ発行時刻D15と、第1MAC値(チャレンジデータ)D16に基づいて、チャレンジデータセットD102が生成される。
図6に、チャレンジデータセットD102の構成を模式的に示す。なお、チャレンジデータセットD102は、チャレンジデータを含み、それ以外のデータも含むデータである。本実施形態では、チャレンジデータセットD102は、「チャレンジバージョンD14+チャレンジ発行時刻D15+第1MAC値(チャレンジデータ)D16」という、各内容を含む構成のデータである。なお、MAC演算の結果の値は、演算対象となるデータ(メッセージデータ)に付加されて送信されるのが一般的であるが、本実施形態においては、クライアントID_D10は第1MAC値の演算に用いられるが、チャレンジデータセットには含まれない。
【0070】
上記のようにして生成されたチャレンジデータセットD102が、チャレンジの送信要求をしてきたクライアント3に送信される。
【0071】
[クライアント3におけるレスポンス生成処理の概要]
次に、チャレンジデータセットD102を受信したクライアント3で実行されるレスポンス生成処理の概要を説明する。
図7は、当該処理の概要を説明するための図である。まず、サーバ1から受信したチャレンジデータセットD102に含まれる第1MAC値(チャレンジデータ)D16に対して、
図2を用いて前述したように設定されたレスポンスキー(クライアント)(第2派生鍵(クライアント)D06)を用いてMAC演算することによって、第2MAC値(レスポンスデータ)D17が算出される。第2MAC値D17がチャレンジデータをレスポンスキーで演算した結果であり、いわゆるレスポンスデータである。なお、第2MAC値(レスポンスデータ)D17を算出する際のMAC演算の内容は、第1MAC値(チャレンジデータ)D16を算出する際のMAC演算の内容と同じであってもよいし、異なる演算内容であってもよい。なお、第2MAC演算に入力されるデータである第1MAC値の長さは、第1MAC演算の内容によって決まり、第1MAC演算に入力されるデータの長さに関わらず固定の長さである。
本実施例においては、レスポンスキーを用いてチャレンジデータからレスポンスデータを生成する際にMAC演算を用いたが、レスポンスキーを用いてチャレンジデータからレスポンスデータを生成することができるアルゴリズムであればMAC演算に限らずなんでもよい。
【0072】
次に、当該第2MAC値(レスポンスデータ)D17と、受信したチャレンジデータセットD102に含まれているチャレンジバージョンD14、および、チャレンジ発行時刻D15に基づいて、レスポンスデータセットD103が生成される。レスポンスデータセットD103は、レスポンスデータを含み、それ以外のデータ(本実施形態では、サーバ1から受信したチャレンジデータセットD102に含まれるチャレンジデータ以外のデータ。具体的には、チャレンジバージョンD14、および、チャレンジ発行時刻D15)も含むデータである。なお、前述の通り、MAC演算の結果の値は、演算対象となるデータ(メッセージデータ)に付加されて送信されるのが一般的であるが、本実施形態においては、第1MAC値(チャレンジデータ)D16は、第2MAC値(レスポンスデータ)D17の演算に用いられるが、それをサーバに送信する際のデータ(後述のレスポンスデータセットやクライアント送信データ)には含まれない。
【0073】
レスポンスデータセットD103が生成されれば、クライアント3は、(A)レスポンスデータセットD103と、(B)証明書データD101と、(C)後述する第2KDFシードデータ特定用第2パラメータ(以下、第2特定パラメータと呼ぶこともある)D19とを、サーバ1に送信する。
図8は、クライアント3がサーバ1に送信するデータ(以下、総称してクライアント送信データD104と呼ぶこともある)の模式図である。なお、クライアント送信データの各データはひとまとまりで送信されてもよいし、別のタイミングで、別々に送信されてもよい。
図8において、レスポンスデータセットD103は、チャレンジバージョンD14、チャレンジ発行時刻D15、第2MAC値(レスポンスデータ)D17とを含んでいる。これは、上記チャレンジデータセットD102の第1MAC値(チャレンジデータ)D16を第2MAC値(レスポンスデータ)D17に差し替えたような構成となっている。すなわち、チャレンジデータ受信時にサーバ1から受信したチャレンジデータセットに含まれるチャレンジバージョンD14およびチャレンジ発行時刻D15は、レスポンスデータセットに含まれて、レスポンスデータ送信時にサーバ1に送信される。証明書データD101は、チャレンジ発行要求の際に送信される証明書データD101と同じものである。すなわち、証明書データD101は、チャレンジデータの送信をサーバ1に要求する際と、レスポンスデータをサーバ1に送信する際に送信される。第2特定パラメータD19は、第1特定パラメータD11と共に、サーバ1の処理において第2KDFシードデータD04の値を特定するために利用されるパラメータである(詳細は後述)。
【0074】
次に、クライアント送信データD104を受信したサーバ1におけるレスポンス検証にかかる処理の概要を説明する。サーバ1では、まず、レスポンスキー(サーバ)が設定される。次に、設定されたレスポンスキー(サーバ)を用いて第2MAC値(検証時)D217が算出される。そして、当該サーバ1で算出された第2MAC値(検証時)D217とクライアントから送信された第2MAC値(レスポンスデータ)D17とが一致するか否かが判定されることで、レスポンスデータD17の検証が行われる。
【0075】
図9は、サーバ1におけるレスポンスキー設定処理の概要を説明するための図である。まず、クライアント送信データD104に含まれる証明書データD101について、署名D12の検証が行われる。検証に問題がなければ、証明書データD101から暗号化第1派生鍵D08、および、第1特定パラメータD11が取り出される。ここで、上記のように、証明書データD101には4つの暗号化第1派生鍵D08が含まれているが、このうちの1つが、以下の手順で特定して取り出される。まず、クライアント3における現在のカウンタ値D02の特定が行われる。当該特定は、サーバ1に予め記憶されている「カウンタ値特定テーブル」を参照することで行われる。カウンタ値特定テーブルは、クライアント3から送信された第1特定パラメータD11、および、第2特定パラメータD19に基づいて、当該クライアントの現在のカウンタ値D02を特定するためのテーブルである。つまり、証明書データD101から取り出した第1特定パラメータD11と、証明書データD101と共に送信されてきた第2特定パラメータD19とを用いて、レスポンスデータを送信したクライアント3(認証対象のクライアント3)における現在のカウンタ値D02の特定が行われる。
図10に、カウンタ値特定テーブルSV404のデータ構成の一例を示す。カウンタ値特定テーブルSV404は、第1特定パラメータD11の値、および、第2特定パラメータD19の値の組み合わせに対応付けられて、カウンタ値D02が定義されている。
【0076】
図9に戻り、次に、サーバ1では、証明書データD101に含まれる複数の暗号化第1派生鍵D08のうち、カウンタ値特定テーブルSV404を用いて特定されたカウンタ値D02に対応する暗号化第1派生鍵D08が選択され、証明書データD101から取り出される。次に、サーバ1において、取り出した暗号化第1派生鍵D08が、サーバ1に記憶されている第1サーバ鍵D07を用いて復号されることで、第1派生鍵D05が得られる。ここで、第1サーバ鍵D07は、上記のようにカウンタ値D02に応じて異なる鍵データである。ここで、クライアント3によってカウンタ値D02が異なることがあり得る場合、サーバ1には、現在あり得るカウンタ値D02に対応する各第1サーバ鍵D07が記憶され、特定したカウンタ値D02に応じた第1サーバ鍵D07が使用される。
【0077】
次に、復号された第1派生鍵D05と、第2KDFシードデータD204とを用いて、第2KDFの処理が実行される。ここで、第2KDFの処理における第2KDFシードデータD204(の値)は、以下のようにして決定される。第2KDFシードデータD204の値の特定には、「第2KDFシードデータ特定テーブル」が用いられる。第2KDFシードデータ特定テーブルは、第1特定パラメータD11、および、第2特定パラメータD19に基づいて上記第2KDFシードデータD04を特定するためのテーブルである。つまり、証明書データD101から取り出した第1特定パラメータD11と、証明書データD101と共に上記クライアントから送信された第2特定パラメータD19とを用いて、レスポンスデータを送信してきたクライアント3における第2KDFシードデータD04が特定される。
図11に、第2KDFシードデータ特定テーブルSV405のデータ構成の一例を示す。第2KDFシードデータ特定テーブルSV405においては、第1特定パラメータD11および第2特定パラメータD19の組み合わせに対応付けられて、第2KDFシードデータD204の値が定義されている。すなわち、
図2を用いて上述した通り、クライアント3のレスポンスキー設定処理においては、クライアント3に記憶される第2KDFシードデータを用いてレスポンスキーの設定が行われる。一方、サーバ1におけるレスポンスキー設定処理においては、クライアント3から受信する第1特定パラメータD11および第2特定パラメータD19に基づいて、レスポンスデータを送信してきたクライアント3に記憶される第2KDFシードデータの値D04を特定し、その値を用いてレスポンスキーの設定が行われる。この点は、サーバで実行されるレスポンスキーの設定処理と、クライアントで実行されるレスポンスキーの設定処理の相違点の1つである。
【0078】
本実施形態では、サーバ1において、クライアント3から送信された特定パラメータを用いて、KDFシードデータを特定する。このような構成により、クライアント(エミュレータ技術により実現する場合にはエミュレート対象のクライアントデバイス)の属性や状態等を考慮したレスポンスキー設定が可能となる。また、本実施形態では、KDFシードデータの特定のために、2つのパラメータを用いており、第1特定パラメータを署名対象とし、第2特定パラメータを署名対象としていない。この構成により、例えば、署名が可能なパラメータと署名が困難なパラメータを用いるなどして、KDFシードデータの構成を柔軟にすることができる。
【0079】
どのようなパラメータを第1特定パラメータD11、第2特定パラメータD19とするかについては、適宜設計すればよい。例えば、第1特定パラメータD11は、固定値であってもよい。例えば、クライアント3のハードウェアの属性情報であってもよい。第2特定パラメータD19は、クライアント3において設定あるいは変更可能なデータであってもよい。例えば、ソフトウェアの属性情報であってもよく、または、システムソフトウェアの属性情報(例えば、システムソフトウェアのバージョン情報)であってもよい。第1特定パラメータD11がクライアント3において設定または変更可能なデータであてもよいし、第2特定パラメータD19が固定値であってもよい。なお、クライアント3をエミュレータ技術で実現する場合、第1特定パラメータ、第2特定パラメータは、エミュレート対象の属性情報等であってもよい。ただし、本実施例において、第1特定パラメータおよび第2特定パラメータは、第2KDFシードデータと異なるデータであり、第1特定パラメータと第2特定パラメータとの組み合わせにより第2KDFシードデータを特定することができるデータである。また、本実施例において、第1特定パラメータおよび第2特定パラメータは、第1KDFシードデータとも異なるデータである。
【0080】
図9に戻り、サーバ1において、上記のようにして決定された第2KDFシードデータD204と、証明書データD101から取り出した第1派生鍵D05を用いて第2KDFの演算処理を実行することで、第2派生鍵(サーバ)D206が生成される。なお、サーバ1で行われる第2KDFの演算内容(アルゴリズム)は、クライアント3で行われる第2KDFの演算内容と同じである。そして、サーバ1において、生成された第2派生鍵(サーバ)D206がレスポンスキーとして用いられる。すなわち、第2派生鍵(サーバ)D206の生成により、レスポンスキー(サーバ)が設定される。
【0081】
ここで、KDF演算の元になるデータやKDF演算の演算内容がクライアントの構成によって異なる場合には、サーバ1において派生鍵を生成する際に、各クライアントの構成に応じて、KDF演算の元になるデータやKDF演算の演算内容を変更するためのデータベース等を管理する必要がある。しかしながら、本実施形態では、第1KDF演算については、KDF演算済のデータ(派生鍵)がクライアント3からサーバ1に送信され、サーバ1はそれを用いてレスポンスキーを生成するため、そのようなデータベースを持つ必要がない。
【0082】
また、本実施形態では、KDF演算を多段階とし、第1KDF演算については、演算済の派生鍵をクライアント3からサーバ1に送信し、サーバ1において、それを用いつつ別のKDF演算(第2KDF演算)は実行してレスポンスキーを生成する。これにより、検証の要素となる複数の側面について、一部を予め演算しておき、他の一部をサーバで演算することで、検証の要素の性質に応じた方法での検証が可能になる。
【0083】
なお、
図9で示されるように、サーバ1におけるレスポンスキー設定処理においては、レスポンスデータセットD103は利用していない。次に説明する検証処理において、レスポンスデータセットD103に含まれる第2MAC値(レスポンスデータ)D17の検証が行われる。
【0084】
[検証処理の概要]
次に、サーバにおいて行われる検証処理(本実施例においては、レスポンスデータの検証だけでなく、後述の通り、レスポンスデータに含まれるチャレンジ発行時刻の検証を含む)の概要を説明する。
図12は、検証処理の概要を説明するための図である。検証処理では、サーバ1側で第2MAC値(検証時)D217を算出して、クライアント3から送信されてきた第2MAC値(レスポンスデータ)D17と一致するか否かを判断することで、レスポンスデータである第2MAC値D17を検証する処理を行う。
【0085】
まず、サーバ1において第1MAC値(検証時)D216を算出する処理が行われる。この処理は、基本的には、
図5を用いた上述した、チャレンジ生成処理において第1MAC値(チャレンジデータ)D16を算出する処理と同じ処理が行われる。クライアント3から送信されてきたレスポンスデータセットD103に含まれているチャレンジバージョンD14に基づいて、チャレンジバージョンD14に対応する第2サーバ鍵D13を選択する。そして、選択した第2サーバ鍵D13を用いて、「レスポンスデータセットD103に含まれるチャレンジバージョンD14およびチャレンジ発行時刻D15と、クライアントから送信された証明書データD101(検証要求時に送信された証明書データD101)に含まれるクライアントID_D10」を対象にしたMAC値を演算をすることで第1MAC値(検証時)D216を算出する。
【0086】
なお、第1MAC値(検証時)D16の算出処理に関して、他の実施形態では、上記チャレンジ生成処理において算出した第1MAC値(チャレンジデータ)D16をサーバ1に保存しておくようにしてもよい。そして、保存しておいた第1MAC値(チャレンジデータ)D16を、検証処理において利用するようにして、第1MAC値(検証時)D16の算出処理を省略するような構成にしてもよい。
【0087】
次に、上記設定したレスポンスキー(サーバ)D206と、第1MAC値(検証時)D216とを用いて、クライアント3におけるMAC演算と同じアルゴリズムによって第2MAC値(検証時)D217が算出される。
【0088】
次に、レスポンスデータセットD103に含まれる第2MAC値(レスポンスデータ)D17と、上記算出した第2MAC値(検証時)D217とを比較し、一致するか否かを判定する。一致すれば、レスポンスの検証結果はOK(肯定)と判定され、不一致の場合、レスポンスの検証結果はNG(否定)と判定される。
【0089】
さらに、本実施態様においては、サーバ1では、時間的な観点による検証処理が行われる。この処理では、サーバ1がチャレンジデータセットD102を発行してからクライアントがレスポンスデータセットD103等を返してくるまでの時間(またはチャレンジデータの発行から検証を実行するまでの時間)が、一定時間以内であるかどうかが判定される。具体的には、上記レスポンスデータセットD103に含まれるチャレンジ発行時刻D15と、検証処理を実行する時点におけるサーバ1の現在時刻とを比較する。この時間が一定時間以内であれば、OKと判断され、一定時間以上かかっている場合は、NGと判定される。
【0090】
そして、レスポンスデータD17の検証、および、時間的観点による検証の双方ともOKであれば、認証成功と判定される。それ以外の場合は認証失敗と判定される。認証成功の場合は、所定のサービストークンをクライアントに送信する処理が実行される。認証失敗の場合は、エラーメッセージ等が送信されることになる。サービストークンの内容は、例えば、クライアントID、所定のオンラインサービスの識別子、有効期限、および、それらのデータの署名またはMAC値を含む情報である。
【0091】
上述のように、本実施例では、チャレンジ発行時に、サーバ1からクライアント3に、少なくともチャレンジ発行時刻をMAC演算の対象としたMAC値(第1MAC値)をチャレンジ発行時刻とともに送信している。また、レスポンスデータの生成時に、クライアント3はそのMAC値をレスポンスキーでさらにMAC演算した値(第2MAC値)をレスポンスデータとして生成してサーバ1に送信している。サーバ1でそれを検証対象とし、さらに、サーバ1においては、チャレンジ発行時刻を用いた時間的な検証も行う。これにより、認証処理の過程における不正を防止できる。
【0092】
以下、本実施形態に係る処理の詳細について説明する。
【0093】
[クライアント3のハードウェア構成]
次に、上記クライアント3のハードウェア構成について説明する。
図13は、クライアント3のハードウェア構成を示すブロック図である。本実施形態では、クライアント3はゲーム装置であるが、一般的なPCやスマートフォン、タブレットデバイス等でもよい。クライアント3はコンピュータの一例であり、プロセッサ、メモリ、通信用プロセッサや表示用プロセッサなどの周辺プロセッサなどを含む。クライアント3は、処理部31と、記憶部32と、ネットワーク通信部35と、操作デバイス36(ゲームコントローラ)と、画像出力部37とを少なくとも備えている。処理部31は、例えば、プロセッサであり、クライアント3を制御するための各種プログラムを実行する。クライアント3は複数のデバイスにより構成されても良い。処理部31は、複数のプロセッサにより構成されても良く、この場合、複数のデバイスの複数のプロセッサであってもよい。また、プロセッサは、汎用プロセッサでも専用プロセッサでもよく、いわゆる、Soc、CPU、ASIC、マイコンなど態様を問わない。記憶部32には、処理部31によって実行される各種プログラムおよび利用される各種データが格納される。プログラムは複数のプログラムにより構成されるプログラム群であってもよく、各プログラムが異なるプロセッサにより実行されても良く、また、各プログラムが異なるメモリに記憶されても良い。また、プログラムは、アプリケーションソフトウェア、システムソフトウェア、ファームウェア、エミュレータなどソフトウェアの態様を問わない。プログラムは、コードに加えてデータやテーブルパラメータを含んでも良い。具体的には、記憶部32は、不揮発記憶部33と、揮発記憶部34とを含む。不揮発記憶部33は、例えばフラッシュメモリやSSD(Solid State Drive)等である。揮発記憶部34は、例えばDRAMであり、メインメモリとして機能する。不揮発記憶部33に記憶されている各種プログラムやデータが、必要に応じて揮発記憶部34上に読み込まれ、処理部31によって、後述するような各種処理が実行され得る。ネットワーク通信部35は、例えばインターネットなどのネットワークを介して他のサーバやクライアント3と通信(無線であっても有線であってもよい)する。なお、ネットワークを介さずに通信相手と直接通信する構成としても良い。操作デバイスは、各種の操作デバイス(キーボード、マウス等)である。画像出力部37は、処理部31による情報処理の結果生成された所定の画像を出力する。
【0094】
なお、不揮発記憶部33や揮発記憶部34について、その一部の領域がセキュア領域として構成されていてもよい。後述する各種データのうちの一部のデータについては、例えばSoC(System on a Chip)内のメモリ等のセキュア領域に格納されるように構成してもよい。
【0095】
なお、サーバ1やPC4のハードウェア構成は、一般的なサーバやPCのハードウェア構成であればよく、説明を省略するが、
図13と同様の構成である。なお、サーバ1は複数のサーバ装置により構成されてもよい。すなわち、サーバ1は、処理部11と、フラッシュメモリ等の不揮発記憶部13とDRAM等の揮発記憶部14を含む記憶部12等により構成される。サーバ1はコンピュータの一例である。また、PC4は、処理部41と、フラッシュメモリ等の不揮発記憶部43とDRAM等の揮発記憶部44を含む記憶部42等により構成される。
【0096】
次に、本実施形態に係る処理で用いられる各種データに関して説明する。
【0097】
[クライアント3で用いられるデータ]
図14は、クライアント3の記憶部32に記憶されるデータの一例である。
図14に示すデータは、不揮発記憶部33に記憶されるデータを示しており、認証処理の実行に際して、これらのデータが必要に応じて揮発記憶部34に読み込まれることで、認証処理が実行され得る。なお、これらのデータは、異なるメモリに分かれて記憶されていてもよい。例えば、一部のデータは上述したセキュア領域に記憶されていてもよい。
【0098】
図14において、不揮発記憶部33には、システムプログラムCL201、オンラインゲームプログラムCL202、マスターキーD01、カウンタ値D02、第1KDFシードデータD03、第2KDFシードデータD04、証明書データD101、第2KDFシードデータ特定用第2パラメータD19、が少なくとも記憶されている。なお、
図14において、システムプログラムCL201、オンラインゲームプログラムCL202以外の各データは、内容的には上述した各種データと同じものである。
【0099】
図14において、システムプログラムCL201は、クライアント3のシステムを制御するためのプログラムである。システムプログラムCL201には、
図15に示すような、本実施形態の認証機能を実現するためのプログラムが少なくとも含まれている。まず、サーバ1に対してチャレンジの発行を要求するチャレンジ発行要求プログラムがシステムプログラムCL201に含まれている。また、レスポンスキー(クライアント)を設定するための機能を有するレスポンスキー設定プログラムがシステムプログラムCL201に含まれている。また、チャレンジデータセットD102を受信し、レスポンスデータセットD103を生成し、レスポンスデータセットD103等(上述したクライアント送信データ)を送信する機能を有するレスポンス生成・送信プログラムがシステムプログラムCL201に含まれている。また、認証結果に基づいてオンラインゲームを開始させる機能を有する認証結果処理プログラムもシステムプログラムCL201に含まれている。本実施形態に係るデバイス認証処理は、(アプリケーションの処理ではなく、)クライアント3を制御するシステム側の処理の一つとして実行される。
【0100】
図14に戻り、オンラインゲームプログラムCL202は、所定のオンラインゲームのプログラムである。本実施形態では、上記のように、オンラインゲームのプレイの開始に際して、デバイス認証処理が実行される。
【0101】
なお、上述した各種データ(レスポンスキー(クライアント)の設定に必要となる各種のデータ(各KDF演算のシードデータ、証明書データ、シードデータ特定のためのパラメータ等)を含む)について、所定のタイミングでダウンロード、または、他の情報処理装置から転送されて記憶部32に記憶するようにしてもよい。この場合、例えば、レスポンスキー設定プログラムは、ダウンロード又は転送した各種データを指定する機能があってもよい。あるいは、各種データが保存されている場所(クライアント3におけるフォルダ等)を指定する機能があってもよい。
【0102】
また例えば、他の実施形態では、第1派生鍵D05のデータが記憶部32記憶される構成であってもよい。この場合は、マスターキーD01、第1KDFシードデータD03は、記憶部32に記憶されなくてもよい。
【0103】
また例えば、他の実施形態では、第2派生鍵D06のデータが記憶部32に記憶される構成であってもよい。この場合は、マスターキーD01、第1KDFシードデータD03、第2KDFシードデータD04は記憶されなくてもよい。またこの場合は、レスポンスキー設定プログラムは、第1派生鍵設定機能を有さない構成としてもよい。
【0104】
[サーバ1で用いられるデータ]
次に、サーバ1の記憶部12に記憶されるデータについて説明する。
図16は、サーバ1の不揮発記憶部13に記憶されるデータを示している。認証処理の実行に際して、これらのデータが必要に応じて適宜揮発記憶部14に読み込まれることで、サーバ1側における認証処理が実行され得る。
【0105】
サーバ1の不揮発記憶部13には、認証プログラムSV401、第1サーバ鍵D07、第2サーバ鍵D13、カウンタ値特定テーブルSV404、第2KDFシードデータ特定テーブルSV405、CA公開鍵SV406、チャレンジバージョンD14等が記憶されている。
【0106】
認証プログラムSV401は、サーバ1側において認証処理を実行するためのプログラムである。認証プログラムSV401は、上記チャレンジデータをクライアント3に発行しその他のデータを送信するするチャレンジ発行機能と、クライアント3からのレスポンスデータセットD103等を用いて検証する検証機能を有するプログラムである。また、検証機能には、
図12を用いて上述したレスポンスキー(サーバ)を設定する機能も含まれる。
【0107】
ここで、第1サーバ鍵D07について補足する。上記のように、本実施形態においては、第1サーバ鍵D07についてはカウンタ値に応じた複数の鍵データが用意されているが、サーバ1に記憶される第1サーバ鍵D07としては、このうちのいずれか1つの鍵データが記憶される。そして、カウンタ値がインクリメントされる度に、各カウンタ値に応じた鍵データに入れ替えるようにして記憶される。
【0108】
なお、クライアント3のカウンタ値D02のインクリメントが、クライアント3のシステムアップデートで行われる場合、各クライアント3におけるカウンタ値D02の更新タイミングは同じとは限らない。そのため、カウンタ値D02のインクリメントの発生(例えば、システムアップデートのタイミング)から一定期間の間は、インクリメント前のカウンタ値D02に対応する第1サーバ鍵D07を「旧第1サーバ鍵」として記憶しておくようにしてもよい。そして、一定期間の間は、まだシステムアップデートがされていないクライアント3から認証を要求された場合でも、「旧第1サーバ鍵」を利用して、認証成功と判定され得るように構成してもよい。
【0109】
上記のように、本実施形態においては、第2サーバ鍵D13は、チャレンジバージョンD14毎に異なる内容の鍵データである。そして、サーバ1の記憶部12には、現在用いるチャレンジバージョンD14に応じた内容の鍵データが、第2サーバ鍵D13として記憶される。チャレンジバージョンD14が変更された際には、旧チャレンジバージョンで発行されたチャレンジを用いて検証要求を行うクライアント3が存在する可能性があるため、旧チャレンジバージョンに対応する第2サーバ鍵D13を記憶しておいて、そのようなクライアント3からの検証要求に対応してもよい。
【0110】
カウンタ値特定テーブルSV404は、上記
図10で示したようなデータである。そのため、ここでは詳細な説明は割愛する。
【0111】
第2KDFシードデータ特定テーブルSV405は、上記
図11で示したようなデータである。そのため、ここでは詳細な説明は割愛する。
【0112】
CA公開鍵SV406は、署名用鍵D09と対になる鍵データであり、サーバ1において証明書データD101の署名D12を検証する際に用いられる鍵データ(公開鍵暗号方式における復号鍵あるいは検証鍵)である。
【0113】
チャレンジバージョンD14は、その時点で発行するチャレンジに付するチャレンジバージョンである。上記のように、本実施形態では、第2サーバ鍵D13はチャレンジバージョン毎に異なるため、チャレンジデータD16が生成された際に、どの第2サーバ鍵D13を用いて第1MAC値(チャレンジデータ)D16が算出されたのかを把握するために、チャレンジバージョンD14が用いられる。なお、チャレンジバージョンによって、第2サーバ鍵D13の変更以外の、サーバ1および/またはクライアント3の各種処理を変更するようにしてもよい。この場合には、チャレンジに含まれるチャレンジバージョンD14に応じて、処理の分岐が行われるようにしてもよい。
【0114】
[PC4で用いられるデータ]
次に、
図17に、上述したPC4の記憶部42に記憶されるデータの一例を示す。すなわち、
図3を用いて上述した証明書作成処理において用いられるデータの一例を示す。PC4の記憶部42には、証明書生成・書込プログラムFC501、マスターキーD01(製造対象のクライアント3に対応するマスターキーD01)、第1KDFシードデータD03(製造対象のクライアント3に対応する第1KDFシードデータD03)、4つの第1サーバー鍵D07A~D07D、署名用鍵D09、クライアントID_D10(製造対象のクライアント3に対応するクライアントID_D10)、第1特定パラメータD11(製造対象のクライアント3に対応する第2KDFシードデータ特定用第1パラメータD11)、が記憶される。
【0115】
証明書生成・書込プログラムFC501は、
図3を用いて上述した証明書データD101を生成してクライアント3の不揮発記憶部33に書き込むためのプログラムである。
【0116】
なお、PC4で用いられる第2KDFシードデータ特定用第1パラメータD11には、例えば、書き込み対象のクライアント3に応じた所定の値が予め設定されているものとする。
【0117】
以下、PC4、クライアント3、サーバ1のそれぞれで行われる処理の詳細について、フローチャートを用いて説明する。なお、以下に示すフローチャートは、処理過程の単なる一例にすぎない。そのため、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判定ステップで利用される閾値も、単なる一例であり、必要に応じて他の値を採用してもよい。
【0118】
まず、上記PC4で実行される証明書生成・書込処理の詳細について説明する。
図18は、証明書生成・書込処理のフローチャートの一例である。まず、PC4の処理部41は、変数であるカウンタ値nに0を設定する(ステップS201)。
【0119】
次に、処理部41は、マスターキーD01、第1KDFシードデータD03、クライアントID_D10を、証明書データD101の書き込み対象としているクライアント3から読み出し、記憶部42に記憶する(ステップS202)。例えば、これらのデータは、PC4に接続されている、書き込み処理の対象となっているクライアント3から読み出される。なお、これらのデータは、クライアント3から読み出すのではなく、製造設備側で生成し、または、製造設備側の記憶装置から読み出すようにしてもよい。
【0120】
次に、処理部41は、マスターキーD01、現在のカウンタ値n、および第1KDFシードデータD03に基づき、第1KDF演算を行い、現在のカウンタ値nに対応する第1派生鍵nを生成する(ステップS203)。
【0121】
次に、処理部41は、生成された第1派生鍵nを、現在のカウンタ値nに対応する第1サーバ鍵D07(カウンタ値n時の鍵)で暗号化する(ステップS204)。
【0122】
次に、処理部41は、カウンタ値nに1を加算する(ステップS205)。
【0123】
次に、処理部41は、カウンタ値nが所定値より大きい値になったか否かを判定する(ステップS206)。本実施形態では、カウンタ値nは0~3の4つの値をとる場合を例示しているため、この所定値は3である。当該判定の結果、所定値より大きい値になっていない場合は(ステップS206でNO)、上記ステップS203に戻り、処理が繰り返される。
【0124】
一方、カウンタ値nが所定値より大きい値になった場合は(ステップS206でYES)、処理部41は、「4つの暗号化第1派生鍵D08と、クライアントID_D10と、第1特定パラメータD11」のハッシュ値、および、署名用鍵FC-D09を用いて、署名D12を作成する(ステップS207)。
【0125】
次に、処理部41は、4つの暗号化第1派生鍵D08、クライアントID_D10、第1特定パラメータD11を含み、上記で作成された署名D12が付与された証明書データD101(
図4参照)を作成する。さらに、処理部41は、証明書データD101をクライアント3の不揮発記憶部33に書き込む(ステップS208)。なお、所定のサーバや他のPCから証明書データをダウンロードまたは転送等して、クライアント3の不揮発記憶部33に書き込んでも良い。
【0126】
次に、認証処理の詳細について説明する。本実施形態において、認証処理は、チャレンジ発行セッションと検証セッションとにより構成される。チャレンジ発行セッションは、クライアント3からチャレンジ発行要求がされることで開始され、主に、チャレンジデータD16をサーバ1で発行し、クライアント3に送信するためのセッションである(後述の通り、その他の処理も行われる)。検証セッションは、クライアント3から(レスポンスの検証を要求する)検証要求がされることで開始され、主に、クライアント3からレスポンスを送信し、サーバ1でこのレスポンスの検証を行い、その結果をクライアント3に送信するためのセッションである。本実施形態において、チャレンジ発行セッションと検証セッションは別の通信セッションである。なお、サーバ1について、複数台のサーバ装置で構成される場合、チャレンジ発行セッションと検証セッションは別のサーバ装置で実行されてもよい。チャレンジ発行セッションと検証セッションは異なる通信セッションであり、それら通信セッションは一連の処理ではない。それゆえに、発行したチャレンジがレスポンスの検証時にそのまま使えるわけではない。本実施形態では、チャレンジとともにチャレンジの元になったデータをクライアントに送信し、そのデータ(チャレンジの元になったデータ)をクライアントからレスポンスとともにサーバに返し、サーバではそのデータからチャレンジを再度生成することで発行したチャレンジとレスポンスとの関係を担保している。
図19から
図30を用いて、サーバ1の処理部11とクライアント3の処理部31が実行する処理を説明する。なお、
図19から
図30において説明する処理の順番は一例にすぎず、適宜順番を入れ替えても良い。また、複数の処理を並行して行っても良い。
【0127】
[チャレンジ発行セッションの処理の詳細]
図19は、チャレンジ発行セッションにおける処理の詳細を示す図である。
図19は、システムプログラム(認証機能)CL201を実行するクライアント3の処理部31と認証プログラムSV401を実行するサーバ1の処理部11の処理を示す。
図19において、まず、クライアント3の処理部31は、サーバ1との間でセッションを確立して、チャレンジ発行を要求する旨と証明書データD101とをネットワーク通信部35を介して送信する処理を行う(ステップS1)。
【0128】
次に、サーバ1の処理部11は、ネットワーク通信部15を介して証明書データD101を受信する処理を行う(ステップS2)。
【0129】
次に、処理部11は、署名D12の検証を行う(ステップS3)。具体的には、処理部11は、上記CA公開鍵SV406を用いて署名D12を復号する。そして、復号結果を用いて、証明書データD101に含まれる上記4つの暗号化第1派生鍵D08、クライアントID_D10、第1特定パラメータD11が改ざんされていないことを判定し、一致していれば、検証の結果、肯定として判定する。なお、復号結果が一致しなかった場合は、否定として、チャレンジデータセットD102の送信は行わずに、その旨をクライアント3に通知して(通知せずに通信を打ち切ってもよい)、処理は終了する。
【0130】
検証の結果、肯定であった場合は、処理部11は、証明書データD101からクライアントID_D10を取り出す(ステップS4)。次に、処理部11は、チャレンジ生成処理を実行する(ステップS5)。
【0131】
図20は、チャレンジ生成処理(ステップS5)の詳細を示すフローチャートである。まず、処理部11は、サーバの現在時刻をチャレンジ発行時刻D15として取得する(ステップS21)。
【0132】
次に、処理部11は、記憶部12から読み出したチャレンジバージョンD14、ステップS21で取得したチャレンジ発行時刻D15、ステップS4で取得したクライアントID_D10を対象にして、チャレンジバージョンD14に対応する第2サーバ鍵D13を用いて第1MAC値(チャレンジデータ)D16を算出する(ステップS22)。
【0133】
次に、処理部11は、チャレンジバージョンD14と、チャレンジ発行時刻D15と、ステップS22で算出した第1MAC値(チャレンジデータ)D16とを含むチャレンジデータセットD102を生成する(ステップS23)。以上で、チャレンジ生成処理は終了する。
【0134】
図19に戻り、チャレンジデータセットD102が生成されれば、処理部11は、チャレンジデータセットD102をネットワーク通信部15を介してクライアント3に送信する処理を行う(ステップS6)。
【0135】
次に、クライアント3の処理部31は、チャレンジデータセットD102をネットワーク通信部35を介して受信する処理を行う(ステップS7)。その後、チャレンジ発行セッションは終了される(ステップS8)。
【0136】
図21は、検証セッションにおける処理の詳細を示す図である。まず、チャレンジデータセットD102を受信したクライアント3の処理部31は、レスポンス生成処理を実行する(ステップS9)。
【0137】
図22は、クライアント3において実行される、レスポンス生成処理の詳細を示すフローチャートである。
図22において、まず、処理部31は、第1派生鍵設定処理を実行する(ステップS31)。
【0138】
図23は、上記第1派生鍵設定処理の第1の例を示すフローチャートである。
図23において、処理部31は、マスターキーD01、カウンタ値D02、および、第1KDFシードデータD03を記憶部32から読み出す(ステップS41)。
【0139】
次に、処理部31は、読み出したマスターキーD01、カウンタ値D02、第1KDFシードデータD03に基づいて第1KDFの演算を行い、第1派生鍵D05を生成する(ステップS42)。以上で、第1派生鍵設定処理は終了する。
【0140】
なお、事前に演算した第1派生鍵D05を記憶部32に記憶するようにしてもよいが、この態様の場合は、第1派生鍵設定処理として、
図24のように、処理部31は、事前に記憶した第1派生鍵データを記憶部32から読み出す(ステップS43)ことにより、第1派生鍵を設定してもよい。つまり、クライアント3で第1KDF演算済の第1派生鍵D05をデータとして記憶している場合は、第1KDFを用いた演算処理が省略されてもよい。
【0141】
図22に戻り、次に、処理部31は、第2派生鍵設定処理を実行する(ステップS32)。
図25は、第2派生鍵設定処理の第1の例を示すフローチャートである。
図25において、処理部31は、記憶部32から第2KDFシードデータD04を読み出す(ステップS51)。次に、処理部31は、第1派生鍵D05および第2KDFシードデータD04に基づいて第2KDFの演算を行い、第2派生鍵(クライアント)D06を生成する(ステップS52)。以上で、第2派生鍵設定処理は終了する。
【0142】
なお、事前に演算した第2派生鍵(クライアント)D06を記憶部32に記憶するようにしてもよいが、この態様の場合は、
図26のように、処理部31は、事前に記憶した第2派生鍵(クライアント)D06のデータを記憶部32から読み出す(ステップS53)ことにより、第2派生鍵を設定してもよい。つまり、クライアント3で第2KDF演算済のデータである第2派生鍵を記憶している場合は、第2KDF演算の処理は省略されてもよい。また、この例の場合は、上記第1派生鍵設定処理自体も省略されてもよい。
【0143】
本実施形態においては、第2派生鍵設定処理により設定された第2派生鍵(クライアント)がレスポンス生成処理においてレスポンスキー(クライアント)として使用される。
【0144】
図22に戻り、次に、処理部31は、レスポンスデータ生成処理を実行する(ステップS34)。
図27は、レスポンスデータ生成処理の詳細を示すフローチャートである。まず、処理部31は、
図19のステップS8で受信したチャレンジデータセットD102から第1MAC値(チャレンジデータ)D16を読み出す(ステップS61)。
【0145】
次に、処理部31は、第1MAC値(チャレンジデータ)D16と上記の通り設定されたレスポンスキー(クライアント)(第2派生鍵設定処理により設定された第2派生鍵(クライアント))とに基づいて、第2MAC値(レスポンスデータ)D17を算出する(ステップS62)
【0146】
次に、処理部31は、
図21のステップS8で受信したチャレンジデータセットD102に含まれるチャレンジバージョンD14、チャレンジ発行時刻D15、および、上記で算出した第2MAC値(レスポンスデータ)D17とを含むレスポンスデータセットD103(上記
図8参照)を生成する(ステップS63)。以上で、レスポンスデータセット生成処理は終了する。
【0147】
なお、ここでは、
図22のレスポンス生成処理として上記ステップS31~S34の処理が一連の流れで実行される例を示した。他の実施形態では、レスポンスキー(クライアント)を設定する処理(ステップS31~S32)は、事前に演算したものを記憶部32に記憶しておき、ステップS9ではそれを読み出すようにしても良い。例えば、クライアント3の起動時に実行して、レスポンスキー(クライアント)のデータを記憶部32に記憶しておき、ステップS9ではそれを読み出すようにしてもよい。
【0148】
図21に戻り、レスポンス生成処理が終われば、処理部31は、サーバ1(同じサーバ装置でなくてもよい)との間で再度セッションを確立する。そして、処理部31は、検証要求と、上記クライアント送信データD104とをネットワーク通信部35を介してサーバ1に送信する処理を行う(ステップS10)。すなわち、ステップS9で生成したレスポンスデータセットD103と、記憶部32から読み出した証明書データD101と第2特定パラメータD19とがサーバ1に送信される。なお、システムプログラム(認証機能)CL201は、証明書データD101が記憶される領域を指定する機能を有し、それにより指定された領域から証明書データD101を読み出すようにしても良い。また、レスポンス生成・送信プログラムは、第2特定パラメータD19が記憶される領域を指定する機能を有し、それにより指定された領域から第2特定パラメータを読み出すようにしても良い。また、システムプログラム(認証機能)CL201は、証明書データD101および/または第2特定パラメータD19を所定のサーバまたはPCから取得(例えば、ダウンロード)する機能を有し、取得した証明書データD101および/または第2特定パラメータD19を上記指定された領域に記憶するようにしても良い。
【0149】
次に、サーバ1の処理部11は、レスポンスデータセットD103、証明書データD101、第2特定パラメータD19をネットワーク通信部15を介して受信する処理を行う(ステップS11)。
【0150】
次に、処理部11は、検証処理を実行する(ステップS12)。
図28~
図29は、検証処理の詳細を示すフローチャートである。
図28において、まず、処理部11は、受信した証明書データD101の署名D12を検証する(ステップS71)。この処理は上述した処理と同じであるため、詳細説明は割愛する。
【0151】
署名検証に問題なければ、次に、処理部11は、証明書データD101から第1特定パラメータD11を取り出す(ステップS72)。
【0152】
次に、処理部11は、取り出した第1特定パラメータD11および、クライアント3から受信した第2特定パラメータD19に基づき、第2KDFシードデータ特定テーブルSV405を参照して、上記第2KDFシードデータD04の値を特定する。また、処理部11は、第1特定パラメータD11および第2特定パラメータD19に基づき、カウンタ値特定テーブルSV404を参照して、カウンタ値D02を特定する(ステップS73)。
【0153】
次に、処理部11は、特定したカウンタ値D02に対応する暗号化第1派生鍵D08をクライアント3から受信した証明書データD101から取り出す(ステップS74)。
【0154】
次に、処理部11は、取り出した暗号化第1派生鍵D08に対して、上記特定したカウンタ値D02に対応した第1サーバ鍵D07を用いて、第1派生鍵D05に復号する(ステップS75)。
【0155】
次に、処理部11は、第1派生鍵D05およびステップS73で特定した第2KDFシードデータD04の値に基づいて第2KDFの演算を行い、第2派生鍵(サーバ)D206を生成する。この第2派生鍵(サーバ)D206がレスポンスキー(サーバ)として使用される(ステップS76)。すなわち、第2派生鍵D206の生成によりレスポンスキー(サーバ)が設定される。
【0156】
次に、処理部11は、ステップS11で受信したレスポンスデータセットD103に含まれるチャレンジバージョンD14、および、チャレンジ発行時刻D15と、ステップS11で受信した証明書データD101に含まれるクライアントID_D10と、チャレンジバージョンD14に対応する第2サーバ鍵D13とに基づき、第1MAC値(検証時)D216を算出する(ステップS77)
【0157】
次に、処理部11は、上記第1MAC値(検証時)D216とステップS76で設定されたレスポンスキー(サーバ)(ステップS76で生成された第2派生鍵(サーバ)D206)とに基づき、第2MAC値(検証時)D217を算出する(ステップS78)。なお、この処理における演算アルゴリズムは、クライアント3における第2MAC値演算のアルゴリズムと同じである。
【0158】
次に、処理部11は、クライアントから受信した第2MAC値(レスポンスデータ)D17と、サーバ1で算出した第2MAC値(検証時)D217とが一致するかを検証する(ステップS79)。
【0159】
次に、処理部11は、上記検証の結果、一致したか否かを判定する(ステップS80)。一致しなかった場合は(ステップS80でNO)、処理部11は、クライアント3にエラーを返す処理を実行する(ステップS83)。その後、検証処理は終了する。一方、一致した場合は(ステップS80でYES)、クライアント3から受信したレスポンスデータD17の正当性があると考えられる。なお、MAC値はクライアントIDが演算対象になっているため、第2MAC値(レスポンスデータ)と第2MAC値(検証時)が一致している場合、チャレンジ発行セッションにおいてチャレンジデータを発行した先のクライアントと、検証セッションにおいてレスポンスデータD17等を送ってきたクライアントとが同じクライアント3である(一致性がある)と判断できる。なお、チャレンジ発行セッションにおけるクライアントIDと検証セッションにおけるクライアントIDのID自体を比較することは必要ではない。
【0160】
ステップS80でYESの場合、処理部11は、時間的観点からの検証を行う。具体的には、処理部11は、サーバ1の現在時刻が、受信したレスポンスデータセットD103に含まれるチャレンジ発行時刻D15から一定時間以上経過しているか否かを判定する。当該判定の結果、経過している場合は(ステップS81でYES)、上記ステップS83に処理が進められ、クライアント3にエラーを返す処理が実行される。一方、経過していない場合は(ステップS81でNO)、処理部11は、クライアント3の正当性が確認でき、検証に成功したものとして、所定のサービストークンを生成する。その後、レスポンス検証処理は終了する。
【0161】
なお、上記の例では、第2MAC値の検証を行ってから、時間的観点からの検証を行う流れの例を示したが、この検証の順番は逆であってもよい。
【0162】
図21に戻り、レスポンス検証処理が終われば、次に、処理部11は、検証に成功している場合は、所定のサービストークンをネットワーク通信部15を介してクライアントに送信する処理を行う(ステップS13)。
【0163】
次に、クライアント3の処理部31は、ネットワーク通信部35を介してサービストークンを受信する処理を行う(ステップS14)。その後、レスポンスセッションが終了される(ステップS15)。
【0164】
次に、処理部31は、サービストークンを、アプリケーション、本実施形態ではオンラインゲームプログラムに渡す(ステップS16)。これにより、オンラインゲームプログラムがこのサービストークンを用いて所定のサーバにサービスを要求することで、当該サーバからオンラインゲームのサービスが提供される。
【0165】
なお、上記チャレンジ発行セッションに係る通信、および、検証セッションに係る通信は、どのような通信方式を用いてもよい。例えばSSL等の暗号化通信で行われてもよいし、非暗号化通信で行われてもよい。
【0166】
次に、
図30を用いて、上述した認証処理を利用する、クライアント3におけるオンラインゲーム処理の一例を説明する。
図30において、まず、処理部31は、オンラインゲームの開始要求を受け付ける(ステップS101)。例えば、処理部31は、ユーザによりオンラインゲームの起動操作等を受け付ける。
【0167】
次に、処理部31は、システムソフトウェア(認証機能)を起動する。これにより、上述したような認証処理が行われる。
【0168】
次に、処理部31は、サービストークンをシステムソフトウェアから受領したか否かを判定する(ステップS109)。当該判定の結果、受領していない場合は(ステップS103でNO)、受領するまで待機する。
【0169】
一方、サービストークンを受領すれば(ステップS103でYES)、次に、処理部31は、受領したサービストークンを利用してオンラインゲームサーバにサービスを要求する(ステップS104)。
【0170】
その後、処理部31は、必要に応じてオンラインゲームサーバや他のクライアント3と通信しながら、オンラインゲームを実行する(ステップS105)。次に、処理部31は、オンラインゲームの終了条件が満たされたか否かを判定する(ステップS106)。満たされていなければ(ステップS106でNO)、オンラインゲームの実行を継続し、満たされた場合は(ステップS106でYES)、オンラインゲーム処理を終了する。
【0171】
以上で、本実施形態に係る各処理の詳細説明を終了する。
【0172】
[変形例]
なお、他の実施形態では、第1KDFのシードデータとしてカウンタ値を用いないような構成としてもよい。すなわち、上記マスターキーD01と第1KDFシードデータD03を用いて上記第1KDFの演算を行って、上記第1派生鍵D05を生成するような構成としてもよい。この場合、証明書には、1つの暗号化第1派生鍵D05が含まれることになる。また、カウンタ値の取りうる値は0~3に限られないことは言うまでもない。また、カウンタの代わりに所定の変数値を用いても良く、インクリメントの方式で変更されなくてもよい。
【0173】
また、上記実施形態では、レスポンスキー設定処理において、第1KDF演算と第2KDF演算という、2段階でKDF演算を用いる例を示した。他の実施形態では、KDF演算は1段階でもよいし、または、KDF演算の段階をさらに増やし、第2KDF演算の後に、更なるKDF演算を行った結果(派生鍵)をレスポンスキーとして設定してもよい。「更なるKDF演算」としては、例えば、クライアント3の揮発性メモリまたは不揮発性メモリ上のデータまたはそれを加工したデータをシードデータとするKDF演算を行ってもよい。このメモリ上のデータは、システムソフトウェアのバージョン毎に異なるデータであってもよい。
【0174】
また、上記実施形態では、サーバ1におけるレスポンスキー設定処理において、第1特定パラメータD11および第2特定パラメータD19基づいて、第2KDFシードデータD04を特定して用いていた。この点、他の実施形態では、これらのパラメータは用いずに、レスポンスキーを設定してもよい。例えば、1つのパラメータを用いて第2KDFシードデータを特定してもよいし、第2KDFシードデータ自体をクライアント3からサーバ1に送信してもよい。または、第2KDFシードデータが全クライアント共通の場合には、第2KDFシードデータをサーバ1に記憶しておけばよい。
【0175】
また、上記実施形態では、第1KDFの演算をサーバ1で行わないようにしたが、サーバ1でマスターキーD01および第1KDFシードデータを特定し、第1KDFの演算をサーバ1で行うようにしてもよい。その場合、証明書データD101内の暗号化第1派生鍵D08は不要となる。この場合、マスターキーD01を第1サーバ鍵で暗号化したデータを証明書データD101内に含めてもよい。そして、サーバ1においては、マスターキーD01を復号し、上述した第1KDFの処理を実行して第1派生鍵D05を得るようにすればよい。
【0176】
また、チャレンジデータの生成に関して、上記の例では第2サーバ鍵を用いてMAC演算を行って第1MAC値を算出する例を示した。他の実施形態では、MAC演算の代わりに、署名を行うような構成としてもよい。例えばRSA署名を用いてもよい。
【0177】
また、上記レスポンスキーを用いたレスポンスデータの生成に関して、上記第2MAC値の演算の代わりに、ブロック化暗号化演算を用いてレスポンスデータを生成してもよい。ブロック化暗号化演算は、例えば、AESであってもよい。
【0178】
また、他の実施形態では、クライアント3がレスポンスデータD17を送信する際にレスポンスデータD17と共に、カウンタ値D02の現在値を特定するためのパラメータとを送信するように構成してもよい。そして、サーバ1では、この送信されたパラメータを用いてカウンタ値D02を特定して、上述したような処理でレスポンスキーを設定してもよい。
【0179】
また、上記実施形態では、チャレンジ発行セッションと検証セッションを異なる通信セッションとしたが、1回のセッションでチャレンジ発行と検証を行ってもよい。
【0180】
また、上記実施形態では、暗号化された派生鍵をクライアント証明書に含めたが、レスポンスデータ送信時に、クライアント証明書とは別に、暗号化された派生鍵をサーバに送信してもよい。第2KDFシードデータ特定用第1パラメータ同様である。また、第2KDFシードデータ特定用第2パラメータを証明書に含めてもよく、また、証明書等は別に署名を付与して送信してもよい。
【産業上の利用可能性】
【0181】
本開示にかかる情報処理システムは、クライアントをデバイス認証するための新規な認証方法を提供できる。
【符号の説明】
【0182】
1 サーバ
3 クライアント
4 PC
11 処理部
12 記憶部
13 不揮発記憶部
14 揮発記憶部
15 ネットワーク通信部
16 操作デバイス
17 画像出力部
31 処理部
32 記憶部
33 不揮発記憶部
34 揮発記憶部
35 ネットワーク通信部
36 操作デバイス
37 画像出力部
41 処理部
42 記憶部
43 不揮発記憶部
44 揮発記憶部
45 ネットワーク通信部
46 操作デバイス
47 画像出力部
【要約】
サーバは、チャンレジデータを発行し、クライアントに送信する。クライアントは、第1パラメータを記憶し、クライアント側のレスポンスキーの設定を行い、チャレンジデータの受信を行い、上記レスポンスキーを用いて、受信されたチャレンジデータからレスポンスデータの生成を行い、サーバに、当該レスポンスデータと、上記記憶された第1パラメータの送信を行う。サーバは、さらに、レスポンスデータと第1パラメータを受信し、当該第1パラメータを用いてサーバ側のレスポンスキーを設定する演算のシードデータを特定し、当該シードデータを用いて演算を実行することで、サーバ側のレスポンスキーの設定を行い、チャレンジデータとサーバ側のレスポンスキーを用いて、受信されたレスポンスデータを検証して、その結果を通知する。クライアントは当該通知を受信する。