以下、本発明に係る実施例について図を用いて説明する。本発明では、情報端末と秘密情報格納装置をノードとサーバとの間のゲートウェイとして安全に利用するために必要な処理の具体的な例について説明する。
図1は、M2Mシステムの一例を示す図である。本発明にかかるM2Mシステムは、情報端末1と、ノード3と、サーバ4とが、通信により相互に接続している。さらに、情報端末1は、秘密情報格納装置2と通信により相互に接続している。それぞれは図1で示していない経路によって接続されていても構わない。
情報端末1は、情報を表示可能な表示部、情報を入力可能な入力部、他の装置や機器と通信可能な通信部、および情報の演算が可能な制御部等を有した端末であり、主として、秘密情報格納装置2、ノード3、及びサーバ4との情報のやりとりを仲介する役割を担う。M2Mシステムには複数の情報端末1が含まれていても良い。情報端末1としてはスマートフォンやタブレット端末、パーソナルコンピュータやシンクライアント端末などが考えられるが、これに限るものではない。
秘密情報格納装置2は、耐タンパ機構等を備えたセキュアな半導体素子であることが考えられ、他の装置や機器と通信可能な通信部、および情報の演算が可能な制御部、高速暗号処理が可能な暗号演算部等を有した半導体素子であり、主として、情報端末1を介してノードやサーバと情報のやりとりを行う。秘密情報格納装置2としてはSIMカード型のICカードや、microSD型のICカード、組込みチップ型のICカード、非接触型および接触型のICカードなどが考えられるが、これに限るものではない。あるいは、秘密情報格納装置2は、情報端末1と一体となっており、制御部やもしくは半導体素子それ自身を、情報端末1と共有していても良い。この場合は情報端末1が持つ情報保持機能が、秘密情報格納装置2に相当すると考えられ、例えばスマートフォンが有するキーチェーンやキーストアといった、秘密情報保護機構であることが考えられる。M2Mシステムには複数の秘密情報格納装置2が含まれていても良いし、また、一つの情報端末1が複数の秘密情報格納装置2と通信してもかまわない。
ノード3は、ネットワーク等を通じて他のノードや情報端末1と通信を行うノードである。ノード3は情報端末1と通信を行うことで、情報端末1の通信機能を経由してサーバ4にデータを送付する。ノード3は例えばセンサなどを備えたセンサノードや、M2Mを実現するM2Mノードであることが考えられる。ノード3は例えば、データを外部に送出するための予め所定の認証手段と暗号手段を有することで、所定のセキュリティ機能を有することが考えられる。
サーバ4は、ネットワーク等を通じて情報端末1等と通信を行うサーバである。サーバ4は例えばセンサノードやM2Mノードに関する情報を収集して所定の処理を行うことでサービスを提供する事業者が運営するサーバであることが考えられる。したがって、ノード3から情報を収集するために必要な機能の他、データマイニングやビッグデータ処理といったアプリケーションが動作することが考えられる。
情報端末1とサーバ4との通信は、例えば、LTE(Long Term Evolution)、3G(3rd Generation)、HSPA(High Speed Packet Access)、WiMAX(登録商標、Worldwide Interoperability for Microwave Access)、有線LAN(Local Area Network)、無線LANおよびWAN(Wide Area Network)等の通信ネットワークであることが考えられる。
図2は、情報端末1および秘密情報格装置2の機能構成の一例を示す図である。
情報端末1は、記憶部11、制御部12、電源供給部13、通信部14、表示部15、入力部16、ネットワーク通信部17、およびノード通信部18を備え、これらがバス線などで結線されている。なお、図2では各モジュールが情報端末1の内部にて他のモジュールと物理的に結線しているように示しているが、必ずしもバス線により結線されている必要はなく、その他の方法で電気的に繋がっていても良いし、必要なモジュール同士のみが相互に接続されている構成でもかまわない。
記憶部11は、情報端末1に内蔵されるメモリ、または取り外し可能な外部メモリ等から構成され、各種の情報を記憶する。例えば、制御部12が実行する動作制御用プログラムを記憶する。記憶部11は、制御ソフト111を備え、これについては後述する。
制御部12は、CPU(Central Processiong Unit)、MPU(Micro Processiong Unit)、およびDSP(Digital Signal Processor)等から構成され、所定の動作制御用プログラムを実行するなどして、情報端末1全体の動作を制御する。
電源供給部13は、バッテリ、ACアダプタ、および充電回路等から構成され、情報端末1の各部への電源供給や、バッテリへの充電を行う。情報端末1がバッテリ駆動されているか、ACアダプタ駆動されているかといった状態確認や、バッテリの残量確認を行うことも考えられる。また図2に記してはいないが、秘密情報格納装置2やノード3の外部電源として電源供給を行う役割を合わせて担ってもよい。
通信部14は、情報端末1が秘密情報格納装置2と通信を行うための機能であり、接触ICカードの国際標準通信方式であるISO7816、非接触ICカードの国際標準通信方式であるISO14443、FeliCa(登録商標)、NFC(Near Field Communication)、SDカード規格に応じた通信、Bluetooth(登録商標)、USB(Universal Serial Bus)、有線LAN、無線LAN、TransferJET(登録商標)などの通信方式を実現するモジュールであることが考えられる。通信部14は、場合によっては後述するネットワーク通信部17やノード通信部18と同一のモジュールであってもよい。また、秘密情報格納装置2が情報端末1の組込みモジュールであった場合、基盤上等で結線されたものであっても構わない。あるいは情報端末1と秘密情報格納装置2が一体となっており、秘密情報格納装置2に相当する機能が情報端末1の秘密情報保護機構である場合は、情報端末1が備える秘密情報保護機構への所定のAPI(Application Programming Interface)が通信部14であると考えても何ら問題はない。通信部14は通信方式や秘密情報格納装置2の個数に応じて情報端末1に複数個存在してもかまわない。
表示部15は、液晶ディスプレイ、有機EL(Electro−Luminescence)ディスプレイ、および電子ペーパー等のパネル並びにドライバ回路等から構成され、制御部12の制御下にて任意の情報(例えば、文字、静止画、および動画等)を表示する。なお、表示部15は、それぞれ異なる情報を表示可能な複数のパネルを有していても良い。
入力部16は、タッチパネル、ボタン、キーボード、マウス、カーソルキー、およびテンキー等の一または複数を備え、ユーザの操作を受け付け、当該操作に基づいた入力信号を制御部12に入力する。なお、タッチパネルのように、表示部15と入力部16とが一体となった構成であっても良い。また、音声認識、画像認識、またはジェスチャ認識等によって入力信号を生成し、制御部12に入力するようにしても良い。
ネットワーク通信部17は、情報端末1がサーバ4等と通信を行うための機能であり、LTE、3G,HSPA、WiMAX、有線LAN、無線LAN、およびWAN等のネットワーク通信を行うためのモジュールが考えられる。ネットワーク通信部17は、場合によっては通信部14や後述するノード通信部18と同一のモジュールであってもよい。ネットワーク通信部17は通信方式等に応じて情報端末1に複数個存在してもかまわない。
ノード通信部18は、情報端末1がノード3等と通信を行うための機能であり、Bluetooth、NFC、Zigbee(登録商標)、USB、RS232C、有線LAN、無線LAN等の通信を行うためのモジュールが考えられる。ノード通信部18は、場合によっては通信部14やネットワーク通信部17と同一のモジュールであってもよい。ノード通信部18は通信方式等に応じて情報端末1に複数個存在してもかまわない。
なお、通信部14、ネットワーク通信部17並びにノード通信部18といった通信機能は、無線通信の場合、アンテナ、および変復調回路等を含んでも良い。有線通信の場合は、コネクタ、および変復調回路等を含んでも良い。通信部14、ネットワーク通信部17並びにノード通信部18は、それぞれが複数の通信方式に対応するよう構成されても良い。
秘密情報格納装置2は、記憶部21、制御部22、電源供給部23、通信部24、および暗号処理部25を備え、これらがバス線などで結線されている。なお、図2では各モジュールが秘密情報格納装置2の内部にて他のモジュールと物理的に結線しているように示しているが、必ずしもバス線により結線されている必要はなく、その他の方法で電気的に繋がっていても良いし、必要なモジュール同士のみが相互に接続されている構成でもかまわない。
記憶部21は、秘密情報格納装置2に内蔵される半導体メモリ等から構成され、各種の情報を記憶する。記憶部21は、例えばEEPROM、RAM,及びフラッシュメモリ等から構成される。記憶部21は、例えば制御部22が実行する動作制御用プログラムを記憶する。記憶部21が備える構成要素については後述する。
制御部22は、CPU、MPU、およびDSP等から構成され、所定の動作制御用プログラムを実行するなどして、秘密情報格納装置2全体の動作を制御する。
電源供給部23は、外部から電源を取得する電源供給端子もしくはアンテナ、及び電源供給回路等から構成され、秘密情報格納装置2の各部への電源供給を行う。あるいは、バッテリ、ACアダプタ、充電回路等を備えていてもよい。図2に記してはいないが、秘密情報格納装置2は電源供給部23によって情報端末1から電源の供給を受けてもよい。
通信部24は、秘密情報格納装置2が情報端末1と通信を行うための機能であり、接触ICカードの国際標準通信方式であるISO7816、非接触ICカードの国際標準通信方式であるISO14443、FeliCa、NFC、SDカード規格に応じた通信、Bluetooth、USB、有線LAN、無線LAN、TransferJETなどの通信方式を実現するモジュールであることが考えられる。秘密情報格納装置2が情報端末1の組込みモジュールであった場合、通信部24は情報端末1と基盤上で結線されたものであっても構わない。あるいは情報端末1と秘密情報格納装置2が一体となっており、秘密情報格納装置2に相当する機能が情報端末1の秘密情報保護機構である場合は、情報端末1が備える秘密情報保護機構への所定のAPIが通信部24であると考えても何ら問題はない。通信部24は通信方式に応じて秘密情報格納装置2に複数個存在してもかまわない。
なお、通信部24の通信機能は、無線通信の場合、アンテナ、および変復調回路等を含んでも良い。有線通信の場合は、コネクタ、および変復調回路等を含んでも良い。通信部24は複数の通信方式に対応するよう構成されても良い。
暗号処理部25は、剰余乗算コプロセッサや暗号アクセラレータ等から構成され、RSA暗号や楕円曲線暗号といった公開鍵暗号処理や、AESやDESといった共通鍵暗号処理を、制御部で行うよりも高速に実行するための装置である。暗号処理部25は処理する暗号等に応じて秘密情報格納装置2に複数個存在してもかまわない。
続いて情報端末1の記憶部11の構成の一例を示す。情報端末1の記憶部11は、制御ソフト111を有する。制御ソフト111は、ユーザ操作によって一連のフローを開始するきっかけとなるユーザインタフェースを提供したり、ノード3、サーバ4及び秘密情報格納装置2との通信を行うきっかけを与えたりするソフトウェアであり、制御部12によって実行される。ノード3は、通信部34を介して制御ソフト111からの要求を受けることによってデータ送出処理を開始し、処理の結果を、通信部34を介して制御ソフト111に戻す。また、サーバ4は、通信部44を介して制御ソフト111からの要求を受けることによってデータ送出処理を開始し、処理の結果を通信部44を介して制御ソフト111に戻す。また、秘密情報格納装置2は、通信部24を介して制御ソフト111からの要求を受けることによってデータ送出処理を開始し、処理の結果を、通信部24を介して制御ソフト111に戻す。このように制御ソフト111はシステム全体の処理フローのきっかけを作るが、必ずしもアルゴリズムの主体を担うとは限らない。制御ソフト111がノード3、サーバ4もしくは秘密情報格納装置2などの他の機器からコマンドをフェッチするような役割を担い、一連のフローやアルゴリズムの主体は、ノード3、サーバ4もしくは秘密情報格納装置2になる場合もある。なお、前記のようなノード3、サーバ4及び秘密情報格納装置2の動作の開始は制御ソフト111によるものだけでなく、ノード3、サーバ4及び秘密情報格納装置2それぞれが備えるセンサ部や通信部などで、検知したり何らかの情報を受信した場合や、周期的に動作する場合もあるし、その他の装置やサーバもしくはソフトウェアによる要求で動作を開始する場合もある。制御ソフト111は複数のソフトウェアが連携した複合的なものであってもかまわない。なお、本発明で特に断りなく制御ソフト111が処理を実行するような記述をした場合、制御ソフト111のプログラムの記述に則って制御部12が処理を実行するということを示しているものとする。
制御ソフト111は、一例として、情報端末ID112と、認証方法テーブル113と、暗号方法テーブル114と、サーバ情報115と、及びデータ格納部116とを備える。図2では便宜的に制御ソフト111の内部にこれらを備えるように記載しているが、これらは記憶部11のある領域に書き込まれたデータであり、それを制御ソフト111が備える前記動作を制御するためのソフトウェア(図示せず)が参照できるようになっていると考えられる。
情報端末ID112は、サーバ4が情報端末1を識別するためのID情報であることが考えられる。情報端末ID112は予め制御ソフト111と共に記憶部11に書き込まれていてもよいし、制御ソフト111自体をネットワーク等から取得し記憶部11に書き込む際に合わせて書き込んでもよい。あるいは情報端末1のデバイスや秘密情報格納装置2から取得できる一意またはそれに順ずる程度の一意性を持った情報を制御ソフト111が読み込んで記憶部11に書き込んでもよい。あるいは十分大きい乱数などを情報端末1で生成し、情報端末ID112として使用しても良い。情報端末ID112は必ずしも記憶部11に書き込むことで保持していなくともよく、必要な時に都度、制御ソフト111がAPI等を通じて取得しても構わない。いずれにしても、情報端末ID112は、サーバ4にとっての情報端末1の識別情報であるから、予めサーバ4と信頼できる方法で共有されていることが考えられる。また、情報端末ID112は秘密情報格納装置2のIDとして、秘密情報格納装置2に配置されていてもよく、この場合はサーバ4が識別する対象に秘密情報格納装置2が含まれる。情報端末1と秘密情報格納装置2はそれぞれ別個の情報端末ID112を備えていてもよい。情報端末ID112が情報端末1や秘密情報格納装置2などの複数の箇所に配置される場合、それらは同一の値であってもよいし、異なる値であってもよい。値が異なっている場合は、サーバ4においてそれらの対応を取るための対応情報を有していることが考えられる。以降のフローでサーバ4が情報端末ID112を識別子として用いる場合は、情報端末1を識別する場合、秘密情報格納装置2を識別する場合、もしくはその両方が、ケースに応じて含まれるものとする。
認証方法テーブル113は、後述するフローで秘密情報格納装置2から取得する認証方法IDに対応する認証方法を実施するために情報端末1が実施すべき内容を示す領域である。
図3に認証方法テーブル113の構成要素の一例を示す。認証方法テーブル113は所定の情報を格納するためのテーブルや、データベース、ハッシュ構造、もしくはKVS(Key Value Store)等のデータを保持する手段であることが考えられる。もしくは後述する認証方法IDに紐付いた所定の認証処理を実施すべく処理を分岐する適当な分岐処理であることが考えられる。認証方法テーブル113は、一例として、認証方法ID1131、情報端末処理1132、を備える。
認証方法ID1131は、後述するフローで秘密情報格納装置2から取得する認証方法IDに対応するIDであり、それぞれ情報端末処理1132と対応している。
情報端末処理1132は、認証方法ID1131と対応しており、ノード3と秘密情報格納装置2の認証処理を実施するために必要な情報端末1の処理を示す。具体的には、処理を実現するプログラムへの関数ポインタを格納した関数テーブルであってもよいし、あるいは、テーブル形式を取っていなくとも適当な分岐処理をもって認証方法ID1131と紐付いていてもよい。例えばノード3と秘密情報格納装置2の間でAESなどの共通鍵暗号によるチャレンジ・レスポンスや、PKIなど、所定の認証処理を実行するために、情報端末1が所定の仲介処理を実施することができれば良い。
認証方法ID1131と情報端末処理1132は、情報端末1が通信するノード3が備える認証方法の種類の数だけ存在することが考えられる。複数種類の認証処理で情報端末処理1132を統一できる場合は、複数の認証方法ID1131を同じ情報端末処理1132に対応付けても構わない。なお、認証方法テーブル113は、場合によって秘密情報格納装置2に配置されていても良い。この場合は、ノード3と秘密情報格納装置2とで認証処理を実施する際など、情報端末1による処理の仲介を必要としたタイミングで、必要な情報を秘密情報格納部2から所定の方法で取得することが考えられる。
図2における暗号方法テーブル114は、後述するフローで秘密情報格納装置2から取得する暗号方法IDに対応する暗号方法を実施するために情報端末1が実施すべき内容を示す領域である。
図3に暗号方法テーブル114の構成要素の一例を示す。暗号方法テーブル114は所定の情報を格納するためのテーブルや、データベース、ハッシュ構造、もしくはKVS等のデータを保持する手段であることが考えられる。もしくは後述する暗号方法IDに紐付いた所定の暗号処理を実施すべく処理を分岐する適当な分岐処理であることが考えられる。暗号方法テーブル114は、一例として、暗号方法ID1141、情報端末処理1142、を備える。
暗号方法ID1141は、後述するフローで秘密情報格納装置2から取得する暗号方法IDに対応するIDであり、それぞれ情報端末処理1142と対応している。
情報端末処理1142は、暗号方法ID1141と対応しており、ノード3と秘密情報格納装置2の間で暗号データの送受信を実施するために必要な情報端末1の処理を示す。具体的には、処理を実現するプログラムへの関数ポインタを格納した関数テーブルであってもよいし、あるいは、テーブル形式を取っていなくとも適当な分岐処理をもって暗号方法ID1141と紐付いていてもよい。例えばノード3と秘密情報格納装置2の間でAESなどの共通鍵暗号や、PKIなどの公開鍵暗号による鍵共有による暗号、準同型暗号を用いた処理など、所定の暗号処理による暗号データの仲介処理を実施することができれば良い。
暗号方法ID1141と情報端末処理1142は、情報端末1が通信するノード3が備える暗号方法の種類の数だけ存在することが考えられる。複数種類の暗号処理で情報端末処理1142を統一できる場合は、複数の暗号方法ID1141を同じ情報端末処理1142に対応付けても構わない。なお、暗号方法テーブル114は、場合によって秘密情報格納装置2に配置されていても良い。この場合は、ノード3と秘密情報格納装置2とで暗号化データのやりとりを実施する際など、情報端末1による処理の仲介を必要としたタイミングで、必要な情報を秘密情報格納部2から所定の方法で取得することが考えられる。
図2におけるサーバ情報115は、制御ソフト111が必要に応じてサーバ4に接続するために使用する情報であり、サーバ4のURLやIPアドレスなどであることが考えられる。
データ格納部116は、ノード3から取得したデータを格納する。ここで格納されるデータは、後述するフローにより秘密情報格納装置2によって所定の暗号化が施されたデータであり、暗号の強度に応じて、情報端末1からは暗号化された部分の内容を知りえないものとする。
図3にデータ格納部116の構成要素の一例を示す。データ格納部116は所定の情報を格納するためのテーブルや、データベース、ハッシュ構造、もしくはKVS等のデータを保持する手段であることが考えられる。データ格納部116は、一例として、ノードID1161、データID1162、取得日時1163、暗号化データ1164を備える。ノードID1161はデータを取得してきたノード3の識別情報である。データID1162は取得したデータに対して付されるIDであり、同じノード3から取得したデータであっても、データを取得したタイミングや手段によって値が異なることが考えられる。取得日時1163はノード3からデータを取得した日時等の情報が含まれることが考えられる。暗号化データ1164は、ノード3から取得したデータであり、後述するフローにより秘密情報格納装置2によって所定の暗号化が施され、暗号の強度に応じて、情報端末1からはその内容を知りえないものとする。他に、データ格納部116は、例えば情報端末1が位置情報を取得する構成要素を備えている場合は、データを取得した際の位置情報等が含まれていても良い。
なお、データ格納部116は、場合によって秘密情報格納装置2に配置されていても良い。この場合は、情報端末1がサーバ4にデータ送出する際など、暗号化データを必要としたタイミングで、必要な情報を秘密情報格納部2から所定の方法で取得することが考えられる。
情報端末ID112、認証方法テーブル113、暗号方法テーブル114、サーバ情報115、データ格納部116は、予め制御ソフト111と共に記憶部11に書き込まれていてもよいし、制御ソフト111自体をネットワーク等から取得し記憶部11に書き込む際に合わせて書き込んでもよい。あるいは他の媒体にこれらの情報を格納しておき、適宜制御ソフト111が読み込んで記憶部11に書き込んでもよい。先述の他の媒体とは、例えば、外部メモリでもよいし、あるいは接続先の判明しているその他のサーバでもよいし、もしくは秘密情報格納装置2であってもかまわない。
なお図に示してはいないが、制御ソフト111は上記以外の情報を備えていてもよい。例えば後述する秘密鍵格納装置2が備えるアプリケーションやソフトウェア等のプログラムにアクセスするためのプログラムIDなどを備えていても構わない。プログラムIDとしては例えばICカードの規格であるISO7816に準拠したAID(Application ID)などであることが考えられる。
秘密情報格納装置2の記憶部21は、一例として、制御ソフト211を有する。制御ソフト211は、秘密情報格納装置2の制御を行うソフトウェアであり、制御部22によって実行される。制御ソフト211は複数のソフトウェアが連携した複合的なものであってもかまわない。なお、本発明で特に断りなく制御ソフト211が処理を実行するような記述をした場合、物理的には制御ソフト211のプログラムの記述に則って制御部22が処理を実行するということを示しているものとする。
制御ソフト211は、一例として、ノード管理テーブル212と、認証方法テーブル213と、暗号方法テーブル214と、サーバ認証鍵215と、データ格納部216と、テーブル更新鍵217とを備える。図2では便宜的に制御ソフト211の内部にこれらを備えるように記載しているが、これらは記憶部21のある領域に書き込まれたデータであり、それを制御ソフト211が備える、前記動作を制御するためのソフトウェア(図示せず)が参照できるようになっていると考えられる。制御ソフト211としては、例えばJavaCard仕様に則ったアプリケーション、JavaCardOS、MULTOS(登録商標)仕様に則ったアプリケーション、MULTOS OSなどが考えられる。
ノード管理テーブル212は、複数のノード3と、それに対応する認証手段、暗号手段、認証鍵、暗号鍵等を格納する領域である。ノード管理テーブル212は、その役割から、EEPROMやフラッシュなどの不揮発性のメモリに配置されることが望ましい。
図4にノード管理テーブル212の構成要素の一例を示す。ノード管理テーブル212は所定の情報を格納するためのテーブルや、データベース、ハッシュ構造、もしくはKVS等のデータを保持する手段であることが考えられる。ノード管理テーブル212は、一例として、ノードID2121、認証方法ID2122、認証鍵2123、暗号方法ID2124、通信路暗号鍵2125、保管用暗号鍵2126、を備える。
ノードID2121はデータを取得するノード3の識別情報である。後述するフローでノード3から送出されるID情報と対応しており、通信するノードの数だけ保持する。あるいは複数のノード3をグループ化して一様に取り扱う場合、ノード3のグループを識別するグループIDが格納されてもよい。あるいは、例えば複数のノード3をグループ化して一様に扱うケースとして、その通信手段が有線か無線かといったことや、BluetoothかNFCかといったことが判定基準になりうる場合などは、ノード通信部18における通信手段に対応するID等をノードID2121として扱ってもよい。またそのほかの判断基準で適当なグルーピングを行ってもかまわない。
認証方法ID2122は、後述するフローにおいて、ノードID2121に対応するノード3からのデータの読み出しを行う際に、ノード3に対する認証処理で用いる認証方法を示すIDであり、後述する認証方法テーブル213に格納される認証方法のいずれかに対応している。認証方法は例えばAESなどの共通鍵暗号によるチャレンジ・レスポンスや、PKIなどによる認証であってもよい。ノード3の用途によっては排他的論理和によるセキュリティ強度がそれほど強くないと考えられる認証や、あるいは認証なしであってもよい。いずれの場合でも、認証方法ID2122が示す認証方法は、対応するノード3が予め持っている認証方法と合わせておく必要がある。
認証鍵2123は、後述するフローにおいて、ノードID2121に対応するノード3からのデータの読み出しを行う際に、ノード3に対する認証方法ID2122が示す認証処理で用いる認証鍵である。認証鍵2123の形式は認証方法ID2122に依存するものであり、例えばAESなどの共通鍵や、RSAや楕円曲線暗号による公開鍵ペアなどが考えられる。ノード3の用途によっては認証なしでもよいが、その場合は該当する値なしであっても構わない。いずれの場合でも、認証鍵2123は、ノード3が予め持っている認証鍵と、認証処理において対になるものとしておく必要がある。
暗号方法ID2124は、後述するフローにおいて、ノードID2121に対応するノード3からのデータの読み出しを行う際に、ノード3から送出されるデータを暗号化する暗号方法を示すIDであり、後述する暗号方法テーブル214に格納される暗号方法のいずれかに対応している。暗号方法は例えばAESなどの共通鍵暗号でもよいし、PKIなどの公開鍵暗号による鍵共有を行って暗号化してもよいし、準同型暗号などであってもよい。ノード3の用途によっては排他的論理和によるセキュリティ強度がそれほど強くないと考えられる暗号や、あるいは暗号なしであってもよい。また暗号方法ID2124は認証方法ID2122と関連していても良く、例えば認証方法ID2122が示す認証処理において暗号用のセッション鍵を生成してもよい。いずれの場合でも、暗号方法ID2124が示す暗号方法は、ノード3が予め持っている暗号方法と合わせてある必要がある。
通信路暗号鍵2125は、後述するフローにおいて、ノードID2121に対応するノード3からのデータの読み出しを行う際に、ノード3に対する暗号方法ID2124による暗号処理で用いる暗号鍵である。通信路暗号鍵2125の形式は暗号方法ID2124に依存するものであり、例えばAESなどの共通鍵や、RSAや楕円曲線暗号による公開鍵ペア、準同型暗号の鍵情報などが考えられる。ノード3の用途によっては暗号なしでもよいが、その場合は該当する値なしであっても構わない。また、通信路暗号鍵2125をマスター鍵として、セッション鍵を生成し、それを通信路の暗号化に用いる方式でも構わない。あるいは通信路暗号鍵2125と認証鍵2123が同一のものであっても構わない。また、通信路暗号鍵2125は認証方法ID2122と関連していても良く、例えば認証方法ID2122が示す認証処理において暗号用のセッション鍵を生成してもよい。いずれの場合でも、通信路暗号鍵2125は、ノード3が予め持っている暗号鍵と、暗復号処理において対になるものとしておく必要がある。
保管用暗号鍵2126は、後述するフローにおいて、ノードID2121に対応するノード3から読み出したデータを、情報端末1または情報端末1を経由してサーバ4に送出する際に、データを再暗号化する処理において用いる暗号鍵である。保管用暗号鍵2126の形式は予めサーバ4と取り決めた暗号処理方式に依存するものであり、例えばAESなどの共通鍵や、RSAや楕円曲線暗号による公開鍵ペア、準同型暗号の鍵情報などが考えられる。また、保管用暗号鍵2126をマスター鍵として、乱数値等の何らかの情報を組み合わせ、派生鍵を生成し、それを保管用の暗号鍵として用いる方式でも構わない。あるいは保管用暗号鍵2126と認証鍵2123や通信路暗号鍵2125が同一であるケースがあってもよい。いずれの場合でも、保管用暗号鍵2126は、サーバ4が予め持っている暗号鍵と、暗復号処理において対になるものとしておく必要がある。
上述の例では、保管用暗号鍵2126はノード管理テーブル212の構成要素として記述したが、この例に限ったものではない。一例として、どのノード3から取得したデータであっても、サーバ4に送出する際は同一の保管用暗号鍵2126を用いて暗号化することとすれば、秘密情報格納装置2は、ノード管理テーブル212とは独立に保管用暗号鍵2126を一つ保持していれば良いことになる。
また図に示してはいないが、ノード管理テーブル212は、ノードID2121が示すノードIDを持つノード3との通信の可否を示す情報を持っていてもよい。例えば通信してよいノード3のホワイトリストや、通信してはならないノード3のブラックリストなどがこれに相当する。
また、ノード管理テーブル212は情報端末1に存在してもよい。秘密情報格納装置2と情報端末1の両方に存在してもよいし、どちらか一方でも構わない。例えば、秘密情報格納装置2のノード管理テーブル212は上記の構成を取った上で、情報端末1のノード管理テーブル212にはノードID2121と認証方法ID2122、暗号方法ID2124の対応付けが格納されており、鍵は含まないといったことも考えられる。
図2における認証方法テーブル213は、ノード管理テーブル212の認証方法ID2122に対応する認証方法を示す領域である。認証方法テーブル213は、その役割から、EEPROMやフラッシュなどの不揮発性のメモリに配置されることが望ましい。
図4に認証方法テーブル213の構成要素の一例を示す。認証方法テーブル213は所定の情報を格納するためのテーブルや、データベース、ハッシュ構造、もしくはKVS等のデータを保持する手段であることが考えられる。もしくは後述する認証方法IDに紐付いた所定の認証方法を実施すべく処理を分岐する適当な分岐処理であることが考えられる。認証方法テーブル213は、一例として、認証方法ID2131、認証方法2132、を備える。
認証方法ID2131は、ノード管理テーブル212の認証方法ID2122において記されるIDであり、認証方法2132と対応している。
認証方法2132は、認証方法ID2131と対応しており、ノード3との認証方法を示す。具体的には、認証方法を実現するプログラムへの関数ポインタを格納した関数テーブルであってもよいし、あるいは、テーブル形式を取っていなくとも適当な分岐処理をもって認証方法ID2131と紐付いていてもよい。例えばAESなどの共通鍵暗号によるチャレンジ・レスポンスや、PKIなど、所定の認証処理を実行することを示すことができれば良い。
認証方法ID2131と認証方法2132は、情報端末1が通信するノード3が備える認証方法の種類の数だけ存在することが考えられる。認証方法が鍵を用いるものであった場合、各ノード3が個別に有する鍵はノード管理テーブル212で管理されるのが望ましいため、認証方法テーブル213は鍵の情報からは切り離されているのが望ましい。また認証方法ID2131は情報端末1の認証方法テーブル113における認証方法ID1131と対応付いていることが望ましい。
図2における暗号方法テーブル214は、ノード管理テーブル212の暗号方法ID2124に対応する暗号方法を示す領域である。暗号方法テーブル214は、その役割から、EEPROMやフラッシュなどの不揮発性のメモリに配置されることが望ましい。
図4に暗号方法テーブル214の構成要素の一例を示す。暗号方法テーブル214は所定の情報を格納するためのテーブルや、データベース、ハッシュ構造、もしくはKVS等のデータを保持する手段であることが考えられる。もしくは後述する暗号方法IDに紐付いた所定の暗号方法を実施すべく処理を分岐する適当な分岐処理であることが考えられる。暗号方法テーブル214は、一例として、暗号方法ID2141、暗号方法2142、を備える。
暗号方法ID2141は、ノード管理テーブル212の暗号方法ID2124において記されるIDであり、暗号方法2142と対応している。
暗号方法2142は、暗号方法ID2141と対応しており、ノード3が送出するデータの暗復号の方法を示す。具体的には、暗号方法を実現するプログラムへの関数ポインタを格納した関数テーブルであってもよいし、あるいは、テーブル形式を取っていなくとも適当な分岐処理をもって暗号方法ID2141と紐付いていてもよい。例えばAESなどの共通鍵暗号や、PKIなどの公開鍵暗号による鍵共有による暗号、準同型暗号を用いた処理など、所定の暗号処理を実行することを示すことができれば良い。
暗号方法ID2141と暗号方法2142は、情報端末1が通信するノード3が備える暗号方法の種類の数だけ存在することが考えられる。暗号方法が鍵を用いるものであった場合、各ノード3が個別に有する鍵はノード管理テーブル212で管理されるのが望ましいため、暗号方法テーブル214は鍵の情報からは切り離されているのが望ましい。また暗号方法ID2141は情報端末1の暗号方法テーブル114における暗号方法ID1141と対応付いていることが望ましい。
図2のサーバ認証鍵215は、情報端末1もしくは秘密情報格納装置2とサーバ4とで相互認証を行う鍵の情報である。例えば情報端末1のネットワーク通信部17と、サーバ4との間でネットワーク通信を行う際の相互認証と暗号通信路の確立に用いることが考えられる。サーバ認証鍵215としては、例えば、PKIを用いたSSL通信に使用する公開鍵証明書やクライアント認証の秘密鍵が考えられる。サーバ認証鍵215は複数個あってもよく、それが公開鍵である場合は情報端末1に配置されていても構わない。例えば、SSLによるサーバ認証を行う場合は、サーバ認証鍵215はサーバの公開鍵証明書に相当すると考えられるため、情報端末1に配置されていても何ら問題はない。また、SSLのサーバ認証とクライアント認証を両方行う場合などは、サーバ認証鍵215に相当する要素が複数存在してもかまわず、さらに、それらが秘密情報格納装置2と情報端末1に分かれて配置されていてもよい。例えば先述のサーバ認証に用いるサーバの公開鍵証明書に相当するサーバ認証鍵215は情報端末1に配置し、クライアント認証に用いる秘密鍵に相当するサーバ認証鍵215は秘密情報格納装置2に配置する、といった構成になっていても構わない。
データ格納部216は、ノード3から取得したデータを格納する。ここで格納されるデータは、後述するフローによりノード3で所定の暗号化が施されたデータを、秘密情報格納装置2によって復号化したデータである。
図4にデータ格納部216の構成要素の一例を示す。データ格納部216は所定の情報を格納するためのテーブルや、データベース、ハッシュ構造、もしくはKVS等のデータを保持する手段であることが考えられる。データ格納部216は、一例として、ノードID2161、データID2162、取得日時2163、データ2164を備える。ノードID2161はデータを取得してきたノード3の識別情報である。データID2162は取得したデータに対して付されるIDであり、同じノード3から取得したデータであっても、データを取得したタイミングや手段によって値が異なることが考えられる。データID2162はデータ格納部216の内部で一意になっていることが望ましく、カウンタや乱数を用いてIDを付しても良い。取得日時2163はノード3からデータを取得した日時等の情報が含まれることが考えられる。日時は秘密情報格納装置2が取得可能であればそれを用いても良いし、情報端末1から日時情報を送付してもよい。もしくは取得日時2163は省略しても構わない。データ2164は、ノード3から取得したデータであり、後述するフローによりノード3で所定の暗号化が施されたデータを秘密情報格納装置2によって復号化したデータである。なお、情報端末1の構成例で説明したデータ格納部116が秘密情報格納装置2に配置される場合は、データ格納部216を省いても構わない。
図2のテーブル更新鍵217は、ノード管理テーブル212、もしくは認証方法テーブル213や暗号方法テーブル214を、サーバ4の情報に基づいて更新する際に用いる鍵である。サーバ4が生成する暗号化されたテーブル更新情報を復号するために用いる。詳細はサーバ4の構成および後述するフローにおいて説明する。
図5はノード3およびサーバ4の機能構成の一例を示す図である。
ノード3は、記憶部31、制御部32、電源供給部33、通信部34、暗号処理部35、センサ部36を備え、これらがバス線などで結線されている。なお、図5では各モジュールがノード3の内部にて他のモジュールと物理的に結線しているように示しているが、必ずしもバス線により結線されている必要はなく、その他の方法で電気的に繋がっていても良いし、必要なモジュール同士のみが相互に接続されている構成でもかまわない。
記憶部31は、ノード3に内蔵されるメモリ、または取り外し可能な外部メモリ等から構成され、各種の情報を記憶する。例えば、制御部32が実行する動作制御用プログラムを記憶する。記憶部31は、制御ソフト311を備え、これについては後述する。
制御部32は、CPU、MPU、およびDSP等から構成され、所定の動作制御用プログラムを実行するなどして、ノード3全体の動作を制御する。
電源供給部33は、バッテリ、ACアダプタ、および充電回路等から構成され、情報端末1の各部への電源供給や、バッテリへの充電を行う。ノード3がバッテリ駆動されているか、ACアダプタ駆動されているかといった状態確認や、バッテリの残量確認を行うことも考えられる。もしくは外部から無線給電を行う電源回路であってもよく、情報端末1もしくはその他の装置などから、無線による電力の供給を受けても良い。
通信部34は、ノード3が情報端末1等と通信を行うための機能であり、Bluetooth、NFC、Zigbee、USB、RS232C、有線LAN、無線LAN等の通信を行うためのモジュールが考えられる。通信部34は通信方式等に応じてノード3に複数個存在してもかまわない。
暗号処理部35は、剰余乗算コプロセッサや暗号アクセラレータ等から構成され、RSA暗号や楕円曲線暗号といった公開鍵暗号処理や、AESやDESといった共通鍵暗号処理を、制御部で行うよりも高速に実行するための装置である。暗号処理部35は処理する暗号等に応じてノード3に複数個存在してもかまわないし、もしくは制御部32がその役割を行うのであれば存在しなくてもかまわない。
センサ部36は、M2MシステムやIoTシステムの目的となる所定のサービスを実現するために必要な情報をノード3が収集するためのモジュールまたはインタフェースである。センサ部36は、温度センサ、歪みセンサ、加速度センサ、微粒子センサ等の各種センサモジュールや、他の機器からM2Mに関する情報を取得する所定のインタフェース等であることが考えられる。
ノード3による情報取得は、情報端末1とは無関係に行われることが考えられる。ノード3は、何らかの方法で電源供給部33からの給電を受けている間、センサ部36から定期的もしくは何らかのトリガーによって種々の情報を取得し、これを記憶部31に格納する動作を、制御部32の制御によって実施することが考えられる。ただし、ノード3の動作はこれに限るものではなく、例えば情報端末1から要求があった場合にのみセンサ部からの情報を取得するような制御を行っても良い。
ノード3の記憶部31は、制御ソフト311を有する。制御ソフト311は、ノード3がセンサ部36から情報を取得して記憶部31に格納したり、情報端末1からの要求により所定の認証処理や暗号処理を実施する全体のアルゴリズムを制御したりするソフトウェアであり、制御部32によって実行される。
制御ソフト311は、一例として、ノードID312と、認証鍵313と、通信路暗号鍵314と、データ格納部316とを備える。図5では便宜的に制御ソフト311の内部にこれらを備えるように記載しているが、これらは記憶部31のある領域に書き込まれたデータであり、それを制御ソフト311が備える前記動作を制御するソフトウェア(図示せず)が参照できるようになっていると考えられる。
ノードID312は、秘密情報格納装置2やサーバ4がノード3を識別するためのID情報であることが考えられる。ノードID312は予め制御ソフト311と共に記憶部11に書き込まれていてもよいし、制御ソフト311自体をノード3の外部から取得し記憶部31に書き込む場合は、その際に合わせて書き込んでもよい。いずれにしても、ノードID312は、秘密情報格納装置2やサーバ4にとっての識別情報であるから、予め秘密情報格納装置2やサーバ4と信頼できる方法で共有されていることが考えられる。
認証鍵313は、後述するフローで、ノード3から情報端末1にデータを送出する際に、所定の認証処理を実施するための鍵である。認証鍵313は、秘密情報格納装置2のノード管理テーブル212において、ノードID312と対応するノードID2121に紐付いた認証鍵2123と、認証処理において対になるものである。認証鍵313を用いた認証処理のアルゴリズムは、秘密情報格納装置2のノード管理テーブル212において、ノードID312と対応するノードID2121に紐付いた認証方法ID2122で示される認証方法2132と対応するものである。
通信路暗号鍵314は、後述するフローで、ノード3から情報端末1にデータを送出する際に、所定の暗号処理を施すための鍵である。通信路暗号鍵314は、秘密情報格納装置2のノード管理テーブル212において、ノードID312と対応するノードID2121に紐付いた通信路暗号鍵2125と、暗復号処理において対になるものである。通信路暗号鍵313を用いた暗号処理のアルゴリズムは、秘密情報格納装置2のノード管理テーブル212において、ノードID312と対応するノードID2121に紐付いた暗号方法ID2124で示される暗号方法2142と対応するものである。
データ格納部316は、センサ部36等から取得したデータを格納する。ここで格納されるデータは、後述するフローにより、通信路暗号鍵313によって暗号化された上で通信部34より情報端末1に送出される。データ格納部316は所定の情報を格納するためのテーブルや、データベース、ハッシュ構造、もしくはKVS等のデータを保持する手段であってもよく、また、データの保持方法はこれらに限らない。
サーバ4は、記憶部41と、制御部42と、通信部44と、を少なくとも備え、それらが互いに電気的に接続されている。記憶部41は、不揮発性及び揮発性の半導体メモリや、ハードディスクなどで構成され、制御部42で実行されるプログラムや、プログラムが使用するデータ等を格納する。もしくはセンシティブな情報を格納する場合は耐タンパ機構等を備えたHSM(Hardware Security Module)などを記憶部41に含んでも良い。制御部42はCPUやGPUなどで構成され、サーバ4全体の制御を司る。通信部44は情報端末1や他の装置と通信を行うための機能であり、LTE、3G、HSPA、WiMAX、有線LAN、無線LAN、およびWAN等のネットワーク通信を行うためのモジュールが考えられる。記憶部41、制御部42、通信部44は必要に応じてサーバ4に複数個存在することで、処理の高速化や冗長化を行ってもかまわない。またそれぞれの構成要素が別個の筐体もしくは別個のサーバとなっており、機能的に連携することでサーバ4を構成していても構わない。
記憶部41は、制御ソフト411を有する。制御ソフト411は、サーバ4が情報端末1と連携してノード3からデータを収集したり、秘密情報格納装置2のノード管理テーブル212を更新するためのテーブル更新情報を作成したりするソフトウェアであり、制御部42によって実行される。
制御ソフト411は、一例として、ノード管理テーブル412と、認証方法テーブル413と、暗号方法テーブル414と、情報端末管理テーブル415と、データ格納部416と、テーブル更新鍵417とを備える。図5では便宜的に制御ソフト411の内部にこれらを備えるように記載しているが、これらは記憶部41のある領域に書き込まれたデータであり、それを制御ソフト411が備える前記動作を制御するソフトウェア(図示せず)が参照できるようになっていると考えられる。制御ソフト411としては、例えばサーブレットなどが考えられる。
図6に、ノード管理テーブル412、認証情報テーブル413、暗号情報テーブル414の構成の一例を示す。
ノード管理テーブル412は、一例として、ノードID4121、認証方法ID4122、認証鍵4123、暗号方法ID4124、通信路暗号鍵4125、保管用暗号鍵4126、を備えるが、秘密情報格納装置2のノード管理テーブル212と同様の構成であるため、詳細な説明を省略する。ただしテーブルを構成する手段はノード管理テーブル412とノード管理テーブル212で異なっても良い。後述のフローでは、情報端末1を経由して送付されたノード3からの暗号化データを保管用暗号鍵4126で復号化する。保管用暗号鍵4126は、ノード管理テーブル212の保管用暗号鍵2126と、暗復号処理において対となるものとしておく必要がある。また保管用暗号鍵2126と同様に、ノード管理テーブル412とは独立に保管用暗号鍵4126を保持する構成であってもよい。
ノード管理テーブル212で管理されるノードID2121は、ノード管理テーブル412で管理されるノードID4121の部分集合となることが想定される。これは、M2Mシステムを運用する上で、管理すべき全てのノード3の情報はサーバ4において漏れなく管理されるであろうということ、かつ一方で、情報端末1や秘密情報格納装置2を新規導入した場合や、あるいはノード3を新たに追加した場合など、いくつかの場合において、特定の秘密情報格納装置2のノード管理テーブル212で管理されるノードID2121に、通信対象となる特定のノード3のノードID312が含まれない場合があると考えられるためである。そのため、後述のフローでは、ノード管理テーブル412の情報に基づきノード管理テーブル212の情報を更新するテーブル更新についても述べる。
認証方法テーブル413と暗号方法テーブル414は、それぞれ一例として認証方法ID4131と認証方法4132、暗号方法ID4141と暗号方法4142、を備えるが、それぞれ秘密情報格納装置2の認証方法テーブル213と暗号方法テーブル214と同様の構成であるため、詳細な説明を省略する。ただしテーブルを構成する手段は認証方法テーブル413と認証方法テーブル213で異なっても良いし、暗号方法テーブル414と暗号方法テーブル214で異なっても良い。認証方法テーブル213と暗号方法テーブル214についても、ノード管理テーブル212と同様にテーブル更新の仕組みを備えてもよい。
図7に、情報端末管理テーブル415、データ格納部416の構成の一例を示す。
情報端末管理テーブル415は所定の情報を格納するためのテーブルや、データベース、ハッシュ構造、もしくはKVS等のデータを保持する手段であることが考えられる。情報端末管理テーブル415は、一例として、情報端末ID4151と、情報端末認証情報4152と、を備える。
情報端末ID4151は情報端末1もしくは秘密情報格納装置2を識別するためのID情報であり、情報端末1もしくは秘密情報格納装置2の情報端末ID112と対応している。
情報端末認証情報4152は、情報端末ID4151に対応した情報端末1もしくは秘密情報格納装置2と相互認証を行う鍵の情報である。例えば情報端末ID4151に対応した情報端末1のネットワーク通信部17と、サーバ4の通信部44との間でネットワーク通信を行う際の相互認証と暗号通信路の確立に用いることが考えられる。情報端末認証情報4152としては、例えば、PKIを用いたSSL通信に使用する公開鍵証明書やサーバ認証の秘密鍵が考えられる。情報端末認証情報4152には、用途の異なる複数種類の鍵が格納されていても構わない。
また、上記の例では情報端末1とサーバ4の相互認証を行う際に、情報端末1ごとに認証情報が異なる例を記したが、この限りではない。例えば、相互認証にSSLを使用する場合は、一般に情報端末1からのサーバ認証に用いる秘密鍵を情報端末1ごとに変更する必要はないことから、このような例においては情報端末管理テーブル415のような構成を取る必要は必ずしもなく、例えば、代表として情報端末認証情報4152を一つ保持していれば良い。あるいは、SSLのサーバ認証とクライアント認証を両方行う場合などは、上述のようにサーバ認証に用いる鍵は一つでも良いが、一般にクライアント認証に用いる公開鍵証明書は情報端末1の個数だけ管理する必要があることから、サーバ認証向けには情報端末認証情報4152を一つ持ち、一方で、クライアント認証向けには情報端末管理テーブル415によって情報端末認証情報4152を管理する、といった構成をとっても構わない。
データ格納部416は、一例として、ノードID4161、データID4162、取得日時4163、データ4164を備えるが、秘密情報格納装置2のデータ格納部212と同様の構成であるため、詳細な説明を省略する。ただしテーブルを構成する手段はデータ格納部416とデータ格納部216で異なっても良い。データ格納部416が備えるデータ4164には、後述のフローにおいて、情報端末1を経由して送付されたノード3からの暗号化データを保管用暗号鍵4126で復号化したデータが格納される。
図5のテーブル更新鍵417は、秘密情報格納装置2のノード管理テーブル212、もしくは認証方法テーブル213や暗号方法テーブル214を、ノード管理テーブル412、もしくは認証方法テーブル413や暗号方法テーブル414の情報に基づいて更新する際に用いる鍵である。テーブルの更新を行うためのテーブル更新情報は、テーブル更新鍵417によって暗号化され、秘密情報格納装置2に送付される。テーブル更新鍵417は、テーブル更新鍵217と、暗復号処理において対となるものとしておく必要がある。また、テーブル更新鍵417とテーブル更新鍵217とをそれぞれマスター鍵として、乱数値等の何らかの情報を組み合わせ、派生鍵を生成し、それをテーブル更新情報を生成する暗号鍵として用いる方式でも構わない。
図8から図10はM2Mシステムの処理の一例を示した図である。以下、特に断りがなければ、制御ソフト111を用いた制御部12による情報端末1の動作を単に情報端末1の動作として記述し、制御ソフト211を用いた制御部22による秘密情報格納装置2の動作を単に秘密情報格納装置2の動作として記述し、制御ソフト311を用いた制御部32によるノード3の動作を単にノード3の動作として記述し、制御ソフト411を用いた制御部42によるサーバ4の動作を単にサーバ4の動作として記述する。また、以下、特に断りがなければ、情報端末1と秘密情報格納装置2の通信はそれぞれ通信部14と通信部24を、情報端末1とノード3の通信はそれぞれノード通信部18と通信部34を、情報端末1とサーバ4の通信はそれぞれネットワーク通信部17と通信部44を、それぞれ介するものとする。また、以降のフローにおいて、認証処理や暗号処理を実施する場合、秘密情報格納端末2であれば暗号処理部25を、ノード3であれば暗号処理部35を、特に断りがなくとも、必要に応じて適宜用いるものとする。
図8は、情報端末1を経由し、ノード3からデータを取得し、秘密情報格納装置2の内部に格納するまでの処理の一例を示している。
処理は、一例として、情報端末1がユーザによって操作された、ということを検知して動作が開始する(S101)。例えば、ノード通信部18により情報端末1がノード3に近づいたと検知しても良いし、入力部16にユーザが入力したことを入力信号により、制御部12が検知しても良い。もしくは前記以外の条件でフローを開始しても問題なく、例えば制御部12がネットワーク通信部からの信号により判断を行う、などである。続いて情報端末1は、ノード3にノードIDを問い合わせる(S102)。問い合わせを受けたノード3は、ノードID312を情報端末1に送付する(S103)。ノードID312を受け取った情報端末1は、ノードID312もしくはそれを示す情報を秘密情報格納装置2に送付する(S104)。秘密情報格納装置2はノード管理テーブル212のノードID2121に、ノードID312に対応するものが存在するかどうかを判断し、存在するかどうかの判断を含む情報を、情報端末1に送付する(S105)。また、以降とくに明記はしないが、S104とS105の情報のやりとりを含め、情報端末1と秘密情報格納装置2の間の通信において、通信情報の署名や暗号化など、両者間で予め取り決めた処理が施されてあっても何ら問題はない。ノードID312に対する判断を受け取った情報端末1は、ノードID312に関する情報がノード管理テーブル212に存在する場合はS108に処理を分岐し、存在しない場合は、ノード412に関する情報をサーバ4に問い合わせるため、S107に分岐する(S106)。S107以降のフローは図10に示し、詳細は後述する。また図に示してはいないが、S104とS105のやりとりにおいて情報端末1が受け取った情報がノードID312を持つノード3との通信を禁止するものであった場合は、情報端末1はS106においてノード3からデータを取得するための処理を中止する判断を行うことが考えられる。
続いて情報端末1は、ノード3との認証方法について秘密情報格納装置2に問い合わせる(S108)。問い合わせを受けた秘密情報格納装置2は、ノード管理テーブル212においてS105で確認したノードID2121に対応付けられた認証方法ID2122に関する情報を情報端末1に送付する(S109)。このとき、ノード管理テーブル212のノードID2121と認証方法ID2122に関する対応部分が情報端末1に配置されている場合は、S108とS109の処理を省略してもよい。このとき情報端末1は自身のノード管理テーブル212から認証方法ID2122に関する情報を取得することが考えられる。
S110ではノード3の認証鍵313と、秘密情報格納装置2の認証鍵2123とで、相互認証を行う。このとき、認証鍵2123はS105で確認したノードID2121に対応付けられたものを用いる。認証方法は、S105で確認したノードID2121に紐付いた認証方法ID2122について、これを認証方法テーブル213と照らし合わせて得られる認証方法2132を用いる。ノード3の認証鍵313と秘密情報格納装置2の相互認証は、情報端末1が必要な情報を仲介することによって行う。このときの仲介処理は、認証方法テーブル113において、S108とS109で取得した認証方法ID2122に対応する認証方法ID1131に紐付いた情報端末処理1132に基づく。また、図に示してはいないが、認証が成功したらS111に進み、失敗した場合はデータの取得を中止するのが望ましい。
続いて情報端末1は、ノード3から取得するデータの暗号方法について秘密情報格納装置2に問い合わせる(S111)。問い合わせを受けた秘密情報格納装置2は、ノード管理テーブル212においてS105で確認したノードID2121に対応付けられた暗号方法ID2124に関する情報を情報端末1に送付する(S112)。このとき、ノード管理テーブル212のノードID2121と暗号方法ID2124に関する対応部分が情報端末1に配置されている場合は、S111とS112の処理を省略してもよい。このとき情報端末1は自身のノード管理テーブル212から暗号方法ID2124に関する情報を取得することが考えられる。
続いて情報端末1の仲介により、ノード3は暗号鍵314によってデータ格納部316の情報を暗号化し、秘密情報格納装置2に送出する(S113)。このときの仲介処理は、暗号方法テーブル114において、S111とS112で取得した暗号方法ID2124に対応する暗号方法ID1141に紐付いた情報端末処理1142に基づく。また、このときノード3は、データ格納部316に格納した情報のうち、S113で送出した情報について、データ格納部316から削除するだとか、もしくは送出済みのフラグを付すなどして、未送出のデータと区別をつけるような処理を実施しても構わない。このような区別を付ける場合を含め、ノード3は、S113においてデータを送出する際、送出するデータを何らかの判断基準により選定する処理を実施しても構わない。また情報端末1は、秘密情報格納装置2に暗号化データを送付する際、合わせて格納する情報を秘密情報格納装置2に送付しても良い。例えば取得日時2163に格納する日時情報などが考えられる。
暗号化されたデータを受け取った秘密情報格納装置2は、暗号鍵2125によりデータの復号を行う(S114)。このとき、暗号鍵2125はS105で確認したノードID2121に対応付けられたものを用いる。暗号方法は、S105で確認したノードID2121に紐付いた暗号方法ID2124について、これを暗号方法テーブル214と照らし合わせて得られる暗号方法2142を用いる。
続いて秘密情報格納装置2は、S114で復号化したデータをデータ格納部216に格納する(S115)。このとき保管用暗号鍵2126で暗号化してから格納してもよい。復号化したデータは、S105で確認したノードID316をノードID2161に格納し、これに対応付けてデータ2164として格納する。また合わせてデータID2162と取得日時2163についても格納する。データID2162と取得日時2163に格納する情報は秘密情報格納部2において所定の方法で生成しても構わないし、S113などにおいて情報端末1から受け取ってもよい。
秘密情報格納装置2は、S114とS115が完了したことを情報端末1に通知してもよい。情報端末1への通知は、情報端末1から秘密情報格納装置2に定期的に問い合わせてもよいし、秘密情報格納通知2から情報端末1へのプッシュ通信でもよい。あるいはS113で情報端末1が秘密情報格納端末2に送出した要求に対する秘密情報格納端末2からの返答が、S114やS115が完了してから行われることで完了を通知してもかまわない。
図9は、情報端末1を経由し、図8のフローにおいて秘密情報格装置2に格納された暗号化データを、サーバ4に送付するまでの処理の一例を示している。
図9の処理は、一例として、情報端末1がサーバ4に接続したときに開始している(S201)。しかしこれはあくまでも一例であり、情報端末1がサーバ4に既に接続されているときなどは、図8のフローが完了してからS202以降の処理を開始してもよいし、入力部14からのユーザ操作を検知したときに開始してもよい。また、制御部12がバックグラウンド処理等で定期的に図9のフローを開始しても良い。また、前記以外の条件で図9のフローを開始しても問題なく、例えば制御部12が所定の判断を行うなどである。
S202では、情報端末1とサーバ4で、ネットワークの暗号通信路を確立するために相互認証を行う。サーバ4は、情報端末1が送付する情報端末ID112によって情報端末1を識別する。情報端末1は秘密情報格納装置2のサーバ認証鍵215を用い、また、サーバ4は情報端末ID112と対応する情報端末管理テーブル415の情報端末ID4151に紐付いた情報端末認証情報4152を用い、相互に認証を行う。相互に認証を行う方法はどのようなものであっても良いが、例えば、SSLを用いたサーバ認証やクライアント認証であることが考えられる。なお、サーバ認証鍵215が秘密情報格納装置2に配置されている場合は、相互認証を行う過程において情報端末1は適宜秘密情報格納装置2と必要な情報のやりとりを実施する。
続いて、情報端末1は、秘密情報格納装置2に対し暗号化データを要求する(S203)。これを受けた秘密情報格納装置2は、データ格納部216に格納されたデータを、保管用暗号鍵2126で暗号化し送出する(S204)。なおS115で既に暗号化を行っている場合はここでの暗号化は省略する。データ格納部216の情報を保管用暗号鍵2126で暗号化データとする一連の手順は、どのようなものであっても良いが、暗号化データの受け取り手であるサーバ4と予め取り決めた手順であることはもちろん、ノードID2161に対し、データID2162、取得日時2163、およびデータ2164の対応がわかるような形式とするのが望ましい。なお、秘密情報格納装置2から送出する情報を便宜的に暗号化データと呼称しているが、暗号化データに含まれる情報は、暗号化を施していない部分を含んでも構わない。例えば保管用暗号鍵2126で暗号化を施す情報は、データ格納部216に格納される情報の全体でもよいし、秘匿すべき一部の情報のみとし他は平文とするものでも良い。特に、保管用暗号鍵2126がノードID2121に個別に対応付いている場合、サーバ4で復号に使用すべき保管用暗号鍵4126を特定するため、少なくとも暗号化データは、平文で記されたノードID2121を含む必要があると考えられる。また、このとき秘密情報格納装置2は、データ格納部216に格納した情報のうち、S204で送出した情報について、データ格納部216から削除するだとか、もしくは送出済みのフラグを付すなどして、未送出のデータと区別をつけるような処理を実施しても構わない。このような区別を付ける場合を含め、秘密情報格納装置2は、S204においてデータを送出する際、送出するデータを何らかの判断基準により選定する処理を実施しても構わない。
暗号化データを受け取った情報端末1は、S202で確立した暗号通信路を通じ、これをサーバ4に送付する(S205)。暗号化データを受け取ったサーバ4は、所定の保管用暗号鍵4126で暗号化データを復号する(S206)。一例として示したように保管用暗号鍵4126がノードID4121に対応付いている場合は、暗号化データに含まれるノードID2121の情報に基づいて保管用暗号鍵4126を選択し、これを用いて復号を行う。別の例として示したように保管用暗号鍵4126がノードID4121に対応付いていない場合はこの限りではなく、所定の保管用暗号鍵4126を用いて復号すればよい。
続いてサーバ4は、復号したデータをデータ格納部416に格納する(S207)。このとき格納が完了したことを情報端末1に通知してもよい。情報端末1への通知は、情報端末1からサーバ4に定期的に問い合わせてもよいし、サーバ4から情報端末1へのプッシュ通信でもよい。あるいはS205で情報端末1がサーバ4に送出した要求に対するサーバ4からの返答が、S207まで完了してから行われることで完了を通知してもかまわない。
図10は、情報端末1を経由し、秘密情報格納装置2のノード管理テーブル212等を、サーバ4のノード管理テーブル412から作成したテーブル更新情報によって更新する処理の一例を示している。
処理は、一例として、図8で例示したフローにおいてS107に分岐したことをきっかけとして開始する(図10のS107)。もしくは、情報端末1がサーバ4に接続したことをきっかけとして開始しても良いし、入力部14からのユーザ操作の検知をきっかけとして開始してもよい。もしくはこれ以外のきっかけでフローを開始しても問題なく、例えば制御部12が所定の判断を行う。
続いてS301において、情報端末1とサーバ4で、ネットワークの暗号通信路を確立するために相互認証を行う。S202と同様であるため、詳細の説明は省略する。なお図に示してはいないが、S301において情報端末1がサーバ4に接続できない場合も考えられる。例えば情報端末1とサーバ4が無線や有線によるネットワーク通信によって接続されている場合、何らかの理由で通信が断絶している場合もありうる。このときは、一旦フローを中断し、情報端末1とサーバ4が通信可能になった際にフローを再開するといった処理を行ってもよい。
続いて、情報端末1は、S301で確立した暗号通信路を通じ、ノード3のノードID312をサーバ4に送付し、該当するノード3をサーバ4が管理しているかどうかを問い合わせる(S302)。問い合わせを受け取ったサーバ4は、ノード管理テーブル412のノードID4121に、ノードID312に対応するものが存在するかどうかを判断し、存在するかどうかの判断を含む情報を、情報端末1に送付する(S303)。ノードID312に対する判断を受け取った情報端末1は、ノードID312に関する情報がサーバ4に存在する場合はS305に処理を分岐し、存在しない場合は、ノード3はM2Mシステムに存在しない未知のノードであると判断し、フローを終了する(S304)。
続くS305では、情報端末1は、S301で確立した暗号通信路を通じ、ノード3のノードID312を含むノード管理テーブル212のテーブル更新情報を、サーバ4に要求する。これを受けたサーバ4は、ノード管理テーブル412に基づいて作成したテーブル更新情報を、テーブル更新鍵417で暗号化し、情報端末1に送出する(S306)。テーブル更新情報はノードID312に対応したノードID4121に対応付いた情報である認証方法ID4122、認証鍵4123、暗号方法ID4124、通信路暗号鍵4125、および保管用暗号鍵4126を含むのが望ましく、また、それ以外の情報を含んでもよい。例えば他のノード3に関する情報を含んでも良い。ノード管理テーブル412の情報をテーブル更新鍵417で暗号化しテーブル更新情報とする一連の手順は、どのようなものであっても良いが、テーブル更新情報の受け取り手である秘密情報格納装置2と予め取り決めた手順である必要がある。
テーブル更新情報を受信した情報端末1は、これを秘密情報格納装置2に送信し、テーブルを更新するよう要求する(S307)。これを受信した秘密情報格納装置2は、テーブル更新情報をテーブル更新鍵217で復号化し、ノード管理テーブル212を更新する(S308)。このとき更新が完了したことを情報端末1に通知してもよい。情報端末1への通知は、情報端末1から秘密情報格納装置2に定期的に問い合わせてもよいし、秘密情報格納装置2へのプッシュ通信でもよい。あるいはS307で情報端末1が秘密情報格納装置2に送出した要求に対する秘密情報格納装置2からの返答が、S308まで完了してから行われることで完了を通知してもかまわない。
更新が完了したら、情報端末1は図8のS108から先のフローを実施する(S309)。
テーブル更新情報は、認証方法テーブル413や暗号方法テーブル414の内容およびそれらに対応する認証方法の手続きや、暗号方法の手続きの内容を含んでもよい。これらを更新する場合は、情報端末1の認証方法テーブル113と暗号方法テーブル114の内容も合わせて更新するのが望ましい。この場合は手続きの更新を含むことから、例えば、制御アプリ211や制御アプリ111等のバージョンアップなど、機能追加に相当する処理であることが考えられる。
フローに詳細を記してはいないが、情報端末1が、ノード3と秘密情報格納装置2の処理の仲介や、サーバ4と秘密情報格納装置2の仲介を行っている場合において、何らかのエラーが発生した場合は、その旨を、ノード3、サーバ4、もしくは秘密情報格納装置2に通知しても構わない。
またフローに詳細を記してはいないが、制御ソフト111は、必要に応じて、そのとき行っている処理を表示部15によって適宜ユーザに通知しても構わない。特に一連の処理の完了や分岐においては、その旨を表示部15によってユーザに通知するのが望ましいし、入力部16と組み合わせて分岐の判断をユーザに問い合わせても構わない。
また、フローでは各ステップ間の情報のやり取りを双方向の矢印で示しているが、実際には、コマンドに対するレスポンスのペアを成していると考えられる。また、各ステップ間の情報のやり取りを一組の双方向矢印で示している場合であっても、その中に複数のコマンド・レスポンスを含んでいても何ら問題ない。
なお、本発明は上記した各実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した各実施例は本発明を分かりやすく説明するために詳細に説明されたものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。なお、図11に示すように、各機能を実現するプログラム等をサーバ等に複製し、情報端末1、およびその他の端末、装置、機器等に有線または無線の通信回線等を介して提供するようにしても良い。この場合、ユーザは、端末等を操作して、サーバ等から必要なプログラム等をダウンロードし、端末等の記憶部にインストールさせることができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。