(57)【要約】【課題】ＩｏＴシステムに含まれるＩｏＴデバイスのセキュリティを向上させること。【解決手段】通信装置は、共通鍵が設定された装置から、装置の識別情報と、サーバの所在を特定する情報とを取得する取得部と、サーバの所在を特定する情報を使用して、サーバへ装置の識別情報を送信する送信部とを備え、サーバは、通信装置から装置の識別情報を受信する受信部と、マスター鍵と、装置の識別情報に基づいて、共通鍵を生成する鍵生成部と、鍵生成部が生成した共通鍵を使用して、装置との間で相互認証を行う認証部とを備える。【選択図】図４
2018082353.tif 000002
【特許請求の範囲】
【請求項１】
サーバと該サーバと通信を行う第１の通信装置を備える通信システムであって、
サーバは、
マスター鍵を記憶する第１の記憶部と、
前記第１の通信装置が送信した該第１の通信装置の識別情報を受信する受信部と、
前記第１の通信装置の識別情報と前記第１の記憶部に記憶されているマスター鍵とに基づいて、第１の共通鍵を生成する第１の鍵生成部と、
前記第１の鍵生成部が生成した第１の共通鍵を使用して、前記第１の通信装置との間で相互認証を行う第１の認証部と
を備え、
前記第１の通信装置は、
マスター鍵を記憶する第２の記憶部と、
前記第１の通信装置の識別情報と前記第２の記憶部に記憶されている前記マスター鍵とに基づいて、第１の共通鍵を生成する第２の鍵生成部と、
前記サーバへ前記第１の通信装置の識別情報を送信する送信部と、
前記第２の鍵生成部が生成した第１の共通鍵を使用して、前記サーバとの間で相互認証を行う第２の認証部と
を備える、通信システム。
【請求項２】
前記第１の鍵生成部は、生成する鍵を識別する情報に基づいて、第１の共通鍵を生成する、請求項１に記載の通信システム。
【請求項３】
前記サーバ及び前記第１の通信装置と通信を行う第２の通信装置
を備え、
前記第２の通信装置は、
第２の共通鍵を記憶する第３の記憶部と、
前記第３の記憶部に記憶されている前記第２の共通鍵を使用して、前記サーバ、及び前記第１の通信装置との間で相互認証を行う第３の認証部と
を備え、
前記第２の記憶部は、第２の共通鍵を記憶し、
前記第２の認証部は、前記第２の記憶部に記憶されている第２の共通鍵を使用して、前記第２の通信装置との間で相互認証を行う、請求項１又は請求項２に記載の通信システム。
【請求項４】
前記第２の鍵生成部は、前記第２の通信装置の識別情報に基づいて第３の共通鍵を生成し、
前記第２の認証部は、前記第２の記憶部に記憶されている前記第２の共通鍵で前記第３の共通鍵を暗号化し、
前記送信部は、前記第２の共通鍵で前記第３の共通鍵を暗号化した結果を送信する、請求項３に記載の通信システム。
【請求項５】
前記第２の認証部は、前記第２の記憶部に記憶されている前記第２の共通鍵で前記第２の鍵生成部が生成した前記第１の共通鍵を暗号化し、
前記送信部は、前記第２の共通鍵で該第１の共通鍵を暗号化した結果を送信する、請求項３に記載の通信システム。
【請求項６】
通信装置と通信を行うサーバであって、
マスター鍵を記憶する記憶部と、
前記通信装置が送信した該通信装置の識別情報を受信する受信部と、
前記通信装置の識別情報と前記記憶部に記憶されているマスター鍵とに基づいて、共通鍵を生成する鍵生成部と、
前記鍵生成部が生成した共通鍵を使用して、前記通信装置との間で相互認証を行う認証部と
を備えるサーバ。
【請求項７】
サーバと通信を行う通信装置であって、
マスター鍵を記憶する記憶部と、
通信装置の識別情報と前記記憶部に記憶されている前記マスター鍵とに基づいて、共通鍵を生成する鍵生成部と、
サーバへ前記通信装置の識別情報を送信する送信部と、
前記鍵生成部が生成した共通鍵を使用して、前記サーバとの間で相互認証を行う認証部と
を備える、通信装置。
【請求項８】
サーバと該サーバと通信を行う通信装置とが実行する通信方法であって、
サーバが、マスター鍵を記憶するステップと、
通信装置が、マスター鍵を記憶するステップと、
前記通信装置が、前記通信装置の識別情報と前記マスター鍵とに基づいて、共通鍵を生成するステップと、
前記通信装置が、サーバへ前記通信装置の識別情報を送信するステップと、
前記サーバが、前記通信装置が送信した該通信装置の識別情報を受信するステップと、
前記サーバが、記通信装置の識別情報と前記マスター鍵とに基づいて、共通鍵を生成するステップと、
前記サーバが、前記共通鍵を生成するステップで生成した共通鍵を使用して、前記通信装置との間で相互認証を行うステップと、
前記通信装置が、前記共通鍵を使用して、前記サーバとの間で相互認証を行うステップと
を有する、通信方法。
【請求項９】
通信装置と通信を行うサーバのコンピュータに、
マスター鍵を記憶するステップと、
前記通信装置が送信した該通信装置の識別情報を受信するステップと、
前記通信装置の識別情報と前記マスター鍵とに基づいて、共通鍵を生成するステップと、
前記共通鍵を生成するステップで生成した共通鍵を使用して、前記通信装置との間で相互認証を行うステップと
を実行させる、プログラム。
【請求項１０】
サーバと通信を行う通信装置のコンピュータに、
マスター鍵を記憶するステップと、
前記通信装置の識別情報と前記マスター鍵とに基づいて、共通鍵を生成するステップと、
サーバへ前記通信装置の識別情報を送信するステップと、
前記共通鍵を使用して、前記サーバとの間で相互認証を行うステップと
を実行させる、プログラム。
【請求項１１】
サーバと該サーバと通信を行う第１の通信装置とを備える通信システムであって、
サーバは、
ルート公開鍵証明書と、サーバ公開鍵と、該サーバ公開鍵とペアをなすサーバ秘密鍵と、サーバ公開鍵証明書とを記憶する第１の記憶部と、
前記第１の記憶部に記憶されている前記サーバ秘密鍵と前記サーバ公開鍵証明書とを使用して、前記第１の通信装置との間で相互認証を行う第１の認証部と
を備え、
前記第１の通信装置は、
ルート公開鍵証明書と、認証局アプリとを記憶する第２の記憶部と、
第１の通信装置公開鍵と、該第１の通信装置公開鍵とペアをなす第１の通信装置秘密鍵とを生成する第２の鍵生成部と、
前記サーバとの間で相互認証を行う第２の認証部と
を備え、
前記認証局アプリは、第１の通信装置公開鍵証明書を発行し、
前記第２の認証部は、前記第１の通信装置公開鍵証明書と前記第１の通信装置秘密鍵とを使用して、前記サーバとの間で相互認証を行う、通信システム。
【請求項１２】
前記サーバ及び前記第１の通信装置と通信を行う第２の通信装置
を備え、
前記第２の通信装置は、
第２の共通鍵を記憶する第３の記憶部と、
第２の通信装置公開鍵と、該第２の通信装置公開鍵とペアをなす第２の通信装置秘密鍵とを生成する第３の鍵生成部と、
前記第３の記憶部に記憶されている前記第２の共通鍵と前記第２の通信装置公開鍵とを使用して、前記サーバ、及び前記第１の通信装置との間で相互認証を行う第３の認証部と
を備え、
前記第２の記憶部は、第２の共通鍵を記憶し、
前記第２の認証部は、前記第２の記憶部に記憶されている第２の共通鍵を使用して、前記第２の通信装置との間で相互認証を行う、請求項１１に記載の通信システム。
【請求項１３】
前記認証局アプリは、第２の通信装置公開鍵証明書を発行し、
前記第２の認証部は、前記第２の共通鍵で、前記第２の通信装置公開鍵証明書を暗号化する、請求項１２に記載の通信システム。
【請求項１４】
前記第２の鍵生成部は、前記第２の共通鍵と前記第２の通信装置の識別情報とに基づいて、第３の共通鍵を生成し、
前記第２の認証部は、前記第２の記憶部に記憶されている前記第２の共通鍵で前記第２の鍵生成部が生成した前記第３の共通鍵を暗号化する、請求項１２に記載の通信システム。
【請求項１５】
通信装置と通信を行うサーバであって、
ルート公開鍵証明書と、サーバ公開鍵と、該サーバ公開鍵とペアをなすサーバ秘密鍵と、サーバ公開鍵証明書とを記憶する記憶部と、
前記記憶部に記憶されている前記サーバ秘密鍵と前記サーバ公開鍵証明書とを使用して、前記通信装置との間で相互認証を行う認証部と
を備える、サーバ。
【請求項１６】
サーバと通信を行う通信装置であって、
ルート公開鍵証明書と、認証局アプリとを記憶する記憶部と、
通信装置公開鍵と、該通信装置公開鍵とペアをなす通信装置秘密鍵とを生成する鍵生成部と、
前記サーバとの間で相互認証を行う認証部と
を備え、
前記認証局アプリは、通信装置公開鍵証明書を発行し、
前記認証部は、前記通信装置公開鍵証明書と前記通信装置秘密鍵とを使用して、前記サーバとの間で相互認証を行う、通信装置。
【請求項１７】
サーバと該サーバと通信を行う通信装置とが実行する通信方法であって、
サーバが、ルート公開鍵証明書と、サーバ公開鍵と、該サーバ公開鍵とペアをなすサーバ秘密鍵と、サーバ公開鍵証明書とを記憶するステップと、
前記通信装置が、ルート公開鍵証明書と、認証局アプリとを記憶するステップと、
前記通信装置が、通信装置公開鍵と、該通信装置公開鍵とペアをなす通信装置秘密鍵とを生成するステップと、
前記通信装置の認証局アプリが、通信装置公開鍵証明書を発行するステップと、
前記サーバが、前記サーバ秘密鍵と前記サーバ公開鍵証明書とを使用して、前記通信装置との間で相互認証を行うステップと、
前記通信装置が、前記通信装置公開鍵証明書と前記通信装置秘密鍵とを使用して、前記サーバとの間で相互認証を行うステップと
を有する通信方法。
【請求項１８】
通信装置と通信を行うサーバのコンピュータに、
ルート公開鍵証明書と、サーバ公開鍵と、該サーバ公開鍵とペアをなすサーバ秘密鍵と、サーバ公開鍵証明書とを記憶するステップと、
前記サーバ秘密鍵と前記サーバ公開鍵証明書とを使用して、前記通信装置との間で相互認証を行うステップと
を実行させる、プログラム。
【請求項１９】
サーバと通信を行う通信装置のコンピュータに、
ルート公開鍵証明書と、認証局アプリとを記憶するステップと、
通信装置公開鍵と、該通信装置公開鍵とペアをなす通信装置秘密鍵とを生成するステップと、
通信装置公開鍵証明書を発行するステップと、
前記通信装置公開鍵証明書と前記通信装置秘密鍵とを使用して、前記サーバとの間で相互認証を行うステップと
を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信システム、通信装置、通信方法、及びプログラムに関する。
【背景技術】
【０００２】
信号機、気象観測センサー等の特定用途の組込み機器が、社会の至る所に設置されている。これらの組込み機器に搭載されているＩｏＴデバイスは、インターネットに接続され、情報を送受信することができる。こうしたモノのインターネット（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ：ＩｏＴ）の世界では、ＩｏＴシステムは、多種多様で膨大な数の非力なＩｏＴデバイスを含む。ＩｏＴシステムに含まれるサーバは、ＩｏＴデバイスが送信した情報を取得すると、該情報を処理する。
通信データの秘匿を図る技術の一つとして公開鍵暗号方式が知られている。公開鍵暗号方式では、一般に、ＰＫＩ（Ｐｕｂｌｉｃ  Ｋｅｙ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ、公開鍵基盤）を利用して公開鍵（公開鍵証明書）がやり取りされる（例えば、非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】ＩＴｐｒｏ、“情報セキュリティ入門  −  ＰＫＩ（後編）−−−Ｘ．５０９証明書とＰＫＩの仕組み”、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｉｔｐｒｏ．ｎｉｋｋｅｉｂｐ．ｃｏ．ｊｐ／ａｒｔｉｃｌｅ／ＣＯＬＵＭＮ／２００６０７２５／２４４２３３／＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
インターネットに偽のＩｏＴデバイスが接続され、該偽のＩｏＴデバイスから誤った情報がサーバへ送信されることが想定される。この場合、サーバが処理した結果は誤ったものになってしまう。しかしながら、インターネットに接続されるＩｏＴデバイスが真のＩｏＴデバイスであるか偽のＩｏＴデバイスであるかの真贋を判定することは難しい。
また、ＩｏＴデバイスのセキュリティが侵害されるおそれがある。しかしながら、非力なＩｏＴデバイスに高度なセキュリティ対策機能を追加することは難しい。
本発明は、上記問題を解決すべくなされたもので、ＩｏＴシステムに含まれるＩｏＴデバイスのセキュリティを向上させることを目的とする。
【課題を解決するための手段】
【０００５】
（１）本発明の一態様は、サーバと該サーバと通信を行う第１の通信装置を備える通信システムであって、サーバは、マスター鍵を記憶する第１の記憶部と、前記第１の通信装置が送信した該第１の通信装置の識別情報を受信する受信部と、前記第１の通信装置の識別情報と前記第１の記憶部に記憶されているマスター鍵とに基づいて、第１の共通鍵を生成する第１の鍵生成部と、前記第１の鍵生成部が生成した第１の共通鍵を使用して、前記第１の通信装置との間で相互認証を行う第１の認証部とを備え、前記第１の通信装置は、マスター鍵を記憶する第２の記憶部と、前記第１の通信装置の識別情報と前記第２の記憶部に記憶されている前記マスター鍵とに基づいて、第１の共通鍵を生成する第２の鍵生成部と、前記サーバへ前記第１の通信装置の識別情報を送信する送信部と、前記第２の鍵生成部が生成した第１の共通鍵を使用して、前記サーバとの間で相互認証を行う第２の認証部とを備える、通信システムである。
【０００６】
（２）本発明の一態様は、上記（１）に記載の通信システムにおいて、前記第１の鍵生成部は、生成する鍵を識別する情報に基づいて、第１の共通鍵を生成する、通信システムである。
（３）本発明の一態様は、上記（１）又は上記（２）に記載の通信システムにおいて、前記サーバ及び前記第１の通信装置と通信を行う第２の通信装置を備え、前記第２の通信装置は、第２の共通鍵を記憶する第３の記憶部と、前記第３の記憶部に記憶されている前記第２の共通鍵を使用して、前記サーバ、及び前記第１の通信装置との間で相互認証を行う第３の認証部とを備え、前記第２の記憶部は、第２の共通鍵を記憶し、前記第２の認証部は、前記第２の記憶部に記憶されている第２の共通鍵を使用して、前記第２の通信装置との間で相互認証を行う、通信システムである。
（４）本発明の一態様は、上記（３）に記載の通信システムにおいて、前記第２の鍵生成部は、前記第２の通信装置の識別情報に基づいて第３の共通鍵を生成し、前記第２の認証部は、前記第２の記憶部に記憶されている前記第２の共通鍵で前記第３の共通鍵を暗号化し、前記送信部は、前記第２の共通鍵で前記第３の共通鍵を暗号化した結果を送信する、通信システムである。
（５）本発明の一態様は、上記（３）に記載の通信システムにおいて、前記第２の認証部は、前記第２の記憶部に記憶されている前記第２の共通鍵で前記第２の鍵生成部が生成した前記第１の共通鍵を暗号化し、前記送信部は、前記第２の共通鍵で該第１の共通鍵を暗号化した結果を送信する、通信システムである。
【０００７】
（６）本発明の一態様は、通信装置と通信を行うサーバであって、マスター鍵を記憶する記憶部と、前記通信装置が送信した該通信装置の識別情報を受信する受信部と、前記通信装置の識別情報と前記記憶部に記憶されているマスター鍵とに基づいて、共通鍵を生成する鍵生成部と、前記鍵生成部が生成した共通鍵を使用して、前記通信装置との間で相互認証を行う認証部とを備えるサーバである。
【０００８】
（７）本発明の一態様は、サーバと通信を行う通信装置であって、マスター鍵を記憶する記憶部と、通信装置の識別情報と前記記憶部に記憶されている前記マスター鍵とに基づいて、共通鍵を生成する鍵生成部と、サーバへ前記通信装置の識別情報を送信する送信部と、前記鍵生成部が生成した共通鍵を使用して、前記サーバとの間で相互認証を行う認証部とを備える、通信装置である。
【０００９】
（８）本発明の一態様は、サーバと該サーバと通信を行う通信装置とが実行する通信方法であって、サーバが、マスター鍵を記憶するステップと、通信装置が、マスター鍵を記憶するステップと、前記通信装置が、前記通信装置の識別情報と前記マスター鍵とに基づいて、共通鍵を生成するステップと、前記通信装置が、サーバへ前記通信装置の識別情報を送信するステップと、前記サーバが、前記通信装置が送信した該通信装置の識別情報を受信するステップと、前記サーバが、記通信装置の識別情報と前記マスター鍵とに基づいて、共通鍵を生成するステップと、前記サーバが、前記共通鍵を生成するステップで生成した共通鍵を使用して、前記通信装置との間で相互認証を行うステップと、前記通信装置が、前記共通鍵を使用して、前記サーバとの間で相互認証を行うステップとを有する、通信方法である。
【００１０】
（９）本発明の一態様は、通信装置と通信を行うサーバのコンピュータに、マスター鍵を記憶するステップと、前記通信装置が送信した該通信装置の識別情報を受信するステップと、前記通信装置の識別情報と前記マスター鍵とに基づいて、共通鍵を生成するステップと、前記共通鍵を生成するステップで生成した共通鍵を使用して、前記通信装置との間で相互認証を行うステップとを実行させる、プログラムである。
【００１１】
（１０）本発明の一態様は、サーバと通信を行う通信装置のコンピュータに、マスター鍵を記憶するステップと、前記通信装置の識別情報と前記マスター鍵とに基づいて、共通鍵を生成するステップと、サーバへ前記通信装置の識別情報を送信するステップと、前記共通鍵を使用して、前記サーバとの間で相互認証を行うステップとを実行させる、プログラムである。
【００１２】
（１１）本発明の一態様は、サーバと該サーバと通信を行う第１の通信装置とを備える通信システムであって、サーバは、ルート公開鍵証明書と、サーバ公開鍵と、該サーバ公開鍵とペアをなすサーバ秘密鍵と、サーバ公開鍵証明書とを記憶する第１の記憶部と、前記第１の記憶部に記憶されている前記サーバ秘密鍵と前記サーバ公開鍵証明書とを使用して、前記第１の通信装置との間で相互認証を行う第１の認証部とを備え、前記第１の通信装置は、ルート公開鍵証明書と、認証局アプリとを記憶する第２の記憶部と、第１の通信装置公開鍵と、該第１の通信装置公開鍵とペアをなす第１の通信装置秘密鍵とを生成する第２の鍵生成部と、前記サーバとの間で相互認証を行う第２の認証部とを備え、前記認証局アプリは、第１の通信装置公開鍵証明書を発行し、前記第２の認証部は、前記第１の通信装置公開鍵証明書と前記第１の通信装置秘密鍵とを使用して、前記サーバとの間で相互認証を行う、通信システムである。
【００１３】
（１２）本発明の一態様は、上記（１１）に記載の通信システムにおいて、前記サーバ及び前記第１の通信装置と通信を行う第２の通信装置を備え、前記第２の通信装置は、第２の共通鍵を記憶する第３の記憶部と、第２の通信装置公開鍵と、該第２の通信装置公開鍵とペアをなす第２の通信装置秘密鍵とを生成する第３の鍵生成部と、前記第３の記憶部に記憶されている前記第２の共通鍵と前記第２の通信装置公開鍵とを使用して、前記サーバ、及び前記第１の通信装置との間で相互認証を行う第３の認証部とを備え、前記第２の記憶部は、第２の共通鍵を記憶し、前記第２の認証部は、前記第２の記憶部に記憶されている第２の共通鍵を使用して、前記第２の通信装置との間で相互認証を行う、通信システムである。
（１３）本発明の一態様は、上記（１２）に記載の通信システムにおいて、前記認証局アプリは、第２の通信装置公開鍵証明書を発行し、前記第２の認証部は、前記第２の共通鍵で、前記第２の通信装置公開鍵証明書を暗号化する、通信システムである。
（１４）本発明の一態様は、上記（１２）に記載の通信システムにおいて、前記第２の鍵生成部は、前記第２の共通鍵と前記第２の通信装置の識別情報とに基づいて、第３の共通鍵を生成し、前記第２の認証部は、前記第２の記憶部に記憶されている前記第２の共通鍵で前記第２の鍵生成部が生成した前記第３の共通鍵を暗号化する、通信システムである。
【００１４】
（１５）本発明の一態様は、通信装置と通信を行うサーバであって、ルート公開鍵証明書と、サーバ公開鍵と、該サーバ公開鍵とペアをなすサーバ秘密鍵と、サーバ公開鍵証明書とを記憶する記憶部と、前記記憶部に記憶されている前記サーバ秘密鍵と前記サーバ公開鍵証明書とを使用して、前記通信装置との間で相互認証を行う認証部とを備える、サーバである。
【００１５】
（１６）本発明の一態様は、サーバと通信を行う通信装置であって、ルート公開鍵証明書と、認証局アプリとを記憶する記憶部と、通信装置公開鍵と、該通信装置公開鍵とペアをなす通信装置秘密鍵とを生成する鍵生成部と、前記サーバとの間で相互認証を行う認証部とを備え、前記認証局アプリは、通信装置公開鍵証明書を発行し、前記認証部は、前記通信装置公開鍵証明書と前記通信装置秘密鍵とを使用して、前記サーバとの間で相互認証を行う、通信装置である。
【００１６】
（１７）本発明の一態様は、サーバと該サーバと通信を行う通信装置とが実行する通信方法であって、サーバが、ルート公開鍵証明書と、サーバ公開鍵と、該サーバ公開鍵とペアをなすサーバ秘密鍵と、サーバ公開鍵証明書とを記憶するステップと、前記通信装置が、ルート公開鍵証明書と、認証局アプリとを記憶するステップと、前記通信装置が、通信装置公開鍵と、該通信装置公開鍵とペアをなす通信装置秘密鍵とを生成するステップと、前記通信装置の認証局アプリが、通信装置公開鍵証明書を発行するステップと、前記サーバが、前記サーバ秘密鍵と前記サーバ公開鍵証明書とを使用して、前記通信装置との間で相互認証を行うステップと、前記通信装置が、前記通信装置公開鍵証明書と前記通信装置秘密鍵とを使用して、前記サーバとの間で相互認証を行うステップとを有する通信方法である。
【００１７】
（１８）本発明の一態様は、通信装置と通信を行うサーバのコンピュータに、ルート公開鍵証明書と、サーバ公開鍵と、該サーバ公開鍵とペアをなすサーバ秘密鍵と、サーバ公開鍵証明書とを記憶するステップと、前記サーバ秘密鍵と前記サーバ公開鍵証明書とを使用して、前記通信装置との間で相互認証を行うステップとを実行させる、プログラムである。
【００１８】
（１９）本発明の一態様は、サーバと通信を行う通信装置のコンピュータに、ルート公開鍵証明書と、認証局アプリとを記憶するステップと、通信装置公開鍵と、該通信装置公開鍵とペアをなす通信装置秘密鍵とを生成するステップと、通信装置公開鍵証明書を発行するステップと、前記通信装置公開鍵証明書と前記通信装置秘密鍵とを使用して、前記サーバとの間で相互認証を行うステップとを実行させる、プログラムである。
【発明の効果】
【００１９】
本発明の実施形態によれば、ＩｏＴシステムに含まれるＩｏＴデバイスのセキュリティを向上させることができる。
【図面の簡単な説明】
【００２０】
【図１】第１の実施形態に係る通信システムの一例を示す図である。
【図２】第１の実施形態に係る通信システムを構成するセンタサーバ、ＩｏＴデバイス、及び管理サーバの一例を示す図である。
【図３】第１の実施形態に係る通信システムの動作の一例を示すシーケンスチャートである。
【図４】第２の実施形態に係る通信システムの一例を示す図である。
【図５】第２の実施形態に係る通信システムを構成するセンタサーバ、ＩｏＴデバイス、及び管理サーバの一例を示す図である。
【図６】第２の実施形態に係る通信システムの動作の一例を示すシーケンスチャートである。
【図７】第２の実施形態の変形例に係る通信システムの動作の一例を示すシーケンスチャートである。
【図８】公開鍵証明書のフォームの一例を示す図である。
【図９】第３の実施形態に係る通信システムの一例を示す図である。
【図１０】第３の実施形態に係る通信システムを構成するセンタサーバ、ＩｏＴデバイス、及びルート認証局の一例を示す図である。
【図１１】第３の実施形態に係る通信システムの動作の一例を示すシーケンスチャートである。
【図１２】第４の実施形態に係る通信システムの一例を示す図である。
【図１３】第４の実施形態に係る通信システムを構成するセンタサーバ、ＩｏＴデバイス、及びルート認証局の一例を示す図である。
【図１４】第４の実施形態に係る通信システムの動作の一例を示すシーケンスチャートである。
【図１５】第４の実施形態の変形例に係る通信システムの動作（その１）の一例を示すシーケンスチャートである。
【図１６】第４の実施形態の変形例に係る通信システムの動作（その２）の一例を示すシーケンスチャートである。
【発明を実施するための形態】
【００２１】
＜第１の実施形態＞
＜通信システム＞
図１は、本実施形態に係る通信システムを示す図である。通信システム１は、センタサーバ１００とＩｏＴデバイス２００と管理サーバ３００とを備える。センタサーバ１００とＩｏＴデバイス２００と管理サーバ３００とは、インターネット等の通信網５０を介して接続される。
ＩｏＴデバイス２００は、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ）（登録商標）、ワイファイ（ＷｉＦｉ）（登録商標）、近距離無線通信技術（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ：ＮＦＣ）等の無線通信技術で無線通信を行う無線デバイスを搭載する。また、センタサーバ１００には、マスター鍵（ＭａｓｔｅｒＳｅｃｒｅｔ１）がプリセットされ、ＩｏＴデバイス２００にはマスター鍵（ＭａｓｔｅｒＳｅｃｒｅｔ２）と鍵種別ＩＤとがプリセットされる。センタサーバ１００にプリセットされるマスター鍵（ＭａｓｔｅｒＳｅｃｒｅｔ１）とＩｏＴデバイス２００にプリセットされるマスター鍵（ＭａｓｔｅｒＳｅｃｒｅｔ2）とは同じである。ここで、鍵種別ＩＤは、暗号用に用いる鍵、又はＣＭＡＣ生成用に用いる鍵を指定するための識別情報である。
【００２２】
ＩｏＴデバイス２００は、デバイスＩＤが通知されると、該デバイスＩＤとマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ２と鍵種別ＩＤとから共通鍵Ｋｃ＿ｇｅｎを生成する。ＩｏＴデバイス２００は、共通鍵Ｋｃ＿ｇｅｎを生成すると、チャレンジ（乱数ｇ）を生成し、生成したチャレンジ（乱数ｇ）とＩｏＴデバイス２００のデバイスＩＤとを、センタサーバ１００へ送信する。
センタサーバ１００は、ＩｏＴデバイス２００が送信したチャレンジ（乱数ｇ）とデバイスＩＤとを取得すると、該デバイスＩＤとマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ１と鍵種別ＩＤとから共通鍵Ｋｃ＿ｇｅｎを生成する。該共通鍵Ｋｃ＿ｇｅｎは、ＩｏＴデバイス２００において生成された共通鍵Ｋｃ＿ｇｅｎと同じである。センタサーバ１００は、共通鍵Ｋｃ＿ｇｅｎを生成すると、共通鍵Ｋｃ＿ｇｅｎでチャレンジ（乱数ｇ）を暗号化することで、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を生成する。センタサーバ１００は、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を生成すると、チャレンジ（乱数ｓ）を生成し、生成したチャレンジ（乱数ｓ）とレスポンスＫｃ＿ｇｅｎ（乱数ｇ）とを、ＩｏＴデバイス２００へ送信する。
【００２３】
ＩｏＴデバイス２００は、センタサーバ１００が送信したチャレンジ（乱数ｓ）とレスポンスＫｃ＿ｇｅｎ（乱数ｇ）とを取得すると、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を検証する。ＩｏＴデバイス２００は、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）の検証が成功した場合には、共通鍵Ｋｃ＿ｇｅｎで、チャレンジ（乱数ｓ）を暗号化することで、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を生成する。ＩｏＴデバイス２００は、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を生成すると、該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を、センタサーバ１００へ送信する。
センタサーバ１００は、ＩｏＴデバイス２００が送信したレスポンスＫｃ＿ｇｅｎ（乱数ｓ）を取得すると、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を検証する。
【００２４】
＜通信システムの構成＞
図２は、本実施形態に係る通信システム１に含まれるセンタサーバ１００とＩｏＴデバイス２００の構成の一例を示す。なお、図２には、ＩｏＴデバイス２００が設置され、各種設定が行われるときに、該ＩｏＴデバイス２００へ、デバイスＩＤを通知する管理サーバ３００も示されている。
【００２５】
（センタサーバ）
センタサーバ１００は、通信部１０２と制御部１０４と記憶部１２０と上記各構成要素を図２に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン１５０とを備える。
通信部１０２は、通信モジュールによって実現される。通信部１０２は、通信網５０を経由して、ＩｏＴデバイス２００と通信を行う。通信部１０２は、ＩｏＴデバイス２００が送信したチャレンジ（乱数ｇ）とＩｏＴデバイス２００のデバイスＩＤとを受信する。また、通信部１０２は、ＩｏＴデバイス２００へ、チャレンジ（乱数ｓ）とレスポンスＫｃ＿ｇｅｎ（乱数ｇ）とを送信する。また、通信部１０２は、ＩｏＴデバイス２００が送信したレスポンスＫｃ＿ｇｅｎ（乱数ｓ）を受信する。
【００２６】
制御部１０４は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算処理装置によって構成され、記憶部１２０に記憶されたプログラム１２４を実行することにより、鍵生成部１０６と認証部１０８と検証部１１０として機能する。
鍵生成部１０６は、通信部１０２が受信したＩｏＴデバイス２００のデバイスＩＤを取得する。鍵生成部１０６は、ＩｏＴデバイス２００のデバイスＩＤを取得すると、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ１と該デバイスＩＤと後述する鍵種別ＩＤ１２２に含まれるＣＭＡＣ生成用に用いる鍵を指定する識別情報とから、共通鍵Ｋｃ＿ｇｅｎを生成する。具体的には、鍵生成部１０６は、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ１とＩｏＴデバイス２００のデバイスＩＤとＣＭＡＣ生成用に用いる鍵を指す識別情報との連結データを入力値に使用してハッシュ値を算出し、算出したハッシュ値を共通鍵Ｋｃ＿ｇｅｎに使用する。
【００２７】
認証部１０８は、ＩｏＴデバイス２００の正当性を確認する。認証部１０８は、通信部１０２がチャレンジ（乱数ｇ）を受信すると、該チャレンジ（乱数ｇ）を取得する。認証部１０８は、鍵生成部１０６が共通鍵Ｋｃ＿ｇｅｎを生成すると、該共通鍵Ｋｃ＿ｇｅｎを取得する。認証部１０８は、共通鍵Ｋｃ＿ｇｅｎで、チャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を作成する。また、認証部１０８は、チャレンジ（乱数ｓ）を生成し、生成したチャレンジ（乱数ｓ）とレスポンスＫｃ＿ｇｅｎ（乱数ｇ）とを、通信部１０２からＩｏＴデバイス２００へ送信する。
認証部１０８は、通信部１０２がレスポンスＫｃ＿ｇｅｎ（乱数ｓ）を受信すると、検証部１１０に該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）の検証を要求する。認証部１０８は、検証部１１０から検証が成功であることが通知された場合、ＩｏＴデバイス２００が正当であると判断する。
【００２８】
検証部１１０は、通信部１０２がレスポンスＫｃ＿ｇｅｎ（乱数ｓ）を受信し、且つ認証部１０８から該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）の検証が要求された場合に、該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を取得する。検証部１１０は、該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を取得すると、該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を検証する。検証部１１０は、該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を検証すると、検証が成功したか否かを、認証部１０８へ通知する。
記憶部１２０は、不揮発性メモリ等の記憶装置によって実現される。記憶部１２０は、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ１と鍵種別ＩＤ１２２とプログラム１２４とを記憶する。
【００２９】
（ＩｏＴデバイス）
ＩｏＴデバイス２００は、通信部２０２と制御部２０４と記憶部２２０とＳＩＭ２３０と上記各構成要素を図２に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン２５０とを備える。
通信部２０２は、通信モジュールによって実現される。通信部２０２は、通信網５０を経由して、センタサーバ１００、及び管理サーバ３００と通信を行う。通信部２０２は、ＩｏＴデバイス２００が設置された際に、管理サーバ３００が送信したデバイスＩＤを受信する。また、通信部２０２は、センタサーバ１００へ、チャレンジ（乱数ｇ）とＩｏＴデバイス２００のデバイスＩＤとを送信する。また、通信部２０２は、センタサーバ１００が送信したチャレンジ（乱数ｓ）とレスポンスＫｃ＿ｇｅｎ（乱数ｇ）とを受信する。また、通信部１０２は、ＩｏＴデバイス２００へ、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を送信する。
【００３０】
制御部２０４は、例えば演算処理装置によって構成され、記憶部１２０に記憶されたプログラム２２４を実行することにより、鍵生成部２０６と認証部２０８と検証部２１０として機能する。
鍵生成部２０６は、通信部２０２が受信したデバイスＩＤを取得する。鍵生成部２０６は、デバイスＩＤを取得すると、ＳＩＭ２３０に記憶されているマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ２を取得する。鍵生成部２０６は、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ２とデバイスＩＤと後述する鍵種別ＩＤ２３２に含まれるＣＭＡＣ生成用に用いる鍵を指示する識別情報とから、共通鍵Ｋｃ＿ｇｅｎを生成する。具体的には、鍵生成部２０６は、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ１とＩｏＴデバイス２００のデバイスＩＤとＣＭＡＣ生成用に用いる鍵を指示する識別情報との連結データを入力値に使用してハッシュ値を算出し、算出したハッシュ値を共通鍵Ｋｃ＿ｇｅｎに使用する。
【００３１】
認証部２０８は、センタサーバ１００の正当性を確認する。認証部２０８は、鍵生成部２０６が共通鍵Ｋｃ＿ｇｅｎを生成すると、該共通鍵Ｋｃ＿ｇｅｎを取得する。認証部２０８は、チャレンジ（乱数ｇ）を生成し、生成したチャレンジ（乱数ｇ）とＩｏＴデバイス２００のデバイスＩＤとを、通信部２０２からセンタサーバ１００へ送信する。
認証部２０８は、通信部２０２がチャレンジ（乱数ｓ）とレスポンスＫｃ＿ｇｅｎ（乱数ｇ）とを受信すると、検証部２１０に該レスポンスＫｃ＿ｇｅｎ（乱数ｇ）の検証を要求する。認証部２０８は、検証部２１０から検証が成功であることが通知された場合、センタサーバ１００が正当であると判断する。認証部２０８は、検証部２１０から検証が成功であることが通知された場合、共通鍵Ｋｃ＿ｇｅｎで、チャレンジ（乱数ｓ）を暗号化し、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を作成する。認証部２０８は、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を、通信部２０２からセンタサーバ１００へ送信する。
【００３２】
検証部２１０は、通信部２０２がレスポンスＫｃ＿ｇｅｎ（乱数ｇ）を受信し、且つ認証部２０８から該レスポンスＫｃ＿ｇｅｎ（乱数ｇ）の検証が要求された場合に、該レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を取得する。検証部２１０は、認証部２０８からレスポンスＫｃ＿ｇｅｎ（乱数ｇ）を取得すると、該レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を検証する。検証部２１０は、該レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を検証すると、検証が成功したか否かを、認証部２０８へ通知する。
【００３３】
記憶部２２０は、不揮発性メモリ等の記憶装置によって実現される。記憶部２２０は、通信部２０２が受信したＩｏＴデバイス２００のデバイスＩＤ２２２とプログラム２２４とを記憶する。
ＳＩＭ２３０は、ＳＩＭ（Ｓｕｂｓｃｒｉｂｅｒ  Ｉｄｅｎｔｉｔｙ  Ｍｏｄｕｌｅ）によって実現される。ＳＩＭ２３０は、ＳＩＭ識別情報ｓｉｍｉｄ２００とマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ２と鍵種別ＩＤ２３２とを記憶する。このマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ２は、センタサーバ１００の記憶部１２０に記憶されているマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ１と同じものである。
【００３４】
（管理サーバ）
管理サーバ３００は、ＩｏＴデバイス２００が設置されたときに、該ＩｏＴデバイス２００へ、該ＩｏＴデバイス２００のデバイスＩＤを通知する。
【００３５】
（通信システムの動作）
図３は、本実施形態に係る通信システムの動作の一例を示すシーケンスチャートである。
ステップＳ３０２では、ＩｏＴデバイス２００が設置され、各種設定が行われる。管理サーバ３００は、ＩｏＴデバイス２００へ、該ＩｏＴデバイス２００のデバイスＩＤ２２２を通知する。ＩｏＴデバイス２００の記憶部２２０は、管理サーバ３００が送信したデバイスＩＤ２２２を記憶する。
ステップＳ３０４では、ＩｏＴデバイス２００の鍵生成部２０６は、ＳＩＭ２３０に記憶されているマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ２とＩｏＴデバイス２００のデバイスＩＤ２２２と鍵種別ＩＤ２３２とから共通鍵Ｋｃ＿ｇｅｎを生成する。
ステップＳ３０６では、ＩｏＴデバイス２００の認証部２０８は、チャレンジ（乱数ｇ）を生成する。認証部２０８は、チャレンジ（乱数ｇ）を生成すると、該チャレンジ（乱数ｇ）とＩｏＴデバイス２００のデバイスＩＤ２２２とを、通信部２０２からセンタサーバ１００へ送信する。
【００３６】
ステップＳ３０８では、センタサーバ１００の通信部１０２は、ＩｏＴデバイス２００が送信したチャレンジ（乱数ｇ）とＩｏＴデバイス２００のデバイスＩＤ２２２とを受信する。センタサーバ１００の鍵生成部１０６は、ＩｏＴデバイス２００のデバイスＩＤ２２２を取得すると、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ１とＩｏＴデバイス２００のデバイスＩＤと鍵種別ＩＤ１２２とから共通鍵Ｋｃ＿ｇｅｎを生成する。
ステップＳ３１０では、センタサーバ１００の認証部１０８は、鍵生成部１０６が生成した共通鍵Ｋｃ＿ｇｅｎでチャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を生成する。また、認証部１０８は、チャレンジ（乱数ｓ）を生成する。認証部１０８は、チェレンジ（乱数ｓ）とレスポンスＫｃ＿ｇｅｎ（乱数ｇ）とを、通信部１０２からＩｏＴデバイス２００へ送信する。
【００３７】
ステップＳ３１２では、ＩｏＴデバイス２００の通信部２０２は、センタサーバ１００が送信したチェレンジ（乱数ｓ）とレスポンスＫｃ＿ｇｅｎ（乱数ｇ）とを受信する。ＩｏＴデバイス２００の認証部２０８は、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を取得すると、検証部２１０へ該レスポンスＫｃ＿ｇｅｎ（乱数ｇ）の正真性の検証を要求する。検証部２１０は、認証部２０８からの要求に応じて、通信部２０２からレスポンスＫｃ＿ｇｅｎ（乱数ｇ）を取得し、該レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を検証する。具体的には、検証部２１０は、鍵生成部２０６が生成した共通鍵Ｋｃ＿ｇｅｎで、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を復号し、復号した結果と認証部２０８が生成したチャレンジ（乱数ｇ）とが一致するか否かを判定する。検証部２１０は、一致する場合には検証が成功であり、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）がセンタサーバ１００から送信されたものであると判定する。一方、検証部２１０は、一致しない場合には検証が失敗であり、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）がセンタサーバ１００から送信されたものでないと判定する。検証部２１０は、検証が成功したか否かを表す情報を認証部２０８へ出力する。
【００３８】
ステップＳ３１４では、ＩｏＴデバイス２００の認証部２０８は、検証部２１０から検証が成功したか否かを表す情報が通知されると、該情報が、認証が成功したことを示す場合に、鍵生成部２０６が生成した共通鍵Ｋｃ＿ｇｅｎでチャレンジ（乱数ｓ）を暗号化することによって、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を生成する。認証部２０８は、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を生成すると、該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を、通信部２０２からセンタサーバ１００へ送信する。一方、ＩｏＴデバイス２００の認証部２０８は、検証部２１０から取得した検証が成功したか否かを表す情報が、認証が失敗したことを示す場合に、所定のエラー処理を行う。
【００３９】
ステップＳ３１６では、センタサーバ１００の通信部１０２は、ＩｏＴデバイス２００が送信したレスポンスＫｃ＿ｇｅｎ（乱数ｓ）を受信する。センタサーバ１００の認証部１０８は、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を取得すると、検証部１１０へ該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）の正真性の検証を要求する。検証部１１０は、認証部１０８からの要求に応じて、通信部１０２からレスポンスＫｃ＿ｇｅｎ（乱数ｓ）を取得し、該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）の正真性を検証する。具体的には、検証部１１０は、鍵生成部１０６が生成した共通鍵Ｋｃ＿ｇｅｎで、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を復号し、復号した結果と認証部１０８が生成したチャレンジ（乱数ｓ）とが一致するか否かを判定する。検証部１１０は、一致する場合には検証が成功であり、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）がＩｏＴデバイス２００から送信されたものであると判定する。一方、検証部１１０は、一致しない場合には検証が失敗であり、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）がＩｏＴデバイス２００から送信されたものでないと判定する。検証部１１０は、検証が成功したか否かを表す情報を認証部１０８へ出力する。認証部１０８は、検証部１１０から検証が成功したか否かを表す情報が通知されると、該情報が、認証が成功したことを示す場合に、ＩｏＴデバイス２００との間で、データの送受を行う。一方、センタサーバ１００の認証部１０８は、検証部１１０から検証が成功したか否かを表す情報が、認証が失敗したことを示す場合に、所定のエラー処理を行う。
【００４０】
本実施形態に係る通信システムは、ＩｏＴデバイス２００に通信モジュールやＳＩＭが組み込まれている場合に、センタサーバ１００、及びＩｏＴデバイス２００は、共通鍵を生成し、該共通鍵を使用して相互認証を行う。このように構成することによって、通信システムに含まれるＩｏＴデバイスのセキュリティを向上させることができる。
【００４１】
＜第２の実施形態＞
＜通信システム＞
図４は、本実施形態に係る通信システムを示す図である。通信システム２は、センタサーバ１００と管理サーバ３００とＩｏＴデバイス４００とＩｏＴデバイス５００とを備える。センタサーバ１００と管理サーバ３００とＩｏＴデバイス４００とＩｏＴデバイス５００とは、インターネット等の通信網５０を介して接続される。
【００４２】
ＩｏＴデバイス４００、及びＩｏＴデバイス５００は、ブルートゥース（登録商標）、ワイファイ（登録商標）、近距離無線通信技術等の無線通信技術で無線通信を行う無線デバイスを搭載する。また、センタサーバ１００にはマスター鍵（ＭａｓｔｅｒＳｅｃｒｅｔ１）がプリセットされ、ＩｏＴデバイス４００にはマスター鍵（ＭａｓｔｅｒＳｅｃｒｅｔ４）と共通鍵Ｋｃ＿初期とがプリセットされ、ＩｏＴデバイス５００には該ＩｏＴデバイス５００のデバイスＩＤ５２２と共通鍵Ｋｃ＿初期とがプリセットされる。センタサーバ１００にプリセットされるマスター鍵（ＭａｓｔｅｒＳｅｃｒｅｔ１）とＩｏＴデバイス４００にプリセットされるマスター鍵（ＭａｓｔｅｒＳｅｃｒｅｔ４）とは同じである。また、センタサーバ１００、ＩｏＴデバイス４００及びＩｏＴデバイス５００には、鍵種別ＩＤが記憶される。鍵種別ＩＤは、暗号用に用いる鍵、又はＣＭＡＣ生成用に用いる鍵を指定する識別情報である。
【００４３】
ＩｏＴデバイス４００は、該ＩｏＴデバイス４００のデバイスＩＤが通知されると、該ＩｏＴデバイス４００のデバイスＩＤとマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ４と鍵種別ＩＤとから共通鍵Ｋｃ＿ｇｅｎを生成する。
ＩｏＴデバイス５００は、チャレンジ（乱数ｅ）を生成し、生成したチャレンジ（乱数ｅ）とＩｏＴデバイス５００のデバイスＩＤ５２２とを、ＩｏＴデバイス４００へ送信する。
ＩｏＴデバイス４００は、ＩｏＴデバイス５００が送信したチャレンジ（乱数ｅ）とＩｏＴデバイス５００のデバイスＩＤ５２２とを受信すると、共通鍵Ｋｃ＿初期で、チャレンジ（乱数ｅ）を暗号化することによって、レスポンスＫｃ＿初期（乱数ｅ）を生成する。また、ＩｏＴデバイス４００は、チャレンジ（乱数ｇ）を生成し、生成したチャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを、ＩｏＴデバイス５００へ送信する。
【００４４】
ＩｏＴデバイス５００は、ＩｏＴデバイス４００が送信したチャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを受信すると、レスポンスＫｃ＿初期（乱数ｅ）を検証する。ＩｏＴデバイス５００は、レスポンスＫｃ＿初期（乱数ｅ）の検証が成功した場合には、共通鍵Ｋｃ＿初期で、チャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｃ＿初期（乱数ｇ）を生成する。ＩｏＴデバイス５００は、レスポンスＫｃ＿初期（乱数ｇ）を生成すると、該レスポンスＫｃ＿初期（乱数ｇ）を、ＩｏＴデバイス４００へ送信する。
【００４５】
ＩｏＴデバイス４００は、ＩｏＴデバイス５００が送信したレスポンスＫｃ＿初期（乱数ｇ）を受信すると、レスポンスＫｃ＿初期（乱数ｇ）を検証する。ＩｏＴデバイス４００はレスポンスＫｃ＿初期（乱数ｇ）の検証が成功した場合には、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ４とＩｏＴデバイス５００のデバイスＩＤ５２２と鍵種別ＩＤとから共通鍵Ｋｃ＿ｇｅｎ＿ｅを生成する。
ＩｏＴデバイス４００は、プリセットされている共通鍵Ｋｃ＿初期で共通鍵Ｋｃ＿ｇｅｎ＿ｅを暗号化することによって、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を生成する。ＩｏＴデバイス４００は、生成したＫｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）をＩｏＴデバイス５００へ、送信する。
ＩｏＴデバイス５００は、ＩｏＴデバイス４００が送信したＫｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を受信すると、プリセットされているＫｃ＿初期で、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を復号し、復号した結果であるＫｃ＿ｇｅｎ＿ｅを共通鍵にセットする。
【００４６】
ＩｏＴデバイス４００は、チャレンジ（乱数ｇ）を生成し、生成したチャレンジ（乱数ｇ）とＩｏＴデバイス４００のデバイスＩＤ４２２とを、センタサーバ１００へ送信する。
センタサーバ１００は、ＩｏＴデバイス４００が送信したチャレンジ（乱数ｇ）とＩｏＴデバイス４００のデバイスＩＤ４２２とを取得すると、該ＩｏＴデバイス４００のデバイスＩＤ４２２とマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ１と鍵種別ＩＤとから共通鍵Ｋｃ＿ｇｅｎを生成する。該共通鍵Ｋｃ＿ｇｅｎは、ＩｏＴデバイス４００が生成した共通鍵Ｋｃ＿ｇｅｎと同じである。センタサーバ１００は、共通鍵Ｋｃ＿ｇｅｎを生成すると、共通鍵Ｋｃ＿ｇｅｎでチャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）を生成する。センタサーバ１００は、チャレンジ（乱数ｓ）を生成すると、生成したチャレンジ（乱数ｓ）とレスポンスＫｃ＿ｇｅｎ（乱数ｇ）とを、ＩｏＴデバイス４００へ送信する。
【００４７】
ＩｏＴデバイス４００は、センタサーバ１００が送信したチャレンジ（乱数ｓ）とレスポンスＫｃ＿ｇｅｎ（乱数ｇ）とを取得すると、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）の正真性を検証する。ＩｏＴデバイス４００は、レスポンスＫｃ＿ｇｅｎ（乱数ｇ）の正真性の検証が成功した場合には、共通鍵Ｋｃ＿ｇｅｎで、チャレンジ（乱数ｓ）を暗号化することによって、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を生成する。ＩｏＴデバイス４００は、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を生成すると、該レスポンスＫｃ＿ｇｅｎ（乱数ｓ）を、センタサーバ１００へ送信する。
センタサーバ１００は、ＩｏＴデバイス４００が送信したレスポンスＫｃ＿ｇｅｎ（乱数ｓ）を取得すると、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）の正真性を検証する。センタサーバ１００は、レスポンスＫｃ＿ｇｅｎ（乱数ｓ）の正真性の検証が成功した場合には、ＩｏＴデバイス４００が正当であると判断する。
センタサーバ１００とＩｏＴデバイス５００との間でも、センタサーバ１００とＩｏＴデバイス４００との間と同様の処理が行われる。ただし、ＩｏＴデバイス５００がセットした共通鍵Ｋｃ＿ｇｅｎ＿ｅを用いて、ＩｏＴデバイス４００を経由して、センタサーバ１００とＩｏＴデバイス５００との間で相互認証が行われる。
【００４８】
＜通信システムの構成＞
図５は、本実施形態に係る通信システム２に含まれるセンタサーバ１００とＩｏＴデバイス４００とＩｏＴデバイス５００との構成の一例を示す。なお、図５には、ＩｏＴデバイス４００が設置され、各種設定が行われるときに、該ＩｏＴデバイス４００へ、該ＩｏＴデバイス４００のデバイスＩＤ４２２を通知する管理サーバ３００も示されている。
【００４９】
（ＩｏＴデバイス）
ＩｏＴデバイス４００は、通信部４０２と制御部４０４と記憶部４２０とＳＩＭ４３０と上記各構成要素を図５に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン４５０とを備える。
通信部４０２は、通信モジュールによって実現される。通信部４０２は、通信網５０を経由して、センタサーバ１００、管理サーバ３００、及びＩｏＴデバイス５００と通信を行う。また、通信部４０２は、通信網５０を経由せずに、例えば、ワイファイ（登録商標）、ブルートゥース（登録商標）等の近距離無線通信技術によって、ＩｏＴデバイス５００と直接通信を行う。通信部４０２は、通信部２０２の機能に加えて、以下の機能を有する。通信部４０２は、ＩｏＴデバイス５００が送信したチャレンジ（乱数ｅ）とＩｏＴデバイス５００のデバイスＩＤ５２２とを受信する。また、通信部４０２は、ＩｏＴデバイス５００へ、チャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを送信する。また、通信部４０２は、ＩｏＴデバイス５００が送信したレスポンスＫｃ＿初期（乱数ｇ）を受信する。また、通信部４０２は、ＩｏＴデバイス５００へ、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を送信する。
【００５０】
制御部４０４は、例えば、演算処理装置によって構成され、記憶部４２０に記憶されたプログラム４２４を実行することにより、鍵生成部４０６と認証部４０８と検証部４１０として機能する。
鍵生成部４０６は、鍵生成部２０６の機能に加えて、以下の機能を有する。鍵生成部４０６は、通信部４０２が受信したＩｏＴデバイス４００のデバイスＩＤ４２２を取得する。鍵生成部４０６は、ＩｏＴデバイス４００のデバイスＩＤ４２２を取得すると、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ４とＩｏＴデバイス４００のデバイスＩＤ４２２と後述する鍵種別ＩＤ４３２に含まれるＣＭＡＣ生成用に用いる鍵を指定する識別情報とから、共通鍵Ｋｃ＿ｇｅｎを生成する。具体的には、鍵生成部４０６は、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ４とＩｏＴデバイス４００のデバイスＩＤ４２２とＣＭＡＣ生成用に用いる鍵を指定する識別情報との連結データを入力値に使用してハッシュ値を算出し、算出したハッシュ値を共通鍵Ｋｃ＿ｇｅｎに使用する。
また、鍵生成部４０６は、認証部４０８からＩｏＴデバイス５００が正当であることが通知された場合、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ４とＩｏＴデバイス５００のデバイスＩＤ５２２と鍵種別ＩＤ４３２に含まれるＣＭＡＣ生成用に用いる鍵を指定する識別情報とから、共通鍵Ｋｃ＿ｇｅｎ＿ｅを生成する。具体的には、鍵生成部４０６は、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ４とＩｏＴデバイス５００のデバイスＩＤ５２２とＣＭＡＣ生成用に用いる鍵を指定する識別情報との連結データを入力値に使用してハッシュ値を算出し、算出したハッシュ値を共通鍵Ｋｃ＿ｇｅｎに使用する。鍵生成部４０６は、共通鍵Ｋｃ＿ｇｅｎ＿ｅを生成すると、該共通鍵Ｋｃ＿ｇｅｎ＿ｅを、認証部４０８へ出力する。
【００５１】
認証部４０８は、ＩｏＴデバイス５００の正当性を確認する。認証部４０８は、認証部２０８の機能に加えて、以下の機能を有する。認証部４０８は、通信部４０２がチャレンジ（乱数ｅ）を受信すると、該チャレンジ（乱数ｅ）を取得する。認証部４０８は、共通鍵Ｋｃ＿初期で、チャレンジ（乱数ｅ）を暗号化し、レスポンスＫｃ＿初期（乱数ｅ）を生成する。また、認証部４０８は、チャレンジ（乱数ｇ）を生成し、生成したチャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを、通信部４０２からＩｏＴデバイス５００へ送信する。
認証部４０８は、通信部４０２がレスポンスＫｃ＿初期（乱数ｇ）を受信すると、検証部４１０に該レスポンスＫｃ＿初期（乱数ｇ）の検証を要求する。認証部４０８は、検証部４１０から検証が成功であることが通知された場合、ＩｏＴデバイス５００が正当であると判断する。認証部４０８は、ＩｏＴデバイス５００が正当であると判断した場合、鍵生成部４０６へ、ＩｏＴデバイス５００が正当であることを通知する。
認証部４０８は、鍵生成部４０６が出力した共通鍵Ｋｃ＿ｇｅｎ＿ｅを取得すると、ＳＩＭ４３０に記憶されている共通鍵Ｋｃ＿初期で該共通鍵Ｋｃ＿ｇｅｎ＿ｅを暗号化することによって、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を生成し、該Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を通信部４０２からＩｏＴデバイス５００へ送信する。
【００５２】
検証部４１０は、検証部２１０の機能に加えて、以下の機能を有する。検証部４１０は、通信部４０２がレスポンスＫｃ＿初期（乱数ｇ）を受信し、且つ認証部４０８から該レスポンスＫｃ＿初期（乱数ｇ）の検証が要求された場合に、該レスポンスＫｃ＿初期（乱数ｇ）を取得する。検証部４１０は、該レスポンスＫｃ＿初期（乱数ｇ）を取得すると、該レスポンスＫｃ＿初期（乱数ｇ）を検証する。検証部４１０は、該レスポンスＫｃ＿初期（乱数ｇ）を検証すると、検証が成功したか否かを、認証部４０８へ通知する。
記憶部４２０は、不揮発性メモリ等の記憶装置によって実現される。記憶部４２０は、ＩｏＴデバイス４００のデバイスＩＤ４２２とプログラム４２４とを記憶する。
ＳＩＭ４３０は、ＳＩＭ識別情報ｓｉｍｉｄ４００とマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ４と共通鍵Ｋｃ＿初期と鍵種別ＩＤ４３２とを記憶する。このマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ４は、センタサーバ１００の記憶部１２０に記憶されているマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ１と同じものである。
【００５３】
（ＩｏＴデバイス）
ＩｏＴデバイス５００は、通信部５０２と制御部５０４と記憶部５２０とＳＩＭ５３０と上記各構成要素を図５に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン５５０とを備える。
通信部５０２は、通信モジュールによって実現される。通信部５０２は、通信網５０を経由して、センタサーバ１００、ＩｏＴデバイス４００、及び管理サーバ３００と通信を行う。また、通信部５０２は、通信網５０を経由せずに、例えば、ワイファイ（登録商標）、ブルートゥース（登録商標）等の近距離無線通信技術によって、ＩｏＴデバイス４００と直接通信を行う。通信部５０２は、ＩｏＴデバイス４００へ、チャレンジ（乱数ｅ）とＩｏＴデバイス５００のデバイスＩＤ５２２とを送信する。また、通信部５０２は、ＩｏＴデバイス４００が送信したチャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを受信する。また、通信部５０２は、ＩｏＴデバイス４００へ、レスポンスＫｃ＿初期（乱数ｇ）を送信する。また、通信部５０２は、ＩｏＴデバイス４００が送信したＫｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を受信する。
【００５４】
制御部５０４は、例えば演算処理装置によって構成され、記憶部５２０に記憶されたプログラム５２４を実行することにより、鍵生成部５０６と認証部５０８と検証部５１０として機能する。
鍵生成部５０６は、鍵生成部２０６を適用できる。
認証部５０８は、認証部２０８の機能に加えて、以下の機能を有する。認証部５０８は、ＩｏＴデバイス４００の正当性を確認する。認証部５０８は、チャレンジ（乱数ｅ）を生成し、生成したチャレンジ（乱数ｅ）とＩｏＴデバイス５００のデバイスＩＤ５２２とを、通信部５０２からＩｏＴデバイス４００へ送信する。認証部５０８は、ＩｏＴデバイス４００が送信したチャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを取得すると、検証部５１０に該レスポンスＫｃ＿初期（乱数ｅ）の検証を要求する。認証部５０８は、検証部５１０から検証が成功であることが通知された場合、ＩｏＴデバイス４００が正当であると判断する。認証部５０８は、検証部５１０から検証が成功であることが通知された場合、共通鍵Ｋｃ＿初期で、チャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｃ＿初期（乱数ｇ）を作成する。認証部５０８は、レスポンスＫｃ＿初期（乱数ｇ）を作成すると、該レスポンスＫｃ＿初期（乱数ｇ）を、通信部５０２からＩｏＴデバイス４００へ送信する。認証部５０８は、通信部５０２が受信したＫｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を取得すると、記憶部５２０に記憶されている共通鍵Ｋｃ＿初期で、該Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を復号することによって、Ｋｃ＿ｇｅｎ＿ｅを取得する。認証部５０８は、Ｋｃ＿ｇｅｎ＿ｅを取得すると、該Ｋｃ＿ｇｅｎ＿ｅを共通鍵として設定する。
【００５５】
検証部５１０は、検証部２１０の機能に加えて、以下の機能を有する。検証部５１０は、通信部５０２がチャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）を受信し、且つ認証部５０８から該レスポンスＫｃ＿初期（乱数ｅ）の検証が要求された場合に、該レスポンスＫｃ＿初期（乱数ｅ）を取得する。検証部５１０は、該レスポンスＫｃ＿初期（乱数ｅ）を取得すると、該レスポンスＫｃ＿初期（乱数ｅ）を検証する。検証部５１０は、該レスポンスＫｃ＿初期（乱数ｅ）を検証すると、検証が成功したか否かを、認証部５０８へ通知する。
記憶部５２０は、不揮発性メモリ等の記憶装置によって実現される。記憶部５２０は、ＩｏＴデバイス５００のデバイスＩＤ５２２と共通鍵Ｋｃ＿初期とプログラム５２４とを記憶する。
ＳＩＭ５３０は、ＳＩＭ識別情報ｓｉｍｉｄ５００とマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ５と鍵種別ＩＤ５３２とを記憶する。このマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ５は、センタサーバ１００の記憶部１２０に記憶されているマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ１と同じものである。
【００５６】
（管理サーバ）
管理サーバ３００は、ＩｏＴデバイス４００が設置された場合に、該ＩｏＴデバイス４００へ、該ＩｏＴデバイス４００のデバイスＩＤを通知する。
【００５７】
（通信システムの動作）
図６は、本実施形態に係る通信システムの動作の一例を示すシーケンスチャートである。
ステップＳ６０２では、ＩｏＴデバイス４００が設置され、各種設定が行われる。管理サーバ３００は、ＩｏＴデバイス４００へ、該ＩｏＴデバイス４００のデバイスＩＤ４２２を通知する。ＩｏＴデバイス４００の記憶部４２０は、管理サーバ３００が送信したデバイスＩＤ４２２を記憶する。
ステップＳ６０４では、ＩｏＴデバイス４００の鍵生成部４０６は、ＳＩＭ４３０に記憶されているマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ４と記憶部４２０に記憶されているＩｏＴデバイス４００のデバイスＩＤ４２２と鍵種別ＩＤ４３２とから共通鍵Ｋｃ＿ｇｅｎを生成する。
【００５８】
ステップＳ６０６では、ＩｏＴデバイス５００の認証部５０８は、チャレンジ（乱数ｅ）を生成する。認証部５０８は、チャレンジ（乱数ｅ）を生成すると、該チャレンジ（乱数ｅ）とＩｏＴデバイス５００のデバイスＩＤ５２２とを、通信部５０２からＩｏＴ４００へ送信する。
ステップＳ６０８では、ＩｏＴデバイス４００の通信部４０２は、ＩｏＴデバイス５００が送信したチャレンジ（乱数ｅ）とＩｏＴデバイス５００のデバイスＩＤ５２２とを受信する。ＩｏＴデバイス４００の認証部４０８は、通信部４０２が受信したチャレンジ（乱数ｅ）を取得すると、ＳＩＭ４３０に記憶されている共通鍵Ｋｃ＿初期で、該チャレンジ（乱数ｅ）を暗号化することによって、レスポンスＫｃ＿初期（乱数ｅ）を生成する。また、認証部４０８は、チャレンジ（乱数ｇ）を生成すると、レスポンスＫｃ＿初期（乱数ｅ）とチェレンジ（乱数ｇ）とを、通信部５０２からＩｏＴデバイス５００へ送信する。
【００５９】
ステップＳ６１０では、ＩｏＴデバイス５００の通信部５０２は、ＩｏＴデバイス４００が送信したチェレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを受信する。ＩｏＴデバイス５００の認証部５０８は、通信部５０２が受信したレスポンスＫｃ＿初期（乱数ｅ）を取得すると、検証部５１０へ該レスポンスＫｃ＿初期（乱数ｅ）の正真性の検証を要求する。検証部５１０は、認証部５０８からの要求に応じて、レスポンスＫｃ＿初期（乱数ｅ）の正真性を検証する。具体的には、検証部５１０は、記憶部５２０に記憶されている共通鍵Ｋｃ＿初期で、レスポンスＫｃ＿初期（乱数ｅ）を復号し、復号した結果と認証部５０８が生成したチャレンジ（乱数ｅ）とが一致するか否かを判定する。検証部５１０は、一致する場合には検証が成功であり、レスポンスＫｃ＿初期（乱数ｅ）がＩｏＴデバイス４００から送信されたものであると判定する。一方、検証部５１０は、一致しない場合には検証が失敗であり、レスポンスＫｃ＿初期（乱数ｅ）がＩｏＴデバイス４００から送信されたものでないと判定する。検証部５１０は、検証が成功したか否かを表す情報を認証部５０８へ出力する。
【００６０】
ステップＳ６１２では、ＩｏＴデバイス５００の認証部５０８は、検証部５１０から検証が成功したか否かを表す情報が通知されると、該情報が、認証が成功したことを示す場合に、記憶部５２０に記憶されている共通鍵Ｋｃ＿初期でチャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｃ＿初期（乱数ｇ）を生成する。認証部５０８は、レスポンスＫｃ＿初期（乱数ｇ）を生成すると、該レスポンスＫｃ＿初期（乱数ｇ）を、通信部５０２からＩｏＴデバイス４００へ送信する。一方、ＩｏＴデバイス５００の認証部５０８は、検証部５１０から通知された検証が成功したか否かを表す情報が、認証が失敗したことを示す場合に、所定のエラー処理を行う。
【００６１】
ステップＳ６１４では、ＩｏＴデバイス４００の通信部４０２は、ＩｏＴデバイス５００が送信したレスポンスＫｃ＿初期（乱数ｇ）を受信する。ＩｏＴデバイス４００の認証部４０８は、レスポンスＫｃ＿初期（乱数ｇ）を取得すると、検証部４１０へ該レスポンスＫｃ＿初期（乱数ｇ）の正真性の検証を要求する。検証部４１０は、認証部４０８からの要求に応じて、レスポンスＫｃ＿初期（乱数ｇ）の正真性を検証する。具体的には、検証部４１０は、ＳＩＭ４３０に記憶されている共通鍵Ｋｃ＿初期で、レスポンスＫｃ＿初期（乱数ｇ）を復号し、復号した結果と認証部４０８が生成したチャレンジ（乱数ｇ）とが一致するか否かを判定する。検証部４１０は、一致する場合には検証が成功であり、レスポンスＫｃ＿初期（乱数ｇ）がＩｏＴデバイス５００から送信されたものであると判定する。一方、検証部４１０は、一致しない場合には検証が失敗であり、レスポンスＫｃ＿初期（乱数ｇ）がＩｏＴデバイス５００から送信されたものでないと判定する。検証部４１０は、検証が成功したか否かを表す情報を認証部４０８へ出力する。
【００６２】
ステップＳ６１６では、ＩｏＴデバイス４００の認証部４０８は、検証部４１０から検証が成功したか否かを表す情報が通知されると、該情報が、認証が成功したことを示す場合に、鍵生成部４０６へ、共通鍵Ｋｃ＿ｇｅｎ＿ｅを生成する命令を出力する。鍵生成部４０６は、認証部１０８から共通鍵Ｋｃ＿ｇｅｎ＿ｅを生成する命令を取得すると、ＩｏＴデバイス５００のデバイスＩＤ５２２とＳＩＭ４３０に記憶されているマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔ４と鍵種別ＩＤ４３２とから共通鍵Ｋｃ＿ｇｅｎ＿ｅを生成する。
ステップＳ６１８では、ＩｏＴデバイス４００の認証部４０８は、ＳＩＭ４３０に記憶された共通鍵Ｋｃ＿初期で共通鍵Ｋｃ＿ｇｅｎ＿ｅを暗号化することによって、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を生成する。認証部４０８は、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を、通信部４０２からＩｏＴデバイス５００へ送信する。
【００６３】
ステップＳ６２０では、ＩｏＴデバイス５００の通信部５０２は、ＩｏＴデバイス４００が送信したＫｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を受信する。ＩｏＴデバイス５００の認証部５０８は、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を取得すると、記憶部５２０に記憶している共通鍵Ｋｃ＿初期で該Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を復号する。認証部５０８は、共通鍵Ｋｃ＿初期で該Ｋｃ＿初期（Ｋｃ＿ｇｅｎ＿ｅ）を復号した結果であるＫｃ＿ｇｅｎ＿ｅを、共通鍵として設定する。
ステップＳ６２２−Ｓ６３２は、図３のステップＳ３０６−Ｓ３１６を適用できる。
ステップＳ６３４で、センタサーバ１００とＩｏＴデバイス５００との間で行われる処理は、ステップＳ６２２−Ｓ６３０を適用できる。ただし、ＩｏＴデバイス５００がセットした共通鍵Ｋｃ＿ｇｅｎ＿ｅを用いて、ＩｏＴデバイス４００を経由して、センタサーバ１００とＩｏＴデバイス５００との間で相互認証が行われる。この相互認証によって、センタサーバ１００とＩｏＴデバイス５００との間で共通鍵が交換された後、センタサーバ１００とＩｏＴデバイス５００との間で、通信網５０を経由して、通信を行う。
ＩｏＴデバイス５００は、共通鍵を交換したデバイスとのみ通信ができる。このように構成することによって、ＩｏＴデバイス５００が、ＤＤｏｓ（Distributed Denial of Service）攻撃の踏み台にされないようにできる。
【００６４】
本実施形態に係る通信システムでは、ＩｏＴデバイス４００にＩｏＴデバイス５００が従属し、ＩｏＴデバイス４００及びＩｏＴデバイス５００に通信モジュールとＳＩＭが組み込まれている。さらに、ＩｏＴデバイス４００とＩｏＴデバイス５００には、共通鍵Ｋｃ＿初期がプリセットされている。この場合、ＩｏＴデバイス４００、及びＩｏＴデバイス５００は、共通鍵Ｋｃ＿初期鍵を使用して相互認証を行う。相互認証の後、ＩｏＴデバイス４００は、共通鍵Ｋｃ＿ｇｅｎ＿ｅを生成し、共通鍵Ｋｃ＿初期で共通鍵Ｋｃ＿ｇｅｎ＿ｅを暗号化して、ＩｏＴデバイス５００へ送信することによって、共通鍵Ｋｃ＿ｇｅｎ＿ｅを共有できる。さらに、ＩｏＴデバイス４００を経由して、センタサーバ１００とＩｏＴデバイス５００との間で相互認証が行うことができる。このように構成することによって、通信システムに含まれるＩｏＴデバイスのセキュリティを向上させることができる。
【００６５】
（変形例）
本変形例に係る通信システムは、図４を適用できる。ただし、ＩｏＴデバイス４００は、ＩｏＴデバイス５００が送信したレスポンスＫｃ＿初期（乱数ｇ）を受信すると、レスポンスＫｃ＿初期（乱数ｇ）を検証し、レスポンスＫｃ＿初期（乱数ｇ）の検証が成功した場合には、ＳＩＭ４３０にプリセットされている共通鍵Ｋｃ＿初期で、鍵生成部４０６が生成した共通鍵Ｋｃ＿ｇｅｎを暗号化することによって、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ）を生成する。ＩｏＴデバイス４００は、生成したＫｃ＿初期（Ｋｃ＿ｇｅｎ）をＩｏＴデバイス５００へ、送信する。
ＩｏＴデバイス５００は、ＩｏＴデバイス４００が送信したＫｃ＿初期（Ｋｃ＿ｇｅｎ）を受信すると、プリセットされているＫｃ＿初期で、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ）を復号し、復号した結果であるＫｃ＿ｇｅｎを共通鍵にセットする。
【００６６】
＜通信システムの構成＞
変形例に係る通信システム２に含まれるセンタサーバ１００とＩｏＴデバイス４００とＩｏＴデバイス５００との構成は、図５を適用できる。ただし、ＩｏＴデバイス４００の認証部４０８は、通信部４０２からレスポンスＫｃ＿初期（乱数ｇ）を取得すると、検証部４１０に該レスポンスＫｃ＿初期（乱数ｇ）の検証を要求し、検証部４１０から検証が成功であることが通知された場合、ＩｏＴデバイス５００が正当であると判断する。認証部４０８は、ＩｏＴデバイス５００が正当であると判断した場合、共通鍵Ｋｃ＿初期で共通鍵Ｋｃ＿ｇｅｎを暗号化することによって、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ）を生成し、該Ｋｃ＿初期（Ｋｃ＿ｇｅｎ）を通信部４０２からＩｏＴデバイス５００へ送信する。
ＩｏＴデバイス５００の認証部５０８は、ＩｏＴデバイス４００が送信したＫｃ＿初期（Ｋｃ＿ｇｅｎ）を受信すると、記憶部５２０に記憶されている共通鍵Ｋｃ＿初期で、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ）を復号することによって、Ｋｃ＿ｇｅｎを取得する。認証部５０８は、Ｋｃ＿ｇｅｎを取得すると、該Ｋｃ＿ｇｅｎを共通鍵として設定する。
【００６７】
（通信システムの動作）
図７は、本変形例に係る通信システムの動作の一例を示すシーケンスチャートである。
ステップＳ７０２−Ｓ７１４は、図６のステップＳ６０２−Ｓ６１４を適用できる。
ステップＳ７１６では、ＩｏＴデバイス４００の認証部４０８は、検証部４１０から検証が成功したか否かを表す情報が通知されると、該情報が、認証が成功したことを示す場合に、ＳＩＭ４３０に記憶された共通鍵Ｋｃ＿初期で共通鍵Ｋｃ＿ｇｅｎを暗号化する。認証部４０８は、共通鍵Ｋｃ＿初期で共通鍵Ｋｃ＿ｇｅｎを暗号化した結果であるＫｃ＿初期（Ｋｃ＿ｇｅｎ）を、通信部４０２からＩｏＴデバイス５００へ送信する。
ステップＳ７１８では、ＩｏＴデバイス５００の通信部５０２は、ＩｏＴデバイス４００が送信したＫｃ＿初期（Ｋｃ＿ｇｅｎ）を受信する。ＩｏＴデバイス５００の認証部５０８は、Ｋｃ＿初期（Ｋｃ＿ｇｅｎ）を取得すると、記憶部５２０に記憶している共通鍵Ｋｃ＿初期で該Ｋｃ＿初期（Ｋｃ＿ｇｅｎ）を復号する。認証部５０８は、共通鍵Ｋｃ＿初期で該Ｋｃ＿初期（Ｋｃ＿ｇｅｎ）を復号した結果であるＫｃ＿ｇｅｎを、共通鍵として設定する。
ステップＳ７２０−Ｓ７３２は、図６のステップＳ６２２−Ｓ６３４を適用できる。ただし、ＩｏＴデバイス５００がセットした共通鍵Ｋｃ＿ｇｅｎを用いて、ＩｏＴデバイス４００を経由して、センタサーバ１００とＩｏＴデバイス５００との間で相互認証が行われる。
【００６８】
本変形例に係る通信システムでは、ＩｏＴデバイス４００にＩｏＴデバイス５００が従属し、ＩｏＴデバイス４００及びＩｏＴデバイス５００に通信モジュールとＳＩＭが組み込まれている。さらに、ＩｏＴデバイス４００とＩｏＴデバイス５００には、共通鍵Ｋｃ＿初期がプリセットされている。ＩｏＴデバイス４００は、該ＩｏＴデバイス４００のデバイスＩＤとマスター鍵とから共通鍵Ｋｃ＿ｇｅｎを生成する。ＩｏＴデバイス４００、及びＩｏＴデバイス５００は、共通鍵Ｋｃ＿初期鍵を使用して相互認証を行う。相互認証の後、ＩｏＴデバイス４００は、共通鍵Ｋｃ＿初期で共通鍵Ｋｃ＿ｇｅｎを暗号化して、ＩｏＴデバイス５００へ送信することによって、共通鍵Ｋｃ＿ｇｅｎを共有できる。さらに、ＩｏＴデバイス４００を経由して、センタサーバ１００とＩｏＴデバイス５００との間で相互認証が行うことができる。このように構成することによって、通信システムに含まれるＩｏＴデバイスのセキュリティを向上させることができる。
【００６９】
（第３の実施形態）
本実施形態に係る通信システムは、ルート認証局とセンタサーバとＩｏＴデバイスとを備える。ルート認証局とセンタサーバとＩｏＴデバイスとは、インターネット等の通信網を介して接続される。
本実施形態に係る通信システムは、プライベートなルート認証局が基点となり、センタサーバ、ＩｏＴデバイスにルート公開鍵証明書Ｋｐ＿ｒを設定する。また、センタサーバは、事前に公開鍵と秘密鍵のペアを生成しておき、プライベートなルート認証局からサーバ公開鍵証明書Ｋｐ＿ｓの発行を受けておく。
【００７０】
ＳＩＭの中にある認証局アプリとは、プライベートなルート認証局の秘密鍵を保持して、公開鍵証明書の発行処理を担うアプリであり、ルート認証局と同じ役割を果たす。
図８は、センタサーバ１００が発行する公開鍵証明書のフォームの一例を示す。図８に示される公開鍵証明書のフォームにおいて、「ｉｓｓｕｅ（発行者）」の欄にはＳＩＭのアプリ領域にある認証局アプリが記載される。また、「Ｓｕｂｊｅｃｔ（主体者）」の欄には公開鍵証明書の発行を受けるＩｏＴデバイス（ＳＩＭ所有者）を示す。
【００７１】
図９は、本実施形態に係る通信システムを示す図である。通信システム３は、ルート認証局６００とセンタサーバ７００とＩｏＴデバイス８００とを備える。
ＩｏＴデバイス８００は、ブルートゥース（登録商標）、ワイファイ（登録商標）、近距離無線通信技術等の無線通信技術で無線通信を行う無線デバイスを搭載する。また、センタサーバ７００にはルート公開鍵証明書Ｋｐ＿ｒとサーバ公開鍵証明書Ｋｐ＿ｓとサーバ秘密鍵Ｋｓ＿ｓとがプリセットされ、ＩｏＴデバイス８００にはルート公開鍵証明書Ｋｐ＿ｒがプリセットされる。また、ＩｏＴデバイス８００には、認証局アプリがインストールされる。
【００７２】
ＩｏＴデバイス８００が設置され、各種設定がされると、ＩｏＴデバイス８００は、ＧＷ公開鍵証明書Ｋｐ＿ｇと該ＧＷ公開鍵証明書Ｋｐ＿ｇとペアをなすＧＷ秘密鍵Ｋｓ＿ｇとを発行する。さらに、ＩｏＴデバイス８００は、チャレンジ（乱数ｇ）を生成し、生成したチャレンジ（乱数ｇ）とＧＷ公開鍵証明書Ｋｐ＿ｇとを、センタサーバ７００へ送信する。
センタサーバ７００は、ＩｏＴデバイス８００が送信したチャレンジ（乱数ｇ）とＧＷ公開鍵証明書Ｋｐ＿ｇとを受信すると、ルート公開鍵証明書Ｋｐ＿ｒを用いて、ＧＷ公開鍵証明書Ｋｐ＿ｇを検証する。センタサーバ７００は、ＧＷ公開鍵証明書Ｋｐ＿ｇの検証が成功した場合、サーバ秘密鍵Ｋｓ＿ｓで、チャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｓ＿ｓ（乱数ｇ）を生成する。また、センタサーバ７００は、チャレンジ（乱数ｓ）を生成し、生成したチャレンジ（乱数ｓ）とレスポンスＫｓ＿ｓ（乱数ｇ）とサーバ公開鍵証明書Ｋｐ＿ｓとをＩｏＴデバイス８００へ送信する。
【００７３】
ＩｏＴデバイス８００は、センタサーバ７００が送信したチャレンジ（乱数ｓ）とレスポンスＫｓ＿ｓ（乱数ｇ）とサーバ公開鍵証明書Ｋｐ＿ｓとを受信すると、ルート公開鍵証明書Ｋｐ＿ｒを用いて、サーバ公開鍵証明書Ｋｐ＿ｓを検証する。ＩｏＴデバイス８００は、サーバ公開鍵証明書Ｋｐ＿ｓの検証が成功した場合、該サーバ公開鍵証明書Ｋｐ＿ｓで、レスポンスＫｓ＿ｓ（乱数ｇ）を検証する。ＩｏＴデバイス８００は、レスポンスＫｓ＿ｓ（乱数ｇ）の検証が成功である場合、ＧＷ秘密鍵Ｋｓ＿ｇで、チャレンジ（乱数ｓ）を暗号化することによって、レスポンスＫｓ＿ｇ（乱数ｓ）を生成する。さらに、ＩｏＴデバイス８００は、レスポンスＫｓ＿ｇ（乱数ｓ）を、センタサーバ７００へ送信する。
センタサーバ７００は、ＩｏＴデバイス８００が送信したレスポンスＫｓ＿ｇ（乱数ｓ）を受信すると、ＩｏＴデバイス８００のＧＷ公開鍵Ｋｐ＿ｇで、該レスポンスＫｓ＿ｇを検証する。
【００７４】
＜通信システムの構成＞
図１０は、本実施形態に係る通信システム３に含まれるルート認証局６００とセンタサーバ７００とＩｏＴデバイス８００の構成の一例を示す。
（ルート認証局）
ルート認証局６００は、通信部６０２と制御部６０４と記憶部６２０と上記各構成要素を図１０に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン６５０とを備える。
【００７５】
通信部６０２は、通信モジュールによって実現される。通信部６０２は、通信網５０を経由して、センタサーバ７００、及びＩｏＴデバイス８００と通信を行う。通信部６０２は、センタサーバ７００が送信したサーバ公開鍵を受信する。また、通信部６０２は、センタサーバ７００へサーバ公開鍵証明書Ｋｐ＿ｓとルート公開鍵証明書Ｋｐ＿ｒとを送信する。また、通信部６０２は、ＩｏＴデバイス８００が送信したＧＷ公開鍵を受信する。また、通信部６０２は、ＩｏＴデバイス８００へＧＷ公開鍵証明書Ｋｐ＿ｇとルート公開鍵証明書Ｋｐ＿ｒを送信する。
【００７６】
制御部６０４は、例えばＣＰＵ等の演算処理装置によって構成され、記憶部６２０に記憶されたプログラム（図示なし）を実行することにより、生成部６０３として機能する。
生成部６０３は、記憶部６２０に記憶されているルート秘密鍵Ｋｓ＿ｒと、センタサーバ７００が送信したサーバ公開鍵を使用して、サーバ公開鍵証明書Ｋｐ＿ｓを生成する。生成部６０３は、通信部６０２からセンタサーバ７００へ、生成したサーバ公開鍵証明書Ｋｐ＿ｓを送信する。生成部６０３は、サーバ公開鍵証明書Ｋｐ＿ｓとともに、ルート公開鍵証明書Ｋｐ＿ｒを送信するようにしてもよい。
また、生成部６０３は、記憶部６２０に記憶されているルート秘密鍵Ｋｓ＿ｒとＩｏＴデバイス８００が送信したＧＷ公開鍵Ｋｐ＿ｇとを使用して、ＧＷ公開鍵証明書Ｋｐ＿ｇを生成する。生成部６０３は、通信部６０２からＩｏＴデバイス８００へ、生成したＧＷ公開鍵証明書Ｋｐ＿ｇを送信する。生成部６０３は、ＩｏＴデバイス公開鍵証明書Ｋｐ＿ｇとともに、ルート公開鍵証明書Ｋｐ＿ｒを送信するようにしてもよい。
記憶部６２０は、不揮発性メモリ等の記憶装置によって実現される。記憶部６２０は、ルート公開鍵証明書Ｋｐ＿ｒとルート秘密鍵Ｋｓ＿ｒとプログラム（図示なし）とを記憶する。
【００７７】
（センタサーバ）
センタサーバ７００は、通信部７０２と制御部７０４と記憶部７２０と上記各構成要素を図１０に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン７５０とを備える。
通信部７０２は、通信モジュールによって実現される。通信部７０２は、通信網５０を経由して、ルート認証局６００、及びＩｏＴデバイス８００と通信を行う。通信部７０２は、ＩｏＴデバイス８００が送信したチャレンジ（乱数ｇ）とＧＷ公開鍵証明書Ｋｐ＿ｇとを受信する。また、通信部７０２は、ＩｏＴデバイス８００へ、チャレンジ（乱数ｓ）とレスポンスＫｓ＿ｓ（乱数ｇ）とサーバ公開鍵証明書Ｋｐ＿ｓとを送信する。また、通信部７０２は、ＩｏＴデバイス８００が送信したレスポンスＫｓ＿ｇ（乱数ｓ）を受信する。
【００７８】
制御部７０４は、例えばＣＰＵ等の演算処理装置によって構成され、記憶部７２０に記憶されたプログラム７２４を実行することにより、鍵生成部７０６と認証部７０８と検証部７１０として機能する。
鍵生成部７０６は、サーバ公開鍵Ｋｐ＿ｓとサーバ秘密鍵Ｋｓ＿ｓのペアを生成する。鍵生成部７０６は、記憶部７２０に、サーバ秘密鍵Ｋｓ＿ｓを記憶する。
【００７９】
認証部７０８は、ＩｏＴデバイス８００の正当性を確認する。認証部７０８は、通信部７０２がチャレンジ（乱数ｇ）とＧＷ公開鍵証明書Ｋｐ＿ｇとを受信すると、該ＧＷ公開鍵証明書Ｋｐ＿ｇを取得する。認証部７０８は、ＧＷ公開鍵証明書Ｋｐ＿ｇを取得すると、検証部７１０に該ＧＷ公開鍵証明書Ｋｐ＿ｇの検証を要求する。認証部７０８は、検証部７１０から検証が成功であることが通知された場合、ＩｏＴデバイス８００が正当であると判断する。認証部７０８は、検証部７１０から検証が成功であることが通知された場合、サーバ秘密鍵Ｋｓ＿ｓでチャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｓ＿ｓ（乱数ｇ）を生成する。認証部７０８は、チャレンジ（乱数ｓ）を生成し、生成したチャレンジ（乱数ｓ）とレスポンスＫｓ＿ｓ（乱数ｇ）とサーバ公開鍵証明書Ｋｐ＿ｓとを、通信部７０２からＩｏＴデバイス８００へ送信する。
認証部７０８は、通信部７０２がレスポンスＫｓ＿ｇ（乱数ｓ）を受信すると、検証部２１０に該レスポンスＫｓ＿ｇ（乱数ｓ）の検証を要求する。認証部７０８は、検証部７１０から検証が成功であることが通知された場合、ＩｏＴデバイス８００が正当であると判断する。
【００８０】
検証部７１０は、認証部７０８からの要求に応じて、ルート公開鍵証明書Ｋｐ＿ｒを用いて、ＧＷ公開鍵証明書Ｋｐ＿ｇを検証する。検証部７１０は、該ＧＷ公開鍵証明書Ｋｐ＿ｇを検証すると、検証が成功したか否かを、認証部７０８へ通知する。
また、検証部７１０は、認証部７０８からの要求に応じて、ＧＷ公開鍵Ｋｐ＿ｇでレスポンスＫｓ＿ｇ（乱数ｓ）を検証する。検証部７１０は、該レスポンスＫｓ＿ｇ（乱数ｓ）を検証すると、検証が成功したか否かを、認証部７０８へ通知する。
記憶部７２０は、不揮発性メモリ等の記憶装置によって実現される。記憶部７２０は、ルート公開鍵証明書Ｋｐ＿ｒとサーバ公開鍵証明書Ｋｐ＿ｓとサーバ秘密鍵Ｋｓ＿ｓとプログラム７２４とを記憶する。
【００８１】
（ＩｏＴデバイス）
ＩｏＴデバイス８００は、通信部８０２と制御部８０４と記憶部８２０とＳＩＭ８３０と上記各構成要素を図１０に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン８５０とを備える。
通信部８０２は、通信モジュールによって実現される。通信部８０２は、通信網５０を経由して、ルート認証局６００、及びセンタサーバ７００と通信を行う。通信部８０２は、ＩｏＴデバイス８００が設置された際に、ルート認証局６００が発行したＧＷ公開鍵証明書Ｋｐ＿ｇを受信する。また、通信部８０２は、センタサーバ７００へ、チャレンジ（乱数ｇ）とＧＷ公開鍵証明書Ｋｐ＿ｇとを送信する。また、通信部８０２は、センタサーバ７００が送信したレスポンスＫｓ＿ｓ（乱数ｇ）とチャレンジ（乱数ｓ）とサーバ公開鍵証明書Ｋｐ＿ｓとを受信する。また、通信部８０２は、センタサーバ７００へ、レスポンスＫｓ＿ｇ（乱数ｓ）を送信する。
【００８２】
制御部８０４は、例えば演算処理装置によって構成され、記憶部８２０に記憶されたプログラム８２４を実行することにより、鍵生成部８０６と認証部８０８と検証部８１０として機能する。
鍵生成部８０６は、ＧＷ公開鍵Ｋｐ＿ｇと該ＧＷ公開鍵Ｋｐ＿ｇとペアとなるＧＷ秘密鍵Ｋｓ＿ｇとを生成する。鍵生成部８０６は、記憶部８２０へ、ＧＷ秘密鍵Ｋｓ＿ｇを記憶する。
【００８３】
認証部８０８は、センタサーバ７００の正当性を確認する。認証部８０８は、チャレンジ（乱数ｇ）を生成し、生成したチャレンジ（乱数ｇ）とＧＷ公開鍵証明書Ｋｐ＿ｇとを、通信部８０２からセンタサーバ７００へ送信する。認証部８０８は、センタサーバ７００が送信したレスポンスＫｓ＿ｓ（乱数ｇ）とチャレンジ（乱数ｓ）とサーバ公開鍵証明書Ｋｐ＿ｓとを受信すると、検証部８１０に該サーバ公開鍵証明書Ｋｐ＿ｓの検証を要求する。認証部８０８は、検証部８１０から検証が成功であることが通知された場合、センタサーバ７００が正当であると判断する。認証部８０８は、検証部８１０から検証が成功であることが通知された場合、ＧＷ秘密鍵Ｋｓ＿ｇでチャレンジ（乱数ｓ）を暗号化することによって、レスポンスＫｓ＿ｇ（乱数ｓ）を生成する。認証部８０８は、レスポンスＫｓ＿ｇ（乱数ｓ）を、通信部８０２からセンタサーバ７００へ送信する。
【００８４】
検証部８１０は、認証部８０８からの要求に応じて、ルート公開鍵証明書Ｋｐ＿ｒを用いて、サーバ公開鍵証明書Ｋｐ＿ｓを検証する。検証部８１０は、該サーバ公開鍵証明書Ｋｐ＿ｓを検証すると、検証が成功したか否かを、認証部８０８へ通知する。
記憶部８２０は、不揮発性メモリ等の記憶装置によって実現される。記憶部８２０は、ＩｏＴデバイス８００のデバイスＩＤ８２２とプログラム８２４とＧＷ秘密鍵Ｋｓ＿ｇとを記憶する。
ＳＩＭ８３０は、ＳＩＭ識別情報ｓｉｍｉｄ８００と認証局アプリ８３４とＲｏｏｔ公開鍵証明書Ｋｐ＿ｒとＲｏｏｔ公開鍵証明書Ｋｐ＿ｒとを記憶する。認証局アプリ８３４は、プライベートなルート認証局の秘密鍵を保持する。認証局アプリ８３４は、公開鍵証明書の発行処理を行うアプリであり、ルート認証局と同じ役割を果たす。
【００８５】
（通信システムの動作）
図１１は、本実施形態に係る通信システムの動作の一例を示すシーケンスチャートである。
ステップＳ１１０２では、ＩｏＴデバイス８００が設置され、各種設定が行われる。
ステップＳ１１０４では、ＩｏＴデバイス８００の鍵生成部８０６は、ＧＷ公開鍵とＧＷ秘密鍵Ｋｓ＿ｇとのペアを生成し、該ＧＷ秘密鍵Ｋｓ＿ｇを記憶部８２０に記憶する。また、ＩｏＴデバイス８００の認証部８０８は、ルート認証局６００が発行したＧＷ公開鍵証明書Ｋｐ＿ｇを取得する。
ステップＳ１１０６では、ＩｏＴデバイス８００の認証部８０８は、チャレンジ（乱数ｇ）を生成し、該チャレンジ（乱数ｇ）とＧＷ公開鍵証明書Ｋｐ＿ｇとを、通信部８０２からセンタサーバ７００へ送信する。
【００８６】
ステップＳ１１０８では、センタサーバ７００の通信部７０２は、ＩｏＴデバイス８００が送信したチャレンジ（乱数ｇ）とＧＷ公開鍵証明書Ｋｐ＿ｇとを受信する。センタサーバ７００の検証部７１０は、記憶部７２０に記憶されているルート公開鍵証明書Ｋｐ＿ｒを用いてＧＷ公開鍵証明書Ｋｐ＿ｇを検証する。ＧＷ公開鍵証明書Ｋｐ＿ｇの検証が失敗した場合、所定のエラー処理が行われる。ここでは、ＧＷ公開鍵証明書Ｋｐ＿ｇの検証が成功した場合について説明を続ける。
ステップＳ１１１０では、センタサーバ７００の認証部７０８は、検証部７１０から検証が成功したことが通知されると、サーバ秘密鍵Ｋｓ＿ｓでチャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｓ＿ｓ（乱数ｇ）を生成する。そして、認証部７０８は、チャレンジ（乱数ｓ）を生成し、該チャレンジ（乱数ｓ）とレスポンスＫｓ＿ｓ（乱数ｇ）とサーバ公開鍵証明書Ｋｐ＿ｓとを、通信部７０２からＩｏＴデバイス８００へ送信する。
【００８７】
ステップＳ１１１２では、ＩｏＴデバイス８００の通信部８０２は、センタサーバ７００が送信したチャレンジ（乱数ｓ）とレスポンスＫｓ＿ｓ（乱数ｇ）とサーバ公開鍵証明書Ｋｐ＿ｓとを受信する。ＩｏＴデバイス８００の検証部８１０は、ＳＩＭ８３０に記憶されているルート公開鍵証明書Ｋｐ＿ｒを用いてサーバ公開鍵証明書Ｋｐ＿ｓを検証する。サーバ公開鍵証明書Ｋｐ＿ｓの検証が失敗した場合、所定のエラー処理が行われる。ここでは、サーバ公開鍵証明書Ｋｐ＿ｓの検証が成功した場合について説明を続ける。ＩｏＴデバイス８００の認証部８０８は、検証部８１０から検証が成功したことが通知されると、記憶部８２０に記憶されているＧＷ秘密鍵Ｋｓ＿ｇでチャレンジ（乱数ｓ）を暗号化することによって、レスポンスＫｓ＿ｇ（乱数ｓ）を生成する。そして、認証部８０８は、該レスポンスＫｓ＿ｇ（乱数ｓ）を、通信部８０２からセンタサーバ７００へ送信する。
ステップＳ１１１６では、センタサーバ７００の検証部７１０は、ＧＷ公開鍵でレスポンスＫｓ＿ｇ（乱数ｓ）を検証する。検証部７１０は、該レスポンスＫｓ＿ｇ（乱数ｓ）を検証すると、検証が成功したか否かを、認証部７０８へ通知する。認証部７０８は、検証部７１０から検証が成功であることが通知された場合、ＩｏＴデバイス８００が正当であると判断する。
【００８８】
本実施形態に係る通信システムでは、プライベートなルート認証局６００が基点となり、センタサーバ７００、及びＩｏＴデバイス８００にルート公開鍵証明書Ｋｐ＿ｒを設定する。センタサーバ７００は、事前にサーバ公開鍵とサーバ秘密鍵のペアを生成し、ルート認証局６００からサーバ公開鍵証明書Ｋｐ＿ｓの発行を受けておく。ＩｏＴデバイス８００は、ＳＩＭに記憶されている認証局アプリからＧＷ公開鍵証明書Ｋｐ＿ｇの発行を受け、該ＧＷ公開鍵証明書Ｋｐ＿ｇを用いて、センタサーバ７００との間で相互認証を行う。このように構成することによって、通信システムに含まれるＩｏＴデバイスのセキュリティを向上させることができる。
【００８９】
＜第４の実施形態＞
＜通信システム＞
図１２は、本実施形態に係る通信システムを示す図である。通信システム４は、ルート認証局６００とセンタサーバ７００とＩｏＴデバイス９００とＩｏＴデバイス１０００とを備える。ルート認証局６００とセンタサーバ７００とＩｏＴデバイス９００とＩｏＴデバイス１０００とは、インターネット等の通信網５０を介して接続される。
ＩｏＴデバイス９００、及びＩｏＴデバイス１０００は、ブルートゥース（登録商標）、ワイファイ（登録商標）、近距離無線通信技術等の無線通信技術で無線通信を行う無線デバイスを搭載する。また、センタサーバ７００にはルート公開鍵証明書Ｋｐ＿ｒとサーバ公開鍵証明書Ｋｐ＿ｓとサーバ秘密鍵Ｋｓ＿ｓとがプリセットされ、ＩｏＴデバイス９００には共通鍵Ｋｃ＿初期とルート公開鍵証明書Ｋｐ＿ｒとがプリセットされ、ＩｏＴデバイス１０００には共通鍵Ｋｃ＿初期がプリセットされる。また、ＩｏＴデバイス９００及びＩｏＴデバイス１０００には、認証局アプリがインストールされる。
【００９０】
ＩｏＴデバイス９００が設置され、各種設定がされると、ＩｏＴデバイス９００は、ＧＷ公開鍵とＧＷ秘密鍵Ｋｓ＿ｇとのペアを生成する。そして、ＩｏＴデバイス９００は、ＧＷ公開鍵証明書Ｋｐ＿ｇを発行する。
ＩｏＴデバイス１０００は、エンド公開鍵Ｋｐ’＿ｅとエンド秘密鍵Ｋｓ＿ｅとのペアを生成する。ＩｏＴデバイス１０００は、チャレンジ（乱数ｅ）を生成すると、該チャレンジ（乱数ｅ）とエンド公開鍵Ｋｐ’＿ｅとを、ＩｏＴデバイス９００へ送信する。
ＩｏＴデバイス９００は、ＩｏＴデバイス１０００が送信したチャレンジ（乱数ｅ）とエンド公開鍵Ｋｐ’＿ｅとを受信すると、プリセットされている共通鍵Ｋｃ＿初期で、チャレンジ（乱数ｅ）を暗号化することによって、レスポンスＫｃ＿初期（乱数ｅ）を生成する。ＩｏＴデバイス９００は、チャレンジ（乱数ｇ）を生成し、該チャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とをＩｏＴデバイス１０００へ送信する。
【００９１】
ＩｏＴデバイス１０００は、ＩｏＴデバイス９００が送信したチャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを受信すると、プリセットされている共通鍵Ｋｃ＿初期を用いて、レスポンスＫｃ＿初期（乱数ｅ）を検証する。ＩｏＴデバイス１０００は、レスポンスＫｃ＿初期（乱数ｅ）の検証が成功した場合、共通鍵Ｋｃ＿初期でチャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｃ＿初期（乱数ｇ）を生成する。ＩｏＴデバイス１０００は、該レスポンスＫｃ＿初期（乱数ｇ）をＩｏＴデバイス９００へ送信する。
【００９２】
ＩｏＴデバイス９００は、ＩｏＴデバイス１０００が送信したレスポンスＫｃ＿初期（乱数ｇ）を受信すると、プリセットされている共通鍵Ｋｃ＿初期を用いて、該レスポンスＫｃ＿初期（乱数ｇ）を検証する。ＩｏＴデバイス９００は、レスポンスＫｃ＿初期（乱数ｇ）の検証が成功した場合、認証局アプリが管理するルート認証局の秘密鍵Ｋｓ＿ｒを用いて、エンド公開鍵証明書Ｋｐ＿ｅを発行し、プリセットされている共通鍵Ｋｃ＿初期で該エンド公開鍵証明書Ｋｐ＿ｅを暗号化することで、Ｋｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）+を生成する。ＩｏＴデバイス９００は、ＩｏＴデバイス１０００へ、Ｋｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を送信する。
【００９３】
＜通信システムの構成＞
図１３は、本実施形態に係る通信システム４に含まれるルート認証局６００とセンタサーバ７００とＩｏＴデバイス９００とＩｏＴデバイス１０００との構成の一例を示す。
【００９４】
（ＩｏＴデバイス）
ＩｏＴデバイス９００は、通信部９０２と制御部９０４と記憶部９２０とＳＩＭ９３０と上記各構成要素を図１３に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン９５０とを備える。
通信部９０２は、通信モジュールによって実現される。通信部９０２は、通信網５０を経由して、ルート認証局６００、センタサーバ７００、及びＩｏＴデバイス１０００と通信を行う。通信部９０２は、ＩｏＴデバイス９００が設置された際に、ルート認証局６００が発行したＧＷ公開鍵証明書Ｋｐ＿ｇを受信する。また、通信部９０２は、ＩｏＴデバイス１０００が送信したチャレンジ（乱数ｅ）とエンド公開鍵Ｋｐ‘＿ｅとを受信する。また、通信部９０２は、ＩｏＴデバイス１０００へ、チャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを送信する。また、通信部９０２は、ＩｏＴデバイス１０００が送信したレスポンスＫｃ＿初期（乱数ｇ）を受信する。また、通信部９０２は、ＩｏＴデバイス１０００へ、Ｋｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を送信する。
また、通信部９０２は、センタサーバ７００へ、チャレンジ（乱数ｇ）とＧＷ公開鍵証明書Ｋｐ＿ｇとを送信する。また、通信部９０２は、センタサーバ７００が送信したレスポンスＫｓ＿ｓ（乱数ｇ）とチャレンジ（乱数ｓ）とサーバ公開鍵証明書Ｋｐ＿ｓとを受信する。また、通信部９０２は、センタサーバ７００へ、レスポンスＫｓ＿ｇ（乱数ｓ）を送信する。
【００９５】
制御部９０４は、例えば演算処理装置によって構成され、記憶部９２０に記憶されたプログラム９２４を実行することにより、鍵生成部９０６と認証部９０８と検証部９１０として機能する。
鍵生成部９０６は、鍵生成部８０６の機能に加えて、以下の機能を有する。鍵生成部９０６は、ＧＷ公開鍵とＧＷ秘密鍵Ｋｓ＿ｇのペアを生成する。鍵生成部９０６は、記憶部９２０へ、ＧＷ秘密鍵Ｋｓ＿ｇを記憶する。
【００９６】
認証部９０８は、認証部８０８の機能に加えて、以下の機能を有する。認証部９０８は、ＩｏＴデバイス１０００とセンタサーバ７００との正当性を確認する。認証部９０８は、ＩｏＴデバイス１０００が送信したチャレンジ（乱数ｅ）とエンド公開鍵Ｋｐ’ｅとを取得すると、ＳＩＭ９３０にプリセットされている共通鍵Ｋｃ＿初期を用いて、チャレンジ（乱数ｅ）を暗号化することによって、レスポンスＫｃ＿初期（乱数ｅ）を生成する。認証部９０８は、チャレンジ（乱数ｇ）を生成すると、該チャレンジ（乱数（ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを、通信部９０２からＩｏＴデバイス１０００へ送信する。
認証部９０８は、ＩｏＴデバイス１０００が送信したレスポンスＫｃ＿初期（乱数ｇ）を取得すると、検証部９１０に該レスポンスＫｃ＿初期（乱数ｇ）の検証を要求する。認証部９０８は、検証部９１０から検証が成功であることが通知された場合、ＩｏＴデバイス１０００が正当であると判断する。認証部９０８は、検証部９１０から検証が成功であることが通知された場合、認証局アプリ９３４が作成したエンド公開鍵証明書Ｋｐ＿ｅを取得する。認証部９０８は、共通鍵Ｋｃ＿初期でエンド公開鍵証明書Ｋｐ＿ｅを暗号化することによって、Ｋｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を生成する。認証部９０８は、Ｋｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を、通信部９０２からＩｏＴデバイス１０００へ送信する。
【００９７】
認証部９０８は、チャレンジ（乱数ｇ）を生成し、生成したチャレンジ（乱数ｇ）とＧＷ公開鍵証明書Ｋｐ＿ｇとを、通信部９０２からセンタサーバ７００へ送信する。
認証部９０８は、センタサーバ７００が送信したレスポンスＫｓ＿ｓ（乱数ｇ）とチャレンジ（乱数ｓ）とサーバ公開鍵証明書Ｋｐ＿ｓとを取得すると、検証部９１０に該サーバ公開鍵証明書Ｋｐ＿ｓの検証を要求する。認証部９０８は、検証部９１０から検証が成功であることが通知された場合、センタサーバ７００が正当であると判断する。認証部９０８は、検証部９１０から検証が成功であることが通知された場合、ＧＷ秘密鍵Ｋｓ＿ｇでチャレンジ（乱数ｓ）を暗号化することで、レスポンスＫｓ＿ｇ（乱数ｓ）を生成する。認証部９０８は、レスポンスＫｓ＿ｇ（乱数ｓ）を、通信部９０２からセンタサーバ７００へ送信する。
【００９８】
検証部９１０は、検証部９１０の機能に加えて、以下の機能を有する。検証部９１０は、認証部９０８からの要求に応じて、ＳＩＭ９３０にプリセットされている共通鍵Ｋｃ＿初期を用いて、レスポンスＫｃ＿初期（乱数ｇ）を検証する。検証部９１０は、該レスポンスＫｃ＿初期（乱数ｇ）を検証すると、検証が成功したか否かを、認証部９０８へ通知する。
検証部９１０は、認証部９０８からの要求に応じて、サーバ公開鍵を用いて、レスポンスＫｓ＿ｓ（乱数ｇ）を検証する。検証部９１０は、該レスポンスＫｓ＿ｓ（乱数ｇ）を検証すると、検証が成功したか否かを、認証部９０８へ通知する。
検証部９１０は、認証部９０８からの要求に応じて、ルート公開鍵証明書Ｋｐ＿ｒを用いて、サーバ公開鍵証明書Ｋｐ＿ｓを検証する。検証部９１０は、該サーバ公開鍵証明書Ｋｐ＿ｓを検証すると、検証が成功したか否かを、認証部９０８へ通知する。
【００９９】
記憶部９２０は、不揮発性メモリ等の記憶装置によって実現される。記憶部９２０は、ＩｏＴデバイス９００のデバイスＩＤ９２２とプログラム９２４とＧＷ秘密鍵Ｋｓ＿ｇとを記憶する。
ＳＩＭ９３０は、ＳＩＭ識別情報ｓｉｍｉｄ９００と認証局アプリ９３４とＲｏｏｔ公開鍵証明書Ｋｐ＿ｒと共通鍵Ｋｃ＿初期とを記憶する。認証局アプリ９３４は、プライベートなルート認証局の秘密鍵を保持する。認証局アプリ９３４は、公開鍵証明書の発行処理を行うアプリであり、ルート認証局と同じ役割を果たす。具体的には、認証局アプリ９３４は、該認証局アプリが管理するルート認証局６００の秘密鍵Ｋｓ＿ｒを用いて、エンド公開鍵証明書Ｋｐ＿ｅを発行する。認証局アプリ９３４は、エンド公開鍵証明書Ｋｐ＿ｅを発行すると、該エンド公開鍵証明書Ｋｐ＿ｅを認証部９０８へ出力する。
【０１００】
（ＩｏＴデバイス）
ＩｏＴデバイス１０００は、通信部１００２と制御部１００４と記憶部１０２０とＳＩＭ１０３０と上記各構成要素を図１３に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン１０５０とを備える。
通信部１００２は、通信モジュールによって実現される。通信部１００２は、通信網５０を経由して、ルート認証局６００、センタサーバ７００、及びＩｏＴデバイス９００と通信を行う。また、通信部１００２は、通信網５０を経由せずに、例えば、ワイファイ（登録商標）、ブルートゥース（登録商標）等の近距離無線通信技術によって、ＩｏＴデバイス９００と直接通信を行う。通信部１００２は、ＩｏＴデバイス９００へ、チャレンジ（乱数ｅ）とエンド公開鍵Ｋｐ’＿ｅとを送信する。また、通信部１００２は、ＩｏＴデバイス９００が送信したチャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを受信する。また、通信部１００２は、ＩｏＴデバイス９００へ、レスポンスＫｃ＿初期（乱数ｇ）を送信する。また、通信部１００２は、ＩｏＴデバイス９００が送信したＫｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を受信する。
【０１０１】
制御部１００４は、例えば演算処理装置によって構成され、記憶部１０２０に記憶されたプログラム１０２４を実行することにより、鍵生成部１００６と認証部１００８と検証部１０１０として機能する。
鍵生成部１００６は、鍵生成部８０６の機能に加えて、以下の機能を有する。鍵生成部８０６は、エンド公開鍵Ｋｐ’＿ｅとエンド秘密鍵Ｋｓ＿ｅのペアを生成する。鍵生成部１００６は、記憶部１０２０へ、エンド秘密鍵Ｋｓ＿ｅを記憶する。
【０１０２】
認証部１００８は、認証部８０８の機能に加えて、以下の機能を有する。認証部１００８は、ＩｏＴデバイス９００とセンタサーバ７００との正当性を確認する。
認証部１００８は、チャレンジ（乱数ｅ）を生成し、生成したチャレンジ（乱数ｅ）とエンド公開鍵Ｋｐ’＿ｅとを、通信部１００２からＩｏＴデバイス９００へ送信する。
また、認証部１００８は、ＩｏＴデバイス９００が送信したチャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを取得すると、検証部１０１０に該レスポンスＫｃ＿初期（乱数ｅ）の検証を要求する。認証部１００８は、検証部１０１０から検証が成功であることが通知された場合、ＩｏＴデバイス９００が正当であると判断する。認証部１００８は、検証部１０１０から検証が成功であることが通知された場合、記憶部１０２０にプリセットされている共通鍵Ｋｃ＿初期を用いて、チャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｃ＿初期（乱数ｇ）を生成する。認証部１００８は、レスポンスＫｃ＿初期（乱数ｇ）を、通信部１００２からＩｏＴデバイス９００へ送信する。
認証部１００８は、ＩｏＴデバイス９００が送信したＫｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を取得すると、記憶部１０２０に記憶されている共通鍵Ｋｃ＿初期で該Ｋｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を復号することによって、エンド公開鍵証明書Ｋｐ＿ｅを取得する。
【０１０３】
検証部１０１０は、検証部８１０の機能に加えて、以下の機能を有する。検証部１０１０１は、認証部１００８からの要求に応じて、記憶部１０２０にプリセットされている共通鍵Ｋｃ＿初期を用いて、レスポンスＫｃ＿初期（乱数ｅ）を検証する。検証部１０１０は、該レスポンスＫｃ＿初期（乱数ｅ）を検証すると、検証が成功したか否かを、認証部１００８へ通知する。
記憶部１０２０は、不揮発性メモリ等の記憶装置によって実現される。記憶部１０２０は、ＩｏＴデバイス１０００のデバイスＩＤ１０２２と共通鍵Ｋｃ＿初期とプログラム１０２４とエンド秘密鍵Ｋｓ＿ｅとを記憶する。
ＳＩＭ１０３０は、ＳＩＭ識別情報ｓｉｍｉｄ１０００と認証局アプリ１０３４とルート公開鍵証明書Ｋｐ＿ｒとを記憶する。
【０１０４】
（通信システムの動作）
図１４は、本実施形態に係る通信システムの動作の一例を示すシーケンスチャートである。
ステップＳ１４０２では、ＩｏＴデバイス９００が設置され、各種設定が行われる。
ステップＳ１４０４では、ＩｏＴデバイス９００の鍵生成部９０６は、ＧＷ公開鍵とＧＷ秘密鍵Ｋｓ＿ｇとのペアを生成する。認証局アプリ９３４は、ＧＷ公開鍵に対するＧＷ公開鍵証明書Ｋｐ＿ｇを生成する。
ステップＳ１４０６では、ＩｏＴデバイス１０００の鍵生成部１００６は、エンド公開鍵Ｋｐ’＿ｅとエンド秘密鍵Ｋｓ＿ｅのペアを生成する。
ステップＳ１４０８では、ＩｏＴデバイス１０００の認証部１００８は、チャレンジ（乱数ｅ）を生成し、該チャレンジ（乱数ｅ）とエンド公開鍵Ｋｐ’＿ｅとを、通信部１００２からＩｏＴデバイス９００へ送信する。
【０１０５】
ステップＳ１４１０では、ＩｏＴデバイス９００の認証部９０８は、ＳＩＭ９３０にプリセットされている共通鍵Ｋｃ＿初期で、チャレンジ（乱数ｅ）を暗号化することで、レスポンスＫｃ＿初期（乱数ｅ）を生成する。認証部９０８は、チャレンジ（乱数ｇ）を生成すると、該チャレンジ（乱数ｇ）とレスポンスＫｃ＿初期（乱数ｅ）とを通信部９０２からＩｏＴデバイス１０００へ送信する。
ステップＳ１４１２では、ＩｏＴデバイス１０００の検証部１０１０は、記憶部１０２０に記憶されている共通鍵Ｋｃ＿初期を用いて、レスポンスＫｃ＿初期（乱数ｅ）を検証する。レスポンスＫｃ＿初期（乱数ｅ）の検証が失敗した場合、所定のエラー処理が行われる。ここでは、検証が成功した場合について説明を続ける。
ステップＳ１４１４では、認証部１００８は、記憶部１０２０に記憶されている共通鍵Ｋｃ＿初期で、チャレンジ（乱数ｇ）を暗号化することによって、レスポンスＫｃ＿初期（乱数ｇ）を生成する。認証部１００８は、該レスポンスＫｃ＿初期（乱数ｇ）を、通信部１００２からＩｏＴデバイス９００へ送信する。
【０１０６】
ステップＳ１４１６では、ＩｏＴデバイス９００の通信部９０２は、ＩｏＴデバイス１０００が送信したレスポンスＫｃ＿初期（乱数ｇ）を受信する。ＩｏＴデバイス９００の検証部９１０は、ＳＩＭ９３０に記憶されている共通鍵Ｋｃ＿初期を用いて、該レスポンスＫｃ＿初期（乱数ｇ）を検証する。レスポンスＫｃ＿初期（乱数ｇ）の検証が失敗した場合、所定のエラー処理が行われる。ここでは、レスポンスＫｃ＿初期（乱数ｇ）の検証が成功した場合について説明を続ける。
ステップＳ１４１８では、ＩｏＴデバイス９００の認証局アプリ９３４は、ルート認証局のルート秘密鍵Ｋｓ＿ｒを用いて、エンド公開鍵証明書Ｋｐ＿ｅを発行する。
ステップＳ１４２０では、ＩｏＴデバイス９００の認証部９０８は、ＳＩＭ９３０に記憶されている共通鍵Ｋｃ＿初期で、エンド公開鍵証明書Ｋｐ＿ｅを暗号化することによって、Ｋｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を生成する。ＩｏＴデバイス９００の認証部９０８は、Ｋｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を、通信部９０２からＩｏＴデバイス１０００へ送信する。
【０１０７】
ステップＳ１４２２では、ＩｏＴデバイス１０００の通信部１００２は、ＩｏＴデバイス９００が送信したＫｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を受信する。認証部１００８は、記憶部１０２０に記憶された共通鍵Ｋｃ＿初期を用いて、Ｋｃ＿初期（エンド公開鍵証明書Ｋｐ＿ｅ）を復号することによって、エンド公開鍵証明書Ｋｐ＿ｅを取得する。
ステップＳ１４２４−Ｓ１４３６は、図１１のステップＳ１１０６−Ｓ１１１４を適用できる。ただし、ＩｏＴデバイス１０００が取得したエンド公開鍵証明書Ｋｐ＿ｅを用いて、ＩｏＴデバイス９００を経由して、センタサーバ７００とＩｏＴデバイス１０００との間で相互認証が行われる。この相互認証によって、センタサーバ７００とＩｏＴデバイス１０００との間で公開鍵証明書が交換された後、センタサーバ７００とＩｏＴデバイス１０００との間で、通信網５０を経由して、通信を行う。
ＩｏＴデバイス１０００は、公開鍵証明書を交換したデバイスとのみ通信ができる。このように構成することによって、ＩｏＴデバイス１０００が、ＤＤｏｓ攻撃の踏み台にされないようにできる。
【０１０８】
本実施形態に係る通信システムでは、ＩｏＴデバイス９００にＩｏＴデバイス１０００が従属し、ＩｏＴデバイス９００及びＩｏＴデバイス１０００に通信モジュールとＳＩＭが組み込まれる。さらに、ＩｏＴデバイス９００とＩｏＴデバイス１０００には、共通鍵Ｋｃ＿初期がプリセットされて、該共通鍵Ｋｃ＿初期を用いて相互認証を行う。相互認証を行った後、ＩｏＴデバイス９００は、ＩｏＴデバイス１０００へエンド公開鍵証明書Ｋｐ＿ｅを発行する。このように構成することによって、通信システムに含まれるＩｏＴデバイスのセキュリティを向上させることができる。
【０１０９】
（第４の実施形態の変形例（その１））
第４の実施形態の変形例に係る通信システムは、図１２を適用できる。ただし、ＩｏＴデバイス９００とＩｏＴデバイス１０００との間の認証や暗号通信は共通鍵方式で行われ、センタサーバ７００とＩｏＴデバイス９００との間の認証や暗号通信は公開鍵方式で行われる。
ＩｏＴデバイス１０００は、前述したＩｏＴ５００を適用できる。
【０１１０】
（通信システムの動作）
図１５は、本変形例に係る通信システムの動作の一例を示すシーケンスチャートである。
ステップＳ１５０２では、ＩｏＴデバイス９００が設置され、各種設定が行われる。管理サーバ３００は、ＩｏＴデバイス９００へ、該ＩｏＴデバイス９００のデバイスＩＤ９２２を通知する。ＩｏＴデバイス９００の記憶部９２０は、管理サーバ３００が送信したデバイスＩＤ９２２を記憶する。
ステップＳ１５０４は、前述したステップＳ１４０４を適用できる。
ステップＳ１５０６−Ｓ１５２０は、前述したステップＳ６０６−Ｓ６２０を適用できる。
ステップＳ１５２２−Ｓ１５３２は、前述したステップＳ１４２４−Ｓ１４３４を適用できる。
本変形例によれば、ＩｏＴデバイス９００とＩｏＴデバイス１０００との間の認証や暗号通信を共通鍵方式で行うことによって、ＩｏＴデバイス９００の処理負荷を低減できる。
【０１１１】
（第４の実施形態の変形例（その２））
第４の実施形態の変形例に係る通信システムは、図１２を適用できる。ただし、ＩｏＴデバイス１０００は、ＩｏＴデバイス９００が生成した共通鍵を使用する。
ＩｏＴデバイス１０００は、前述したＩｏＴ５００を適用できる。
【０１１２】
（通信システムの動作）
図１６は、本変形例に係る通信システムの動作の一例を示すシーケンスチャートである。
ステップＳ１６０２は、前述したステップＳ１５０２を適用できる。
ステップＳ１６０４では、ＩｏＴデバイス９００の鍵生成部９０６は、ＧＷ公開鍵Ｋｐ＿ｇとＧＷ秘密鍵Ｋｓ＿ｇとのペアを生成する。認証局アプリ９３４は、ＧＷ公開鍵Ｋｐ＿ｇに対するＧＷ公開鍵証明書Ｋｐ＿ｇを生成する。さらに、鍵生成部９０６は、ＳＩＭ９３０に記憶されている共通鍵Ｋｃ＿初期と記憶部９２０に記憶されているデバイスＩＤ９２２とに基づいて共通鍵Ｋｃ＿ｇｅｎを生成する。
ステップＳ１６０６−Ｓ１６１４は、前述したステップＳ６０６−Ｓ６１４を適用できる。
ステップＳ１６１６−Ｓ１６１８は、前述したステップＳ７１６−Ｓ７１８を適用できる。
ステップＳ１６２０−Ｓ１６３０は、前述したステップＳ１４２４−Ｓ１４３４を適用できる。
本変形例によれば、ＩｏＴデバイス９００とＩｏＴデバイス１０００との間で相互認証が成功した後に、ＩｏＴデバイス９００が生成した共通鍵を、ＩｏＴデバイス１０００へ配布することができる。
【０１１３】
前述した実施形態及び変形例において、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔや認証局アプリは、ＳＩＭの製造段階でプリセットするか、アプリ領域へオーバーザエアー（Over the Air）で送り込んでもよい。
前述した実施形態及び変形例では、ＩｏＴデバイスが通信網に無線接続される場合について説明したが、この例に限られない。例えば、ＩｏＴデバイスが通信網に有線接続されてもよい。
前述した実施形態及び変形例では、鍵生成部がマスター鍵ＭａｓｔｅｒＳｅｃｒｅｔとデバイスＩＤとＣＭＡＣ生成用に用いる鍵を指示する識別情報との連結データを入力値に使用してハッシュ値を算出し、算出したハッシュ値を共通鍵Ｋｃ＿ｇｅｎに使用する場合について説明したがこの例に限られない。例えば、鍵生成部１０６は、マスター鍵ＭａｓｔｅｒＳｅｃｒｅｔとデバイスＩＤとＣＭＡＣ生成用に用いる鍵を指す識別情報との連結データを入力値に使用して排他的論理和演算を実行し、演算結果の値「マスター鍵  ｘｏｒ  デバイスＩＤ  ｘｏｒ  ＣＭＡＣ生成用に用いる鍵を指す識別子」を共通鍵に使用する。但し、「Ａ  ｘｏｒ  Ｂ  ｘｏｒ  Ｃ」はＡとＢとＣの排他的論理和である。
【０１１４】
前述した実施形態及び変形例によれば、多種多様で膨大な数にのぼるＩｏＴデバイスに対して、簡易で堅牢な鍵管理によって、認証や署名を行うことができる。特に、非力なＩｏＴデバイスについても共通鍵ベースの処理を適用することができる。また、非力なＩｏＴデバイスについても公開鍵証明書の発行も容易になる。
前述した実施形態及び変形例は、各種センサー、家電製品等がネットワークに繋がる際に、暗号通信や認証、署名検証に用いる鍵管理方式に広く適用できる。
【０１１５】
以上、本発明の実施形態及びその変形例を説明したが、これらの実施形態及びその変形例は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態及びその変形例は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、組合せを行うことができる。これら実施形態及びその変形例は、発明の範囲や要旨に含まれると同時に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【０１１６】
なお、前述のセンタサーバ、ＩｏＴデバイス、管理サーバ、及びルート認証局は内部にコンピュータを有している。そして、前述した各装置の各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。
さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【０１１７】
前述した実施形態において、ＩｏＴデバイスは通信装置、第１の通信装置、及び第２の通信装置の一例であり、デバイスＩＤは通信装置の識別情報、第１の通信装置の識別情報、及び第２の通信装置の識別情報の一例であり、共通鍵Ｋｃ＿ｇｅｎは第１の共通鍵の一例であり、鍵種別ＩＤは生成する鍵を識別する情報の一例であり、共通鍵Ｋｃ_初期は第２の共通鍵の一例であり、共通鍵Ｋｃ_ｇｅｎ＿ｅは第３の共通鍵の一例であり、ＧＷ公開鍵は第１の通信装置公開鍵の一例であり、ＧＷ秘密鍵は第１の通信装置秘密鍵の一例であり、ＧＷ公開鍵証明書は第１の通信装置公開鍵証明書であり、エンド公開鍵は第２の通信装置公開鍵の一例であり、エンド秘密鍵は第２の通信装置秘密鍵の一例であり、エンド公開鍵証明書は第２の通信装置公開鍵証明書である。
【符号の説明】
【０１１８】
５０…通信網、１００、７００…センタサーバ、１０２、２０２、４０２、５０２、６０２、７０２、８０２、９０２、１００２…通信部、１０４、２０４、４０４、５０４、６０４、７０４、８０４、９０４、１００４…制御部、１０６、２０６、４０６、７０６、８０６、９０６、１００６…鍵生成部、１０８、２０８、４０８、５０８、７０８、８０８、９０８、１００８…認証部、１１０、２１０、４１０、５１０、７１０、８１０、９１０、１０１０…検証部、１２０、２２０、４２０、５２０、６２０、７２０、８２０、９２０、１０２０…記憶部、１２４、２２４、４２４、５２４、７２４、８２４、９２４、１０２４…プログラム、１５０、２５０、４５０、５５０、７５０、８５０、９５０、１０５０…バスライン、２００、４００、５００、８００、９００、１０００…ＩｏＴデバイス、３００…管理サーバ、２２２、４２２、８２２、９２２、１０２２…デバイスＩＤ、２３０、４３０、８３０、９３０…ＳＩＭ、２３２…鍵種別ＩＤ、６００…ルート認証局、６０３…生成部、８３４、９３４…認証局アプリ
【図１】
2018082353.tif 000003
【図２】
2018082353.tif 000004
【図３】
2018082353.tif 000005
【図４】
2018082353.tif 000006
【図５】
2018082353.tif 000007
【図６】
2018082353.tif 000008
【図７】
2018082353.tif 000009
【図８】
2018082353.tif 000010
【図９】
2018082353.tif 000011
【図１０】
2018082353.tif 000012
【図１１】
2018082353.tif 000013
【図１２】
2018082353.tif 000014
【図１３】
2018082353.tif 000015
【図１４】
2018082353.tif 000016
【図１５】
2018082353.tif 000017
【図１６】
2018082353.tif 000018