(58)【調査した分野】(Int.Cl.,DB名)
前記通信端末は、前記第一の生成手段による前記第二の情報を生成受けて、前記第一の記憶手段に前記第二の情報が保持された状態を維持して前記通信端末を再起動して前記通信端末と前記サーバとの接続を解消する再起動手段を備え、
前記第二の接続処理手段は、前記通信端末の再起動を受けて、前記第一の通信手段を介して前記サーバへ前記第二の要求情報を送信する、
ことを特徴とする請求項1または2に記載の通信システム。
第一の情報を保持する第一の記憶手段を備える通信端末と、前記第一の情報と同一の値である第三の情報を保持する第二の記憶手段を備えるサーバとが共通鍵を用いて暗号通信を行う通信方法であって、
前記通信端末が前記サーバへ第一の要求情報を送信する第一のステップ、
前記サーバが前記第一の要求情報を受信すると、前記通信端末へ第一の応答情報を送信する第二のステップ、
前記通信端末が前記第一の要求情報と、前記第一の応答情報と、前記第一の情報とを用いて第二の情報を生成する第三のステップ、
前記サーバが前記第一の要求情報と、前記第一の応答情報と、前記第三の情報とを用いて前記第二の情報と同一の値である第四の情報を生成する第四のステップ、
前記第三のステップの実行を受けて、前記通信端末が前記サーバへ第二の要求情報を送信する第五のステップ、
前記サーバが前記第二の要求情報の受信を受けて、前記通信端末へ第二の応答情報を送信する第六のステップ、
前記通信端末が前記第二の要求情報と、前記第二の応答情報と、前記第二の情報とを用いて第一の共通鍵を生成する第七のステップ、
前記サーバが前記第二の要求情報と、前記第二の応答情報と、前記第四の情報とを用いて前記第一の共通鍵と同一の値である第二の共通鍵を生成する第八のステップ、
前記通信端末が前記第一の共通鍵を用いて前記サーバへの送信データの暗号化と前記サーバからの受信データの復号とを行い、前記サーバが前記第二の共通鍵を用いて前記通信端末への送信データの暗号化と前記通信端末からの受信データの復号とを行う第九のステップ、
を含む通信方法。
【発明を実施するための形態】
【0013】
(1)第1の実施形態
本発明の第1の実施形態を、
図1から
図8を参照して説明する。なお第1の実施形態では、LPWAの技術仕様であるLoRaWAN(LoRa Wide Area Network:LoRaは登録商標)に規定される方式を一部利用する例を説明する。
【0014】
(A)ハードウェア
(A−1)無線通信システムの全体構成
図1は、第1の実施形態における無線通信システム1Aの全体構成を示す構成図である。
図1において無線通信システム1Aは、無線端末2、基地局3、ネットワークサーバ4、上位装置5を含む。無線端末2の数は任意のn個(nは1以上の整数)であってよいが、第1の実施形態では無線端末2が1つ(n=1)である形態を説明する。なお無線端末2が2以上である形態は、第2の実施形態にて説明する。
【0015】
無線端末2は、屋内や屋外に設置され、無線端末2に搭載または接続される各種センサーの検出情報や、無線端末2に接続される電気機器などから収集した情報を、無線通信システム1Aの上流(上位装置5側)に送信するものである。無線端末4は基地局3と無線により接続される。第1の実施形態では、無線端末2はLoRaWANに規定される変調方式にて基地局3と接続されるものとする。なお無線端末2は、後述する本発明の動作を実行して無線通信システム1Aに参加する。
【0016】
基地局3は、無線端末2から無線にて受信した各種情報をネットワークサーバ4へ中継する。基地局3はLoRaWANに規定される変調方式にて無線端末2と接続される。また基地局3はネットワークサーバ4と接続される。基地局3とネットワークサーバ4との接続は、例えば既存のEthernet規格(Ethernetは登録商標)に従ったケーブルで接続される。有線で接続するにあたり、接続に用いる規格、方式は限定されない。また基地局3とネットワークサーバ4とを無線で接続してもよく、無線で接続するにあたり、接続に用いる規格、方式は限定されない。基地局3は、無線端末2とネットワークサーバ4との間で無線と有線の変換、情報中継の能力を備えていれば特定の装置に限定されないが、例えば無線端末2を基地局3の用途で使用して実現してもよい。以後の説明においては、基地局3の内部構成は図示せず、説明を省略する。
【0017】
ネットワークサーバ4は、基地局3から有線にて受信した無線端末2からの各種情報を、上位装置5へ中継する。またネットワークサーバ4は、後述する本発明の動作を実行して無線通信システム1Aにおける無線端末2の参加を制御する。ネットワークサーバ4と上位装置5との接続は、例えば既存のEthernet規格に従ったケーブルで接続され、接続に用いる規格、方式は限定されない。ネットワークサーバ4と上位装置5とを無線で接続してもよく、無線で接続するにあたり、接続に用いる規格、方式は限定されない。
【0018】
上位装置5は、ネットワークサーバ4から有線にて受信した無線端末2からの各種情報に基づいて各種の処理を実行するものである。上位装置5は例えばアプリケーションサーバである。例えば、アプリケーションサーバは無線端末2から送信された各種センサーの検出情報を蓄積し処理して、無線通信システム1Aの利用者へ監視サービスを提供する。また他の例として、アプリケーションサーバは無線端末2から送信された電気機器などから収集した情報を蓄積し処理して、無線通信システム1Aの利用者へエネルギー管理や遠隔検針サービスを提供する。
【0019】
図1において、各装置を結ぶ実線は有線による接続を示し、各装置を結ぶ点線は無線による接続を示す。上述のとおり無線端末2と基地局3は無線で接続され、またネットワークサーバ4と基地局3、および上位装置5とネットワークサーバ4は有線で接続される。ここで、ネットワークサーバ4と基地局3、および上位装置5とネットワークサーバ4は、上述のとおり、有線に限らず無線で接続するものであってもよい。
【0020】
(A−2)無線端末2、ネットワークサーバ4の構成
(A−2−1)無線端末2
図2は無線端末2の内部構成を示すブロック図である。
図2において無線端末2は、制御部21、記憶部22、送信部23、受信部24、暗号化部25、復号部26、外部インタフェース27、アンテナ28を有する。
【0021】
制御部21は無線端末2の動作を制御するものでありCPU(Central Processing Unit)などにより実現される。制御部21はさらに接続処理部211、一時保持部212、乱数発生部213、暗号鍵生成部214を有する。なお
図2において以後の説明のため暗号化部25と復号部26を制御部21の外部に設けているが、制御部21が暗号化部25と復号部26を有していてもよい。
図2において制御部21は記憶部22、暗号化部25、復号部26、外部インタフェース27と接続される。
【0022】
接続処理部211は、無線端末2とネットワークサーバ4との間における接続処理を実行する。一時保持部212は、接続処理部211による接続処理に用いる情報を一時的に保持するものであり、例えばCPUにおける小容量のキャッシュメモリ等で実現される。乱数発生部213は、接続処理部211による接続処理に用いる乱数を発生する。暗号鍵生成部214は、接続処理部211による接続処理を受けて、ネットワークサーバ4と共通である暗号鍵を生成する。これら接続処理部211、一時保持部212、乱数発生部213、暗号鍵生成部214の動作により、ネットワークサーバ4との間における接続処理が実行され、無線端末2においてネットワークサーバ4と共通である暗号鍵が生成される。制御部21の動作の詳細は後述する。
【0023】
記憶部22は、無線端末2を動作させるための動作プログラムを格納する主記憶装置、および無線端末2の動作における一次記憶装置である。記憶部22は、主記憶装置としてEEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリなどの不揮発メモリーで実現され、一次記憶装置としてRAM(Random Access Memory)などのメモリーで実現される。なお記憶部22に格納される動作プログラムにおいて、後述する仮AppKeyが予め定義されている。これについては無線端末2の動作の詳細と合わせて後述する。
【0024】
送信部23は、無線端末2から基地局3へ送信する各種情報を、無線通信のために送信処理する。送信部23の送信処理は、LoRaWANに規定されるLoRa変調方式に従った各種情報の変調処理を含む。
図2において送信部23は暗号化部25およびアンテナ23と接続される。
【0025】
受信部24は、基地局3からの各種情報を、無線端末2にて処理可能とするために受信処理する。受信部24の受信処理は、LoRaWANに規定されるLoRa変調方式に従った各種情報の復調処理を含む。
図2において受信部24は復号部26およびアンテナ23と接続される。
【0026】
暗号化部25は、無線端末2から基地局3へ送信する各種情報を、送信部23の送信処理に先んじて暗号化する。暗号化部25は、暗号鍵生成部214によって生成された、ネットワークサーバ4と共通の暗号鍵を用いて各種情報を暗号化する。なお暗号化部25にて用いられる暗号化方式は限定されない。
【0027】
復号部26は、受信部24が受信処理した基地局3からの各種情報の暗号化を解除して復号する。復号部26は、暗号鍵生成部214によって生成されたネットワークサーバ4と共通の暗号鍵、換言すると暗号化部25が用いるものと同一の暗号鍵を用いて、各種情報を復号する。なお復号部26にて用いられる暗号化方式は、暗号化部25と同一である。
【0028】
外部インタフェース27は、無線端末2と外部装置とを接続するインタフェースである。ここで外部装置は例えば各種センサー、電気機器などである。外部インタフェースは既存の規格に従ったものでよく、例えばUSB(Universal Serial Bus)規格や、Ethernet規格に従ったアダプタである。
【0029】
アンテナ28は、送信部23および受信部24と接続され、基地局3との間で電波の送受信を行う。
【0030】
請求項との対応関係において、無線端末2が通信端末に対応する。また無線端末2における各機能部と請求項とにおける対応関係は次のとおりである。接続処理部211は第一の接続処理手段および第二の接続処理手段に対応する。暗号鍵生成部214は第一の生成手段および第二の生成手段に対応する。乱数発生部213は第一の乱数発生手段に対応する。記憶部22は第一の記憶手段に対応する。送信部23および受信部24は第一の通信手段に対応する。暗号化部25は第一の暗号化手段に対応する。復号部26は第一の復号手段に対応する。
【0031】
(A−2−2)ネットワークサーバ4の構成
図3はネットワークサーバ4の内部構成を示すブロック図である。
図3においてネットワークサーバ4は、制御部41、記憶部42、送信部43、受信部44、暗号化部45、復号部46、外部インタフェース47、インタフェース48を有する。
【0032】
制御部41はネットワークサーバ4の動作を制御するものでありCPUなどにより実現される。制御部41はさらに接続処理部411、一時保持部412、乱数発生部413、暗号鍵生成部414を有する。なお
図3において以後の説明のため暗号化部45と復号部46を制御部41の外部に設けているが、制御部41が暗号化部45と復号部46を有していてもよい。
図3において制御部41は記憶部42、暗号化部45、復号部46、外部インタフェース47と接続される。
【0033】
接続処理部411は、無線端末2を無線通信システム1Aに参加させるために無線端末2との間で行う接続処理を実行する。一時保持部412は、接続処理部411による接続処理に用いる情報を一時的に保持するものであり、例えばCPUにおける小容量のキャッシュメモリ等で実現される。乱数発生部413は、接続処理部411による接続処理に用いる乱数を発生する。暗号鍵生成部414は、接続処理部411による接続処理を受けて、無線端末2と共通である暗号鍵を生成する。これら接続処理部411、一時保持部412、乱数発生部413、暗号鍵生成部414の動作により、無線端末2との間における接続処理が実行され、ネットワークサーバ4において無線端末2と共通である暗号鍵が生成される。制御部41の動作の詳細は後述する。
【0034】
記憶部42は、ネットワークサーバ4を動作させるための動作プログラムを格納する主記憶装置、およびネットワークサーバ4の動作における一次記憶装置である。記憶部42は、主記憶装置としてHDD(Hard Disc Drive)やSSD(Solid State Drive)などで実現され、一次記憶装置としてRAMなどのメモリーで実現される。なお記憶部42に格納される動作プログラムにおいて、後述する仮AppKeyが予め定義されている。これについては制御部41の動作の詳細と合わせて後述する。
【0035】
送信部43は、ネットワークサーバ4から基地局3への各種情報を送信処理する。送信部23の送信処理は、例えば情報のパケット化などである。
図3において送信部43は暗号化部45およびインタフェース48と接続される。
【0036】
受信部44は、基地局3からの各種情報を、ネットワークサーバ4にて処理可能とするために受信処理する。受信部44の受信処理は、例えばパケットからの情報抽出である。
図3において受信部44は復号部46およびインタフェース48と接続される。
【0037】
暗号化部45は、ネットワークサーバ4から基地局3へ送信する各種情報を、送信部43の送信処理に先んじて暗号化する。暗号化部45は、暗号鍵生成部414によって生成された、無線端末2と共通の暗号鍵を用いて、各種情報を暗号化する。なお暗号化部45にて用いられる暗号化方式は限定されない。
【0038】
復号部46は、受信部44が受信処理した基地局3からの各種情報の暗号化を解除して復号する。復号部46は、暗号鍵生成部414によって生成された無線端末2と共通の暗号鍵、換言すると暗号化部45が用いるものと同一の暗号鍵を用いて、各種情報を復号する。なお復号部46にて用いられる暗号化方式は、暗号化部45と同一である。
【0039】
外部インタフェース47は、ネットワークサーバ4と上位装置5とを接続するインタフェースである。ここで上位装置5は、上述のとおり例えばアプリケーションサーバである。上位装置5の態様に合わせて外部インタフェース47を適宜選択すればよく、上述のように上位装置5がアプリケーションサーバであれば、外部インタフェース47を例えばEthernet規格に従ったアダプタとすればよい。
【0040】
インタフェース48は、送信部43および受信部44と接続され、ネットワークサーバ4と基地局3とを接続する例えばEthernet規格に従ったアダプタである。
【0041】
請求項との対応関係において、ネットワークサーバ4がサーバに対応する。またネットワークサーバ4における各機能部と請求項とにおける対応関係は次のとおりである。接続処理部411は第三の接続処理手段および第四の接続処理手段に対応する。暗号鍵生成部414は第三の生成手段および第四の生成手段に対応する。乱数発生部413は第二の乱数発生手段に対応する。記憶部42は第二の記憶手段に対応する。送信部43および受信部44は第二の通信手段に対応する。暗号化部45は第二の暗号化手段に対応する。復号部46は第二の復号手段に対応する。
ネットワークサーバ4における各機能部と第二の本発明とにおける対応関係は次の通りである。接続処理部411および暗号鍵生成部414は第一の処理部および第二の処理部に対応する。一時保持部412は記憶部に対応する。送信部43は送信部に対応する。受信部44は受信部に対応する。暗号化部45は暗号化部に対応する。復号部46は復号部に対応する。
【0042】
(B)動作
図4を参照して、第1の実施形態の動作において利用するLoRaWANに規定される方式を説明する。
図5および
図6を参照して無線端末2とネットワークサーバ4との間における情報の授受、および暗号鍵生成の流れを説明する。
図7および
図8を参照して無線端末2およびネットワークサーバ4の動作の詳細を説明する。
【0043】
(B−1)LoRaWANにおける鍵生成の仕組み
図4はLoRaWANにおける暗号鍵生成の基本的な仕組みを示す図である。第1の実施形態においては、
図4に示す仕組みのうち、エンドデバイスとネットワークサーバとの間で共通の暗号鍵であるAppSKey(Application session key)が生成される仕組みを利用する。なお第1の実施形態において無線端末2がエンドデバイスに相当し、ネットワークサーバ4がネットワークサーバに相当する。なお
図4において、エンドデバイスとネットワークサーバのそれぞれにおける情報のうち点線で囲んだものは、本実施形態に関与しない情報であり、これらについては説明を省略する。またエンドデバイスとネットワークサーバのそれぞれにおいて二点鎖線で囲んだNwkSKey(Network session key)は、本実施形態に関与しないため説明を省略する。
【0044】
エンドデバイスとネットワークサーバは共通の情報であるAppKey(Application key)90が予め設定されている。AppKeyは、エンドデバイスとネットワークサーバを運用する作業者により設定されるものであり、AppKeyはAppSkeyを生成するための基(シード、ルート)になる情報である。一方でAppSKeyは、エンドデバイスとネットワークサーバのそれぞれでAppKeyを基に生成され、エンドデバイスとネットワークサーバとの間で通信するユーザデータの暗号化および復号に用いられる。AppSKeyはエンドデバイスとネットワークサーバとの接続が解消されるまで有効であり、エンドデバイスとネットワークサーバとの接続が解消された場合は、エンドデバイスとネットワークサーバとの接続が再度確立されると新たなAppSKeyが生成される。
【0045】
エンドデバイスはネットワークに参加するにあたり、ネットワークサーバへJoinRequestを送信する。このJoinRequestは少なくとも、エンドデバイス固有の識別子(アドレス)であるDevEUI(End−device identifier)94と、エンドデバイスが発生させた乱数であるDevNonce92を含む。
【0046】
ネットワークサーバはエンドデバイスからJoinRequestを受信すると、JoinRequestに含まれるDevEUI94とDevNonce92を抽出する。そしてDevEUI94に基づいてエンドデバイスを識別し、当該JoinRequestの送信元であるエンドデバイスに対応したNetID(Network identifier)96を特定する。NetIDはエンドデバイスがネットワークに参加するに当たり割り振られる識別子(アドレス)である。さらにネットワークサーバは、乱数を発生させこれをAppNonce98とする。ネットワークサーバはエンドデバイスへ、少なくともNetID96とAppNonce98を含むJoinAcceptを送信する。
【0047】
エンドデバイスはネットワークサーバからJoinAcceptを受信すると、JoinAcceptに含まれるNetID96とAppNonce98を抽出する。そしてエンドデバイスは、ネットワークサーバと共通であるAppKey90、ネットワークサーバへ送信したDevNonce92、ネットワークサーバから受信したNetID96およびAppNonce98を計算機に与え、AppSKey910を生成する。なお計算機はネットワークサーバと共通の演算式を用いてAppSKeyを生成する。
【0048】
一方でネットワークサーバは、JoinAcceptを送信すると、エンドデバイスと同様にAppSkeyを生成する。つまりネットワークサーバは、エンドデバイスと共通であるAppKey90、エンドデバイスから受信したDevNonce92、エンドデバイスへ送信したNetID96およびAppNonce98を計算機に与え、AppSKey910を生成する。
【0049】
エンドデバイスとネットワークサーバがそれぞれAppSKeyを生成すると、エンドデバイスがネットワークに参加する状態となる。以後、エンドデバイスとネットワークサーバは、送受信するユーザデータを、AppSkeyを用いて暗号化、復号して通信を行う。
【0050】
上記のように、LoRaWANにおいては、エンドデバイスとネットワークサーバがJoinRequestとJoinAcceptの送受信により、DevNonce、NetID、AppNonceを取得して、AppSkeyを生成する。第1の実施形態ではこの仕組みを利用する。ただし第1の実施形態ではAppKeyの取り扱いが異なっている。
【0051】
(B−2)無線端末とネットワークサーバの間の情報授受と暗号鍵生成
次いで、
図5および
図6を参照して無線端末2とネットワークサーバ4との間における情報の授受、および暗号鍵生成の流れを説明する。
図5は無線端末2とネットワークサーバ4とにおけるデータ送受信の流れを示すシーケンス図である。
図6は無線端末2とネットワークサーバ4における各情報および暗号鍵の遷移を示す図である。なお
図5では基地局3を省略している。また
図5中の右側に付したアルファベットA〜Fは、
図6中の(A)〜(F)にそれぞれ対応する。
【0052】
上述したLoRaWANの基本的な仕組みの前提と異なり、第1の実施形態における無線端末2は、無線通信システム1Aを運用する作業者により予めAppKeyが設定されていない。無線端末2は予めAppKeyが設定されていない状態で起動する(S51)。この時、無線端末2は自身のプログラムに定義される仮AppKeyを当該プログラムから読み出して自身に設定する。この仮AppKeyは作業者により設定されるものではなく、無線端末2のプログラムは作業者の干渉を受けないものである。またネットワークサーバ4では、無線通信システム1Aに参加登録していない無線端末2に対して、無線端末2と同様に仮AppKeyを対応づけて予め記憶している。
【0053】
次いで無線端末2は、乱数を発生させてDevNonceとし、DveNonceとDveEUIを含むJoinRequestをネットワークサーバ4へ送信する(S52)。
図5のS52までの状態を
図6(A)に示す。
図6(A)では、無線端末2とネットワークサーバ4の双方に仮AppKey:α1が保持されており、無線端末2にDevNonce:ε1が保持されている。
【0054】
ネットワークサーバ4は無線端末2からJoinRequestを受信すると、JoinRequestに含まれるDveEUIとDevNonceを抽出する。ネットワークサーバ4はDevEUIに基づき無線端末2に対応するNetIDを特定し、また乱数を発生させてAppNonceとする。ネットワークサーバ4はNetIDとAppNonceを含むJoinAcceptを無線端末2へ送信する(S53)。
図5のS53までの状態を
図6(B)に示す。
図6(B)では、ネットワークサーバ4にJoinRequestに含まれるDevNonce:ε1が保持されており、さらにDevEUIから特定したNetID:σ1と、AppNonce:ζ1が保持されている。
【0055】
無線端末2はネットワークサーバ4からJoinAcceptを受信すると、JoinAcceptに含まれるNetIDとAppNonceを抽出する。無線端末2は仮AppKey、ネットワークサーバ4へ送信したDveNonce、ネットワークサーバ4から受信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これを正式AppKeyとする(S55)。一方でネットワークサーバ4は、仮AppKey、無線端末2から受信したDveNonce、無線端末2へ送信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これを正式AppKeyとする(S56)。
図5のS54およびS55までの状態を
図6(C)に示す。
図6(C)では、無線端末2にJoinAcceptに含まれるNetID:σ1とAppNonce:ζ1が保持されている。また無線端末2とネットワークサーバ4の双方に、仮AppKey:α1、NetID:σ1、DevNonce:ε1およびAppNonce:ζ1を用いて生成されたAppKey:β1が保持されている。
【0056】
次いで無線端末2は、S55で生成した正式AppKey(
図6(C)のβ1)を保持した状態で再起動する(S56)。無線端末2はこのS56の再起動において、上述したS51の起動時とは異なり、自身のプログラムから仮AppKeyを読み出さず、正式AppKeyを保持して起動する。無線端末2の再起動により、無線端末2とネットワークサーバ4の接続は解消される。この時、ネットワークサーバ4では、無線端末2に対応してS54で生成した正式AppKey(
図6(C)のβ1)を保持し、その他情報は接続の解消に伴い消去する。
【0057】
次いで無線端末2は、乱数を発生させてDevNonceとし、DveNonceとDveEUIを含むJoinRequestをネットワークサーバ4へ送信する(S57)。
図5のS57までの状態を
図6(D)に示す。
図6(D)では、無線端末2とネットワークサーバ4の双方にAppKey:β1が保持されており、無線端末2にDevNonce:ε2が保持されている。なお
図6(A)で保持されていた仮AppKey:α1は無線端末2の再起動および接続の解消により
図6(D)では消去されており、またDevNonceは乱数であるから、
図6(D)のDevNonce:ε2は
図6(A)のDevNonce:ε1と異なる値である。
【0058】
ネットワークサーバ4は無線端末2からJoinRequestを受信すると、JoinRequestに含まれるDveEUIとDevNonceを抽出する。ネットワークサーバ4はDevEUIに基づき無線端末2に対応するNetIDを特定し、乱数を発生させてAppNonceとする。ネットワークサーバ4はNetIDとAppNonceを含むJoinAcceptを無線端末2へ送信する(S58)。
図5のS58までの状態を
図6(E)に示す。
図6(E)では、ネットワークサーバ4にJoinRequestに含まれるDevNonce:ε2が保持されており、さらにDevEUIから特定したNetID:σ1と、AppNonce:ζ2が保持されている。なおNetIDは無線端末2に固有の識別子であるから、
図6(B)と同じくNetID:σ1であり、またAppNonceは乱数であるから、
図6(E)のAppNonce:ζ2は
図6(B)のAppNonce:ζ1と異なる値である。
【0059】
無線端末2はネットワークサーバ4からJoinAcceptを受信すると、JoinAcceptに含まれるNetIDとAppNonceを抽出する。無線端末2はAppKey、ネットワークサーバ4へ送信したDveNonce、ネットワークサーバ4から受信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これをAppSKeyとする(S510)。一方でネットワークサーバ4は、AppKey、無線端末2から受信したDveNonce、無線端末2へ送信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これをAppSKeyとする(S59)。
図5のS59およびS510までの状態を
図6(F)に示す。
図6(F)では、無線端末2にJoinAcceptに含まれるNetID:σ1とAppNonce:ζ2が保持されている。また無線端末2とネットワークサーバ4の双方に、AppKey:β1、NetID:σ1、DevNonce:ε2およびAppNonce:ζ2を用いて生成されたAppSKey:γ1が保持されている。なおDevNonce:ε2およびAppNonce:ζ2は乱数であるから、それぞれは、
図6(C)のDevNonce:ε1およびAppNonce:ζ1と異なる値である。従って、DevNonce:ε2およびAppNonce:ζ2を用いて生成されるAppSKey:γ1は、AppKey:β1と異なる値である。
【0060】
無線端末2とネットワークサーバ4は、各々でAppSkey(
図6(F)のγ1)が生成されると、当該AppSKeyを用いてユーザデータを暗号化、復号する通常運用へ以降する(S511)。AppSKeyは無線端末2とネットワークサーバ4との接続が解消されるまで有効であるから、無線端末2とネットワークサーバ4との接続が解消された場合は、S51からS510までの動作が実行され、S52からS55(
図6(A)〜(C))のフェーズ1で新たなAppKeyが生成され、S56からS510(
図6(D)〜(F))のフェーズ2で新たなAppSkeyが生成される。
【0061】
なお第一の本発明および第二の本発明との対応関係において、上述した仮AppKeyは第一の情報に対応し、正式AppKeyは第二の情報に対応し、AppSKeyは暗号鍵に対応する。
【0062】
(B−3)無線端末の動作フロー
図5および
図6を参照して説明した無線端末とネットワークサーバの間の情報授受と暗号鍵生成について、無線端末2に着目しその動作の詳細を説明する。
図7は無線端末2の動作を示すフローチャートである。
【0063】
無線端末2が起動すると、制御部21は記憶部22からAppKeyの読出しを試みる(S700)。そして記憶部22にAppKeyが保持されているかを判定する(S702)。上述のとおり、無線端末2は予めAppKeyが設定されていない状態で起動するため、記憶部22にAppKeyは保持されていない。従って判定は否定される(S702:No)。
【0064】
S702の判定が否定されると、制御部21は記憶部22に格納される動作プログラムに定義される仮AppKey(
図6(A)のα1)を動作プログラムから読み出し、一時保持部212に保持する(S704)。この仮AppKeyは動作プログラムにて定義されるため、無線通信システム1Aを運用する作業者は干渉できず、従って作業者は仮AppKeyを知ることはできない。
【0065】
制御部21は記憶部22からDevEUIを読み出して(図示せず)一時保持部212に保持する(S708)。また制御部21は乱数発生部213に乱数を発生させこれをDevNonce(
図6(A)のε1)とし一時保持部212に保持する(S710)。
【0066】
制御部21は接続処理部211に、DevEUIおよびDevNonceを含むJoinRequestコマンドを作成させる(S712)。JoinRequestコマンドの作成は、例えばLoRaWANにて規定される方式を用いてもよい。接続処理部211によりJoinRequestコマンドが作成されると、制御部21は送信部23を介してJoinRequestをネットワークサーバ4へ送信する(S714)。なおJoinRequestを暗号化部25で暗号化してもよい。暗号化部25でJoinRequestを暗号化する場合は、例えば仮AppKeyを用いて暗号化してもよい。
【0067】
送信部23を介してJoinRequestをネットワークサーバ4に送信すると、無線端末2はネットワークサーバからのJoinAcceptの受信を待機する(S716)。
【0068】
無線端末2がネットワークサーバ4からJoinAcceptを受信すると(S716:Yes)、制御部21は受信したJoinAcceptに含まれるNetID(
図6(C)のδ1)とAppNonce(
図6(C)のζ1)を抽出し、一時保持部212に保持する(S718)。
【0069】
次いで制御部21は、暗号鍵生成部214に、一時保持部212に保持された仮AppKey(
図6(C)のα1)、DevNonce(
図6(C)のε1)、NetID(
図6(C)のδ1)およびAppNonce(
図6(C)のζ1)を用いて暗号鍵を生成させる(S720)。
【0070】
制御部21は暗号鍵が生成されると、記憶部22にAppKeyが保持されているかを再度判定する(S722)。S722の判定は上述したS702の判定と同様である。ここで、記憶部22にAppKeyは保持されていなので、判定は否定される(S722:No)。
【0071】
S722の判定が否定されると、制御部21は、S720にて生成された暗号鍵を正式なAppKey(
図6(C)のβ1)として記憶部22に保持する(S724)。
【0072】
次いで制御部21は、AppKeyを記憶部22に保持した状態で、無線端末2を再起動する(S726)。この再起動は、無線端末2の電源を一旦遮断して再度投入するハードリセットでもよいし、無線端末2の電源を維持したままソフトウェアを再起動するソフトリセットでもよい。無線端末2が再起動すると、処理は
図7に示すフローチャートの先頭(
図7に丸囲みのAで図示)に戻る。
【0073】
無線端末2が再起動すると、制御部21は記憶部22からAppKeyの読出しを試みる(S700)。そして記憶部22にAppKeyが保持されているかを判定する(S702)。ここでは、記憶部22にAppKey(
図6(D)のβ1)が保持されているので、判定は肯定される(S702:Yes)。
【0074】
S702の判定が肯定されると、制御部21は記憶部22に保持されるAppKey(
図6(D)のβ1)を一時保持部212に保持する(S706)。
【0075】
以降、制御部21、乱数発生部213、暗号鍵生成部214の動作は、上述したS708からS720までにおける動作と同様である。ただし、
図7のフローの2週目において、乱数発生部213が発生する乱数は
図6(D)のDevNoncce:ε2であり、ネットワークサーバ4から受信するJoinAcceptには
図6(E)のNetID:δ1とAppNonce:ζ2が含まれ、暗号鍵生成部214は
図6(F)のAppKey;β1、DevNonce:ε2、NetID:δ1およびAppNonce:ζ2を用いて暗号鍵を生成する。
【0076】
制御部21は暗号鍵が生成されると、記憶部22にAppKeyが保持されているかを再度判定する(S722)。S722の判定は上述したS702の判定と同様である。ここで、記憶部22にAppKey:β1が保持されているので、判定は肯定される(S722:Yes)。
【0077】
S722の判定が肯定されると、制御部21は、S720にて生成された暗号鍵をAppSKey(
図6(F)のγ1)として記憶部22に保持する(S728)。
【0078】
以降、無線端末2は、記憶部22に保持したAppSKey(
図6(F)のγ1)を暗号鍵に用いて、ネットワークサーバ4との通信を行う通用運用へ移行する(S730)。通常運用において、無線端末2からネットワークサーバ4へ送信されるデータは暗号化部25によりAppSKeyを用いて暗号化される。また通常運用において、ネットワークサーバ4から受信されるデータは復号部26によりAppSKeyを用いて復号される。
【0079】
(B−4)ネットワークサーバの動作フロー
図5および
図6を参照して説明した無線端末とネットワークサーバの間の情報授受と暗号鍵生成について、ネットワークサーバ4に着目しその動作の詳細を説明する。
図8はネットワークサーバ4の動作を示すフローチャートである。
【0080】
ネットワークサーバ4は無線端末2からのJoinRequestの受信を待機する(S800)。
【0081】
ネットワークサーバ4の制御部41(
図3)は、無線端末2からJoinRequestを受信すると(S800:Yes)、当該JoinRequestの送信元である無線端末2に対応するAppKeyが記憶部42に保持されているか判定する(S802)。ここで、記憶部42には無線端末2に対応するAppKeyは保持されていないので(
図6(A))、判定は否定される(S802:No)。なお無線端末2の特定はJoinRequestに含まれるDevEUIを用いる。
【0082】
S802の判定が否定されると、制御部41は記憶部42に格納される動作プログラムに定義される仮AppKey(
図6(A)のα1)を動作プログラムから読み出し、一時保持部412に保持する(S804)。この仮AppKeyは、無線端末2と同様に動作プログラムにて定義される。
【0083】
次いで制御部41は、受信したJoinRequestに含まれるDevEUI(図示せず)に基づいて無線端末2を特定し、無線端末2に対応するNetID(
図6(B)のδ1)を記憶部42から読み出し、一時保持部412に保持する(S808)。また制御部41は、乱数発生部413に乱数を発生させこれをAppNonce(
図6(B)のζ1)とし一時保持部212に保持する(S810)。
【0084】
制御部41は接続処理部411に、NetIDおよびAppNonceを含むJoinAcceptコマンドを作成させる(S812)。JoinAcceptコマンドの作成は、例えばLoRaWANにて規定される方式を用いてもよい。接続処理部411によりJoinAcceptコマンドが作成されると、制御部41は送信部43を介してJoinAcceptを無線端末2へ送信する(S814)。なおJoinAcceptを暗号化部45で暗号化してもよい。暗号化部45でJoinAcceptを暗号化する場合は、例えば仮AppKeyを用いて暗号化してもよい。
【0085】
次いで制御部41は、無線端末2から受信したJoinRequestに含まれるDevNonce(
図6(B)のε1)を抽出し、一時期億部412に保持する(S816)。なおS816の処理は、無線端末2からJoinRequestを受信した時点(S800:Yes)から、無線端末2へJoinAcceptを送信する時点(S814)までの任意のタイミングで行われてもよい。
図8においては、説明のため便宜的にS816の処理をS814の処理の後としている。
【0086】
次いで制御部41は、暗号鍵生成部414に、一時保持部412に保持された仮AppKey(
図6(C)のα1)、DevNonce(
図6(C)のε1)、NetID(
図6(C)のδ1)およびAppNonce(
図6(C)のζ1)を用いて暗号鍵を生成させる(S818)。
【0087】
制御部41は暗号鍵が生成されると、記憶部42に当該無線端末2に対応するAppKeyが保持されているかを再度判定する(S820)。S820の判定は上述したS802の判定と同様である。ここで、記憶部42に、当該無線端末2に対応するAppKeyは保持されていなので、判定は否定される(S820:No)。
【0088】
S820の判定が否定されると、制御部41は、S818にて生成された暗号鍵を正式なAppKey(
図6(C)のβ1)として記憶部42に保持する(S822)。
【0089】
次いでネットワークサーバ4の処理は、
図8に示すフローチャートの先頭(
図8に丸囲みのAで図示)に戻り、ネットワークサーバ4は当該無線端末2からのJoinRequestの受信を待機する(S800)。
【0090】
制御部41は、当該無線端末2からJoinRequestを受信すると(S800:Yes)、当該JoinRequestの送信元である無線端末2に対応するAppKeyが記憶部42に保持されているか判定する(S802)。ここで、記憶部42には無線端末2に対応するAppKey:β1が保持されるので(
図6(D))、判定は肯定される(S802:Yes)。なお無線端末2の特定はJoinRequestに含まれるDevEUIを用いる。
【0091】
S802の判定が肯定されると、制御部41は記憶部42に保持されるAppKey(
図6(D)のβ1)を一時保持部412に保持する(S806)。
【0092】
以降、制御部41、乱数発生部413、暗号鍵生成部414の動作は、上述したS808からS818までにおける動作と同様である。ただし、
図8のフローの2週目において、ネットワークサーバ4から無線端末2へ送信されるJoinAcceptには、乱数発生部413が発生する乱数として
図6(E)のAppNoncce:ζ2が含まれ、当該無線端末2に対応するNetID:δ1(
図6(E))が含まれる。また無線端末2から受信するJoinRequestには
図6(E)のDevNonce:ε2が含まれる。そして暗号鍵生成部414は
図6(F)のAppKey;β1、DevNonce:ε2、NetID:δ1およびAppNonce:ζ2を用いて暗号鍵を生成する。
【0093】
制御部41は暗号鍵が生成されると、記憶部42にAppKeyが保持されているかを再度判定する(S820)。S820の判定は上述したS802の判定と同様である。ここで、記憶部42にAppKey:β1が保持されているので、判定は肯定される(S820:Yes)。
【0094】
S820の判定が肯定されると、制御部41は、S818にて生成された暗号鍵をAppSKey(
図6(F)のγ1)として記憶部42に保持する(S824)。
【0095】
以降、ネットワークサーバ4は、記憶部42に保持したAppSKey(
図6(F)のγ1)を暗号鍵に用いて、当該無線端末2との通信を行う通用運用へ移行する(S826)。通常運用において、ネットワークサーバ4から送信されるデータは暗号化部45によりAppSKeyを用いて暗号化される。無線端末2から受信されるデータは復号部46によりAppSKeyを用いて復号される。
【0096】
(C)第1の実施形態における効果
上述した第1の実施形態によれば、無線端末2に予めAppKeyを保持させる必要が無い。従前では作業者が無線端末2の設置時に、無線端末2にAppKeyを保持させる必要があったため、作業者からAppKeyが漏洩するおそれがあった。一方で第1の実施形態では、上述のとおり、無線端末2はAppKeyが設定されていない状態で起動し、無線端末2は自身のプログラムに定義される仮AppKey(
図6のα1)を当該プログラムから読み出して自身に設定する。無線端末2のプログラムは無線端末2を設置する作業者の干渉を受けないものであるから、第1の実施形態において仮AppKeyが作業者を含めた第三者に漏洩する可能性は低く、第1の実施形態は従前に比べてAppKey管理の点でセキュリティが向上している。
【0097】
また第1の実施形態では、無線端末2とネットワークサーバ4の双方は、仮AppKey(
図6のα1)を用いて正式なAppKey(
図6のβ1)を装置内部で生成し、更に正式なAppKey(
図6のβ1)を用いてAppSKey(
図6のγ1)を装置内部で生成し、当該AppSKey(
図6のγ1)を用いて通信の暗号化を行う。上述のとおり仮AppKeyは第三者に漏洩しにくいものであるから、正式なAppKeyおよびAppSKeyは更に漏洩、解析されにくいものであり、第1の実施形態は従前に比べAppSKey管理の点でもセキュリティが向上している。
【0098】
さらに第1の実施形態では、上述のとおりAppKey管理の点および、AppSKey管理の点でセキュリティ向上を実現しているが、無線通信システム1Aで用いられる暗号化方式は共通鍵暗号方式である。第1の実施形態は、無線端末2の消費電力増大、ハードウェア高度化を招く公開鍵暗号方式を用いていない。従って第1の実施形態は、共通鍵暗号方式を用い、LPWAの無線通信システムの利点である無線端末2の低消費電力性、低経済コストを損なわずに、従前に比べセキュリティが向上した無線通信システム1Aを実現している。
【0099】
(2)第2の実施形態
本発明の第2の実施形態を、
図9から
図11を参照して説明する。第1の実施形態ではネットワークサーバ4に1つの無線端末2が接続される場合の構成と動作を説明したが、第2の実施形態ではネットワークサーバ4に複数の無線端末2が接続される場合の構成と動作を説明する。また第2の実施形態でも、
図4に示すLoRaWANに規定されるAppSkey生成の仕組みを利用する。なお以下の説明では、第1の実施形態と同一である構成、動作については
図1から
図8のそれぞれを適宜参照して説明したり、説明の一部を省略したりすることがある。
【0100】
(D)ハードウェア
(D−1)無線通信システムの全体構成
図9は、第2の実施形態における無線通信システム1Bの全体構成を示す構成図である。
図9において、無線通信システム1Bは、複数の無線端末2−1〜2−n(nは2以上の整数)、基地局3、ネットワークサーバ4、上位装置5を含む。
【0101】
各無線端末2−1〜2−n、基地局3、ネットワークサーバ4および上位装置5それぞれの機能、役割は、第1の実施形態にて説明したものと同様である。
図9における接続関係については、無線端末2−1〜2−nのそれぞれが、基地局3とLoRaWANに規定される変調方式にて無線接続される。即ち第2の実施形態では、基地局3と無線端末2−1〜2−nが1対nで接続される。
【0102】
(D−2)無線端末2−1〜2−n、ネットワークサーバ4の構成
(D−2−1)無線端末2−1〜2−n
第2の実施形態における無線端末2−1〜2−nの内部構成は、第1の実施形態における無線端末2の内部構成(
図2)と同様である。
【0103】
(D−2−2)ネットワークサーバ4の構成
【0104】
第2の実施形態におけるネットワークサーバ4の内部構成は、第1の実施形態におけるネットワークサーバ4の内部構成(
図3)と同様である。ただしネットワークサーバ4の記憶部42は、複数の無線端末2−1〜2−nのそれぞれに対して各種情報を記憶可能なように論理構造が設けられている(図示せず)。
【0105】
(E)動作
図10および
図11を参照して、複数の無線端末2−1〜2−nとネットワークサーバ4との間における情報の授受、および暗号鍵生成の流れを説明する。なお第2の実施形態においても、ネットワークサーバ4と1台の無線端末2との間では、
図4を用いて説明したLoRaWANに規定される暗号鍵生成方式を利用する。また以後の説明では、複数の無線端末2−1〜2−nのうち、無線端末2−1と無線端末2−2の2台を代表として説明する。
【0106】
(E−1)複数の無線端末とネットワークサーバ間の情報授受と暗号鍵生成
図10は無線端末2−1 、無線端末2−2およびネットワークサーバ4におけるデータ送受信の流れを示すシーケンス図である。
図11は無線端末2−1、無線端末2−2とネットワークサーバ4における各情報の遷移を示す図である。なお
図10では基地局3を省略している。また
図10中の右側に付したアルファベットA〜Fは、
図11中の(A)〜(F)にそれぞれ対応する。
【0107】
第2の実施形態において、無線端末2−1と無線端末2−2は同期して動作するものではない。従って各無線端末2とネットワークサーバ4との間における通信は適宜のタイミングで行われ、無線端末2−1、無線端末2−2およびネットワークサーバ4の内部における処理も、適宜のタイミングで行われる。
図10にでは説明のため便宜的に、無線端末2−1と無線端末2−2の通信タイミングと処理タイミングに前後関係を設けているが、各処理のタイミングの前後関係は
図10に限定されるものではない。
【0108】
図10において、無線端末2−1、無線端末2−2のそれぞれについての、ネットワークサーバ4との間における情報の授受および暗号鍵生成の流れは、第1の実施形態にて
図5、
図6を用いて説明したものと同じである。但し、ネットワークサーバ4では、無線端末2−1と無線端末2−2のそれぞれに対してAppKey、AppSKey、NetID、DevNonce、AppNonceの生成と管理を行う。
【0109】
無線端末2−1および無線端末2−2は、無線通信システム1Bを運用する作業者により予めAppKeyが設定されていない。無線端末2−1および無線端末2−2は予めAppKeyが設定されていない状態で起動する(S100、S102)。この時、無線端末2−1および無線端末2−2は自身のプログラムに定義される仮AppKeyを当該プログラムから読み出して自身に設定する。なお無線端末2−1および無線端末2−2に搭載されるプログラムには、同一の仮AppKeyを定義する。無線端末2の数が2以上のn台であっても同様に、無線端末2−1〜2−nのプログラムに同一の仮AppKeyを定義する。一方でネットワークサーバ4では、無線通信システム1Bに参加登録していない無線端末2−1と無線端末2−2のそれぞれに対し一律に、同一の仮AppKeyを記憶している。
【0110】
次いで無線端末2−1および無線端末2−2はそれぞれ、乱数を発生させてDevNonceとし、DevNonceEUIを含むJoinRequestをネットワークサーバ4へ送信する(S104、S106)。
図10のS106までの状態を
図11(A)に示す。
図11(A)では、無線端末2−1とネットワークサーバ4の双方に仮AppKey:α1が保持されており、無線端末2−2とネットワークサーバ4の双方に仮AppKey:α1が保持されている。また無線端末2−1にDevNonce:ε1が保持されており、無線端末2−2にDevNonce:ε2が保持されている。DevNonceは乱数であるから、ε1とε2は関連の無い異なった値である。
【0111】
ネットワークサーバ4は無線端末2−1からJoinRequestを受信すると、JoinRequestに含まれるDveEUIとDevNonceを抽出する。ネットワークサーバ4はDevEUIに基づき無線端末2−1に対応するNetIDを特定し、乱数を発生させてAppNonceとする。ネットワークサーバ4はNetIDとAppNonceを含むJoinAcceptを無線端末2−1へ送信する(S108)。またネットワークサーバ4は無線端末2−2に対しても同様に、DevEUIに基づき無線端末2−2に対応するNetIDを特定し、乱数を発生させてAppNonceとし、NetIDとAppNonceを含むJoinAcceptを無線端末2−2へ送信する(S1010)。
図10のS1010までの状態を
図11(B)に示す。
図11(B)では、ネットワークサーバ4に無線端末2−1に対応付けてDevNonce:ε1が保持されており、さらにDevEUIから特定したNetID:σ1と、AppNonce:ζ1が保持されている。またネットワークサーバ4に無線端末2−2に対応付けてDevNonce:ε2が保持されており、さらにDevEUIから特定したNetID:σ2と、AppNonce:ζ2が保持されている。ここでAppNonceは乱数であるから、ζ1とζ2は関連の無い異なった値である。
【0112】
無線端末2−1はネットワークサーバ4からJoinAcceptを受信すると、JoinAcceptに含まれるNetIDとAppNonceを抽出する。無線端末2−1は仮AppKey、ネットワークサーバ4へ送信したDveNonce、ネットワークサーバ4から受信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これを正式AppKeyとする(S1014)。一方でネットワークサーバ4は、仮AppKey、無線端末2−1から受信したDveNonce、無線端末2−1へ送信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これを正式AppKeyとする(S1012)。
【0113】
無線端末2−2はネットワークサーバ4からJoinAcceptを受信すると、JoinAcceptに含まれるNetIDとAppNonceを抽出する。無線端末2−2は仮AppKey、ネットワークサーバ4へ送信したDveNonce、ネットワークサーバ4から受信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これを正式AppKeyとする(S1018)。一方でネットワークサーバ4は、仮AppKey、無線端末2−2から受信したDveNonce、無線端末2−2へ送信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これを正式AppKeyとする(S1016)。
【0114】
図10のS1012からS1018までの状態を
図11(C)に示す。
図11(C)では、無線端末2−1にJoinAcceptに含まれるNetID:σ1とAppNonce:ζ1が保持されており、無線端末2−1とネットワークサーバ4の双方に、仮AppKey:α1、NetID:σ1、DevNonce:ε1およびAppNonce:ζ1を用いて生成されたAppKey:β1が保持されている。また
図11(C)では、無線端末2−2にJoinAcceptに含まれるNetID:σ2とAppNonce:ζ2が保持されており、無線端末2−2とネットワークサーバ4の双方に、仮AppKey:α1、NetID:σ2、DevNonce:ε2およびAppNonce:ζ2を用いて生成されたAppKey:β2が保持されている。ここで、無線端末2−1に対するAppKey:β1と無線端末2−2に対するAppKey:β2は、それぞれ異なるNetIDおよび乱数値(DevNonce、AppNonce)に基づき生成されるので、β1とβ2は関連の無い異なる値である。
【0115】
次いで無線端末2−1は、S1014で生成した正式AppKey(
図11(C)のβ1)を保持した状態で再起動する(S1020)。無線端末2はこの再起動において、上述したS100の起動時とは異なり、自身のプログラムから仮AppKeyを読み出さず、正式AppKeyを保持して起動する。無線端末2−1の再起動により、無線端末2−1とネットワークサーバ4の接続は解消される。この時、ネットワークサーバ4では、無線端末2−1に対応してS1012で生成した正式AppKey(
図11(C)のβ1)を保持し、その他情報は接続の解消に伴い消去する。
【0116】
無線端末2−2も同様に、S1018で生成した正式AppKey(
図11(C)のβ2)を保持した状態で再起動する(S1022)。無線端末2−2はこの再起動において、上述したS102の起動時とは異なり、自身のプログラムから仮AppKeyを読み出さず、正式AppKeyを保持して起動する。無線端末2−2の再起動により、無線端末2−2とネットワークサーバ4の接続は解消される。この時、ネットワークサーバ4では、無線端末2−2に対応してS1016で生成した正式AppKey(
図11(C)のβ2)を保持し、その他情報は接続の解消に伴い消去する。
【0117】
次いで無線端末2−1および無線端末2−2はそれぞれ、乱数を発生させてDevNonceとし、DevNonceEUIを含むJoinRequestをネットワークサーバ4へ送信する(S1024、S1026)。
図10のS1026までの状態を
図11(D)に示す。
図11(D)では、無線端末2−1とネットワークサーバ4の双方にAppKey:β1が保持されており、無線端末2−1にDevNonce:ε3が保持されている。なお
図11(A)で保持されていた仮AppKey:α1は無線端末2−1の再起動および接続の解消により、
図11(D)では消去されている。また
図11(D)では、無線端末2−2とネットワークサーバ4の双方にAppKey:β2が保持されており、無線端末2−2にDevNonce:ε4が保持されている。なお
図11(A)で保持されていた仮AppKey:α1は無線端末2−2の再起動および接続の解消により、
図11(D)では消去されている。DevNonceは乱数であるから、ε3とε4は関連の無い異なった値である。
【0118】
ネットワークサーバ4は無線端末2−1からJoinRequestを受信すると、JoinRequestに含まれるDveEUIとDevNonceを抽出する。ネットワークサーバ4はDevEUIに基づき無線端末2−1に対応するNetIDを特定し、乱数を発生させてAppNonceとする。ネットワークサーバ4はNetIDとAppNonceを含むJoinAcceptを無線端末2−1へ送信する(S1028)。またネットワークサーバ4は無線端末2−2に対しても同様に、DevEUIに基づき無線端末2−2に対応するNetIDを特定し、乱数を発生させてAppNonceとし、NetIDとAppNonceを含むJoinAcceptを無線端末2−2へ送信する(S1030)。
図10のS1030までの状態を
図11(E)に示す。
図11(E)では、ネットワークサーバ4に無線端末2−1に対応付けてDevNonce:ε3が保持されており、さらにDevEUIから特定したNetID:σ1と、AppNonce:ζ3が保持されている。なおNetIDは無線端末2−1に固有の識別子であるから、
図11(B)と同じくNetID:σ1である。またネットワークサーバ4に無線端末2−2に対応付けてDevNonce:ε4が保持されており、さらにDevEUIから特定したNetID:σ2と、AppNonce:ζ4が保持されている。なおNetIDは無線端末2−2に固有の識別子であるから、
図11(B)と同じくNetID:σ2である。ここでAppNonceは乱数であるから、ζ3とζ4は関連の無い異なった値である。
【0119】
無線端末2−1はネットワークサーバ4からJoinAcceptを受信すると、JoinAcceptに含まれるNetIDとAppNonceを抽出する。無線端末2−1はAppKey、ネットワークサーバ4へ送信したDveNonce、ネットワークサーバ4から受信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これをAppSKeyとする(S1034)。一方でネットワークサーバ4は、AppKey、無線端末2−1から受信したDveNonce、無線端末2−1へ送信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これをAppSKeyとする(S1032)。
【0120】
無線端末2−2はネットワークサーバ4からJoinAcceptを受信すると、JoinAcceptに含まれるNetIDとAppNonceを抽出する。無線端末2−2はAppKey、ネットワークサーバ4へ送信したDveNonce、ネットワークサーバ4から受信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これをAppSKeyとする(S1038)。一方でネットワークサーバ4は、AppKey、無線端末2−2から受信したDveNonce、無線端末2−2へ送信したNetIDおよびAppNonceを用いて暗号鍵を生成し、これをAppSKeyとする(S1036)。
【0121】
図10のS1032からS1038までの状態を
図11(F)に示す。
図11(F)では、無線端末2−1にJoinAcceptに含まれるNetID:σ1とAppNonce:ζ3が保持されており、無線端末2−1とネットワークサーバ4の双方に、AppKey:β1、NetID:σ1、DevNonce:ε3およびAppNonce:ζ3を用いて生成されたAppSKey:γ1が保持されている。また
図11(C)では、無線端末2−2にJoinAcceptに含まれるNetID:σ2とAppNonce:ζ4が保持されており、無線端末2−2とネットワークサーバ4の双方に、AppKey:β2、NetID:σ2、DevNonce:ε4およびAppNonce:ζ4を用いて生成されたAppSKey:γ2が保持されている。ここで、無線端末2−1に対するAppSKey:γ1と無線端末2−2に対するAppSKey:γ2は、それぞれ異なるAppKey、NetIDおよび乱数値(DevNonce、AppNonce)に基づき生成されるので、γ1とγ2は関連の無い異なる値である。
【0122】
無線端末2−1とネットワークサーバ4は、各々でAppSKey(
図11(F)のγ1)が生成されると、当該AppSKeyを用いてユーザデータを暗号化、復号する通常運用へ移行する(S1040)。また無線端末2−2とネットワークサーバ4は、各々でAppSKey(
図11(F)のγ2)が生成されると、当該AppSKeyを用いてユーザデータを暗号化、復号する通常運用へ移行する(S1042)。ここで、AppSKey:γ1およびγ2は、無線端末2−1と無線端末2−2のそれぞれとネットワークサーバ4との接続が解消されるまで有効であるから、無線端末2−1あるいは無線端末2−2とネットワークサーバ4との接続が解消された場合は、接続が解消された無線端末2とネットワークサーバ4との接続動作が実行され、
図6(A)〜(C)のフェーズ1で新たなAppKeyが生成され、
図6(D)〜(F)のフェーズ2で新たなAppSkeyが生成される。
【0123】
(E−2)無線端末の動作フロー
第2の実施形態における無線端末2−1および無線端末2−2それぞれの動作は、第1の実施形態にて説明した無線端末2の動作と同一である。即ち、第2の実施形態における無線端末2−1および無線端末2−2それぞれの動作は
図7のフローチャートにて説明される。
【0124】
(E−3)ネットワークサーバの動作フロー
第2の実施形態におけるネットワークサーバ4の、無線端末2−1および無線端末2−2のそれぞれに対する動作は、第1の実施形態にて説明したネットワークサーバ4の動作と同一である。即ち、第2の実施形態におけるネットワークサーバ4の動作は
図8のフローチャートにて説明される。上述のとおり、無線端末2−1と無線端末2−2は同期して動作するものではないので、ネットワークサーバ4は無線端末2−1に対して適宜に
図8のフローチャートに示される動作を行い、無線端末2−2に対しても適宜に
図8のフローチャートに示される動作を行う。
【0125】
(F)第2の実施形態における効果
上述した第2の実施形態によれば、第1の実施形態と同様の効果を得ることができる。即ち、無線端末2−1および無線端末2−2のそれぞれに予めAppKeyを保持させる必要が無く、無線端末2−1および無線端末2−2のそれぞれは自身のプログラムに定義される仮AppKeyを当該プログラムから読み出して自身に設定するので、第1の実施形態と同様に、第2の実施形態は従前に比べてAppKey管理の点でセキュリティが向上している。また第2の実施形態は、第1の実施形態と同様に、従前に比べAppSKey管理の点でもセキュリティが向上している。また第2の実施形態は、共通鍵暗号方式を用い、LPWAの無線通信システムの利点である無線端末2の低消費電力性、低経済コストを損なわずに、従前に比べセキュリティが向上した無線通信システム1Bを実現している。
【0126】
第2の実施形態に特有な点は、無線端末2−1および無線端末2−2のそれぞれに予めAppKeyを保持させずとも、無線端末2−1および無線端末2−2のそれぞれがネットワークサーバ4に接続し、人手に依らずAppKeyが生成される点である。上述のように、無線通信システムに共通鍵暗号方式を採用する場合、暗号鍵(AppKey)を、無線端末2の設置時に、無線端末2に保持させる必要がある。つまり従前では、無線通信システムを構築する者は、多数の無線端末2のそれぞれに異なる暗号鍵(AppKey)を保持させ、かつネットワークサーバ4にも無線端末2に対応したそれぞれ異なる暗号鍵(AppKey)を登録する必要があり、多大な手間を要するものであった。
【0127】
対して第2の実施形態では、無線端末2−1および無線端末2−2のそれぞれに予めAppKeyを保持させる必要がなく、また無線端末2−1および無線端末2−2のそれぞれのプログラムに定義する仮AppKeyは、無線端末2の数に依らず同一の値でよい(
図11のα1)。そして第2の実施形態では、無線端末2−1および無線端末2−2がネットワークサーバ4と通信を行う過程で、無線端末2ごとに異なる正式AppKeyが無線端末2とネットワークサーバ4にて生成される(
図11のβ1およびβ2)。つまり第2の実施形態は、従前に比べ、複数の無線端末2のそれぞれへ異なるAppKeyを保持させ、かつネットワークサーバ4にもAppKeyを保持させる手間を削減することができる。この効果は、無線通信システム1Bに参加する無線端末2の数が増大するほど顕著である。
【0128】
(3)他の変形例
第1の実施形態および第2の実施形態について、次の変形例を適用してもよい。
【0129】
(G−1)上述のとおり、無線端末2およびネットワークサーバ4のそれぞれでAppSKeyが生成された後に、無線端末2とネットワークサーバ4との接続が解消されると、無線端末2およびネットワークサーバ4のそれぞれで、仮AppKeyを基にした正式AppKeyの生成、および正式AppKeyを基にしたAppSkeyの生成が再度行われる。ここで、無線端末2とネットワークサーバ4のそれぞれは、接続が解消される直前までに用いていたAppSKeyの値(旧AppSkey値と呼称する)を保持するようにし、接続解消後の再接続において、旧AppSkey値を基にしてAppKeyを生成し、当該AppKeyを基にして新たなAppSkeyを生成するようにしてもよい。
【0130】
第1の実施形態および第2の実施形態で説明したように、接続が解消される直前までに用いていた旧AppSKey値は、無線端末2またはネットワークサーバ4のプログラムに定義される仮AppKeyおよび乱数値を用いて、無線端末2およびネットワークサーバ4の内部にて生成される。従って第三者に旧AppSKey値を把握される、または第三者に旧AppSKey値を演算で導出される可能性は低い。そのため、無線端末2とネットワークサーバ4の再接続において旧AppSKey値を利用すれば、これに基づいて生成されるAppKeyおよびAppSkeyは、第三者に対して更に秘匿性の高いものとなる。
【0131】
(G−2)第1の実施形態および第2の実施形態では、
図4において二点鎖線で囲んだNwkSKeyは関与しなかった。ここで、NwkSKeyとは、
図4においてエンドデバイスとネットワークサーバとの間で通信する定型のコマンドデータの暗号化および復号に用いられるものであり、NwkSKeyはAppSkeyと同様にAppKeyを基に生成される。変形例として、上述した手順によってAppSKeyを生成するとともに、同様の手順によってNwkSKeyを生成してもよい。この場合、AppSKeyの生成においては、上述の正式AppKey、NetID、DevNonceおよびAppNonceの4つに、さらに第1の固定値X1を加えた5つの値に基づいてAppSKeyを生成する。またNwkSKeyの生成においては、上述の正式AppKey、NetID、DevNonceおよびAppNonceの4つに、さらに第2の固定値X2を加えた5つの値に基づいてNwkSKeyを生成する。本変形例によれば、第1の実施形態および第2の実施形態に加え、NwkSKey管理の点でもセキュリティを向上することができる。
【0132】
(G−3)第1の実施形態および第2の実施形態では、LoRaWANにて規定される暗号鍵生成の仕組みを利用する形態を説明した。しかしながら本発明はLoRaWANプロトコル以外の他の無線プロトコルでも適用可能である。即ち、通信システムの上流側サーバと下流側端末との通信において共通鍵暗号方式が採用されており、上流側サーバと下流側端末との通信によって下流側端末が上流側サーバに登録され、通信に用いられる暗号鍵が生成される通信システムであれば、本発明の構成、動作を適用することができる。