(57)【特許請求の範囲】
【請求項１】
データの暗号化又は復号化に用いる暗号鍵であって、所定のタイミングで順次更新され
る複数の暗号鍵の情報と、前記暗号鍵の更新順序及び現在暗号化に用いるべき現鍵がいず
れであるかを示す情報を含む世代情報と、を記憶する記憶部と、
データ送信時には、前記世代情報を参照して前記複数の暗号鍵から前記現鍵を抽出し、
抽出した前記現鍵用いて送信データに暗号処理を実行し、暗号化に用いた前記現鍵の識別
情報を送信データに付して通信パケットを生成して他の装置へ送信する処理と、
データ受信時には、受信した通信パケットから暗号化に用いた暗号鍵の識別情報を抽出
し、当該識別情報が示す暗号鍵が、前記現鍵から所定の更新回数前まで、あるいは、所定
の更新回数後までの範囲内の暗号鍵であるか前記世代情報を参照して判別し、範囲内であ
った場合に当該暗号鍵を用いて受信データを復号化する処理と、を実行する処理部と、を
備え、
前記世代情報には、前回の暗号鍵更新時まで暗号化に用いていた旧鍵及び次回の暗号鍵
更新後に暗号化に用いる次鍵がいずれであるかを示す情報が含まれ、
前記処理部は、自装置内の内部時計を基準として、使用していない前記暗号鍵を新規に
前記次鍵に割り当てて暗号鍵の更新を行い、
前記受信データの暗号化に用いた暗号鍵が、前記旧鍵または前記次鍵であった場合には、前記受信データの受信時刻に基づいて自装置内の前記内部時計を補正することを特徴とする鍵管理装置。
【請求項２】
請求項１に記載の鍵管理装置において、
前記暗号鍵の情報は、通信を行う他の装置と共有化されており、暗号化に用いる暗号化
鍵と、復号化に用いる復号鍵とが対応付けて記憶されることを特徴とする鍵管理装置。
【請求項３】
請求項１に記載の鍵管理装置において、
受信データの暗号化に用いた暗号鍵が、前記次鍵であった場合には自装置の前記暗号鍵
の更新を実行することを特徴とする鍵管理装置。
【請求項４】
請求項１に記載の鍵管理装置において
前記旧鍵には、有効期限が定められており、受信データの暗号化に用いた暗号鍵が前記
旧鍵であった場合には、さらに前記旧鍵が前記有効期限内であった場合に当該暗号鍵を用
いて受信データを復号化することを特徴とする鍵管理装置。
【請求項５】
請求項４に記載の鍵管理装置において
前記暗号鍵の更新によって、前記現鍵が前記旧鍵へ割当てられると所定の前記有効期限
を当該旧鍵へ定めることを特徴とする鍵管理装置。
【請求項６】
請求項４に記載の鍵管理装置において、
規定台数以上の装置から、前記現鍵を用いて暗号された受信データを受信した場合には
、前記旧鍵による復号を無効化することを特徴とする鍵管理装置。
【請求項７】
請求項１に記載の鍵管理装置において、
前記次鍵は、次回の鍵更新予定時刻より一定時間前から、次回の鍵更新予定時刻までの
時間帯に限り復号する権限が与えられ、
前記一定時間は、当該鍵管理装置を含むネットワークやシステムの構成情報、またはシ
ステムの処理実行周期から決定されることを特徴とする鍵管理装置。
【請求項８】
請求項７に記載の鍵管理装置において、
前記次鍵は、次回の鍵更新予定時刻より特定の時間前から、次回の鍵更新予定時刻まで
の時間帯に限り復号権限が与えられ、
前記特定の時間は、前回の鍵更新処理完了時の時刻と、その後最初に前記次鍵で復号可
能な通信パケットを受信した時刻との差から、決定されることを特徴とする鍵管理装置。
【請求項９】
請求項８に記載の鍵管理装置において、
前記次鍵は、次回の鍵更新予定時刻より特定の時間前から、次回の鍵更新予定時刻まで
の時間帯に限り復号権限が与えられ、
前記特定の時間は、前回の鍵更新処理完了時の時刻と、その後最初に前記次鍵で復号可
能な通信パケットを受信した時刻との差から、次回鍵更新時において、次鍵で復号可能な
通信パケットを受信する時刻を割り出し、当該時刻と次回の鍵更新予定時刻の時間差分が
、現在設定されている前記特定の時間より短い場合に限り、前記時間差分を前記特定の時
間として設定することを特徴とする鍵管理装置。
【請求項１０】
データの暗号化又は復号化に用いる暗号鍵であって、所定のタイミングで順次更新され
る複数の暗号鍵の情報と、前記暗号鍵の更新順序及び現在暗号化に用いるべき現鍵がいず
れであるかを示す情報を含む世代情報と、を用いて、
データ送信時には、前記世代情報を参照して前記複数の暗号鍵から前記現鍵を抽出し、
抽出した前記現鍵用いて送信データに暗号処理を実行し、暗号化に用いた前記現鍵の識別
情報を送信データに付して通信パケットを生成して他の装置へ送信する処理と、
データ受信時には、受信した通信パケットから暗号化に用いた暗号鍵の識別情報を抽出
し、当該識別情報が示す暗号鍵が、前記現鍵から所定の更新回数前まで、あるいは、所定
の更新回数後までの範囲内の暗号鍵であるか前記世代情報を参照して判別し、範囲内であ
った場合に当該暗号鍵を用いて受信データを復号化する処理と、を行い、
前記世代情報には、前回の暗号鍵更新時まで暗号化に用いていた旧鍵及び次回の暗号鍵
更新後に暗号化に用いる次鍵がいずれであるかを示す情報が含まれ、
自装置内の内部時計を基準として、使用していない前記暗号鍵を新規に前記次鍵に割り
当てて暗号鍵の更新を行い、
前記受信データの暗号化に用いた暗号鍵が、前記旧鍵または前記次鍵であった場合には
、前記受信データの受信時刻に基づいて自装置内の前記内部時計を補正することを特徴とする鍵管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム、および制御システムを構成するコンポーネント向けのセキュリティ技術に関する。
【背景技術】
【０００２】
情報処理装置向けセキュリティ技術として、鍵管理技術がある。
【０００３】
暗号処理やデジタル署名など暗号技術は、各端末が保持する鍵によって実現される。この鍵は、暗号アルゴリズムの手続きを制御するデータであり、各端末やネットワークグループ毎で秘密に共有される。
【０００４】
各端末は、端末間で共通の暗号アルゴリズムと秘密に共有された鍵によって、データの暗号化や復号、デジタル署名の作成や検証などを実現でき、結果的に各端末やシステムのセキュリティを向上化できる。
【０００５】
一方、鍵は適切に管理されなければ、これらセキュリティ技術の安全性が低下する恐れがある。
【０００６】
一つの暗号鍵を長期間使用していると、何らかの手段で悪意ある第三者に鍵を解読されるリスクが高くなり、セキュリティ低下に繋がる。すなわち、高い安全性を維持するためには、定期的に鍵を更新する必要がある。その一方、鍵の更新を含めた鍵管理を人手で実施することは、管理コストが増大する原因となる。
【０００７】
したがって、鍵を自動的かつ定期的に更新する鍵管理技術が必要となる。
【０００８】
近年、電力やガスなどのインフラを支える産業制御システムや、システムを構成する制御サーバやコントローラなどの制御装置(以下、装置)において、セキュリティ対策が注目されている。
【０００９】
たとえば、特定装置を制御するパケットが、悪意ある第三者により改ざんされ、意図しない制御処理をその装置が実行する恐れがある。このような脅威に対応するため、制御システムにおいても、セキュリティ技術が求められる。
【００１０】
一方、従来の制御システムやシステムを構成する装置は、セキュリティ対策を意図した設計をされていなかったため、拡張性に乏しい。たとえば、制御装置は、開発コストや熱設計の観点から、組み込みプロセッサや低用量メモリから構成されている。
【００１１】
従来のセキュリティ技術は、OAパソコンやWebサーバなどの高性能コンピュータ向けに設計されており、計算資源の制約が多い制御装置で従来のセキュリティ技術を適用することは、システム可用性の低下を招く。
【００１２】
以上を踏まえ、処理性能が低い制御装置向けのセキュリティ技術を開発する必要がある。
【００１３】
非特許文献１の技術は、IPsec(Security Architecture for Internet Protocol)と呼ばれ、端末間で鍵更新を実現する仕組みである。この技術は、各装置間で生成した暗号化鍵 (共通鍵)を、Diffie-Hellman鍵交換アルゴリズムにより装置間で鍵を交換し、再度双方で認証したのちに、交換後の鍵で暗号通信を開始するためのトンネリング処理を実行する。
【００１４】
特許文献１の技術は、事前に複数の鍵を装置間で共有し、暗号化鍵を識別する情報とともに送信する手段を送信側装置に設ける。また、識別情報から解読鍵を決定する手段を受信側装置に設ける。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００５-１５９７８０公報
【非特許文献】
【００１６】
【非特許文献１】RFC ４３０１ “Security Architecture for Internet Protocol”(２００５)
【発明の概要】
【発明が解決しようとする課題】
【００１７】
(非特許文献１)非特許文献１の技術で用いられるDiffie-Hellman鍵交換アルゴリズムは、巨大な素数を用いた計算を扱うため、計算量が非常に大きい。そのため、鍵更一回あたりの処理負荷は非常に大きく、これを制御装置上で実行した場合、制御装置の計算資源を圧迫し、制御処理のリアルタイム性を保証できない。
【００１８】
加えて、交換した鍵を用いた再認証の実行時間も含めると、鍵交換開始から暗号通信開始までの時間が非常に長くなる。この間、暗号通信を実行することができず、制御通信のリアルタイム性までも保証できない。
【００１９】
また、制御システム内ネットワークは、ブロードキャストを多用しており、P2P通信を前提とした非特許文献１の技術では、制御システムの要件を満足する性能を実現できない。
【００２０】
(特許文献１)特許文献１の技術は、各装置で常に複数バージョンの鍵を保有し、送信データに暗号化に使用した暗号鍵のバージョン情報を含める。受信側では、受信データに含まれる暗号鍵バージョン情報を参照し、対応する鍵で復号する。
【００２１】
特許文献１の技術によると、暗号鍵更新に伴う鍵不一致をなくし、鍵更新に伴うダウンタイム低減や通信データ漏れを防止できる。
【００２２】
しかし、特許文献１の技術は、鍵管理サーバとの通信や鍵配送処理による通信負荷増大や、受信時の暗号鍵復号処理に伴う各装置の処理負荷増大を招く。
【００２３】
また、鍵管理サーバがダウンした場合や、鍵管理サーバと装置間の通信が何らかの原因で途絶えた場合、鍵の適切な管理を維持できない。加えて、鍵管理サーバの維持コストや、通信発生に伴うネットワーク負荷の観点から、鍵管理サーバを用いた構成は望ましくない。
【００２４】
以上を踏まえ、本発明は、コントローラや制御サーバなど、制御通信を行う装置およびシステムにおいて、鍵の更新や世代管理を各装置が自律的に、実行することができる鍵管理装置を提供する。
【課題を解決するための手段】
【００２５】
上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。 
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、データの暗号化又は復号化に用いる暗号鍵であって、所定のタイミングで順次更新される複数の暗号鍵の情報と、前記暗号鍵の更新順序及び現在暗号化に用いるべき現鍵がいずれであるかを示す情報を含む世代情報と、を記憶する記憶部と、データ送信時には、前記世代情報を参照して前記複数の暗号鍵から前記現鍵を抽出し、抽出した前記現鍵用いて送信データに暗号処理を実行し、暗号化に用いた前記現鍵の識別情報を送信データに付して通信パケットを生成して他の装置へ送信する処理と、データ受信時には、受信した通信パケットから暗号化に用いた暗号鍵の識別情報を抽出し、当該識別情報が示す暗号鍵が、前記現鍵から所定の更新回数前まで、あるいは、所定の更新回数後までの範囲内の暗号鍵であるか前記世代情報を参照して判別し、範囲内であった場合に当該暗号鍵を用いて受信データを復号化する処理と、を実行する処理部と、を備えることを特徴とする。
【発明の効果】
【００２６】
本発明は、コントローラや制御サーバなど、制御通信を行う装置およびシステムにおいて、鍵の更新や世代管理を各装置が自律的に、実行することができる鍵管理装置を提供することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明における送信側装置１００の構成を示す図。
【図２】本発明における受信側装置２００の構成を示す図。
【図３】送信側装置１００における暗号データ送信処理のフローチャートを示す図。
【図４】平文データ４００を暗号パケット４３０へ変換するイメージを示す図。
【図５】送信側装置１００、および受信側装置２００における鍵切り替え処理のフローチャートを示す図。
【図６】暗号化鍵リスト１１０における鍵の世代更新処理を示す図。
【図７】受信側装置２００における暗号データ受信処理のフローチャートを示す図。
【図８】二装置間で鍵の更新時刻を補正するタイミングチャートを示す図。
【図９】二装置間で鍵を世代更新する際の、暗号化鍵および復号鍵の切り替えるタイミングチャートを示す図。
【図１０】旧鍵の有効期限を制限する一方式のフローチャートを示す図。
【図１１】本発明の一適用例を示す図。
【図１２】本発明を実装した専用チップ１１１０の構成を示す図。
【図１３】本発明の効果例をタイミングチャートで示す図。
【図１４】本発明の作用をタイミングチャートで示す図。
【発明を実施するための形態】
【００２８】
以下、図面を用いて本発明を説明する。
【００２９】
(構成の説明)
図１および図２は、本発明を適用した装置の構成例である。
【００３０】
図１に示す装置１００は、本発明を適用した装置の内、送信側装置である。一方、図２に示す装置２００は、本発明を適用した装置の内、受信側装置である。以下、図１及び図２を用いて、送信側の機能と受信側の機能とを分けて説明するが、実際には、これらは１つの装置内で送信時，受信時に実行される。
【００３１】
図１は、送信側装置を示した図である。本発明を適用した送信側装置１００は、鍵の使用世代および有効期限が定められたIDを有する三世代以上の鍵情報と鍵データを管理する暗号化鍵テーブル１１０と、暗号対象となるデータを取得し、そのデータをバッファリングする暗号対象データ保持部１２０と、暗号対象データ保持部１２０がデータを受け取った際、暗号化鍵テーブル１１０から暗号化すべき鍵を取得する現鍵取得部１３０と、更新指令を受け取ったときや特定の鍵を無効化するときに、暗号化鍵テーブル１１０内の世代情報を書き換える世代管理部１４０と、装置内部の固有時計である内部時計１５０と、暗号鍵テーブル１１０に登録さえた有効期限と内部時計１５０とを比較し、有効期限が満了している場合、更新指令を世代管理部１４０に通知する鍵更新可否判断部１６０と、暗号対象データ保持部１２０と現鍵取得部１３０から暗号化に用いる鍵を取得し、ヘッダ情報に暗号化鍵を識別する情報を付与し、暗号処理を実行して外部装置へ送信する暗号処理部１７０とを有する。
【００３２】
暗号化鍵テーブル１１０は、装置を次に完全停止するまでの十分量の鍵を有し、その鍵一覧を事前に共有する。ここで十分量とは、予定外の更新処理発生を踏まえ、保持する予備の鍵を含めた鍵の数を意味する。
【００３３】
たとえば、次にシステムがサービス提供を停止までに必要な鍵の更新回数をMとした場合、暗号鍵テーブル１１０のエントリ数は、予備として保持する鍵数を含めるため、M以上となる。予備として保持する鍵数は、本発明を導入する装置のメモリ資源に応じて決定する。
【００３４】
暗号化鍵テーブル１１０が有する鍵一覧は、安全な方法によって装置間で共有される。
この方法は、オンラインまたはオフラインで実施する。たとえば、各装置にソフトイメージを書き込むときと同時に、鍵一覧情報を書き込む方法や、制御処理未実施中に既存の暗号化鍵を用いて新規生成した鍵一覧を暗号化し、それを送信する方法などがある。
【００３５】
図２は、受信側装置を示した図である。本発明を適用した受信側装置２００は、鍵の使用世代および有効期限が定められたIDを有する三世代以上の鍵情報と鍵データを管理する復号鍵テーブル２１０と、取得した暗号データをバッファリングする受信データ保持部２２０と、受信データ保持部２３０がデータを受け取った際、暗号データのヘッダに含まれる鍵のIDを取得し、復号鍵テーブル２１０から復号に用いる鍵を取得する復号鍵取得部２３０と、更新指令を受け取ったときや、特定の鍵を無効化するときに、暗号化鍵テーブル２１０内の世代情報を書き換える世代管理部２４０と、装置内部の固有時計である内部時計２５０と、復号鍵テーブル２１０に登録さえた有効期限と内部時計２５０とを比較し、有効期限が満了している場合、更新指令を世代管理部２４０に通知する鍵更新可否判断部２６０と、復号鍵が変更されたことを検知し、変更時刻をもとに内部時計２５０を補正する内部時計補正部２７０と、復号データ保持部２２０と復号取得部２３０から復号に用いる鍵を取得し、復号処理を実行して暗号データを復元する復号処理部２８０とを有する。
【００３６】
復号鍵テーブル２１０のエントリ数は、暗号化鍵テーブル１１０のエントリ数と同値とする。また、鍵のIDから一意に暗号化鍵または復号鍵と関連付けされているものとする。
【００３７】
内部時計補正部２７０は、復号鍵取得部２３０が復号鍵テーブル２１０から取得した復号鍵が、装置２００が現在使用する復号鍵と異なる場合、受信時刻を取得し、復号鍵テーブル２１０内の有効期限と比較することで自装置の内部時計の誤差を算出する。算出した誤差は、内部時計２５０へ反映される。内部時計２５０は、受け取った誤差情報をもとに時刻を補正する。
【００３８】
(処理概要説明)
以下、本発明の具体的な処理を説明する。
【００３９】
図３に、送信側装置１００における暗号データ送信時のフローチャートを示す。
【００４０】
暗号対象データ保持部１２０は、常時暗号対象となるデータを待ち受ける状態にある。
現鍵取得部１３０は、暗号対象データ保持部１２０がデータを受信したことを検知し、世代が「現鍵」である暗号化鍵を取得する（Ｓ３１０）。
【００４１】
暗号化鍵の世代属性値は、鍵の使用状況に応じて、「使用不可」、「旧鍵」、「現鍵」、「次鍵」、「未使用」の五種類あり、「使用不可」は、暗号化鍵として使用不可能な状態、「旧鍵」は、現在使用中の暗号化鍵に切り替える前に使用していた鍵、「現鍵」は、暗号化鍵として現在使用中の鍵、「次鍵」は、現鍵の次に切り替えた時に現鍵となる鍵、「未使用」は、暗号化鍵として未使用で、前記四属性のいずれの状態でないものを示す。
【００４２】
現鍵取得部１３０が現鍵取得した後、現鍵および暗号対象データを暗号処理部１７０へ転送し、暗号処理を実行する（Ｓ３２０）。データは、ネットワークのMTU（Maximum Trasmission Unit）値に従って分割される。
【００４３】
暗号処理完了後、現鍵として使用した鍵のIDをヘッダとして付与し、暗号パケットデータを生成する(Ｓ３３０)。パケットデータの生成後、ネットワークのプロトコルスタックに従ったヘッダを付与し、他装置へ送信される。
【００４４】
具体的なパケット生成イメージを図４に示す。MTUの値に従って分割された平文データ４００は、暗号処理によって暗号データ４１０に変換される。暗号データ４１０は、暗号化に用いた現鍵のID情報(４２１)がヘッダとして付与される。外部送信時は、通信プロトコルのヘッダ付与処理に従い、IP（Internet Protocol）ヘッダなどのヘッダが付与されて外部へ送信される。
【００４５】
なお、ID付与は、通信プロトコルのヘッダ内の領域を用いることが可能である。たとえば、IPヘッダの予約値など、通常の通信で使用されない部分などを利用できる。
【００４６】
図５に、鍵の世代更新実行時のフローチャートを示す。
【００４７】
鍵の世代更新処理は、周期的に呼び出され、内部時計の時刻取得(Ｓ５１０)、現在使用中の暗号化鍵(現鍵)の有効期限の取得（Ｓ５２０）、および世代更新をすべきか否かの有効性の確認（Ｓ５３０）を更新可否判断部１４０で行い、世代管理部１４０にて、世代更新を実行する（Ｓ５４０）。
【００４８】
現鍵の有効期限は、時刻情報、または残時間として管理される。時刻情報として管理される場合、内部時計と時刻を比較することで有効期限超過有無を判定する。残時間として管理される場合、前回時刻取得時からの経過時間を取得し、現鍵の残時間と差分をとる。
その差分が０以下であれば、有効期限切れと判断する。また、鍵の世代更新処理は、暗号化鍵の寿命、すなわち、暗号化鍵の長さに応じて決められる。
【００４９】
更新鍵判断部１６０が、有効期限切れと判断した場合、世代更新を実行する。
【００５０】
図６は、世代更新処理のイメージを示した図である。
【００５１】
図に示すように、世代更新処理を実行すると、旧鍵として割り当てられた鍵の属性値を使用不可とし、現鍵の属性値を旧鍵、次鍵の属性値を現鍵、未使用の鍵のうち一本の属性値を次鍵とする。未使用の鍵が割り当てられる順序は、各装置間で事前に定められているものとする。
【００５２】
このうち、新たに旧鍵として属性値が割り当てられたものは、その中でさらに有効期限は設定される。この有効期限は、ネットワーク全体で鍵更新が完了する十分時間を考慮し、決定される。 こうすることで、期限切れとなった旧鍵を早めに破棄でき、セキュリティ強度を維持できる。
【００５３】
以上の鍵世代更新処理は、受信側装置２００でも同様に実行される。
【００５４】
図７に、受信側装置２００の暗号パケット受信時のフローチャートを示す。
【００５５】
暗号パケット受信時、受信側装置２００内の受信データ保持部２２０で、パケットデータがバッファされ、復号鍵取得部２３０にて、パケットに含まれる鍵のID情報を取得する(S７１０)。ID取得後、復号鍵取得部２３０は、復号鍵テーブル２１０から、IDに該当する鍵を取得し、世代の属性値を確認する(Ｓ７２０)。
【００５６】
世代の属性値が旧鍵、現鍵、次鍵のいずれにも該当しない場合、受信データを破棄する（S７３０、Ｓ７８０）。属性値が旧鍵である場合、図６に示した有効期限を確認し、旧鍵の有効期限が切れている場合、受信データを破棄する（Ｓ７９０）。
【００５７】
属性値が現鍵、または次鍵の場合や、旧鍵で有効期限内である場合、復号処理を実行する（Ｓ７４０）。
【００５８】
また、復号鍵が次鍵である場合、時刻を取得し、内部時計の補正処理を実行する（Ｓ７５０、Ｓ７６０）。この時刻補正により、ネットワーク内の時刻誤差が最適化され、NTP（Network Time Protocol）などを用いた時刻同期処理など、冗長な処理が不要となる。
【００５９】
補正処理のタイミングチャートを図８に示す。本発明を適用した装置Ｘと装置Ｙがあり、装置Ｘが暗号パケットを送信、装置Ｙが暗号パケットを受信する場合を考える。装置Ｘが先に世代更新を実行し、IDが０３の鍵で暗号パケットを生成し送信する。装置Ｙでは、自身の世代切り替え前の時刻にIDが０３の鍵で暗号化されたパケットを受信し、装置Ｘとの更新時間の差分を検知する。そして、次鍵で暗号化されたパケットの受信時刻と、現鍵の有効期限とを比較し、差分を算出する。この差分を自身の内部時計、もしくは現鍵の有効期限へ反映させることで、装置間の鍵更新時間の誤差を補正する。
【００６０】
この補正処理によって、旧鍵の有効期限を一定値としても、誤差が一定値を超えないことを保障でき、自律的な鍵の世代管理をメンテナンスフリーで長期的に実現できる。
【００６１】
復号完了後、鍵のIDなどの不要なデータを破棄し、平文データを必要とするアプリケーションなどへ受け渡す(Ｓ７７０)。
【００６２】
以上の処理が実現する機能を表したタイミングチャートを図９に示す。
【００６３】
図９は、装置Ｘおよび装置Ｙ間における鍵世代の更新処理を各装置が自律的に実行する時のフローを示す例である。この例では、装置Ｘおよび装置Ｙの現鍵IDは０２とし、世代更新が発生する度に１ずつ加算されるものとする。
【００６４】
また、各装置は、独立した鍵の更新タイミングを有しており、図９に示すタイミングで鍵の世代更新を実行するものとする。
【００６５】
図９の例では、装置Ｘが先に鍵の世代更新を実行する。この世代更新では、現鍵のIDは０２から０３、次鍵のIDは０３から０４へ変更される。装置Ｘは、世代更新の実行後、新たに現鍵となったIDが０３の鍵で暗号を送信する。
【００６６】
IDが０３の鍵で暗号化された鍵を受信した装置Ｙは、次鍵として登録されているIDが０３の鍵で当該暗号データを復号する。そして、内部時計の補正を実行し、直ちに世代更新を実行する。
【００６７】
装置Ｘ、装置Ｙともに世代更新実行後、旧鍵(ID：０２)の有効期間を一定時間設ける。
この期間中に限り、旧鍵で暗号化された暗号データを復号可能とする。
【００６８】
一定時間経過し、装置Ｙが先に世代更新処理を実行し、装置Ｘが世代更新前の暗号化鍵(ID：０３)で暗号化した暗号データを装置Ｙへ送信した場合、装置Ｙは、旧鍵（ID：０３）で復号する。装置Ｙは、一定期間経過後、旧鍵（ID：０３）を無効化する。
【００６９】
この後、装置Ｙから装置Ｘへ暗号パケット送信する場合、装置Ｙは現鍵（ID：０４）で暗号化し、装置Ｘへ送信する。
【００７０】
(旧鍵の利用制限)
装置Ｘは、鍵のIDが０４の鍵で暗号化されたパケットを受信した場合、次鍵として登録されてある鍵で復号処理を実行し、世代更新を実行する。世代更新実行後、旧鍵を一定時間有効化し、その後無効化する。
【００７１】
以上の処理によって、本発明が意図する効果を実現できる。
【００７２】
以下、旧鍵での復号処理を許可する期間について述べる。
【００７３】
第一の例は、復号期間を固定値にする方法である。
【００７４】
この方法は、ネットワーク内の全装置の鍵更新完了する十分時間を固定値として設定し、世代更新時は、旧鍵の有効期限として、その固定値を割り当てる方式である。簡便な方式であるが、その固定値をシステム設計時に定める必要がある。
【００７５】
第二の例は、世代切り替え実行後の装置からみて現鍵に対応する識別情報をもつ鍵で送信する装置数をカウントし、その数が規定数超えたところで旧鍵を無効化する方式である。特に制御システムでは、制御周期毎で通信する装置が一意化される傾向があり、この方法は効果的である。
【００７６】
図１０は、旧鍵の有効期限を制限する一方式のフローチャートを示す図である。この処理は世代管理部２４０にて実行される。
【００７７】
この処理は、世代更新完了後において、ある装置からみて現鍵として登録されている鍵で暗号化された暗号パケットを受信する毎に呼び出され、暗号パケット送信元を特定し（Ｓ１０１０）、送信元が新規であるか判定する（Ｓ１０２０）。新規と判定された場合、現鍵を利用した装置の台数(現鍵利用装置数)をカウントする（Ｓ１０３０）。この利用台数が、規定数以上を超えた場合、旧鍵を利用した通信は完了したものとみなし、旧鍵を無効化する（Ｓ１０４０、Ｓ１０５０）。これによって、自装置から見て通信対象となる全ての装置の鍵更新を確認した後に、旧鍵を無効化できるため、旧鍵による復号化を許容する時間を最適な時間に制限できる。
【００７８】
また、この例では、旧鍵利用装置数をカウントしたが、装置数に限らず、装置のアドレスなど、装置を識別する情報で判別してもよい。
【００７９】
第三の方法は、旧鍵を使用した暗号パケットの受信毎で、旧鍵の有効期限を一定期間延長する方法である。
【００８０】
この方法は、 旧鍵を利用した暗号パケットを受信して、ある固定期間だけ復号を許可する期間を延長し、それを受信がなくなるまで繰り返す方式である。 また、この方法によって加算される延長期間は、上限を設けてもよい。
【００８１】
上記に示した第一の方法および第三の方法の固定期間を変動させてもよい。これは、システム動作時、旧鍵を用いた通信の状況から、旧鍵を無効化する期間の値を決定するものである。この方法では、前回の世代更新処理の結果を反映でき、自動的に旧鍵を無効化すべき時間を最適化できる。
【００８２】
この発明の適用形態は、装置内部に実装するだけでなく、装置外部でネットワーク間接続する専用モジュールとしても適用できる。
【００８３】
図１１に適用例を示す。この例では、送信側装置１００および受信側装置２００に示した処理ブロックを実装した専用ハードウェアやSoC（System on Chip）を含む専用チップ１１１０を通信インタフェース１１２０間に設ける構成である。ここで通信インタフェース１１２０は、Ethernet(登録商標)やシリアル通信など、汎用的に利用されるものとする。
【００８４】
専用チップ１１１０の内部構成を図１２に示す。
【００８５】
暗号データ送信処理部１２１０は、図１に示した送信側装置１００が有する本発明の各処理部を内部に有する。同様に、暗号データ受信処理部１２２０は、図２に示した受信処理装置２００が有する本発明の各処理部を内部に有する。ただし、内部時計に限り、暗号データ送信処理部１２１０、または暗号データ受信処理部１２２０のいずれか一方が有する構成、もしくは暗号データ送信処理部１２１０、および暗号データ受信処理部１２２０の外部に有する構成でもよい。
【００８６】
暗号化鍵・復号鍵テーブル１２３０は、暗号化鍵テーブル１１０および復号鍵テーブル２１０が結合した構成である。暗号化鍵・復号鍵テーブル１２３０は、暗号データ送信処理部１２１０、および暗号データ受信処理部１２２０の双方から参照、管理される。
【００８７】
この構成によると、既存の装置に対して、容易に本発明の機能を実現できる。
【００８８】
(次鍵の利用制限)
本発明は、前鍵の利用終了期間を調節するほか、次鍵の利用開始期間を調整する機能を提供できる。
【００８９】
本発明の構成によると、現鍵を使用開始と同時に次鍵は復号可能となる。次鍵は、それ自身は暗号化として用いられず、暗号文サンプルを得ることができないため、旧鍵や現鍵と比べ、セキュリティ上のリスクは低い。
【００９０】
しかし、次鍵を用いた暗号通信が可能な期間中は、復号可能な鍵のパターン数が増えてしまうため、総当たり攻撃などの被害を受ける確率が少なからず増加する。たとえば、現鍵のみを復号許可する構成と比べて、現鍵および次鍵の両方を復号許可する構成は、総当たり攻撃の被害を受ける確率は二倍高い。
【００９１】
この課題に対し、次鍵の利用開始期間を調整することで、総当たり攻撃を受ける被害を最小化できる。具体的には、次鍵に関して、利用開始期間を設けることで、本効果を実現できる。
【００９２】
次鍵の利用開始期間を調整したときの効果について、図１３にイメージを示す。
【００９３】
図１３の例では、双方の装置は現鍵としてIDが０２の鍵、次鍵としてIDが０３の鍵が設定されている。次鍵（ID:０３）は、IDが０２の鍵が現鍵として設定された時点で、復号許可はないものとし、次の世代更新の予定時刻の所定時間前になったとき、次鍵による復号を許可する。 
この所定時間は、ネットワーク内の装置のうち、１台でも世代更新を開始する時刻を考慮した時間とする。
【００９４】
図１３の例の場合、次鍵利用可能になる前に、攻撃者１３１０が暗号鍵の総当たり攻撃を仕掛け、次鍵によって暗号化、もしくは署名された不正パケット１３２０の生成に成功した場合であっても、復号を許可しない期間であるため、装置Ｙは不正パケット１３２０を受理しない。
【００９５】
この構成により、鍵の不一致期間の発生を防ぎつつ、総当たり攻撃などのセキュリティリスクを最小化できる。 
次鍵による復号を許可する期間を定める方法例を以下に示す。
【００９６】
第一の例は、次鍵が復号可能となる所定時間を固定値とする方法である。
【００９７】
これは、ネットワーク内のいずれかの装置が世代更新を実行し、世代更新前に次鍵である鍵を用いた暗号文を送信開始する時間を予測できる場合、その時間を固定値とする。
【００９８】
この方法は簡素な方式であり、各装置の内部時計の誤差が所定範囲以内であることが保証される場合において、効果的である。
【００９９】
第二の例は、前回の世代更新開始処理時において、最初に次鍵で暗号化された暗号パケットを受信した時間から、次鍵の復号を許可する期間を決定する方式である。
【０１００】
制御システムのような周期的な処理を実行するシステムの場合、世代更新処理も周期的になる傾向があり、前回の世代更新開始期間からの時間差はそれほど大きくない。
【０１０１】
この例の応用として、初期は次鍵による復号許可期間を長めに設定し、二回目の世代更新以降、最適化された復号許可期間を取得する(図１４)。図１４におけるパケット１４１０は、次鍵で暗号化された暗号パケットのうち、最初に受信したもの、期間１４２０は、最適化されたことによって次鍵の利用可能期間が制限された期間を示す。
【０１０２】
また、この所定時間内に次鍵を用いて暗号化されたデータを受信した際、同時に内部時計補正部２７０を介して内部時計２５０を補正することもできる。こうすることで、各装置間で内部時計の誤差を小さくできる。
【０１０３】
以上の方式を採用することで、よりセキュリティを向上化できる。
【０１０４】
(旧鍵、および次鍵双方の利用制限)
以上に示した旧鍵および次鍵の利用期限を制限する構成を双方採用することで、復号可能な鍵を最小化することができ、制御システムのセキュリティをより向上化できる。
【０１０５】
以上のとおり、本実施例では、制御情報を送信または受信する複数の装置からなるシステムであって、各装置は、鍵の使用世代および有効期限が定められた識別情報(以下、ID)を有する複数の鍵を所有する。送信側装置は、データ暗号化時、暗号鍵のIDをデータに付与し、受信側装置は、データ受信時、IDに対応する鍵で復号する。
【０１０６】
そして、各装置が持つ鍵の世代は少なくとも三世代有し、鍵の暗号化する場合、三世代のうち中間世代の鍵で暗号化して送信する。受信側は、中間世代から、ちょうど前後世代の鍵に限り、復号を許可する。
【０１０７】
これによって、本実施例のシステムでは、暗号鍵を管理する特別なサーバを要することなく、各装置が自律的に暗号鍵の更新した場合においても、鍵不一致により通信できない期間の発生を防ぎセキュアなシステムを提供することができる。
【０１０８】
また上記構成に加え、各装置は内部時計を有しており、この時計を用いて暗号鍵の有効期限を管理する。さらには、中間世代の鍵から見て、ちょうど前後世代の鍵を有効にする期間を制限する。
【０１０９】
これによって、有効な鍵数およびそれらの有効期限を最小化できるため、セキュリティを向上化できる。  なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明した ものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１１０】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くこと ができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１１１】
１００：送信側装置
１１０：暗号化鍵テーブル
１２０：暗号対象データ保持部
１３０：現鍵取得部
１４０：世代管理部
１５０：内部時計
１６０：更新可否判断部
１７０：暗号処理部
２００：受信側装置
２１０：復号鍵テーブル
２２０：受信データ保持部
２３０：復号鍵取得部
２４０：世代管理部
２５０：内部時計
２６０：更新可否判断部
２７０：内部時計補正部
２８０：復号処理部
４００：暗号化対象の平文データ
４１０：平文データ４００を暗号化した暗号データ 
４２０：暗号データ４００に現鍵IDを付与したペイロードデータ
４３０：ペイロードデータ４２０から生成されたパケットデータ 
１１１０：本発明の機能を実装した専用チップ
１１２０：制御装置の通信インタフェース
１２１０：専用チップ１１１０内の暗号データ送信処理部
１２２０：専用チップ１１１０内の暗号データ受信処理部
１２３０：専用チップ１１１０内の暗号化鍵・復号鍵テーブル
１３１０：不正パケットを送信する攻撃者
１３２０：不正パケット
１４１０：受信側装置において次鍵で暗号化されたパケットデータ４３０
１４２０：最適化により削減された次鍵の復号許可期間
装置Ｘ，装置Ｙ：本発明を適用した鍵管理装置 
Ｓｘｘｘ：フローチャート内の処理ステップ 
【図１】
0006043738.tif 000002
【図２】
0006043738.tif 000003
【図３】
0006043738.tif 000004
【図４】
0006043738.tif 000005
【図５】
0006043738.tif 000006
【図６】
0006043738.tif 000007
【図７】
0006043738.tif 000008
【図８】
0006043738.tif 000009
【図９】
0006043738.tif 000010
【図１０】
0006043738.tif 000011
【図１１】
0006043738.tif 000012
【図１２】
0006043738.tif 000013
【図１３】
0006043738.tif 000014
【図１４】
0006043738.tif 000015