(57)【要約】【課題】不正動作プログラムの潜伏期間中においてもこれを検出し、当該不正動作プログラムによる通信システムへの攻撃を回避できる低コストの通信装置を提供する。【解決手段】本発明による通信装置は、少なくとも１つの動作プログラムを記憶し得る記憶部と、当該記憶部から読み出した動作プログラムの実行によって通信機能を実現する通信部とに加えて、当該記憶部が正規動作プログラムの全てを記憶するのに要する正規動作プログラム記憶容量と当該記憶部における動作プログラム現在占有容量とを間欠的に比較する不正改変検知部と、当該比較の結果に応じて当該通信部による当該記憶部からの当該正規動作プログラムの読出しの態様を制御する読出し制御部と、を含む。【選択図】図１
2008305060.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの動作プログラムを記憶し得る記憶部と、前記記憶部から読み出した動作プログラムの実行によって通信機能を実現する通信部と、を含む通信装置であって、
前記記憶部が正規動作プログラムの全てを記憶するのに要する正規動作プログラム記憶容量と前記記憶部における動作プログラム現在占有容量とを間欠的に比較する不正改変検知部と、
当該比較の結果に応じて前記通信部による前記記憶部からの前記正規動作プログラムの読出しの態様を制御する読出し制御部と、を含むことを特徴とする通信装置。
【請求項２】
前記読出し制御部は、前記正規動作プログラム記憶容量と前記動作プログラム現在占有容量とが一致しなかった場合に前記通信部による前記記憶部からの少なくとも１つの正規動作プログラムの読出しを禁止することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記読出し制御部は、前記正規動作プログラム記憶容量と前記動作プログラム現在占有容量とが一致しなかった場合に前記記憶部に記憶されている少なくとも１つの正規動作プログラムを消去するプログラム消去手段を更に含むことを特徴とする請求項１に記載の通信装置。
【請求項４】
前記不正改変検知部の機能を実現する容量比較プログラム及び前記読出し制御部の機能を実現する読出し制御プログラムには難読化処理が施されていることを特徴とする請求項１に記載の通信装置。
【請求項５】
前記難読化処理は自身に固有の識別情報を前記検知プログラム及び読出し制限プログラムに反映させて難読化することを特徴とする請求項４に記載の通信装置。
【請求項６】
前記記憶部における前記動作プログラムの記憶アドレスは相対的であることを特徴とする請求項１に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶しているプログラムの実行によって通信機能を実現する通信装置に関する。
【背景技術】
【０００２】
複数の通信装置やサーバなどで構成される通信システムに不正に侵入し、当該通信装置の内の１つに成りすまして他の通信装置を攻撃する攻撃手段が知られている。従来、ＰＫＩ（Public Key Infrastructure）が適用された公開鍵や予め共有する秘密鍵を用いて通信システムへのアクセス認証を行い、アクセスしたものが正規のメンバーであるか否かを判別して成りすましに対処していた。しかしながら、非特許文献１に報告されているように、近年、様々なタンパリング技術が開発されている。例えば、メモリに高強度の放射線を照射してメモリの記憶内容を読み取る技術やメモリをプロービングしてアクセスがなされたメモリアドレスを判別する技術などがある。例えば成りすましによる通信システムへの攻撃を画策している攻撃者は、これら２つの技術を用いて暗号鍵を特定するといったことが可能である。具体的には攻撃者は、通信装置のメモリ内部の状態を監視しつつ、暗号器に暗号文を入力する。通常、暗号器が暗号文に基づいて行う暗号化処理の極めて初期の段階で暗号鍵を読み出すため、攻撃者は、初期段階のアクセス履歴を記録、参照することにより、暗号鍵の記憶場所を絞ることができる。その後、絞込みによって得られた情報に基づいて順次、アクセスを試みることで、最終的に暗号鍵の記憶場所を特定することができる。
【０００３】
例えば、特許文献１にはタンパリングを防止するための装置が開示されている。ここでは、装置内部に光学センサーが備えられ、当該装置のカバーが開けられたときに当該光学センサーが外光の入射を感知したことをもってタンパー動作（タンパリング）の検出とし、タンパー動作が検出された場合に所定のメモリ内の情報を消去するなどの耐タンパー処理をなすタンパー動作検出装置が開示されている。
【０００４】
また、近年、通信装置の振る舞いを外部から監視する、例えばＩＤＳ（Intrusion Detection System）などの不正検知システムに関する研究開発も行われている。不正検知システムは、攻撃者によって暗号鍵に関する情報を読み出され、通信システムに侵入されてしまった場合にも、攻撃者が不正に操作している通信装置の振る舞いの統計に基づいて不正を推定することを特徴としている。
【非特許文献１】ハードウェアに関わるセキュリティ評価の調査  報告書  第１．０版  ２００５年３月  独立行政法人  情報処理推進機構
【特許文献１】特開２００４−２２７１４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示される如き特殊な耐タンパリング装置を用いる場合、追加のコストが発生してしまう。特に耐タンパリング装置を、通信ネットワークを構成する全て通信装置に備えるとなると、そのコストは膨大なものになってしまう。その上、例えば、故障した通信装置を修理するために、装置のカバーを開ける際、誤った開け方をしてしまうと、暗号鍵の情報などを含むメモリ内の情報が消去されてしまうという問題がある。そのため、通信装置のメンテナンスを困難にしてしまうといった難点もある。
【０００６】
また、不正検知システムは、常時若しくは定期的に不正な振る舞いをしている場合（例えば定期的に不明なデータを流している場合）には、その不正を検出可能である。しかしながら、例えば、コンピュータウィルスの如く潜伏期間を有する不正動作プログラムが埋め込まれた通信装置が、不正動作プログラムの潜伏中においては完全に正規の通信装置と同じ振る舞いをする場合、不正検知システムは、その潜伏期間中においては不正動作プログラムを検出することができないという問題点があった。
【０００７】
本発明は上記した如き問題点に鑑みてなされたものであって、不正動作プログラムの潜伏期間においてもこれを検出し、当該不正動作プログラムによる通信システムへの攻撃を回避できる低コストの通信装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明による通信装置は、少なくとも１つの動作プログラムを記憶し得る記憶部と、前記記憶部から読み出した動作プログラムの実行によって通信機能を実現する通信部と、を含む通信装置であって、前記記憶部が正規動作プログラムの全てを記憶するのに要する正規動作プログラム記憶容量と前記記憶部における動作プログラム現在占有容量とを間欠的に比較する不正改変検知部と、当該比較の結果に応じて前記通信部による前記記憶部からの前記正規動作プログラムの読出しの態様を制御する読出し制御部と、を含むことを特徴とする。
【発明を実施するための最良の形態】
【０００９】
以下、本発明に係る実施例について添付の図面を参照しつつ詳細に説明する。
【００１０】
図１は本発明による通信装置１−１を表すブロック図である。通信装置１−１は、ネットワークの管理や伝送路を介した通信フレームの中継を行うための通信装置若しくは通信端末であり、記憶部１０と、通信部３０と、不正改変検知部４０と、読出し制御部５０と、を含む。
【００１１】
記憶部１０は、通信装置１−１の機能を実現するための少なくとも１つの動作プログラムを記憶し得る更新自在なメモリである。記憶部１０は正規動作プログラム２０−１〜２０−ｎを記憶している（ここでのｎは正整数）。正規動作プログラム２０−１〜２０−ｎは例えば、通信フレーム送受信の機能や種々のアプリケーションを実行する機能を実現するための動作プログラムである。
【００１２】
通信部３０は、記憶部１０から正規動作プログラム２０−１〜２０−ｎのうちのいずれかを読み出し、読み出した動作プログラムの実行によって通信機能を実現する。例えば通信部３０は、記憶部１０から、通信フレームの送受信の機能を実現するための正規動作プログラム２０−１を読み出し、これを実行して通信フレームの送受信をなす。
【００１３】
不正改変検知部４０は、記憶部１０内において不正になされた改変を検知する機能を有する。例えば不正改変検知部４０は記憶部１０内の記憶容量の比較によって当該検知をなすことができる。詳細には不正改変検知部４０は、記憶部１０が正規動作プログラム２０−１〜２０−ｎの全てを記憶するのに要する正規動作プログラム記憶容量と、記憶部１０における動作プログラム現在占有容量と、を間欠的に（例えば１０ミリ秒間隔の周期にて）比較する。ここでの動作プログラム現在占有容量とは、不正改変検知部４０における比較処理時点において、正規動作プログラム２０−１〜２０−ｎと正規では無い不正動作プログラムとを含む全ての動作プログラムが記憶部１０を占有している容量である。以下、当該比較によって得られた結果を容量比較結果と称する。当該比較の結果、動作プログラム現在占有容量と正規動作プログラム記憶容量とが一致しなかった場合に不正改変検知部４０は記憶部１０の記憶内容が改変されたと判別する。例えば不正改変検知部４０は、工場出荷時などに正規動作プログラム記憶容量を記憶しておく。なお、記憶部１０に予め記憶されている正規動作プログラム２０−１〜２０−ｎは、その機能を実現する際に、動的にコードを増減するなどして記憶部１０の使用容量を増減しない。
【００１４】
ここで、通信システムを構成する複数の通信装置の内のいずれかの動作を支配して正常な通信装置に成りすますことにより、通信システムへの攻撃を画策している攻撃者がいるとする。通常、攻撃者は、正常な通信装置に完全に成りすますことが必須であると考えているため、記憶部１０に予め記憶されている正規動作プログラム２０−１〜２０−ｎを変更することは無い。そこで、攻撃者は、記憶部１０に予め記憶されている正規動作プログラム２０−１〜２０−ｎとは別に、通信システムへの攻撃を仕掛けるための悪意のある不正動作プログラムを記憶部１０の空き領域に記憶させることになる。この場合、記憶部１０内における動作プログラムの占有容量が増加するため、記憶部１０の動作プログラム現在占有容量と正規動作プログラム記憶容量とを比較したときに両者が一致せず、不正改変検知部４０は、記憶部１０の記憶内容が改変されたと判別することができる。容量比較結果は図示せぬレジスタ若しくはメモリなどの記憶領域若しくは読出し制御部５０内に記憶される。
【００１５】
読出し制御部５０は、容量比較結果に応じて通信部３０による記憶部１０からの正規動作プログラム２０−１〜２０−ｎの読出しの様態を制御する。具体的には、読出し制御部５０は、動作プログラム現在占有容量と正規動作プログラム記憶容量とが一致しなかった場合に、通信部３０による記憶部１０からの正規動作プログラム２０−１〜２０−ｎの内の少なくとも１つの読出しを禁止する。読出し制御部５０は、図示せぬレジスタ若しくはメモリなどの記憶領域に記憶されている容量比較結果若しくは自身が記憶している容量比較結果を参照することにより、動作プログラム現在占有容量と正規動作プログラム記憶容量とが一致したか否か、すなわち、不正改変検知部４０が記憶部１０の記憶内容改変を検知したか否かを判別する。
【００１６】
例えば、改変が検知された場合に論理値１、改変が検知されなかった場合に論理値０、の容量比較結果が図示せぬメモリに記憶されているものとする。読出し制御部５０は、当該メモリから容量比較結果すなわち論理値１若しくは０を読み出す。読出し制御部５０は、改変がなされていないことを意味する正常値としての論理値０を予め記憶しており、受け取った論理値と正常値とを比較する。受け取った論理値が０である場合、読出し制御部５０は「真」の結果を得て、受け取った論理値が１である場合、読出し制御部５０は「偽」結果を得る。
【００１７】
読出し制御部５０が「偽」の結果を得た場合すなわち記憶部１０の記憶内容改変が検知された場合、読出し制御部５０は、通信部３０による記憶部１０からの正規動作プログラム２０−１〜２０−ｎの内の少なくとも１の読出しを禁止する。例えば、読出し制御部５０が、通信部１０による、通信フレームの送受信の機能を実現するための正規動作プログラム２０−１の読み出しを禁止した場合、通信部３０は通信フレームを送受信できなくなる。読出し制御部５０が「真」の結果を得た場合すなわち記憶部１０の記憶内容改変が検知されなかった場合、読出し制御部５０は記憶部１０からの正規動作プログラム２０−１〜２０−ｎの読み出しを禁止しない。読出し制御部５０は、動作プログラム現在占有容量が正規動作プログラム記憶容量と一致しなかった場合すなわち「偽」の結果を得た場合に、記憶部１０に記憶されている正規動作プログラム２０−１〜２０−ｎの内の少なくとも１を消去するプログラム消去手段を更に含む。例えば、読出し制御部５０が、通信フレームの送受信の機能を実現するための正規動作プログラム２０−１を消去した場合、通信部３０は通信フレームを送受信できなくなる。このように、読出し制御部５０は、不正改変検知部４０による記憶部１０の容量比較によって得られた改変検知結果に応じて、自身が属する通信装置１−１の機能の一部又は全部を機能不全に陥らせる。不全に陥らせる機能は上記したものに限定されず、通信システムへの悪影響を防止することができるのであれば他の機能でも良い。
【００１８】
図２は通信装置１−１〜１−９の各々を通信路３を介して相互に接続してなる通信システム２を表すブロック図である。通信装置１−２〜１−９の各々も通信装置１−１と同様に図１に示される構成である。通信装置１−１〜１−９の各々は相互にコマンドフレームを送受信している。通信装置１−１〜１−９の各々に含まれている通信部３０は、コマンドフレームを受信したら、当該フレームが示すコマンドに応じて、記憶部１０に記憶されている正規動作プログラム２０−１〜２０−ｎの内のいずれかを読み出す。
【００１９】
不正改変検知部４０の機能及び読出し制御部５０の機能は動作プログラムによっても実現可能である。以下、不正改変検知部４０の機能を実現する動作プログラムを容量比較プログラム、読出し制御部５０の機能を実現する動作プログラムを読出し制御プログラムとそれぞれ称する。不正改変検知部４０の機能及び読出し制御部５０の機能をこれら両動作プログラムによって実現する場合、これら両動作プログラムは記憶部１０に記憶される。例えば、通信装置１−１〜１−９の全てにおいて、記憶部１０内における容量比較プログラム及び読出し制御プログラムの記憶領域が同一であった場合、一度、ある通信装置で、記憶部１０内における容量比較プログラム及び読出し制御プログラムの記憶領域が攻撃者に特定されてしまうと、他の同型の通信装置への攻撃が容易になってしまう。ここでの他の同型の通信装置への攻撃とは、容量比較プログラム及び読出し制御プログラムを削除したり、ＮＯＰ（Ｎｏ Operation）命令でこれらのプログラムを書き換えるなどして攻撃対象の通信装置を不能にしてしまうことである。これを回避するために通信装置１−１〜１−９の各々の記憶部１０は、互いに異なる記憶領域に容量比較プログラム及び読出し制御プログラムを記憶しているのが望ましい。すなわち、記憶部１０における動作プログラムの記憶アドレスを一意に定めず、相対的にするのが望ましい。例えば、通信装置１−１〜１−９の製造時に、生成した乱数に基づいて記憶部１０における動作プログラムの記憶アドレスをランダムに決定して、通信装置１−１〜１−９の各々で動作プログラムの記憶アドレスを異なるようにする。
【００２０】
容量比較プログラム及び読出し制御プログラムには難読化処理が施されている。難読化処理は通信装置１−１の製造段階において施される。難読化処理は、記憶部１０に記憶されている複数の動作プログラムの中から容量比較プログラム及び読出し制御プログラムを攻撃者に特定されないようにするために必要な処理である。難読化処理が施された動作プログラムは、その機能により、例えば、正規の処理にダミーの処理を織り交ぜた処理や、一連の処理の中で意図的に特定の処理の順序を変更するなどの処理をなし、これによって、動作プログラム本来の処理の特徴がカムフラージュされる効果が得られ、攻撃者による動作プログラムの特定が困難になる。
【００２１】
容量比較プログラム及び読出し制御プログラムは、自身の属する通信装置の固有識別情報（ノード固有のパラメータやその他の差別化情報など）を反映して難読化されているのが望ましい。仮に難読化後の動作プログラムを構成するコード列が全ての通信装置において同一であった場合、一度、ある通信装置で容量比較プログラム及び読出し制御プログラムのコードが特定されてしまうと、攻撃者が他の同型の通信装置に対しても同様のコードパターンマッチングを行うにより、容量比較プログラム及び読出し制御プログラムを容易に特定できてしまうためである。
【００２２】
容量比較プログラム及び読出し制御プログラム以外の動作プログラムも難読化処理が施されているのが望ましい。このようにすれば、難読化の有無のみによってこれら両動作プログラムが特定されるのを防ぐことができる。
【００２３】
難読化処理は例えば、文献１「東京大学  理学部  情報科学科  学位論文  命令とデータの混合による効果的なソフトウェアの難読化  佐藤秀明」に開示される難読化手法によりなされる。当該手法によってメモリ内の命令とデータを混合させることにより、既存の逆コンパイラツールが逆アセンブル段階でエラーとなることが当該文献内で報告されている。
【００２４】
また、文献２「命令のカムフラージュによるソフトウェアの保護法方  神埼雄一郎、門田暁人、中村匡秀、松本健一他  電子情報通信学会論文誌  Ａ  Ｖｏｌ．Ｊ８７−Ａ  Ｎｏ．６  ｐｐ．７５５−７６７」に開示される難読化手法を用いて難読化しても良い。当該文献内では、動作プログラムの実行前後はダミー命令により本来の命令を偽装し、実行時のみ本来の命令が出現するようにすることにより、バイナリコードの難読化効果が得られることが報告されている。難読化手段はこれらの既存技術に限定されるものではなく、バイナリコードからプログラム処理内容を判読し難くする信頼性の高い難読化手段であれば他の難読化手段でも良い。
【００２５】
上記した文献２に記載の手法により容量比較プログラム及び読出し制御プログラムを難読化した場合について以下に説明する。当該文献の７５９ページに記載のカムフラージュプログラムの作成例によれば、難読化対象アセンブリコードの任意の命令を一旦退避し、その上で偽の命令を上書きし、偽の命令が実行される前の任意のタイミングに偽の命令が真の命令で置き換えられるように３行程度の命令を生成、挿入する。そして真の命令が実行された後の任意のタイミングで真の命令を元に戻すようにしている。これにより、命令実行の前後の限られた期間にのみ真の命令が表れ、それ以外の時刻には偽の命令が出現する。更に真の命令を復元する部分を同様の方法で難読化することで、難読化のチェーンを広範囲に広げることが可能となり、アルゴリズムを読み解くことを困難にする。この手法によれば、難読化対象の容量比較プログラム及び読出し制御プログラムの命令数が多いほどダミーを挿入する箇所を増やす必要があるものの、当該文献にはコード数を定数パラメータとして挿入するダミーコードの数と解読成功率との関係が数式として表されており、この数式から必要なダミーコードの数を知ることができる。当該文献には例として１０００命令からなるコードではダミーコードを６０箇所に挿入すると、静的解析の成功率は限りなく０に近くなることが報告されている。
【００２６】
以下に通信システム２における通信装置１−１の動作について説明する。通信装置１−１に電源が投入されると、通信装置１−１は通常動作を開始する。通信装置１−１における通常動作中に、間欠的に不正改変検知部４０及び読出し制御部５０による機能制御処理がなされる。
【００２７】
図３は不正改変検知部４０及び読出し制御部５０による機能制御処理を表すフローチャートである。不正改変検知部４０は、記憶部１０の動作プログラム現在占有容量と正規動作プログラム記憶容量とを比較して（ステップＳ１）、得られた容量比較結果を図示せぬメモリに記憶せしめる（ステップＳ２）。読出し制御部５０は、当該メモリに記憶されている容量比較結果を読み出して（ステップＳ３）、これに基づいて、不正改変検知部４０によって記憶部１０の記憶内容の改変が検知されたか否かを判別する（ステップＳ４）。改変が検知されていた場合、読出し制御部５０は、通信部３０による記憶部１０からの正規動作プログラム２０−１〜２０−ｎの内の少なくとも１つの読出しを禁止することによって、自身の属する通信装置１−１の機能の一部又は全部を停止する（ステップＳ５）。改変が検知されてなかった場合、読出し制御部５０は、そのまま機能制御処理を終了する。この機能制御処理は通信装置１−１の通常動作中に間欠的に繰り返される。
【００２８】
ここで、通信システム２への攻撃を画策している攻撃者が、通信装置１−１を最初の標的とした場合の通信装置１−１の動作について説明する。攻撃者は最初に通信装置１−１が有する秘密情報やプログラムなどを含む全ての情報をタンパリングにより取得したとする。攻撃者は以下に述べる通信装置１−１〜１−９の特徴を利用して、攻撃者自身が合図した場合にのみ悪意のある不正動作プログラムが実行されるようにする。通常、通信装置１−１〜１−９の各々は相互にコマンドフレームを送受信しており、当該フレームが示すコマンドに応じて、記憶部１０に記憶されている正規動作プログラム２０−１〜２０−ｎの内のいずれかを読み出している。このコマンドには数値で表される識別子が付されており、その識別子の中には予約された識別番号が含まれている。この予約された識別番号は、将来の機能拡張のために設けられている識別番号であり、現時点での通信システム２においては使用されない番号である。この予約された識別番号を利用する際には予約コマンドが用いられる。攻撃者は先ず、通信装置１−１の記憶部１０に悪意のある不正動作プログラムを記憶せしめる。次に攻撃者は、通信装置１−１の通信部３０が予約コマンドに応じて不正動作プログラムを呼び出して動作せしめるように、通信部３０を改造する。
【００２９】
正常状態にある通信システム２においては、予約コマンドは送受信されないため、記憶部１０に不正動作プログラムが記憶されたことや通信部３０が改造されたことを、通常の不正検知システムによって検知することはできない。攻撃者は通信装置１−１に施したのと同様の改造を通信装置１−２〜１−９にも施しておき、機を見計らって、攻撃を実行に移すタイミングで、予約コマンドを通信システム２内に流布することによって、通信装置１−１〜１−９の各々から一斉に通信システム２を攻撃しようと企んでいる。
【００３０】
しかしながら、攻撃者が通信装置１−１の記憶部１０に不正動作プログラムを記憶せしめた場合、不正動作プログラムの容量分だけ記憶部１０の使用容量が増加し、動作プログラム現在占有容量と正規動作プログラム記憶容量とが一致しなくなる。通信装置１−１は図３に示す如き機能制御処理を間欠的に実行しており、攻撃者が通信装置１−２〜１−９に対しても通信装置１−１に施したのと同様の改造を完了させるまでに、通信装置１−１の不正改変検知部４０が、記憶部１０の動作プログラム現在占有容量と正規動作プログラム記憶容量とが一致しないことをもって、記憶部１０の記憶内容が改変されたことを検知することができる。
【００３１】
改変の検知がなされた場合、通信装置１−１の読出し制御部５０は、通信部３０による記憶部１０から正規動作プログラム２０−１〜２０−ｎの内の少なくとも１つの読出しを禁止する。例えば通信フレームの送受信を実現する正規動作プログラム２０−１の読み出しを禁止すれば、通信装置１−１は予約コマンドを受信できなくなり、不正動作プログラムの動作を阻止できる。併せて通信装置１−１は通信路３を介して通信装置１−２〜１−９を攻撃できなくなる。また、記憶部１０にプログラムを記憶する機能を実現する正規動作プログラム２０−２の読み出しを禁止し、記憶部１０の記憶内容を全消去すれば、不正動作プログラム自体を削除でき、また、通信装置１−１の種々の機能を実現する正規動作プログラム２０−１〜２０−ｎも削除することができる。このように、通信装置１−１は、記憶部１０の記憶内容が改変された場合に、自身を機能不全に陥らせることにより、通信システム２を攻撃者から防御する。
【００３２】
不正改変検知部４０の機能及び読出し制御部５０の機能を容量比較プログラム及び読出し制御プログラムによって実現する場合には以下の効果も奏する。例えば攻撃者が記憶部１０に記憶されている容量比較プログラム及び読出し制御プログラムの削除またはＮＯＰ命令による書き換えを試みたとしても、これら両動作プログラムには難読化処理が施されているため、攻撃者は記憶部１０に記憶されている複数のプログラムの中からこれら両動作プログラムを特定することができない。仮に攻撃者が通信装置１−１の記憶部１０内におけるこれら両動作プログラムの記憶領域を特定できたとしても、通信装置１−１〜１−９の各々の記憶部は、互いに異なる記憶領域にこれら両動作プログラムを記憶しているため、通信装置１−２〜１−９の各々に対しても通信装置１−１に施したのと同様の改造を施すためには、通信装置毎に記憶部１０におけるこれら両動作プログラムの記憶領域を特定しなければならず、通信装置１−１〜１−９の全てを改造するまでには相当の時間がかかる。この場合、上記した通信システム防衛処理によって改造された通信装置が自身を機能不全に陥らせることにより、通信システム２全体に被害が及ぶのを防ぐことができる。
【００３３】
また、攻撃者が通信装置１−１において解析した容量比較プログラム及び読出し制御プログラムのコードをそのまま、通信装置１−２〜１−９の各々に対して適用してパターンマッチングにより、記憶部１０におけるこれら両動作プログラムの記憶場所を特定しようと試みたとする。通信装置１−１〜１−９の各々の記憶部１０は、通信装置毎に固有のパラメータを反映させて難読化された容量比較プログラム及び読出し制御プログラムを記憶しているため、通信装置１−１における解析によって得られた動作プログラムのコードをそのまま、通信装置１−２〜１−９の各々に対して適用しても、記憶部１０におけるこれら両動作プログラムの記憶場所を特定することができない。
【００３４】
上記した如く本実施例による通信装置は、間欠的に記憶部１０の動作プログラム現在占有容量と正規動作プログラム記憶容量とを比較する不正改変検知部４０と、当該比較の結果に応じて通信部３０による記憶部１０からの正規動作プログラムの読出しを制御する読出し制御部５０とを有し、当該動作プログラム現在占有容量が当該正規動作プログラム記憶容量と一致しなかった場合すなわち記憶部１０に悪意のある不正動作プログラムが記憶せしめられた場合に、通信部３０による記憶部１０からの正規動作プログラムの読出しを禁止して自身を機能不全とすることにより、不正動作プログラムの動作を阻止すると共に自らの通信システムへの攻撃を回避できる。通信装置がこれら不正改変検知部４０及び読出し制御部５０を備えることによって不正動作プログラムによる通信システムへの攻撃を回避できるため、各通信装置に特殊な耐タンパリング装置を備え付ける必要がなくなり、コストを大幅に削減できる。
【００３５】
通常の不正検知システムは、通信装置の振舞いを監視して、不振な振舞いを検知した場合に不正検知と判別するため、攻撃者によって通信装置に不正動作プログラムが埋め込まれていたとしても、不正動作プログラムが動作するまでの潜伏期間中においてはこれを検知できない。これに対して、本実施例による通信装置は、攻撃者が悪意のある不正動作プログラムを記憶部１０に記憶せしめることによって増加した動作プログラム現在占有容量と正規動作プログラム記憶容量とが一致しないことをもって改変検知とするため、不正動作プログラムの潜伏期間中においてもこれを検知することができる。
【００３６】
不正改変検知部４０及び読出し制御部５０の機能を動作プログラムにより実現した場合には以下の効果も奏する。通信装置が当該動作プログラムを備えることによって不正動作プログラムによる通信システムへの攻撃を回避できるため、各通信装置に特殊な耐タンパリング装置を備え付ける必要がなくなり、コストを大幅に削減できる。
【００３７】
複数の通信装置の各々の記憶部１０が互いに異なる記憶領域に容量比較プログラム及び読出し制御プログラムを記憶することにより、仮にある通信装置においてこれら両動作プログラムの記憶領域が特定されてしまったとしても、他の同型の通信装置におけるこれらの動作プログラムの記憶領域を特定するためには、別途新たな特定作業が必要となり、当該他の同型の通信装置への攻撃を困難にすることができる。
【００３８】
容量比較プログラム及び読出し制御プログラムには難読化処理が施されているため、記憶部１０内に記憶されている複数の動作プログラムの中からこれらを特定することは困難である。また、これら両動作プログラム以外の動作プログラムにも難読化処理を施すことにより、難読化の有無のみによって特定されることを回避できる。更に通信装置毎の固有情報を反映させて動作プログラムを難読化することにより次のような効果を奏する。すなわち、攻撃者が仮にある通信装置において容量比較プログラム及び読出し制御プログラムのコードを特定し、他の同型の通信装置に対してコードパターンマッチングを行ったとしても、通信装置毎にこれら両動作プログラムのコードが異なるため、攻撃者はこれら両動作プログラムを特定できない。
【図面の簡単な説明】
【００３９】
【図１】本発明による通信装置を表すブロック図である。
【図２】通信装置を通信路を介して相互に接続してなる通信システムを表すブロック図である。
【図３】機能制御処理ルーチンを表すフローチャートである。
【符号の説明】
【００４０】
１−１〜１−９  通信装置
２  通信システム
３  通信路
１０  記憶部
２０−１〜２０−ｎ  正規動作プログラム
３０  通信部
４０  不正改変検知部
５０  読出し制御部
【図１】
2008305060.tif 000003
【図２】
2008305060.tif 000004
【図３】
2008305060.tif 000005