(本開示に至る経緯)
HAN(Home Area Network)などのネットワークにおいて、同一の機器を複数のコントローラが制御する状況が想定される。
このような状況では、各コントローラが個別にグループ鍵を生成して機器に配信し、機器はコントローラ毎に異なるグループ鍵を用いた暗号通信を行うことが想定される。しかしながら、機器によっては、複数のグループ鍵を用いた暗号通信のために必要なリソースを割り当てることができない可能性がある。例えば、機器の演算性能が低く、複数のグループ鍵を用いた暗号通信ができない可能性がある。また、機器の記憶容量が少ない場合には、すべてのコントローラとの暗号通信に必要な数のグループ鍵を記憶できない可能性がある。
そこで、ネットワーク上の一部または全部の機器及びコントローラがグループを構成し、グループ内のコントローラの中からグループ鍵を管理するコントローラを決めて、決定されたコントローラがグループ鍵を生成してグループ内の機器及び他のコントローラに配信する構成が考えられる。しかしながら、この構成では、どのコントローラがグループ鍵を管理するかが問題となる。例えば、コントローラによっては、電源断やネットワーク未接続状態が頻繁に起こり、機器や他のコントローラと常時通信できないものが存在する。グループ鍵を管理するコントローラをランダムに決めてしまうと、このようなコントローラが選ばれてしまう可能性がある。グループ鍵を管理するコントローラと通信できない状態では、新たな機器やコントローラがグループに参入しグループ鍵を共有することができない。また、セキュリティ上の観点からグループ鍵を定期的に更新することが望まれるが、グループ鍵を管理するコントローラと通信できない状態では、グループ鍵の更新ができない。従来の認証システムでは、グループ鍵に関して更なる改善が必要とされている。
本開示は、係る問題を鑑みてなされたものであり、ネットワーク上のグループ内に複数のコントローラが存在する場合において、グループ内で共通で利用するグループ鍵を管理するコントローラとして、適切なコントローラを決定する認証方法を提供するものである。
(実施の形態1)
以下、図面を参照しながら、本開示の実施の形態に係る認証システムについて説明する。なお、本実施の形態で示される数値、形状、材料、構成要素、構成要素の配置および接続形態、ステップ、ステップの順序などは一例であり、本開示を限定する主旨ではない。
<概要>
ここでは、本開示の一実施形態としての認証システム100の概要について説明する。
図1は、認証システム100の構成を示す図である。認証システム100は、HAN130上のコントローラ110(コントローラ110a及びコントローラ110b)及び機器120(機器120a、120b及び120c)から構成される。また、コントローラ110は、ネットワーク150を介してサーバ140(サーバ140a及びサーバ140b)と接続される。
機器120は、ネットワークに接続する機能を有する家電機器やAV機器及び住宅設備機器であり、例えば、テレビ、レコーダ、エアコン、冷蔵庫、蓄電池などである。コントローラ110は、機器120を制御する機能を有する機器であり、例えばサーバ140からの依頼等に応じて制御コマンドを生成し、生成した制御コマンドを機器120に送信して実行させる。また、コントローラ110は、機器120に蓄積された情報をサーバ140に送信する機能も有する。なお、コントローラ110は、ペアリングを行って登録された機器120の制御を行い、機器120は、ペアリングを行って登録されたコントローラ110から送信された制御コマンドを実行する。
HAN130は、家庭内に構築された有線又は無線のネットワークである。HAN130は、具体的には、Ethernet(登録商標)、特定小電力無線、Wi−Fi(登録商標)、Bluetooth(登録商標)、電力線通信などで実現される。また、ネットワーク150は、家庭と企業との間等に構築された、所謂インターネット等のネットワークである。
認証システム100では、HAN130上の1以上のコントローラ110と、該1以上のコントローラ110とペアリングを行った1以上の機器120とで一つのグループ鍵を共有する1つのグループが形成される。グループ鍵は、コントローラ110が生成し、コントローラ110と機器120とが認証処理を行ったとき等に、コントローラ110から機器120へ配信される。
図2は、HAN130上のコントローラ110及び機器120のグループ構成の一例を示す図である。図2は、コントローラAと機器Aとが所属するグループ200及びコントローラBと機器Bとが所属するグループ210を示している。グループ200とグループ210とでは、異なるグループ鍵が共有される。これにより、グループ200とグループ210が同じ通信方式を利用していたとしても、互いのグループ内で通信している内容がグループ外に漏洩することがなくなる。
認証システム100では、異なるグループに所属する機器やコントローラの間でペアリングが発生すると、2つのグループの統合を行う。例えば、グループ構成が図2に示す状態で、機器AとコントローラBとでペアリングが行われた場合、グループ構成が図3に示すように変更される。このとき、認証システム100では、認証処理やグループ鍵の管理処理を行うコントローラを一つ決定し、決定されたコントローラがグループ鍵の生成及び配信を担う。本開示では、認証処理やグループ鍵の管理処理を行うコントローラのことをSC(Security Coordinator)と呼ぶ。なお、SC以外の機器やコントローラのことをノードと呼ぶ場合がある。図3の例では、SCとして、コントローラAが決定されている。すなわち、グループ300では、各機器との認証処理やグループ鍵の生成や配信はSCであるコントローラAのみが行い、コントローラBは行わない。そして、コントローラBは、SCであるコントローラAが生成し配信したグループ鍵を用いて、ペアリングを行った機器A及び機器Bの制御を行うことになる。
<構成>
次に、認証システム100の主要な構成要素であるコントローラ110及び機器120の構成について説明する。
<コントローラの構成>
まず、図4−7を参照して、コントローラ110の構成を説明する。
図4は、コントローラ110の機能構成を示す図である。コントローラ110は、機器管理部410、機器情報保持部420、認証処理部430、認証情報保持部440、ネゴシエート部450、操作部460、通信部470を含んで構成される。
機器管理部410は、自機(コントローラ110)に接続される機器120や他のコントローラ110を管理する。機器管理部410は、通信部470を介した機器120や他のコントローラ110からのペアリング要求や相互認証要求、機器情報保持部420からのグループ鍵更新要求などを受け付け、認証処理部430などに、要求に応じた処理を依頼し、依頼結果に応じて機器情報保持部420で保持する接続機器管理テーブル500やグループに関する情報510を更新する機能を有する。
図5Aは、機器情報保持部420が保持する接続機器管理テーブル500の一例を示す図である。図5Bは、機器情報保持部420が保持するグループに関する情報510の一例を示す図である。
接続機器管理テーブル500には、自機(コントローラ110)と接続する機器120(又は他のコントローラ110)毎に、機器ID501、証明書ID502、共有鍵503、グループ鍵504、グループ鍵有効時間505、グループ鍵更新フラグ506が記録される。機器ID501は、機器120を一意に識別するための情報である。証明書ID502は、機器120が持つ公開鍵証明書の証明書IDである。共有鍵503は、機器120との間で共有される共有鍵のデータである。グループ鍵504は、機器120に設定されているグループ鍵のデータである。グループ鍵有効時間505は、機器120に設定されているグループ鍵の有効期間の残余時間である。グループ鍵更新フラグ506は、機器120のグループ鍵が最新のものに更新されているか否かを示すフラグ情報である。
グループに関する情報510には、制御機器511、SC512、傘下の機器513が記録される。制御機器511は、ペアリングを行った機器120の機器IDである。SC512は、所属しているグループのSCの機器IDである。なお、コントローラ110のSC512は、コントローラ110の出荷時には、自機の機器IDを示す値が設定されているものとする。傘下の機器513は、自らがSCの場合におけるグループに所属している機器120及び他のコントローラ110の機器IDである。
機器情報保持部420は、時間の経過と共にグループ鍵有効時間505の値をカウントダウンさせ、グループ鍵有効時間505の値が所定値以下となった場合に機器管理部410に、グループ鍵更新要求を行う機能を有する。所定値とは、例えば、最初に設定された値の10%の値や、グループ鍵の更新に必要な時間の2倍の値などである。
図4に戻り、コントローラ110の構成について説明を続ける。
認証処理部430は、機器管理部410からの依頼に応じて、機器120や他のコントローラ110との認証処理を行う機能を有する。認証処理部430の行う認証処理の詳細は後述する。
認証情報保持部440は、自機(コントローラ110)の秘密鍵と公開鍵証明書を保持している。また、認証情報保持部440は、相手機器の公開鍵証明書が失効していないことを確認するために使用するCRL(Certificate Revocation List)や、認証局の公開鍵が含まれるデジタル証明書を保持している。なお、秘密鍵と公開鍵証明書との鍵ペアやCRLやデジタル証明書はコントローラ110の出荷時に埋め込まれるものとする。
図6は、認証情報保持部440の保持する公開鍵証明書600のデータ構成の一例を示す図である。公開鍵証明書600は、例えば、バージョン610、証明書ID620、署名630、発行者640、有効期間の開始650、有効期間の終了660、公開鍵670、属性680のデータで構成される。
図7は、認証情報保持部440の保持するCRL700のデータ構成の一例を示している。CRL700は、例えば、バージョン710、署名720、発行者730、発行日時740、次回発行日750、失効した証明書IDのデータで構成される。
図4に戻り、コントローラ110の構成について説明を続ける。
ネゴシエート部450は、1つのグループ内に複数のコントローラ110が存在する場合、例えば、異なるグループに属する機器間でペアリングが発生したとき等に、他のコントローラ110と通信をし合い、どのコントローラがSCになるかを決定するネゴシエート処理を行う。ネゴシエート部450の行うネゴシエート処理の詳細については後述する。
機器管理部410、機器情報保持部420、認証処理部430、認証情報保持部440ネゴシエート部450の各機能部は、典型的には、メモリに保持されているプログラムをプロセッサが実行することにより実現される。
操作部460は、ペアリング用のボタンと、当該ボタンの押下に応じて割り込み信号を生成してプロセッサに伝えるための制御回路とで構成される。
通信部470は、通信機能を有する通信用LSI(Large Scale Integration)によって実現される。通信部470は、HAN130とネットワーク150とに接続され、HAN130を介してHAN130に接続される機器120や他のコントローラ110と通信する機能と、ネットワーク150を介してサーバ140と通信する機能とを有する。なお、コントローラ110とネットワーク150との接続は、図示しないゲートウェイ機器を介して行われてもよい。
通信部470は、機器120や他のコントローラ110との通信には、認証処理部430から受信したグループ鍵などを用いて適宜暗号化通信を行う。また、通信部470は、サーバ140との通信には、SSL(Secure Socket Layer)通信を行う。なお、SSL通信に必要な証明書等は、通信部470が記憶している。
<機器の構成>
次に、図8−9を参照して、機器120の構成を説明する。
図8は、機器120の機能構成を示す図である。機器120は、機器管理部810、機器情報保持部820、認証処理部830、認証情報保持部840、機器履歴保持部850、操作部860、通信部870を含んで構成される。
機器管理部810は、自ら(機器120)に接続されるコントローラ110を管理する。機器管理部810は、操作部860からの割り込み信号をトリガとして登録モードを起動してコントローラ110へペアリング要求を送信する機能や認証処理部830などの処理結果に応じて機器情報保持部820で保持する接続コントローラ管理テーブル900やグループに関する情報910を更新する機能を有する。また、機器管理部810は、機器履歴保持部850で記録している機器履歴情報をグループ鍵で暗号化して、定期的または非定期にコントローラ110経由でサーバ140へ送信する機能を有する。
図9Aは、機器情報保持部820が保持する接続コントローラ管理テーブル900の一例を示す図である。図9Bは、機器情報保持部820が保持するグループに関する情報910の一例を示す図である。
接続コントローラ管理テーブル900には、自機(機器120)と接続するコントローラ110毎に、コントローラID901、証明書ID902、共有鍵903、グループ鍵904が記録される。コントローラID901は、コントローラ110を一意に識別するための情報である。証明書ID902は、コントローラ110が持つ公開鍵証明書の証明書IDである。共有鍵903は、コントローラ110との間で共有される共有鍵のデータである。グループ鍵904は、コントローラ110から受信したグループ鍵のデータである。なお、共有鍵は、SCとのみ共有を行うものであり、すべてのコントローラと共有するわけではない。
グループに関する情報910には、制御コントローラ911、SC912が記録される。制御コントローラ911は、ペアリングを行ったコントローラ110の機器IDである。SC912は、所属しているグループのSCの機器IDである。なお、機器120のSC912は、機器120の出荷時には、SCが登録されていないことを示す値が設定されているものとする。
図8に戻り、機器120の構成について説明を続ける。
認証処理部830は、コントローラ110との認証処理を行う機能を有する。認証処理部830の行う認証処理の詳細は後述する。
認証情報保持部840は、自機(機器120)の秘密鍵と公開鍵証明書を保持している。また、認証情報保持部840は、CRL(Certificate Revocation List)や、認証局の公開鍵が含まれるデジタル証明書を保持している。公開鍵証明書やCRLはコントローラ110が持つ公開鍵証明書やCRLと同じ構成であるのでここでの説明は省略する。なお、秘密鍵と公開鍵証明書の鍵ペアやCRLやデジタル証明書は機器120の出荷時に埋め込まれるものとする。
機器履歴保持部850は、自機(機器120)の動作履歴を示す機器履歴情報を保持している。
機器管理部810、機器情報保持部820、認証処理部830、認証情報保持部840、機器履歴保持部850の各機能部は、典型的には、メモリに保持されているプログラムをプロセッサが実行することにより実現される。
操作部860は、ペアリング用のボタンと、当該ボタンの押下に応じて割り込み信号を生成してプロセッサに伝えるための制御回路とで構成される。
通信部870は、通信機能を有する通信用LSI(Large Scale Integration)によって実現される。通信部870は、HAN130に接続され、HAN130を介してHAN130に接続されるコントローラ110と通信する機能を有する。
通信部870は、コントローラ110との通信には、認証処理部830から受信したグループ鍵などを用いて適宜暗号化通信を行う。
<動作>
以下、認証システム100で行う、機器登録処理、ネゴシエート処理、SC引継処理、相互認証処理、共有鍵計算処理、グループ鍵配信・受信処理、グループ鍵更新処理、機器履歴情報送信処理、制御コマンド送信処理について、順に説明する。
<機器登録処理>
機器登録処理は、コントローラと機器とがペアリングする際の処理である。以下、機器登録処理について、図10を参照して説明する。なお、以下の説明において、機器AとコントローラBが機器登録処理を行うものとする。
(S1000)ユーザが、機器AとコントローラBとが備えるペアリング用のボタンを押下する。これにより、機器AとコントローラBとはそれぞれ登録モードを起動する。
(S1005)機器AからコントローラBに対し、接続要求を送信する。この時、機器Aは、自機に設定されているSCの機器IDも併せて送信する。なお、機器AにSCが設定されていない場合にはその旨を示す情報が送信される。
(S1010)コントローラBは、自機に設定されているSCの機器IDと、機器Aから通知されたSCの機器IDとからネゴシエート処理が必要か否かを判断する。認証システム100では、機器AとコントローラBとで互いに異なるコントローラがSCとして設定されていた場合に、ネゴシエート処理が必要となる。逆に、機器AにSCが設定されていない場合や、機器AとコントローラBとで共通のコントローラがSCとして設定されている場合には、ネゴシエート処理を行う必要はない。
(S1015)ステップS1010において、ネゴシエート処理が必要と判断された場合、機器AにSCとして設定されているコントローラとコントローラBにSCとして設定されているコントローラとの間でネゴシエート処理が行われる。
コントローラBは、自機がネゴシエート処理を行う場合、ネゴシエート処理を行う相手のコントローラにネゴシエート依頼を送信し、ネゴシエート処理を開始する。コントローラBは、自機がネゴシエート処理を行わない場合、ネゴシエート処理を行う2つのコントローラにネゴシエート依頼を送信する。ネゴシエート処理の詳細は後述する。
(S1020)コントローラBは、機器Aに対してSCの機器IDを送信する。ステップS1010において、ネゴシエート処理が必要ないと判断した場合、コントローラBは、自機に設定されているSCの機器IDを通知する。ステップS1010において、ネゴシエート処理が必要と判断した場合、コントローラBは、ネゴシエート処理の結果新たにSCとして決定されたコントローラの機器IDを取得し、機器Aに送信する。
(S1025)機器AおよびコントローラBは、SCとの間で認証が必要であるか否かを判断する。機器Aは、ステップS1020でコントローラBから通知された機器IDと、機器Aに現在SCとして設定されているコントローラの機器IDとが異なる場合、コントローラBから通知されたSCの生成したグループ鍵を共有していない場合等に、認証が必要であると判断する。コントローラBは、ステップS1020で機器Aに送信した機器IDと、コントローラBに現在SCとして登録されているコントローラの機器IDとが異なる場合、機器Aに通知したSCの生成したグループ鍵を共有していない場合等に、認証が必要であると判断する。
(S1030、S1035)ステップS1025で認証が必要と判断された場合、機器A又はコントローラBは、新たなSCとの間で後述する相互認証処理及びグループ鍵配信・受信処理を行う。
(S1040)相互認証処理及びグループ鍵配信・受信処理が正常に終了した場合、機器A又はコントローラBは、新たなSCの傘下に参入する処理を行う。機器Aは、新たなSCの機器IDを、機器情報保持部820の保持するグループに関する情報910のSC912に設定する。又は、コントローラBは、新たなSCの機器IDを、機器情報保持部420の保持するグループに関する情報510のSC512に設定する。そして、機器A又はコントローラBは、新たなSCに自機の機器IDを送信し、SCは、受信した機器IDを機器情報保持部420の保持するグループに関する情報510の傘下の機器513に設定する。
(S1045)機器A又はコントローラBにおける相互認証処理及びグループ鍵配信・受信処理を正常に終了した場合、機器Aは、コントローラBに対して、ペアリング要求を送信する。このとき、機器Aは、自機の機器IDを併せて送信する。
(S1050)コントローラBは、機器Aからペアリング要求を受信すると、機器Aのペアリングを行う。すなわち、コントローラBは、機器Aからペアリング要求と共に受信した機器IDを、機器情報保持部420の保持するグループに関する情報510の制御機器511に設定する。
(S1055)コントローラBは、機器Aのペアリングを行うと、機器Aに対して、ペアリング要求を送信する。このとき、コントローラBは、自機の機器IDを併せて送信する。
(S1060)機器Aは、コントローラBからペアリング要求を受信すると、コントローラBのペアリングを行う。すなわち、機器Aは、コントローラBからペアリング要求と共に受信した機器IDを、機器情報保持部820の保持するグループに関する情報910の制御コントローラ911に設定する。
(S1065)機器A及びコントローラBは、互いのペアリングが正常に終了すると、登録モードを終了し、機器AとコントローラBとでペアリングが行われたことを、同じグループに所属する他の機器やコントローラに通知する。当該通知は、ステップS1035で共有したグループ鍵を用いて暗号化して、ブロードキャスト等で送信される。
以上が、機器AとコントローラBとの間で行われる機器登録処理となる。
なお、コントローラAとコントローラBとの間で機器登録処理が行われる場合の処理を図11に示す。コントローラAとコントローラBとの間で機器登録処理は、ステップS1045、S1050、S1055、S1060の処理を行わないことを除いて、機器AとコントローラBとの機器登録処理と同じであり、説明を省略する。
<ネゴシエート処理>
ネゴシエート処理は、異なるグループに所属する機器やコントローラの間でペアリングが発生した場合に行われる、2つのグループを統合した後にいずれのコントローラがSCになるかを決定する処理である。以下、ネゴシエート処理について、図12を参照して説明する。なお、以下では、コントローラAとコントローラBとがネゴシエート処理を行うものとする。
(S1200)コントローラAは、コントローラBにネゴシエート要求を送信する。
(S1205)コントローラA及びコントローラBは、後述する相互認証処理を行う。
(S1210)相互認証処理が正常に終了した場合、コントローラAは、コントローラAの公開鍵証明書と、相互認証処理で取得したコントローラBの公開鍵証明書とから、コントローラの属性を取得する。
(S1215)コントローラAは、コントローラAの属性が「専用機器」であるか否かを判断する。コントローラAの属性が「専用機器」である場合はステップS1235に進み、そうでない場合はステップS1220に進む。
(S1220)コントローラAは、コントローラBの属性が「専用機器」であるか否かを判断する。コントローラBの属性が「専用機器」である場合はステップS1240に進み、そうでない場合はステップS1225に進む。
(S1225)コントローラAは、コントローラAの属性が「汎用機器」であるか否かを判断する。コントローラAの属性が「汎用機器」である場合はステップS1235に進み、そうでない場合はステップS1230に進む。
(S1230)コントローラAは、コントローラBの属性が「汎用機器」であるか否かを判断する。コントローラBの属性が「汎用機器」である場合はステップS1240に進み、そうでない場合はステップS1235に進む。
(S1235)コントローラAは、コントローラAをSCとして決定する。
(S1240)コントローラAは、コントローラBをSCとして決定する。
(S1245)コントローラAは、SCの選定結果をコントローラBに通知する。
(S1250)コントローラA及びコントローラBは、後述するSC引継処理を行う。
以上が、ネゴシエート処理となる。
ネゴシート処理では、公開鍵証明書の項目内の属性のデータを参照して、コントローラが他の機器をコントロールする機能しか持たない「専用機器」であるか、他の機能も持つ「汎用機器」であるか、PCやスマートフォン上で動作する「アプリ」であるかによって、SCになる優先度を変えている。コントローラの属性「専用機器」であれば、どんなときでも迅速に処理が行えるように常に待機する機能を持っていることが考えられる。コントローラの属性が「汎用機器」であれば、家の中に誰もいなくなったときや、就寝中には電源が切られる可能性が考えられる。コントローラの属性が「アプリ」であれば、いつ電源が切られたり、ネットワークから外れたりするか分からない。このため、「専用機器」、「汎用機器」、「アプリ」の順番で、SCになりやすいように優先度を付けている。また、ここでは、両者の属性が同じであった場合は、ネゴシエート処理を依頼した側のコントローラが優先的にSCになる場合を示しているが、ネゴシエート処理の依頼を受けた側のコントローラBが優先的にSCになってもよい。
<SC引継処理>
SC引継処理は、ネゴシエート処理によって新たなSCが決定された後、今までSCであったコントローラが保持していた情報を、新たなSCへと譲渡する処理である。以下、SC引継処理について、図13を参照して、説明する。なお、以下では、新たなにSCとなったコントローラA(新SC)と、今までSCであったコントローラB(旧SC)とがSC引継処理を行うものとする。
(S1300)新SCおよび旧SCは、後述するグループ鍵配信・受信処理を行う。ここでは、旧SCの管理していたグループ鍵を、新SCへ配信する。
(S1305)旧SCは、傘下の機器の情報を新SCへ送信する。具体的には、旧SCのグループに関する情報510の傘下の機器513の機器それぞれについて、接続機器管理テーブル500の機器ID501、証明書ID502、グループ鍵504、グループ鍵有効時間505のデータを送信する。このとき、旧SCは、傘下の機器の公開鍵証明書も併せて送信する。なお、旧SCは、新SCにグループ鍵を送信する場合は、新SCとの間で共有した共有鍵を用いて暗号化して送信する。
(S1310)旧SCは、傘下の機器へ、SCがコントローラBからコントローラAへと変更した旨を通知する。このとき、コントローラAの機器IDや公開鍵証明書も併せて送信する。
(S1315)旧SC傘下の機器は、旧SCからSCの変更通知と機器IDと公開鍵証明書を受信すると、コントローラAをSCとして登録する。具体的には、旧SC傘下の機器は、受信したコントローラAの機器IDを、機器情報保持部820の保持するグループに関する情報910のSC912に登録する。さらに、旧SC傘下の機器は、接続コントローラ管理テーブル900に、受信したコントローラAの機器IDのレコードを追加する。
(S1320)新SCは、ステップS1300のグループ鍵配信・受信処理で受信したグループ鍵、ステップS1305で受信した機器の情報を用いて、機器情報保持部420で保持する接続機器管理テーブル500及びグループに関する情報510を更新する。
(S1325)旧SCは、新SCであるコントローラAをSCとして登録する。具体的には、旧SCは、コントローラAの機器IDを、機器情報保持部420の保持するグループに関する情報510のSC512に設定する。
(S1330)旧SC傘下の機器と新SCは、後述の共有鍵計算処理を行う。なお、共有鍵計算処理のタイミングは、旧SC傘下の機器が新SCをSCとして登録した直後に行ってもよいが、新SCがグループ鍵を更新する前であればいつでもよい。
以上が、SC引継処理となる。
<相互認証処理>
次に、機器又はコントローラとコントローラとの間の相互認証処理について、図14を参照して説明する。なお、以下では、機器とコントローラとの間の相互認証処理について、説明するが、コントローラとコントローラとの間の相互認証処理でも同様の処理を行う。
(S1400)機器からコントローラへ、認証要求を送信する。このとき、機器は、自機の機器ID及び公開鍵証明書も併せて送信する。
(S1405)コントローラは、機器の公開鍵証明書の証明書IDが、認証情報保持部440で保持するCRLに記載されていないことを検証する。検証に失敗した場合、コントローラは、機器にエラーを通知して処理を終了する。
(S1410)コントローラは、証明書IDがCRLに記載されていないことを確認すると、機器の公開鍵証明書の署名を認証局の公開鍵を用いて検証する。検証に失敗した場合、コントローラは、機器にエラーを通知して処理を終了する。署名には、ECDSA(Elliptic Curve Digital Signature Algorithm)RSA、DSA(Digital Signature Algorithm)等の一般的に用いられている方式を利用することが可能である。また、コントローラは、機器の公開鍵証明書の署名の検証に成功すると、接続機器管理テーブル500に、新たなレコードを作成し、相互認証処理の相手となる機器の機器ID及び証明書IDを登録する。
(S1415)コントローラは、機器の公開鍵証明書の署名の検証に成功すると、自機の機器ID及び公開鍵証明書を機器に送信する。
(S1420)機器は、コントローラの公開鍵証明書の証明書IDが、認証情報保持部840で保持するCRLに記載されていないことを検証する。検証に失敗した場合、機器は、コントローラにエラーを通知して処理を終了する。
(S1425)機器は、証明書IDがCRLに記載されていないことを確認すると、コントローラの公開鍵証明書の署名を認証局の公開鍵を用いて検証する。検証に失敗した場合、機器は、コントローラにエラーを通知して処理を終了する。また、機器は、コントローラの公開鍵証明書の署名の検証に成功すると、接続コントローラ管理テーブル900に、新たなレコードを作成し、相互認証処理の相手となるコントローラの機器ID及び証明書IDを登録する。
(S1430)機器及びコントローラは、後述する共有鍵計算処理を行う。
以上が、相互認証処理となる。
<共有鍵計算処理>
次に、機器又はコントローラとコントローラとの間の共有鍵計算処理について、図15を参照して説明する。なお、以下では、機器とコントローラとの間の共有鍵計算処理について、説明するが、コントローラとコントローラとの間の共有鍵計算処理でも同様の処理を行う。
(S1500)機器及びコントローラは、鍵交換を行う。鍵交換の方式は、ECDH(Elliptic Curve Diffie-Hellman key exchange)等の一般的な方式を用いることが可能である。ECDHにはStatic方式と、Ephemeral方式があるが、本実施の形態では、Static方式を用いるものとする。なお、当然ではあるが、Ephemeral方式を用いるとしてもよい。
(S1505)機器及びコントローラは、共有鍵を算出する。具体的には、機器及びコントローラは、ステップS1500の鍵交換で共有した値に対し、ハッシュ値を計算し、計算したハッシュ値の上位128ビットを共有鍵とする。なお、認証システム100では、共有鍵を用いた暗号方式として鍵長128ビットのAES(Advanced Encryption Standard)を用いるものとするが、これに限らず、他の暗号方式を用いてもよい。機器は、算出した共有鍵を、接続コントローラ管理テーブル900の対応するコントローラのレコードの共有鍵903に登録する。コントローラは、算出した共有鍵を、接続機器管理テーブル500の対応する機器のレコードの共有鍵503に登録する。ここで、対応するコントローラ及び対応する機器とは、共有鍵計算処理の相手となる機器及びコントローラのことである。
(S1510、S1515)コントローラは、乱数Aを生成し、機器に送信する。
(S1520)機器は、コントローラから受信した乱数Aを、ステップS1505で算出した共有鍵を用いて暗号化し、暗号化乱数A'を生成する。
(S1525、S1530)機器は、乱数Bを生成し、暗号化乱数A'と乱数Bをコントローラに送信する。
(S1535)コントローラは、機器から受信した暗号化乱数A'をステップS1505で算出した共有鍵を用いて復号し、ステップS1510で生成した乱数Aと一致するか否かの検証を行う。検証に失敗した場合、コントローラは、機器にエラーを通知して処理を終了する。
(S1540、S1545)コントローラは、機器から受信した乱数BをステップS1505で算出した共有鍵を用いて暗号化し、暗号化乱数B'を生成し、機器に送信する。
(S1550)機器は、コントローラから受信した暗号化乱数B'をステップS1505で算出した共有鍵を用いて復号し、ステップS1525で生成した乱数Bと一致するか否かの検証を行う。検証に失敗した場合、機器は、コントローラにエラーを通知して処理を終了する。
(S1555)検証が成功した場合、機器はコントローラに検証成功の結果を通知する。
以上が、共有鍵計算処理となる。
<グループ鍵配信・受信処理>
次に、機器又はSCでないコントローラとSCのコントローラとの間のグループ鍵配信・受信処理について、図16を参照して説明する。なお、以下では、機器とSCのコントローラとの間のグループ鍵配信・受信処理について、説明するが、SCでないコントローラとSCのコントローラとの間で実施してもよい。その場合は、機器をSCでないコントローラに置き換えればよい。
(S1600)コントローラは、グループ鍵を既に生成済みであるか否かを判断する。なお、コントローラは、グループ鍵を既に生成済みである場合、接続機器管理テーブル500の対応する機器のレコードに生成済みのグループ鍵及びグループ鍵の有効時間を登録する。ここで、対応する機器とは、グループ鍵配信・受信処理の相手となる機器のことである。
(S1605、S1610)グループ鍵を既に生成済みでない場合、コントローラは、グループ鍵を生成すると共に、生成したグループ鍵の有効時間を決定する。なお、認証システム100では、グループ鍵を用いた暗号方式として鍵長128ビットのAESを用いるものとするが、これに限らず、他の暗号方式を用いてもよい。コントローラは、接続機器管理テーブル500の対応する機器のレコードに生成したグループ鍵及びグループ鍵の有効時間を登録する。
(S1615、S1620)コントローラは、生成した又は生成済のグループ鍵を、接続機器管理テーブル500の対応する機器のレコードの共有鍵を用いて暗号化し、暗号化グループ鍵を生成し、機器に送信する。
(S1625)機器は、コントローラから受信した暗号化グループ鍵を、接続コントローラ管理テーブル900の対応するコントローラのレコードの共有鍵を用いて復号する。
(S1630)機器は、ステップS1625で復号したグループ鍵を、接続コントローラ管理テーブル900の対応するコントローラのレコードに登録する。
(S1635)機器は、グループ鍵の登録を完了したことをコントローラに通知する。
(S1640)コントローラは、接続機器管理テーブル500の対応する機器のレコードのグループ鍵更新フラグ506に、グループ鍵が更新済みである旨を示す値を登録する。
以上が、グループ鍵配信・受信処理である。
なお、コントローラ間でグループ鍵を共有する場合には、ステップS1615、S1620で、グループ鍵を暗号化して送信するときに、グループ鍵の有効時間も暗号化して送信してもよい。また、暗号化されたグループ鍵の有効時間を受信したコントローラは、接続機器管理テーブル500に受信したグループ鍵の有効時間を登録してもよい。
<グループ鍵更新処理>
次に、SCのコントローラとSC傘下の機器やコントローラとの間のグループ鍵更新処理について、図17を参照して説明する。
(S1700)SCとなったコントローラは、接続機器管理テーブル500のいずれか一つのレコードのグループ鍵有効時間505が、所定値以下になっているか否かを判断する。グループ鍵の有効時間が所定値以下になるまで、以降の処理は実施しない。
(S1705)SCは、接続機器管理テーブル500のいずれか一つレコードのグループ鍵有効時間505が、所定値以下になると、新しいグループ鍵を生成する。
(S1710)SCは、ステップS1705で生成したグループ鍵の有効時間を決定する。有効時間は、例えば、24時間、72時間といった値に決定する。
(S1715)SCは、接続機器管理テーブル500のすべてのレコードのグループ鍵更新フラグ506に、グループ鍵が更新されていない旨を示す値を登録する。
(S1720)SCは、傘下の機器及びコントローラの中からグループ鍵を更新する機器(又はコントローラ)を一つ決定する。
(S1725)SCは、ステップS1705で生成したグループ鍵を、接続機器管理テーブル500のステップS1720で決定した機器(又はコントローラ)のレコードの共有鍵で暗号化して暗号化グループ鍵を生成する。
(S1730)SCは、ステップS1720で決定した機器に、ステップS1725で生成した暗号化グループ鍵を送信し、ステップS1720で決定した機器(又はコントローラ)のグループ鍵を更新する。ステップS1730の処理の詳細は後述する。
(S1735)SCは、傘下の機器及びコントローラの全てのグループ鍵の更新を行ったか否かを判断する。グループ鍵の更新を行っていない機器又はコントローラが存在する場合はステップS1720に戻り、傘下の機器及びコントローラの全てのグループ鍵の更新を行った場合はステップS1740に進む。
(S1740)SCは、ステップS1705で生成したグループ鍵を、接続機器管理テーブル500のすべてのレコードのグループ鍵504に登録する。SCは、決定したグループ鍵の有効時間を、接続機器管理テーブル500のすべてのレコードのグループ鍵有効時間505に登録する。
次に、ステップS1730の処理の詳細について、図18を参照して説明する。なお、以下では、ステップS1720で決定された機器とSCのコントローラとの間の処理について、説明するが、ステップS1720で決定されたコントローラとSCのコントローラとの間で実施してもよい。その場合は、機器をSCでないコントローラに置き換えればよい。
(S1800、S1805)SCは、乱数Aを生成し、グループ鍵更新要求と共に乱数Aを機器に送信する。
(S1810)機器は、SCからグループ鍵更新要求及び乱数Aを受信すると、接続コントローラ管理テーブル900のSCのレコードの共有鍵を用いて乱数Aを暗号化して暗号化乱数A'を生成する。
(S1815、S1820)機器は、乱数Bを生成し、暗号化乱数A'と乱数BをSCに送信する。
(S1825)SCは、機器から受信した暗号化乱数A'を接続機器管理テーブル500の対応する機器のレコードの共有鍵を用いて復号し、ステップS1800で生成した乱数Aと一致するか否かを検証する。検証に失敗した場合、SCは、機器にエラーを通知して処理を終了する。
(S1830、S1835)SCは、接続機器管理テーブル500の対応する機器のレコードの共有鍵を用いて、機器から受信した乱数Bを暗号化して暗号化乱数B'を生成し、機器に送信する。
(S1840)機器は、SCから受信した暗号化乱数B'を接続コントローラ管理テーブル900のSCのレコードの共有鍵を用いて復号し、ステップS1815で生成した乱数Bと一致するか否かを検証する。検証に失敗した場合、機器は、SCにエラーを通知して処理を終了する。
(S1845)検証が成功した場合、機器はSCに検証成功の結果を通知する。
(S1850)SCは、機器から検証成功の結果を受信すると、ステップS1725で生成した暗号化グループ鍵を機器に送信する。
(S1855)機器は、SCから受信した暗号化グループ鍵を、接続コントローラ管理テーブル900のSCのレコードの共有鍵を用いて復号する。
(S1860)機器は、復号したグループ鍵を、接続コントローラ管理テーブル900のすべてのレコードのグループ鍵904に登録する。
(S1865)機器は、グループ鍵の更新完了通知をSCに送信する。
(S1870)SCは、機器からグループ鍵の更新完了通知を受信すると、接続機器管理テーブル500の対応する機器のレコードのグループ鍵更新フラグ506に、グループ鍵が更新済みである旨を示す値を登録する。
以上がグループ鍵更新処理である。
<機器履歴情報送信処理>
次に、ペアリングを行った機器からコントローラへ機器履歴情報を送信する処理について図23を参照して説明する。なお、この機器履歴情報送信処理は、定期的あるいは不定期に行われる。
(S2300)機器は、機器履歴保持部850で保持している機器履歴情報を、接続コントローラ管理テーブル900のグループ鍵で暗号化して、暗号化履歴情報を生成する。
(S2305)機器は、グループに関する情報910の制御コントローラ911に登録されているコントローラに対して、ステップS2300で生成した暗号化履歴情報をコントローラに送信する。
(S2310)コントローラは、ペアリングした機器から暗号化機器履歴情報を受信すると、接続機器管理テーブル500の対応する機器のレコードのグループ鍵を用いて復号する。
以上が機器履歴情報送信処理となる。なお、コントローラは、復号した機器履歴情報を、外部のサーバなどに送信してもよい。
<制御コマンド送信処理>
次に、ペアリングを行ったコントローラから機器へ制御コマンドを送信する処理について図24を参照して説明する。なお、この制御コマンド送信処理は、定期的あるいは不定期に行われる。
(S2400)コントローラは、外部のサーバからの制御依頼などに基づいて、ペアリングした各機器向けの制御コマンドを生成する。
(S2405)コントローラは、生成した各制御コマンドを、接続機器管理テーブル500の対応する機器のレコードのグループ鍵を用いて暗号化して暗号化制御コマンドを生成する。
(S2410)コントローラは、生成した暗号化制御コマンドを、ペアリングした各機器に送信する。コントローラは、複数の機器に対して同一グループ鍵で暗号化された同一の制御コマンドを送信する場合は、一斉同報通信(ブロードキャスト通信)で送信する。
(S2415)機器は、ペアリングしたコントローラから暗号化制御コマンドを受信すると、接続コントローラ管理テーブル900のグループ鍵を用いて復号する。
(S2420)機器は、復号した制御コマンドを実行する。
以上が制御コマンド送信処理となる。
<接続機器管理テーブル及びグループに関する情報の更新について>
以上に示した機器登録処理、ネゴシエート処理、SC引継処理、相互認証処理、共有鍵計算処理、グループ鍵配信・受信処理を適宜行うことより、認証システム100のグループ構成は、図2に示す状態から図3に示す状態のようにグループ統合を行いながら動作する。
ここで、HAN内のグループ構成が図2の状態で、コントローラAとコントローラBとが機器登録処理を行い、グループ統合により、図3に示すようなグループ構成になったとする。このときの各コントローラの接続機器管理テーブル500及びグループに関する情報510、並びに、各機器の接続コントローラ管理テーブル900及びグループに関する情報910の更新について、図19−22を参照して説明する。
図19Aは、HAN内のグループ構成が図2の状態のときのコントローラAの保持する接続機器管理テーブル500を示す図である。
図19Bは、HAN内のグループ構成が図2の状態のときのコントローラAの保持するグループに関する情報510を示す図である。
図19Cは、HAN内のグループ構成が図2の状態のときのコントローラBの保持する接続機器管理テーブル500を示す図である。
図19Dは、HAN内のグループ構成が図2の状態のときのコントローラBの保持するグループに関する情報510を示す図である。
図20Aは、HAN内のグループ構成が図2の状態のときの機器Aの保持する接続コントローラ管理テーブル900を示す図である。
図20Bは、HAN内のグループ構成が図2の状態のときの機器Aの保持するグループに関する情報910を示す図である。
図20Cは、HAN内のグループ構成が図2の状態のときの機器Bの保持する接続コントローラ管理テーブル900を示す図である。
図20Dは、HAN内のグループ構成が図2の状態のときの機器Bの保持するグループに関する情報910を示す図である。
図21Aは、SC引継処理後のコントローラAの保持する接続機器管理テーブル500を示す図である。
図21Bは、SC引継処理後のコントローラAの保持するグループに関する情報510を示す図である。
図21Cは、SC引継処理後のコントローラBの保持する接続機器管理テーブル500を示す図である。
図21Dは、SC引継処理後のコントローラBの保持するグループに関する情報510を示す図である。
図22Aは、SC引継処理後の機器Aの保持する接続コントローラ管理テーブル900を示す図である。
図22Bは、SC引継処理後の機器Aの保持するグループに関する情報910を示す図である。
図22Cは、SC引継処理後の機器Bの保持する接続コントローラ管理テーブル900を示す図である。
図22Dは、SC引継処理後の機器Bの保持するグループに関する情報910を示す図である。
図19Aと図21Aを比較すると、コントローラAの接続機器管理テーブル500には、新たに傘下となったコントローラBのレコード(機器IDが「004」のレコード)と機器Bのレコード(機器IDが「002」のレコード)が追加されている。コントローラBのレコードは、コントローラAとコントローラBのネゴシエート処理において、コントローラAとコントローラBとが相互認証を行ったときに、追加されたレコードである(図12:ステップS1205及び図14:ステップS1410、S1425参照)。機器Bのレコードは、コントローラB(旧SC)からコントローラA(新SC)のSC引継処理において、旧SCから通知された機器の情報を登録したときに追加されたレコードである(図13:ステップS1320、ステップS1330参照)。
図19Bと図21Bを比較すると、コントローラAのグループに関する情報510の傘下の機器513には、新たに傘下になったコントローラBと機器Bの機器IDが追加されている。この追加は、コントローラB(旧SC)からコントローラA(新SC)のSC引継処理において、旧SCから通知された機器及び旧SCを傘下の機器として登録したときになされたものである(図13:ステップS1320参照)。
図19Cと図21Cを比較すると、コントローラBの接続機器管理テーブル500には、新たにSCとなったコントローラAのレコード(機器IDが「003」のレコード)が追加されている。コントローラAのレコードは、コントローラAとコントローラBのネゴシエート処理において、コントローラAとコントローラBとが相互認証を行ったときに、追加されたレコードである(図12:ステップS1205及び図14:ステップS1410、S1425参照)。なお、図21Cにおいて、コントローラBの接続機器管理テーブル500のグループ鍵有効時間505及びグループ鍵更新フラグ506の値が「−」となっているのは、コントローラBがSCではなくなり、管理する必要のない情報であることを示している。
図19Dと図21Dを比較すると、コントローラBのグループに関する情報510のSC512が、コントローラBの機器IDからコントローラAの機器IDに変更している。この変更は、コントローラB(旧SC)からコントローラA(新SC)のSC引継処理において、新SCを登録したときになされたものである(図13:ステップS1325参照)。なお、図21Dにおいて、コントローラBのグループに関する情報510の傘下の機器513の値が「−」となっているのは、コントローラBがSCではなくなり、管理する必要のない情報であることを示している。
図20A、図20Bと図22A、図22Bを比較すると、機器Aの接続コントローラ管理テーブル900及びグループに関する情報910に変更はない。これは、今回のグループ統合によっては、機器AのSCがされなかったことを意味している。
図20C、図20Dと図22C、図22Dを比較すると、機器Bの接続コントローラ管理テーブル900に、新たにSCとなったコントローラAの機器IDのレコードが追加され、グループに関する情報910のSC912が旧SCであるコントローラBの機器IDから新SCであるコントローラの機器IDに変更されている。この変更は、コントローラB(旧SC)からコントローラA(新SC)のSC引継処理において、旧SCの傘下であった機器Bが旧SCからSCの変更通知を受信した後に、コントローラAを新SCとして登録したときになされたものである(図13:ステップS1315、S1330参照)。
以上図19−22で示したように、各コントローラの接続機器管理テーブル500及びグループに関する情報510、並びに、各機器の接続コントローラ管理テーブル900及びグループに関する情報910が更新される。
<新規コントローラ参入の流れ>
ここでは、HAN内の全ての機器及びコントローラがペアリングされていない状態から、上記機器登録処理、ネゴシエート処理、SC引継処理、相互認証処理、共有鍵計算処理、グループ鍵配信・受信処理、グループ鍵更新処理を行うことにより、グループが構築され、さらに、新規コントローラがグループに参入したときの流れについて説明する。
まず、HAN内に、いずれの機器及びコントローラともペアリングされていないコントローラA、機器Aが存在するとする。この状態において、コントローラAのSCはコントローラAが設定しており、機器Aには、SCが設定されていない状態である。
ユーザによるコントローラAと機器Aとのペアリング操作により、コントローラAと機器Bとの間で上述の図10に示す機器登録処理が行われる。
この機器登録処理では、機器AにはSCが設定されていないことから、ネゴシエート処理を行わずに、コントローラAのSCとして設定されているコントローラAが新たなSCとして、機器Aに通知される(ステップS1010、S1020参照)。
機器Aでは、SCが新たに登録されることによって、SCとの認証が必要になり、SCであるコントローラAとの相互認証処理を行う(ステップS1025、S1030参照)。この機器AとコントローラAとの相互認証処理を第1の相互認証と呼ぶ。
第1の相互認証の後、機器AとコントローラAとが、グループ鍵配信・受信処理を行って機器AとコントローラAとの間でグループ鍵が共有される(ステップS1035参照)。このときに共有されるグループ鍵を第1のグループ鍵と呼ぶ。
そして、機器AがコントローラAの傘下に参入し、機器AとコントローラAとからなるグループが形成される(ステップS1040参照)。この後、第1のグループ鍵の有効時間が所定値以下になる度に、コントローラAは、図17,18に示すグループ鍵更新処理を行い、グループ内で共有されているグループ鍵である第1のグループ鍵を更新する。
この状態で、新たにいずれの機器ともペアリングされていないコントローラBがHANに接続されたとする。この時、コントローラBのSCとしてはコントローラBが設定されている。
ユーザによるコントローラAとコントローラBとのペアリング操作により、コントローラAとコントローラBとの間で図11に示す機器登録処理が行われる。
この機器登録処理では、コントローラAに設定されているSCと、コントローラBに設定されているSCが異なることから、コントローラAのSCとコントローラBのSCとの間でネゴシエート処理が発生する(ステップS1110、S1115参照)。この場合、コントローラAとコントローラBがネゴシエート処理を行う。
ネゴシエート処理では、コントローラAとコントローラBとの間で相互認証処理が行われる(図12:ステップS1205参照)。このコントローラAとコントローラBとの間で行われる相互認証処理を、第2の相互認証と呼ぶ。
第2の相互認証のあと、コントローラAとコントローラBのうちどちらがSCとなるかが決定される。
コントローラBがSCとなると、コントローラAからコントローラBへのSC引継処理が行われる。SC引継処理では、旧SCであるコントローラAが生成した第1のグループ鍵を、旧SCであるコントローラAと新SCであるコントローラBとが共有するグループ鍵配信・受信処理が行われる(図13:ステップS1300参照)。
この時、コントローラAとコントローラBと機器Aとでは、コントローラAが生成したグループ鍵である第1のグループ鍵が共有されており、新SCによるグループ鍵更新処理が行われるまでは、コントローラAとコントローラBと機器Aとは、第1のグループ鍵を用いた暗号通信を行うことが可能である。
第1のグループ鍵の有効時間が所定値以下になると、図17、18に示すグループ鍵更新処理が行われる。グループ鍵更新処理では、SCであるコントローラBがグループ鍵を生成する。このグループ鍵を第2のグループ鍵と呼ぶ(図17:ステップS1705参照)。そして、コントローラBは、傘下の機器であるコントローラAと機器Aそれぞれに対して、共有鍵と乱数を用いた相互認証を行う(図18:ステップS1800−S1845参照)。この共有鍵と乱数を用いた相互認証を第3の相互認証と呼ぶ。
コントローラBは、第3の相互認証に成功したコントローラAと機器Aと第2のグループ鍵を共有する。
以上のように、グループに新たに参入したコントローラにSCが引き継がれ、新SCによりグループ鍵が更新される場合には、第1の相互認証、第2の相互認証、第3の相互認証が行われることになる。
<実施の形態1の効果>
実施の形態1では、コントローラと機器でグループを形成し、1つのグループの中に複数のコントローラが含まれる状態になるときに、複数のコントローラ間でネゴシエート処理を行う。各コントローラは、公開鍵証明書に記載されたコントローラの属性を用いて、ネゴシエートすることで、電源断やネットワーク未接続の状態が発生しにくいコントローラを優先的にSCとして決定することができる。これにより、新しい機器やコントローラがグループに参入するときにも、グループ鍵を更新する必要が生じたときにも、グループ内で迅速にグループ鍵を共有できる。
また、実施の形態1では、コントローラ間でSCを変更した際に、旧SCから新SCへのSC引継処理を行って、旧SCが傘下の機器と行った認証結果を新SCが引き継いでいる。これにより、新SCと旧SCの傘下の機器との間における公開鍵証明書を用いた認証を省略することができる。その結果、機器やコントローラの処理負担を少なくすることができる。
さらに、実施の形態1では、コントローラ間でSCを変更した際に、旧SCから新SCに、旧SCの生成したグループ鍵を送信している。これにより、新SCは、新SCの生成したグループ鍵を配信する前であっても、旧SCの生成したグループ鍵を用いて、旧SCの傘下の機器に対する一斉同報通信を暗号化して行うことができる。
(変形例)
以上、本開示に係る認証方法を用いた認証システムについて、実施の形態に基づき説明したが、以下のように変形することも可能であり、本開示は上述した実施の形態で示した通りの認証システムに限られない。
<1>実施の形態1で示したSC引継処理は、以下に示すように変形してもよい。
図25は、SC引継処理の変形例を示す図である。
ステップS2500、S2505、S2510、S2520、S2525、S2535の処理は、実施の形態1のSC引継処理におけるステップS1300、S1305、S1310、S1320、S1325、S1330の処理と同様であり説明を省略する。
(S2515)旧SCであるコントローラBは、傘下の機器及び新SCであるコントローラAに、登録モードの起動指示を送信する。
(S2530)コントローラAと旧SCの傘下の機器は、コントローラBから登録モードの起動指示を受信すると、登録モードを起動する。
(S2535)コントローラAは、旧SCの傘下の各機器と順次、機器登録処理を行う。機器登録処理は、図10のステップS1005〜S1065と同様の処理であり、ここでの説明は省略する。
図25に示すSC引継処理は、SCが変更された場合に、旧SCから傘下の機器及び新SCへ登録モードの起動指示を送信し、新SCと旧SC傘下の機器が登録モードを起動する。これにより、ユーザが手動で登録モードを起動せずとも、旧SC傘下の機器と新SCとで機器登録処理を行うことができ、ユーザの利便性が向上する。
<2>実施の形態1のSC引継処理において、旧SCは、傘下の機器の情報を新SCに通知する際に、傘下の機器それぞれの公開鍵証明書も新SCに送信するものとした。しかしながら、本開示はこれに限らず、旧SCが傘下の機器それぞれの公開鍵証明書を新SCに送信するのではなく、旧SCからSCの変更通知を受けた傘下の機器それぞれが、自機が保持する公開鍵証明書を、新SCに送信するものとしてもよい。この場合、旧SCの傘下の機器それぞれは、旧SCが生成したグループ鍵を用いて、公開鍵証明書を暗号化して、新SCに送信してもよい。
<3>実施の形態1のネゴシエート処理は、公開鍵証明書に記載の機器の属性として、コントローラの機能による分類が記載され、その分類項目(「専用機器」、「汎用機器」、「アプリ」)によって、SCになるコントローラを決定すると説明した。しかしながら、本開示のネゴシエート処理は、これに限定されるものではない。例えば、公開鍵証明書に記載の機器の属性として、通信方式や認証方式などのバージョン情報が記載され、ネゴシエート処理を行うコントローラのなかで、通信方式や認証方式などのバージョン情報として最新のバージョン番号が記載された公開鍵証明書を持つコントローラをSCとして決定してもよい。また、対応機器や対応機能が多いことを示すバージョン情報を持つコントローラをSCとして決定してもよい。これにより、最新の機能を持ったコントローラや対応機器や対応機能が多いコントローラをSCとして決定することができる。
また、公開鍵証明書に記載の機器の属性として、コントローラとペアリング可能な機器の最大数が記載され、ネゴシエート処理を行うコントローラの中でその最大数が一番大きいコントローラをSCとして決定してもよい。これにより、より多くの機器とペアリング可能なコントローラをSCとして決定することができる。
また、公開鍵証明書に記載の機器の属性として、コントローラが対応している通信機能の種類(有線、専用無線、汎用無線、近距離無線)が記載され、その種類によってSCとなるコントローラを決定してもよい。この時、例えば「有線」、「専用無線」、「汎用無線」、「近距離無線」の順番で、SCになりやすいように優先度を設定してもよい。この順番は、HANに接続している可能性が高い(HANに接続していない状態となる頻度が低い)通信に対応しているコントローラが、SCになりやすい順番である。これにより、SCが必要とされるときに、HANに接続している可能性が高いコントローラをSCとして決定することができる。
また、公開鍵証明書に記載の機器の属性として、電源の種類(常時通電、定期通電、短期通電)が記載され、その種類によってSCとなるコントローラを決定してもよい。この時、「常時通電」、「定期通電」、「短期通電」の順番で、SCになりやすい優先度を設定してもよい。この順番は、動作している可能性が高い(電源OFFとなる頻度が低い)コントローラが、SCになりやすい順番である。これにより、SCが必要とされているときに動作している可能性が高いコントローラをSCとして決定することができる。ここで、「常時通電」の機器とは、機器制御用の専用コントローラやログ収集装置、分電盤、ブレーカー、冷蔵庫、エアコン、太陽光発電装置、蓄電池(バッテリー)、電話機、ブロードバンドルータ、終端装置等の常時通電している必要のある機器である。「定期通電」の機器とは、TVや録画装置、オーディオ機器、天井灯等の機器である。「短期通電」の機器とは、電子レンジ、オーブン、洗濯機、掃除機、炊飯器等の機器である。
また、公開鍵証明書に記載の機器の属性として、使用形態(据え置き(固定)、据え置き(移動可)、持ち運び、身につける)が記載され、その形態によってSCになるコントローラを決定してもよい。この時、例えば「据え置き(固定)」、「据え置き(移動可)」、「持ち運び」、「身につける」の順番で、SCになりやすいように優先度を設定してもよい。この順番は、移動させやすいコントローラほどSCになりにくい順番である。移動しない機器であれば、通信環境が変化することも少なく、通信が途中で切れる可能性が低いと考えられる。また、移動しない機器は、電源の確保も容易である。従って、通信が途中で途切れにくく、電源の確保が容易なコントローラをSCとして決定することができる。
さらに、公開鍵証明書に記載の機器の属性によりSCを決めるのではなく、その時の機器の状況によりSCを決定してもよい。例えば、ネゴシエート処理をするときに、そのコントローラとペアリングしている機器の数が一番多いコントローラがSCになるとしてもよい。これにより、SCが変わることにより再認証の必要が生じる機器の台数を減らすことができる。また、稼働時間が一番短いコントローラがSCになるとしてもよいし、製造年月日が一番新しいコントローラがSCになるとしてもよい。これにより、SCの故障により認証処理ができなくなる可能性を減らすことが可能となる。
また、上記の基準を組み合わせて、セキュリティコーディネータを決めてもよい。
<4>実施の形態1におけるネゴシエート処理は、コントローラにより自動で実施するものとして説明した。しかしながら、本開示のネゴシエート処理は、コントローラがユーザへSCの候補となるコントローラを提示し、ユーザが提示された候補の中からSCとなるコントローラを選択するとしてもよい。この時、SCになれるコントローラ全てを候補として提示してもよいし、実施の形態1や変形例<3>に示す基準で選択したコントローラが複数になったときに、それらを候補として提示してもよい。
図26は、本変形例におけるコントローラの表示部での表示例である。図26においては、SCの候補となるコントローラが2つあり、それぞれに異なる家電が登録されている様子を示している。また、2つのコントローラそれぞれの公開鍵証明書に記載された機器の属性(コントローラの機能による分類、通信方式や認証方式などのバージョン情報、製造年月日、稼働時間)が表示されている。ユーザは、提示された情報に応じてSCとなるコントローラを決定する。ここで、ユーザの決定は、例えば、決定したコントローラの画面内の絵をタッチする、それぞれのコントローラに付けられた番号(1や2)を入力装置から入力する、又は、コントローラの識別記号(AやB)を入力装置から入力する、といった方法により入力される。入力装置は、ユーザからの意思をコントローラへ伝えることができる装置であればよく、物理的なキー入力装置、タッチパネル上に提示されるアイコン、音声により指示を与える装置、ジェスチャーにより指示を与える装置、視線によって指示を与える装置であってもよい。
<5>実施の形態1では、ステップS1510〜S1555で乱数を暗号化して共有鍵を検証するチャレンジレスポンス認証を行っているが、これに限定するわけではなく、RFC5191に記載されている認証方式を用いて、認証を行うとしてもよい。RFC5191は非特許文献3に記載されているためここでは述べない。このとき、RFC5191においてEAP−PSKを用いるとしてもよい。また、グループ鍵はEAP−PSKのネゴシエーションの結果導出されるEMSKを用いて導出するとしてもよい。さらに、鍵導出関数はHMAC_SHA2_256を用いてもよい。
<6>実施の形態1では、S1510〜S1555で乱数を暗号化して共有鍵を検証するチャレンジレスポンス認証を行っているが、これに限定するわけではなく、RFC6347に記載されている認証方式を用いて、認証を行うとしてもよい。RFC6347は非特許文献4に記載されているためここでは述べない。
<7>上記実施の形態では、グループへのコントローラの新規参入時に、新規参入するコントローラとグループ内の既存のコントローラとが登録モードを起動して、機器登録処理を行っているが、本開示はこれに限定されるものではない。例えば、以下であってもよい。コントローラの新規参入時に、新規参入するコントローラとグループ内の機器とが登録モードを起動する。このとき、機器は接続コントローラ管理テーブルを参照して、機器のSCとして設定されているコントローラの情報を新規参入するコントローラへ送信する。新規参入するコントローラはSCの情報を受信し、SCと認証することにより参入が可能となる。これにより、グループのSCが家庭内で離れた場所にあったとしても、SC傘下の機器の登録モードを起動することで、SCと新規参入するコントローラとが認証することが可能となる。
<8>コントローラは、接続する機器の消費電力量や蓄電池の電力量、太陽光発電の発電量を表示するとしてもよい。
<9>コントローラは、家庭に設置される分電盤であってもよい。
<10>実施の形態1では、グループ鍵更新処理において、SCとなったコントローラがグループ鍵の有効時間を管理し、各機器へグループ鍵更新通知を送信しているが、SCとなったコントローラから各機器にグループ鍵の有効時間を通知し、各機器がグループ鍵の有効時間を管理し、各機器からSCとなったコントローラへグループ鍵更新通知を送信してもよい。
<11>実施の形態1では、グループ鍵の有効時間を残り時間で管理しているが、これに限定するものではなく、グループ鍵の生成時刻やグループ鍵の有効期間の終了時刻で管理するとしてもよい。グループ鍵の生成時刻で管理する場合、グループ鍵の有効期間の長さを別途記憶し、現在の時刻と、グループ鍵の生成時刻にグループ鍵の有効期間を追加した時刻とを比較し、グループ鍵を更新するか否かを判断する。また、グループ鍵の有効期間の終了時刻で管理する場合、現在の時刻とグループ鍵の有効時間の終了時刻とを比較し、グループ鍵を更新するかを判断する。
<12>実施の形態1では、グループ鍵更新処理においてグループ鍵未更新の機器が存在した場合、グループ鍵更新通知を送信し、グループ鍵の更新を行っているが、当該機器の電源が入っていない場合には、定期的にグループ鍵更新通知を送信するとしてもよい。
<13>実施の形態1では、グループ鍵更新処理においてグループ鍵未更新の機器が存在した場合、グループ鍵更新通知を送信し、グループ鍵の更新を行っているが、当該機器がペアリングされたコントローラによる制御を受けている場合は、当該機器からグループ鍵の延期時間を通知して、当該延期時間の経過後にグループ鍵更新処理を行うとしてもよい。
<14>実施の形態1では、SC引継処理時、SCの変更通知の後に、新SCと旧SC傘下の機器とで共有鍵を計算(S1330)しているが、グループ鍵有効時間が切れてグループ鍵更新処理が行われる前であればどのタイミングで行ってもよい。たとえば、機器の動作が行われていない時にするとしてもよいし、グループ鍵更新処理の直前に行うとしてもよい。これにより、機器の動作に負担をかけずにコントローラと機器間で共有鍵の計算ができる。
<15>実施の形態1では、ネゴシエート処理時にコントローラAがSCの判断(ステップS1210−S1240)をしているが、これに限定するわけではなく、コントローラAとコントローラBのそれぞれがSCの判断を行ってもよい。
<16>上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
<17>上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又はすべてを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
<18>上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
<19>本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
<20>上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
(補足)
以下、さらに、本開示の構成と効果について補足説明する。
<A>本開示の一態様の認証方法は、ネットワーク上の1以上の機器と2以上のコントローラとが所属するグループにおける認証方法であって、前記グループ内の少なくとも1つのコントローラが、前記グループ内で共通で利用するグループ鍵を管理するコーディネータを、前記グループ内のコントローラの中から各コントローラの属性に応じて決定し、前記コーディネータが、グループ鍵を生成し、前記グループ内の機器およびコントローラと相互認証を実行し、認証に成功した機器およびコントローラと前記生成したグループ鍵を共有することを特徴とする。
この構成によると、ネットワーク上のグループ内に複数のコントローラが存在する場合において、グループ内で共通で利用するグループ鍵を管理するSCとして、適切なコントローラを選択することができる。
<B>本開示の一態様の認証方法は、ネットワーク上の1以上の機器と第1のコントローラとが所属するグループにおける認証方法であって、前記第1のコントローラが、第1のグループ鍵を生成し、前記グループ内の機器と第1の相互認証を実行し、認証に成功した機器と前記第1のグループ鍵を共有し、前記グループに新たに第2のコントローラが参入した場合、前記グループ内の少なくとも1つのコントローラが、前記グループ内で共通で利用するグループ鍵を管理するコーディネータを、前記グループ内のコントローラの中から各コントローラの属性に応じて決定し、前記第1のコントローラが、前記コーディネータと第2の相互認証を実行し、認証に成功した場合に前記第1のグループ鍵を共有し、前記コーディネータが、前記第1のグループ鍵を用いて、前記グループ内で暗号通信を行い、前記コーディネータが、第2のグループ鍵を生成し、前記グループ内の機器およびコントローラと第3の相互認証を実行し、認証に成功した機器およびコントローラのグループ鍵を前記第2のグループ鍵に更新させることを特徴とする。
この構成によると、ネットワーク上のグループ内に複数のコントローラが存在する場合において、グループ内で共通で利用するグループ鍵を管理するSCとして、適切なコントローラを選択することができる。さらに、SCが変更した場合に、新たにSCになったコントローラは、旧SCだったコントローラから受信したグループ鍵を用いて、グループ内の複数の機器と一斉同報通信を暗号化して行うことができる。
<C>本開示の一態様の認証方法は、上記態様<B>の認証方法において、前記第1のコントローラが、前記ネットワーク内の機器の認証情報を、前記コーディネータに送信し、前記コーディネータが、前記第1のコントローラから受信した認証情報を用いて前記第3の相互認証を実行することを特徴とする。
この構成によると、新SCと旧SCの傘下の機器との間における認証を簡略化することができる。その結果、機器やコントローラの処理負担を少なくすることができる。
<D>本開示の一態様の認証方法は、上記態様<B>の認証方法において、前記グループ内の機器およびコントローラは、相互認証を実行して当該認証に成功した相手を登録する登録モードを備え、前記第1のコントローラは、前記第2の相互認証が成功した場合、前記コーディネータと前記グループ内の機器へ、登録モードの起動指示を送信し、前記グループ内の機器は、前記第1のコントローラから登録モードの起動指示を受信して登録モードを起動し、前記コーディネータは、前記第1のコントローラから登録モードの起動指示を受信して登録モードを起動し、登録モードを起動した機器と前記第3の相互認証を実行することを特徴とする。
この構成によると、ユーザが手動で登録モードを起動せずとも、旧SC傘下の機器と新SCとでペアリングを行うことができ、ユーザの利便性が向上する。
<E>本開示の一態様の認証方法は、上記態様<A>又は<B>の認証方法において、前記グループ内のコントローラそれぞれは、自機器の1以上の属性が記載された公開鍵証明書を保持し、前記グループ内のコントローラは、それぞれが保持する公開鍵証明書に記載された属性を用いて、前記決定を行うことを特徴とする。
この構成によると、公開鍵証明書に記載されたコントローラの属性を参照して、SCとして適切なコントローラを選択することができる。
<F>本開示の一態様の認証方法は、上記態様<E>の認証方法において、前記公開鍵証明書に記載される属性は、専用、汎用およびアプリの3つのうちのいずれかであり、属性が専用とは、コントローラが特定の目的のために専用の機能のみを提供することを示し、属性が汎用とは、コントローラが複数の目的に対してそれぞれの機能を提供することを示し、属性がアプリとは、コントローラが複数の目的に対してそれぞれの機能を提供する機器上で動作するソフトウェアであることを示し、属性が専用であるコントローラは、属性が汎用およびアプリであるコントローラよりも優先的にコーディネータになり、属性が汎用であるコントローラは、属性がアプリであるコントローラよりも優先的にコーディネータになることを特徴とする。
この構成により、電源断やネットワーク未接続状態が少ないコントローラ(公開鍵証明書に記載の属性が「専用機器」のコントローラ)がSCとして選択されやすくなる。また、電源断やネットワーク未接続状態が多いコントローラ(公開鍵証明書に記載の属性が「アプリ」のコントローラ)がSCとして選択されにくくなる。
<G>本開示の一態様の認証方法は、上記態様<E>の認証方法において、前記公開鍵証明書に記載された属性とは、バージョン情報であり、前記グループ内のコントローラは、それぞれが保持する公開鍵証明書に記載されたバージョン情報の示すバージョン番号の新しさに応じて、前記決定を行うことを特徴とする。
この構成により、最新の機能を持ったコントローラをSCとして決定することができる。
<H>本開示の一態様の認証方法は、上記態様<E>の認証方法において、前記公開鍵証明書に記載された属性とは、バージョン情報であり、前記グループ内のコントローラは、それぞれが保持する公開鍵証明書に記載されたバージョン情報の示す対応機器の数に応じて、前記決定を行うことを特徴とする。
この構成により、対応機器の多いコントローラをSCとして決定することができる。
<I>本開示の一態様の認証方法は、上記態様<A>又は<B>の認証方法において、前記コントローラの属性は、前記コントローラの累積稼働時間であることを特徴とする。
この構成により、SCの故障により認証処理ができなくなる可能性を減らすことが可能となる。
<J>本開示の一態様の認証方法は、上記態様<A>又は<B>の認証方法において、前記コントローラの属性は、前記コントローラの製造時からの経過時間であることを特徴とする。
この構成により、SCの故障により認証処理ができなくなる可能性を減らすことが可能となる。
<K>本開示の一態様の認証方法は、上記態様<A>又は<B>の認証方法において、前記コントローラの属性は、前記コントローラとペアリングしている機器の数であることを特徴とする。
この構成により、SCが変わることにより再認証の必要が生じる機器の台数を減らすことができる。
<L>本開示の一態様の認証方法は、上記態様<A>又は<B>の認証方法において、前記グループ内のコントローラは、ディスプレイと操作部とを備えており、前記決定は、前記グループ内のコントローラが、前記グループ内の各コントローラの属性を示す情報を前記ディスプレイに表示し、前記表示に対して前記グループ内のコントローラから一コントローラを選択するユーザ入力を前記操作部で受け付け、選択されたコントローラを前記コーディネータとする処理であることを特徴とする。
この構成によると、ネットワーク上のグループ内に複数のコントローラが存在する場合において、SCとして適切なコントローラを選択することができる。