以下に添付図面を参照して、この発明にかかる通信装置の好適な実施形態を詳細に説明する。
(第1の実施形態)
第1の実施形態にかかる通信装置は、予め設定されたブートストラップクレデンシャル(第2認証情報)を用いて、機器登録サーバとの間でブートストラップ認証処理を行う。ブートストラップ認証処理は、通信装置が他の装置(サーバ装置、機器制御装置等)との間の通信に用いる認証情報(オペレーショナルクレデンシャル:第1認証情報)を発行するための認証処理である。これにより、プッシュボタン設定の場合でも暗号化された通信路を通信装置と機器登録サーバとの間にエンドツーエンドで設定することが可能となる。従って、中間ノードによってクレデンシャルが盗聴されるMiTM攻撃を防止することができる。
また、ブートストラップクレデンシャルおよびオペレーショナルクレデンシャル(第1認証情報)に機器ケーパビリティを特定可能な情報を含める。これにより、機器のケーパビリティに関する情報を検証することが可能となる。従って、本来、機器ケーパビリティ上接続を許可してはいけない通信機器に対してクレデンシャル設定を行わないようにし、対象システムの物理的な安全性の向上が可能となる。
図1は、第1の実施形態の通信システムの構成例を示すブロック図である。本実施形態の通信システムは、通信装置100と、サーバ装置としての機器登録サーバ200と、制御装置としての機器制御装置300と、を備える。
通信装置100と機器登録サーバ200との間、および、通信装置100と機器制御装置300との間の通信のMAC(Media Access Control)層および物理層は、有線LAN、無線LAN、Bluetooth(登録商標)、ZigBee(登録商標)等の通信プロトコルを用いて実現してもよい。また、通信装置100と機器登録サーバ200との間で交換される認証情報であるブートストラップクレデンシャル、および、通信装置100と機器制御装置300との間で交換される通常通信のための認証情報であるオペレーショナルクレデンシャルは、データリンクレイヤ、ネットワークレイヤ、トランスポートレイヤ、および、アプリケーションレイヤなどのいずれのレイヤのプロトコルを用いて交換してもよい。認証情報をデータリンクレイヤで交換する場合には、IEEE802.1X、および、IEEE802.15.9などのプロトコルを用いてもよい。認証情報をデータリンクよりも上位レイヤのプロトコルを用いて交換する場合には、RFC5191、および、IKEv2(Internet Key Exchange version 2)、TLS(Transport Layer Security)を使用してもよい。
ブートストラップクレデンシャルは、ブートストラップ認証処理が実行される前に、例えば、通信装置100の製造時、出荷時または販売時に、通信装置100の利用者が容易にアクセスできない方式(暗号化を施す、および、ブートストラップクレデンシャルを小ブロックに分割し各ブロックを記憶領域の広い範囲に分散して記憶するなど)で通信装置100に設定される。また、一旦通信装置100に設定されたブートストラップクレデンシャルは、更新されてもよい。その場合、通信装置100のソフトウェア更新時に更新ソフトウェアの中に更新ブートストラップクレデンシャルを入れることにより、ブートストラップクレデンシャルを更新してもよい。
図2は、第1の実施形態にかかる通信装置100の構成の一例を示すブロック図である。図2に示すように、通信装置100は、駆動部101と、受付部102と、第1認証処理部111と、第2認証処理部112と、通信処理部121と、を備えている。
通信処理部121は、上記のように有線LAN、無線LAN、Bluetooth(登録商標)、ZigBee等の任意の通信プロトコルに従い外部装置との間の通信を制御する。
駆動部101は、ハードウェア駆動およびソフトウェア駆動により駆動する。ブートストラップ認証処理は、駆動部101が駆動されることを契機に開始される。駆動部101は、例えば、ハードウェア駆動またはソフトウェア駆動のブートストラップボタンにより実現できる。駆動部101は、ユーザにより押下されたときに、プッシュボタンイベントを生成する。
受付部102は、ブートストラップ認証処理の実行指示を受け付ける。例えば、受付部102は、駆動部101により生成されたプッシュボタンイベントを実行指示として受け付ける。受付部102は、受け付けた実行指示(プッシュボタンイベント)を第1認証処理部111および第2認証処理部112に送信する。
ソフトウェア駆動によるブートストラップボタンの場合、リモコンやRFIDタグなどの遠隔装置から通信処理部121を介してプッシュボタンイベントが生成されてもよい。この場合、受付部102は、遠隔装置から送信されたプッシュボタンイベントを実行指示として受け付ける。
ハードウェア駆動によるブートストラップボタンの場合、駆動部101が可動部を有してもよい。この場合、駆動部101は、ユーザが可動部を手で押すなどの動作により駆動する。駆動部101が可動部を有しない場合には、ユーザの体の一部が駆動部101に接触するなどの動作で駆動部101が駆動するように構成してもよい。駆動部101が音入力インターフェースを持つ場合にはユーザによる発声や手を叩く音などの動作により駆動部101が駆動するように構成してもよい。
第1認証処理部111は、ブートストラップクレデンシャルを用いて機器登録サーバ200との間でブートストラップ認証処理を実行する。例えば、第1認証処理部111は、プッシュボタンイベントを受信すると、機器登録サーバ200との間で通信処理部121を介したブートストラップ認証処理を開始する。第1認証処理部111は、ブートストラップ認証処理が成功終了すると機器登録サーバ200から取得したオペレーショナルクレデンシャルを第2認証処理部112に渡す。ブートストラップ認証処理は、プッシュボタンイベントを受信後、一定時間(Walk Time)が経過すると途中状態であっても終了する。
第2認証処理部112は、オペレーショナルクレデンシャルを用いて、機器制御装置300などの外部装置との間の通信を確立するための通信認証処理を、外部装置との間で実行する。例えば、第2認証処理部112は、オペレーショナルクレデンシャルを保持しており、かつ、機器制御装置300に未接続の場合には通信認証処理を開始する。また、第2認証処理部112は、プッシュボタンイベントを受信すると、一定時間の間、機器制御装置300との間で通信処理部121を介した通信認証処理を禁止し、途中状態の通信認証処理は直ちに終了する。
図3は、第1の実施形態にかかる機器登録サーバ200の構成の一例を示すブロック図である。図3に示すように、機器登録サーバ200は、駆動部201と、受付部202と、認証処理部211と、通信処理部221と、を備えている。
通信処理部221は、有線LAN、無線LAN、Bluetooth(登録商標)、ZigBee等の任意の通信プロトコルに従い外部装置との間の通信を制御する。
駆動部201は、ハードウェア駆動およびソフトウェア駆動により駆動する。受付部202は、ブートストラップ認証処理の実行指示を受け付ける。駆動部201および受付部202の構成は、それぞれ通信装置100の駆動部101および受付部102と同様であるため説明を省略する。
認証処理部211は、受付部202からプッシュボタンイベントを受信すると、通信装置100との間で通信処理部221を介したブートストラップ認証処理を開始する。認証処理部211は、プッシュボタンイベントを受信後、一定時間経過すると途中状態であってもブートストラップ認証処理を終了する。
図4は、第1の実施形態にかかる機器制御装置300の構成の一例を示すブロック図である。図4に示すように、機器制御装置300は、認証処理部301と、通信処理部311とを備えている。
通信処理部311は、有線LAN、無線LAN、Bluetooth(登録商標)、ZigBee等の任意の通信プロトコルに従い外部装置との間の通信を制御する。認証処理部301は、通信装置100との間で通信処理部311を介してオペレーショナルクレデンシャルを用いた通信認証処理を行う。
次に、このように構成された第1の実施形態にかかる通信装置100および機器登録サーバ200との間で実行されるブートストラップ通信処理について説明する。図5は、第1の実施形態におけるブートストラップ通信処理の一例を示すシーケンス図である。
ユーザの動作等により通信装置100および機器登録サーバ200のブートストラップボタンが駆動される(ステップS101、ステップS102)と、一定時間(Walk Time)の間、通信装置100および機器登録サーバ200は、ブートストラップクレデンシャルの送信および受信を有効とする。一定時間の間、通信装置100は、まず機器登録サーバ200の通信可能なアドレスを発見するための機器登録サーバ発見手順を実行する(ステップS103)。機器登録サーバ発見には、DHCP(Dynamic Host Configuration Protocol)、DNS(Domain Name System)、および、UPnP(Universal Plug and Play)を用いてもよい。
次に、通信装置100は、機器登録サーバ200との間でブートストラップクレデンシャル(BtCred)を用いたブートストラップ認証処理を実行する(ステップS104)。ブートストラップ認証処理の中で、通信装置100は、機器登録サーバ200との間に暗号化が施される安全な通信路を確立する。通信装置100は、確立した安全な通信路上で機器登録サーバ200に自身の機器ケーパビリティを送信する。ブートストラップクレデンシャルに証明書を含む場合には、通信装置100は、機器登録サーバ200との間に暗号化が施される安全な通信路を確立する際、自身の機器ケーパビリティを含む自身の証明書に対応する秘密鍵で署名したブートストラップ認証要求メッセージを機器登録サーバ200に送信してもよい。この場合、確立した安全な通信路上で自身の機器ケーパビリティを送信する必要はない。また、ブートストラップクレデンシャルにIBEクレデンシャルを含む場合には、通信装置100は、機器登録サーバ200との間に暗号化が施される安全な通信路上を確立する際、自身の機器ケーパビリティを含む自身のIDを機器登録サーバ200に送信してもよい。この場合、確立した安全な通信路上で自身の機器ケーパビリティを送信する必要はない。
機器登録サーバ200は、通信装置100から受信した機器ケーパビリティを検証する(ステップS105)。機器ケーパビリティの検証に成功した場合、機器登録サーバ200は、この機器ケーパビリティを含むオペレーショナルクレデンシャル(OpCred)を発行する(ステップS106)。機器登録サーバ200は、発行したオペレーショナルクレデンシャルを、安全な通信路上で通信装置100に送信する(ステップS107)。これによりブートストラップ認証処理が成功終了する。
次に、このように構成された第1の実施形態にかかる通信装置100および機器制御装置300との間で実行される通常通信処理について説明する。図6は、第1の実施形態における通常通信処理の一例を示すシーケンス図である。
図6では、通信装置100は、既に機器登録サーバ200からオペレーショナルクレデンシャルを取得しているものとする。
通信装置100は、まず機器制御装置300の通信可能なアドレスを発見するための機器制御装置発見手順を実行する(ステップS201)。機器制御装置発見には、DHCP、DNS、および、UPnPを用いてもよい。次に、通信装置100は、機器制御装置300との間でオペレーショナルクレデンシャル(OpCred)を用いた通信認証処理を実行する(ステップS202)。この通信認証処理の中で、通信装置100は機器制御装置300との間で暗号化が施される安全な通信路を確立し、この安全な通信路上で機器制御装置300に自身の機器ケーパビリティを送信する。オペレーショナルクレデンシャルに証明書を含む場合には、通信装置100は、機器制御装置300との間に暗号化が施される安全な通信路を確立する際、自身の機器ケーパビリティを含む自身の証明書に対応する秘密鍵で署名した通信認証要求メッセージを機器制御装置300に送信してもよい。この場合、確立した安全な通信路上で自身の機器ケーパビリティを送信する必要はない。また、オペレーショナルクレデンシャルにIBEクレデンシャルを含む場合には、通信装置100は、機器制御装置300との間に暗号化が施される安全な通信路上を確立する際、自身の機器ケーパビリティを含む自身のIDを機器制御装置300に送信してもよい。この場合、確立した安全な通信路上で自身の機器ケーパビリティを送信する必要はない。
機器制御装置300の認証処理部301は、通信装置100から受信した機器ケーパビリティを検証する(ステップS203)。機器ケーパビリティの検証に成功した場合、通信認証処理が成功終了する。なお、通信認証処理とネットワークアクセス認証を統合してもよい。例えば、ZigBee IPのネットワークアクセス認証に使用されるRFC5191を通信認証処理兼ネットワークアクセス認証に使用してもよい。この場合、RFC5191によるZigBee IPネットワークアクセス認証成功が通信認証処理成功も意味する。通信認証処理が成功した後、通信装置100は、機器制御装置300との間でアプリケーション通信を実行する(ステップS204)。
通信装置100は、家電機器、スマートメータ、電気自動車、および、ソーラーパネルに実装してもよい。機器登録サーバ200は、HEMSサーバ、スマートメータ、電力会社サーバ、インターネットサービスプロバイダサーバ、コンセントレータ、ルータ、無線LANアクセスポイント、および、LANスイッチに実装してもよい。機器制御装置300は、HEMSサーバ、PC(パーソナルコンピュータ)、タブレット端末、および、携帯電話に実装してもよい。ブートストラップクレデンシャルはICカード(スマートカード)に組み込んでもよい。
ブートストラップクレデンシャルは、共通鍵クレデンシャル、公開鍵クレデンシャル、および、IBE(IDベース暗号)クレデンシャルを使用してもよい。一般にブートストラップ認証処理は相互認証が基本である。ブートストラップクレデンシャルが、機器登録サーバ200を認証するために必要な認証情報(例えば通信装置100および機器登録サーバ200の双方が信頼する認証局の公開鍵など)を含むように構成してもよい。ブートストラップクレデンシャルは機器ケーパビリティを含む。
オペレーショナルクレデンシャルは、共通鍵クレデンシャル、公開鍵クレデンシャル、IBEクレデンシャルを使用してもよい。また、オペレーショナルクレデンシャルは機器ケーパビリティを含む。
ブートストラップクレデンシャルおよびオペレーショナルクレデンシャルに含まれる機器ケーパビリティの例として、機種識別子や機器プロファイル識別子が挙げられる。機種識別子は、機器メーカ名、機器種別、機器型番を含んでもよい。機器種別は、例えば、”airconditioner”などの文字列でもよい。機器プロファイル識別子は、文字列でもよく、また、階層化されていてもよい。例えば、通信装置100がエコーネット(ECHONET(登録商標))対応エアコンの場合、”echonet”をプロファイル大項目、airconditionerをプロファイル小項目として構成した文字列”echonet.airconditioner”を、機器プロファイル識別子として使用可能である。ブートストラップクレデンシャルは、通信装置100ごとに固有な機器識別子(製造番号など)や定格電圧、定格電流、電源周波数などを含んでもよい。
ブートストラップ認証処理のための認証プロトコルとしてRFC3748で定義されるEAP(Extensible Authentication Protocol)を使ってもよい。その場合、RFC5191で定義されるPANA(Protocol for carrying Authentication for Network Access)、RFC4306で定義されるIKEv2、またはIEEE 802.1XをEAPトランスポートとして使用してもよい。
IBEクレデンシャルを使用する場合には、IDに機器ケーパビリティやIDの有効期間を示す情報を含んでもよい。例えば、IDとして”foo@example.com allocated_date=20150101 expiration date=20151231 capability=ECHONET.airconditioner”という文字列を使用可能である。例えばIDが有効期間を含む場合、IBEクレデンシャルで認証された装置はこの有効期間の間だけ通信することができる。また、IBEクレデンシャルを使用する場合には、後述するEAP−IMA(IBE-based Mutual Authentication)を相互認証メソッドとして使用してもよい。
また、ブートストラップ認証処理とネットワークアクセス認証とを統合してもよい。例えば、ZigBee IPのネットワークアクセス認証に使用されるRFC5191をブートストラップ認証処理兼ネットワークアクセス認証に使用した場合、RFC5191によるZigBee IPネットワークアクセス認証成功がブートストラップ認証処理成功も意味する。
また、オペレーショナルクレデンシャル送信に使用される安全な通信路として、後述するEAP−IMAやRFC5216で指定されるEAP−TLSなどのEAP認証メソッドが提供する属性暗号化機構により生成される安全な通信路を使用してもよい。また、http://tools.ietf.org/html/draft-yegin-pana-encr-avp-01、http://tools.ietf.org/id/draft-ohba-pana-keywrap-04.txtで規定される属性暗号化機構により生成される安全な通信路を使用してもよい。
次に、IBEクレデンシャルを用いた相互認証の方法について以下に説明する。IBEは、ペアリング関数と呼ばれる、ある楕円曲線上の2点を、ある有限体Fの元(げん)に変換する双線形写像を使用する。一般にある写像eがペアリング関数であるとき、e(aP,bQ)=e(P,Q)abが成立する。ここで、a,bは任意の整数、P,Qは楕円曲線上の点である。このようなペアリング関数の例として、テイト(Tate)ペアリング、ベイユ(Veil)ペアリングが存在する。
以下では、<a1,a2,・・・aN>は値a1、a2、・・・、aNのN項組を表わす。また、s1|s2|・・・|sNは、は文字列s1、s2、・・・、sNの連結を表わす。
IBEは、暗号化エンティティ、復号化エンティティ、および、鍵生成センターの3つの機能要素から構成される。暗号化エンティティおよび復号化エンティティをユーザと呼ぶ。
ブートストラップクレデンシャルにIBEクレデンシャルを用いる場合は、例えば、鍵生成センターが、製造業者や認定機関が管理するサーバ(図示せず)に相当する。また、暗号化エンティティおよび復号化エンティティは、通信装置100および機器登録サーバ200に相当する。オペレーショナルクレデンシャルにIBEクレデンシャルを用いる場合は、鍵生成センターが、機器制御装置300に相当する。また、暗号化エンティティおよび復号化エンティティは、通信装置100および機器制御装置300に相当する。
以下の説明では、楕円曲線を一意に指定するためのパラメータ(楕円曲線指定子)が各ユーザおよび鍵生成センターで事前設定されているものとする。「楕円曲線」という用語は、各ユーザおよび鍵生成センターに事前設定された共通の楕円曲線指定子に対応する楕円曲線を指すものとする。
IBEアルゴリズムは、一般に初期設定(Setup)、秘密鍵生成(Extract)、暗号化(Encryption)、復号(Decryption)の4フェーズから構成される。
初期設定フェーズは、鍵生成センターの初期化処理であり、鍵生成センター内で閉じた処理である。初期設定フェーズで、鍵生成センターは、マスター秘密鍵s、および、鍵生成センター公開鍵Ppub=sPを生成する。Pは楕円曲線上の固定点である。
秘密鍵生成フェーズは、ユーザの初期化処理である。秘密鍵生成フェーズで、ユーザは、バイト列で表わされる自身の識別子ID、秘密鍵k_ID、Ppub、およびPを、暗号化された安全な通信路上で鍵生成センターから取得する。
鍵生成センターはk_IDをk_ID=s・K_IDとして生成する。ここで、IDはユーザの識別子、K_IDはK_ID=H1(ID)で与えられる識別子IDの公開鍵、H1はハッシュ関数である。なお、IDのバイト列の一部または全部をユーザが指定することが可能である。
暗号化フェーズは、暗号化エンティティの暗号化処理である。暗号化フェーズで、暗号化エンティティは、乱数rを生成し、E[b,M]=<rP,C>を復号化エンティティに送信する。ここで、bは復号化エンティティの識別子、Mは平文、Cは平文Mに対する暗号文を表わす。例えば、IBEアルゴリズムにSAKKE(Sakai-Kasahara Key Exchange)を用いた場合、C=M+H2(e(rK_b,Ppub))として計算される。ここで、H2はハッシュ関数、ペアリング関数EにはTate−Lichtenbaumペアリング関数が使用される。rは、暗号化エンティティが生成した乱数、K_bはID=bとした場合のK_ID、つまり、復号化エンティティbの公開鍵である。rK_bはrとK_bの積である。
復号フェーズは、復号化エンティティの復号化処理である。復号フェーズで、復号化エンティティは、暗号化エンティティから受信した<rP,C>を用いて平文Mを復号化する。例えば、IBEアルゴリズムにSAKKEを用いた場合、M=E−1[b,<rP,C>]=C−H2(e(K_b,rP))となる。
次に、IBEアルゴリズムを用いた相互認証プロトコルであるIMAについて説明する。
IMAは、1.5メッセージ往復で相互認証が完了するメインモードと、2メッセージ往復で相互認証が完了するパズルモードの2種類のモードを持つ。パズルモードはDoS(Denial of Service)攻撃に対する耐性を持つ。
以下、それぞれのモードのメッセージ交換を定義する。「A→B:X」は、AからBに対する、内容がXであるメッセージ送信を示す。以下に記載するIMAは、E[x,M]=<rP,C>(Cは平文Mに対する暗号文)の形態の暗号化関数を使用する任意のIBEアルゴリズムに対し動作する。
メインモードの相互認証は以下のように定義される。
A→B:<a,N_a>
A←B:E[a,b|N_a|N_b|attr_b]
A→B:E[b,N_b|attr_a]
ここで、Aはイニシエータ、Bはレスポンダ、aはイニシエータの識別子、bはレスポンダの識別子、N_xは識別子x(xはaまたはb)のランダムバイト系列、attr_xは、識別子x(xはaまたはb)のエンティティの属性リストである。
メインモードの第2番目および第3番目のメッセージで、相手から受信した暗号化関数Eの出力を復号化できなかった場合、または、復号後のバイト系列の所定の位置に自身が生成したランダムバイト系列を含まない場合に、認証成功とする。
パズルモードの相互認証は以下のように定義される。
A→B:<a,N_a>
A←B:<b,N_b,puzzle>
A→B:<solution,E[b,a|N_a|N_b|attr_a]>
A←B:E[a,N_a|attr_b]
ここで、puzzleはレスポンダが生成する問題で、solutionはpuzzleに対する解答である。他の表記はメインモードと同じである。
レスポンダは、イニシエータからpuzzleに対する正しいsolutionを受信して初めてそのイニシエータに対する状態を生成する。solutionが正しくない場合には、パズルモードの第2番目メッセージはレスポンダで廃棄される。
パズルモードの第3番目および第4番目のメッセージで、相手から受信した暗号化関数Eの出力を復号化できなかった場合、または、復号後のバイト系列の所定の位置に自身が生成したランダムバイト系列を含まない場合に、認証成功とする。
Puzzleは、<puzzle_type,puzzle_content>で表わされる。ここで、puzzle_typeは問題の種別、puzzle_contentは問題の内容である。
puzzleで指定される問題の一例として、ランダム値をpuzzle_contentに含み、このランダム値をsolutionに含む場合に正解とするクッキーパズルがある。また、puzzleで指定される問題の別の例として、あるペアリング関数Eについて、puzzle_content=<a1,a2>に対し、solution=e(a1,a2)の場合に正解とするペアリングパズルがある。
attr_aまたはattr_bには、機器ケーパビリティ、オペレーショナルクレデンシャル、または、IEEE 802.15.4などのデータリンクプロトコル、および、NTP(Network Time Protocol)などアプリケーションレイヤプロトコルの暗号化に使用される暗号鍵および付随する属性(鍵ID、鍵ライフタイム、および、リプレイカウンタ初期値など)を含んでもよい。
次に、上述のIMAを用いたEAP認証メソッドであるEAP−IMAについて説明する。EAP−IMAのメッセージ交換は以下のように定義される。
A←B:EAP−Request/IBE#1{<b,N_b>}
A→B:EAP−Response/IBE#2{E[b,a|N_a|N_b|attr_a}
A←B:EAP−Request/IBE#3{<E[a,N_a|attr_b],Finished_S>}
A→B:EAP−Response/IBE#4{Finished_P}
A←B:EAP−Success
AはEAPピア、BはEAPサーバである。ブートストラップ認証処理にEAP−IMAを用いる場合は、例えば、通信装置100がEAPピアに相当し、機器登録サーバ200がEAPサーバに相当する。通信認証処理にEAP−IMAを用いる場合は、例えば、通信装置100がEAPピアに相当し、機器制御装置300がEAPサーバに相当する。
IBE#iは、EAP−IMAメソッドの第i番目のペイロードである。Finished_Sは、Finished_S=Hash(k_m,IBE#1|IBE#2)として計算されるバイト列である。Finished_Pは、Finished_P=Hash(k_m,IBE#1|IBE#2|IBE#3)として計算されるバイト列である。ここで、k_mは後述するEAP−IMAメッセージ認証鍵であり、Hashはハッシュ関数である。ハッシュ関数として例えばHMAC−SHA1が適用できる。
次に、EAP−IMAで生成される鍵について説明する。まず、EAP−IMAのマスター鍵MKは以下のように計算される。
MK=KDF(DHS,Na|Nb,64+64+L)
ここで、KDFは任意サイズのバイト列を生成可能な鍵導出関数である。KDFの第1パラメータは鍵生成鍵、第2パラメータは鍵ラベル、第3パラメータは生成バイト列のバイト長である。Lはk_mのバイト長である。DHSは、Diffie−Hellman共通鍵であり、以下のように計算される。
DHS=Qx
ただし、Qxは、Q=r_a・r_b・Pとなる楕円曲線上の点Qのx座標値である。r_aはEAPピアがIBE#2生成時に暗号化関数E内で生成したIMAのランダム値、r_bはEAPサーバがIBE#3生成時に暗号化関数E内で生成したIMAのランダム値である。
DHSから、k_m、および、EAPのMSK(Master Session Key)およびEMSK(Extended MSK)が以下のように計算される。
(MSK,EMSK,k_m)=(MK[0,63],MK[64,127],MK[128,128+L−1])
ここで、MK[i,j]はMKの先頭iバイト目から先頭jバイトまでの長さ(j−i+1)バイトのバイト列rである。ただし、0バイト目を先頭バイトとする。
attr_aまたはattr_bには、EAP Channel Bindingパラメータ、機器ケーパビリティ、オペレーショナルクレデンシャルなどを含んでもよい。なお、EAP Channel Bindingについては、例えばhttp://tools.ietf.org/html/draft-ietf-emu-chbind-11で規定される。また、attr_aまたはattr_bには、IEEE 802.15.4などのデータリンクプロトコル、および、NTPなどアプリケーションレイヤプロトコルの暗号化に使用される暗号鍵、暗号鍵に付随する鍵ID、鍵ライフタイム、および、リプレイカウンタ初期値などの属性を含んでもよい。
IBE#1には、EAPピアがサポートする楕円曲線指定子、および、Finished_PまたはFinished_Sの計算に使用されるハッシュ関数識別子のリストを含んでもよい。この場合、IBE#2には、EAPピアとEAPサーバが共通にサポートし、IBE#2、IBE#3、および、IBE#4で使用される楕円曲線指定子やハッシュ関数識別子を含んでもよい。
このように、第1の実施形態にかかる通信装置では、予め設定されたブートストラップクレデンシャルを用いて、機器登録サーバとの間でブートストラップ認証処理を行う。これにより、プッシュボタン設定の場合でも暗号化された通信路を通信装置と機器登録サーバとの間に設定できる。従って、中間ノードによってクレデンシャルが盗聴されるMiTM攻撃を防止することができる。
(第2の実施形態)
第2の実施形態にかかる通信システムは、通信装置(電子機器)と機器登録サーバとの間の通信を中継する機器登録リレーを備える。図7は、第2の実施形態の通信システムの構成例を示すブロック図である。図7に示すように、第2の実施形態の通信システムは、機器登録リレー400をさらに備えている。
第2の実施形態の通信装置100、機器登録サーバ200、および、機器制御装置300の構成は、第1の実施形態と同様であるため説明を省略する。また、第2の実施形態における通信装置100と機器制御装置300の間の通常通信処理は、第1の実施形態で図6を用いて説明した処理と同様であるため説明を省略する。
機器登録リレー400は、HEMSサーバまたはスマートメータに実装してもよい。通信装置100および機器登録サーバ200と、機器登録リレー400との間の通信のMAC層および物理層は、有線LAN、無線LAN、Bluetooth(登録商標)、ZigBee等の通信プロトコルを用いて実現してもよい。また、通信装置100および機器登録サーバ200と機器登録リレー400との間で交換されるブートストラップクレデンシャルは、データリンクレイヤ、ネットワークレイヤ、トランスポートレイヤ、および、アプリケーションレイヤなどのいずれのレイヤのプロトコルを用いて交換してもよい。認証情報をデータリンクレイヤで交換する場合には、IEEE802.1X、IEEE802.15.9などのプロトコルを用いてもよい。認証情報をデータリンクよりも上位レイヤのプロトコルを用いて交換する場合には、RFC6345(PANA Relay Element)を使用してもよい。
図8は、第2の実施形態の機器登録リレー400の構成の一例を示すブロック図である。図8に示すように、機器登録リレー400は、駆動部401と、受付部402と、中継部403と、送信部404と、通信処理部405と、を備えている。
通信処理部405は、上記のように有線LAN、無線LAN、Bluetooth(登録商標)、ZigBee等の任意の通信プロトコルに従い外部装置との間の通信を制御する。
駆動部401は、ハードウェア駆動およびソフトウェア駆動により駆動する。受付部402は、ブートストラップ認証処理の実行指示を受け付ける。駆動部401および受付部402の構成は、それぞれ通信装置100の駆動部101および受付部202と同様であるため説明を省略する。
中継部403は、通信装置100と機器登録サーバ200との間で実行されるブートストラップ認証処理を中継する。例えば、中継部403は、駆動部401等からプッシュボタンイベントを受信すると、通信装置100および機器登録サーバ200との間で通信処理部405を介したブートストラップクレデンシャルの転送を開始する。中継部403は、プッシュボタンイベントを受信後、一定時間経過すると途中状態であってもブートストラップクレデンシャルの転送を終了する。送信部404は、プッシュボタンイベントを受信すると、通信処理部405を介して安全な通信チャネルを用いてプッシュボタンイベントを機器登録サーバ200に送信する。
次に、このように構成された第2の実施形態にかかる通信装置100、機器登録リレー400および機器登録サーバ200との間で実行されるブートストラップ通信処理について説明する。図9は、第2の実施形態におけるブートストラップ通信処理の一例を示すシーケンス図である。
ユーザの動作により通信装置100および機器登録リレー400のブートストラップボタンが駆動されると、受付部102および受付部202が、ブートストラップ認証処理の実行指示を受け付ける(ステップS301、ステップS302)。この後、一定時間(Walk Time)の間、通信装置100および機器登録リレー400は、ブートストラップクレデンシャルの送信および受信を有効とする。さらに、機器登録リレー400の送信部404は、プッシュボタンイベントを機器登録サーバに送信する(ステップS303)。
プッシュボタンイベントを受信した機器登録サーバ200は、例えばソフトウェアによるプッシュボタンが駆動されたものとして(ステップS304)、一定時間(Walk Time)の間、通信装置100との間の機器登録リレー400を介したブートストラップクレデンシャルの送信および受信を有効とする。
一定時間の間に、通信装置100は、まず機器登録サーバ200の通信可能なアドレスを発見するための機器登録サーバ発見手順を実行する(ステップS305)。機器登録サーバ発見には、DHCP、DNS、および、UPnPを用いてもよい。本実施形態では、実際には機器登録サーバ200の通信可能なアドレスとして機器登録リレー400のアドレスが発見される。
その後、通信装置100は、機器登録サーバ200との間でブートストラップクレデンシャル(BtCred)を用いたブートストラップ認証処理を実行する(ステップS306)。実際には、通信装置100が生成したブートストラップ認証処理のメッセージは、機器登録リレー400宛に送信される。そして、機器登録リレー400の中継部403が、このメッセージを機器登録サーバ200に転送する。また、機器登録サーバ200が生成したブートストラップ認証処理のメッセージは、機器登録リレー400宛に送信される。そして、機器登録リレー400の中継部403が、このメッセージを通信装置100に転送する。
ステップS307からステップS309は、図5のステップS105からステップS107と同様であるため説明を省略する。
なお、機器登録リレー400と機器登録サーバ200との間には予め安全な通信路が設定されている。プッシュボタンイベントおよびブートストラップクレデンシャルは、この安全な通信路上で送信される。安全な通信路として、TLSセッションおよびIPsecセキュリティアソシエーションなどの暗号化が施された論理チャネルを適用できる。
このように、第2の実施形態にかかる通信システムでは、ブートストラップ認証処理を中継する中継装置(機器登録リレー)を用いる場合にも、第1の実施形態と同様の処理を実現できる。
(第3の実施形態)
第3の実施形態にかかる通信システムは、機器(電子機器)およびアダプタを通信装置の代わりに備える。本実施形態では、アダプタが、機器と機器登録サーバとの間の通信を中継する中継装置に相当する。
図10は、第3の実施形態の通信システムの構成例を示すブロック図である。図10に示すように、第3の実施形態の通信システムは、機器600と、アダプタ500とをさらに備えている。
第3の実施形態の機器登録サーバ200、および、機器制御装置300の構成は、第1の実施形態と同様であるため説明を省略する。
アダプタ500は、機器600に任意に着脱可能であり、機器600との簡易な接続手段または通信手段を備えた装置である。この接続手段または通信手段は、例えば、USB(Universal Serial Bus)およびRS−232C等を用いることができる。さらに、アダプタ500は、機器登録サーバ200、および、機器制御装置300との通信手段を備えている。この通信手段による通信は、第1の実施形態における通信装置と同じく、有線LAN、無線LAN、Bluetooth(登録商標)、ZigBee等、様々な物理通信手段を用いることができる。
一方、機器600は、それ単体では、機器登録サーバ200や機器制御装置300との物理的な通信手段は持たず、アダプタ500との簡易な接続手段または通信手段のみを備えた装置である。この接続手段または通信手段は、アダプタ500と同じく、例えば、USB、RS−232C等を用いることができる。機器600は、アダプタ500を接続することで、アダプタ500、および、そのアダプタ500が備えている物理通信手段を介し、機器登録サーバ200、および、機器制御装置300との通信が可能となる。例えば、機器600に、有線LANを備えたアダプタ500を接続すれば、機器600は有線LANによって機器登録サーバ200との通信が可能となる。また、同じ機器600に、無線LANを備えたアダプタ500を接続すれば、機器600は無線LANによって機器登録サーバ200との通信が可能となる。機器600とアダプタ500のいずれか、または、その両方に、第1の実施形態にて示したブートストラップボタンに相当する手段を備えていてもよい。
図11は、第3の実施形態にかかるアダプタ500の構成の一例を示すブロック図である。図11に示すように、アダプタ500は、受付部501と、第1中継部502と、第2中継部503と、通信処理部504と、を備えている。
受付部501は、ブートストラップ認証処理の実行指示を受け付ける。例えば、受付部501は、アダプタ500に備えられたプッシュボタンなどのユーザ操作、機器600との物理接続の検知、または、機器600からのブートストラップ駆動イベントの通知などを、ブートストラップ認証処理の開始(実行指示)として受け付ける。受付部501は、実行指示を受け付けると、ブートストラップ駆動イベントを、通信処理部504、第1中継部502、および第2中継部503に送信する。受付部501は、さらに、アダプタ500に接続された機器600に、ブートストラップ駆動イベントを送信してもよい。
通信処理部504は、上記のように有線LAN、無線LAN、Bluetooth(登録商標)、ZigBee等の任意の通信プロトコルに従い外部装置との間の通信を制御する。通信処理部504は、ブートストラップ駆動イベントを受信すると、機器登録サーバ発見動作を実行する。機器登録サーバ200が見つかった場合、通信処理部504は、第1中継部502を介し、機器登録サーバ200の発見を、アダプタ500に接続された機器600に通知する。
第1中継部502は、機器600および機器登録サーバ200との間で、通信処理部504を介したブートストラップクレデンシャルの転送を行う。ブートストラップクレデンシャルの転送は、ブートストラップ駆動イベントの受信により開始し、ブートストラップ駆動イベントの受信後一定時間経過すると、途中状態であっても終了するように構成してもよい。
第2中継部503は、機器600および機器登録サーバ200との間で、通信処理部504を介したオペレーショナルクレデンシャルの転送を行う。オペレーショナルクレデンシャルの転送は、機器600がオペレーショナルクレデンシャルを保持しており、かつ、機器制御装置300に未接続の場合にのみ行うように構成してもよい。また、ブートストラップ駆動イベントの受信時には、一定時間の間、転送を禁止するように構成してもよい。
図12は、第3の実施形態にかかる機器600の構成の一例を示すブロック図である。図12に示すように、機器600は、駆動部601と、受付部602と、第1認証処理部611と、第2認証処理部612と、を備えている。
駆動部601は、ハードウェア駆動およびソフトウェア駆動により駆動する。駆動部601の構成は、通信装置100の駆動部101と同様であるため説明を省略する。
受付部602は、駆動部601に対するユーザ操作、アダプタ500との物理接続の検知、または、アダプタ500からのブートストラップ駆動イベントの通知などを、ブートストラップ認証処理の開始(実行指示)として受け付ける。受付部602は、実行指示を受け付けると、ブートストラップ駆動イベントを、第1認証処理部611および第2認証処理部612に送信する。受付部602は、さらに、機器600に接続されたアダプタ500に、ブートストラップ駆動イベントを送信してもよい。
第1認証処理部611は、ブートストラップ駆動イベントを受信し、かつ、アダプタ500からの機器登録サーバ発見の通知を受けると、機器登録サーバ200との間で、アダプタ500を介したブートストラップ認証処理を開始する。第1認証処理部611は、ブートストラップ認証処理が成功終了すると、機器登録サーバ200からアダプタ500を介して取得したオペレーショナルクレデンシャルを、第2認証処理部612に渡す。第1認証処理部611は、ブートストラップ駆動イベント受信後一定時間経過すると、途中状態であってもブートストラップ認証処理を終了する。
第2認証処理部612は、オペレーショナルクレデンシャルを保持しており、かつ、機器制御装置300に未接続の場合に、通信認証処理を開始する。また、ブートストラップ駆動イベントの受信時には、一定時間の間、転送を禁止し、途中状態の通信認証処理は直ちに終了する。
次に、このように構成された第3の実施形態にかかる機器600、アダプタ500および機器登録サーバ200との間で実行されるブートストラップ通信処理について説明する。図13は、第3の実施形態におけるブートストラップ通信処理の一例を示すシーケンス図である。
第3の実施形態では、例えばユーザにより機器600とアダプタ500とが接続された後に、機器600と機器登録サーバ200との間でのブートストラップ認証処理を行う場合の動作例を示す。
まず、ユーザにより、機器600とアダプタ500とが物理的に接続される(ステップS401)。次にユーザは、機器600とアダプタ500とをブートストラップ駆動状態にする。受付部602は、ユーザの動作によりブートストラップ駆動状態とされたことを、ブートストラップ認証処理の実行指示として受け付ける(ステップS402)。
ブートストラップ駆動には、機器600またはアダプタ500に備えられたプッシュボタンなど(駆動部601等)を用いてもよい。また、ユーザにより行われた機器600とアダプタ500との接続動作自体をブートストラップ駆動のトリガとしてもよい。また、機器600とアダプタ500の両方に対してプッシュボタンなどによるユーザ操作を行なってもよい。機器600またはアダプタ500のいずれかのみへのユーザ操作によるブートストラップ駆動が、それに接続されたアダプタ500または機器600へ伝わるように構成してもよい。
ユーザはまた、機器登録サーバ200のプッシュボタン操作などにより、機器登録サーバ200もブートストラップ駆動状態とする。機器登録サーバ200の受付部202は、ユーザの動作によりブートストラップ駆動状態とされたことを、ブートストラップ認証処理の実行指示として受け付ける(ステップS403)。
ブートストラップ駆動状態になると、一定時間(Walk Time)の間、機器600および機器登録サーバ200は、ブートストラップクレデンシャルの送信および受信を有効とする。また、アダプタ500は、一定時間の間のみ、ブートストラップクレデンシャルの中継を許可する。
ブートストラップ駆動状態では、アダプタ500はまず、機器登録サーバ発見手順を行う(ステップS404)。アダプタ500が機器登録サーバ発見の通信のために必要な最低限の情報は、例えばアダプタ500に予め設定しておく。
アダプタ500により機器登録サーバ200が見つかると、機器600は、アダプタ500を介して、機器登録サーバ200との間でブートストラップクレデンシャルを用いたブートストラップ認証処理を実行する(ステップS405、ステップS406、ステップS407)。この時に使用するブートストラップクレデンシャルは、機器600が保持する機器ケーパビリティを特定可能な情報を含む。認証の手順は、第1の実施形態と同様である。
機器600は、機器ケーパビリティの検証成功時に機器登録サーバ200が発行するオペレーショナルクレデンシャルを、アダプタ500を介して受信し(ステップS408)、機器600内に保持する。ここで、ブートストラップ認証処理が成功終了する。
機器登録サーバ200からオペレーショナルクレデンシャル取得した後の、機器600およびアダプタ500と、機器制御装置300との間の通信動作について説明する。
まず、アダプタ500または機器600が、機器制御装置発見手順を実行する。機器制御装置発見手順は、アダプタ500が保持している最低限の情報のみを用いて行なってもよいし、機器600が保持している情報も利用して行なってもよい。例えば、第1の実施形態と同じく、DHCP、DNS、および、UPnPを用いてもよい。次に、機器600が、機器600が保持するオペレーショナルクレデンシャルを用いて、機器600と機器制御装置300との間で通信認証処理を実行する。以降の手順は、第1の実施形態(図6)と同様である。
第3の実施形態では、ブートストラップ認証処理は、あくまで機器600と機器登録サーバ200との間で行われ、アダプタ500自体はオペレーショナルクレデンシャルを保持しない。このため、以下のような場合に有効である。例えば、機器600と、Bluetooth(登録商標)を備えたアダプタ500とを物理接続し、機器600と機器登録サーバ200との間でブートストラップ認証処理を成功終了させた後、アダプタ500が故障したとする。そして、別のBluetooth(登録商標)、または、ZigBeeなどの別の物理通信手段を備えた別のアダプタ500に差し替えたとする。この場合であっても、機器600が同一のままであれば、ユーザに再度認証手順の実行を強いることなく、通信認証処理が完了した状態での機器制御装置300による制御などを行うことができる。
(第4の実施形態)
第3の実施形態の手順ではユーザに大きな操作の手間を強いるケースがある。第4の実施形態にかかる通信システムは、この手間を解消する。例えば、ある家の3階に設置されたエアコン機器およびアダプタ500と、1階に設置された機器登録サーバ200の機能を備えたHEMSサーバ間とでブートストラップ認証処理を行う場合を例に説明する。この場合、第3の実施形態の手順では、ユーザは、1階のHEMSサーバのプッシュボタン等を操作した後、急いで(一定時間以内に)3階まで移動しエアコン機器のプッシュボタン等を操作する必要がある。第4の実施形態の手順では、ユーザは、アダプタ500をエアコン機器から取り外した状態で持ち運び、1階のHEMSサーバのプッシュボタン等と、アダプタ500のプッシュボタン等を操作し、一旦アダプタ500のブートストラップ認証処理を行う。その後、3階までゆっくり(一定時間に関係なく)移動し、エアコン機器にアダプタ500を取り付けることで、認証されたアダプタ500を介し、エアコン機器と機器登録サーバ200とのブートストラップ認証処理が完了する。
図14は、第4の実施形態にかかるアダプタ500−4の構成の一例を示すブロック図である。図14に示すように、アダプタ500−4は、受付部501−4と、第1中継部502と、第2中継部503と、通信処理部504と、第1認証処理部511と、第2認証処理部512と、送信部513と、を備えている。
第1中継部502、第2中継部503、および通信処理部504の機能は、第3の実施形態と同様であるため説明を省略する。
受付部501−4は、ブートストラップ認証処理の実行指示を受け付ける。受付部501−4は、実行指示を受け付けると、アダプタ500−4が機器600と未接続状態であれば、第1認証処理部511および第2認証処理部512にブートストラップ駆動イベントを送信する。また、受付部501−4は、アダプタ500−4が機器600と接続状態であれば、送信部513、第1中継部502、および第2中継部503にブートストラップ駆動イベントを送信する。受付部501−4は、さらに、アダプタ500−4に接続された機器600および機器登録サーバ200に、ブートストラップ駆動イベントを送信してもよい。
第1認証処理部511は、ブートストラップ駆動イベントを受信すると、機器登録サーバ200との間で、通信処理部504を介し、アダプタ500−4のブートストラップ認証処理を開始する。第1認証処理部511は、アダプタ500−4のブートストラップ認証処理が成功終了すると、機器登録サーバ200から取得したオペレーショナルクレデンシャルを、第2認証処理部512に渡す。アダプタ500−4のブートストラップ認証処理は、ブートストラップ駆動イベントを受信後、一定時間経過すると、途中状態であっても処理を終了する。
第2認証処理部512は、オペレーショナルクレデンシャルを保持しており、かつ、機器制御装置300に未接続の場合に、通信処理部504を介し、通信認証処理を開始する。また、ブートストラップ駆動イベントの受信時には、一定時間の間、転送を禁止し、途中状態の通信認証処理は直ちに終了する。
送信部513は、ブートストラップ駆動イベントを受信すると、第2認証処理部512が保持しているオペレーショナルクレデンシャルを用いて、機器登録サーバ200との間で安全な通信路を確立する。送信部513は、確立した安全な通信路上で、通信処理部504を介してブートストラップ駆動イベントを機器登録サーバ200に送信する。
なお、第4の実施形態における機器600は、第3の実施形態の機器600(図12)と同様である。第4の実施形態のアダプタ500−4は、第3の実施形態のアダプタ500の機能を包含している。従って、第4の実施形態のアダプタ500−4で、第3の実施形態の手順、すなわち、機器600とアダプタ500−4とを接続してからの認証動作を実行することも可能である。
次に、このように構成された第4の実施形態にかかる機器600、アダプタ500−4および機器登録サーバ200との間で実行されるブートストラップ通信処理について説明する。図15は、第4の実施形態におけるブートストラップ通信処理の一例を示すシーケンス図である。第4の実施形態では、機器600とアダプタ500−4とを接続していない状態から、ブートストラップ認証処理の手順を開始する場合の動作例を示す。
ユーザはまず、機器600から取り外された状態のアダプタ500−4と、機器登録サーバ200とをブートストラップ駆動状態にする。アダプタ500−4の受付部501−4および機器登録サーバ200の受付部202は、ユーザの動作によりブートストラップ駆動状態とされたことを、ブートストラップ認証処理の実行指示として受け付ける(ステップS501、ステップS502)。
ブートストラップ駆動には、機器登録サーバ200またはアダプタ500−4に備えられたプッシュボタンなどを用いてもよい。また、機器登録サーバ200とアダプタ500−4とを一時的にUSBやRS−232Cなどを用いて物理的に接続すること、または、赤外線や近距離無線などにより対応付けすることを、ブートストラップ駆動のトリガとしてもよい。
また、アダプタ500−4が蓄電池を備え、ブートストラップ実行の間だけ単独で稼働するとしてもよい。アダプタ500−4が、機器登録サーバ200との物理接続(USBなど)を利用して電源供給を受けて稼働するように構成してもよい。
ブートストラップ駆動状態では、アダプタ500−4は、機器登録サーバの発見を行う(ステップS503)。アダプタ500−4は、発見した機器登録サーバ200との間で、アダプタ500−4が保有するブートストラップクレデンシャル(BtCred-a)を用いたブートストラップ認証処理を実行する(ステップS504)。ブートストラップ認証処理の手順は、第1の実施形態と同様である。
アダプタ500−4は、アダプタ500−4のケーパビリティの検証成功時に機器登録サーバ200が発行するオペレーショナルクレデンシャル(OpCred-a)を、アダプタ500−4内に保持する(ステップS505)。これにより、まず、アダプタ500−4のブートストラップ認証処理が成功終了する。
ユーザは次に、アダプタ500−4と機器600とを接続し(ステップS506)、その後、機器600とアダプタ500−4とをブートストラップ駆動状態にする。機器600の受付部602は、ユーザの動作によりブートストラップ駆動状態とされたことを、ブートストラップ認証処理の実行指示として受け付ける(ステップS507)。ブートストラップ駆動には、第3の実施形態で述べたような、各種の方法を用いることができる。
アダプタ500−4は、ブートストラップ駆動状態になると、先のアダプタ500−4のブートストラップ認証処理にて得たオペレーショナルクレデンシャル(OpCred-a)を用いて、機器登録サーバ200との間で安全な通信路を確立する。アダプタ500−4は、確立した安全な通信路上で、ブートストラップ駆動イベントを機器登録サーバ200に送信する(ステップS508)。ブートストラップ駆動イベントを受信した機器登録サーバ200は、第2の実施形態と同じく、ソフトウェアによるプッシュボタンが駆動されたものとして、一定時間の間、ブートストラップクレデンシャルの送信および受信を有効とする。
これにより、機器600およびアダプタ500−4と、機器登録サーバ200とが、ブートストラップ駆動状態となる。以降、第3の実施形態と同じ手順にて、機器600と機器登録サーバ200間でのブートストラップ認証処理を行う(図示は省略)。
なお、この場合のブートストラップ認証処理では、機器600が保有するブートストラップクレデンシャル(BtCred-d)が用いられる。また、第3の実施形態における機器登録サーバ発見手順は、第4の実施形態では既に行われているため、省略してもよい。その後の機器600およびアダプタ500−4と、機器制御装置300との間の通信動作についても、第3の実施形態と同じ手順である。
(第5の実施形態)
第5の実施形態では、家庭内ネットワークとして通信システムを構成する例を説明する。図16は、第5の実施形態の通信システムの構成例を示すブロック図である。
通信システムとしての家庭内ネットワーク700は、ネットワーク710と、それ以外のネットワーク720とを含む。ネットワーク710は、スマートメータ711と、宅内ディスプレイ712と、HEMSサーバ731と、インバータ732と、が接続するネットワークである。
図16に示すように、スマートメータ710は、宅外通信ネットワーク800を介して電力会社サーバ900に接続されてもよい。ネットワーク720は、HEMSサーバ731と、インバータ732と、家電機器721と、分散電源722と、が接続するネットワークである。分散電源722は、例えば蓄電池、太陽光パネル、および電気自動車などである。
ネットワーク710およびネットワーク720は、ZigBee Smart Energy(version 1.Xまたはversion 2.X)ネットワークであってもよいし、ECHONET(登録商標) Liteネットワークであってもよい。ネットワーク710およびネットワーク720のデータリンク層にIEEE 802.15.4、PLC、Wi−Fiを使用してもよい。
ネットワーク710では、例えばスマートメータ711が、上記実施形態の機器登録リレーおよび機器制御装置に相当する。また、宅内ディスプレイ712、HEMSサーバ731、および、インバータ732が、上記実施形態の通信装置に相当する。
ネットワーク720では、HEMSサーバ731に、上記実施形態の機器登録サーバおよび機器制御装置の機能が実装される。また、家電機器721、インバータ732、および、分散電源722に、上記実施形態の通信装置の機能が実装される。分散電源721は、図示されない直流電力線でインバータ732に接続する。インバータ732が、直流交流変換を行う。
ネットワーク710とネットワーク720との両方に接続する機器(HEMSサーバ731およびインバータ732)は、異なる通信インターフェースを用いてそれぞれのネットワークに接続してもよい。また、ネットワーク710とネットワーク720との両方に接続する機器では、ネットワーク710とネットワーク720との間でのIP層以下のパケット転送は禁止される。
ネットワーク710とネットワーク720は、RFC 5191(PANA)を接続認証プロトコルとして使用する。ネットワーク710では、PANA認証エージェント機能は、スマートメータ711に実装される。PANAクライアント機能は宅内ディスプレイ712、HEMSサーバ731、および、インバータ732に実装される。なお、図16では、丸で囲ったAおよびCが、それぞれPANA認証エージェントおよびPANAクライアントの機能を表している。また、矢印が、PANA認証エージェントおよびPANAクライアントの機能を相互に接続するネットワーク接続を表している。
ネットワーク710では、スマートメータ711が各通信機器との間でブートストラップ認証処理を実行するために必要なブートストラップクレデンシャルは、電力会社サーバ900から宅外通信ネットワーク800を通じてスマートメータ711に遠隔設定してもよい。
スマートメータ711に対するブートストラップ駆動は、電力会社サーバ900から宅外通信ネットワーク800を通じて遠隔コマンドにより行われる。ネットワーク710では、各通信機器は、スマートメータ711からオペレーショナルクレデンシャルを取得した後、スマートメータ711からメータデータやデマンドレスポンス信号を取得する。ネットワーク720では、各通信機器は、HEMSサーバ731からオペレーショナルクレデンシャルを取得した後、HEMSサーバ731により制御される。
以上説明したとおり、第1から第5の実施形態によれば、プッシュボタン設定などの場合でも暗号化された通信路を通信装置と機器登録サーバとの間に設定できる。従って、中間ノードによってクレデンシャルが盗聴されるMiTM攻撃を防止することができる。
次に、第1から第5の実施形態にかかる装置(通信装置、機器登録サーバ、機器制御装置、アダプタ)のハードウェア構成について図17を用いて説明する。図17は、第1から第5の実施形態にかかる装置のハードウェア構成例を示す説明図である。
第1から第5の実施形態にかかる装置は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、各部を接続するバス61を備えている。
第1から第5の実施形態にかかる装置で実行されるプログラムは、ROM52等に予め組み込まれて提供される。
第1から第5の実施形態にかかる装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
さらに、第1から第5の実施形態にかかる装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第1から第5の実施形態にかかる装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
第1から第5の実施形態にかかる装置で実行されるプログラムは、コンピュータを上述した通信装置の各部として機能させうる。このコンピュータは、CPU51がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。