(57)【要約】      （修正有）【課題】ウィルスの起動を検知する方法及びプログラムを提供する。【解決手段】ウィルスはプログラムであり、それが読み込まれると起動し悪意ある行為を行う。プログラムは個々の処理を規定する命令文から成り立つが、それらの個々の処理を実行する際には、必ず当該処理に必要な変数の値（データ）を読み込む。このデータにウィルスが含まれると、それが起動され被害が発生する。起動されたウィルスは悪事を働く時間が必要である。従ってプログラムの実行がウィルスから本来のプログラムに戻って来ても、正常状態（ウィルスなし）で当該処理を実行する所要時間よりも長くかかる。そこで一定の時間を適宜設定し、その時間が経過した時に当該処理が終了しているかどうかを判定してウィルスの検知を行う。【選択図】図２
2019003349.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを作成するための要件を単一機能命令文に分解し、夫々を「個々の処理」とする時、個々の処理を任意に並べ、個々の処理を順次循環繰り返し試行し、個々の処理を実行するために必要な全ての変数の値の生成を試み、生成できる値を順次に生成して行き、結局全ての個々の処理を実行させるシナリオ関数と呼ぶプログラムにおいて、個々の処理の所要時間を監視して、その所要時間が適宜設定された一定時間を超えるかどうかを判定し、超えた場合はウィルスの実行がなされたと判定して、警告を発し、シナリオ関数を緊急停止させる、
ことを特徴とするコンピュータプログラム。
【請求項２】
請求項１のプログラムを従来のプログラミング手法に応用する場合のプログラムであって、個々の処理の内、入力処理についてのみ実行する請求項１に記載したプログラム。
【請求項３】
請求項１又は２のプログラムが記憶された記憶媒体。
【請求項４】
請求項１又は２のプログラムが実体化された回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムにウィルスが侵入しそれが起動した際に、個々の命令の処理時間を計測しその異常状態によってウィルスの実行を監視する方法及びそのプログラムに関する。
【背景技術】
【０００２】
サイバー攻撃は既に深刻な段階に来ている。高度の技術を持つハッカーはあらゆるコンピュータシステムの中に侵入しそのデータを盗み、改ざんすることが出来る。多くの機関や企業の情報は既に被害にあっている。しかも被害にあっている事実を認知していないことも多い。従来のプログラミング手法ではこの危機を回避することは出来ない。以下に、下記の目次の通り、従来のプログラミング手法を説明し、その手法では全てのサイバー攻撃を回避することはできない理由、及び、シナリオ関数プログラムの手法を説明し、その手法で多くのサイバー攻撃に対抗できる理由を説明する。
目次
１．従来のプログラミング手法の２大特徴
２．従来のプログラミング手法におけるウィルス対策
３．シナリオ関数プログラムの解説
４．シナリオ関数プログラムによるウィルスの無力化
【０００３】
１．従来のプログラミング手法の２大特徴
従来のプログラム手法においては、その中に含まれる個々の処理（計算、条件判定、読取、書出し等）のために必要な数値（オペランド）は、個々の処理の試行の前に当然存在していなければならない。従って処理の順序は重要であり、その順序が間違わないように人が順序を考え、それをプログラムでコンピュータに指示している。処理順序の指示の仕方は２通りある。１番目は、プログラムにおいて上から下に向かって各行毎に書かれた処理方法を書かれた順番通りに処理する方法である。その順番で処理させたいのであれば特に何も指示しなくても自動的に次々に処理されて行く。
【０００４】
処理順序の指示の仕方の２番目は、上から下に書かれた順序通りではなく、処理方法が書かれた行番号（メモリの番地）に飛んでそこに書かれた処理を実行するように人がプログラムでコンピュータに指示する方法である。例えばGOTO  １００行目のように指示する。或いは
if 〜（条件）（例：X>Y）
then処理A （例：A=B+C）
else処理B  (例：P＝Q-R)
の場合には、条件が是であれば次の行が処理されるが、否であればelseが書かれた行に飛んでそこの処理を実行するようにプログラムで指示する。
いずれにしても処理順序は人がプログラムによって指示しなければならない。言い換えればプログラムで指示されていれば、指示された通りの場所に書かれている処理方法を自動的に実行するのである。これを処理順序指示原理と呼ぶ。
従って、例えばサイバー攻撃によってウィルスプログラムが或る行の次に挿入されれば、実行はその行に書かれたウィルスプログラムに自動的に移行してしまうのである。
また、例えばバッファーオーバーフローによって飛び先のアドレス（リターンアドレス）がウィルスプログラムの番地に変更されれば、実行はそのウィルスプログラムに自動的に移行してしまうのである。要は、コンピュータは正規の指示であろうとなかろうとお構いなく指示通りに忠実に動いてしまうのである。
【０００５】
従来のプログラミング手法にはもう１つ顕著な特徴がある。それは、データ領域に値があれば、それが正しく生成された値なのか、サイバー攻撃によって生成された値なのかを検証することなくその値を正しいとして処理に使ってしまうことである。これをデータ値の無検証使用原理と呼ぶ。
【０００６】
これらの２つの特徴、即ち上記の「処理順序指示原理」と「データ値の無検証使用原理」、が従来のプログラミング手法の根本原理であり、それこそがサイバー攻撃を回避できない原因である。従って、従来のプログラミング手法では、一度正規プログラムに悪意あるプログラム（ウィルスプログラムという。略してウィルスという）が侵入した後では対策がないので、サイバー攻撃の対策としては、侵入する前にウィルスの侵入を阻止する以外に方法がない。
【０００７】
２．従来のプログラミング手法におけるウィルス対策
ウィルスの侵入阻止はどのようにするのであろうか。まずウィルスであることを識別しなければならない。ウィルスはプログラムであるから過去にウィルスと認定されたウィルスプログラムについては、そのプログラムの特徴（ビットのパターンという）が公的に登録されてパターンリスト即ち指名手配リストが作成され頒布されているので、サーバーやパソコンへ送信される全てのデータについて受信する直前にそのデータのパターンを調べ前記のパターンリストと照合して合致するデータがあればその侵入を阻止することが出来る。しかし、この方法は指名手配されていない新型のウィルスには効果がない。
そこで更に、送信されてくるプログラムの内容を調べて悪さをしないかをチェックする。更に、Windowsやインターネットソフトウェア、各種のアプリ、或いはプログラミング言語等々の判明している脆弱性を利用して侵入を試みていないかをチェックする。その他多種類の方法でウィルスの侵入を阻止する対策を講じている。これらの対策を実行するソフトウェアをファイアウォールと呼ぶ。
【０００８】
しかし、ウィルスの新型は理論的には無限にあるので全てのウィルスには対応できないし、そもそも悪意かどうかを判定する事は困難であるし、上記脆弱性は人が作るソフトウェアである限り絶滅することは困難であるのでウィルスの阻止効果には限界がある。個別の認証暗号（パスワードなど）による検証の方法は暗号解読技術が発達しているので、パスワードは解読されたり漏えいしたりするので万全ではない。上記の事情から、直接間接を問わずインターネットに接続している限り従来のプログラミング手法ではウィルスの侵入を完全に阻止することは不可能なのである。
【０００９】
３．シナリオ関数プログラムの解説
そこで究極のウィルス対策として発明されたのがシナリオ関数というプログラミング手法である。シナリオ関数は、ウィルスが侵入しても、自らウィルスを検出し除染し正常処理に復帰させる。このウィルスの検出・除染・正常復帰をウィルスの無力化と言う。シナリオ関数のプログラミング手法は従来のそれとは全く異なる方法である。シナリオ関数には従来のプログラミング手法のウィルスに対する弱みである「処理順序指示原理」と「データ値の無検証使用原理」がないのである。以下にシナリオ関数というプログラミング手法について説明する。ただし、此処での説明は、後に述べる本発明の説明のために必要なシナリオ関数の概念だけにとどめる。
【００１０】
先ず第１に、シナリオ関数においての「処理順序」について述べる。前述の通り、従来のプログラミング手法は人が「処理順序指示」をする。一方シナリオ関数法では、処理順序はコンピュータが決める。以下その理由について概説する。要件を単一機能命令文に分解し、夫々を個々の処理とする。個々の処理とは例えばif X>Y A=B+Cである。要件に従って決められた個々の処理方法がどのような順番で記述され並べられていようとも、コンピュータは処理出来るものから処理させて行き、処理できないものが残れば、再び並べられた順番の先頭に戻って未処理の処理を試みさせ、この作業を循環繰り返し行わせることによって、結局全部の処理を実行してしまうのである。図１参照。
【００１１】
例によって説明する。或る変数Aの値を生成させる処理があったとする（if X>Y  A=B+C）。そのために必要な変数B,C,X,Y（オペランドという）の値が得られるまで全ての処理を循環繰り返し試行させて実行出来る処理があればそれを実行させてB,C,X,Y全ての値を得た後、初めて変数Aの値が生成される即ち当該処理が実行される。人が処理順序を指示するのではなく循環繰り返しによって必要なデータの値が得られる順に処理するのである。このように処理Aを循環繰り返しによって結局実行さてしまうための一連のプログラムをベクトルAプログラム（ベクトルAと略す)と呼ぶ。図２参照。この処理方法をデータ結合という。これがシナリオ関数の基本原理である。シナリオ関数の処理順序はプログラムとして記述された順序ではない。実際の処理の順序は循環繰り返しで処理を試行して結果を見なければ人にはわからない。なお、シナリオ関数では、現在のプログラミング手法にある前述のような飛び先の行の番地を指示してそこに書かれた処理方法を実行すると言う操作は無い。飛び先の処理方法群も全体の処理の中に一体としてシナリオ関数処理を行うからである。また条件分岐の場合は、是の場合の処理と否の場合の処理の両方を試行し、一方が成立するので成立する処理を採用する。つまり、シナリオ関数の特徴である「処理順序は循環繰り返しの結果で決まる」原理によって個々の処理はプログラムの何処に書かれていてもよいのである。
【００１２】
４．シナリオ関数プログラムによるウィルスの無力化
上記の例で説明する。A の値が正しく得られるためには、B、 C、 X、 Yに値が得られて、且つそれらが正規の処理即ちプログラムによって生成した値である必要がある。ウィルスによって与えられた値では正しくないのである。さらにそれらオペランドの上流の値もすべてそうでなければならない。入力データ値からAの値に至るまでデータ値の依存関係の連鎖で各処理の方法によって繋がっていなければならない。このデータ値の連鎖で繋がっている状態の個々のデータ項目の値を正統な値と言う。この連鎖の中のどこかの値がウィルスで改ざんされた値であれば、それを検出し排除しなければならない。
【００１３】
以下の説明は図２の処理Aに係るベクトルAを参照されたい。或る処理A（例えば前記の処理A  即ち A＝B+C  if X>Y）において、変数Aが正統な値である為には、Aがウィルスによって生成されたものではなく処理Aによって生成された値であり、且つ、成立条件X>Yが成立していることの他に、B、C、X、Y（オペランド）の値が有り且つ正統な値であることが必要である。即ち、Aの値が正統である為には、
(a) B、C、X、Y（オペランド）の値が有り且つ正統な値であること
(b)成立条件X>Yが成立していること
(c) 処理Aの試行終了フラグがオンになっていること、
が成立していることが必要である。そのための判定を行わなければならない。そこで、B、C、X、Yについても夫々にAについての上記と同様な正統性の判定を行う。Aの値が正統であるための上記(a)を判定するために、夫々のオペランドの処理に係るベクトルにおいて後述する正統性フラグが立っているかを判定する。若しB、C、X、Yに係るベクトルプログラムの個々に正統性フラグが立っており、上記の(b)、(c)が成立していれば、Aの値は正統に成立したとしてその正統性フラグを立てる。上記(a)、(b)、(c)の判定操作を正統性検証操作という。このように個々の変数に係るベクトルを循環繰り返し試行し、夫々の処理が試行され、結果が是と判定されれば夫々の変数に正統性フラグを立てる。若しB、C、X、Y何れかに正統性フラグが立っておらず、或いは、X>Yが成立していなければ、Aに正統性フラグは立てずにAを初期値化する。前記の正統性検証操作を実行するプログラムを正統性検証プログラムという。
【００１４】
この操作を任意の順序で並べられた全ての個々の処理に係るベクトルについて次々に試行し、全ての値が正統に成立するまで循環繰り返し試行或いは実行する。これによって、全ての入力データ値から全ての出力データ値に至るまでの全てのデータ値が相互依存関係の連鎖で繋がっていることが保証される。即ち全ての値がプログラムによって生成された値であることが保証される。この連鎖の中のどこかの変数の値がプログラムで生成された値でなければ、当該変数の処理試行終了フラグがオンになっていないのでそれはウィルスによって与えられた値であり、当該変数の値に正統性フラグが立たないので、前記正統性検証プログラムによって検出される。検出されればそれを初期値化して除染し、引き続き循環繰り返しによって正常状態に復帰する事ができることになる。
上記の操作をシナリオ関数プログラムによるウィルスの無力化と言う。この技術は、日本国で特許（特許番号５９９２０７９、及び６０８６９７７）となっている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特許番号５９９２０７９
【特許文献２】特許番号６０８６９７７
【発明の概要】
【発明が解決しようとする課題】
【００１６】
シナリオ関数プログラムの課題
上記のシナリオ関数にも課題がある。それは、個々の変数のベクトルにおいて当該処理を試行するためにそれに必要なデータを読み込む際に、そのデータの中にウィルスプログラムが混入していればそのウィルスが実行されてしまうことである。個々の変数の処理とは、プログラムの命令文で言えば、代入文（例：A=B+C）、定値文（A＝１０）、条件文（X<Y）、入力文（Read A）、出力文(Write A)である。全てのプログラムの処理はこの5種の処理に帰着する。
上記の課題を、例として入力命令文で説明する。入力命令文によって外部データが読み込まれる際に、正規のデータに付随してウィルスプログラム（単にウィルスと言う）が読み込まれると、コンピュータが入力命令文の次にそのウィルスを起動させてしまうという問題である。ひとたびウィルスが起動すれば、ウィルスは本来のプログラムのデータを改ざんしたり盗んだり何でも行うことが出来る。これがシナリオ関数の課題である。
この課題は入力命令文についてだけではない。前記5種の処理はその処理に必要な全てのデータの値を読み込む作業をする。だからそのデータの中にウィルスプログラムが紛れ込んでいると上記の問題が起きる。
【課題を解決するための手段】
【００１７】
ウィルスの機能によって二つの状況が有る。
1つ目は、ウィルスが本来のシナリオ関数には戻る機能を持っていなければ、本来のシナリオ関数が実行されないので、ベクトルAについて一定以上の時間が経過しても処理が試行終了しない。その状態を異常状態として直ちに警告を発し、シナリオ関数を停止させる。又はベクトルAを初期値化してシナリオ関数を継続させ次の循環でベクトルAを再起動 （復帰という）させる。
２つ目は、ウィルスが本来のシナリオ関数に戻る機能を持つならば、ウィルスがデータを改ざんした場合は、シナリオ関数によって繰り返し処理を試行することによってやがてそれらを検出し除染し復帰させることが出来る。これをベクトルの無力化と言う。しかし、データを盗むだけで改ざんをしない場合は、シナリオ関数ではウィルスを捕捉できない。その場合は前記と同様に、ウィルスがデータを盗む時間だけ処理Aの試行終了が遅れることを利用し、処理Aについて一定以上の時間が経過しても処理が試行終了していなければ異常状態として直ちに警告を発し、シナリオ関数を停止させる。又はベクトルAを初期値化してシナリオ関数を継続させ次の循環でベクトルAを再起動 （復帰という）させる。
上記を纏めると次のよう表になる。
2019003349.tif 000003
【図面の簡単な説明】
【００１８】
【図１】従来法プログラムとシナリオ関数プログラムの動作の比較
【図２】シナリオ関数型プログラムに適用する処理時間監視プログラム（強制割込み判定型）
【図２−１】シナリオ関数型プログラムに適用する処理時間監視プログラム（処理終了時間規制型）
【図３】シナリオ関数型プログラムに適用する処理時間監視プログラム（ベクトル終了時間規制型）
【図４】従来法プログラムに応用する処理時間監視プログラム（強制割込み判定型）
【発明を実施するための形態】
【００１９】
図２はタイマー割込みを使用した例である。図３はベクトル制御プログラムを使用した例である。図２参照。個々の処理（命令）について処理時間監視プログラムを以下のように構築する。シナリオ関数だから処理はベクトルで行う。先ず、個々の処理（命令文）（例として処理Aとする。例えばA＝B+C）の直前に必ずタイマースイッチをオンとする。その次に処理Aを試行させる。処理Aを試行した後、処理Aの試行終了フラグをオンさせる。次に、前記の処理によって生成された値の正統性を検証するために前記の正統性検証プログラムを実行し、Aの値が得られて且つ判定が是であれば正統性フラグをオンとし、否であれば前記の生成された値を初期値化する。
【００２０】
一方適宜に設定する時間（タイマー設定時間という）が経過すると、タイマーが割込み信号を発信する。コンピュータのCPUは割込み信号処理機能を持っているので、本来のプログラムであるベクトルプログラムを一時停止させ、データを全てレジスターに退避させ記憶させた後、割込みプログラムを起動させる。割込みプログラムは本来のプログラムのどこかに割り込んで動き、処理Aの試行終了フラグのオンオフ判定を行う。上記タイマー設定時間は、その時間内にウィルスが悪意の行為をした後本来のプログラムに戻り、処理Aの試行終了フラグをオンとする時間を与えないように短く設定しなければならない。基本的には処理Aに必要な時間と処理の試行終了フラグをオンする時間を加えた時間を超える範囲の最短時間であることが望ましい。そうすればウィルスが悪事を働く時間を制限することが出来る。その場合、正規のデータでも前記のタイマー設定時間よりも長い処理時間が必要な場合には、処理Aの途中での警告・緊急停止が起こる。しかしこれも良いとすることも一つの方法である。なぜなら緊急停止しても、人がチェックして問題が無ければそのまま再起動すれば済むことであり、ウィルスに悪事を働かせる時間を多く与えるよりはよほどましだからである。逆に言えば、タイマー設定時間を長く設定しウィルスに悪事を働く時間を与えると、ウィルスの悪事がデータを盗むだけの場合は、ウィルスの悪事を認知できないことに注意する必要がある。
【００２１】
更に詳しく述べる。タイマー設定時間がセットされると、上記の割込みプログラムは、タイマー設定時間を経過すると起動し、ベクトル内の処理Aの試行終了フラグのオンオフを判定する。該フラグがオンならば、タイマー設定時間内に処理Aが正常に終了したことを示すので、割込みプログラムは本来のプログラムの割り込んだ次の場所に実行を戻す。一方、該フラグがオフであれば、その状態は、正常な読み込み処理の次にウィルスが実行されて時間を消費し、そのためまだ該フラグをオンさせていないと判断して、警告を発し、シナリオ関数プログラムを緊急停止する。
なお、プログラム設計上では、割込みプログラムにおいてオンオフを判定すべき処理試行終了フラグを特定するために、各ベクトルのスタートの直後に、当該ベクトルの処理試行終了フラグ名を割込みプログラムに登録する。
【００２２】
以上の実施形態は、割込みプログラムを使用したが、処理Aの試行時間を規制する方法もある。図２−１参照。即ち「処理Aが一定時間内に終了すれば正常として次の処理に進み、一定時間以内に終了しなければ、指定するプログラムに進む」というプログラム命令を使用する。一定時間以内に処理Aが終了しなければ、その状態は、正常な読み込み処理の次にウィルスが実行されて時間を消費した為であると判断して、警告を発し、シナリオ関数プログラムを緊急停止する。
【００２３】
所で、個々のベクトル内の処理Aが試行終了したか終了していないかの判定の為のフラグの設置位置、或いは処理Aの試行時間を規制する命令の設置位置は、上記のように処理Aの直後が望ましい。それ以降の位置であれば、処理A以降で設置すべき処理試行終了判定フラグまでの途中の多くの操作のための時間が種々の要素によって変動するので、処理A直後に動くウィルスの悪事を働く時間を敏感に捕捉することが難しくなる。しかし、シナリオ関数によるプログラムにおいては、ベクトルは既に決められたパターンを持っており、そこに処理Aの試行終了フラグ、或いは処理試行終了時間規制命令を挿入することは好ましくない場合がある。その場合には、ベクトルを一定時間内に終了したかどうかでウィルスの悪事があったかどうかを判定する。図３参照。この場合、各ベクトルを制御するプログラム（シナリオ関数では座標関数という）の中に、各ベクトルを順番に起動する際に、
「ベクトルAが一定時間内に終了すれば正常として次の処理に進み、一定時間以内に終了しなければ、指定するプログラムに進む」
という命令を使えばよい。そして指定するプログラムに、警告を発しシナリオ関数の緊急停止をさせる機能を持たせる。
この場合には、ウィルスが起動後に本来のプログラムに戻って来る機能を持っているならば、前記の通りウィルスの捕捉は難しくなる。特にウィルスの悪事を働く時間が短ければ一層難しい。一方戻って来る機能を持たないウィルスには有効である。但し、その場合でも、前記の一定時間を短く設定できないソフトウェアの場合には、警告・緊急停止の前にウィルスに悪事を働く時間を十分に与えてしまうことに注意すべきである。
【００２４】
上記の処理時間監視プログラムを本来のプログラムに導入することは、シナリオ関数プログラムにおいては容易である。その理由を述べる。
シナリオ関数プログラムは、個別の処理方法を前記の段落番号００１１記載及び図２記載のベクトルに搭載し、そのベクトルをランダムに並べておけばよく、処理順序を人が考え指示しなくても良いので、プログラムが非常に単純でありワンパターンである。なお、シナリオ関数プログラムについては前記の特許文献１及び２に詳細に記載されている。このワンパターンのプログラムに前記の処理時間監視プログラムに必要な諸命令群を予めテンプレートとして追加しておくことは簡単なことである。
【００２５】
従来のプログラミング手法に応用する方法
前記シナリオ関数によるプログラミング手法では、処理順序はランダムでよく、処理順序は個々の処理を逐次循環繰り返し試行することにより決められることは前述の通りである。他方、従来のプログラミング手法では、処理順序は人が考えてプログラムで指示することは前述した通りであるので、その指示された順序が正しければ、或る処理に必要なオペランドはその時点で必ず値を持っているので個々の処理を逐次循環繰り返し試行する必要はない。しかし、この従来のプログラミング手法においては、段落番号００１４で述べたような「全ての入力データ値から全ての出力データ値に至るまでの全てのデータ値が相互依存関係の連鎖で繋がっていることの保証」即ち「ウィルスによって汚染されたデータ値が一つもない保証」は得られない。
【００２６】
しかし、その保証を求めなければ、処理時間監視プログラムの中で、前記の正統性検証プログラムを具備する必要はない。目的が、『入力データにウィルスプログラムが混入し、そのウィルスが起動して、設定する一定時間内に正規のプログラムにおける次の処理（命令）が実行されない場合に、警告を発しプログラムの強制停止をする』及び『ウィルス対策としてその侵入経路と起動する場所は入力処理に限る』の二つだけで良いとすれば、前記の処理時間監視プログラム（図２）の中で正統性判定プログラムは不要となり、また処理時間監視プログラムは個々の全ての処理に適用するのではなく、入力処理にだけ適用すればよい。それを図示すれば図４である。
【００２７】
入力処理（命令）だけは必ずこのワンパターンのサブルーチンによることとすればよい。この処理時間監視プログラムを備えた従来法のプログラミング手法では、シナリオ関数によるプログラミング手法と違って、ウィルスによる汚染を検出・除染・正常状態への復帰をすることは出来ないが、少なくともウィルスプログラムが動き本来のプログラムに戻らないウィルスの場合は、タイマー設定時間を経過すれば必ず警告を発し緊急停止される。また本来のプログラムに戻る機能を備えたウィルスの場合は、タイマー設定時間を短くすれば、段落番号００２０記載と同様に、ウィルスが悪事を働く時間を制限することが出来る。だからウィルスが悪事を働く時間が一定時間よりも長ければ警告を発し緊急停止することが出来る。
以上によってウィルスが動いたことすら気付かないという災害は免れる。但し、段落番号００２０に記載したシナリオ関数の場合と同様に、本来のプログラムの元の場所に戻る機能を備えたウィルスの場合、タイマー設定時間が長いと、ウィルスによるデータの盗み或いは改ざんがあっても、ウィルスを捉えることは出来なくなることに注意する必要がある。
【産業上の利用可能性】
【００２８】
コンピュータにウィルスが侵入し、秘かに情報を盗み、改ざんし、悪意ある動作をする等のサイバー攻撃が益々深刻になって来ている。最も困る問題は、ウィルスによる情報の漏えいや改ざんがあっても、被害者はそれを認知できないことである。本発明によって、ウィルスが起動すれば一定時間後には警告が発せられプログラムが緊急停止される。従って産業上の利用可能性は大きい。
【図１】
2019003349.tif 000004
【図２】
2019003349.tif 000005
【図２−１】
2019003349.tif 000006
【図３】
2019003349.tif 000007
【図４】
2019003349.tif 000008