【文献】
小山恭平ほか,ソースコードからの決定表生成における冗長性除去技術,情報処理学会研究報告ソフトウェア工学(SE),情報処理学会,2018年03月02日,Vol.2018-SE-198, No.35,p.1-7
【文献】
酒井政裕ほか,記号実行によるプログラム改造支援技術,東芝レビュー,株式会社東芝,2012年12月01日,第67巻 第12号,p.35-38
(58)【調査した分野】(Int.Cl.,DB名)
解析対象であるプログラム形式のシグネチャと、入力値であるシンボル化されたデータ・ログとの入力を受け付けると、シンボリック実行エンジンを利用してプログラム形式のシグネチャを解析し、前記入力値に対して行う条件分岐の処理を、入力値に対する制約として出力する実行部と、
出力された前記入力値に対する制約が入力されると、各フォーマット間のフィールド対応表に基づいて、前記入力値に対する制約と出力先フォーマットのフィールド変換を行い、静的なシグネチャを出力する変換部と、
を有することを特徴とする変換装置。
前記実行部は、前記プログラム形式のシグネチャが検知と判断するまで、シンボル化されたデータに対して行う条件分岐の処理を、前記入力値に対する制約とする形式で出力することを特徴とする請求項1に記載の変換装置。
前記変換部は、前記入力値に対する制約の中のシンボル変数名と、各フォーマット間のフィールド対応表のうち前記出力先フォーマットのフィールド名の対応表とを基にフィールドの変換を行うことを特徴とする請求項1または2に記載の変換装置。
解析対象であるプログラム形式のシグネチャと、入力値であるシンボル化されたデータ・ログとの入力を受け付けると、シンボリック実行エンジンを利用してプログラム形式のシグネチャを解析し、前記入力値に対して行う条件分岐の処理を、入力値に対する制約として出力するステップと、
出力された前記入力値に対する制約が入力されると、各フォーマット間のフィールド対応表に基づいて、前記入力値に対する制約と出力先フォーマットのフィールド変換を行い、静的なシグネチャを出力するステップと、
をコンピュータに実行させるための変換プログラム。
【背景技術】
【0002】
パターンマッチングは、特定のパターンをデータやログの中から見つけ出す技術である。このパターンマッチングは、セキュリティのあらゆる分野で応用されている。
【0003】
例えば、ネットワーク侵入検知システム(IDS(Intrusion Detection System))では、不正なトラフィックのパターンをシグネチャとして保持し、監視対象ネットワークを流れるデータがこのパターンを含んでいるかを調べることによって、不正なトラフィック、つまり攻撃者による攻撃や侵入を検知している。また、アンチウィルスでは、マルウェアの中に見られる特徴的なバイト列や文字列のパターンをシグネチャとして保持し、調査対象のファイルの中に、このシグネチャで記述されたパターンが含まれているかを調べることによって、マルウェアの検知を行っている。このように、大量のデータやそのデータを加工・記録したログの中から特定のパターンを見つける技術は、セキュリティの分野においても基本技術である。
【0004】
このパターンマッチングを利用したシステムの検知精度、つまり、IDSやアンチウィルスの検知精度は、不正なトラフィックパターンやマルウェアに特徴的なバイト列や文字列を記述したシグネチャの正確性やその量に依存する。言い換えると、攻撃やマルウェアの種類を網羅するようにシグネチャを保持することができるならば、多くの攻撃や侵入やマルウェアを漏れなく検知することができるといえる。
【0005】
世の中には様々なフォーマットのシグネチャが存在し、それぞれの利用用途やユースケースに応じた形で利用されている。ここでは、これらのシグネチャをプログラムとして実行可能なシグネチャ(プログラム形式のシグネチャ)と、プログラムとして実行できないシグネチャ(静的なシグネチャ)とに分類する。
【0006】
プログラム形式のシグネチャとは、C言語、Python、或いは、そのシグネチャを利用するソフトウェア・機器専用の言語によって記述されたシグネチャである。別の言い方をすると、命令型言語で書かれたものである。プログラム形式のシグネチャによれば、データやログを入力として受け取り、それらのデータやログに対する、特定の攻撃やマルウェアを検知するための条件を、プログラムとして記述することができる。プログラム形式のシグネチャによれば、プログラムとして記述することによって、各プログラム言語やそのライブラリが提供する豊富な機能を利用して検知条件を記述することができる。したがって、プログラム形式のシグネチャを用いることによって、開発のコストやメンテナンスのコストを高めることができる。
【0007】
しかしながら、一方で、プログラム形式のシグネチャを利用するソフトウェア・機器は、そのプログラムの実行環境をソフトウェア・機器の内部に持つ必要がある。このため、プログラム形式のシグネチャは、利用できるソフトウェア・機器が特定のソフトウェア・機器に固定されやすく、特定のソフトウェア・機器上でのみ動作させることができるといった状況が生まれやすい。
【0008】
一方、静的なシグネチャとは、データやログの中から見つけ出したいパターンや性質を記述したものであり、OpenIOCやCyboxやSnortなどがあり、宣言型言語で書かれたものも含んでいる。静的なシグネチャによれば、データやログを入力として受け取り、特定の攻撃やマルウェアを検知するための性質や特徴やパターンを記述することができる。静的なシグネチャによれば、検知のための特徴をパターンや性質として記述することによって、検知すべき対象を簡潔に記述できる。
【0009】
ここで、この静的なシグネチャを利用するソフトウェア・機器はマッチングを行うエンジンを保持する必要があるものの、検知のためのロジックの簡潔さにより、プログラム形式のシグネチャのようにプログラム言語の実行環境を内部に保持することに比べれば、はるかにコストが低い。また、静的なシグネチャの場合には、パターンマッチングに特化させて実装することができるため、高速に動作することができる。このため、静的なシグネチャは、プログラム形式のシグネチャに比べ、より多くのソフトウェア・機器がサポートしていることが多い。
【0010】
しかしながら、静的なシグネチャは、プログラム形式のシグネチャとは異なり、あらかじめ決められた範囲での検知ロジックしか利用できないため、詳細な検知ルールを記述するのは難しいという場合があった。
【0011】
これらのシグネチャは、攻撃やマルウェアの特徴が記述された情報を含んでいるため、データとしての価値が高い。このため、シグネチャを脅威情報としてコミュニティ内で他者との交換や、それ自体を製品として販売するなどの取り組みが行われている。
【0012】
一方で、同じ静的なシグネチャでも、そのフォーマットが異なる場合がある。このような場合、利用者はフォーマットを変換することによって、あるシグネチャを自身のソフトウェア・機器で利用できる形に変換する。この変換ツールは、ベンダや有志が公開している場合があり、これらを利用することによって、静的なシグネチャのフォーマットを自身が利用しているソフトウェア・機器でサポートしているフォーマットに変換し、利用することができる。
【発明を実施するための形態】
【0023】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【0024】
[実施の形態]
本発明の実施の形態について説明する。本発明の実施の形態に係る変換装置では、シンボリック実行(例えば、非特許文献1参照)を用いて、プログラム形式のシグネチャを解析し、そのシグネチャが検知と判断する条件を抽出する。
【0025】
このため、変換装置は、まずプログラム形式のシグネチャが検査対象としているデータ及び/またはログ(以降、データ・ログとする。)をシンボル化する。次に、変換装置は、このシンボル化したデータ・ログを入力としてプログラム形式のシグネチャに渡し、このプログラム形式のシグネチャをシンボリック実行エンジン上で実行し、解析する。変換装置は、この解析中に、プログラム形式のシグネチャが、入力値の値による条件分岐(if文など)を実行しようとした場合、その条件分岐の条件が成立する場合と成立しない場合とを考え、それぞれの場合を取るための入力値に対する制約を算出し、それぞれのパスの実行条件として加える。
【0026】
変換装置は、この処理を、プログラム形式のシグネチャが「検知」、または、「検知でない」と最終的に判断するまで続ける。これにより、変換装置は、「検知」と判断するまでの入力値に対する制約、または、「検知でない」と判断するまでの入力値に対する制約を、論理式の形で取得することができる。この「検知」と判断するまでの入力値に対する制約の集合は、元のプログラム形式のシグネチャで記述されていた「検知」と判断するロジックに比べ、原始的な表現で表される。このため、入力値に対する制約の集合は、他のフォーマット、表現形式に容易に変換することができる。
【0027】
[変換装置の構成]
具体的に、本実施の形態に係る変換装置について説明する。
図1は、実施の形態に係る変換装置の構成の一例を模式的に示す図である。
【0028】
図1に示すように、変換装置10は、通信部11、入力部12、出力部13、記憶部14及び制御部15を有する。本変換装置10は、IDSやアンチウィルスなどのシグネチャを作成する人、またはそれらを利用するソフトウェア・機器を運用或いは利用する人による利用を想定している。
【0029】
通信部11は、ネットワーク等を介して接続された他の装置との間で、各種情報を送受信する通信インタフェースである。通信部11は、NIC(Network Interface Card)等で実現され、LAN(Local Area Network)やインターネットなどの電気通信回線を介した他の装置と制御部15との間の通信を行う。例えば、通信部11は、ネットワークNなどを介して入力された、シンボル化されたデータ・ログや、プログラム形式のシグネチャを制御部15に入力する。そして、通信部11は、プログラム形式のシグネチャが変換された静的なシグネチャを、ネットワークN等を介して、他の装置に送信する。なお、シンボル化されたデータ・ログは、プログラム形式のシグネチャが検査対象としているデータ・ログをシンボル化したものである。
【0030】
入力部12は、変換装置10の操作者からの各種操作を受け付ける入力インタフェースである。例えば、入力部12は、タッチパネル、音声入力デバイス、キーボードやマウス等の入力デバイスによって構成される。
【0031】
出力部13は、例えば、液晶ディスプレイなどの表示装置、プリンター等の印刷装置、情報通信装置等によって実現される。出力部13は、プログラム形式のシグネチャの変換処理に関する情報等を操作者に対して出力する。
【0032】
記憶部14は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置によって実現され、変換装置10を動作させる処理プログラムや、処理プログラムの実行中に使用されるデータなどが記憶される。記憶部14は、各フォーマット間のフィールド対応表を記憶する。
【0033】
制御部15は、各種の処理手順などを規定したプログラム及び所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、制御部15は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。制御部15は、シンボリック実行部151(実行部)及び変換部152を有する。
【0034】
シンボリック実行部151は、解析対象であるプログラム形式のシグネチャと、入力値であるシンボル化されたデータ・ログとの入力を受け付けると、シンボリック実行エンジンを利用してプログラム形式のシグネチャを解析し、入力値に対して行う条件分岐の処理を、入力値に対する制約として出力する。
【0035】
変換部152は、出力された入力値に対する制約が入力されると、各フォーマット間のフィールド対応表に基づいて、入力値に対する制約と出力先フォーマットのフィールド変換を行い、静的なシグネチャを出力する。すなわち、入力されたプログラム形式のシグネチャを変換した静的なシグネチャが、変換装置10から出力される。
【0036】
[変換処理の流れ]
次に、シンボリック実行部151及び変換部152における変換処理の流れについて説明する。
図2は、シンボリック実行部151及び変換部152の処理の流れを説明する図である。
【0037】
シンボリック実行部151は、解析対象であるプログラム形式のシグネチャを、シンボリック実行を利用して解析する機能を有する。
図2に示すように、シンボリック実行部151は、入力として、プログラム形式のシグネチャGaと、プログラム形式のシグネチャが入力として受け取るシンボル化されたデータ・ログGbとを受け取る。
【0038】
まず、シンボル化されたデータ・ログGbに関して説明する。プログラム形式のシグネチャは、トラフィックやファイルのデータストリームなどのデータや、それらの情報を加工したログの中から、攻撃やマルウェアの持つ特徴的な条件に合致する部分が存在するかを検査するものである。今回の解析の中で抽出するものは、プログラム形式のシグネチャ側が持つ、検知と判断するために、入力値が満たすべき条件である。このため、変換装置10では、このプログラム形式のシグネチャに入力する値を特定の値に固定せずに、あらゆる値を取れるシンボルとして入力する。
【0039】
シンボリック実行部151では、このシンボル化されたデータ・ログGbを用いて、プログラム形式のシグネチャGaを、シンボリック実行を使って解析する。シンボリック実行部151は、このシンボリック実行による解析を行うことによって、このプログラム形式のシグネチャGaが、「検知」と判断するまで、シンボル化されたデータに対して行う条件分岐の処理を、入力値に対する制約という形で抽出する。
【0040】
次に、シンボリック実行部151で出力された、シンボル化されたデータ・ログに対する制約Gcを変換部152に入力する。変換部152では、各フォーマット間のフィールドの対応表Gdに基づき、入力された制約と出力先フォーマットのフィールドの変換を行う。各フォーマット間のフィールドの対応表Gdは、例えば、入力元フォーマットの文法・表現と、出力先フォーマットの文法・表現とを対応付けた表である。この際、入力された制約と出力先フォーマットに記述文法の違いがあれば、変換部152は、これらを吸収するように変換を行う。最後に、変換部152は、目的のフォーマットに変換された静的なシグネチャGeを出力して、処理を終了する。
【0041】
[シンボリック実行部の処理例]
次に、具体的な例を参照して、シンボリック実行部151の処理を説明する。なお、ここでの例は、説明のために定義しているものであり、変換装置10の処理動作がこれらの例に限定されているわけではない。例えば、シンボリック実行エンジンの実装やプログラム言語の種類、シンボル化されたデータ・ログのフォーマット、静的シグネチャのフォーマットなどには本実施の形態は、依存しない。
【0042】
図3は、プログラム形式のシグネチャの一例を示す図である。この例では、シンボリック実行部151が、プログラムを解析し、その挙動を取得する解析を行った後、そのプログラムが行った挙動と、予め悪意のある挙動を定義したシグネチャとのマッチングを行う。
【0043】
図3のうち、「accessed_regkey_logs」と「accessed_file_logs」とは、シンボル化されたデータ・ログが格納されたリスト構造である。それぞれのシンボル変数の名前を、「sym_regkey」及び「sym_file」とする。これらの配列の中に「xyz」というレジストリキー、または、「abc」というファイル名の両方が含まれている場合、このプログラム形式のシグネチャは、「検知」と判断し、「True」を返す。そして、どちらか一方しか検知しない、または、どちらも検知しなかった場合、このプログラム形式のプログラムは「検知なし」と判断し、「False」を返す。
【0044】
シンボリック実行部151は、このプログラム形式のシグネチャを実行する。シンボリック実行部151は、途中、2行目で条件分岐に当たるため、ここで、この2行目の条件を満たす場合と、2行目の条件を満たさない場合と、の制約を、それぞれのパスに加える。つまり、シンボリック実行部151は、2行目→3行目を実行するパス、つまり、この条件分岐で真の場合には、「sym_regkey==“xyz”」の制約2行目→4行目を実行するパス、すなわち、この条件分岐で偽になる場合には、「Not(sym_regkey==“xyz”)」の制約を加える。
【0045】
それぞれのパスで実行を続けると、次は6行目で、再び条件分岐に当たる。ここで再度、この条件を満たす場合と満たさない場合の制約をそれぞれのパスに加える。すなわち、シンボリック実行部151は、6行目→7行目を実行するパスには、「sym_file==“abc”」の制約を、6行目→8行目を実行するパスには、「Not(sym_file==“abc”)」の制約を加える。
【0046】
以上をまとめると、シンボリック実行部151は、
図3に示すプログラム形式のシグネチャをシンボリック実行した場合、以下の第1〜第4の4つのパスを得ることができる。なお、説明を簡潔にするため、「accessed_regkey_logs」と「accessed_file_logs」との配列には、それぞれ、「sym_regkey」と「sym_file」の1つの要素しか含まれていないものとする。
【0047】
第1のパス:1→2→3→4→5→6→7→8→9→10
第2のパス:1→2→3→4→5→6→8→9→11→12
第3のパス:1→2→4→5→6→7→8→9→11→12
第4のパス:1→2→4→5→6→8→9→11→12
【0048】
この4つのパスのうち、「検知」と判断し、「True」を返すパスは、第1のパスのみである。このため、シンボリック実行部151は、この第1のパスを実行した時の制約である「sym_regkey==“xyz”∧sym_file==“abc”」を変換部152に入力する。なお、シンボリック実行部151は、シンボリック実行の際、「検知」と判断するパスが複数存在していた場合、それらの制約を「∨」でつないだものを出力とする。
【0049】
[変換部の処理例]
次に、具体的な例を参照して、変換部152の処理を説明する。変換部152は、制約の中のシンボル変数名と、変換先フォーマットのフィールド名の対応表とに基づき、フィールドの変換を行う。また、変換部152は、フィールドと値の評価を行う演算子も、変換先のフォーマットに従って変換を行う。
【0050】
図4は、フィールド変換表の一例を示す図である。
図5は、演算子変換表の一例を示す図である。
図4のフィールド変換表は、シンボル変数名と、変換先フィールドとを対応付けたテーブルである。また、
図5の演算子変換表は、変換元演算子と、変換先演算子とを対応付けたテーブルである。変換部152は、このようなフィールド変換表や演算子変換表を含む変換先フォーマットのフィールド名の対応表を用いて、フィールドの変換を行う。
【0051】
変換部152は、
図4に示すフィールド変換表や、
図5に示す演算子変換表を用いて、変換を行う。具体的には、変換部152は、フィールド変換表の行R1,R2及び演算子変換表の行R3を基に、「sym_regkey==“xyz”∧sym_file==“abc”」を、「RegkeyItem is “xyz” and FileItem is “abc”」と変換する。そして、変換部152は、この「RegkeyItem is “xyz” and "FileItem is “abc”」を出力としてファイル等に書き出す。
【0052】
このように、変換部152は、入力値に対する制約の中のシンボル変数名と、各フォーマット間のフィールド対応表のうち出力先フォーマットのフィールド名の対応表とを基にフィールドの変換を行う。
【0053】
[変換処理]
次に、変換装置10が実行する変換処理の流れについて説明する。
図6は、実施の形態に係る変換方法の処理手順を示すフローチャートである。
【0054】
図6に示すように、まず、シンボリック実行部151は、解析対象であるプログラム形式のシグネチャと、入力値であるシンボル化されたデータ・ログとの入力を受け付ける(ステップS1,S2)。続いて、シンボリック実行部151は、シンボリック実行エンジンを利用してプログラム形式のシグネチャを解析し、入力値に対して行う条件分岐の処理を、入力値に対する制約として出力するシンボリック実行処理を行う(ステップS3)。
【0055】
そして、変換部152は、シンボリック実行部151から出力された入力値に対する制約が入力されると、各フォーマット間のフィールド対応表に基づいて、入力値に対する制約と出力先フォーマットのフィールド変換を行う変換処理を行う(ステップS4)。そして、変換部152は、プログラム形式のシグネチャを変換した静的なシグネチャを出力して(ステップS5)、処理を終了する。
【0056】
[実施の形態の効果]
このように、本実施の形態に係る変換装置10は、解析対象であるプログラム形式のシグネチャと、入力値であるシンボル化されたデータ・ログとの入力を受け付けると、シンボリック実行エンジンを利用してプログラム形式のシグネチャを解析し、入力値に対して行う条件分岐の処理を、入力値に対する制約として出力する。続いて、変換装置10は、入力値に対する制約が入力されると、各フォーマット間のフィールド対応表に基づいて、入力値に対する制約と出力先フォーマットのフィールド変換を行い、静的なシグネチャを出力する。
【0057】
したがって、本実施の形態によれば、プログラム形式のシグネチャを静的なシグネチャに自動的に変換することができる。すわなち、本実施の形態によれば、ソフトウェア・機器に固有になりがちだったプログラム形式のシグネチャを、静的なシグネチャしか対応していないソフトウェア・機器で利用することができる。このため、本実施の形態によれば、シグネチャとして書かれた攻撃やマルウェアに関する知識・ノウハウを広く利用することが可能になる。
【0058】
さらに、本実施の形態の変換装置10を用いることによって、静的なシグネチャしか対応していないソフトウェア・機器の利用者でも、プログラム言語を利用してシグネチャの開発をすることができる。前述のように、プログラム形式のシグネチャは、豊富な機能やライブラリを持つプログラム言語を利用して記述することができる。このため、本実施の形態の変換装置10を用いることによって、詳細な検知条件を記述できる上、その開発コストを低く抑えることができる。
【0059】
なお、本実施の形態は、上述した悪意のある挙動を見つけ出すといったユースケース以外にも、例えば、ネットワークトラフィックやそのログをシンボル化して、攻撃者による攻撃や侵入を検知するシグネチャをシンボリック実行で解析して、検知条件を抽出する、場合にも適用できる。
【0060】
その他にも、本実施の形態は、ファイルのバイトストリームやヘッダ情報や文字列情報等をシンボル化して、マルウェアを検知するシグネチャをシンボリック実行で解析し、検知条件を抽出する場合にも適用できる。
【0061】
[システム構成等]
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、CPU及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0062】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部又は一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0063】
[プログラム]
図7は、プログラムが実行されることにより、変換装置10が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0064】
メモリ1010は、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0065】
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、変換装置10の各処理を規定するプログラムは、コンピュータ1000により実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、変換装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0066】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
【0067】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN、WAN(wide area network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0068】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。