(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022117208
(43)【公開日】2022-08-10
(54)【発明の名称】通信装置及び通信システム
(51)【国際特許分類】
G06F 21/60 20130101AFI20220803BHJP
H04L 9/08 20060101ALI20220803BHJP
【FI】
G06F21/60 360
H04L9/00 601D
H04L9/00 601E
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2021013786
(22)【出願日】2021-01-29
(71)【出願人】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100088672
【弁理士】
【氏名又は名称】吉竹 英俊
(74)【代理人】
【識別番号】100088845
【弁理士】
【氏名又は名称】有田 貴弘
(72)【発明者】
【氏名】押切 崇
(57)【要約】
【課題】通信装置の安全性を向上することが可能な技術を提供する。
【解決手段】通信装置は、第1の鍵で暗号化されたデータが伝送される信号線と、通信部と、監視部とを備える。通信部は、信号線で伝送されるデータが入力され、入力されたデータを通信装置の外部に送信する。監視部は、信号線を監視し、信号線で伝送されるデータが第1の鍵で暗号化されているか否かを監視する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
通信装置であって、
第1の鍵で暗号化されたデータが伝送される信号線と、
前記信号線で伝送されるデータが入力され、入力されたデータを前記通信装置の外部に送信する通信部と、
前記信号線を監視し、前記信号線で伝送されるデータが前記第1の鍵で暗号化されているか否かを監視する監視部と
を備える、通信装置。
【請求項2】
請求項1に記載の通信装置であって、
前記第1の鍵でデータを暗号化して出力する暗号処理部をさらに備え、
前記信号線は、前記暗号処理部から出力されるデータを伝送する、通信装置。
【請求項3】
請求項2に記載の通信装置であって、
前記監視部は、
前記第1の鍵の使用条件を記憶し、
前記信号線を監視して前記使用条件が満たされているか否かを監視する、通信装置。
【請求項4】
請求項2に記載の通信装置であって、
前記暗号処理部は、第2の鍵でデータを暗号化して出力し、
前記監視部は、
前記信号線を監視して、前記信号線で伝送される、前記第1の鍵で暗号化されているべきデータが前記第1の鍵で暗号化されているか否かを監視し、
前記信号線を監視して、前記信号線で伝送される、前記第2の鍵で暗号化されているべきデータが前記第2の鍵で暗号化されているか否かを監視する、通信装置。
【請求項5】
請求項4に記載の通信装置であって、
前記監視部は、前記第1の鍵の第1使用条件と、前記第2の鍵の第2使用条件とを記憶し、
前記監視部は、
前記信号線を監視して前記第1使用条件が満たされているか否かを監視し、
前記信号線を監視して前記第2使用条件が満たされているか否かを監視する、通信装置。
【請求項6】
請求項2から請求項5のいずれか一つに記載の通信装置であって、
前記通信部は、サーバからシードデータを受信し、
前記監視部は、前記シードデータに基づいて前記第1の鍵を生成し、
前記暗号処理部は、前記監視部で生成された前記第1の鍵でデータを暗号化する、通信装置。
【請求項7】
請求項2から請求項5のいずれか一つに記載の通信装置であって、
前記監視部は、時刻情報に基づいて前記第1の鍵を生成し、
前記暗号処理部は、前記監視部で生成された前記第1の鍵でデータを暗号化する、通信装置。
【請求項8】
請求項2から請求項7のいずれか一つに記載の通信装置であって、
前記監視部は、監視結果の履歴を示す履歴データを生成し、
前記通信部は、前記履歴データをサーバに送信する、通信装置。
【請求項9】
請求項2から請求項7のいずれか一つに記載の通信装置であって、
前記信号線で前記通信部と接続され、前記通信部を制御する制御部を備え、
前記監視部は、監視結果の履歴を示す履歴データを生成し、生成した前記履歴データを第3の鍵で暗号化して前記制御部に入力し、
前記制御部は、前記監視部から入力されるデータを出力し、
前記信号線は、前記制御部から出力されるデータを伝送し、
前記監視部は、
前記信号線を監視し、前記信号線で伝送される、前記第1の鍵で暗号化されているべきデータが前記第1の鍵で暗号化されているか否かを監視し、
前記信号線を監視し、前記信号線で伝送される、前記第3の鍵で暗号化されているべきデータが前記第3の鍵で暗号化されているか否かを監視する、通信装置。
【請求項10】
請求項1から請求項9のいずれか一つに記載の通信装置であって、
前記通信部は、前記第1の鍵で暗号化されたデータを受信し、
前記信号線は、前記通信部で受信された受信データを伝送し、
前記監視部は、前記信号線で伝送される前記受信データが前記第1の鍵で暗号化されているか否かを監視する、通信装置。
【請求項11】
請求項6に記載の通信装置と、
前記シードデータを前記通信装置に送信するサーバと
を備える、通信システム。
【請求項12】
請求項8または請求項9に記載の通信装置と、
前記通信装置が送信する前記履歴データを受信するサーバと
を備える、通信システム。
【請求項13】
請求項12に記載の通信システムであって、
前記サーバは、受信した前記履歴データに基づいて前記通信装置を制御する、通信システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、通信技術に関する。
【背景技術】
【0002】
特許文献1には、暗号化通信に関する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
通信装置の安全性を向上させることは望ましい。
【0005】
そこで、本開示は上述の点に鑑みて成されたものであり、通信装置の安全性を向上させることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
通信装置の一態様は、第1の鍵で暗号化されたデータが伝送される信号線と、通信部と、監視部とを備える。通信部は、信号線で伝送されるデータが入力され、入力されたデータを通信装置の外部に送信する。監視部は、信号線を監視し、信号線で伝送されるデータが第1の鍵で暗号化されているか否かを監視する。
【発明の効果】
【0007】
通信装置の安全性を向上することができる。
【図面の簡単な説明】
【0008】
【
図5】IoT機器の制御部が備える機能ブロックの一例を示す図である。
【
図6】パケットの送信動作の一例を示すフローチャートである。
【
図7】パケットの受信動作の一例を示すフローチャートである。
【
図8】通信システムの動作の一例を示すフローチャートである。
【
図10】通信システムの動作の一例を示す図である。
【
図11】通信システムの動作の一例を示す図である。
【
図12】監視部の動作の一例を示すフローチャートである。
【
図13】通信システムの動作の一例を示す図である。
【
図14】セッション鍵使用条件の一例を示す図である。
【
図15】通信システムの動作の一例を示す図である。
【
図16】通信システムの動作の一例を示す図である。
【発明を実施するための形態】
【0009】
<システム概要>
図1は通信システム1の構成の一例を示す図である。
図1に示されるように、通信システム1は、例えば、サーバ2と、複数の通信装置3と、サーバ2及び複数の通信装置3が接続された通信ネットワーク10とを備える。各通信装置3は、通信ネットワーク10(単にネットワーク10ともいう)を通じて、サーバ2と通信可能である。各通信装置3は、ネットワーク10を通じて、他の通信装置3と通信可能である。
【0010】
通信システム1では、例えば、E2EE(end-to-end encryption)通信が行われる。E2EE通信とは、コンピュータネットワークの末端に位置する複数の通信装置が、当該複数の通信装置のみが知る暗号鍵を用いて互いに行う暗号化通信である。本例では、通信装置3が、サーバ2、通信装置3及びネットワーク10を含むコンピュータネットワークの末端に位置する通信装置である。本例では、複数の通信装置3の間においてE2EE通信が行われる。
【0011】
ネットワーク10には、無線ネットワーク及び有線ネットワークの少なくとも一方が含まれる。本例では、ネットワーク10には、例えばインターネットが含まれる。ネットワーク10には、無線LAN(Local Area Network)が含まれてもよいし、基地局等を含む、携帯電話システムのネットワークが含まれてもよい。
【0012】
サーバ2は、一種のコンピュータ装置であって、例えばクラウドサーバである。サーバ2は、例えば、通信装置3で使用される暗号鍵の種となるシードデータの通信装置3に対する発行を制御することが可能である。サーバ2は、KMS(Key Management Server)ともいう。また、サーバ2は、例えば、通信装置3を制御することによって、通信装置3のハッキングに対する安全性を向上することができる。サーバ2は、例えば、通信装置3と暗号化通信を行う。
【0013】
複数の通信装置3には、例えば、IoT機器4及びユーザ機器5が含まれる。IoTはInternet of Thingsの略語である。
図1には、IoT機器4及びユーザ機器5がそれぞれ1つ示されているが、複数の通信装置3には、例えば、複数のIoT機器4と複数のユーザ機器5とが含まれる。以後、説明対象の一のIoT機器4(言い換えれば、注目する一のIoT機器4)を対象IoT機器4ともいう。また、説明の対象の一のユーザ機器5(言い換えれば、注目する一のユーザ機器5)を対象ユーザ機器5ともいう。
【0014】
IoT機器4(IoT端末ともいう)とユーザ機器5(ユーザ端末ともいう)とは、例えばE2EE通信を行う。IoT機器4は、例えば、家、オフィス、工場あるいは屋外などで使用される。IoT機器4は、例えば、センサを有し、当該センサが検出した情報をユーザ機器5等に送信することが可能である。
【0015】
ユーザ機器5は、例えば、IoT機器4よりも操作性に富んだ機器である。ユーザ機器5は、IoT機器4よりも、ユーザから多様な入力を受け付けることができる。また、ユーザ機器5は、例えば、IoT機器4よりも高度な処理を行うことができる。ユーザ機器5は、例えば、スマートフォン等の携帯電話機であってもよいし、タブレット端末であってもよいし、パーソナルコンピュータであってもよいし、ウェアラブル機器であってもよい。
【0016】
なお、通信システム1はサーバ2以外のサーバを備えてもよいし、複数の通信装置3には、IoT機器4及びユーザ機器5以外の装置が含まれてもよい。
【0017】
<サーバの構成例>
図2はサーバ2の構成の一例を示す図である。
図2に示されるように、サーバ2は、例えば、制御部20と、ネットワーク10に接続された通信部21と、表示部22と、入力部23と、乱数生成器24とを備える。
【0018】
表示部22は、例えば、液晶ディスプレイであってもよいし、有機ELディスプレイであってもよいし、他のディルプレイであってもよい。表示部22は、制御部20によって制御されることによって、文字、記号、図形などの各種情報を表示することが可能である。
【0019】
入力部23は、ユーザからのサーバ2に対する入力を受け付けることが可能である。入力部23は、例えば、タッチパネルを備えてもよいし、マウスを備えてもよいし、キーボードを備えてもよい。入力部23は、受け付けた入力を制御部20に通知する。
【0020】
乱数生成器24は、例えば、IoT機器4とユーザ機器5との間のE2EE通信で使用される後述のセッション鍵の生成で使用される乱数を生成する。乱数生成器24は、真正乱数を生成してもよいし、疑似乱数を生成してもよい。乱数生成器24は乱数生成回路とも言える。乱数生成器24は、生成した乱数を制御部20に入力する。乱数生成器24は、例えば、乱数を出力するたびに、異なる乱数を出力する。
【0021】
制御部20は、サーバ2の他の構成要素を制御することによって、サーバ2の動作を統括的に管理することが可能である。制御部20は制御回路であるとも言える。制御部20は、例えば、MCU(Micro Controller Unit)であって、プロセッサ200と記憶部210とを備える。プロセッサ200は、例えば、CPU(Central Processing Unit)であってもよいし、他のプロセッサであってもよい。
【0022】
記憶部210は、ROM(Read Only Memory)及びRAM(Random Access Memory)などの、コンピュータが読み取り可能な非一時的な記録媒体を含む。記憶部210は記憶回路ともいえる。記憶部210には、サーバ2を制御するためのプログラム211が記憶されている。制御部20の各種機能は、プロセッサ200が記憶部210内のプログラム211を実行することによって実現される。記憶部210は、サーバ2がIoT機器4との暗号化通信で使用するサービス鍵SAKsを予め記憶している。サービス鍵SAKsは暗号鍵の一種である。サービス鍵SAKsは、例えば、各IoT機器4に個別に設けられている。記憶部210は、サーバ2がユーザ機器5との暗号化通信で使用する暗号鍵(ユーザ機器用暗号鍵ともいう)も記憶している。ユーザ機器用暗号鍵は、各ユーザ機器5に個別に設けられている。
【0023】
記憶部210には初期鍵テーブル215が記憶されている。初期鍵テーブル215には、ユーザ機器5とIoT機器4との間の通信の初期設定(単に初期設定ともいう)のときに使用される初期鍵が含まれる。初期鍵は、暗号鍵の一種であって、ユーザ機器5とIoT機器4との間の初期の暗号化通信のときに使用される。ここで、各IoT機器4には固有の識別情報が割り当てられている。この識別情報は、UID(Unique Identification)とも呼ばれる。初期鍵テーブル215では、各識別情報と、当該識別情報が割り当てられたIoT機器4との初期の暗号化通信で使用される初期鍵とが対応付けられている。初期鍵は、例えば、各IoT機器4に対して個別に設けられている。
【0024】
記憶部210には、現在時刻を示す時刻情報218が記憶されている。制御部20は、例えば、通信部21を通じて、ネットワーク10に接続されているNTP(Network Time Protocol)サーバから最新の時刻情報を取得する。そして、制御部20は、取得した時刻情報を時刻情報218として記憶する。その後、制御部20は、時刻情報218が常に現在時刻を示すように、自身が有するタイマ等を用いて時刻情報218を更新する。制御部20は、例えば、NTPサーバから定期的に時刻情報を取得して、記憶部210内の時刻情報218を更新する。なお、サーバ2が例えばGPS(Global Positioning System)受信機を備える場合、当該GPS受信機から出力される時刻情報が時刻情報218として使用されてもよい。
【0025】
通信部21は、有線あるいは無線でネットワーク10に接続されている。通信部21は通信回路ともいえる。通信部21は、ネットワーク10を通じて、ネットワーク10に接続された、通信装置3等の装置と通信することが可能である。通信部21は、ネットワーク10から受信した受信データを制御部20に入力することが可能である。また通信部21は、制御部20から入力された送信データをネットワーク10に出力することが可能である。
【0026】
なお、サーバ2の構成は
図2の例に限られない。例えば、制御部20は、複数のプロセッサ200を備えてもよい。この場合、制御部20は、例えば、少なくとも一つのDSP(Digital Signal Processor)を備えてもよい。また、制御部20の全ての機能あるいは制御部20の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また記憶部210は、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。記憶部210は、例えば、小型のハードディスクドライブ及びSSD(Solid State Drive)などを備えてもよい。またサーバ2は、制御部20、通信部21、表示部22、入力部23及び乱数生成器24以外の構成を備えてもよいし、表示部22を備えなくてもよい。
【0027】
<ユーザ機器の構成例>
図3はユーザ機器5の構成の一例を示す図である。
図3に示されるように、ユーザ機器5は、例えば、制御部50と、ネットワーク10に接続された通信部51と、表示部52と、入力部53とを備える。ユーザ機器5は、一種のコンピュータ装置であるといえる。
【0028】
表示部52は、例えば、液晶ディスプレイであってもよいし、有機ELディスプレイであってもよいし、他のディスプレイであってもよい。表示部52は、制御部50によって制御されることによって、文字、記号、図形などの各種情報を表示することが可能である。
【0029】
入力部53は、ユーザからのユーザ機器5に対する入力を受け付けることが可能である。入力部53は、例えば、タッチパネルを備えてもよいし、マウスを備えてもよいし、キーボードを備えてもよい。また、入力部23は、ユーザからの音声入力を受け付けるマイクを備えてもよいし、ユーザからのジェスチャー入力を受け付けるセンサを備えてもよい。入力部53は、受け付けた入力を制御部50に通知する。
【0030】
制御部50は、ユーザ機器5の他の構成要素を制御することによって、ユーザ機器5の動作を統括的に管理することが可能である。制御部50は制御回路であるとも言える。制御部50は、例えば、MCU(Micro Controller Unit)であって、プロセッサ500と記憶部510とを備える。プロセッサ500は、例えば、CPUであってもよいし、他のプロセッサであってもよい。
【0031】
記憶部510は、ROM及びRAMなどの、コンピュータが読み取り可能な非一時的な記録媒体を含む。記憶部510は記憶回路ともいえる。記憶部510には、ユーザ機器5を制御するためのプログラム511が記憶されている。制御部50の各種機能は、プロセッサ500が記憶部510内のプログラム511を実行することによって実現される。
【0032】
記憶部510は、ユーザ機器5がIoT機器4と暗号化通信するときに使用する初期鍵IKu及びセッション鍵SEKuを記憶する。初期鍵IKuは、サーバ2が記憶する初期鍵テーブル215に含まれる複数の初期鍵のいずれか一つと一致する。ユーザ機器5が対象IoT機器4と通信する場合、後述するように、サーバ2は、初期鍵テーブル215に含まれる、対象IoT機器4に対応する初期鍵をユーザ機器5に送信する。ユーザ機器5は、サーバ2から受信した初期鍵を、対象IoT機器4に対応する初期鍵IKuとして記憶部510に記憶する。セッション鍵SEKuは、初期設定後においてユーザ機器5がIoT機器4との暗号化通信で使用する暗号鍵である。後述するように、ユーザ機器5はセッション鍵SEKuを生成して記憶部510に記憶する。セッション鍵SEKuは適宜更新される。
【0033】
また、記憶部510は、セッション鍵SEKuの生成で使用されるE2EE暗号鍵EKuを記憶する。後述するように、ユーザ機器5は、E2EE暗号鍵EKuを生成して記憶部510に記憶する。そして、ユーザ機器5は、生成したE2EE暗号鍵EKuに基づいてセッション鍵SEKuを生成する。E2EE暗号鍵EKuは、セッション鍵SEKuの元になる暗号鍵である。また、記憶部510は、ユーザ機器5がサーバ2との暗号化通信で使用する暗号鍵(サーバ用暗号鍵ともいう)を記憶している。対象ユーザ機器5が記憶するサーバ用暗号鍵は、サーバ2が記憶する、対象ユーザ機器5に対応するユーザ機器用暗号鍵と一致する。
【0034】
記憶部510は、現在の時刻を示す時刻情報518を記憶している。時刻情報518は、サーバ2が記憶する時刻情報218と同期している。制御部50は、例えば、通信部51を通じて、サーバ2から時刻情報218を取得する。そして、制御部50は、取得した時刻情報218を時刻情報518として記憶する。その後、制御部50は、時刻情報518が常に現在時刻を示すように、自身が有するタイマ等を用いて時刻情報518を更新する。これにより、ユーザ機器5での時刻情報518が、サーバ2での時刻情報218と同期する。制御部50は、例えば、サーバ2から定期的に時刻情報218を取得して記憶部510内の時刻情報518を更新する。なお、ユーザ機器5が例えばGPS受信機を備える場合、当該GPS受信機から出力される時刻情報が時刻情報518として使用されてもよい。
【0035】
通信部51は、有線あるいは無線でネットワーク10に接続されている。通信部51は通信回路ともいえる。通信部51は、ネットワーク10を通じて、ネットワーク10に接続されたIoT機器4及びサーバ2等と通信することが可能である。通信部51は、受信したデータを制御部50に入力することが可能である。また通信部51は、制御部50から入力された送信データを送信することが可能である。
【0036】
また、通信部51は、IoT機器4と直接通信することができる。通信部51は、例えば、IoT機器4と近距離無線通信を行うことができる。通信部51は、例えば、Wi-Fi Directに準拠してIoT機器4と直接無線通信することができる。通信部51は、Bluetooth(登録商標)に準拠してもよいし、ZigBee(登録商標)に準拠してもよいし、NFC(Near Field Communication)に準拠してもよい。また、通信部51は、例えば、Wi-Fiのアドホックモードに準拠してよい。また、通信部51は、IoT機器4と有線で接続されて、IoT機器4と有線通信を行ってもよい。この場合、通信部51は、USB(Universal Serial Bus)に準拠してもよい。
【0037】
なお、ユーザ機器5の構成は
図3の例には限られない。例えば、制御部50は、複数のプロセッサ500を備えてもよい。この場合、制御部50は、例えば、少なくとも一つのDSPを備えてもよい。また、制御部50の全ての機能あるいは制御部50の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また記憶部510は、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。記憶部510は、例えば、小型のハードディスクドライブ及びSSDなどを備えてもよい。またユーザ機器5は、制御部50、通信部51、表示部52及び入力部53以外の構成を備えてもよいし、表示部52を備えなくてもよい。
【0038】
<IoT機器の構成例>
図4はIoT機器4の構成の一例を示す図である。
図4に示されるように、IoT機器4は、例えば、制御部40と、ネットワーク10に接続された通信部41と、ユーザが操作するリセットボタン42と、センサ装置43と、監視部45とを備える。IoT機器4は、一種のコンピュータ装置であるといえる。本例では、IoT機器4の主な機能は、例えば、センサ装置43で情報を検出し、検出した情報に対して所定の処理を行い、処理後の情報を外部に送信することである。IoT機器4の主な機能は、例えば、制御部40、通信部41及びセンサ装置43によって実現される。IoT機器4の主な機能は、これに限られず、他の機能であってもよい。
【0039】
制御部40は、通信部41及びセンサ装置43を制御して、IoT機器4の主な機能を制御することが可能である。制御部40は制御回路であるとも言える。制御部40は、例えば、MCU(Micro Controller Unit)であって、プロセッサ400及び記憶部410を備える。プロセッサ400は、例えば、CPUであってもよいし、他のプロセッサであってもよい。
【0040】
記憶部410は、ROM及びRAMなどの、コンピュータが読み取り可能な非一時的な記録媒体を含む。記憶部410は記憶回路ともいえる。記憶部410にはプログラム411が記憶されている。プログラム411には、制御部40が通信部41を制御するためのドライバなどが含まれている。制御部40の各種機能は、プロセッサ400が記憶部410内のプログラム411を実行することによって実現される。また、記憶部410は、IoT機器4がユーザ機器5と暗号化通信するときに使用するセッション鍵SEKiを記憶する。セッション鍵SEKiは、後述するように監視部45で生成され、監視部45から制御部40に入力される。
【0041】
プロセッサ400が記憶部410内のプログラム411を実行することによって、
図5に示されるように、制御部40には機能ブロックとして例えば暗号処理部420が構成される。暗号処理部420は、通信部41が送信する対象のデータを暗号化することができる。また、暗号処理部420は、通信部41が受信した暗号化データを復号化することができる。記憶部410内のセッション鍵SEKiは暗号処理部420で使用される。
【0042】
通信部41は、有線あるいは無線でネットワーク10に接続されている。通信部41は通信回路ともいえる。通信部41は、ネットワーク10を通じて、ネットワーク10に接続されたユーザ機器5及びサーバ2等と通信することが可能である。
【0043】
また、通信部41は、ユーザ機器5の通信部51と直接通信することができる。通信部41は、例えば、通信部51と近距離無線通信を行うことができる。通信部41は、例えば、Wi-Fi Directに準拠して通信部51と直接無線通信することができる。通信部41は、Bluetooth(登録商標)に準拠してもよいし、ZigBee(登録商標)に準拠してもよいし、NFC(Near Field Communication)に準拠してもよい。また、通信部41は、例えば、Wi-Fiのアドホックモードに準拠してよい。また、通信部41は、通信部51と有線で接続されて、通信部51と有線通信を行ってもよい。この場合、通信部41はUSBに準拠してもよい。
【0044】
通信部41と制御部40は、例えば信号線140で接続されている。通信部41は、信号線140を通じて制御部40と通信することができる。信号線140は通信線ともいえる。通信部41は、IoT機器4の外部から受信した受信データを信号線140に出力する。信号線140を伝搬する受信データは制御部40に入力される。また、制御部40は送信データを信号線140に入力する。信号線140を伝搬する送信データは通信部41に入力される。通信部41は、入力された送信データをIoT機器4の外部に送信する。
【0045】
通信部41と制御部40は、例えば、UART(Universal Asynchronous Receiver/Transmitter)、SPI(Serial Peripheral Interface)あるいはI2C(Inter-Integrated Circuit)に基づいて互いに通信することが可能である。通信部41と制御部40との間の通信方式はこれに限られない。
【0046】
通信部41は、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)などを含むプロトコルスタックが実装されたソフトウェアを記憶している。また、通信部41は、CPU等のプロセッサを備えている。通信部41では、プロセッサが、プロトコルスタックが実装されたソフトウェアを実行することによって、制御部40との通信機能、ネットワーク10との通信機能及びユーザ機器5との直接通信の機能が実現される。
【0047】
なお、ユーザ機器5において制御部50及び通信部51は、IoT機器4での制御部40及び通信部41の接続と同様に接続されてもよい。また、通信部51は通信部41と同様に構成されてもよい。
【0048】
リセットボタン42は、ユーザが操作できるように、IoT機器4の外装ケース(ハウジングともいう)から露出するように、当該IoT機器4に設けられている。リセットボタン42が操作(例えば押圧操作)されると、IoT機器4が備える各種回路に入力されるリセット信号がアサートされる。これにより、IoT機器4の動作が初期化される。
【0049】
センサ装置43は、例えば少なくとも一つのセンサを備える。センサ装置43は、例えば、カメラ等を備える画像センサを備えてもよい。また、センサ装置43は、気象観測センサを備えてもよい。また、センサ装置43は、例えば、温度センサ、加速度センサ、地磁気センサ、ジャイロセンサ及び圧力センサの少なくとも一つを備えてもよい。センサ装置43は、検出した情報を示すデータ(例えば、カメラの視野内の情報を示す画像データ等)を制御部40に入力する。以後、センサ装置43が出力するデータをセンサデータともいう。
【0050】
制御部40は、センサ装置43から入力されたセンサデータを記憶部410に記憶する。制御部40は、記憶部410からセンサデータを読み出して、読み出したセンサデータに対して、例えば、フィルタ処理等を含む加工処理を行う。制御部40は、加工処理後のセンサデータを、処理済みセンサデータとして記憶部410に記憶する。後述のように、記憶部410内の処理済みセンサデータは、通信部41から、ネットワーク10を通じて例えばユーザ機器5に送信される。
【0051】
監視部45は、信号線140を監視して、信号線140で伝送されるデータが暗号化されているか否かを監視する。監視部45は監視回路ともいえる。監視部45は、信号線141を通じて信号線140と接続されている。監視部45は、信号線141を通じて信号線140を監視することが可能である。信号線140で伝送されるデータは、信号線141を通じて監視部45に入力される。また、監視部45は、IoT機器4で使用される暗号鍵を管理する。
【0052】
監視部45は、例えば、プロセッサ450及び記憶部460を備える。プロセッサ450は、例えば、CPUであってもよいし、他のプロセッサであってもよい。記憶部460は、ROM及びRAMなどの、コンピュータが読み取り可能な非一時的な記録媒体を含む。記憶部460は記憶回路ともいえる。記憶部460にはプログラム461が記憶されている。監視部45の各種機能は、プロセッサ450が記憶部460内のプログラム461を実行することによって実現される。
【0053】
記憶部460は、初期鍵IKi、E2EE暗号鍵EKi、セッション鍵SEKi及びサービス鍵SAKiを記憶する。初期鍵IKi及びサービス鍵SAKiは記憶部460に予め記憶されている。対象IoT機器4の記憶部460が記憶する初期鍵IKiは、対象IoT機器4が通信するユーザ機器5が記憶する初期鍵IKuと一致する。対象IoT機器4の記憶部460が記憶するサービス鍵SAKiは、サーバ2が記憶する、対象IoT機器4に対応するサービス鍵SAKsと一致する。対象IoT機器4の記憶部460が記憶するE2EE暗号鍵EKiは、対象IoT機器4が通信するユーザ機器5が記憶するE2EE暗号鍵EKuと一致する。後述するように、ユーザ機器5は、生成したE2EE暗号鍵EKuをIoT機器4に送信し、IoT機器4で受信されたE2EE暗号鍵EKuがE2EE暗号鍵EKiとして記憶部460に記憶される。監視部45は、E2EE暗号鍵EKiに基づいてセッション鍵SEKiを生成して記憶部460に記憶する。また、監視部45は、記憶部460内のセッション鍵SEKiを制御部40に入力する。暗号処理部420は、制御部40に入力されたセッション鍵SEKiを用いて、データを暗号化したり、復号化したりする。セッション鍵SEKiは適宜更新される。
【0054】
対象IoT機器4が備える記憶部460は、対象IoT機器4に固有の識別情報465を記憶している。また、記憶部460は、監視部45での信号線140の監視結果の履歴を示す履歴データ466を記憶している。履歴データ466は順次更新される。また、記憶部460は、現在の時刻を示す時刻情報468を記憶している。時刻情報468は、サーバ2が記憶する時刻情報218と、ユーザ機器5が記憶する時刻情報518と同期している。後述するように、IoT機器4は、ユーザ機器5から時刻情報518を取得する。そして、IoT機器4は、取得した時刻情報518を時刻情報468として記憶する。その後、IoT機器4は、時刻情報468が常に現在時刻を示すように、自身が有するタイマ等を用いて時刻情報468を更新する。
【0055】
制御部40、通信部41及び監視部45からなる回路は、例えば、一つのダイ(ウェハチップともいう)で構成されてもよい。また、制御部40、通信部41及び監視部45からなる回路は、複数のダイで構成されてもよい。この場合、当該複数のダイは、樹脂等から成る一つのパッケージに収容されてもよいし、複数のパッケージに分けて収容されてもよい。
【0056】
なお、IoT機器4の構成は
図4の例には限られない。例えば、制御部40は、複数のプロセッサ400を備えてもよい。この場合、制御部40は、例えば、少なくとも一つのDSPを備えてもよい。また、制御部40の全ての機能あるいは制御部50の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また記憶部410は、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。記憶部410は、例えば、小型のハードディスクドライブ及びSSDなどを備えてもよい。また、監視部45は複数のプロセッサ450を備えてもよい。また、監視部45の全ての機能あるいは監視部45の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また記憶部460は、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。またIoT機器4は、制御部40、通信部41、リセットボタン42、センサ装置43及び監視部45以外の構成を備えてもよいし、リセットボタン42を備えなくてもよい。
【0057】
<送信動作及び受信動作の一例>
図6は、サーバ、ユーザ機器及びIoT機器の基本的な送信動作の一例を示すフローチャートである。
図7は、サーバ、ユーザ機器及びIoT機器の基本的な受信動作の一例を示すフローチャートである。以下に、
図6及び7を用いて、サーバ2、ユーザ機器5及びIoT機器4の基本的な送信動作及び受信動作について説明する。
【0058】
<サーバの送信動作の一例>
サーバ2が対象IoT機器4にデータを送信する場合、制御部20は、対象IoT機器4宛てのメッセージを準備する(
図6のステップs101)。また、受信側での改ざん検知が可能となるように、制御部20は、例えばメッセージからチェックサムを生成する(ステップs102)。そして、制御部20は、対象IoT機器4宛てのメッセージと、それから生成したチェックサムとを、記憶部210内における、対象IoT機器4に対応するサービス鍵SAKsで暗号化する(ステップs103)。以後、メッセージと、それから生成されたチェックサムとをまとめてチェックサム付きメッセージと呼ぶことがある。
【0059】
次に、制御部20は、暗号化されたチェックサム付きメッセージとヘッダとを含むパケットを生成する(ステップs104)。そして、制御部20は、通信部21に、生成したパケットを対象IoT機器4に対して送信させる(ステップs105)。制御部20は、IoT機器4宛てのメッセージを秘匿する必要がなく暗号化する必要が無い場合、IoT機器4宛ての平文のチェックサム付きメッセージとヘッダとを含むパケットを通信部21に送信させる。サーバ2は、IoT機器4に対して、暗号化されたチェックサム付きメッセージを送信したり、平文チェックサム付きメッセージを送信したりする。
【0060】
サーバ2が対象ユーザ機器5にデータを送信する場合、制御部20は、対象ユーザ機器5宛てのメッセージを準備する(ステップs101)。対象ユーザ機器5宛てのメッセージには、例えば、初期鍵テーブル215に含まれる初期鍵が含まれる。制御部20は、準備したメッセージからチェックサムを生成する(ステップs102)。これにより、対象ユーザ機器5宛てのチェックサム付きメッセージが生成される。次に、制御部20は、対象ユーザ機器5宛てのチェックサム付きメッセージを、記憶部210内のユーザ機器用暗号鍵で暗号化する(ステップs103)。次に、制御部20は、暗号化したチェックサム付きメッセージとヘッダとを含むパケットを生成する(ステップs104)。そして、制御部20は、通信部21に、生成したパケットを対象ユーザ機器5に対して送信させる(ステップs105)。制御部20は、ユーザ機器5宛てのメッセージを秘匿する必要がなく暗号化する必要が無い場合、ユーザ機器5宛ての平文のチェックサム付きメッセージとヘッダとを含むパケットを通信部21に送信させる。
【0061】
<ユーザ機器の送信動作の一例>
ユーザ機器5がサーバ2にデータを送信する場合、制御部50は、サーバ2宛てのメッセージを準備する(ステップs101)。次に、制御部50は、準備したメッセージからチェックサムを生成する(ステップs102)。これにより、サーバ2宛てのチェックサム付きメッセージが生成される。次に、制御部50は、サーバ2宛てのチェックサム付きメッセージを、記憶部510内のサーバ用暗号鍵で暗号化する(ステップs103)。次に、制御部50は、暗号化したチェックサム付きメッセージとヘッダとを含むパケットを生成する(ステップs104)。そして、制御部50は、通信部51に、生成したパケットをサーバ2に対して送信させる(ステップs105)。制御部50は、サーバ2宛てのメッセージを秘匿する必要がなく暗号化する必要が無い場合、サーバ2宛ての平文のチェックサム付きメッセージとヘッダとを含むパケットを通信部51に送信させる。
【0062】
初期設定後において、ユーザ機器5がIoT機器4にデータを送信する場合、制御部50は、IoT機器4宛てのメッセージを準備する(ステップs101)。次に、制御部50は、準備したメッセージからチェックサムを生成する(ステップs102)。これにより、IoT機器4宛てのチェックサム付きメッセージが生成される。次に、制御部50は、IoT機器4宛てのチェックサム付きメッセージを、記憶部510内のセッション鍵SEKuで暗号化する(ステップs103)。次に、制御部50は、暗号化したチェックサム付きメッセージとヘッダとを含むパケットを生成する(ステップs104)。そして、制御部50は、通信部51に、生成したパケットをIoT機器4に対して送信させる(ステップs105)。制御部50は、IoT機器4宛てのメッセージを秘匿する必要がなく暗号化する必要が無い場合、IoT機器4宛ての平文のチェックサム付きメッセージとヘッダとを含むパケットを通信部51に送信させる。
【0063】
<IoT機器の送信動作の一例>
IoT機器4がサーバ2にデータを送信する場合、監視部45が、サーバ2宛てのメッセージを準備する(ステップs101)。次に、監視部45は、準備したメッセージからチェックサムを生成する(ステップs102)。これにより、サーバ2宛てのチェックサム付きメッセージが生成される。次に、監視部45は、サーバ2宛てのチェックサム付きメッセージを、記憶部460内のサービス鍵SAKiで暗号化する(ステップs103)。暗号化されるサーバ2宛てのメッセージには、例えば履歴データ466が含まれる。監視部45は、暗号化したチェックサム付きメッセージを制御部40に出力する。制御部40は、入力されたチェックサム付きメッセージとヘッダとを含むパケットを生成する(ステップs104)。そして、制御部40は、信号線140を通じて、生成したパケットを通信部41に入力する。通信部41は、入力されたパケットをサーバ2に送信する(ステップs105)。監視部45は、サーバ2宛てのメッセージを秘匿する必要がなく暗号化する必要が無い場合、サーバ2宛ての平文のチェックサム付きメッセージを制御部40に出力する。制御部40は、入力されたサーバ2宛ての平文のチェックサム付きメッセージとヘッダとを含むパケットを通信部41に送信させる。
【0064】
初期設定後において、IoT機器4がユーザ機器5にデータを送信する場合、制御部40は、ユーザ機器5宛てのメッセージを準備する(ステップs101)。次に、制御部40は、準備したメッセージからチェックサムを生成する(ステップs102)。これにより、ユーザ機器5宛てのチェックサム付きメッセージが生成される。次に、制御部40の暗号処理部420は、ユーザ機器5宛てのチェックサム付きメッセージを、監視部45からのセッション鍵SEKiで暗号化する(ステップs103)。暗号化されるユーザ機器5宛てのメッセージには、例えば処理済みセンサデータが含まれる。次に、制御部40は、暗号処理部420で暗号化されたチェックサム付きメッセージとヘッダとを含むパケットを生成する(ステップs104)。そして、制御部40は、信号線140を通じて、生成したパケットを通信部41に入力する。通信部41は、入力されたパケットをユーザ機器5に送信する(ステップs105)。制御部40は、ユーザ機器5宛てのメッセージを秘匿する必要がなく暗号化する必要が無い場合、ユーザ機器5宛ての平文のチェックサム付きメッセージとヘッダとを含むパケットを通信部41に送信させる。
【0065】
<サーバの受信動作の一例>
サーバ2の通信部21は、ネットワーク10を通じて対象IoT機器4からパケットを受信すると(
図7のステップs111)、その受信パケットを制御部20に入力する。制御部20は、入力された受信パケットに暗号化されたチェックサム付きメッセージが含まれている場合、当該暗号化されたチェックサム付きメッセージを、記憶部210内における、対象IoT機器4に対応するサービス鍵SAKsで復号化する(ステップs112)。これにより、制御部20は、対象IoT機器4が準備したサーバ2宛ての平文のチェックサム付きメッセージを取得することができる。つまり、制御部20は、対象IoT機器4が準備したサーバ2宛ての平文のメッセージとそれから生成された平文のチェックサムとを取得することができる。なお、受信パケットに平文のチェックサム付きメッセージが含まれる場合には、制御部20は、復号化処理を行うことなく、平文のチェックサム付きメッセージを取得することができる。以後、受信側で取得された平文のメッセージ及び平文のチェックサムをそれぞれ受信メッセージ及び受信チェックサムと呼ぶことがある。
【0066】
制御部20は、平文のチェックサム付きメッセージを取得すると、それに含まれるメッセージ(つまり受信メッセージ)の改ざん検知を行う(ステップs113)。例えば、制御部20は、受信メッセージからチェックサムを生成する。このチェックサムを生成チェックサムと呼ぶ。制御部20は、受信チェックサムと、生成チェックサムとを比較し、両者が一致している場合、受信メッセージは改ざんされていないと判定する。一方で、制御部20は、両者が一致していない場合、受信メッセージは改ざんされていると判定する。制御部20は、受信メッセージが改ざんされていると判定すると、例えば当該受信メッセージを破棄する。
【0067】
制御部20が取得した受信メッセージには、例えば、対象IoT機器4で生成された履歴データ466が含まれる。制御部20は、メッセージに含まれる履歴データ466に基づいて、例えば対象IoT機器4を制御する。この点については後で詳細に説明する。
【0068】
通信部21は、ネットワーク10を通じて対象ユーザ機器5からパケットを受信すると(ステップs111)、その受信パケットを制御部20に入力する。制御部20は、受信パケットに暗号化されたチェックサム付きメッセージが含まれている場合、当該暗号化されたチェックサム付きメッセージを、記憶部210内における、対象ユーザ機器5に対応するユーザ機器用暗号鍵で復号化する(ステップs112)。これにより、制御部20は、対象ユーザ機器5が準備した平文のチェックサム付きメッセージを取得することができる。制御部20は、上記と同様にして、取得した受信メッセージの改ざん検知を行う(ステップs113)。そして、制御部20は、受信メッセージが改ざんされていると判定すると、例えば当該受信メッセージを破棄する。
【0069】
<ユーザ機器の受信動作の一例>
ユーザ機器5の通信部51は、ネットワーク10を通じてサーバ2からパケットを受信すると(ステップs111)、その受信パケットを制御部50に入力する。制御部50は、入力された受信パケットに暗号化されたチェックサム付きメッセージが含まれている場合、当該暗号化されたチェックサム付きメッセージを、記憶部510内におけるサーバ通信用暗号鍵で復号化する(ステップs112)。これにより、制御部50は、サーバ2が準備したユーザ機器5宛ての平文のチェックサム付きメッセージを取得することができる。制御部50が取得した受信メッセージには、例えば初期鍵が含まれる。制御部50は、制御部20と同様にして、取得した受信メッセージの改ざん検知を行う(ステップs113)。そして、制御部50は、受信メッセージが改ざんされていると判定すると、例えば当該受信メッセージを破棄する。
【0070】
通信部51は、ネットワーク10を通じてIoT機器4からパケットを受信すると(ステップs111)、その受信パケットを制御部50に入力する。制御部50は、受信パケットに暗号化されたチェックサム付きメッセージが含まれている場合、当該暗号化されたチェックサム付きメッセージを、記憶部510内のセッション鍵SEKuで復号化する(ステップs112)。これにより、制御部50は、IoT機器4が準備したユーザ機器5宛ての平文のチェックサム付きメッセージを取得することができる。制御部50は、制御部20と同様にして、取得した受信メッセージの改ざん検知を行う(ステップs113)。そして、制御部50は、受信メッセージが改ざんされていると判定すると、例えば当該受信メッセージを破棄する。
【0071】
制御部50が取得した受信メッセージには、例えば、IoT機器4が生成した処理済みセンサデータが含まれる。制御部50は、例えば、取得した処理済みセンサデータに基づいて所定の処理を行う。制御部50は、処理済みセンサデータを表示部52に表示してもよい。また、制御部50は、通信部51に、処理済みセンサデータをネットワーク10に接続された特定の装置に対して送信させてもよい。
【0072】
<IoT機器の受信動作の一例>
IoT機器4の通信部41は、ネットワーク10を通じてサーバ2からパケットを受信すると(ステップs111)、その受信パケットを信号線140を通じて制御部40に入力する。制御部40は、入力された受信パケットを監視部45に出力する。監視部45は、入力された受信パケットに暗号化されたチェックサム付きメッセージが含まれている場合、当該暗号化されたチェックサム付きメッセージを記憶部460内のサービス鍵SAKiで復号化する(ステップs112)。これにより、監視部45は、サーバ2が準備したIoT機器4宛ての平文のチェックサム付きメッセージを取得することができる。監視部45は、制御部20と同様にして、取得した受信メッセージの改ざん検知を行う(ステップs113)。そして、監視部45は、受信メッセージが改ざんされていると判定すると、例えば当該受信メッセージを破棄する。
【0073】
通信部41は、ネットワーク10を通じてユーザ機器5からパケットを受信すると(ステップs111)、その受信パケットを信号線140を通じて制御部40に入力する。制御部40は、入力された受信パケットに暗号化されたチェックサム付きメッセージが含まれている場合、制御部40の暗号処理部420は、暗号化されたチェックサム付きメッセージを、監視部45からのセッション鍵SEKiで復号化する(ステップs112)。これにより、制御部40は、ユーザ機器5が準備したIoT機器4宛ての平文のチェックサム付きメッセージを取得することができる。制御部40、制御部20と同様にして、取得した受信メッセージの改ざん検知を行う(ステップs113)。そして、制御部40は、受信メッセージが改ざんされていると判定すると、例えば当該受信メッセージを破棄する。
【0074】
なお、上記の例では、受信側の装置が受信メッセージの改ざんを検知する方法として、チェックサム方式が採用されているが、他の改ざん検知方式が採用されてもよい。例えばAES-GCM等の他の改ざん検知方式が採用されてもよい。AESは、Advanced Encryption Standardの略語であり、GCMは、Galois Counter Modeの略語である。
【0075】
以下の説明では、特に断らない限り、サーバ2とユーザ機器5との間のメッセージ(詳細にはメッセージを含むパケット)の送受信、サーバ2とIoT機器4との間のメッセージの送受信及びIoT機器4とユーザ機器5との間のメッセージの送受信は、詳細を説明しなくても、上記のようにして行われるものとする。
【0076】
<IoT機器とユーザ機器との間の通信の初期設定例>
図8は、IoT機器4とユーザ機器5との間の通信の初期設定が行われる場合の通信システム1の動作の一例を示すフローチャートである。
図8に示されるように、通信システム1では、ステップs1において、IoT機器4とユーザ機器5との間で初期鍵が共有される初期鍵共有処理が実行される。次に、ステップs2において、IoT機器4とユーザ機器5との間でE2EE暗号鍵が共有されるE2EE暗号鍵共有処理が実行される。ステップs2が実行されると、初期設定が終了する。初期設定では、例えば、IoT機器4は、ネットワーク10を通じてユーザ機器5と通信するのではなく、ユーザ機器5と直接通信を行う。また、IoT機器4とユーザ機器5は、例えば同じユーザによって操作される。
【0077】
図9はステップs1の初期鍵共有処理を説明するための図である。初期鍵共有処理では、まずステップs11において、IoT機器4のリセットボタン42が、自身に対する操作を検出すると、IoT機器4の動作が初期化される。初期化後のIoT機器4は、まず初期設定モードで動作する。初期設定モードのIoT機器4では、通信部41は、制御部40による制御によって、例えばWi-Fiのアクセスポイントとして機能する。これにより、ユーザ機器5の通信部51は、IoT機器4の通信部41と直接通信することが可能となる。
【0078】
次にステップs12において、ユーザ機器5の入力部53がユーザからの所定の入力を受け付けると、ステップs13において、ユーザ機器5は、IoT機器4に対して、識別情報465の送信を要求するメッセージ(ID要求メッセージともいう)を送信する。このとき、ID要求メッセージはユーザ機器5から暗号化されずにIoT機器4に直接送信される。ID要求メッセージを受信したIoT機器4は、ステップs14において、自身が記憶している識別情報465を示すメッセージをユーザ機器5に送信する。ステップs14では、制御部40は、通信部41からID要求メッセージを受け取ると、監視部45から識別情報465を取得する。そして、制御部40は、取得した識別情報465を示すメッセージを含むパケットを通信部41に入力する。通信部41は、入力されたパケットをユーザ機器5に送信する。このとき、識別情報465を含むメッセージは暗号化されずにIoT機器4からユーザ機器5に送信される。
【0079】
ユーザ機器5は、IoT機器4から識別情報465を受信すると、ステップs15において、IoT機器4とのペアリングの承認を要求するメッセージ(承認要求メッセージともいう)をネットワーク10を通じてサーバ2に送信する。承認要求メッセージには識別情報465が含まれている。承認要求メッセージは、例えば暗号化されてユーザ機器5からサーバ2に送信される。
【0080】
サーバ2は、ユーザ機器5から承認要求メッセージを受信すると、ステップs16において、所定の方法でユーザ機器5の認証を行う。サーバ2は、認証の結果、ユーザ機器5が正当であると判断すると、ステップs17において、初期鍵テーブル215から、ユーザ機器5から受信した識別情報465に対応する初期鍵を取得する。そして、サーバ2は、取得した初期鍵を示すメッセージをユーザ機器5に送信する。これにより、ユーザ機器5は、識別情報465に対応する初期鍵を取得することができる。初期鍵は、例えば暗号化されてサーバ2からユーザ機器5に送信される。一方で、サーバ2は、認証の結果、ユーザ機器5が正当ではないと判断すると、例えば、ユーザ機器5に対してその旨を通知する。
【0081】
ユーザ機器5は、サーバ2から、識別情報465に対応する初期鍵を取得すると、取得した初期鍵を初期鍵IKuとして記憶部510に記憶する。この初期鍵IKuは、IoT機器4が記憶する初期鍵IKiと一致する。これにより、IoT機器4とユーザ機器5との間で初期鍵が共有され、初期鍵共有処理が終了する。初期鍵共有処理の終了で、IoT機器4とユーザ機器5とのペアリングが完了する。
【0082】
図10はステップs2のE2EE暗号鍵共有処理を説明するための図である。初期鍵共有処理が終了すると、すぐにE2EE暗号鍵共有処理が開始する。E2EE暗号鍵共有処理では、まずステップs21において、ユーザ機器5の制御部50が、E2EE暗号鍵EKuを生成して記憶部510に記憶する。次にステップs22において、制御部50は、生成したE2EE暗号鍵EKuと、記憶部510内の時刻情報518とを、記憶部510内の初期鍵IKuで暗号化する。次にステップs23において、ユーザ機器5は、初期鍵IKuで暗号化されたE2EE暗号鍵EKu及び時刻情報518を、暗号化されたメッセージとしてIoT機器4に直接送信する。
【0083】
IoT機器4は、初期鍵IKuで暗号化されたE2EE暗号鍵EKu及び時刻情報518を受信すると、ステップs24において、当該E2EE暗号鍵EKu及び時刻情報518を初期鍵IKiで復号化する。これにより、IoT機器4は、平文のE2EE暗号鍵EKu及び時刻情報518を取得できる。ステップs24では、制御部40は、通信部41から受け取った、暗号化されたE2EE暗号鍵EKu及び時刻情報518を監視部45に出力する。監視部45は、入力された、暗号化されたE2EE暗号鍵EKu及び時刻情報518を、記憶部460内の初期鍵IKiで復号化する。これにより、監視部45は、平文のE2EE暗号鍵EKu及び時刻情報518を取得できる。
【0084】
監視部45は、平文のE2EE暗号鍵EKuを取得すると、ステップs25において、取得した平文のE2EE暗号鍵EKuをE2EE暗号鍵EKiとして記憶部460に保存する。これにより、IoT機器4とユーザ機器5との間でE2EE暗号鍵が共有される。また、ステップs25において、監視部45は、取得した平文の時刻情報518を時刻情報468として記憶部460に保存する。その後、監視部45は、時刻情報468が常に現在の時刻を示すように、自身が有するタイマ等を用いて時刻情報468を更新する。これにより、サーバ2、ユーザ機器5及びIoT機器4での時刻情報が互いに同期する。なお、IoT機器4が例えばGPS受信機を備える場合、当該GPS受信機から出力される時刻情報が時刻情報468として使用されてもよい。
【0085】
ステップs25が実行されると、E2EE暗号鍵共有処理が終了する。E2EE暗号鍵は、サーバ2を介さずに、IoT機器4とユーザ機器5との間で共有されることから、サーバ2はE2EE暗号鍵を認識していない。IoT機器4とユーザ機器5との間でE2EE暗号鍵が共有されることで、IoT機器4とユーザ機器5との間でE2EE通信が可能となる。E2EE暗号期鍵共有処理に終了により、初期設定が終了し、IoT機器4では初期設定モードが解除される。IoT機器4は、初期設定モードが解除されると、ネットワーク10を通じてユーザ機器5と通信を行う。
【0086】
上記のように、本例では、ユーザ機器5が初期鍵を取得するためには、サーバ2での認証の成立が必要である。このため、ハッカーの装置が初期鍵を取得することは困難となる。これより、ハッカーが、例えばIoT機器4のリセットボタン42を操作できたとしても、ハッカーの装置はE2EE暗号鍵を取得するが困難となる。
【0087】
対象IoT機器4と複数のユーザ機器5との間で初期鍵共有処理及びE2EE暗号共有処理が実行されることにより、対象IoT機器4は複数のユーザ機器5とペアリングされ、対象IoT機器4と複数のユーザ機器5との間で同じ初期鍵と同じE2EE暗号鍵が共有される。複数のユーザ機器5は、複数のユーザ機器5どうしの間でE2EE暗号鍵を送受信して共有してもよい。
【0088】
<セッション鍵の生成方法例>
図11は、通信システム1でのセッション鍵生成処理の一例を示すフローチャートである。セッション鍵は、一時的に使用される暗号鍵であって、所定の条件に基づいて新たに生成されて更新される。セッション鍵は、IoT機器4及びユーザ機器5のそれぞれで独自に生成される。
【0089】
IoT機器4は、セッション鍵SEKiを生成する場合、
図11に示されるように、ステップs31において、サーバ2に対して、セッション鍵SEKiの種になるシードデータの送信を要求するシード要求メッセージを送信する。ステップs31では、監視部45がシード要求メッセージを生成する。監視部45で生成されたシード要求メッセージは、サービス鍵SAKiで暗号化されて、制御部40を通って、通信部41からサーバ2に送信される。
【0090】
また、ユーザ機器5は、セッション鍵SEKuを生成する場合、
図11に示されるように、ステップs32においてシード要求メッセージを送信する。ステップs32では、制御部50が、シード要求メッセージを生成し、生成したシード要求メッセージをサーバ用暗号鍵で暗号化する。暗号化されたシード要求メッセージは、通信部51からサーバ2に送信される。
【0091】
シード要求メッセージを受信したサーバ2では、制御部20が、乱数生成器24から乱数を取得し、取得した乱数をシードデータとする。サーバ2がシード要求メッセージを受信するたびに、制御部20は、乱数生成器24から異なる乱数を取得する。したがって、シードデータは、シード要求メッセージが発行されるたびに異なるデータとなる。
【0092】
制御部20は、取得したシードデータをメッセージとしてサービス鍵SAKsで暗号化する。サーバ2は、ステップs33において、暗号化したシードデータをIoT機器4に送信する。また、サーバ2は、取得したシードデータをユーザ機器用暗号鍵で暗号化する。サーバ2は、ステップs34において、暗号化したシードデータをユーザ機器5に送信する。サーバ2は、対象IoT機器4からシード要求メッセージを受信した場合(つまり、ステップs31が実行された場合)、ステップs33において対象IoT機器4に対して暗号化されたシードデータを送信するとともに、ステップs34において、対象IoT機器4とペアリングされたユーザ機器5に対して暗号化されたシードデータを送信する。また、サーバ2は、対象ユーザ機器5からシード要求メッセージを受信した場合(つまり、ステップs32が実行された場合)、ステップs33において、対象ユーザ機器5とペアリングされたIoT機器4に対して暗号化されたシードデータを送信するとともに、ステップs34において対象ユーザ機器5に対して暗号化されたシードデータを送信する。
【0093】
サーバ2から暗号化されたシードデータ(本例では乱数)を受信したIoT機器4では、当該暗号化されたシードデータが監視部45に入力される。監視部45は、暗号化されたシードデータをサービス鍵SAKiで復号化して、平文のシードデータを取得する。監視部45は、平文のシードデータを取得すると、ステップs35において、取得したシードデータと、記憶部460内のE2EE暗号鍵EKiとに基づいて、セッション鍵SEKiを生成する。例えば、監視部45は、セッション鍵生成用の関数にE2EE暗号鍵EKiとシードデータを代入して、当該関数の出力をセッション鍵SEKiとする。次に、ステップs36において、監視部45は、生成したセッション鍵SEKiを記憶部460に保存する。また、監視部45は、セッション鍵SEKiを制御部40に出力し、制御部40は、入力されたセッション鍵SEKiを記憶部410に記憶する。制御部40は、記憶部410内のセッション鍵SEKiを用いてメッセージの暗号化及び復号化を行う。
【0094】
また、暗号化されたシードデータを受信したユーザ機器5では、制御部50が、当該暗号化されたシードデータをサーバ用暗号鍵で復号化して、平文のシードデータを取得する。制御部50は、平文のシードデータを取得すると、ステップs37において、取得したシードデータと、記憶部460内のE2EE暗号鍵EKuとに基づいて、セッション鍵SEKuを生成する。例えば、制御部50は、IoT機器4で使用されるセッション鍵生成用の関数と同じ関数にE2EE暗号鍵EKuとシードデータを代入して、当該関数の出力をセッション鍵SEKuとする。次に、ステップs38において、制御部50は、生成したセッション鍵SEKuを記憶部510に保存する。ステップs37で生成されたセッション鍵SEKuと、ステップs35で生成されたセッション鍵SEKiとは互いに一致する。
【0095】
サーバ2が発行するシードデータは、上述のように、シード要求メッセージが発行されるたびに変化する。したがって、シード要求メッセーが、IoT機器4から発行されるか、ユーザ機器5から発行されるかにかかわらず、シード要求メッセージが発行されるたびに、IoT機器4及びユーザ機器5が生成するセッション鍵は更新される。
【0096】
本例では、IoT機器4とユーザ機器5と間のE2EE通信で使用されるセッション鍵の生成には、サーバ2が発行するシードデータが必要である。したがって、サーバ2は、シードデータの発行を制御することによって、IoT機器4とユーザ機器5と間のE2EE通信を制御することができる。
【0097】
セッション鍵が更新される条件としては、様々な条件が考えられる。例えば、IoT機器4及びユーザ機器5は、所定の時刻になると、シード要求メッセージを発行し、サーバ2から受け取った新たなシードデータに基づいて新たなセッション鍵を生成して、セッション鍵を更新してもよい。
【0098】
他の例として、IoT機器4及びユーザ機器5は、例えば、セッション鍵の使用条件(セッション鍵使用条件ともいう)に基づいてセッション鍵を更新してもよい。この場合、例えば、IoT機器4及びユーザ機器5は、現在の状況がセッション鍵使用条件内であれば、現在のセッション鍵を使用することができる。一方で、IoT機器4及びユーザ機器5は、現在の状況がセッション鍵使用条件外であれば、シード要求メッセージを発行し、新たなセッション鍵を生成して更新する。
【0099】
セッション鍵使用条件は、例えばサーバ2で管理されてもよい。例えば、セッション鍵使用条件は、サーバ2の記憶部210に記憶されてもよい。サーバ2は、例えば、シード要求メッセージの受信に応じて、シードデータと、当該シードデータに基づいて生成されるセッション鍵の使用条件とを送信してもよい。この場合、上述のステップs33において、サーバ2は、シードデータとセッション鍵使用条件を含むメッセージを暗号化してIoT機器4に送信する。また、ステップs34において、サーバ2は、シードデータとセッション鍵使用条件を含むメッセージを暗号化してユーザ機器5に送信する。IoT機器4では、上述のステップs36において、監視部45が、生成したセッション鍵SEKiと、サーバ2からのセッション鍵使用条件とを対応付けて記憶部460に記憶する。また、監視部45は、セッション鍵SEKi及びセッション鍵使用条件を制御部40に出力する。制御部40は、入力されたセッション鍵SEKi及びセッション鍵使用条件を互いに対応付けて記憶部410に記憶する。制御部40は、記憶部410内のセッション鍵使用条件に応じて、記憶部410のセッション鍵SEKiを使用する。ユーザ機器5では、ステップs38において、制御部50が、生成したセッション鍵SEKuと、サーバ2からのセッション鍵使用条件とを対応付けて記憶部510に記憶する。制御部50は、記憶部510内のセッション鍵使用条件に応じて、記憶部510のセッション鍵SEKiを使用する。
【0100】
IoT機器4では、制御部40は、現在の状況が記憶部410内のセッション鍵使用条件外となると、新たなセッション鍵SEKiの発行を監視部45に要求する。この要求を受けた監視部45は、シード要求メッセージを生成し、生成したシード要求メッセージをサービス鍵SAKiで暗号化して制御部40に入力する。制御部40は、通信部41に、暗号化されたシード要求メッセージをサーバ2に対して送信させる。これにより、サーバ2から新たなシードデータとセッション鍵使用条件が、IoT機器4及びユーザ機器5に送信され、IoT機器4及びユーザ機器5では、セッション鍵及びセッション鍵使用条件の更新が行われる。
【0101】
例えば、セッション鍵使用条件がセッション鍵の使用時間の上限値である場合を考える。この場合、制御部40は、現在のセッション鍵SEKiの使用を開始してからの経過時間(つまり、現在のセッション鍵SEKiの使用時間)が使用時間の上限値を超えると、新たなセッション鍵SEKiの発行を監視部45に要求する。言い換えれば、制御部40は、現在のセッション鍵SEKiが記憶部410に記憶されてからの経過時間が使用時間の上限値と超えると、新たなセッション鍵SEKiの発行を監視部45に要求する。制御部40は、自身が備えるタイマ等で経過時間(つまり、現在のセッション鍵SEKiの使用時間)を計測することができる。
【0102】
他の例として、セッション鍵使用条件が、セッション鍵で暗号化されたメッセージの送信データ量の上限値である場合を考える。この場合、制御部40は、現在のセッション鍵SEKiで暗号化されたメッセージの送信データ量が上限値になると、新たなセッション鍵SEKiの発行を監視部45に要求する。
【0103】
なお、セッション鍵使用条件には、使用時間の上限値と送信データ量の上限値とが含まれてもよいし、他の条件が含まれてもよい。例えば、セッション鍵使用条件には、送信先または送信元が含まれてもよい。
【0104】
ユーザ機器5では、制御部50は、現在の状況が記憶部410内のセッション鍵使用条件外となると、シード要求メッセージを生成してサーバ用暗号鍵で暗号化する。そして、制御部50は、通信部51に、暗号化されたシード要求メッセージをサーバ2に対して送信させる。これにより、サーバ2から新たなシードデータとセッション鍵使用条件が、IoT機器4及びユーザ機器5に送信され、IoT機器4及びユーザ機器5では、セッション鍵及びセッション鍵使用条件の更新が行われる。
【0105】
<監視部の信号線の監視動作例>
監視部45は信号線140を監視する。監視部45は、例えば、上述の初期設定が終了したとき(言い換えればE2EE暗号鍵共有処理が終了したとき)に、信号線140の監視を開始する。
【0106】
ここで、例えば、IoT機器4の制御部40及び通信部41の少なくとも一方がハッキングされた場合、信号線140を伝搬するデータが、本来は暗号化されているべきであるにもかかわらず暗号化されていないことが発生する可能性がある。
【0107】
そこで、監視部45は、信号線140を監視して、信号線140で伝送される、セッション鍵で暗号化されているべきデータがセッション鍵で暗号化されているか否かを監視する。具体的には、監視部45は、信号線140を監視して、信号線140で伝送される、セッション鍵で暗号化されているべきユーザ機器5宛てのチェックサム付きメッセージがセッション鍵で暗号化されているか否かを監視する。また、監視部45は、信号線140を監視して、信号線140で伝送される、セッション鍵で暗号化されているべきユーザ機器5からのチェックサム付きメッセージがセッション鍵で暗号化されているか否かを監視する。
【0108】
また、監視部45は、信号線140を監視して、信号線140で伝送される、サービス鍵で暗号化されているべきデータがサービス鍵で暗号化されているか否かを監視する。具体的には、監視部45は、信号線140を監視して、信号線140で伝送される、サービス鍵で暗号化されているべきサーバ2宛てのチェックサム付きメッセージがサービス鍵で暗号化されているか否かを監視する。また、監視部45は、信号線140を監視して、信号線140で伝送される、サービス鍵で暗号化されているべきサーバ2からのチェックサム付きメッセージがサービス鍵で暗号化されているか否かを監視する。
【0109】
図12は監視部45の信号線140の監視動作の一例を示すフローチャートである。監視部45は、
図12に示されるステップs51~s56からなる暗号化確認処理を繰り返し実行する。
【0110】
暗号化確認処理において、監視部45は、信号線140で伝送されるパケットが信号線140から信号線141を通じて入力されると(ステップs51)、ステップs52を実行する。ステップs51で監視部45に入力されるパケットを対象パケットと呼ぶことがある。
【0111】
ステップs52では、監視部45は、対象パケットに含まれるヘッダ(対象ヘッダともいう)に基づいて、対象パケットに含まれるチェックサム付きメッセージ(対象チェックサム付きメッセージともいう)が暗号化されているべきか否かを判定する。パケットに含まれるヘッダには、例えば、当該パケットに含まれるチェックサム付きメッセージが暗号化されているべきか否かを示す情報が含まれている。監視部45は、対象ヘッダに含まれる当該情報に基づいて、対象チェックサム付きメッセージが暗号化されているべきか否かを判定することができる。
【0112】
ステップs52においてYESと判定されると、ステップs53において、監視部45は、対象チェックサム付きメッセージの暗号化で使用されているべき暗号鍵が、セッション鍵であるのか、サービス鍵であるのかを判定する。
【0113】
ここで、IoT機器4が送信するパケット(送信パケットともいう)に含まれるヘッダには、当該パケットの送信先を示す送信先情報が含まれる。また、IoT機器4が受信するパケット(受信パケットともいう)に含まれるヘッダには、当該パケットの送信元を示す送信元情報が含まれる。
【0114】
監視部45は、対象パケットが送信パケットである場合、対象パケットのヘッダに含まれる送信先情報に基づいて、対象パケットの送信先を特定する。監視部45は、送信先がユーザ機器5である場合、対象チェックサム付きメッセージの暗号化で使用されているべき暗号鍵はセッション鍵であると判定する。一方で、監視部45は、送信先がサーバ2である場合、対象チェックサム付きメッセージの暗号化で使用されているべき暗号鍵はサービス鍵であると判定する。なお、パケットに含まれるヘッダは、当該パケットがどの暗号鍵で暗号化されているかを示す情報を含んでもよい。この場合、監視部45は、当該情報に基づいて、当該パケットの暗号化に使用されているべき暗号鍵を判定してもよい。
【0115】
また、監視部45は、対象パケットが受信パケットである場合、対象パケットのヘッダに含まれる送信元情報に基づいて、対象パケットの送信元を特定する。監視部45は、送信元がユーザ機器5である場合、対象チェックサム付きメッセージの暗号化で使用されているべき暗号鍵はセッション鍵であると判定する。一方で、監視部45は、送信元がサーバ2である場合、対象チェックサム付きメッセージの暗号化で使用されているべき暗号鍵はサービス鍵であると判定する。
【0116】
ステップs53において、対象チェックサム付きメッセージの暗号化で使用されているべき暗号鍵はセッション鍵であると判定されると、ステップs54において、監視部45は、対象チェックサム付きメッセージがセッション鍵で暗号化されているか否かを判定する。一方で、ステップs53において、対象チェックサム付きメッセージの暗号化で使用されているべき暗号鍵はサービス鍵であると判定されると、ステップs55において、監視部45は、対象チェックサム付きメッセージがサービス鍵で暗号化されているか否かを判定する。
【0117】
ステップs54において、監視部45は、まず、対象チェックサム付きメッセージに対して、記憶部460内のセッション鍵SEKiを用いた復号化処理を行う。次に、監視部45は、復号化処理で得られた、平文のメッセージに相当するデータからチェックサムを生成する。次に、監視部45は、生成したチェックサムと、復号化処理で得られた、平文のチェックサムに相当するデータとを比較する。監視部45は、両者が一致する場合、対象チェックサム付きメッセージがセッション鍵で暗号化されていると判定する。一方で、監視部45は、両者が一致しない場合、対象チェックサム付きメッセージがセッション鍵で暗号化されていないと判定する。
【0118】
ここで、対象のデータが所定の暗号鍵で暗号化されていないにもかかわらず、対象のデータに対して所定の暗号鍵を用いた復号化処理を行うと、対象のデータの平文を正しく得ることはできない。これより、監視部45は、上記のような処理によって、対象チェックサム付きメッセージがセッション鍵で暗号化されているか否かを判定することができる。
【0119】
ステップs54と同様に、ステップs55において、監視部45は、まず、対象チェックサム付きメッセージを記憶部460内のサービス鍵SAKiで復号化する。次に、監視部45は、復号化で得られた、平文のメッセージに相当するデータからチェックサムを生成する。次に、監視部45は、生成したチェックサムと、復号化で得られた、平文のチェックサムに相当するデータとを比較する。監視部45は、両者が一致する場合、対象チェックサム付きメッセージがサービス鍵で暗号化されていると判定する。一方で、監視部45は、両者が一致しない場合、対象チェックサム付きメッセージがサービス鍵で暗号化されていないと判定する。
【0120】
ステップs54が実行されると、ステップs56が実行される。またステップs55が実行された場合にも、ステップs56が実行される。ステップs54の後のステップs56では、監視部45は、ステップs54での判定結果に基づいて履歴データ466を更新する。例えば、監視部45は、ステップs54での判定結果を暗号化確認結果とし、当該暗号化確認結果と現在の時刻情報468とを互いに対応付けて履歴データ466に登録する。ステップs55の後のステップs56では、監視部45は、ステップs55での判定結果に基づいて履歴データ466を更新する。例えば、監視部45は、ステップs55での判定結果を暗号化確認結果とし、当該暗号化確認結果と現在の時刻情報468とを互いに対応付けて履歴データ466に登録する。履歴データ466では、時刻情報468と、それが示す時刻での暗号化確認結果とが互いに対応付けられている。
【0121】
ステップs56の後、監視部45に新たなパケットが入力されると(ステップs51)、ステップs52が実行される。以後、監視部45は同様に動作する。また、ステップs52においてNoと判定され、その後、監視部45に新たなパケットが入力されると(ステップs51)、ステップs52が実行される。以後、監視部45は同様に動作する。監視部45は、入力されるパケットが、送信パケットであるのか、受信パケットであるのかにかかわらず、パケットが入力されるたびに、暗号化確認処理を実行する。暗号化確認処理が繰り返し実行されることによって、履歴データ466には、暗号化確認結果と時刻情報468の対が複数対登録された暗号化監視履歴が含まれる。
【0122】
監視部45は、上述のように、セッション鍵SEKiとセッション鍵使用条件とを対応付けて記憶する場合、信号線140を監視して、セッション鍵使用条件が満たされているか否か監視してもよい。
【0123】
例えば、セッション鍵使用条件がセッション鍵の使用時間の上限値である場合を考える。ここで、監視部45は、暗号化確認処理のステップs54において、対象チェックサム付きメッセージがセッション鍵SEKiで暗号化されているか否かを判定している。対象チェックサム付きメッセージがセッション鍵SEKiで暗号化されていることは、当該セッション鍵SEKiが使用されていることを意味する。したがって、監視部45は、ステップs54での判定結果と時刻情報468とに基づいて、現在のセッション鍵SEKiの使用時間を特定することができる。監視部45は、現在のセッション鍵SEKiの使用時間が上限値以下であるか否かの使用条件充足確認処理を例えば繰り返し実行する。そして、監視部45は、使用条件充足確認処理を実行するたびに、その結果と、そのときの時刻情報468とを互いに対応付けて履歴データ466に登録する。履歴データ466では、使用条件充足確認処理の結果(使用条件充足確認結果ともいう)と、その結果が得られたときの時刻情報468とが互いに対応付けられている。履歴データ466には、使用条件充足確認結果と時刻情報468の対が複数対登録された使用条件充足監視履歴が含まれる。
【0124】
他の例として、セッション鍵使用条件が、セッション鍵で暗号化されたメッセージの送信データ量の上限値である場合を考える。パケットに含まれるヘッダには、当該パケットに含まれるメッセージのデータ量を示す情報が含まれる。監視部45は、暗号化確認処理のステップs54において、対象チェックサム付きメッセージがセッション鍵SEKiで暗号化されていると判定したとき、対象ヘッダに基づいて対象チェックサム付きメッセージに含まれるメッセージのデータ量を特定することができる。これにより、監視部45は、現在のセッション鍵SEKiで暗号化されたデータの送信データ量を特定することができる。監視部45は、現在のセッション鍵SEKiで暗号化されたデータの送信データ量が上限値以下であるか否かの使用条件充足確認処理を例えば繰り返し実行する。そして、監視部45は、使用条件充足確認処理を実行するたびに、その結果と、そのときの時刻情報468とを互いに対応付けて履歴データ466に登録する。
【0125】
なお上記の例では、監視部45は、初期設定後に信号線140の監視を開始しているが、IoT機器4が初期化されてから初期設定が終了するまでの間にも、信号線140を監視してもよい。この場合、監視部45は、信号線140を監視して、例えば、ステップs14において記憶部460内の識別情報465と同じ情報が制御部40から通信部41に実際に出力されているか否かを監視してもよい。また、監視部45は、信号線140を監視して、信号線140に流れるユーザ機器5からのE2EE暗号鍵EKu及び時刻情報518が初期鍵で実際に暗号化されているか否かを監視してもよい。監視部45は、IoT機器4が初期化されてから初期設定が終了するまでの間の信号線140の監視結果(初期監視結果ともいう)を履歴データ466に登録してもよい。この場合、初期監視結果には、ステップs14において記憶部460内の識別情報465と同じ情報が制御部40から通信部41に実際に出力されているか否かの判定結果と、その判定が行われたときの時刻情報468とが互いに対応付けられて登録されていてもよい。また、初期監視結果には、信号線140に流れるユーザ機器5からのE2EE暗号鍵EKu及び時刻情報518が初期鍵で実際に暗号化されているか否かの判定結果と、その判定が行われたときの時刻情報468とが互いに対応付けられて登録されていてもよい。
【0126】
<サーバによる履歴データに基づくIoT機器の制御例>
IoT機器4は、例えば定期的に履歴データ466をサーバ2に送信する。サーバ2は、対象IoT機器4から受信した履歴データ466に基づいて対象IoT機器4を制御する。これにより、対象IoT機器4がハッキングされて対象IoT機器4の動作が異常となった場合に、サーバ2は対象IoT機器4を制御して対象IoT機器4の安全性を向上させることができる。以下に、サーバ2による履歴データ466に基づくIoT機器4の制御例について詳細に説明する。
【0127】
サーバ2の制御部20は、対象IoT機器4からの履歴データ466に基づいて、対象IoT機器4が異常であるか否かを判定する。そして、制御部20は、対象IoT機器4が異常であると判定すると、対象IoT機器4を制御するためのメッセージ(制御メッセージともいう)を生成する。そして、制御部20は、通信部21に、暗号化した制御メッセージを対象IoT機器4に送信させる。
【0128】
制御部20は、履歴データ466に含まれる暗号化監視履歴に基づいて、IoT機器4が異常であるか否かを判定してもよい。この場合、制御部20は、暗号化監視履歴を参照して、例えば、連続して所定回数以上、セッション鍵で暗号化されているべきチェックサム付きメッセージがセッション鍵で暗号化されていないと判定されている場合、対象IoT機器4が異常であると判定する。また、制御部20は、暗号化監視履歴を参照して、例えば、連続して所定回数以上、サービス鍵で暗号化されているべきチェックサム付きメッセージがサービス鍵で暗号化されていないと判定されている場合、対象IoT機器4が異常であると判定してもよい。
【0129】
履歴データ466が使用条件充足監視履歴を含む場合、サーバ2は、使用条件充足監視履歴に基づいてIoT機器4が異常であるか否かを判定してもよい。この場合、サーバ2は、使用条件充足監視履歴を参照して、セッション鍵使用条件が満たされていないと判定されたことを特定すると、対象IoT機器4が異常であると判定する。
【0130】
履歴データ466が初期監視結果を含む場合、サーバ2は、初期監視結果に基づいて対象IoT機器4が異常であるか否かを判定してもよい。この場合、サーバ2は、初期監視結果を参照して、例えば、E2EE暗号鍵共有処理において信号線140に流れるユーザ機器5からのE2EE暗号鍵EKu及び時刻情報518が初期鍵で暗号化されていないと判定されたことを特定すると、対象IoT機器4が異常であると判定してもよい。
【0131】
IoT機器4では、受信された制御メッセージは、監視部45で復号化される。監視部45は、得られた平文の制御メッセージに基づいてIoT機器4を制御する。例えば、制御メッセージに、IoT機器4の主な機能の停止を指示するデータが含まれる場合、監視部45は、主な機能を実現するための制御部40、通信部41及びセンサ装置43の動作を停止する。この場合、監視部45は、例えば、制御部40、通信部41及びセンサ装置43に対するクロック信号の供給を停止することによって制御部40、通信部41及びセンサ装置43の動作を停止してもよい。また、監視部45は、制御部40、通信部41及びセンサ装置43に供給されるリセット信号をアサート状態にし続けることによって制御部40、通信部41及びセンサ装置43の動作を停止してもよい。制御部40、通信部41及びセンサ装置43の動作停止方法はこの限りではない。
【0132】
制御部40、通信部41及びセンサ装置43の動作が停止した場合、例えばリセットボタン42が操作されると、制御部40、通信部41及びセンサ装置43の動作が復帰する。
【0133】
なお、制御メッセージによって指示されるIoT機器4の制御は、主な機能の停止以外であってもよい。例えば、制御メッセージには、制御部40、通信部41及びセンサ装置43の一部だけの動作の停止を指示するデータが含まれてもよい。また、制御メッセージには、制御部40の処理速度の低下を指示するデータが含まれてもよい。この場合、監視部45は、例えば、制御部40に供給されるクロック信号の周波数を低下させることによって、制御部40の処理速度を低下させてもよい。
【0134】
上記の例では、サーバ2は、IoT機器4に制御メッセージを送信することで、IoT機器4を制御しているが、サーバ2が履歴データ466に基づいてIoT機器4を制御する方法はこの限りではない。以下にサーバ2がIoT機器4を制御する方法の他の例について説明する。
【0135】
本例では、IoT機器4は、サーバ2から、当該IoT機器4の動作許可を示す動作許可情報を受信する。動作許可情報には、例えば、IoT機器4の主な機能が動作することが可能な期間(動作可能期間ともいう)を示す情報が含まれている。IoT機器4は、動作許可情報を受信してからそれが示す動作可能期間だけ、主な機能を動作させることができる。本例のIoT機器4、動作可能期間内に履歴データ466をサーバ2に送信する。IoT機器4が、動作可能期間内に履歴データ466をサーバ2に送信すると、その動作期間内に新たな動作許可情報をサーバ2から受信する。IoT機器4は、動作可能期間内に新たな動作許可情報を受信すると、そこから、当該新たな動作許可情報が示す動作可能期間だけ動作することができる。よって、IoT機器4は、動作可能期間内に履歴データ466を送信する限り、新たな動作可能期間が設定され続けて、連続して動作することが可能である。このような場合、サーバ2は、履歴データ466に基づいて対象IoT機器4が異常であると判定すると、その後、履歴データ466を受信したとしても新たな動作許可情報を対象IoT機器4に送信しない。これにより、対象IoT機器4では、現在の動作可能期間が経過した後に、主な機能が停止する。
【0136】
また、サーバ2は、対象IoT機器4から、あるいは対象IoT機器4とペアリングされえたユーザ機器5からシード要求メッセージを受信した場合、対象IoT機器4からの履歴データ466に基づいて対象IoT機器4が異常であるか否かを判定してもよい。そして、サーバ2は、対象IoT機器4が異常であると判定した場合、シードデータを発行しなくてもよい。この場合、対象IoT機器4はセッション鍵SEKiを生成することができないことから、対象IoT機器4はユーザ機器5とE2EE通信ができなくなる。
【0137】
なお、サーバ2は履歴データ466に基づいてIoT機器4を制御しなくてもよい。この場合、例えば、監視部45が履歴データ466に基づいてIoT機器4を制御してもよい。監視部45は、例えば、サーバ2が履歴データ466に基づいてIoT機器4を制御する場合と同様に、履歴データ466に基づいてIoT機器4を制御してもよい。例えば、監視部45は、履歴データ466に含まれる暗号化監視履歴を参照して、連続して所定回数以上、サービス鍵で暗号化されているべきチェックサム付きメッセージがサービス鍵で暗号化されていないと判定されている場合、制御部40、通信部41及びセンサ装置43の動作を停止して、IoT機器4の主な機能を停止してもよい。また、監視部45は、履歴データ466に含まれる使用条件充足監視履歴に基づいてIoT機器4を制御してもよいし、履歴データ466に含まれる初期監視結果に基づいてIoT機器4を制御してもよい。
【0138】
以上のように、本例では、監視部45が、信号線140を監視して信号線140で伝送されるデータが適切な暗号鍵で暗号化されているか否かを監視している。これにより、監視部45での監視結果(例えば履歴データ466)が利用されてIoT機器4が制御されることによって、IoT機器4の安全性を向上することができる。例えば、IoT機器4の制御部40及び通信部41の少なくとも一方がハッキングされて、信号線140で伝送されるデータが適切な暗号鍵で暗号化されなくなった場合に、上述のようにサーバ2等によってIoT機器4が制御されることによって、IoT機器4の安全性を向上することができる。
【0139】
また、監視部45は、信号線140を監視して、セッション鍵の使用条件が満たされているか否かを監視することから、この監視結果が利用されてIoT機器4が制御されることによって、IoT機器4の安全性を向上することができる。例えば、IoT機器4の制御部40及び通信部41の少なくとも一方がハッキングされて、セッション鍵の使用条件が満たされなくなった場合に、上述のようにサーバ2等によってIoT機器4が制御されることによって、IoT機器4の安全性を向上することができる。
【0140】
上記の例では、セッション鍵は、E2EE暗号鍵とサーバ2からのシードデータとに基づいて生成されているが、セッション鍵の生成方法はこの限りではない。例えば、サーバ2ではなく監視部45がシードデータを生成し、セッション鍵は、E2EE暗号鍵と、監視部45が生成したシードデータとに基づいて生成されてもよい。監視部45が生成するシードデータは例えば乱数であり、監視部45は、過去に一度使用された乱数が繰り返し使用されることがないよう、乱数の生成を行う。また、セッション鍵は、E2EE暗号鍵と時刻情報とに基づいて生成されてもよい。以下にセッション鍵がE2EE暗号鍵と時刻情報とに基づいて生成される場合の通信システム1の動作例について説明する。以後、説明の便宜上、IoT機器4によるユーザ機器5に対するデータの送信を上り通信と呼ぶことがある。また、ユーザ機器5によるIoT機器4に対するデータの送信を、言い換えればIoT機器4によるユーザ機器5からのデータの受信を、下り通信と呼ぶことがある。
【0141】
本例では、上り通信で使用されるセッション鍵と、下り通信で使用されるセッション鍵とが互いに異なる。前者のセッション鍵を上り用セッション鍵とし、後者のセッション鍵を下り用セッション鍵と呼ぶことがある。
【0142】
IoT機器4では、監視部45が、記憶部460内のE2EE暗号鍵EKi及び時刻情報468に基づいて上り用セッション鍵SEKiを生成する。例えば、監視部45は、セッション鍵生成用の関数にE2EE暗号鍵EKiと現在の時刻情報468を代入して、当該関数の出力を上り用セッション鍵SEKiとする。監視部45は、生成した上り用セッション鍵SEKiと、その生成で使用した時刻情報468(第1特定時刻情報468ともいう)とを互いに対応付けて記憶部460に記憶するとともに、制御部40に出力する。制御部40は、監視部45から受け取った上り用セッション鍵SEKi及び第1特定時刻情報468を互いに対応付けて記憶部410に記憶する。
【0143】
IoT機器4がユーザ機器5宛てのメッセージを送信する場合(つまり上り通信が行われる場合)、制御部40は、記憶部410から上り用セッション鍵SEKi及び第1特定時刻情報468を取得する。次に、制御部40は、ユーザ機器5宛てのチェックサム付きメッセージを生成し、それを記憶部410内の上り用セッション鍵SEKiで暗号化する。次に、制御部40は、暗号化したチェックサム付きメッセージと平文の第1特定時刻情報468を含むパケットを生成する。そして、制御部40は、通信部41に、生成したパケットをユーザ機器5に対して送信させる。IoT機器4は、ユーザ機器5に対して、暗号化されたチェックサム付きメッセージを含むパケットを送信する場合には常に、第1特定時刻情報468を含むパケットを送信する。
【0144】
IoT機器4からパケットを受信したユーザ機器5では、制御部50は、受信されたパケット内の第1特定時刻情報468と、記憶部410内のE2EE暗号鍵EKuとに基づいて上り用セッション鍵SEKuを生成する。例えば、制御部50は、IoT機器4と同じセッション鍵生成用の関数にE2EE暗号鍵EKuと第1特定時刻情報468を代入して、当該関数の出力を上り用セッション鍵SEKuとする。そして、制御部50は、生成した上り用セッション鍵SEKuで、受信されたパケット内のチェックサム付きメッセージを復号化する。これにより、制御部50は、平文のチェックサム付きメッセージを取得することができる。本例では、ユーザ機器5は、IoT機器4から、暗号化されたチェックサム付きメッセージを含むパケットを受信するたびに、上り用セッション鍵SEKuを生成し、生成した上り用セッション鍵SEKuでチェックサム付きメッセージを復号化する。
【0145】
ユーザ機器5は、IoT機器4と同様に、E2EE暗号鍵EKu及び時刻情報518に基づいて下り用セッション鍵SEKuを生成する。例えば、ユーザ機器5の制御部50は、セッション鍵生成用の関数にE2EE暗号鍵EKuと現在の時刻情報518を代入して、当該関数の出力を下り用セッション鍵SEKuとする。制御部50は、生成した下り用セッション鍵SEKuと、その生成で使用した時刻情報518(第2特定時刻情報518ともいう)とを互いに対応付けて記憶部510に記憶する。
【0146】
ユーザ機器5がIoT機器4宛てのメッセージを送信する場合(つまり、下り通信が行われる場合)、制御部50は、記憶部510から下り用セッション鍵SEKu及び第2特定時刻情報518を取得する。次に、制御部50は、IoT機器4宛てのチェックサム付きメッセージを生成し、それを下り用セッション鍵SEKuで暗号化する。次に、制御部50は、暗号化したチェックサム付きメッセージと平文の第2特定時刻情報518を含むパケットを生成する。そして、制御部50は、通信部51に、生成したパケットをIoT機器4に対して送信させる。ユーザ機器5は、IoT機器4に対して、暗号化されたチェックサム付きメッセージを含むパケットを送信する場合には常に、第2特定時刻情報518を含むパケットを送信する。
【0147】
ユーザ機器5からパケットを受信したIoT機器4では、受信されたパケットが監視部45に入力される。監視部45は、受信されたパケット内の第2特定時刻情報518と、記憶部460内のE2EE暗号鍵EKiとに基づいて下り用セッション鍵SEKiを生成する。例えば、監視部45は、セッション鍵生成用の関数にE2EE暗号鍵EKiと第2特定時刻情報518を代入して、当該関数の出力を下り用セッション鍵SEKiとする。監視部45は、生成した下り用セッション鍵SEKiを記憶部460に記憶するとともに、制御部40に出力する。制御部40は、受け取った下り用セッッション鍵SEKiを記憶部410に記憶する。制御部40の暗号処理部420は、受信されたパケットに含まれるチェックサム付きメッセージを下り用セッション鍵SEKiで復号化する。これにより、制御部40は、平文のチェックサム付きメッセージを取得することができる。本例では、IoT機器4は、ユーザ機器5から、暗号化されたチェックサム付きメッセージを含むパケットを受信するたびに、下り用セッション鍵SEKiを生成し、生成した下り用セッション鍵SEKiでチェックサム付きメッセージを復号化する。
【0148】
暗号化されたチェックサム付きメッセージを含む上り通信のパケットのヘッダには、チェックサム付きメッセージの暗号に上り用セッション鍵が使用されていることを示す情報が含まれる。また、暗号化されたチェックサム付きメッセージを含む下り通信のパケットのヘッダには、チェックサム付きメッセージの暗号に下り用セッション鍵が使用されていることを示す情報が含まれる。これにより、監視部45は、信号線140に流れるパケットのヘッダを解析して、当該パケットに含まれるチェックサム付きメッセージが上り用セッション鍵で暗号化されているべきか、下り用セッション鍵で暗号化されているべきかを特定することができる。よって、監視部45は、上り用セッション鍵で暗号化されているべきチェックサム付きメッセージを上り用セッション鍵で暗号化されているか否かを監視することができる。また、監視部45は、下り用セッション鍵で暗号化されているべきチェックサム付きメッセージを下り用セッション鍵で暗号化されているか否かを監視することができる。
【0149】
このように、IoT機器4から第1特定時刻情報468を含むパケットが送信される場合、監視部45は、信号線140を監視して、上り用セッション鍵の使用時間が、セッション鍵使用条件に含まれる上限値以下であるか否かを第1特定時刻情報468に基づいて判定することができる。監視部45には、第1特定時刻情報468が、信号線141を通じて信号線140から入力される。第1特定時刻情報468は、現在の上り用セッション鍵が生成された時刻、つまり、上り用セッション鍵の使用開始時刻を示す。監視部45は、第1特定時刻情報468が示す時刻と、記憶部460内の現在の時刻情報468が示す現在時刻と比較して、その差分を求める。監視部45は、求めた差分が、セッション鍵使用条件に含まれる上限値以下であれば、上り用セッション鍵の使用時間が上限値以下であると判定する。一方で、監視部45は、求めた差分が、セッション鍵使用条件に含まれる上限値よりも大きければ、上り用セッション鍵の使用時間が上限値を超えていると判定する。
【0150】
ユーザ機器5から第2特定時刻情報518を含むパケットが送信される場合、IoT機器4は、同様にして、信号線140を監視して、下り用セッション鍵の使用時間が上限値以下であるか否かを第2特定時刻情報518に基づいて判定することができる。
【0151】
IoT機器4は、複数のセッション鍵を使い分けてもよい。IoT機器4は、複数のセッション鍵を、例えば、メッセージの内容に応じて使い分けてもよいし、通信相手に応じて使い分けてもよいし、送信か受信かで使い分けてもよい。以下、IoT機器4が複数のセッション鍵を使い分ける場合の通信システム1の動作例について説明する。
【0152】
図13は、本例に係る通信システム1の構成の一例を示す図である。
図13に示されるように、本例では、IoT機器4とペアリングされた複数のユーザ機器5が複数のグループに分けられている。当該複数のユーザ機器5は、例えば、第1グループG1、第2グループG2及び第3グループG3に分けられている。各グループは、例えば、少なくとも1つのユーザ機器5を含む。同じユーザ機器5が複数のグループに属してもよい。
【0153】
本例では、IoT機器4のセンサ装置43は画像センサ及び気象観測センサを有する。画像センサは、例えば、IoT機器4の周辺の様子が写る画像を示す画像データを出力する。気象観測センサは、例えば、IoT機器4の周辺の気象を示す気象データを出力する。
【0154】
図14は、サーバ2が記憶部210に記憶する複数のセッション鍵使用条件の一例を示す図である。記憶部210に記憶される複数のセッション鍵使用条件には、例えば、セッション鍵使用条件601,602,603が含まれる。セッション鍵使用条件601は、IoT機器4と第1グループG1のユーザ機器5との間の上り通信において、画像データについての伝送レート5Mバイト/秒の5分間だけの伝送でセッション鍵が使用されることを示している。セッション鍵使用条件602は、IoT機器4と第2グループG2のユーザ機器5との間の上り通信において、128バイトの気象データについての1回だけの伝送でセッション鍵が使用されることを示している。セッション鍵使用条件603は、IoT機器4と第3グループG3のユーザ機器5との間の下り通信において、メンテナンス指示を示す4Kバイトのメッセージについての1回だけの伝送でセッション鍵が使用されることを示している。
図14の例では、セッション鍵は、IoT機器4とユーザ機器5との間の上り通信及び下り通信のいずれかでのみ使用されているが、同一のセッション鍵が上り通信と下り通信との両方で使用されてもよい。その場合、上り通信と下り通信とで異なるセッション鍵使用条件が設定されてもよい。
【0155】
以下に、
図13を用いて、IoT機器4が画像データを送信する場合の通信システム1の動作例について説明する。IoT機器4は画像データをユーザ機器5に送信する場合、
図13のステップs61に示されるように、画像データを送信したいことを通知するメッセージを含むパケット(第1パケットともいう)をサーバ2に送信する。
【0156】
第1パケットを受信したサーバ2は、ステップs62において、画像データに関するセッション鍵使用条件601と乱数生成器24から取得した乱数(第1乱数ともいう)とを含むメッセージを生成する。そして、サーバ2は、生成したメッセージを含むパケット(第2パケットともいう)をIoT機器4に送信する。また、ステップs63において、サーバ2は、第2パケットを第1グループG1の各ユーザ機器5に送信する。
【0157】
第1グループG1の各ユーザ機器5は、サーバ2から受信した第2パケットに含まれるセッション鍵使用条件601を記憶部210に記憶する。また、第1グループG1の各ユーザ機器5は、第2パケットに含まれる第1乱数に基づいて上述のようにセッション鍵SEKuを生成して記憶部210に記憶する。第1乱数に基づいて生成されるセッション鍵を第1セッション鍵と呼ぶことがある。
【0158】
同様に、IoT機器4は、サーバ2から受信した第2パケットに含まれるセッション鍵使用条件601を記憶部460に記憶する。また、IoT機器4は、第2パケットに含まれる第1乱数に基づいて上述のように第1セッション鍵SEKiを生成して記憶部460に記憶する。IoT機器4は、送信対象の画像データの一部を含むメッセージとそれに対応するチェックサムを第1セッション鍵SEKiで暗号化する。そして、IoT機器4は、暗号化したチェックサム付きメッセージを含むパケット(第3パケットともいう)を第1グループG1の各ユーザ機器5に送信する。本例では、IoT機器4は、送信対象の画像データの一部を含むメッセージを複数回ユーザ機器5に送信することによって(言い換えれば、第3パケットをユーザ機器5に複数回送信することによって)、送信対象の画像データのすべてをユーザ機器5に送信することが可能である。IoT機器4は、セッション鍵使用条件601を満たすように第1セッション鍵SEKiを使用する。これにより、IoT機器4から、画像データが、第1グループG1の各ユーザ機器5に対して、伝送レート5Mバイト/秒で5分間だけ送信される。IoT機器4は、画像データを第1グループG1の各ユーザ機器5に送信した旨をサーバ2に通知してもよい。
【0159】
第1グループG1の各ユーザ機器5は、IoT機器4から第3パケットを受信するたびに、受信した第3パケットに含まれる暗号化されたチェックサム付きメッセージを第1セッション鍵SEKuで復号化する。これにより、第1グループG1の各ユーザ機器5は、IoT機器4で生成された画像データの平文を取得することができる。第1グループG1の各ユーザ機器5は、画像データの平文を取得したことをサーバ2に通知してもよい。
【0160】
図15は、IoT機器4が気象データを第2グループG2のユーザ機器5に送信する場合の通信システム1の動作例を示す図である。
【0161】
IoT機器4は気象データをユーザ機器5に送信する場合、
図15のステップs71に示されるように、気象データを送信したいことを通知するメッセージを含むパケット(第4パケットともいう)をサーバ2に送信する。
【0162】
第4パケットを受信したサーバ2は、ステップs72において、気象データに関するセッション鍵使用条件602と乱数生成器24から取得した乱数(第2乱数ともいう)とを含むメッセージを生成する。そして、サーバ2は、生成したメッセージを含むパケット(第5パケットともいう)をIoT機器4に送信する。また、ステップs73において、サーバ2は、第5パケットを第2グループG2の各ユーザ機器5に送信する。
【0163】
第2グループG2の各ユーザ機器5は、サーバ2から受信した第5パケットに含まれるセッション鍵使用条件602を記憶部210に記憶する。また、第2グループG2の各ユーザ機器5は、第5パケットに含まれる第2乱数に基づいてセッション鍵SEKuを生成して記憶部210に記憶する。第2乱数に基づいて生成されるセッション鍵を第2セッション鍵と呼ぶことがある。
【0164】
同様に、IoT機器4は、サーバ2から受信した第5パケットに含まれるセッション鍵使用条件602を記憶部460に記憶する。また、IoT機器4は、第5パケットに含まれる第2乱数に基づいて第2セッション鍵SEKiを生成して記憶部460に記憶する。IoT機器4は、送信対象の気象データをメッセージとして含むチェックサム付きメッセージを第2セッション鍵SEKiで暗号化する。そして、IoT機器4は、暗号化したチェックサム付きメッセージを含むパケット(第6パケットともいう)を第2グループG2の各ユーザ機器5に送信する。IoT機器4は、セッション鍵使用条件602を満たすように第2セッション鍵SEKiを使用する。これにより、IoT機器4から、気象データとしての128バイトのメッセージが、第2グループG2の各ユーザ機器5に対して1回だけ送信される。IoT機器4は、気象データを第2グループG2の各ユーザ機器5に送信した旨をサーバ2に通知してもよい。
【0165】
第2グループG2の各ユーザ機器5は、IoT機器4から受信した第6パケットに含まれる暗号化されたチェックサム付きメッセージを第2セッション鍵SEKuで復号化する。これにより、第2グループG2の各ユーザ機器5は、IoT機器4で生成された気象データの平文を取得することができる。第2グループG2の各ユーザ機器5は、気象データの平文を取得したことをサーバ2に通知してもよい。
【0166】
図16は、第3グループG3のユーザ機器5がメンテナンス指示を示すメッセージをIoT機器4に送信する場合の通信システム1の動作例を示す図である。
【0167】
第3グループG3の対象ユーザ機器5がIoT機器4にメンテナンス指示を行う場合、
図16のステップs81に示されるように、IoT機器4にメンテナス指示を行いたいことを通知するメッセージを含むパケット(第7パケットともいう)をサーバ2に送信する。
【0168】
第3グループG3のユーザ機器5から第7パケットを受信したサーバ2は、ステップs82において、メンテナンスに関するセッション鍵使用条件603と乱数生成器24から取得した乱数(第3乱数ともいう)とを含むメッセージを生成する。そして、サーバ2は、生成したメッセージを含むパケット(第8パケットともいう)を第3グループG3の対象ユーザ機器5に送信する。また、ステップs83において、サーバ2は、第8パケットをIoT機器4に送信する。サーバ2は、第3グループG3以外のグループのユーザ機器5から第7パケットを受信すると、第8パケットを生成しない。このとき、サーバ2は、メンテナンス指示を行うことができないことを、第3グループG3以外のグループのユーザ機器5に対して通知してもよい。
【0169】
第3グループG3の対象ユーザ機器5は、サーバ2から受信した第8パケットに含まれるセッション鍵使用条件603を記憶部210に記憶する。また、第3グループG3の対象ユーザ機器5は、第8パケットに含まれる第3乱数に基づいてセッション鍵SEKuを生成して記憶部210に記憶する。第3乱数に基づいて生成されるセッション鍵を第3セッション鍵と呼ぶことがある。第3グループG3の対象ユーザ機器5は、メンテナンス指示を示すメッセージを含むチェックサム付きメッセージを第3セッション鍵SEKuで暗号化する。そして、対象ユーザ機器5は、暗号化したチェックサム付きメッセージを含むパケット(第9パケットともいう)をIoT機器4に送信する。対象ユーザ機器5は、セッション鍵使用条件603を満たすように第3セッション鍵SEKuを使用する。これにより、対象ユーザ機器5から、メンテナンス指示を示す4KバイトのメッセージがIoT機器4に対して1回だけ送信される。対象ユーザ機器5は、メンテンス指示をIoT機器4に行った旨をサーバ2に通知してもよい。
【0170】
同様に、IoT機器4は、サーバ2から受信した第8パケットに含まれるセッション鍵使用条件603を記憶部460に記憶する。また、IoT機器4は、第8パケットに含まれる第3乱数に基づいて第3セッション鍵SEKiを生成して記憶部460に記憶する。その後、IoT機器4は、対象ユーザ機器5から第9パケットを受信すると、第9パケットに含まれる暗号化されたチェックサム付きメッセージを第3セッション鍵SEKiで復号化する。これにより、IoT機器4は、ユーザ機器5で生成された、メンテナンス指示を示すメッセージの平文を取得することができる。IoT機器4は、メンテナンス指示を示すメッセージを取得すると、例えば、IoT機器4を初期化してIoT機器4の再起動を行う。IoT機器4は、対象ユーザ機器5からメンテナンス指示を受けると、その旨をサーバ2に通知してもよい。
【0171】
上記の説明から理解できるように、
図13~
図16の例では、IoT機器4は、第1セッション鍵、第2セッション鍵及び第3セッション鍵を、メッセージの内容、通信相手及び送信か受信かに応じて使い分けている。本例では、IoT機器4の監視部45は、第1セッション鍵が使用されている場合、信号線140を監視してセッション鍵使用条件601が満たされているか否かを監視する。また、IoT機器4の監視部45は、第2セッション鍵が使用されている場合、信号線140を監視してセッション鍵使用条件602が満たされているか否かを監視する。そして、IoT機器4の監視部45は、第3セッション鍵が使用されている場合、信号線140を監視してセッション鍵使用条件603が満たされているか否かを監視する。本例では、IoT機器4とユーザ機器5との間のE2EE通信で使用されるパケットに含まれるヘッダには、当該パケットに含まれるチェックサム付きメッセージが、第1セッション鍵、第2セッション鍵及び第3セッション鍵のうちのどのセッション鍵で暗号化されているかを示す情報が含まれている。よって、監視部45は、信号線140に流れるヘッダを解析することによって、信号線140に流れるチェックサム付きメッセージの暗号化で使用されているセッション鍵を特定することができる。
【0172】
上記の暗号化通信では、暗号化されたチェックサム付きメッセージを含むパケットが使用されているが、暗号化されたメッセージと平文のチェックサムとを含むパケットが使用されてもよい。
【0173】
また、ユーザ機器5は、IoT機器4と同様に、制御部50と通信部51との間の信号線を監視して、監視結果の履歴を示す履歴データを生成する監視部を備えてもよい。この場合、ユーザ機器5は、履歴データをサーバ2に送信してもよい。
【0174】
また、上記の例では、同じサーバ2が、シードデータの発行と、履歴データ466に基づくIoT機器4の制御とを行っているが、シードデータの発行を行うサーバと、履歴データ466に基づいてIoT機器4の制御を行うサーバとが別々に設けられてもよい。
【0175】
上記の例では、サーバ2とIoT機器4との間で送受信されるシード要求メッセージ及びシードデータは、共通鍵であるサービス鍵によって暗号化されていたが、代わりに公開鍵暗号方式が使用されて、シード要求メッセージ及びシードデータがサーバ2とIoT機器4との間で送受信されてもよい。その場合、サーバ2は公開鍵暗号方式を用いてセッション鍵使用条件を暗号化する。そして、サーバ2は、暗号化されたシードデータ及びセッション鍵使用条件をIoT機器4に送信する。あるいは、サーバ2とIoT機器4との間では、公開鍵暗号方式が使用されてサービス鍵が共有されてもよい。
【0176】
公開鍵暗号が用いられた暗号通信では、例えば、TLS(Transport Layer Security)あるいはDTLS(Datagram Transport Layer Security)等のプロトコルが利用されてもよい。TLSは、TCP/IPを利用して、公開鍵証明書(デジタル証明書)による通信相手の認証(一般的にはサーバの認証)と、公開鍵暗号方式で共通鍵の受け渡しを行い、あとは受け渡した共通鍵を使って共通鍵暗号方式(言い換えれば秘密鍵暗号方式)でやり取りすることで、安全(セキュア)な通信路を利用できるようにする仕組みである。DTLSは、TLSにおけるTCP/IPの変わりに、UDP(User Datagram Protocol)を用いる仕組みである。公開鍵暗号方式が用いられる場合、記憶部210及び記憶部460は、公開鍵暗号方式に必要となる公開鍵証明書及び秘密鍵を記憶する。
【0177】
上記の例では、IoT機器4において、ユーザ機器5宛てのメッセージは制御部40で暗号化されているが、監視部45で暗号されてもよい。つまり、監視部45が、サーバ2向けのメッセージもユーザ機器5向けのメッセージも暗号化して制御部40に入力してもよい。
【0178】
上記の例では、監視部45は、制御部40及び通信部41を介してサーバ2と通信しているといえる。監視部45は、信号線140に流れるメッセージが暗号化されているか否かにかかわらず、信号線140を監視して、制御部40が通信部41に送信したメッセージが、監視部45が制御部40に送信したメッセージと同一であるか否かを監視してもよい。つまり、監視部45は、信号線140を監視して、監視部45が制御部40に渡したメッセージと同じメッセージが正しく通信部41に入力されるか(言い換えれば信号線140を流れるか)を監視してもよい。また、監視部45は、信号線140に流れるメッセージが暗号化されているか否かにかかわらず、信号線140を監視して、通信部41から制御部40に送信されたメッセージが、監視部45が制御部40から受信したメッセージと同じであるか否かを監視してもよい。つまり、監視部45は、信号線140を監視して、通信部41が制御部40に渡したメッセージ(言い換えれば信号線140を流れるメッセージ)と同じメッセージが正しく監視部45に入力されるかを監視してもよい。このような場合、監視部45とサーバ2との間で送受信されるパケット(対象パケット)のヘッダ(対象ヘッダ)に、対象パケットに含まれるメッセージ(対象メッセージ)に対してどのような処理が行われるべきかを示す情報が含まれる。そのため、監視部45は、対象ヘッダに基づいて、対象メッセージが暗号化されているか否かの確認をすべきか、対象メッセージが、監視部45が送信または受信したメッセージと一致しているかの確認をすべきか、または、上記いずれの確認も行うべきではないかを判定することができる。なお、このような判定は、対象ヘッダに含まれる情報に基づいて行われるのではなく、プロトコル解析によって行われてもよい。このプロトコル解析は、一連のパケットの解析(シーケンス解析)を含めて行ってもよい。
【0179】
上記に記載のIoT機器4とユーザ機器5との暗号化通信で使用されるセッション鍵は、サーバ2を介して既知の公開鍵方式を用いて共有されてもよい。また、上記セッション鍵は、サーバ2とIoT機器4の間と、サーバ2とユーザ機器5の間のそれぞれで公開鍵暗号方式により共有され、結果的に三者間で共有されてもよい。
【0180】
上記の例では、通信システム1は、サーバ2、IoT機器4及びユーザ機器5の3つの要素からなる通信システムであるが、サーバ2を備えない通信システムであってもよい。サーバ2を備えない通信システム1では、例えば、IoT機器4とユーザ機器5は、サーバ2を介さずにE2EE暗号鍵の共有を行い、共有されたE2EE暗号鍵から生成されたセッション鍵、または共有されたE2EE暗号鍵そのものを用いて暗号化通信を行う。
【0181】
上記の例では、通信システム1は、サーバ2、IoT機器4及びユーザ機器5が通信ネットワーク10によって互いに接続された通信システムであるが、サーバ2、IoT機器4及びユーザ機器5のいずれか1つの要素を介して他の2つの要素が通信を行う通信システムであってもよい。例えば、ユーザ機器5を介してサーバ2とIoT機器4が通信を行う場合、IoT機器4とサーバ2は直接通信を行わず、常にユーザ機器5を介して間接的に通信を行う。この場合、IoT機器4とサーバ2との間の通信が、サービス鍵または公開鍵によって暗号化されることによって、当該通信がユーザ器5を経由した場合であっても、外部への情報流出を防ぐことができる。
【0182】
また、上記の例では、セッション鍵使用条件がサーバからIoT機器4及びユーザ機器5に通知されているが、セッション鍵使用条件はIoT機器4及びユーザ機器5の間で予め共有されていてもよい。
【0183】
また、上記の例では、暗号処理部420は、制御部40において、プロセッサ400がプログラム411を実行することによって機能的に実現されているが、制御部40とは別のハードウェア回路で実現されてもよい。この場合、暗号処理部420は、例えば、制御部40とは別に設けられたMCU(Micro Controller Unit)において、CPU等のプロセッサがプログラムを実行することによって機能的に実現されてもよい。また、暗号処理部420は、制御部40とは別に設けられ、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また、暗号処理部420は、監視部45のプロセッサ450がプログラム461を実行することによって機能的に実現されてもよい。
【0184】
ここに開示される要素の機能は、当該開示される要素を実行するように構成された、あるいは当該開示される機能を実行するようにプログラミングされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(「特定用途向け集積回路」)、従来の回路構成及び/またはそれらの組み合わせを含む回路構成あるいは処理回路構成が用いられて実装されてもよい。プロセッサは、それが、その中にトランジスタ及び他の回路構成を含むとき、処理回路構成あるいは回路構成として見なされる。本開示において、回路構成、ユニットあるいは手段は、挙げられた機能を実行するハードウェア、あるいは当該機能を実行するようにプログラミングされたハードウェアである。ハードウェアは、挙げられた機能を実行するようにプログラミングされた、あるいは当該機能を実行するように構成された、ここで開示されるいかなるハードウェアあるいは既知の他のものであってもよい。ハードウェアが、あるタイプの回路構成として見なされるかもしれないプロセッサであるとき、回路構成、手段あるいはユニットは、ハードウェアとソフトウェアの組み合わせ、ハードウェアを構成するために用いられるソフトウェア及び/またはプロセッサである。
【0185】
以上のように、通信システム1は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【0186】
1 通信システム
2 サーバ
3 通信装置
4 IoT機器
5 ユーザ機器
41,51 通信部
45 監視部
140 信号線