(57)【要約】【課題】デバイスの認証の正当性を確保することができるセキュアエレメント、コンピュータプログラム、デバイス、サーバ及びセキュアエレメントによる認証方法を提供する。【解決手段】セキュアエレメントは、データの送信又は受信を要求する要求情報を生成するデバイス本体から要求情報を取得する取得部と、取得した要求情報が正当であるか否かを判定する判定部と、正当であると判定した場合、要求情報を認証する認証情報を生成する生成部と、生成した認証情報を添付した要求情報を出力する出力部とを備える。【選択図】図１
2019009728.tif 000002
【特許請求の範囲】
【請求項１】
データの送信又は受信を要求する要求情報を生成するデバイス本体から要求情報を取得する取得部と、
該取得部で取得した要求情報が正当であるか否かを判定する判定部と、
該判定部で正当であると判定した場合、前記要求情報を認証する認証情報を生成する生成部と、
該生成部で生成した認証情報を添付した前記要求情報を出力する出力部と
を備えるセキュアエレメント。
【請求項２】
前記生成部は、
前記判定部で正当でないと判定した場合、認証情報を生成しない請求項１に記載のセキュアエレメント。
【請求項３】
前記取得部で正当でない要求情報を取得した回数を計数する計数部と、
該計数部で計数した回数に応じて前記判定部又は生成部での処理を停止する停止部と
を備える請求項１又は請求項２に記載のセキュアエレメント。
【請求項４】
前記要求情報の所定箇所に含まれるテキスト形式又はバイナリ形式の対象情報を特定する特定部を備え、
前記判定部は、
前記特定部で特定した対象情報に基づいて前記要求情報が正当であるか否かを判定する請求項１から請求項３のいずれか一項に記載のセキュアエレメント。
【請求項５】
前記生成部は、
デバイスが送信する要求情報を受信するサーバが該要求情報を認証する際に使用する鍵に対応する秘密鍵に基づいて認証情報を生成する請求項１から請求項４のいずれか一項に記載のセキュアエレメント。
【請求項６】
前記取得部で取得した要求情報から所定の認証用情報を抽出する抽出部を備え、
前記生成部は、
該抽出部で抽出した認証用情報を入力とし、秘密鍵を用いた鍵付きハッシュ関数を適用して認証情報を生成する請求項１から請求項５のいずれか一項に記載のセキュアエレメント。
【請求項７】
前記出力部は、
前記生成部で生成した認証情報を添付した前記要求情報を前記デバイス本体又はデバイスが送信する要求情報を受信するサーバのいずれか一方へ出力する請求項１から請求項６のいずれか一項に記載のセキュアエレメント。
【請求項８】
前記セキュアエレメントは、耐タンパ性を有する請求項１から請求項７のいずれか一項に記載のセキュアエレメント。
【請求項９】
コンピュータに、データの送信又は受信を要求する要求情報を出力させるためのコンピュータプログラムであって、
コンピュータに、
前記要求情報を生成するデバイス本体から要求情報を取得する処理と、
取得した要求情報が正当であるか否かを判定する処理と、
正当であると判定した場合、前記要求情報を認証する認証情報を生成する処理と、
生成した認証情報を添付した前記要求情報を出力する処理と
を実行させるコンピュータプログラム。
【請求項１０】
請求項１から請求項８のいずれか一項に記載のセキュアエレメントを備えるデバイス。
【請求項１１】
データの送信又は受信を要求する要求情報を生成する要求情報生成部と、
前記セキュアエレメントが生成した認証情報が添付された要求情報を取得する要求情報取得部と、
該要求情報取得部で取得した要求情報をサーバへ送信する送信部と
を備える請求項１０に記載のデバイス。
【請求項１２】
セキュアエレメントが生成した認証情報が添付された要求情報を前記セキュアエレメント又はデバイス本体から取得する取得部と、
該取得部で取得した要求情報を認証する認証情報を生成する生成部と、
前記取得部で取得した要求情報に添付された認証情報を抽出する抽出部と、
前記生成部で生成した認証情報及び前記抽出部で抽出した認証情報に基づいて、デバイスとの接続可否を判定する判定部と
を備えるサーバ。
【請求項１３】
データの送信又は受信を要求する要求情報を生成するデバイス本体から要求情報を取得部が取得し、
取得された要求情報が正当であるか否かを判定部が判定し、
前記要求情報が正当であると判定された場合、前記要求情報を認証する認証情報を生成部が生成し、
生成された認証情報を添付した前記要求情報を出力部が出力するセキュアエレメントによる認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアエレメント、コンピュータプログラム、デバイス、サーバ及びセキュアエレメントによる認証方法に関する。
【背景技術】
【０００２】
従来、不正な認証を防止して認証の正当性を確保するため、インターネット等のネットワークに接続された情報処理装置（例えば、パーソナルコンピュータ等）を介してネットワーク上のサービスを利用する場合、パスワード又は生体認証等による個人認証によってユーザの権限を確認すること、あるいは権限があるユーザしか近寄れないように公開鍵証明書等の認証情報を保持する装置を物理的に保護すること等が行われている。
【０００３】
また、特許文献１には、ログインＩＤ、パスワード、Ｗｅｂサイトの情報を予め登録したＩＣカードをユーザ端末に装着することによって、ログインＩＤ及びパスワードを自動的に入力し、ログイン認証処理を簡易化するパスワード情報管理システムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１４６５５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一方で、ＩｏＴ（Internet of Things）では、多種多様なデバイスがネットワークに接続されることで新たな付加価値を生み出している。このようなデバイスは自動的にネットワークに接続されて所要のデータの送信又は受信が行われるので、従来のように、権限をもつユーザによる認証処理を介在させることは非現実的である。また、このようなデバイスは様々な場所に設置されることを前提としているため、従来のように、それぞれのデバイスを物理的に保護することも実用的でなく困難である。このため、このようなデバイスの認証の正当性を維持することが望まれる。
【０００６】
本発明は、斯かる事情に鑑みてなされたものであり、デバイスの認証の正当性を確保することができるセキュアエレメント、コンピュータプログラム、デバイス、サーバ及びセキュアエレメントによる認証方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の実施の形態に係るセキュアエレメントは、データの送信又は受信を要求する要求情報を生成するデバイス本体から要求情報を取得する取得部と、該取得部で取得した要求情報が正当であるか否かを判定する判定部と、該判定部で正当であると判定した場合、前記要求情報を認証する認証情報を生成する生成部と、該生成部で生成した認証情報を添付した前記要求情報を出力する出力部とを備える。
【０００８】
本発明の実施の形態に係るコンピュータプログラムは、コンピュータに、データの送信又は受信を要求する要求情報を出力させるためのコンピュータプログラムであって、コンピュータに、前記要求情報を生成するデバイス本体から要求情報を取得する処理と、取得した要求情報が正当であるか否かを判定する処理と、正当であると判定した場合、前記要求情報を認証する認証情報を生成する処理と、生成した認証情報を添付した前記要求情報を出力する処理とを実行させる。
【０００９】
本発明の実施の形態に係るデバイスは、本発明の実施の形態に係るセキュアエレメントを備える。
【００１０】
本発明の実施の形態に係るサーバは、セキュアエレメントが生成した認証情報が添付された要求情報を前記セキュアエレメント又はデバイス本体から取得する取得部と、該取得部で取得した要求情報を認証する認証情報を生成する生成部と、前記取得部で取得した要求情報に添付された認証情報を抽出する抽出部と、前記生成部で生成した認証情報及び前記抽出部で抽出した認証情報に基づいて、デバイスとの接続可否を判定する判定部とを備える。
【００１１】
本発明の実施の形態に係るセキュアエレメントによる認証方法は、データの送信又は受信を要求する要求情報を生成するデバイス本体から要求情報を取得部が取得し、取得された要求情報が正当であるか否かを判定部が判定し、前記要求情報が正当であると判定された場合、前記要求情報を認証する認証情報を生成部が生成し、生成された認証情報を添付した前記要求情報を出力部が出力する。
【発明の効果】
【００１２】
本発明によれば、デバイスの認証の正当性を確保することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態の認証システムの構成の一例を示すブロック図である。
【図２】本実施の形態の認証システムのリクエスト認証時の動作の一例を示す説明図である。
【図３】本実施の形態の認証システムで用いるリクエストメッセージの一例を示す説明図である。
【図４】本実施の形態の認証システムで用いるリクエスト検証アルゴリズムの一例を示す説明図である。
【図５】本実施の形態の認証システムでの署名生成の流れの一例を示す説明図である。
【図６】本実施の形態のセキュアエレメントの処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて説明する。図１は本実施の形態の認証システムの構成の一例を示すブロック図である。本実施の形態の認証システムは、セキュアエレメント５０が組み込まれたデバイス１００、及びサーバ２００などを備える。デバイス１００は、「モノのインターネット」（ＩｏＴ）でいうところの「モノ」に該当するデバイス（電子デバイスとも称する）を含む。デバイス１００とサーバ２００とは、インターネット等のネットワーク１を介して接続される。デバイス１００は、人手を介さずにネットワーク１に自動接続され、サーバ２００へ自動的にリクエスト（要求情報）を送信する。なお、本実施の形態では、デバイス１００がサーバ２００へ自動的にリクエストを送信する前に、後述のセキュアエレメント５０による認証処理が行われ、デバイス１００は、セキュアエレメント５０から返信された署名付きリクエストをサーバ２００に送信する。
【００１５】
デバイス１００は、セキュアエレメント５０の他に、デバイス本体１０を備える。デバイス本体１０とセキュアエレメント５０との間は、Ｉ２Ｃ（Inter-Integrated Circuit）、ＳＰＩ（Serial Peripheral Interface）等の通信路３０で物理的に接続されている。なお、セキュアエレメント５０は、ＵＩＣＣ（Universal Integrated Circuit Card）のように着脱可能な構成とすることもできる。
【００１６】
デバイス本体１０は、ＣＰＵ１１、ネットワーク通信部１２、リクエスト生成部１３、インタフェース部１４などを備える。
【００１７】
ＣＰＵ１１は、デバイス本体１０全体の制御、セキュアエレメント５０との間の通信制御などを行う。
【００１８】
ネットワーク通信部１２は、デバイス１００をネットワークに接続する機能を有し、ネットワーク１上のサーバ２００との間で情報の送受信を行うことができる。ネットワーク通信部１２は、不図示のセンサ類で検出した情報を送信することができる。また、ネットワーク通信部１２は、送信部としての機能を有し、インタフェース部１４がセキュアエレメント５０から取得した要求情報をサーバ２００へ送信する。
【００１９】
リクエスト生成部１３は、要求情報生成部としての機能を有し、データの送信又は受信を要求する要求情報を生成する。例えば、デバイス１００が、ネットワーク上のサーバ２００へデータを送信する場合、リクエスト生成部１３は、送信したい当該データを含む所定の形式の要求情報を生成する。以下では、要求情報をリクエストと称し、要求情報の内容をリクエストメッセージ（リクエストの内容）と称する。
【００２０】
インタフェース部１４は、通信路３０を介してセキュアエレメント５０との間のインタフェース機能を有する。インタフェース部１４は、リクエスト生成部１３で生成したリクエストをセキュアエレメント５０へ出力する。また、インタフェース部１４は、要求情報取得部としての機能を有し、セキュアエレメント５０が生成した認証情報（署名）が添付されたリクエストをセキュアエレメント５０から取得する。
【００２１】
セキュアエレメント５０は、リクエスト検証処理部５１、リクエスト署名処理部５２、インタフェース部５３、秘密鍵５４、カウンタ５５、ブロック状態フラグ５６などを備える。
【００２２】
インタフェース部５３は、通信路３０を介してデバイス本体１０との間のインタフェース機能を有する。インタフェース部５３は、取得部としての機能を有し、デバイス本体１０（リクエスト生成部１３）が生成したリクエストを取得する。
【００２３】
リクエスト検証処理部５１は、判定部としての機能を有し、インタフェース部５３で取得したリクエストが正当であるか否か（正当性）を判定する。リクエスト検証処理部５１は、リクエストメッセージを解析して、リクエストの正当性を判定する。判定処理の詳細は後述する。
【００２４】
リクエスト署名処理部５２は、生成部としての機能を有し、リクエスト検証処理部５１でリクエストが正当であると判定した場合、リクエストを認証する認証情報を生成する。なお、以下では、認証情報を署名と称する。リクエスト署名処理部５２は、リクエストメッセージに生成した署名を添付する処理を行う。署名生成の詳細は後述する。
【００２５】
インタフェース部５３は、出力部としての機能を有し、リクエスト署名処理部５２で署名が添付されたリクエストをデバイス本体１０へ出力する。
【００２６】
カウンタ５５は、計数部としての機能を有し、インタフェース部５３で正当でないリクエストを取得した回数を計数する。カウンタ５５は、リクエスト検証処理部５１が行う検証処理の回数を再試行可能な回数まで計数する。カウンタ５５の計数値は、例えば、正又は０の整数とすることができる。最初は、計数値をある特定の初期値（正の整数）に設定し、不正なリクエストが取得される都度、１を減算する。計数値が０になると、ブロック状態フラグ５６の状態を「ブロック」に遷移する。なお、計数値の初期値を０に設定しておき、不正なリクエストが取得される都度、１を加算し、計数値が所定の閾値（正の整数）になると、ブロック状態フラグ５６の状態を「ブロック」に遷移するようにしてもよい。
【００２７】
ブロック状態フラグ５６は、「ブロック」及び「非ブロック」の二値の状態を保持する。ブロック状態フラグ５６は、初期値として「非ブロック」が設定されている。ブロック状態フラグ５６は、停止部としての機能を有し、「ブロック」の状態になると、リクエスト検証処理部５１及びリクエスト署名処理部５２の少なくとも一方の処理を停止する。
【００２８】
秘密鍵５４は、リクエスト署名処理部５２で署名を生成する際に用いられる。
【００２９】
セキュアエレメント５０は、耐タンパ性を有する。セキュアエレメント５０の機能（例えば、リクエスト検証処理部５１、リクエスト署名処理部５２、秘密鍵５４など）をハードウェアのモジュールで実現する場合、耐タンパ性を有するためには、セキュアエレメント５０を１チップ化にしてもよく、あるいは、モジュール表面をコーティングしてもよい。また、セキュアエレメント５０の機能をソフトウェアのモジュールで実現する場合、耐タンパ性を有するためには、実行コードを暗号化し、実行時に必要な部分だけをメモリ上で復号するようにすればよい。
【００３０】
セキュアエレメント５０を耐タンパ性にすることによって、署名生成処理において使用する秘密鍵等の機密情報、あるいは署名生成処理自体を物理的に保護することができる。
【００３１】
サーバ２００は、リクエスト署名処理部２０１、通信部２０２、秘密鍵２０３、リクエスト署名抽出部２０４、接続可否判定部２０５などを備える。なお、図１の例では、セキュアエレメント５０の秘密鍵５４に対応する鍵として、秘密鍵２０３を図示しており、共通鍵方式を例示しているが、秘密鍵５４に対応する鍵としては、公開鍵方式の場合のように公開鍵とすることもできる。
【００３２】
通信部２０２は、ネットワーク１を介してデバイス１００との間の通信機能を有する。通信部２０２は、取得部としての機能を有し、セキュアエレメント５０が生成した署名が添付されたリクエストをデバイス本体１０から取得する。なお、通信部２０２は、セキュアエレメント５０が生成した署名が添付されたリクエストを直接セキュアエレメント５０から取得することもできる。
【００３３】
リクエスト署名処理部２０１は、生成部としての機能を有し、通信部２０２で取得したリクエスト（セキュアエレメント５０が生成した署名が添付されたリクエスト）を認証する署名を生成する。より具体的には、リクエスト署名処理部２０１は、取得したリクエストからセキュアエレメント５０が生成した署名を取り除いた部分に対して、リクエスト署名処理部５２と同じアルゴリズム及び秘密鍵２０３を用いて署名を生成する。
【００３４】
リクエスト署名抽出部２０４は、抽出部としての機能を有し、通信部２０２で取得したリクエスト（セキュアエレメント５０が生成した署名が添付されたリクエスト）からセキュアエレメント５０が生成した署名を抽出する。
【００３５】
接続可否判定部２０５は、判定部としての機能を有し、リクエスト署名処理部２０１で生成した署名及びリクエスト署名抽出部２０４で抽出した署名に基づいて、デバイス１００との接続可否を判定する。例えば、リクエスト署名処理部２０１で生成した署名とリクエスト署名抽出部２０４で抽出した署名とが一致する場合、デバイス１００が送信したリクエストが正当なものであるとしてデバイス１００のサーバ２００への接続を許可する。また、リクエスト署名処理部２０１で生成した署名とリクエスト署名抽出部２０４で抽出した署名とが一致しない場合、デバイス１００が送信したリクエストは不正なものであるとしてデバイス１００のサーバ２００への接続を許可しない。これにより、デバイス１００の認証の正当性を確保することができる。
【００３６】
図２は本実施の形態の認証システムのリクエスト認証時の動作の一例を示す説明図である。以下、符号Ｐ１〜Ｐ８で示す処理について説明する。以下では、デバイス１００とサーバ２００との間のプロトコルをＨＴＴＰ（Hyper Text Transfer Protocol）とし、リクエストメッセージの形式として、ＨＴＴＰリクエストを例として説明するが、プロトコル及びリクエストは、これに限定されない。
【００３７】
Ｐ１（リクエストの生成）：デバイス本体１０は、ネットワーク１上のサーバ２００に対して送信したい情報を、単一のリクエストメッセージ（ＨＴＴＰ等）とするリクエストを生成する。
【００３８】
Ｐ２（リクエストをセキュアエレメント５０へ送信）：デバイス本体１０は、生成したリクエストを物理的な通信路３０を介してセキュアエレメント５０へ送信（出力）する。
【００３９】
Ｐ３（リクエストの正当性を検証）：セキュアエレメント５０は、デバイス本体１０から取得したリクエストを所定のアルゴリズムを用いて検証（判定）する。所定のアルゴリズムについては後述する。デバイス本体１０から取得したリクエストが正当である場合、セキュアエレメント５０は、後述のＰ４の署名生成処理を行う。デバイス本体１０から取得したリクエストが不正である場合、セキュアエレメント５０は、処理を終了する。
【００４０】
Ｐ４（署名を生成）：セキュアエレメント５０は、内部に保持している秘密鍵５４を用い、所定のアルゴリズムを用いて署名を生成し、取得したリクエストに生成した署名を添付する。所定のアルゴリズムについては後述する。
【００４１】
Ｐ５（署名付きリクエストをデバイス本体１０へ返信）：セキュアエレメント５０は、署名を添付したリクエストをデバイス本体１０に返信（出力）する。
【００４２】
Ｐ６（署名付きリクエストをサーバ２００へ送信）：デバイス１００は、セキュアエレメント５０から取得した署名付きリクエストを、そのままサーバ２００へ送信する。これにより、セキュアエレメント５０から返信された署名付きリクエストをそのままサーバ２００へ送信（転送）するだけで、デバイス１００は、ネットワーク１上のサーバ２００に接続するための認証を行うことができる。
【００４３】
Ｐ７（受信したリクエストから署名を生成）：サーバ２００は、受信した署名付きリクエストのリクエストメッセージの本体部分から、セキュアエレメント５０が実行したアルゴリズムと同一のアルゴリズム及び秘密鍵２０３を用いて署名を生成する。
【００４４】
Ｐ８（署名を照合して接続可否を判定）：サーバ２００は、受信した署名付きリクエストのリクエストメッセージ内の署名（添付された署名）と、上述のＰ７において自ら生成した署名とを照合する。両者が一致する場合、デバイス１００からのリクエストは正当なものであるとして接続を許可する。両者が一致しない場合、デバイス１００からのリクエストは不正なものであるとして接続を許可しない。
【００４５】
本実施の形態の認証システムを実現するにあたっては、リクエストメッセージの形式、通信プロトコル、セキュアエレメント５０でのリクエスト検証アルゴリズム、セキュアエレメント５０及びサーバ２００でのリクエスト署名アルゴリズムなどの要素技術を用いる。この場合、かかる要素技術として何を用いるかは適宜決定することができる。本実施の形態では、かかる要素技術として、以下のものを一例として説明する。
【００４６】
リクエストメッセージの形式として、ＨＴＴＰリクエストを用いる。ＨＴＴＰリクエストは、Ｗｅｂ技術に広く用いられているプロトコルに基づくリクエストである。デバイス１００とサーバ２００との間の通信プロトコルとして、ＨＴＴＰを用いる。なお、プロトコルは、ＨＴＴＰに限定されるものではなく、ＭＱＴＴ（Message Queue Telemetry Transport）、ＡＭＱＰ（Advanced Message Queue Protocol）などの他のプロトコルを用いることもできる。セキュアエレメント５０でのリクエスト検証アルゴリズム、セキュアエレメント５０及びサーバ２００でのリクエスト署名アルゴリズムについては後述する。
【００４７】
次に、リクエストの内容、及びリクエスト検証アルゴリズムについて説明する。
【００４８】
図３は本実施の形態の認証システムで用いるリクエストメッセージの一例を示す説明図である。上段の枠で囲まれた文字列は、ＨＴＴＰリクエストメッセージの一例を示す。ＨＴＴＰリクエストメッセージは、テキスト形式のデータである。符号Ａで囲まれたデータは、ＵＲＬであり、ＨＴＴＰ通信時に接続先を特定するための文字列である。図３では、ＵＲＬの部分を抜き出して図示している。符号Ｂで囲まれたデータは、ＨＴＴＰヘッダであり、ＨＴＴＰリクエストの意味を表す情報である。ＨＴＴＰヘッダは、ネットワーク１上のサーバのホスト名（ＨＯＳＴ）、ペイロード長（Content-length）等、技術仕様を定めるＲＦＣ（Request for Comments）７２３０で規定された情報の他に、任意の拡張が可能である。図３では、ＨＴＴＰヘッダの部分を抜き出して図示している。また、符号Ｃで囲まれたデータは、ペイロードであり、ＨＴＴＰ上で授受されるデータ本体である。Ｗｅｂページの閲覧用途では、ＨＴＭＬ（Hyper Text Markup Language）で記述されたＷｅｂページコンテンツが格納されることが多いが、ＩｏＴ用途では、例えば、ＪＳＯＮ（Java Script（登録商標） Object Notation）等で記述された、何らかの構造化データであることが多い。図３では、ペイロードの部分を抜き出して図示している。
【００４９】
図４は本実施の形態の認証システムで用いるリクエスト検証アルゴリズムの一例を示す説明図である。セキュアエレメント５０（リクエスト検証処理部５１）は、ＨＴＴＰリクエストをデバイス本体１０から取得すると、ＨＴＴＰリクエストに含まれるＵＲＬ、ＨＴＴＰヘッダ、ペイロードについて文字列のチェックを行う。セキュアエレメント５０におけるポリシー（アクセスポリシー）に基づくチェック内容に応じて、リクエスト検証アルゴリズムは適宜決定することができるが、図４はその一例を示す。
【００５０】
ポリシーが、接続先ネットワークサーバ名による制限である場合、チェック処理は、ＵＲＬに”hogehoge.co.jp”が含まれていない場合、不正なリクエストとする。これにより、例えば、攻撃者が詐取したデバイスによって不正なリクエスト（例えば、攻撃者のサーバへの接続）をネットワーク上に送信しようとした場合、セキュアエレメント５０は、正当なリクエストではないと判定することができ、不正な要求情報の送信を抑止することが可能となる。
【００５１】
また、ポリシーが、接続先サービス（フォルダ名、クエリ文字列等）による制限である場合、チェック処理は、ＵＲＬに”fugafuga”（フォルダ名）が含まれていない場合、あるいはクエリ文字列cmdで示される値が自然数（１〜）でない場合、不正なリクエストとする。
【００５２】
また、ポリシーが、ＨＴＴＰヘッダの任意の属性による制限である場合、チェック処理は、ＨＴＴＰヘッダX-Admin-Protocolの値が”globalplatform-remote-admin/1.1.1”でない場合、不正なリクエストとする。また、ポリシーが、ペイロードの内容による制限である場合、チェック処理は、ペイロードに”01”が含まれていない場合、不正なリクエストとする。なお、リクエスト検証アルゴリズムは、図４に示すチェック処理をすべて用いてもよく、一部だけを用いてもよい。なお、ポリシー例及びチェック処理の例は、図４に示すものに限定されない。
【００５３】
上述のように、リクエスト検証処理部５１は、特定部としての機能を有し、リクエストの所定箇所（図３の例では、ＵＲＬ、ＨＴＴＰヘッダ、ペイロード）に含まれるテキスト形式の対象情報を特定する。図３の例では、対象情報は、ＵＲＬ、ＨＴＴＰヘッダ、ペイロードとして抽出される文字列である。なお、所定箇所は、リクエストが正当であるか否かを判定する際に判定可能な箇所であればよい。
【００５４】
リクエスト検証処理部５１は、特定した対象情報に基づいてリクエストが正当であるか否かを判定する。これにより、リクエストメッセージの全体を判定対象とする必要がなくなり、処理労力を軽減することができる。
【００５５】
次に、リクエスト署名アルゴリズムについて説明する。
【００５６】
図５は本実施の形態の認証システムでの署名生成の流れの一例を示す説明図である。リクエスト検証処理部５１によってリクエストが正当であると判定された場合、セキュアエレメント５０（リクエスト署名処理部５２）は、当該リクエストに対して署名を生成し、生成した署名を当該リクエストに添付する。以下、符号Ｐ１１〜Ｐ１４で示す処理について説明する。
【００５７】
Ｐ１１（ペイロードに対するハッシュ演算）：セキュアエレメント５０は、元の（取得した）ＨＴＴＰリクエストメッセージに含まれるペイロードに対してＳＨＡ−２５６演算を行ってハッシュ値を計算する。
【００５８】
リクエスト署名処理部５２は、抽出部としての機能を有し、取得したＨＴＴＰリクエストから所定の認証用情報（図５の例では、ペイロードの部分）を抽出する。
【００５９】
Ｐ１２（ハッシュ値の連結）：セキュアエレメント５０は、ＨＴＴＰリクエスト（ペイロード以外）と、Ｐ１１で計算したハッシュ値とを連結する。
【００６０】
Ｐ１３（ＨＭＡＣ−ＳＨＡ−２５６演算による署名生成）：セキュアエレメント５０は、Ｐ１２で連結した文字列を入力とし、鍵値を指定してＨＭＡＣ−ＳＨＡ−２５６演算を行って署名を生成する。これにより、セキュアエレメント５０は、リクエストに対して認証機能を提供することができる。
【００６１】
Ｐ１４（元のリクエストに署名を添付）：セキュアエレメント５０は、元のＨＴＴＰリクエストにヘッダ”Signature”を加え、生成した署名を添付する。
【００６２】
セキュアエレメント５０は、上述の手順によって、ＨＴＴＰリクエストに生成した署名を添付し、デバイス本体１０へ返信する。デバイス本体１０は、署名付きＨＴＴＰリクエストをそのままサーバ２００へ送信する。
【００６３】
サーバ２００は、受信したＨＴＴＰリクエストからヘッダ”Signature”を取り除いた文字列に対して、図５と同一の演算を行う。サーバ２００が生成した署名と、ＨＴＴＰリクエストのヘッダ”Signature”指定の値とが同一である場合、サーバ２００は、デバイス１００からのＨＴＴＰリクエストが正当であると判定して、デバイス１００との接続を許可する。
【００６４】
リクエスト署名処理部５２は、サーバ２００がリクエスト（デバイス１００が送信したリクエスト）を認証する際に使用する秘密鍵２０３と同じ秘密鍵５４に基づいて署名を生成する。これにより、サーバ２００が、セキュアエレメント５０が署名を生成する所定のアルゴリズムと同じアルゴリズムを用いることによって、サーバ２００は、セキュアエレメント５０が生成した署名と同じ署名を生成するので、デバイス１００からのリクエストが正当なものであるとして接続が許可される。
【００６５】
図６は本実施の形態のセキュアエレメント５０の処理手順の一例を示すフローチャートである。セキュアエレメント５０は、デバイス本体１０からリクエストを取得し（Ｓ１１）、ブロック状態フラグ５６を判定する（Ｓ１２）。ブロック状態フラグ５６の初期値は非ブロックとすることができる。ブロック状態フラグ５６が非ブロックである場合（Ｓ１２で非ブロック）、セキュアエレメント５０は、リクエストは正当であるか否かを判定する（Ｓ１３）。
【００６６】
リクエストが正当である場合（Ｓ１３でＹＥＳ）、セキュアエレメント５０は、カウンタ５５を最大値に設定する（Ｓ１４）。最大値は、リクエスト検証処理の再試行可能な回数とすることができる。
【００６７】
セキュアエレメント５０は、署名を生成し（Ｓ１５）、署名付きリクエストをデバイス本体１０へ出力し（Ｓ１６）、処理を終了する。
【００６８】
リクエストが正当でない場合（Ｓ１３でＮＯ）、セキュアエレメント５０は、カウンタ５５を１減算し（Ｓ１７）、カウンタ値が０であるか否かを判定する（Ｓ１８）。カウンタ値が０である場合（Ｓ１８でＹＥＳ）、セキュアエレメント５０は、ブロック状態フラグ５６をブロックに設定し（Ｓ１９）、処理を終了する。これにより、セキュアエレメント５０は、以降のデバイス本体１０からのリクエストに対して、リクエスト検証処理を実施しない。不正なリクエストを送信するような攻撃が複数回続いた場合、リクエスト検証処理部５１及びリクエスト署名処理部５２の少なくとも一方の処理を停止するので、攻撃者が不正なリクエストを送信することを確実に防止することができる。
【００６９】
カウンタ値が０でない場合（Ｓ１８でＮＯ）、あるいは、ブロック状態フラグ５６がブロックである場合（Ｓ１２でブロック）、セキュアエレメント５０は、処理を終了する。なお、デバイス本体１０が、リクエストをセキュアエレメント５０へ出力する都度、図６の処理が繰り返される。
【００７０】
図６に示すような処理手順を定めたコンピュータプログラムをＲＡＭにロードし、ＣＰＵ（プロセッサ）により当該コンピュータプログラムを実行させることにより、セキュアエレメント５０の各処理をコンピュータプログラムによって実現することができる。
【００７１】
上述のように、本実施の形態によれば、デバイス１００は、セキュアエレメント５０によって認証されたリクエストをネットワーク１上のサーバ２００へ送信することができるので、デバイス１００がネットワーク１上のサーバ２００に接続するための認証を行うことができ、またデバイス１００の認証の正当性を確保することができる。
【００７２】
また、本実施の形態によれば、攻撃者が詐取したデバイスによって不正なリクエスト（例えば、攻撃者のサーバへの接続）をネットワーク上に送信しようとした場合、セキュアエレメント５０は、正当なリクエストではないと判定して署名を生成しないので、不正なリクエストの送信を抑止することができる。
【００７３】
本実施の形態によれば、ＩｏＴに用いられるデバイス１００自身が、ネットワーク１上のサーバ２００へ接続するための認証情報を保持する場合、セキュアエレメント５０を備えることにより、認証情報を安全に保持することができる。また、デバイス１００が、ネットワーク１上のサーバ２００に対してリクエストを送信する場合、セキュアエレメント５０による署名生成処理によって、当該リクエストの正当性を確保することができる。
【００７４】
本実施の形態では、セキュアエレメント５０が署名付きリクエストをデバイス本体１０へ出力し、デバイス本体１０を介してリクエストをサーバ２００へ送信する構成であるが、これに限定されるものではない。例えば、セキュアエレメント５０が署名付きリクエストを直接サーバ２００へ送信するようにしてもよい。いずれの場合も、サーバ２００は、セキュアエレメント５０によって認証された当該デバイス１００に係るリクエストを取得することができる。
【００７５】
本実施の形態では、リクエストはテキスト形式であったが、これに限定されない。例えば、リクエストがバイナリ形式であっても、本実施の形態を適用して、リクエスト検証処理、署名生成処理を行うことができる。
【００７６】
本実施の形態では、署名生成のアルゴリズムに、ＳＨＡ−２５６演算、ＨＭＡＣ−ＳＨＡ−２５６演算を用いる構成であったが、ハッシュ関数、暗号ハッシュ関数は、これらに限定されるものではなく、適宜のものを使用することができる。また、ハッシュ関数、暗号ハッシュ関数に代えて、他の暗号化処理を用いることもできる。また、秘密鍵は、共通鍵方式に限定されるものではなく、ＲＳＡ等の公開鍵暗号方式で用いられる非対称鍵（公開鍵で暗号化、秘密鍵で復号、あるいはその逆）でもよい。
【００７７】
本実施の形態に係るセキュアエレメントは、データの送信又は受信を要求する要求情報を生成するデバイス本体から要求情報を取得する取得部と、該取得部で取得した要求情報が正当であるか否かを判定する判定部と、該判定部で正当であると判定した場合、前記要求情報を認証する認証情報を生成する生成部と、該生成部で生成した認証情報を添付した前記要求情報を出力する出力部とを備える。
【００７８】
本実施の形態に係るコンピュータプログラムは、コンピュータに、データの送信又は受信を要求する要求情報を出力させるためのコンピュータプログラムであって、コンピュータに、前記要求情報を生成するデバイス本体から要求情報を取得する処理と、取得した要求情報が正当であるか否かを判定する処理と、正当であると判定した場合、前記要求情報を認証する認証情報を生成する処理と、生成した認証情報を添付した前記要求情報を出力する処理とを実行させる。
【００７９】
本実施の形態に係るデバイスは、本実施の形態に係るセキュアエレメントを備える。
【００８０】
本実施の形態に係るセキュアエレメントによる認証方法は、データの送信又は受信を要求する要求情報を生成するデバイス本体から要求情報を取得部が取得し、取得された要求情報が正当であるか否かを判定部が判定し、前記要求情報が正当であると判定された場合、前記要求情報を認証する認証情報を生成部が生成し、生成された認証情報を添付した前記要求情報を出力部が出力する。
【００８１】
取得部は、データの送信又は受信を要求する要求情報を生成するデバイス本体から要求情報を取得する。要求情報をリクエストとも称し、要求情報の内容をリクエストメッセージ（リクエストの内容）とも称する。例えば、デバイスが、ネットワーク上のサーバへデータを送信する場合、デバイスは、送信したい当該データを含む所定の形式の要求情報を生成する。取得部は、デバイスが生成した要求情報を取得する。なお、デバイスのうちセキュアエレメント以外の部分をデバイス本体と称する。
【００８２】
判定部は、取得部で取得した要求情報が正当であるか否かを判定する。要求情報が正当であるか否かは、要求情報に含まれる個々の情報が正当であるか否かによって判定することができる。一例としては、要求情報が送信される送信先（デバイスの接続先）が正当なサーバであるか否かに応じて、要求情報が正当であるか否かを判定することができる。これにより、例えば、攻撃者が詐取したデバイスによって不正な要求情報（例えば、攻撃者のサーバへの接続）をネットワーク上に送信しようとした場合、セキュアエレメントは、正当な要求情報ではないと判定することができ、不正な要求情報の送信を抑止することが可能となる。
【００８３】
生成部は、判定部で正当であると判定した場合、要求情報を認証する認証情報を生成する。認証情報は、署名又は署名値とも称される。認証情報の生成は、例えば、セキュアエレメントが保持する秘密鍵及び所定のアルゴリズムによって行うことができる。
【００８４】
出力部は、生成部で生成した認証情報を添付した要求情報を出力する。すなわち、出力部は、デバイス本体から取得した要求情報に生成された認証情報を添付して得られた要求情報（認証情報付き要求情報）をデバイス本体へ出力する。これにより、デバイスは、セキュアエレメントによって認証された要求情報をネットワーク上のサーバへ送信することができるので、デバイスがネットワーク上のサーバに接続するための認証を行うことができ、またデバイスの認証の正当性を確保することができる。
【００８５】
本実施の形態に係るセキュアエレメントにおいて、前記生成部は、前記判定部で正当でないと判定した場合、認証情報を生成しない。
【００８６】
生成部は、判定部で正当でないと判定した場合、認証情報を生成しない。例えば、攻撃者が詐取したデバイスによって不正な要求情報（例えば、攻撃者のサーバへの接続）をネットワーク上に送信しようとした場合、セキュアエレメントは、正当な要求情報ではないと判定して認証情報を生成しない。出力部は、認証情報付き要求情報を出力しないので、不正な要求情報の送信を抑止することができる。
【００８７】
本実施の形態に係るセキュアエレメントは、前記取得部で正当でない要求情報を取得した回数を計数する計数部と、該計数部で計数した回数に応じて前記判定部又は生成部での処理を停止する停止部とを備える。
【００８８】
計数部は、取得部で正当でない要求情報を取得した回数を計数する。なお、計数の方法は、初期値（≠０）から取得の都度、１を減算してもよく、初期値（＝０）から取得の都度、１を加算してもよい。
【００８９】
停止部は、計数部で計数した回数に応じて判定部又は生成部での処理を停止する。例えば、正当でない要求情報を取得する都度、１を減算し計数値が０になった場合、判定部又は生成部での処理を停止する。あるいは、正当でない要求情報を取得する都度、１を加算し計数値が所定の閾値（≠０）になった場合、判定部又は生成部での処理を停止する。これにより、不正な要求情報を送信するような攻撃が複数回続いた場合、判定部又は生成部での処理を停止するので、攻撃者が要求情報を送信することを確実に防止することができる。
【００９０】
本実施の形態に係るセキュアエレメントは、前記要求情報の所定箇所に含まれるテキスト形式又はバイナリ形式の対象情報を特定する特定部を備え、前記判定部は、前記特定部で特定した対象情報に基づいて前記要求情報が正当であるか否かを判定する。
【００９１】
特定部は、要求情報の所定箇所に含まれるテキスト形式又はバイナリ形式の対象情報を特定する。すなわち、特定部は、要求情報の内容全体の中から所定箇所にある対象情報を特定する。所定箇所は、要求情報が正当であるか否かを判定する際に判定可能な箇所であればよい。
【００９２】
判定部は、特定部で特定した対象情報に基づいて要求情報が正当であるか否かを判定する。これにより、要求情報の全体を判定対象とする必要がなくなり、処理労力を軽減することができる。
【００９３】
本実施の形態に係るセキュアエレメントにおいて、前記生成部は、デバイスが送信する要求情報を受信するサーバが該要求情報を認証する際に使用する鍵に対応する秘密鍵に基づいて認証情報を生成する。
【００９４】
生成部は、デバイスが送信する要求情報を受信するサーバが当該要求情報を認証する際に使用する鍵に対応する秘密鍵に基づいて認証情報を生成する。秘密鍵に対応する鍵は、共通鍵方式の場合には秘密鍵とし、公開鍵方式の場合には公開鍵とすることができる。これにより、サーバが、セキュアエレメントが認証情報を生成する所定のアルゴリズムと同じアルゴリズムを用いることによって、サーバは、セキュアエレメントが生成した認証情報と同じ認証情報を生成するので、デバイスからの要求情報が正当なものであるとして接続が許可される。
【００９５】
本実施の形態に係るセキュアエレメントは、前記取得部で取得した要求情報から所定の認証用情報を抽出する抽出部を備え、前記生成部は、該抽出部で抽出した認証用情報を入力とし、秘密鍵を用いた鍵付きハッシュ関数を適用して認証情報を生成する。
【００９６】
抽出部は、取得部で取得した要求情報から所定の認証用情報を抽出する。認証用情報は、例えば、送信又は受信されるデータ（データ本体）とすることができる。
【００９７】
生成部は、抽出部で抽出した認証用情報を入力とし、秘密鍵を用いた鍵付きハッシュ関数を適用して認証情報を生成する。例えば、抽出部で抽出した認証用情報に対してハッシュ関数を適用して得られたハッシュ値を、認証用情報以外の要求情報に連結し、連結した情報を入力とし、秘密鍵を用いた鍵付きハッシュ関数を適用して得られた結果を認証情報とすることができる。これにより、要求情報に対して認証機能を提供することができる。
【００９８】
本実施の形態に係るセキュアエレメントにおいて、前記出力部は、前記生成部で生成した認証情報を添付した前記要求情報を前記デバイス本体又はデバイスが送信する要求情報を受信するサーバのいずれか一方へ出力する。
【００９９】
出力部は、生成部で生成した認証情報を添付した要求情報をデバイス本体又はデバイスが送信する要求情報を受信するサーバのいずれか一方へ出力する。生成部で生成した認証情報を添付した要求情報をデバイス本体へ出力すると、デバイスは、認証情報付き要求情報をサーバへ送信することができる。これにより、サーバは、セキュアエレメントによって認証された当該デバイスに係る要求情報を取得することができる。
【０１００】
本実施の形態に係るセキュアエレメントにおいて、前記セキュアエレメントは、耐タンパ性を有する。
【０１０１】
セキュアエレメントは、耐タンパ性を有する。セキュアエレメントの機能（例えば、特に、生成部、秘密鍵など）をハードウェアのモジュールで実現する場合、耐タンパ性を有するためには、セキュアエレメントを１チップ化にする、モジュール表面をコーティングすることが含まれる。また、セキュアエレメントの機能をソフトウェアのモジュールで実現する場合、耐タンパ性を有するためには、実行コードを暗号化し、実行時に必要な部分だけをメモリ上で復号することが含まれる。
【０１０２】
セキュアエレメントを耐タンパ性にすることによって、認証情報の生成処理、認証情報の生成に使用する秘密鍵等の機密情報を物理的に保護することができる。
【０１０３】
本実施の形態に係るデバイスは、データの送信又は受信を要求する要求情報を生成する要求情報生成部と、前記セキュアエレメントが生成した認証情報が添付された要求情報を取得する要求情報取得部と、該要求情報取得部で取得した要求情報をサーバへ送信する送信部とを備える。
【０１０４】
要求情報生成部は、データの送信又は受信を要求する要求情報を生成する。デバイスが、ネットワーク上のサーバへデータを送信する場合、デバイスは、送信したい当該データを含む所定の形式の要求情報を生成する。
【０１０５】
要求情報取得部は、セキュアエレメントが生成した認証情報が添付された要求情報を取得する。送信部は、要求情報取得部で取得した要求情報をサーバへ送信する。
【０１０６】
これにより、セキュアエレメントから返信された認証情報付き要求情報をそのままサーバへ送信（転送）するだけで、デバイスは、ネットワーク上のサーバに接続するための認証を行うことができる。
【０１０７】
本発明の実施の形態に係るサーバは、セキュアエレメントが生成した認証情報が添付された要求情報を前記セキュアエレメント又はデバイス本体から取得する取得部と、該取得部で取得した要求情報を認証する認証情報を生成する生成部と、前記取得部で取得した要求情報に添付された認証情報を抽出する抽出部と、前記生成部で生成した認証情報及び前記抽出部で抽出した認証情報に基づいて、デバイスとの接続可否を判定する判定部とを備える。
【０１０８】
取得部は、セキュアエレメントが生成した認証情報が添付された要求情報をセキュアエレメント又はデバイス本体から取得する。
【０１０９】
生成部は、取得部で取得した要求情報を認証する認証情報を生成する。認証情報の生成は、セキュアエレメントによる認証情報の生成のためのアルゴリズム及び秘密鍵を用いる。
【０１１０】
抽出部は、取得部で取得した要求情報に添付された認証情報を抽出する。
【０１１１】
判定部は、生成部で生成した認証情報及び抽出部で抽出した認証情報に基づいて、デバイスとの接続可否を判定する。例えば、生成部で生成した認証情報と抽出部で抽出した認証情報とが一致する場合、デバイスが送信した要求情報が正当なものであるとしてデバイスのサーバへの接続を許可する。また、生成部で生成した認証情報と抽出部で抽出した認証情報とが一致しない場合、デバイスが送信した要求情報は不正なものであるとしてデバイスのサーバへの接続を許可しない。これにより、デバイスの認証の正当性を確保することができる。
【符号の説明】
【０１１２】
１  ネットワーク
１０  デバイス本体
１１  ＣＰＵ
１２  ネットワーク通信部
１３  リクエスト生成部
１４  インタフェース部
３０  通信路
５０  セキュアエレメント
５１  リクエスト検証処理部
５２  リクエスト署名処理部
５３  インタフェース部
５４  秘密鍵
５５  カウンタ
５６  ブロック状態フラグ
２００  サーバ
２０１  リクエスト署名処理部
２０２  通信部
２０３  秘密鍵
２０４  リクエスト署名抽出部
２０５  接続可否判定部
【図１】
2019009728.tif 000003
【図２】
2019009728.tif 000004
【図３】
2019009728.tif 000005
【図４】
2019009728.tif 000006
【図５】
2019009728.tif 000007
【図６】
2019009728.tif 000008