(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024113752
(43)【公開日】2024-08-23
(54)【発明の名称】認証システム、認証方法およびプログラム
(51)【国際特許分類】
H04L 9/32 20060101AFI20240816BHJP
G06F 21/44 20130101ALI20240816BHJP
【FI】
H04L9/32 200A
H04L9/32 200E
G06F21/44
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023018897
(22)【出願日】2023-02-10
(71)【出願人】
【識別番号】000006208
【氏名又は名称】三菱重工業株式会社
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【弁理士】
【氏名又は名称】伊藤 英輔
(74)【代理人】
【識別番号】100161702
【弁理士】
【氏名又は名称】橋本 宏之
(74)【代理人】
【識別番号】100189348
【弁理士】
【氏名又は名称】古都 智
(74)【代理人】
【識別番号】100196689
【弁理士】
【氏名又は名称】鎌田 康一郎
(72)【発明者】
【氏名】西前 悦史
(72)【発明者】
【氏名】舟橋 聡
(72)【発明者】
【氏名】川嶋 大樹
(57)【要約】
【課題】デバイス間の認証の安全性を向上することができるシステムを提供する。
【解決手段】認証システムは、第1のデバイスと第2のデバイスの間で認証を行う認証システムであって、前記第1のデバイスで実行される第1のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて演算された第1の認証情報と、前記第1のプログラムの処理結果に基づいて演算された第2の認証情報と、に基づいて認証を行う手段を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1のデバイスと第2のデバイスの間の認証について、前記第1のデバイスで実行される第1のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて演算された第1の認証情報と、前記第1のプログラムの処理結果に基づいて演算された第2の認証情報と、に基づいて前記認証を行う手段、
を備える認証システム。
【請求項2】
前記第1のデバイスが、
前記第1の認証情報を計算する手段と、
前記第2の認証情報を計算する手段と、
を備え、
前記第2のデバイスが、
前記第1のプログラムと同じプログラムである第2のプログラムと、
前記第2のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて第3の認証情報を計算する手段と、
前記第2のプログラムの処理結果に基づいて第4の認証情報を計算する手段と、
前記認証を行う手段と、
を備え、
前記認証を行う手段は、前記第1の認証情報と前記第3の認証情報が一致するかどうかと、前記第2の認証情報と前記第4の認証情報が一致するかどうかと、に基づいて前記認証を行う
請求項1に記載の認証システム。
【請求項3】
前記第1のデバイスが、
前記第1の認証情報と前記第3の認証情報が一致するかどうかと、前記第2の認証情報と前記第4の認証情報が一致するかどうかと、に基づいて前記認証を行う手段、
をさらに備える請求項2に記載の認証システム。
【請求項4】
前記第1のデバイスでは、前記第1のプログラムを実行させる実行環境と、前記第1の認証情報を計算する手段および前記第2の認証情報を計算する手段の実行環境と、が異なるように構成された、
請求項2又は請求項3に記載の認証システム。
【請求項5】
前記第2のデバイスでは、前記第2のプログラムを実行させる実行環境と、前記第3の認証情報を計算する手段および前記第4の認証情報を計算する手段の実行環境と、が異なるように構成された、
請求項3に記載の認証システム。
【請求項6】
前記第1の認証情報は、前記第1の認証情報を計算する度に発生させた乱数と、前記第1のプログラムの実行ファイル及び/又は設定ファイルの情報とに基づいて計算されたハッシュ値であり、
前記第3の認証情報は、前記乱数と、前記第2のプログラムの実行ファイル及び/又は設定ファイルの情報とに基づいて計算されたハッシュ値である、
請求項2又は請求項3に記載の認証システム。
【請求項7】
前記第2の認証情報は、前記第1のプログラムの所定の処理を実行した演算結果から計算したCRC(Cyclic Redundancy Check)であり、
前記第2の認証情報は、前記第2のプログラムの前記所定の処理を実行した演算結果から計算したCRCである、
請求項2又は請求項3に記載の認証システム。
【請求項8】
前記第1のプログラムが実行される間、
前記第1の認証情報を計算する手段は、周期的に前記第1の認証情報を計算し、
前記第2の認証情報を計算する手段は、周期的に前記第2の認証情報を計算し、
前記第2のデバイスでは、前記第2のプログラムを実行すると共に
前記第3の認証情報を計算する手段は、周期的に前記第3の認証情報を計算し、
前記第4の認証情報を計算する手段は、周期的に前記第4の認証情報を計算し、
前記第2のデバイスの前記認証を行う手段は、周期的に前記認証を行う、
請求項2又は請求項3に記載の認証システム。
【請求項9】
前記第1のプログラムが実行される間、
前記第1の認証情報を計算する手段は、周期的に前記第1の認証情報を計算し、
前記第2の認証情報を計算する手段は、周期的に前記第2の認証情報を計算し、
前記第2のデバイスでは、前記第2のプログラムを実行すると共に
前記第3の認証情報を計算する手段は、周期的に前記第3の認証情報を計算し、
前記第4の認証情報を計算する手段は、周期的に前記第4の認証情報を計算し、
前記第1のデバイスの前記認証を行う手段は、周期的に前記認証を行う、
請求項3に記載の認証システム。
【請求項10】
前記第1のデバイスと前記第2のデバイスでセッションを開始する際には、前記第1のデバイスが記憶する第1の鍵情報と、前記第2のデバイスが記憶する第2の鍵情報を交換して前記認証を行い、認証に成功した場合、セッションを開始する、
請求項2又は請求項3に記載の認証システム。
【請求項11】
第1のデバイスと第2のデバイスの間の認証について、前記第1のデバイスで実行される第1のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて演算された第1の認証情報と、前記第1のプログラムの処理結果に基づいて演算された第2の認証情報と、に基づいて前記認証を行う、
認証方法。
【請求項12】
コンピュータに、
第1のデバイスと第2のデバイスの間の認証について、前記第1のデバイスで実行される第1のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて演算された第1の認証情報と、前記第1のプログラムの処理結果に基づいて演算された第2の認証情報と、に基づいて前記認証を行う処理、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、認証システム、認証方法およびプログラムに関する。
【背景技術】
【0002】
認証のセキュリティを向上させるために、ユーザに対する認証では、パスワード認証、指紋認証などの複数の認証情報を組合せた多要素認証が行われている。一方、デバイス同士の認証では、記憶媒体に記憶させている鍵情報のみに依存した単一要素認証のままであることが多い。これに対し、特許文献1には、第1のデータ処理デバイスが、第2のデータ処理デバイスに認証を要求する場合、第2のデータ処理デバイスが、デバイス特有の鍵、第2のデータ処理デバイスのハードウェアの構成及び第2のデータ処理デバイス上で動作するソフトウェアのソフトウェア構成に依存するデバイス特有の認証メッセージを生成し、このメッセージに対して認証を行う発明が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示があるように、鍵情報だけでなく、デバイスのハードウェア構成やソフトウェア構成の情報を認証に利用することでセキュリティは向上する。しかし、例えば、第三者がハードウェアやソフトウェアの構成に関する情報を入手した場合には、第三者のなりすましによる認証が成立してしまう。デバイス間の認証に使用することができる、さらに高セキュリティな認証方法が求められている。
【0005】
本開示は、上記課題を解決することができる認証システム、認証方法およびプログラムを提供する。
【課題を解決するための手段】
【0006】
本開示の認証システムは、第1のデバイスと第2のデバイスの間の認証について、前記第1のデバイスで実行される第1のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて演算された第1の認証情報と、前記第1のプログラムの処理結果に基づいて演算された第2の認証情報と、に基づいて前記認証を行う手段、を備える。
【0007】
また、本開示の認証方法は、第1のデバイスと第2のデバイスの間の認証について、前記第1のデバイスで実行される第1のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて演算された第1の認証情報と、前記第1のプログラムの処理結果に基づいて演算された第2の認証情報と、に基づいて前記認証を行うステップ、を有する。
【0008】
また、本開示のプログラムは、コンピュータに、第1のデバイスと第2のデバイスの間の認証について、前記第1のデバイスで実行される第1のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて演算された第1の認証情報と、前記第1のプログラムの処理結果に基づいて演算された第2の認証情報と、に基づいて前記認証を行うステップ、を含む処理を実行させる。
【発明の効果】
【0009】
上述の認証システム、認証方法およびプログラムによれば、デバイス間の認証の安全性を向上することができる。
【図面の簡単な説明】
【0010】
【
図1】実施形態に係るシステムの一例を示す図である。
【
図2】実施形態に係る認証システムの一例を示す図である。
【
図3】実施形態に係る認証情報の生成処理について説明する第1図である。
【
図4】実施形態に係る認証情報の生成処理について説明する第2図である。
【
図5】実施形態に係る多要素認証処理の一例を示すフローチャートである。
【
図6】実施形態に係る多要素認証処理の適用例を示す図である。
【
図7】実施形態に係るデバイスのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0011】
<実施形態>
以下、各実施形態に係る認証方法について、
図1~
図7を参照しながら説明する。
(構成)
図1は、本開示の実施形態に係るシステムの一例を示す図である。本実施形態の多要素認証方法を適用するシステムは、例えば、コンピュータで構成されたデバイス1とデバイス2を含む。デバイス1では、アプリケーションプログラムA,B,C(以下、省略してアプリAのように記載する場合がある。)が稼働し、デバイス2ではアプリD,E,Fが稼働していて、例えば、アプリBとアプリEが通信を行うときに認証が必要とされる。アプリBとアプリEは、互いに通信しながらデバイス1の動作、デバイス2の動作に必要な処理を行ったり、アプリBがアプリEを通じてデバイス2の動作を制御したりする。例えば、デバイス1とデバイス2は、共にプラント等に設けられた機器や移動体であって、自装置の動作に必要な情報を交換しながら処理を実行するシステムであってもよい。あるいは、デバイス1が制御装置で、デバイス2が被制御対象装置、例えば、無人車両、無人航空機、交通システム(列車)などの移動体、タービン、工作機械、ボイラなどの機械であってもよい。デバイスで稼働するアプリ同士が、通信し合って動作する場合、外部から第三者の攻撃を受けたり、外乱等の影響で予期しない制御信号を受信したりする可能性があり、通信相手のデバイスやプログラム、当該プログラムの処理内容が適正であることを確認することが求められる。本実施形態の多要素認証方式は、デバイス1のアプリBとデバイス2のアプリEが互いに通信しながら制御等を行う際に、通信相手のデバイスで稼働するアプリが正しい通信相手であることを確認すると共に、当該アプリの処理内容が正しいことを確認する機能を提供する。以下、一例として、デバイス1が車両を制御する管制室のコンピュータ、デバイス2が車両に搭載されたコンピュータ(車載器)である場合を例に、本実施形態の認証方法について説明する。
【0012】
図2は、実施形態に係る認証システム100の一例を示す図である。認証システム100は、デバイス1とデバイス2を含む。デバイス1は、管制室のコンピュータ、デバイス2は車両のコンピュータである。
【0013】
(デバイス1の構成)
デバイス1は、管制室側アプリ101と、通信ミドルウェア102と、セッション接続判断プログラム103と、鍵情報104と、ファイル認証プログラム106と、実行履歴認証プログラム108と、仮想化アプリ109と、車両側アプリ110と、を備える。
管制室側アプリ101は、車両又は車両に搭載されたデバイス2の制御、監視などを行うアプリケーションプログラムである。管制室側アプリ101は、例えば上位OTAプログラム(後述)である。管制室側アプリ101は、
図1のプログラムBに対応する。
通信ミドルウェア102は、デバイス2との通信を行うプログラムである。例えば、通信ミドルウェア102は、HIP(Host Identity Protocol)で通信を行う。
セッション接続判断プログラム103は、通信相手のデバイスやプログラムが正しいか否かとその処理内容が正しいか否かの判定を行い、その判定に基づいて、セッションを制御する。例えば、認証に成功すれば、セッション接続判断プログラム103は、セッションの開始や維持を行い、認証に失敗すれば、セッションを終了(遮断)させる。セッション接続判断プログラム103は、車両側のセッション接続判断プログラム203との共有鍵(暗号化に用いる鍵)を有している。
【0014】
鍵情報104は、セッション開始時に通信相手に送信し、通信相手(デバイス2)に対して、自装置(デバイス1)が正しい通信相手であることを証明するために使用される情報である。
ファイル認証プログラム106は、認証対象プログラム(車両側アプリ110)の実行ファイル/設定ファイル111(実行ファイル/設定ファイル111は、車両側アプリ110の実行ファイル及び/又は設定ファイルのことを指す。)のハッシュ値105を計算するプログラムである。
実行履歴認証プログラム108は、認証対象プログラムの実行履歴112のCRC(Cyclic Redundancy Check)を計算するプログラムである。
【0015】
仮想化アプリ109は、仮想環境を提供するプログラムである。本実施形態では、仮想化アプリ109が提供する仮想環境上で車両側アプリ110が稼働する。
車両側アプリ110は、デバイス2で動作する認証対象プログラム(車両側アプリ201)と同じアプリである。車両側アプリ110は、
図1のプログラムEに対応し、これを自装置の仮想環境で稼働する構成となっている。認証対象プログラムは、例えば、OTA(Over the Air)プログラムである。OTAプログラムには、車載器に搭載されたプログラムを新しいプログラムに更新したりデータを更新したりする機能、新しいプログラムやデータをダウンロードする機能、データをバックアップする機能などが含まれる。例えば、上述の管制室側アプリ101は、デバイス2に対してプログラムやデータの更新、ダウンロード、データバックアップを指示するOTA上位システムである。車両側アプリ110は、OTA上位システムからの指示に基づいて、新しいプログラム等のダウンロード、更新、バックアップなどを実行するOTAプログラムである。
【0016】
(デバイス2の構成)
デバイス2は、車両側アプリ201と、通信ミドルウェア202と、セッション接続判断プログラム203と、鍵情報204と、ファイル認証プログラム206と、実行履歴認証プログラム208と、を備える。
車両側アプリ201は、認証対象プログラムである。例えば、車両側アプリ201は、OTAプログラム(デバイス2で稼働する各種プログラムの更新・ダウンロードやデータバックアップを行うプログラム)である。
通信ミドルウェア202は、デバイス1との通信を行うプログラムである。例えば、通信ミドルウェア202は、HIP(Host Identity Protocol)で通信を行う。
セッション接続判断プログラム203は、通信相手のデバイス1やプログラムが正しいか否かと当該プログラムの処理内容が正しいか否かの判定を行い、その判定に基づいて、セッションを制御する。例えば、認証に成功すれば、セッション接続判断プログラム203は、セッションを開始したり、維持したりする。認証に失敗すれば、セッション接続判断プログラム203は、セッションを終了(遮断)する。セッション接続判断プログラム203は、管制室側のセッション接続判断プログラム103との共有鍵(暗号化に用いる鍵)を有している。
【0017】
鍵情報204は、セッション開始時に通信相手に送信し、通信相手(デバイス1)に対して、自装置(デバイス2)が正しい通信相手であることを証明するために使用される情報である。
ファイル認証プログラム206は、認証対象プログラム(車両側アプリ201)の実行ファイル/設定ファイル209(実行ファイル/設定ファイル209は、車両側アプリ201の実行ファイル及び/又は設定ファイルのことを指す。)のハッシュ値205を計算するログラムである。本実施形態では、ハッシュ値205と次に説明する実行履歴CRC207が認証に利用される。
実行履歴認証プログラム208は、認証対象プログラムの実行履歴210のCRC(実行履歴CRC207)を計算するプログラムである。
【0018】
例えば、デバイス2のハードウェア(プロセッサ)には、TEE(Trusted Execution Environment)などのセキュアな実行環境(SecureWorld)が構築されていてもよい。そして、上記構成のうち、例えば、車両側アプリ201と、通信ミドルウェア202と、セッション接続判断プログラム203を、NormalWorld(通常のOS(Operating System))に実装し、鍵情報204と、ファイル認証プログラム206と、実行履歴認証プログラム208を、SecureWorld(TEE)に実装し、ハッシュ値205や実行履歴CRC207はSecureWorldにて生成されるように構成されていてもよい。なお、
図2では管制室側のデバイス1については通常のOS上に各アプリ等を実装するよう記載されているが、デバイス1についても同様に、TEEが搭載されていてもよい。また、デバイス2のTEEは必須ではなく、デバイス2においても通常のOS上に車両側アプリ201、通信ミドルウェア202、セッション接続判断プログラム203、鍵情報204、ファイル認証プログラム206、実行履歴認証プログラム208が実装されていてもよい。
【0019】
(ハッシュ値の生成)
図3にハッシュ値205の生成方法の一例を示す。ファイル認証プログラム206は、デバイス2の車両側アプリ201とデバイス1の管制室側アプリ101が通信を行っている際に、デバイス2のメモリ上に展開された車両側アプリ201の実行コードや車両側アプリ201の設定ファイルの設定情報などを読み込んで、読み込んだデータの一部をハッシュ値生成処理の対象データとして抽出する。ファイル認証プログラム206は、抽出した処理対象データを所定の長さのブロックに分割する。例えば、分割したブロックをblock1~3とする。ファイル認証プログラム206は、block1~3をビット操作してblock1´~3´を生成する。これと並行して、ファイル認証プログラム206は、乱数を発生させ(チャレンジ)、発生させた乱数とblock1´~3´を組み合わせたデータを所定のハッシュ関数に入力する等してハッシュ値205を生成する。乱数を発生させるのでハッシュ値205の値は毎回違った値となる。ファイル認証プログラム206が発生させた乱数は、デバイス1でも共有される。デバイス1では、ファイル認証プログラム106が、共有される乱数、実行ファイル/設定ファイル111を用いて同様の処理を行い、ハッシュ値105を生成する。本実施形態では多要素認証の一つの要素として、ハッシュ値105,205を認証に用いる。ハッシュ値105とハッシュ値205の値が一致すれば、車両側アプリ110と車両側アプリ201が同じで、車両側アプリ201が改ざんされていないことを確認することができる。
【0020】
(実行履歴CRCの生成)
図4に実行履歴CRC207の生成方法の一例を示す。デバイス2の車両側アプリ201とデバイス1の管制室側アプリ101が通信を行っているときに、車両側アプリ201では、例えば、処理A、処理B、処理Cの順に処理が実行される。処理A、処理B、処理Cの各々は、例えば、ひとまとまりの処理ブロックであり、処理A、処理B、処理Cの実行後にチェックポイントが設定されている。車両側アプリ201は、入力信号aを入力として処理Aを実行し、処理Aの演算結果を実行履歴認証プログラム208へ出力する。ここで、入力信号aとは、例えば、車両に搭載されたセンサが計測した値である。後述する入力信号b、cについても同様である。実行履歴認証プログラム208は、前周期の実行履歴CRC207と処理Aの演算結果を組み合わせたデータからCRCを計算する(2081)。次に車両側アプリ201は、入力信号bを入力として処理Bを実行し、処理Bの演算結果を実行履歴認証プログラム208へ出力する。実行履歴認証プログラム208は、処理Aの演算結果等から計算されたCRCと処理Bの演算結果を組み合わせたデータからCRCを計算する(2082)。次に車両側アプリ201は、入力信号cを入力として処理Cを実行し、処理Cの演算結果を実行履歴認証プログラム208へ出力する。実行履歴認証プログラム208は、処理Bの演算結果等から計算されたCRCと処理Cの演算結果を組み合わせたデータからCRCを計算する(2083)。次に実行履歴認証プログラム208は、処理Cの処理結果等から計算されたCRCからハッシュ値を計算する(2084)。計算されたハッシュ値が実行履歴CRC207である。デバイス1では、実行履歴認証プログラム108が同様の処理を行って実行履歴CRC107を生成する。本実施形態では、ハッシュ値105,205に加え、実行履歴CRC107,207を認証に用いる。実行履歴CRC107と実行履歴CRC207の値が一致すれば、車両側アプリ110と車両側アプリ201の処理結果が同じで、車両側アプリ201が正常に動作していることを確認することができる。
【0021】
(動作)
次に
図5を参照して、本実施形態の多要素認証処理の流れについて説明する。
図5は、実施形態に係る多要素認証処理の一例を示すフローチャートである。
最初に管制室のデバイス1と車両のデバイス2でセッションを構築する。デバイス1とデバイス2との間で初めて通信を行う時(=セッション構築時)には鍵情報104,204を用いて相互認証を行う。具体的には、デバイス1からデバイス2へ鍵情報104を送信する(ステップS1)。デバイス2の通信ミドルウェア202からデバイス1の通信ミドルウェア102へ鍵情報204を送信する(ステップS1´)。デバイス1では、セッション接続判断プログラム103が、デバイス2から送信された鍵情報204を受信して認証を行う(ステップS2)。例えば、セッションを構築すべき通信相手がデバイス2で、鍵情報204がデバイス2のものであれば、セッション接続判断プログラム103は、認証成功と判定し、鍵情報204がデバイス2の鍵情報でなければ、認証失敗と判定する。あるいは、鍵情報104と鍵情報204は同一の情報であって、セッション接続判断プログラム103は、鍵情報104と鍵情報204が一致すれば認証成功と判定し、両者が一致しなければ認証失敗と判定する。認証成功と判定すると、セッション接続判断プログラム103は、セッションを開始する(ステップS3)。認証失敗と判定すると、セッション接続判断プログラム103は、セッションを開始せずに管制員へ認証失敗を通知する。一方、デバイス2では、セッション接続判断プログラム203が、デバイス1から送信された鍵情報104を受信して認証を行う(ステップS2´)。例えば、セッションを構築すべき通信相手がデバイス1で、鍵情報104がデバイス1のものであれば、セッション接続判断プログラム203は、認証成功と判定し、鍵情報104がデバイス1の鍵情報でなければ、認証失敗と判定する。あるいは、セッション接続判断プログラム203は、鍵情報104と鍵情報204が一致すれば認証成功と判定し、両者が一致しなければ認証失敗と判定する。認証成功と判定すると、セッション接続判断プログラム203は、セッションを開始する(ステップS3´)。認証失敗と判定すると、セッション接続判断プログラム203は、セッションを開始せずに、デバイス2は縮退動作(例えば、車両側アプリ201を停止する、車両側アプリ201の一部の処理のみを実行する等)へ移行する。
【0022】
なお、鍵情報204による認証が失敗した場合、通信ミドルウェア102は、通信ミドルウェア202へ鍵情報204の再送を要求し、所定回数だけ鍵情報204による認証を行っても認証に成功しなかった場合には、セッション接続判断プログラム103が認証失敗と判定してもよい。同様に、鍵情報104による認証が失敗した場合、通信ミドルウェア202は、通信ミドルウェア102へ鍵情報104の再送を要求し、所定回数だけ鍵情報104による認証を行っても認証に成功しなかった場合、セッション接続判断プログラム203が認証失敗と判定してもよい。
【0023】
デバイス1とデバイス2のセッションが開始されると、デバイス1とデバイス2は通信を開始する。例えば、デバイス1の管制室側アプリ101からデバイス2へデータバックアップ、更新プログラムのダウンロード、ダウンロードした更新プログラムの適用(アップデート)を指示し、デバイス2では、車両側アプリ201が、デバイス1からの指示に基づいて処理を行い、その実行結果などをデバイス1へ送信するといった処理が実行される。デバイス1とデバイス2の通信中は、周期的(例えば、一定の周期で)にハッシュ値105,205と、実行履歴CRC107,207を相互に交換して相互認証を行う。
【0024】
まず、車両側のファイル認証プログラム206は、乱数を発生させ(ステップS4)、発生させた乱数と車両側アプリ201の実行ファイル/設定ファイル111をSecureWorldに読み込み、メモリ空間に展開されたコード情報などからハッシュ値205を計算する(ステップS5)。
【0025】
また、車両側アプリ201は,処理のチェックポイント(例えば、
図4の例では、処理A、処理B、処理Cにチェックポイントが設定されている。)で、入力信号に基づく処理の演算結果を実行履歴認証プログラム208に通知する。実行履歴認証プログラム208は通知された演算結果を元に実行履歴CRC207を計算する(ステップS6)。実行履歴認証プログラム208は、計算した実行履歴CRC207を、次周期の実行履歴CRCのために記憶しておく。
【0026】
セッション接続判断プログラム203は、ハッシュ値205の計算に用いた乱数と、ハッシュ値205と、実行履歴CRC207の計算に用いた入力信号と、実行履歴CRC207と、実行履歴CRC207の対象となる処理(例えば、処理A,B,C)の識別情報など、が含まれた認証用データを生成し、共有鍵で暗号化する。通信ミドルウェア202は、暗号化された認証用データをデバイス1へ送信する(ステップS7)。
【0027】
デバイス1では、通信ミドルウェア102が認証用データを取得し、セッション接続判断プログラム103が共有鍵で認証用データを復号する。セッション接続判断プログラム103は、認証用データに含まれる乱数をファイル認証プログラム106へ出力し、認証用データに含まれる入力信号を実行履歴認証プログラム108へ出力する。
【0028】
管制室側のデバイス1では、仮想化アプリ109が稼働しており、仮想環境上では、車両側アプリ110が稼働し、車両側の車両側アプリ201と同じ処理(例えば、処理A、処理B、処理C)を実行する。例えば、セッション接続判断プログラム103は、認証用データに含まれる処理の識別情報に基づいて、車両側アプリ110に識別情報が示す処理(例えば、処理A、処理B、処理C)を実行させる。管制室側のファイル認証プログラム106は、車両側のデバイス2から送信された乱数と、車両側アプリ110にある実行ファイルと設定ファイルからハッシュ値105を計算する(ステップS8)。また、管制室側の実行履歴認証プログラム108は、車両側のデバイス2から送信された入力信号と、前周期の実行履歴CRCと、車両側アプリ110のチェックポイント(車両側と同じ処理)の処理結果から実行履歴CRC107を計算する(ステップS9)。実行履歴認証プログラム108は、計算した実行履歴CRC107を、次周期の実行履歴CRCのために記憶しておく。セッション接続判断プログラム103は、計算したハッシュ値105、実行履歴CRC107が含まれた認証用データを生成し、共有鍵で暗号化する。通信ミドルウェア102は、暗号化された認証用データをデバイス2へ送信する(ステップS10)。
【0029】
また、セッション接続判断プログラム103は、デバイス2から受信した認証データと、計算したハッシュ値105および実行履歴CRC107に基づいて認証を行う(ステップS11)。具体的には、セッション接続判断プログラム103は、計算したハッシュ値105とデバイス2から受信したハッシュ値205を比較し、両者が一致するかどうかを確認する。これにより、検証対象のアプリケーションプログラム(車両側アプリ201)が改ざんされていないかを検証する。また、セッション接続判断プログラム103は、計算した実行履歴CRC107とデバイス2から受信した実行履歴CRC207を比較し、両者が一致するかどうかを確認する。これにより、管制室側、車両側のアプリケーションプログラムが同じ動作をしているか検証する。ハッシュ値105とハッシュ値205が一致し、実行履歴CRC107と実行履歴CRC207が一致すると、セッション接続判断プログラム103は、認証が成功したと判定し、何れか1つでも一致しなければ、認証が失敗したと判定する。認証が成功した場合、セッション接続判断プログラム103は、そのままセッションを継続し、車両側アプリ201の稼働中、ステップS7以降の処理を周期的に繰り返し行う。
【0030】
デバイス2では、通信ミドルウェア202がデバイス1から送信された認証用データを取得し、セッション接続判断プログラム203が共有鍵で認証用データを復号する。そして、セッション接続判断プログラム203は、デバイス1から受信した認証データと、計算したハッシュ値205および実行履歴CRC207に基づいて認証を行う(ステップS11´)。具体的には、セッション接続判断プログラム203は、計算したハッシュ値205とデバイス1から受信したハッシュ値105を比較し、両者が一致するかどうかを確認する。これにより、検証対象のアプリケーションプログラムが改ざんされていないかを検証する。また、セッション接続判断プログラム203は、計算した実行履歴CRC207とデバイス1から受信した実行履歴CRC107を比較し、両者が一致するかどうかを確認する。これにより、管制室側、車両側のアプリケーションプログラムが同じ動作をしているか検証する。ハッシュ値205とハッシュ値105が一致し、実行履歴CRC207と実行履歴CRC107が一致すると、セッション接続判断プログラム203は、認証が成功したと判定し、何れか1つでも一致しなければ、認証が失敗したと判定する。認証が成功した場合、セッション接続判断プログラム203は、そのままセッションを継続し、車両側アプリ201の稼働中、ステップS4以降の処理を周期的に繰り返し行う。認証が失敗した場合、デバイス2は縮退動作(例えば、通信を遮断する、車両側アプリ201を停止する、車両側アプリ201の一部の処理のみを実行する、アラートを出力する等)へ移行する。
【0031】
(他の実施形態)
(1)
図5では、車両側で乱数を発生させることとしたが、管制室側のデバイス1で乱数を発生させ、発生させた乱数を共有鍵で暗号化してデバイス2へ送信し、デバイス2では、受信した乱数を復号して、ハッシュ値205を計算してもよい。(2)また、
図5では、デバイス2でハッシュ値205と実行履歴CRC207を計算し、これを入力信号等とともにデバイス1へ送信して、デバイス1でハッシュ値105と実行履歴CRC107を計算することとしたが、デバイス1とデバイス2で同時並行的にハッシュ値と実行履歴CRCを計算して、相互に照合するようにしてもよい。例えば、デバイス2は、乱数を発生させると、ハッシュ値205の計算と並行して、暗号化した乱数をデバイス1へ送信する。デバイス1は受信した乱数を用いてハッシュ値105を計算する。また、デバイス2は、入力信号を取得すると、処理A等の実行と並行して、処理A等に使用する入力信号を暗号化して、デバイス1へ送信する。デバイス1では、受信した入力信号を用いて実行履歴CRC107を計算する。そして、デバイス1とデバイス2は、ハッシュ値と実行履歴CRCを交換しあって、相互に認証を行う。(3)また、
図4では、処理A~Cの演算結果から実行履歴CRC107,207を計算することとしたが、通信帯域や処理時間に対するデバイス1,2の計算リソース不足により、認証処理が通信周期以内に完了しない可能性がある。そこで、実行履歴CRC107,207は、プログラムの全ての処理に対してではなく、特定の処理(例えば、
図4の処理B)に限定して計算すること、又は、数回の相互認証に1回の割合のみ実行履歴CRC107,207の計算を実行すること等により、通信帯域や処理時間への影響を低減させるようにしてもよい。(4)また、何らかの理由で、実行履歴CRC107と実行履歴CRC207が一致しない場合がある。このような場合、1回の不一致で認証失敗とせずに実行履歴CRCのリトライを行うように構成してもよい。リトライ時には、最後に認証成功と判定されたときの実行履歴CRC107,207を前周期のCRC最終値として、実行履歴CRC107,207を計算するようにしてもよい。例えば、前々周期では一致、前周期では不一致となった場合、不一致となった前周期の実行履歴CRC107,207を破棄して、前々周期の実行履歴CRC107,207と処理A等の演算結果から今回の実行履歴CRC107,207を計算するようにしてもよい。
【0032】
図6に、本実施形態の多要素認証方法の適用例を示す。
図6に、管制室側のデバイス1aと車両側のデバイス2aを含む認証システム100aにおける通信の一例を示す。
図6の例では、
図5のセッション構築(ステップS1,S1´,S2,S2´)の処理は既に完了していて、通信が開始された状態である。デバイス1aの実行履歴認証プログラム108a、OTA上位システム101a、HIP102aはそれぞれ、
図2の実行履歴認証プログラム108とセッション接続判断プログラム103を含むプログラム群、管制室側アプリ101と仮想化アプリ109と車両側アプリ110を含んだプログラム群、通信ミドルウェア102に対応する。デバイス2aの実行履歴認証プログラム208a、OTA車載システム201a、HIP202aはそれぞれ、
図2の実行履歴認証プログラム208とセッション接続判断プログラム203を含むプログラム群、車両側アプリ201、通信ミドルウェア202に対応する。範囲61の通信では、データバックアップ、プログラム更新指示、更新データのダウンロードの指示の何れかを要求するOTA要求パケットが、デバイス1aのOTA上位システム101aからデバイス2aのOTA車載システム201aへ送信され、このOTA要求パケットの指示内容に応じて、OTA車載システム201aが実行するプログラムが切り替わる。OTA車載システム201aは、OTA要求パケットを受信すると、受信完了や指示内容に応じた処理を実行することを含んだOTA応答パケットを、OTA上位システム101aへ送信する。範囲61の通信に対しては、本実施形態の多要素認証は実行しない。次にOTA車載システム201aが、OTA要求パケットに基づく処理を開始すると、OTA車載システム201aはチェックポイントごとに演算結果を実行履歴認証プログラム208aへ出力し、実行履歴認証プログラム208aは、実行履歴CRC207aを計算する。HIP202aは、実行履歴CRC207aをHIP102aへ送信する(範囲62)。範囲62の通信は、本実施形態の多要素認証の一例である。デバイス1aでは、OTA上位システム101aが実行履歴CRC107aを計算し、実行履歴認証プログラム108aが実行履歴CRC107aと実行履歴CRC207aの認証を行う。また、図示は省略するが、OTA要求パケットに基づく処理実行後の通信では、デバイス1aとデバイス2aの間で、ハッシュ値による認証が繰り返し実行される。このように、デバイス1aとデバイス2aの間の通信のうち、必要な通信に限定して本実施形態の多要素認証を適用することができる。
【0033】
(効果)
以上説明したように、本実施形態によれば、デバイス1、2間で通信セッションの開始時とセッション開始後に周期的に多要素認証を実施する。そのために各デバイス1、2には、鍵情報104、204を保管しておき、セッション開始時には、この鍵情報104、204を交換して認証を行う。また、セッション開始後には、デバイス1、2で同じ認証対象プログラム(車両側アプリ110,201)の実行ファイルや設定ファイルのデータからハッシュ値105、205を計算し、さらに同じ認証対象プログラムを実行させて、実行履歴CRC107,207を計算する。ハッシュ値105、205を照合することにより、マルウェア等によってプログラムが改ざんされていないか、あるいは不正端末ソフトウェアと通信していないかを確認することができる。また、ハッシュ値の計算については、チャレンジを使って毎回異なるようにすることで、第三者による攻撃を防止する。また、認証対象プログラムが正常に実行されているか実行状態情報をチェックするために、認証対象プログラムの処理ブロック毎にCRC計算を行い、正しく処理を実行したか検証し、CRCの照合で不一致となった場合、通信を遮断する。これにより、更なる安全性を確保することができる。なお、上記の説明では、セッション構築時の認証は鍵情報104、204によって行うこととしたが、例えば、HIP通信を制御するプログラムを対象としてハッシュ値105、205や実行履歴CRC107、207を計算し、鍵情報104、204に加えて、ハッシュ値105、205や実行履歴CRC107、207による認証を加えてもよい。
【0034】
また、デバイス1、2(何れか1つでも良い)にTEEをサポートしているCPU(Central Processing Unit)を利用することができる。そして、鍵情報104、204の保管、ファイル認証プログラム106、実行履歴認証プログラム108の実行をTEEのSecure Worldで実施することにより,不正アクセスによりNormal Worldに侵入されても、認証に用いる情報の健全性を確保することができる。
【0035】
図7は、実施形態に係る認証システムのハードウェア構成の一例を示す図である。
コンピュータ900は、CPU901、主記憶装置902、補助記憶装置903、入出力インタフェース904、通信インタフェース905を備える。上述のデバイス1、1a、2、2aは、コンピュータ900に実装される。そして、上述した各機能は、プログラムの形式で補助記憶装置903に記憶されている。CPU901は、プログラムを補助記憶装置903から読み出して主記憶装置902に展開し、当該プログラムに従って上記処理を実行する。また、CPU901は、プログラムに従って、記憶領域を主記憶装置902に確保する。また、CPU901は、プログラムに従って、処理中のデータを記憶する記憶領域を補助記憶装置903に確保する。
【0036】
なお、デバイス1、1a、2、2aの全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各機能部による処理を行ってもよい。ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、CD、DVD、USB等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また、このプログラムが通信回線によってコンピュータ900に配信される場合、配信を受けたコンピュータ900が当該プログラムを主記憶装置902に展開し、上記処理を実行しても良い。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0037】
以上のとおり、本開示に係るいくつかの実施形態を説明したが、これら全ての実施形態は、例として提示したものであり、発明の範囲を限定することを意図していない。これらの実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これらの実施形態及びその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0038】
<付記>
各実施形態に記載の認証システム、認証方法およびプログラムは、例えば以下のように把握される。
【0039】
(1)第1の態様に係る認証システム100、100aは、第1のデバイスと第2のデバイスの間で認証を行う認証システムであって、前記第1のデバイスで実行される第1のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて演算された第1の認証情報と、前記第1のプログラムの処理結果に基づいて演算された第2の認証情報と、に基づいて前記認証を行う手段、を備える。
デバイス間の認証に多要素認証を適用することにより、セキュリティを向上することができる。
【0040】
(2)第2の態様に係る認証システム100、100aは、(1)の認証システムであって、前記第1のデバイスが、前記第1の認証情報を計算する手段と、前記第2の認証情報を計算する手段と、を備え、前記第2のデバイスが、前記第1のプログラムと同じプログラムである第2のプログラムと、前記第2のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて第3の認証情報を計算する手段と、前記第2のプログラムの処理結果に基づいて第4の認証情報を計算する手段と、前記認証を行う手段と、を備え、前記認証を行う手段は、前記第1の認証情報と前記第3の認証情報が一致するかどうかと、前記第2の認証情報と前記第4の認証情報が一致するかどうかと、に基づいて前記認証を行う。
これにより、第2のデバイスは、第1のデバイスで動作している第1のプログラムが不正なものではないか、正しく処理が実行されているかを確認することができる。
【0041】
(3)第3の態様に係る認証システム100、100aは、(1)~(2)の認証システムであって、前記第1のデバイスが、前記第1の認証情報と前記第3の認証情報が一致するかどうかと、前記第2の認証情報と前記第4の認証情報が一致するかどうかと、に基づいて前記認証を行う手段、をさらに備える。
これにより、第1のデバイスは、第1のデバイスで動作している第1のプログラム、又は第2のデバイスで動作している第2のプログラムが不正なものではないか、正しく処理が実行されているかを確認することができる。
【0042】
(4)第4の態様に係る認証システム100、100aは、(2)~(3)の認証システムであって、前記第1のデバイスでは、前記第1のプログラムを実行させる実行環境と、前記第1の認証情報を計算する手段および前記第2の認証情報を計算する手段の実行環境とが異なるように構成されている。
第1の認証情報や第2の認証情報を計算する実行環境を第1のプログラムの実行環境と隔離する(例えば、ハードウェアで保護された演算器・メモリのみに認証に用いる情報やプログラムを格納する)ことで、外部からの不正アクセスを防止することができる。
【0043】
(5)第5の態様に係る認証システム100、100aは、(3)の認証システムであって、前記第2のデバイスでは、前記第2のプログラムを実行させる実行環境と、前記第3の認証情報を計算する手段および前記第4の認証情報を計算する手段の実行環境とが異なるように構成されている。
第3の認証情報や第4の認証情報を計算する実行環境を第2のプログラムの実行環境と隔離する(例えば、ハードウェアで保護された演算器・メモリのみに認証に用いる情報やプログラムを格納する)ことで、外部からの不正アクセスを防止することができる。
【0044】
(6)第5の態様に係る認証システム100、100aは、(2)~(5)の認証システムであって、前記第1の認証情報は、前記第1の認証情報を計算する度に発生させた乱数と、前記第1のプログラムの実行ファイル及び/又は設定ファイルの情報とに基づいて計算されたハッシュ値であり、前記第3の認証情報は、前記乱数と、前記第2のプログラムの実行ファイル及び/又は設定ファイルの情報とに基づいて計算されたハッシュ値である。
これにより、マルウェアでプログラムが改ざんされていないか検証可能となる。また、乱数を用いることで第三者による攻撃を防ぐことができる。
【0045】
(7)第7の態様に係る認証システム100、100aは、(2)~(6)の認証システムであって、前記第2の認証情報は、前記第1のプログラムの所定の処理を実行した演算結果から計算したCRC(Cyclic Redundancy Check)であり、前記第2の認証情報は、前記第2のプログラムの前記所定の処理を実行した演算結果から計算したCRCである。
これにより、プログラムが正常に実行されているか、実行状態情報をチェックすることができる。
【0046】
(8)第8の態様に係る認証システム100、100aは、(2)~(7)の認証システムであって、前記第1のプログラムが実行される間、前記第1の認証情報を計算する手段は、周期的に前記第1の認証情報を計算し、前記第2の認証情報を計算する手段は、周期的に前記第2の認証情報を計算し、前記第2のデバイスでは、前記第2のプログラムを実行すると共に、前記第3の認証情報を計算する手段は、周期的に前記第3の認証情報を計算し、前記第4の認証情報を計算する手段は、周期的に前記第4の認証情報を計算し、前記第2のデバイスの前記認証を行う手段は、周期的に前記認証を行う。
これにより、通信セッション継続中も周期的に多要素認証を実施し、攻撃を直ちに検知して通信を遮断することができる。
【0047】
(9)第9の態様に係る認証システム100、100aは、(2)~(8)の認証システムであって、前記第1のプログラムが実行される間、前記第1の認証情報を計算する手段は、周期的に前記第1の認証情報を計算し、前記第2の認証情報を計算する手段は、周期的に前記第2の認証情報を計算し、前記第2のデバイスでは、前記第2のプログラムを実行すると共に、前記第3の認証情報を計算する手段は、周期的に前記第3の認証情報を計算し、前記第4の認証情報を計算する手段は、周期的に前記第4の認証情報を計算し、前記第1のデバイスの前記認証を行う手段は、周期的に前記認証を行う。
これにより、通信セッション継続中も周期的に多要素認証を実施し、攻撃を直ちに検知して通信を遮断することができる。
【0048】
(10)第10の態様に係る認証システム100、100aは、(2)~(9)の認証システムであって、前記第1のデバイスと前記第2のデバイスでセッションを開始する際には、前記第1のデバイスが記憶する第1の鍵情報と、前記第2のデバイスが記憶する第2の鍵情報を交換して認証を行い、認証に成功した場合、セッションを開始する。
これにより、安全にセッションを開始することができる。
【0049】
(11)第11の態様に係る認証方法は、第1のデバイスと第2のデバイスの間で認証を行う認証方法であって、前記第1のデバイスで実行される第1のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて演算された第1の認証情報と、前記第1のプログラムの処理結果に基づいて演算された第2の認証情報と、に基づいて認証を行うステップ、を有する。
【0050】
(12)第12の態様に係るプログラムは、コンピュータ900に、第1のデバイスと第2のデバイスの間で認証を行う処理であって、前記第1のデバイスで実行される第1のプログラムの実行ファイル及び/又は設定ファイルの情報に基づいて演算された第1の認証情報と、前記第1のプログラムの処理結果に基づいて演算された第2の認証情報と、に基づいて認証を行うステップ、を含む処理を実行させる。
【符号の説明】
【0051】
1、1a、2、2a・・・デバイス
101・・・管制室側アプリ
102・・・通信ミドルウェア
103・・・セッション接続判断プログラム
104・・・鍵情報
105・・・ハッシュ値
106・・・ファイル認証プログラム
107・・・実行履歴CRC
108・・・実行履歴認証プログラム
109・・・仮想化アプリ
110・・・車両側アプリ
111・・・実行ファイル/設定ファイル
112・・・実行履歴
201・・・車両側アプリ
202・・・通信ミドルウェア
203・・・セッション接続判断プログラム
204・・・鍵情報
205・・・ハッシュ値
206・・・ファイル認証プログラム
207・・・実行履歴CRC
208・・・実行履歴認証プログラム
209・・・実行ファイル/設定ファイル
210・・・実行履歴
101a・・・OTA上位システム
102a・・・HIP
108a・・・実行履歴認証プログラム
201a・・・OTA車載システム
202a・・・HIP
208a・・・実行履歴認証プログラム
900・・・コンピュータ
901・・・CPU
902・・・主記憶装置
903・・・補助記憶装置
904・・・入出力インタフェース
905・・・通信インタフェース