(57)【要約】【課題】適切なバッファに対し、適切なタイミングで、適切な量の、生成した乱数を分け与えるようにバッファを制御することと、通信先に応じては、それに対応するバッファに暗号ブースト用の乱数も適切に蓄積する。【解決手段】制御システムを構成する制御装置は、通信先に応じ乱数を格納するバッファ、格納バッファ制御部、バッファ残存量監視部、負荷状況監視部から構成される乱数生成部、オンライン暗号処理部から構成され、制御装置は、ＣＰＵの未使用率、各通信先用の乱数バッファにおける乱数の残存量、バッファ毎の暗号ブースト対応の要否の情報、一定時間内の乱数の予想消費量という入力を基に、一定時間内に全てのバッファで必要となる乱数を動的に生成し、バッファ毎に必要な乱数量を計算し、生成した乱数を必要な量だけ各バッファに提供する。【選択図】図１
2015144373.tif 000002
【特許請求の範囲】
【請求項１】
秘密鍵を格納する記憶部と、前記秘密鍵から乱数を生成するオフライン処理部と、前記乱数を格納するバッファ部と、演算部と、負荷状況監視部と、バッファ制御部と、オンライン処理部と、を備え、
前記負荷状況監視部は、前記演算部の負荷状況を取得し、
前記バッファ制御部は、前記負荷状況に基づいて、前記乱数の生成量を決定し、
前記オンライン処理部は、第１のデータと前記乱数とに基づいて、第２のデータを生成することを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記第１のデータは、暗号処理対象データまたは復号処理対象データであり、前記第２のデータは、暗号処理済みデータまたは復号処理済みデータであることを特徴とする情報処理装置。
【請求項３】
請求項１に記載の情報処理装置であって、
前記オフライン処理部は、さらに、暗号対象パケットにおける暗号処理対象部を指定するデータであるマスクを生成することを特徴とする情報処理装置。
【請求項４】
請求項１に記載の情報処理装置であって、
前記オフライン処理部は、さらに、ハッシュ関数に基づくメッセージ認証子の中間ハッシュ値を生成することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に係り、特に制御システムにおけるネットワークに接続した装置間の通信保護に関し、乱数を生成して暗号処理する方法を用いて、装置間の通信を保護する情報処理装置に関する。
【背景技術】
【０００２】
鉄道、電力、水道、ガスを含む社会インフラを支える制御システムは、閉じたネットワーク内に構築されていた。また、制御システムは、専用のＯＳおよびプロトコルが使用されてきた。これにより、制御システムは、早期にオープン化、ネットワーク化が進展した情報システムとは異なり、ウィルスによる攻撃等のセキュリティ脅威にさらされることがない、または攻撃されても被害は発生しないと考えられてきた。
【０００３】
しかし、制御システムについても、インターネットへの接続頻度が増加している。また、制御システムのネットワーク装置へ汎用ＯＳが採用され始めている。さらに、制御システムを攻撃対象としたウィルス（具体的にはスタクスネット）が出現している。
【０００４】
制御システムに対するセキュリティ基準は、これまで米国ＮＩＳＴ、米国ＮＥＲＣ、英国ＣＰＮＩを含む各国の研究機関または業界団体が主体となり、各国の基準および業界標準を策定していた。しかし、全世界共通のセキュリティ基準の必要性から、２００９年にＩＥＣ（International Electrotechnical Commission）において制御システムのセキュリティに関する国際標準の策定が開始されている。
【０００５】
このような流れを受け、制御システムにおいて、各種脅威から制御システムを保護するために、情報システムと同様のセキュリティ機能の導入およびセキュリティ対策運用が必要になっている。
【０００６】
セキュリティ技術の一つとして暗号技術が知られている。暗号技術は、格納データおよび通信データの秘匿性を保護する。暗号技術は、通信先の認証およびデータの改ざん検知も可能である。このため、暗号技術は、セキュリティ対策の根幹となる技術である。よって、制御システムを保護するために、今後、制御システム内の装置での暗号技術活用の重要性が増大する。
【０００７】
一方、制御システムは、センサの情報を基にバルブ（valve）またはアクチュエータ（actuator）を動作させ、あらかじめ設定されている圧力または温度を保つことが要求される。これらの処理は、制御コントローラを含む制御装置が実施する。
【０００８】
さらに、制御処理は、周期的動作であり、かつ実行周期は短い。したがって、データの更新頻度が高い。
制御機器同士の通信の内容は、センサからの測定データおよびアクチュエータへの制御データを含み、これらのデータは、機密にする必要がある。一方、機密性確保のために、制御システムに暗号技術を適用する際には、短周期処理のため、暗号処理に課される速度要件は厳しい。また、制御コントローラは、設置台数も多く低コストであることが要求される。このため、内蔵ＣＰＵも低コスト品を採用することとなり、暗号処理で使える計算リソース（ＣＰＵパワーおよび使用メモリ）は限られる。
【０００９】
暗号技術に対する厳しい速度要件を満たすための有効な手段として、ブロック暗号のＣＴＲ（カウンタ）モード、ＥＣＢ（Electronic CodeBook）モード、ＣＢＣ（Cipher Block Chaining）モードおよびストリーム暗号による暗号化処理が知られている。ＣＴＲモードとストリーム暗号の特徴として、処理が以下の二つのフェーズに分解できることがある。
【００１０】
フェーズ１：乱数生成処理
フェーズ２：排他的論理和処理
フェーズ１は、処理対象となる平文とは無関係に独立して行うことができる。このため、平文確定前に実行が可能である。フェーズ１の事前実行が可能であるという前提の下で、平文確定後に実行する必要があるフェーズ２の処理は、非常に負荷の小さな処理である。このため、二つのフェーズに分解できる暗号は、高速な暗号処理が可能である。
【００１１】
一方、ＥＣＢモード、ＣＢＣモードは、二つのフェーズに分解できず、平文確定後に、重い処理を実行する必要がある。すなわち、ＥＣＢモード、ＣＢＣモードは、処理分解と事前処理による高速化は不可能である。
【００１２】
ＣＴＲモードでは、秘密鍵および初期ベクトルから、あらかじめ暗号対象データの量と同程度の量の乱数を生成し、乱数格納バッファに格納する。しかし、安全性上の理由から、同一の乱数列を、異なる対象データの暗号化に繰り返し利用することができない。このため、暗号化処理に応じて、適切なタイミングで必要な量の乱数列を生成しなければならない。
【００１３】
また、通常、通信先毎に異なる暗号鍵を二者間で共有する。このことから、異なる通信先に対しては、異なる鍵から乱数を生成する必要がある。したがって、制御機器がｎ台の機器と通信する場合、その制御機器は通信先に応じｎ個の乱数確保用のバッファを用意する必要がある。
【００１４】
ある時刻において、暗号化用の乱数がバッファに十分あったとしても、以降の時刻においては、その時点までの暗号化通信で、ある通信先用の乱数の消費量が大きく、その通信先に対応する乱数格納バッファにアンダーフロー（Underflow）が生じることがある。必要な乱数を適切なタイミングで利用できなければ、その通信先との通信のリアルタイム性に影響を与える。
【００１５】
制御システムへの暗号適用においては、厳しい速度要件を満たすために、処理対象のデータの暗号領域をデータ全体でなく、データの必要な部分のみとして暗号化を行う部分暗号と呼ばれる処理が有効である。部分暗号は、あるデータに対して、秘匿性または完全性等の安全性に関して、保護すべき領域と、保護しなくてよい領域とをマスクと呼ばれるデータを用いて指定し、保護領域にのみ暗号処理を適用する。
【００１６】
部分暗号を利用した通信において、システムのユーザあるいは管理者が、制御サーバの特定の通信先の通信との一定の期間において、データの暗号対象領域を増加させることにより、安全性を一定時間向上させることができる。このような機能（暗号ブースト機能）をサポートすることは、今後制御システムのセキュリティにおいて有用である。この暗号ブースト機能の実現のためには、システム運用時に定常的に乱数を蓄積し、一定期間において暗号処理中の乱数使用量を増加できることが必要である。
【００１７】
以上を纏めると、制御システムのセキュリティを確保するためには、暗号処理に必要な乱数列の事前生成に、適切なバッファ制御を適用して、バッファアンダーフローを防止し、かつ乱数列を蓄積し、将来の安全性向上が必要な時に利用可能な技術が有効である。
【００１８】
特許文献１は、ケーブルＴＶ、衛星ＴＶネットワークを含む広帯域通信システムによるデジタルビデオデータの送信に際し、セットトップボックス（ＳＴＢ：Set-Top Box）および／またはネットワークのいくつかの中間ノードで通信する前に、ビデオデータの伝送速度を変更させる装置を低コストで実現する技術を開示する。
【００１９】
特許文献１の技術によれば、バッファ制御方式のみを使用してより低コストにてＭＰＥＧ２データの伝送速度を調節することが可能となり、特に、ＭＰＥＧ２データを受信して再び送信する際に、該受信部のバッファにアンダーフローおよびオーバーフロー（Overflow）が発生することを防止して効果的にＭＰＥＧ２データを送信することができる。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２００５−２２３９１４号公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
制御システムには、以下の前提条件がある。
（１）受信周期が一致するとは限らないデータを受信するため、制御装置の負荷が変動する。
（２）通信先毎に送信周期が異なる。また、周期はｍｓオーダーであり、処理時間制約が厳しい。
【００２２】
（１）（２）の制約下において、制御システムに暗号技術を適用する際には、通信先毎に、乱数格納用のバッファを備え、適切なバッファ制御を適用して、バッファのアンダーフローを防止することが必要となる。しかし、特許文献１による技術では、下記の課題がある。
（１）アンダーフローの発生予測状況が生じると、バッファにバッファリングされたデータを読み込む動作を中止するため、通信にジッタ（ゆらぎ）を起こす。
（２）適切なバッファに適切なタイミングで、適切な量の乱数を供給することができない。
（３）特定の通信先に対して、部分暗号方式による通信において、一定の期間においてはデータの暗号対象領域を増加させることにより、安全性を一定時間向上させる（暗号ブースト）ことは、ジッタの懸念がある。
【００２３】
以上を纏めると、多数の通信先に対して、いかなる負荷状況においても、ジッタを起こさずに全ての通信先との暗号化通信を行い、特定に通信先との通信に対しては、暗号ブーストを行うために、制御装置が自身の負荷状況に基づき乱数を生成し、各バッファにおける乱数の残存量に基づき、適切なバッファに対し、適切なタイミングで、適切な量の、生成した乱数を分け与えるようにバッファを制御することと、また、通信先に応じては、それに対応するバッファに暗号ブースト用の乱数も適切に蓄積することが必要である。
【課題を解決するための手段】
【００２４】
本発明は、上記課題を解決するために、制御装置とネットワークから構成される制御システムにおいて、送信処理を行う制御装置と受信処理を行う制御装置の通信を、暗号処理によって保護する手段を具備する制御システムであって、該制御システムを構成する制御装置は、通信先に応じ乱数を格納するバッファ、格納バッファ制御部、バッファ残存量監視部、負荷状況監視部から構成される乱数生成部、オンライン暗号処理部から構成され、制御装置は、ＣＰＵの未使用率、各通信先用の乱数バッファにおける乱数の残存量、バッファ毎の暗号ブースト対応の要否の情報、一定時間内の乱数の予想消費量という入力を基に、一定時間内に全てのバッファで必要となる乱数を動的に生成し、バッファ毎に必要な乱数量を計算し、生成した乱数を必要な量だけ各バッファに提供する。
【００２５】
上述した課題は、  秘密鍵を格納する記憶部と、秘密鍵から乱数を生成するオフライン処理部と、乱数を格納するバッファ部と、演算部と、負荷状況監視部と、バッファ制御部と、オンライン処理部と、を備え、負荷状況監視部は、演算部の負荷状況を取得し、バッファ制御部は、負荷状況に基づいて、乱数の生成量を決定し、オンライン処理部は、第１のデータと乱数とに基づいて、第２のデータを生成する情報処理装置により、達成できる。
【発明の効果】
【００２６】
本発明によれば、高速な暗号化処理により通信路の安全性確保を行う制御装置が、ＣＰＵ負荷が高くなった場合でも、ジッタ（ゆらぎ）を起こさずに、全通信先との暗号化通信できる。
【図面の簡単な説明】
【００２７】
【図１】通信が保護された制御システムの構成を説明するブロック図である。
【図２】送信装置と受信装置のハードウェアの構成を説明するブロック図である。
【図３】送信装置と受信装置との間のシーケンス図である。
【図４】送信装置と受信装置とにおけるオフライン乱数生成処理のフローチャートである。
【図５】バッファ制御部による生成する乱数量を決定するフローチャートである。
【図６】バッファ制御部による乱数生成量測定するためのフローチャートである。
【図７】バッファ制御部による乱数生成量を測定するフローチャートである。
【図８】バッファ制御部による乱数生成量を決定するフローチャートである。
【図９】ヘッダ生成部で生成されるヘッダのフォーマットである。
【図１０】暗号送信データ／暗号受信データのフォーマットである。
【図１１】マージン乱数割り当ての優先度ポリシーを説明する図である。
【図１２】実施例２の送信装置の構成を説明するブロック図である。
【図１３】送信装置と受信装置との間のシーケンス図である。
【図１４】オフラインマスク生成処理のフローチャートである。
【図１５】バッファ制御部による生成するマスク量を決定するフローチャートである。
【図１６】バッファ制御部によるマスク生成量を測定するフローチャートである。
【図１７】送信装置の構成を説明するブロック図である。
【発明を実施するための形態】
【００２８】
以下、本発明の実施形態について、実施例を用い、図面を参照しながら詳細に説明する。
【実施例１】
【００２９】
（制御システムの構成）
図１を参照して、制御システムの構成を説明する。図１において、制御システム１００は、送信装置１１０と、受信装置１３０と、制御サーバ１４０と、通信ネットワーク１９０と、を含んで構成されている。制御システム１００は、通信ネットワーク１９０を介して、制御サーバ１４０からの指示を受信装置１３０が受信し、何らかの制御動作を行なう。制御システム１００は、送信装置１１０からの送信データを受信装置１３０が受信し、何らかの制御動作を行なう。制御システム１００は、送信装置１１０からの送信データを制御サーバ１４０が受信し、何らかの処理を行なう。
【００３０】
図１において、簡単化のために、送信機能を有する送信装置１１０、受信機能を有する受信装置１３０、制御サーバ１４０は、各々１台からなる制御システム１００を示したが、各々の構成要素が複数存在しても構わない。また、送信機能を有する送信装置１１０は受信機能を有してもよく、受信機能を有する受信装置１３０は送信機能を有してもよい。
（送信装置）
送信装置１１０は、送信部１１１と、送信データ生成部１１２と、ヘッダ生成部１１３と、鍵情報記憶部１１４と、オンライン暗号処理部１１５と、オフライン乱数生成部１２７と、サーバ対応乱数格納バッファ１１８と、受信装置対応乱数格納バッファ１１９と、を含んで構成されている。
【００３１】
送信装置１１０は、自身の上で動作する制御アプリケーションから取得する暗号処理対象データを暗号化する。送信装置１１０は、暗号化データにヘッダを付加し、送信パケットを生成する。送信装置１１０は、送信パケットを受信装置１３０または制御サーバ１４０に送信する。乱数格納バッファは、暗号通信に必要な乱数を格納する。乱数格納バッファは、通信先毎に備える。
【００３２】
送信装置１１０は、暗号処理対象データに対して、送信先に対応する乱数格納バッファから暗号通信に必要な乱数を取り出す。オンライン暗号処理部１１５は、乱数を用いて、排他的論理和処理を行う。送信データ生成部１１２は、暗号処理済みデータとヘッダ生成部１１３が生成したヘッダから、送信用データを生成する。送信用データについて、送信部１１１は、制御サーバ１４０または受信装置１３０に送信する。
【００３３】
鍵情報記憶部１１４は、秘密鍵および関連する情報を格納する。送信部１１１は、外部への送信を行う。サーバ対応乱数格納バッファ１１８は、制御サーバ１４０との通信に対応するバッファである。受信装置対応乱数格納バッファ１１９は、受信装置１３０との通信に対応するバッファである。オンライン暗号処理部１１５は、暗号処理対象データとサーバ対応乱数格納バッファ１１８または受信装置対応乱数格納バッファ１１９内のデータを入力として暗号処理を行う。
【００３４】
オフライン乱数生成部１２７は、秘密鍵および初期ベクトルから、暗号処理対象データを入力せずに暗号処理の事前に乱数を生成する。オフライン乱数生成部１２７は、バッファ制御部１１６と、バッファ残存量監視部１２８と、負荷状況監視部１１７と、を含んで構成されている。
オフライン乱数生成部１２７は、負荷状況監視部１１７が監視した送信装置の負荷状況に応じて定められた総量の乱数を生成する。当該乱数について、バッファ制御部１１６は、通信先に対応する乱数格納バッファに生成した乱数を分配する。乱数格納バッファは、乱数を格納する。
【００３５】
バッファ制御部１１６は、サーバ対応乱数格納バッファ１１８と受信装置対応乱数格納バッファ１１９を制御する。負荷状況監視部１１７は、送信装置１００の負荷状況を監視する。バッファ残存量監視部１２８は、乱数格納バッファの残存量を監視する。
【００３６】
なお、送信装置１１０は、２個の送信先に対応するため、乱数格納バッファとして、サーバ対応乱数格納バッファ１１８と受信装置対応乱数格納バッファ１１９の２個備える。しかし、より多くの通信先に対応できるように３個以上のバッファを備えても良い。
（受信装置）
受信装置１３０は、受信部１３１と、受信データ生成部１３２と、ヘッダ検証部１３３と、鍵情報記憶部１３４と、オンライン復号処理部１３５と、オフライン乱数生成部１５１と、乱数格納バッファ１３８と、乱数格納バッファ１３９と、を含んで構成されている。
【００３７】
受信部１３０は、復号処理対象データに対して、受信先に対応する乱数格納バッファから乱数を取り出す。取り出した乱数を用いてオンライン復号処理部１３５は、復号処理を行う。受信データ生成部１３２は、復号処理済みデータとヘッダ検証部１３３がヘッダを検証した結果に基づき、受信用データのペイロードデータを生成する。受信装置１３０は、当該データを取得し、制御を行う。
【００３８】
鍵情報記憶部１３４は、秘密鍵および関連する情報を格納する。受信部１３１は、外部からの受信を行う。乱数格納バッファ１３８は、制御サーバ１４０との通信に対応するバッファである。乱数格納バッファ１３９は、送信装置１１０との通信に対応するバッファである。オンライン復号処理部１３５は、暗号処理済みデータ（復号処理対象データ）と乱数格納バッファ１３８または乱数格納バッファ１３９内のデータを入力として、復号処理を行う。受信データ生成部１３２は、受信データを生成する、ヘッダ検証部１３３は、受信データのヘッダを検証する。  
【００３９】
オフライン乱数生成部１５１は、秘密鍵および初期ベクトルから、暗号処理済みデータを入力せずに復号処理の事前に乱数を生成する。オフライン乱数生成部１５１は、バッファ制御部１３６と、バッファ残存量監視部１５２と、負荷状況監視部１３７と、を含んで構成されている。オフライン乱数生成部１５１は、負荷状況監視部１３７が監視した受信装置１３０の負荷状況に応じて定められた総量の乱数を生成する。当該乱数について、バッファ制御部１３６は、通信先に対応する乱数格納バッファに分配する。乱数格納バッファは、乱数を格納する。
【００４０】
バッファ制御部１３６は、乱数格納バッファ１３８と乱数格納バッファ１３９を制御する。負荷状況監視部１３７は、受信装置１３０の負荷状況を監視する。バッファ残存量監視部１５２は、乱数格納バッファの残存量を監視する。
【００４１】
なお、受信装置１３０は、２個の送信元に対応するため、乱数格納バッファとして、送信装置対応乱数格納バッファ１３８と制御サーバ対応乱数格納バッファ１３９の２個を備える。しかし、より多くの通信元に対応できるように３個以上のバッファを備えても良い。
（制御サーバ）
制御サーバ１４０は、暗復号処理部１４１と、通信部１４２と、ヘッダ生成部１４３と、ヘッダ検証部１４４と、制御業務監視部１４５と、送信データ生成部１４６と、受信データ生成部１４７と、鍵情報記憶部１４８と、通信データ保管部１４９と、暗号ブースト部１６１と、を含んで構成されている。
【００４２】
データを送信する場合、暗号処理対象データに対して、暗復号処理部１４１は、暗号処理を行う。送信データ生成部１４６は、暗号処理済みデータとヘッダ生成部１４３が生成したヘッダから、送信用データを生成する。当該データについて、通信部１４２は、送信装置１１０または受信装置１３０に送信する。
【００４３】
データを受信する場合、復号処理対象データに対して、暗復号処理部１４１は、復号処理を行う。受信データ生成部１４７は、復号処理済みデータとヘッダ検証部１４４がヘッダを検証した結果に基づき、受信用データのペイロードデータを生成する。制御サーバ１４０は、当該データを取得し、制御を行う。鍵情報記憶部１４８は、秘密鍵および関連する情報を格納する。制御業務監視部１４５は、送信装置と受信装置の通信および制御業務の状況を監視する。通信部１４２は、外部との通信を行う。通信データ保管部１４９は、通信データを保管する。暗号ブースト部１６１は、システム管理者が指定した時間間隔で、暗号処理における乱数使用量を大きくすることにより、特定の機器との暗号通信の安全性を向上させる。
なお、送信装置１１０、受信装置１３０、制御サーバ１４０は、いずれも情報処理装置である。
（制御装置のハードウェア構成）
図２を参照して、送信装置１１０と受信装置１３０のハードウェアを説明する。図２において、送信装置１１０と受信装置１３０は、それぞれ、通信装置１１と、入出力装置１２と、ＣＰＵ１４と、メモリ１５と、を含んで構成されている。
【００４４】
ＣＰＵ１４は、演算を行う。入出力装置１２は、センサから信号を入力され、アクチュエータに信号を出力する。メモリ１５は、処理結果を一時格納する。通信装置１１は、センサまたはアクチュエータと通信する。通信装置１１は、また、送信装置１１０（または受信装置１３０）および制御サーバ１４０と通信する。
（送信装置と受信装置の暗号通信フロー）
図３を参照して、送信装置１１０が平文データを暗号化した後に送信し、受信装置１３０が受信し、受信データを復号化し、ペイロードデータを取得するフローを説明する。図３において、送信装置１１０のオフライン乱数生成部１２７は、暗号データ送信処理の前に、暗号対象データを入力せずに処理可能なオフライン乱数生成処理を行う（Ｓ２０１）。暗号データ送信処理に関して、送信装置１１０は、はじめに送信先を取得する（Ｓ２０２）。送信装置１１０は、暗号化の際に用いる暗号アルゴリズムおよび初期ベクトルに基づきヘッダを生成する（Ｓ２０３）。送信装置１１０は、暗号化の際に用いる暗号アルゴリズムが、乱数を利用するかどうかを判定する（Ｓ２０４）。ＹＥＳのとき、送信装置１１０は、乱数を受信装置対応乱数格納バッファ１１９から取得する（Ｓ２０５）。ステップ２０４でＮＯのとき、送信装置１１０は、ステップ２０５をスキップする。
【００４５】
オンライン暗号処理部１１５は、取得した乱数を用いて平文データを暗号化して、暗号データを得る（Ｓ２０６）。送信データ生成部１１２は、ヘッダと暗号データを用いて、暗号化送信データを生成する（Ｓ２０７）。ここで、必要に応じて、暗号化送信データに関して、改ざん検知のためのメッセージ認証子（ＭＡＣ）の生成を行い、暗号化送信データに連結してもよい。送信部１１１は、暗号化送信データを送信する（Ｓ２０８）。暗号化送信データ送信のあと、送信装置１１０は、乱数生成処理（Ｓ２０１）に戻って繰り返し処理を行う。このように、送信処理を行う送信装置１１０は、システム運用中に、乱数を動的に生成しながら、暗号処理を行う。
【００４６】
受信装置１３０のオフライン乱数生成部１２７は、暗号データ送信処理の前に、暗号対象データを入力せずに処理可能なオフライン乱数生成処理を行う（Ｓ３０１）。暗号データ受信処理に関して、受信部１３１は、暗号化送信データを受信する（Ｓ３０２）。受信部１３１は、受信データから送信元または受信先を取得する（Ｓ３０３）。受信装置１３０は、ヘッダを検証し、復号化の際に用いる暗号アルゴリズムおよび初期ベクトルを取得する（Ｓ３０４）。ここで、必要に応じて、改ざん検知処理を行う。具体的には、ＭＡＣが送信データに連結された場合、受信装置１３０は、対象データのＭＡＣを計算し、送信データに連結されたＭＡＣを参照することで改ざん検知を行う。受信装置１３０は、送信元に対応する乱数を乱数格納バッファから取得する（Ｓ３０５）。オンライン復号処理部１３５は、取得した乱数を用いて、暗号文を復号化することにより、平文データ（ペイロードデータ）を得る（Ｓ３０７）。ペイロードデータを得た後、受信装置１３０は、乱数生成処理（Ｓ３０１）に戻って処理を行う。このように、受信装置１３０は、システム運用中に、乱数を動的に生成しながら、復号処理を行う。
（オフライン乱数生成フロー）
図４を参照して、送信装置と受信装置が、通信先に応じ、暗号通信するために用いるオフライン乱数生成処理を説明する。なお、図４ないし図８において、送信装置の処理として説明するが、受信装置も同様である。
図４において、オフライン乱数生成部１２７は、乱数格納バッファ１１８と乱数格納バッファ１１９それぞれにおける乱数生成量を取得する（Ｓ５０１）。なお、各バッファの乱数生成量を決定するフローに関しては、図５で説明する。オフライン乱数生成部１２７は、鍵情報を鍵情報格納部１１４から取得する（Ｓ５０２）。オフライン乱数生成部１２７は、取得した鍵情報を暗号アルゴリズムに入力することにより、乱数格納バッファ１１８と乱数格納バッファ１１９に関して、取得した乱数生成量の分の乱数の生成を行う（Ｓ５０３）。オフライン乱数生成部１２７は、生成した乱数を乱数格納バッファ１１８、１１９に格納して（Ｓ５０４）、リターンする。
（各バッファの乱数量決定のためのフロー）
図５を参照して、バッファ制御部１１６がサーバ対応乱数格納バッファ１１８、受信装置対応乱数格納バッファ１１９のそれぞれにおいて生成する乱数量を決定するフローを説明する。図５において、バッファ制御部１１６は、全てのバッファ、すなわち、サーバ対応乱数格納バッファ１１８と受信装置対応乱数格納バッファ１１９において生成する乱数量を測定する（Ｓ４１２）。この量を全バッファ総乱数生成量と定義する。バッファ制御部１１６は、各バッファで生成が必要な乱数量を測定する（Ｓ４１３）。この量をバッファ依存必要乱数量と定義する。バッファ制御部１１６は、各バッファにおける乱数生成量を最終決定して（Ｓ４１４）、リターンする。この量をバッファ依存最終乱数生成量と定義する。
これらの処理内容の詳細については、図６、図７、図８により、それぞれ後述する。
（バッファ制御の基本フローにおける各処理に関する用語の定義）
バッファ制御の基本フローにおける各処理の説明準備として、以下のように用語の定義を行う：
Ｇ（ｔ）を時刻ｔにおいて生成する乱数量（単位：バイト）とし、
ｂｉ（ｔ）を時刻ｔにおいてｉ番目のバッファＢＵＦｉで生成する乱数量とし、
ｃｉ（ｔ）を時刻ｔにおいてｉ番目のバッファＢＵＦｉで消費する乱数量とし、
ｒｉ（ｔ）を時刻ｔにおいてｉ番目のバッファＢＵＦｉに残存する乱数量とし、
事前に定めた正数Ｔ０に対し、Ｃｉ（ｔ）を時刻ｔから時刻ｔ＋Ｔ０においてｉ番目のバッファＢＵＦｉで消費する乱数量とする。
【００４７】
ここで、Ｇ（ｔ）は、時刻ｔにおける乱数生成を行う装置のＣＰＵ未使用率に依存し、ＣＰＵ未使用率が大きければ、Ｇ（ｔ）も大きい。
また、Ｃｉ（ｔ）はｃｉ（ｘ）の時刻ｔから時刻ｔ＋Ｔ０における積分である式１で与えられる。
【００４８】
【数１】
2015144373.tif 000003
制御システムにおける通信においては、一般的に以下の要件が考えられる。
・要件”１”：対象制御システムの通信データの量により、Ｃｉ（ｔ）は決まる。システム試運転時等において、Ｃｉ（ｔ）を求めてもよい。
・要件”２”：任意の時刻、任意のバッファにおいて、暗号処理を行うために、乱数の量が０以上であること、すなわち、バッファアンダーフローが生じないことが必要である。すなわち、任意のバッファＢＵＦｉと任意の時刻ｔに対し、ｒｉ（ｔ）≧０
・要件”３”：時刻ｔにおいて、各バッファ（総数：ｎ）に割り当てるために生成する乱数量の和は、Ｇ（ｔ）以下である。すなわち、式２を満たすことが好適である。
ｂ１（ｔ）＋ｂ２（ｔ）＋…＋ｂｎ（ｔ）≦Ｇ（ｔ）…（式２）
以上の定義、用語、要件を踏まえ、バッファ制御部における処理フローの各処理について説明する。なお、ここでは、要件”１”〜”３”を満たす事前乱数生成を行う。しかし、要件が満たされない場合、暗号処理のタイミングでの乱数生成、すなわち、ｏｎ−ｔｈｅ−ｆｌｙによる乱数生成を行っても良い。
（全バッファの乱数生成量測定処理（Ｓ４１２）のための詳細フロー）
図６を参照して、バッファ制御部１１６が、全バッファの乱数生成量測定するためのフローを説明する。図６において、送信装置１１０は、時刻情報ｔを取得する（Ｓ４０２）。送信装置１１０は、ＣＰＵの未使用率を取得することにより、ＣＰＵ負荷状況を取得する（Ｓ４０３）。送信装置１１０は、取得したＣＰＵ負荷状況に基づき、各送信先に対応する各乱数格納バッファに分配するために生成する乱数の総量Ｇ（ｔ）を決定して（Ｓ４０４）、リターンする。
（各バッファで必要な乱数生成量測定処理（Ｓ４１３）のための詳細フロー）
図７を参照して、バッファ制御部１１６が、全バッファの乱数生成量測定するためのフローを説明する。図７において、バッファ残存量監視部１２８は、時刻ｔでｉ（ｉ＝１，２）番目のバッファＢＵＦ（ｉ）において残存する乱数量ｒｉ（ｔ）を取得をする（Ｓ６０１）。バッファ残存量監視部１２８は、時刻ｔから時刻ｔ＋Ｔ０の期間で、ｉ番目のバッファＢＵＦ（ｉ）で消費する乱数量Ｃｉ（ｔ）を計算することにより、各バッファの乱数消費量の予測を行う（Ｓ６０２）。
【００４９】
ここで、Ｃｉ（ｔ）は、ｃｉ（ｘ）の時刻ｔから時刻ｔ＋Ｔ０における積分により計算する。また、取得した時刻から一定の時刻までに消費する乱数の量Ｃｉ（ｔ）は、通信データの周期性等の特性を用いて予測して計算してもよい。
【００５０】
バッファ残存量監視部１２８は、各ｉに対して、条件Ｃｉ（ｔ）−ｒｉ（ｔ）＞０を満たすｉかを判定する（Ｓ６０３）。ＹＥＳのとき、バッファ残存量監視部１２８は、時刻ｔでｉ番目のバッファＢＵＦ（ｉ）で生成する乱数量ｂｉ（ｔ）＝Ｃｉ（ｔ）−ｒｉ（ｔ）を計算して（Ｓ６０４）、リターンする。
【００５１】
ステップ６０３でＮＯのとき、バッファ残存量監視部１２８は、ｂｉ（ｔ）＝０、すなわち、生成する乱数量は０として（Ｓ６０５）、リターンする。なお、ステップ６０１からステップ６０５は、全てのバッファに対して行う。
（各バッファの乱数生成量の最終決定（Ｓ４１４）のためのフロー）
図８を参照して、バッファ制御部１１６が、各バッファの乱数生成量の決定するためのフローを説明する。図８において、バッファ制御部１１６は、乱数生成に関する自由度Ｆ（ｔ）をＦ（ｔ）＝Ｇ（ｔ）−（ｂ１（ｔ）＋ｂ２（ｔ）＋…＋ｂｎ（ｔ））により計算する（Ｓ８０１）。バッファ制御部１１６は、乱数生成に関するポリシーを取得する（Ｓ８０２）。取得したポリシーに基づき、バッファ制御部１１６は、各バッファに関する自由度ｆｉ（ｔ）を計算する（Ｓ８０３）。
【００５２】
各バッファに関し、バッファ制御部１１６は、乱数生成量ｂｉ（ｔ）に自由度ｆｉ（ｔ）を加算、すなわち、ｂｉ（ｔ）＝ｂｉ（ｔ）＋ｉ（ｔ）を計算して（Ｓ８０４）、リターンする。バッファ制御部１１６は、このｂｉ（ｔ）をバッファｂｉ（ｔ）の乱数生成量と最終決定する。
（ヘッダの構成）
送信装置１１０と受信装置１３０の間で、どのようなフォーマットを持つデータを通信すれば、実際に暗号通信を行うことができるかを示すために、各処理で用いられる各種情報の構成を説明する。
【００５３】
図９を参照して、部分暗号による通信保護システムにおいて、ヘッダ生成部１１３で生成されるヘッダの構成を説明する。なお、以下では、図９の「＃」の番号ｎを用いて、各項目の符号を９００−ｎ（ｎ＝１〜９）と表記する。
【００５４】
図９において、ヘッダ９００は、暗号通信フラグ９００−１と、通信処理ＩＤ９００−２と、マスク情報９００−３と、暗号用アルゴリズムＩＤ９００−４と、暗号用鍵ＩＤ９００−５と、暗号用初期ベクトル９００−６と、改ざん検知用アルゴリズムＩＤ９００−７と、改ざん検知用鍵ＩＤ９００−８と、改ざん検知用初期ベクトル／改ざん検知用処理データ９００−９と、を含む。
【００５５】
暗号通信フラグ９００−１は、暗号通信の有無を示す情報である。通信処理ＩＤ９００−２は、暗号通信時の処理内容を示す情報である。マスク情報９００−３は、暗号化を実施するデータの位置を特定する情報である。暗号用アルゴリズムＩＤ９００−４は、暗号化を実施する際に利用するアルゴリズムを識別する情報である。暗号用鍵ＩＤ９００−５は、暗号化を実施する際に利用する鍵を識別する情報である。暗号用初期ベクトル９００−６は、暗号化を実施する際に利用する初期ベクトルの情報である。改ざん検知用アルゴリズムＩＤ９００−７は、改ざん検知を実施する際に利用するアルゴリズムを識別する情報である。改ざん検知用鍵ＩＤ９００−８は、改ざん検知を実施する際に利用する鍵を識別する情報である。改ざん検知用初期ベクトル／改ざん検知用処理データ９００−９は、改ざん検知を実施する際に利用する初期ベクトルや処理データの情報である。
【００５６】
暗号通信フラグ９００−１が「０１」の場合、暗号化および復号化の処理を行う。暗号用アルゴリズムＩＤ９００−４、暗号用鍵ＩＤ９００−５および暗号用初期ベクトル９００−６は、オンライン暗号処理部１１５およびオンライン復号処理部１３５で使用される。暗号通信フラグ９００−１、通信処理ＩＤ９００−２およびマスク情報９００−３も暗号化および復号化に必要な情報である。
【００５７】
改ざん検知用アルゴリズムＩＤ９００−７、改ざん検知用鍵ＩＤ９００−８および改ざん検知用初期ベクトル／改ざん検知用処理データ９００−９は、ＭＡＣであり、暗号処理部１１４および復号処理部１３４で使用される。
なお、暗号通信フラグ９００−１が「００」の場合、暗号化および復号化の処理は行われず、図９のデータ９００−２〜９００−９は存在しない。
【００５８】
ここで、暗号通信で送受信されるデータパケット構成は、暗号化処理を行うレイヤー（ＩＰ層やトランスポート層）に依存するため、ヘッダ９００の構成要素とサイズは、図９に限定されるものではない。また、ヘッダ９００の構成要素の順序も、図９に限定されるものではない。
（暗号送信データ／暗号受信データの構成）
図１０を参照して、部分暗号による通信保護システム１００において、送信装置１１０と受信装置１３０間で通信される暗号送信データ／暗号受信データの構成を説明する。以下では、図１０に示す表の各行の番号ｎを用いて、各項目の符号を（９１０−ｎ）（ｎ＝１〜３）と表記する。
【００５９】
暗号送信データ／暗号受信データ９１０は、暗号通信の有無や暗号アルゴリズム、暗号鍵等を示す情報であるヘッダ９１０−１と、ペイロードデータ９１０−２と、それらのＭＡＣデータ９１０−３から構成される。
【００６０】
ヘッダ９１０−１には、図９に示したデータ９００−１〜９００−９が含まれる。ペイロードデータ９１０−２には、平文、あるいは、暗号化対象以外の他の平文と暗号データとの組が含まれる。
【００６１】
ここで、暗号送信データ／暗号受信データ９１０の構成要素は、図１０に限定されるものではない。暗号用アルゴリズムＩＤ９００−４と暗号用鍵ＩＤ９００−５は、それぞれ、暗号アルゴリズムの識別のために、また、暗号用鍵の識別のために、実施の際には必要である。また、暗号送信データ／暗号受信データ９１０の構成要素の順序は、図１０に限定されるものではない。
（マージン乱数の割り当てポリシー）
図１１を参照して、図８のステップ８０２で取得されるポリシーを説明する。図１１において、送信装置１１０は、通信保護システム１００内の機器に対し優先度に、応じたグルーピングを行う。送信装置１１０は、優先度に応じ、マージン乱数を割り当てる。このため、送信装置１１０は、マージン乱数割り当ての優先度ポリシー９２０を参照する。
【００６２】
以上、実施例１によれば、受信が集中時に、ＣＰＵ負荷が高くなった場合でも、ジッタ（ゆらぎ）を起こさずに、高速な暗号化処理により通信路の安全性確保を行う制御装置が、全通信先との暗号化通信を継続可能である。
【００６３】
また、本実施例により、ＣＰＵ能力の余力を利用して、暗号処理につかう乱数を蓄積していくことが可能なため、ある時点で、システム管理者が、暗号通信の安全性を向上する必要があると判断した場合でも、蓄積した乱数を使用してより多くのデータを暗号化する機能（暗号ブースト機能）の利用により、システム管理者は指定した時間間隔における暗号通信の安全性を向上することができる。
【実施例２】
【００６４】
（部分暗号方式で用いるマスクの動的生成処理を行う制御装置）
実施例１は、ペイロードの全部分が暗号化対象である一般的な暗号方式、または、部分暗号方式において、ブロック暗号のカウンタモードの処理分解と事前処理が可能な処理を利用する際、暗号化処理の必要に応じて適切なタイミングで、乱数生成処理の事前処理を必要な量を出力し、乱数の出力データを通信先に対応するバッファに適切に割り当てる。
【００６５】
一方、実施例２は、実施例１と異なり、部分暗号方式のみ、すなわち、ペイロードに暗号対象部と非対象部が混在する。部分暗号方式に関して、ペイロードの保護領域を決めるためのデータであるマスクは、通信先およびアプリに依存する。通信先の変更、または、同じ通信先でもアプリの変更に応じて、マスクも変更する必要が生じる。この必要性に対応するために、マスクの生成または変更という処理を実施しなければならない。しかし、安全なマスクデータの生成を行うためには、暗号学的生成した乱数をマスクデータとする方法が有効である。しかし、この方法による計算コストは高く、適切に実施しなければ、制御業務に必要なリアルタイム性に悪影響を与える。
【００６６】
そこで、実施例２では、部分暗号方式に対応するために、制御業務に悪影響を与えず、かつ、通信先に対応した安全なマスクの動的生成処理を行う。実施例２は、部分暗号方式の処理を、事前処理であるマスク生成処理とそのマスクを利用した部分暗号処理という処理に分解する。暗号化処理の必要に応じて適切なタイミングで、マスク生成処理を必要な量のマスクを出力する。そして、出力したマスクを通信先に対応するバッファに適切に割り当てる。
【００６７】
実施例２のユースケースは、新規にアプリケーションが導入された場合、ペイロードにおける保護すべき領域はアプリケーションが指定する。したがって、このアプリケーションに対応する新しいマスクを生成する必要がある。特に、動的にアプリケーションが導入された場合には、制御システムの運用を続けるため、マスクの変更を動的に行うことが好ましい。
【００６８】
マスクに関しては、通信先ごとに異なるマスクを使用する。また、一般に、マスクは、そのデータ長がより大きければ、情報の保護と非保護に関する選択制御をより細かく実施できる。したがって、保護の優先度に応じて、通信先毎に、マスクの長さも変わる可能性がある。
【００６９】
また、マスクの動的生成と変更に関しては、変更前のマスクを完全に変更後のマスクに置き換える必要はない。変更後のマスクが変更前のマスクより長い場合、変更前のマスクに生成したビットを連結することで、マスクを延長して、それを変更後のマスクとすることも可能である。
【００７０】
図１２を参照して、実施例２における制御装置の構成を説明する。図１２において、送信装置１１０Ａは、送信部１１１と、送信データ生成部１１２と、ヘッダ生成部１１３と、鍵情報記憶部１１４と、オンライン暗号処理部１１５と、オフラインマスク生成部１２３と、マスク格納バッファ１２０と、マスク格納バッファ１２１と、マスク生成ポリシー情報格納部１２２と、を含んで構成されている。
【００７１】
送信装置１１０Ａは、通信パケットの暗号処理対象部に対してのみ暗号処理を行う部分暗号方式による暗号通信を行う。ここで、送信装置１１０Ａは、暗号対象パケットにおける暗号処理対象部を指定するデータであるマスクを用いる。
【００７２】
送信装置１１０Ａは、暗号処理対象データに対して、送信先に対応するマスク格納バッファからマスクを取り出す。このマスクを用いてオンライン暗号処理部１１５は、暗号処理を行う。送信データ生成部１１２は、当該暗号処理済みデータとヘッダ生成部１１３が生成したヘッダから、送信用データを生成する。当該データについて、送信部１１１は、制御サーバ１４０または受信装置１３０に送信する。
【００７３】
鍵情報記憶部１１４は、秘密鍵および関連する情報を格納する。送信部１１１は、外部への送信を行う。マスク格納バッファ１２０は、制御サーバ１４０との通信に対応するバッファである。マスク格納バッファ１２１は、受信処理を行う受信装置１３０との通信に対応するバッファである。オンライン暗号処理部１１５は、暗号処理対象データと上記マスク格納バッファ１２０またはマスク格納バッファ１２１内のデータを入力として暗号処理を行う。
【００７４】
オフラインマスク生成部１２３は、暗号処理対象データを入力せずに暗号処理の事前にマスクを生成する。オフラインマスク生成部１２３は、バッファ制御部１１６と、負荷状況監視部１１７と、を含む。オフラインマスク生成部１２３は、マスクを生成する。当該マスクについて、バッファ制御部１１６は、通信先に対応するバッファに生成したマスクを分配する。マスク格納バッファ１２０、１２１は、分配されたマスクを格納する。
【００７５】
バッファ制御部１１６は、マスク格納バッファ１２０とマスク格納バッファ１２１を制御する。負荷状況監視部１１７は、送信装置の負荷状況を監視する。
【００７６】
送信装置１１０Ａは、これらの処理部を用いて、マスクの動的生成処理を行う。
なお、実施例２において、送信装置１１０Ａは、２個の送信先に対応するため、マスク格納バッファとして、マスク格納バッファ１２０とマスク格納バッファ１２１の２個備える。しかし、より多くの通信先に対応できるように３個以上のバッファを備えても良い。（送信装置１１０Ａと受信装置１３０の暗号通信フロー）
図１３を参照して、送信装置１１０Ａが平文データを暗号化した後に送信し、受信装置１３０が受信し、受信データを復号化し、ペイロードデータを取得するフローを説明する。図１３において、送信装置１１０Ａは、暗号データ送信処理の前に、暗号対象データを入力せずに処理可能なマスク生成処理を行う（Ｓ２１１）。オフラインマスク生成処理に関しては、図１４にて詳細に説明する。
【００７７】
暗号データ送信処理に関して、送信装置１１０Ａは、はじめに送信先を取得する（Ｓ２１２）。暗号化の際に用いる暗号アルゴリズムおよび初期ベクトルを使用し、送信装置１１０Ａは、ヘッダを生成する（Ｓ２１３）。送信装置１１０Ａは、送信先に対応するマスクをマスク格納バッファ１２０から取得する（Ｓ２１４）。
【００７８】
送信装置１１０Ａは、取得したマスクを用いて平文データを部分暗号処理することにより、暗号処理済データを得る（Ｓ２１５）。送信装置１１０Ａは、ヘッダと暗号データを用いて、送信データを生成する（Ｓ２１６）。ここで、必要に応じ送信データに関する改ざん検知処理を行っても良く。また、この処理のためのメッセージ認証子生成に関しても、部分的にデータを抽出して行っても良い。送信装置１１０Ａは、送信データを送信する（Ｓ２１７）。暗号化送信データ送信後、送信装置１１０Ａは、マスク生成処理（Ｓ２１１）に戻って処理を行う。このように、送信処理を行う送信装置１１０Ａは、システム運用中に、マスクを動的に生成しながら、暗号処理を行う。
【００７９】
暗号データ受信処理に関して、受信装置１３０は、暗号化送信データを受信する（Ｓ３１１）。受信装置１３０は、受信データから送信元または受信先を取得する（Ｓ３１２）。受信装置１３０は、受信データを検証し、復号化の際に用いる暗号アルゴリズムおよび初期ベクトルを取得する（Ｓ３１３）。ここで、必要に応じて改ざん検知処理を行ってもよい。
【００８０】
受信装置１３０は、送信元に対応するマスクについて、受信データまたはマスク格納バッファから取得する（Ｓ３１４）。受信装置１３０は、マスクを用いて、暗号化対象部を取り出し、復号化する（Ｓ３１５）。受信装置１３０は、平文データを得て（Ｓ３１６）、ステップ３１１に遷移する。
（オフラインマスク生成フロー）
図１４を参照して、送信装置１１０Ａが、通信先に応じ、暗号通信するために用いるオフラインマスク生成処理を説明する。図１４において、オフラインマスク生成部１２３は、マスク格納バッファ１２０とマスク格納バッファ１２１それぞれにおけるマスク生成量を取得する（Ｓ５１１）。各バッファのマスク生成量を決定するフローに関しては、図１６を参照して、詳細に説明する。
【００８１】
マスク生成部１２３は、鍵情報を鍵情報格納部１１４から取得する（Ｓ５１２）。マスク生成部１２３は、マスク生成ポリシー情報格納部１２２から、マスク生成ポリシー情報を取得する（Ｓ５１３）。マスク生成部１２３は、取得した情報を入力とするマスク生成アルゴリズムを計算し、マスク格納バッファ（１２０）に関して、取得したマスク生成量の分のマスクの生成を行う（Ｓ５１４）。マスク生成部１２３は、取得したマスクについて、生成したマスクをマスク格納バッファ１２０に格納して（Ｓ２１５）、リターンする。なお、マスク生成ポリシーに関して、システム管理者、アプリケーションの管理者またはユーザ等が設定する。
（各バッファのマスク量決定のためのフロー）
図１５を参照して、バッファ制御部１１６による、マスク格納バッファ１２０、マスク格納バッファ１２１のそれぞれにおいて生成するマスク量を決定する処理を説明する。図１５において、バッファ制御部１１６は、マスク格納バッファ１２０とマスク格納バッファ１２１において生成するマスク量を測定する（Ｓ４２２）。マスク生成部１２３は、各バッファで生成が必要なマスク量を測定する（Ｓ４２３）。マスク生成部１２３は、各バッファにおけるマスク生成量を最終決定して（Ｓ４２４）、リターンする。
【００８２】
ステップ４２３の内容の詳細については、図１６により後述する。なお、ステップ４２４については、実施例１における図６と図８のそれぞれの処理において、乱数をマスクに置き換えることで、同様に処理が行えるので省略する。
（各バッファで必要なマスク生成量測定処理（Ｓ４２３）のための詳細フロー）
図１６を参照して、バッファ制御部１１６による、全バッファのマスク生成量測定する処理を説明する。図１６において、マスク生成部１２３は、現時刻で使用されているマスク自体およびマスクの長さを含むマスク情報を取得する（Ｓ６１１）。マスク生成部１２３は、各バッファに対して、マスク生成量が０より大きいか判定する（Ｓ６１３）。ＹＥＳのとき、マスク生成部１２３は、当該バッファで生成するマスク量を計算して（Ｓ６１４）、リターンする。ステップ６１３でＮＯのとき、マスク生成部１２３は、生成マスク量を０として（Ｓ６１５）、リターンする。
【００８３】
ここで、マスク量に関しては、ステップ６１１で取得したマスク情報に基づいてもよい。具体的には、新マスクを現マスクに追加のビットを連結することで生成する場合、マスク生成する量は、この追加のビットの量のみでよい。
【実施例３】
【００８４】
（メッセージ認証子（ＨＭＡＣ）の中間値の動的生成処理を行う送信装置）
実施例１において、制御システムが扱うデータの秘匿性に関して、暗号処理によるデータ保護を実施する場合を説明した。これに対して、実施例３は、制御システムが扱うデータの真正性に関して、改ざん検知処理によるデータ保護を実施する場合を説明する。データの改ざんを検知するために、ハッシュ関数に基づくメッセージ認証子（ＨＭＡＣ：Hash-based Message Authentication Code）生成という標準技術が知られている。
【００８５】
実施例１のＣＴＲ（カウンタ）モードとストリーム暗号と同様に、ＨＭＡＣの特徴として、処理は、中間ハッシュ値生成処理とＭＡＣ生成処理の二つのフェーズに分解できる。中間ハッシュ値生成は、処理対象となる平文とは無関係に独立して行うことができる。このため、事前に（平文確定前に）実行が可能である。
【００８６】
しかし、実施例１の場合と異なり、ｎ＋１ブロックから成る平文データの処理おいては、事前計算可能な部分は、構成暗号プリミティブであるハッシュ関数の１回分の呼び出し処理のみである。残りのｎブロックの処理に対応するｎ回のハッシュ関数の呼び出し処理は、事前に行うことはできない。
しかし、制御システムのように、情報システムで扱うデータに比べ、一般的に短いデータを扱う場合において、上記のように、暗号処理から事前処理を切り分けて実行することは有効である。また、実施例１では、平文毎に乱数を事前に生成し、平文を暗号化する度に乱数を消費したが、実施例３における中間ハッシュ値生成処理は、鍵を設定・変更した時にのみ、実施する処理である。しなわち、生成した中間ハッシュ値は、次の鍵の設定・変更時まで有効に使え、消費されることはない。したがって、実施例１と同様に、事前処理で生成したデータである中間ハッシュ値を格納するバッファを備える。しかし、実施例１と異なり、実施例３では、バッファ残存量監視部は備えない。
【００８７】
このハッシュ関数に基づくメッセージ認証子の生成に関して、検知対象データを入手する前に、鍵のみを入力としてハッシュ値の中間値を事前に計算可能である。一方、この事前処理については、通常、データ１ブロック分のハッシュ関数を計算することによる中間ハッシュ値の生成処理コストがある。制御システムはｍｓオーダーの短周期処理であり、この処理を適切に実行しなければ、制御業務に影響を与えかねない。
【００８８】
ユースケースとしては、ＨＭＡＣに用いる鍵が動的に更新された場合、前の鍵で計算された中間ハッシュ値は無効になる。このため、新たに更新後の鍵を用いて中間ハッシュ値の計算を再実施する必要ある。実施例３により、この計算処理を制御業務に影響を与えないように、適切に実行する。実施例３に関連するユースケースは、多数の通信先がグループ分けされ、グループに応じて鍵更新をするような状況において、すなわち、あるグループは鍵更新を行い、その他のグループは鍵更新を行わないような状況において、中間ハッシュ値の生成処理を行うというユースケースである。ここでは、送信装置は、更新機器のグループに対応するバッファの中身のみを更新し、他のグループに対応するバッファの中身は更新しない、特に、バッファごとに更新に関する判断が生じる。このような場合において、実施例の適用は有効となる。
【００８９】
実施例３における送信装置のシステム構成は、実施例１におけるシステム構成において送信装置１１０を送信装置１１０Ｂに置き換えたものである。
図１７を参照して、実施例３の送信装置の構成を説明する。図１７において、送信装置１１０Ｂは、通信パケットの暗号処理対象部に対してのみ暗号処理を行う部分暗号方式による暗号通信を行う。ここで、送信装置１１０Ｂは、暗号対象パケットを完全性に関して保護するメッセージ認証方式を用いる。
【００９０】
送信装置１１０Ｂは、送信部１１１と、送信データ生成部１１２と、ヘッダ生成部１１３と、鍵情報記憶部１１４と、オンライン暗号処理部１１５と、オフライン中間ハッシュ値生成部１２４と、中間ハッシュ値格納バッファ１２５と、中間ハッシュ値格納バッファ１２６と、を備える。
【００９１】
送信装置１１０Ｂは、暗号処理対象データに対して、送信先に対応する中間ハッシュ値格納バッファから中間ハッシュ値を取り出す。中間ハッシュ値を用いてオンライン暗号処理部１１５は、暗号処理を行う。送信データ生成部１１２は、暗号処理済みデータとヘッダ生成部１１３が生成したヘッダに基づいて、送信用データを生成する。生成データについて、送信部１１２は、制御サーバ１４０または受信装置１３０に送信する。
【００９２】
鍵情報記憶部１１４は、秘密鍵および関連する情報を格納する記憶部である。送信部１１１は、外部への送信を行う。中間ハッシュ値格納バッファ１２５は、制御サーバ１４０との通信に対応するバッファである。中間ハッシュ値格納バッファ１２６は、受信処理を行う受信装置１３０との通信に対応するバッファである。オンライン暗号処理部１１５は、暗号処理対象データと、中間ハッシュ値格納バッファ１２５または中間ハッシュ値格納バッファ１２６のデータとを入力として、暗号処理を行う。
【００９３】
オフライン中間ハッシュ値生成部１２４は、暗号処理対象データを入力せずに暗号処理の事前に中間ハッシュ値を生成する。オフライン中間ハッシュ値生成部１２４は、バッファ制御部１１６と、負荷状況監視部１１７と、を含んで構成されている。オフライン中間ハッシュ値生成部１２４は、中間ハッシュ値を生成する。オフライン中間ハッシュ値生成部１２４が生成した中間ハッシュ値について、バッファ制御部１１６は、通信先に対応するバッファに生成した中間ハッシュ値を分配する。中間ハッシュ値格納バッファ１２５、１２６は、中間ハッシュ値を格納する。
バッファ制御部１１６は、中間ハッシュ値格納バッファ１２５と中間ハッシュ値格納バッファ１２６を制御する。負荷状況監視部１１７は、送信装置の負荷状況を監視する。
送信装置１１０Ｂは、これらの処理部を用いて、中間ハッシュ値の動的生成処理を行う。
【００９４】
なお、実施例３において、送信装置１１０Ｂは、２個の送信先に対応するため、中間ハッシュ値格納バッファとして、中間ハッシュ値格納バッファ１２５と中間ハッシュ値格納バッファ１２６の２個備える。しかし、より多くの通信先に対応できるように３個以上のバッファを備えても良い。
【００９５】
実施例３の通信処理内容に関しては、乱数をハッシュ値中間値に置き換えると、実施例１におけるものと同様になるので、省略する。
【００９６】
なお、本発明は、上述した実施例に限定されるものではなく、その要旨の範囲内で様々な変形が可能である。そのような場合においてもシステム全体において行う処理に本質的な変化はない。
【符号の説明】
【００９７】
１１…通信装置、１２…入出力装置、１３…記憶部、１４…ＣＰＵ、１５…メモリ装置、１６…読取装置、１００…通信保護システム、１１０…送信装置、１１１…通信部、１１２…送信データ生成部、１１３…ヘッダ生成部、１１４…鍵情報記憶部、１１５…暗号処理部、１１６…バッファ制御部、１１７…負荷状況監視部、１１８…乱数格納バッファ、１１９…乱数格納バッファ、１３０…受信装置、１３１…通信部、１３２…送信データ生成部、１３３…ヘッダ検証部、１３４…鍵情報記憶部、１３５…復号処理部、１３６…バッファ制御部、１３７…負荷状況監視部、１３８…乱数格納バッファ、１３９…乱数格納バッファ、１４０…送信装置、１４１…暗復号処理部、１４２…通信部、１４３…ヘッダ生成部、１４４…ヘッダ検証部、１４５…制御業務監視部、１４６…送信データ生成部、１４８…鍵情報記憶部、１４９…通信データ保管部。
【図１】
2015144373.tif 000004
【図２】
2015144373.tif 000005
【図３】
2015144373.tif 000006
【図４】
2015144373.tif 000007
【図５】
2015144373.tif 000008
【図６】
2015144373.tif 000009
【図７】
2015144373.tif 000010
【図８】
2015144373.tif 000011
【図９】
2015144373.tif 000012
【図１０】
2015144373.tif 000013
【図１１】
2015144373.tif 000014
【図１２】
2015144373.tif 000015
【図１３】
2015144373.tif 000016
【図１４】
2015144373.tif 000017
【図１５】
2015144373.tif 000018
【図１６】
2015144373.tif 000019
【図１７】
2015144373.tif 000020