JP2019003349A - Virus monitoring method by individual instruction processing time measurement - Google Patents

Virus monitoring method by individual instruction processing time measurement Download PDF

Info

Publication number
JP2019003349A
JP2019003349A JP2017116304A JP2017116304A JP2019003349A JP 2019003349 A JP2019003349 A JP 2019003349A JP 2017116304 A JP2017116304 A JP 2017116304A JP 2017116304 A JP2017116304 A JP 2017116304A JP 2019003349 A JP2019003349 A JP 2019003349A
Authority
JP
Japan
Prior art keywords
program
virus
processing
time
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2017116304A
Other languages
Japanese (ja)
Inventor
根来 文生
Fumio Negoro
文生 根来
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LOGO VISTA CORP
Original Assignee
LOGO VISTA CORP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LOGO VISTA CORP filed Critical LOGO VISTA CORP
Priority to JP2017116304A priority Critical patent/JP2019003349A/en
Priority to PCT/JP2018/022072 priority patent/WO2018230471A1/en
Publication of JP2019003349A publication Critical patent/JP2019003349A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

To provide a method and a program for detecting the start of a virus.SOLUTION: A virus is a program, and when the program is read, the program is started to perform a malicious activity. When individual processing is executed even though the program comprises instruction sentences prescribing the individual processing, a value (data) of a variable necessary to the processing is surely read. When the data includes the virus, the virus is started to cause damage. The started virus needs a time for making a malicious activity. Therefore, even though the execution of the program is returned to the original program from the virus, it takes a longer time than a required time for executing the processing in a normal state (without virus). Then, a fixed time is appropriately set, whether or not the processing is finished is determined when the time elapses to detect the virus.SELECTED DRAWING: Figure 2

Description

本発明は、プログラムにウィルスが侵入しそれが起動した際に、個々の命令の処理時間を計測しその異常状態によってウィルスの実行を監視する方法及びそのプログラムに関する。
The present invention relates to a method and a program for monitoring the execution of a virus according to an abnormal state by measuring the processing time of each instruction when a virus enters the program and starts up.

サイバー攻撃は既に深刻な段階に来ている。高度の技術を持つハッカーはあらゆるコンピュータシステムの中に侵入しそのデータを盗み、改ざんすることが出来る。多くの機関や企業の情報は既に被害にあっている。しかも被害にあっている事実を認知していないことも多い。従来のプログラミング手法ではこの危機を回避することは出来ない。以下に、下記の目次の通り、従来のプログラミング手法を説明し、その手法では全てのサイバー攻撃を回避することはできない理由、及び、シナリオ関数プログラムの手法を説明し、その手法で多くのサイバー攻撃に対抗できる理由を説明する。
目次
1.従来のプログラミング手法の2大特徴
2.従来のプログラミング手法におけるウィルス対策
3.シナリオ関数プログラムの解説
4.シナリオ関数プログラムによるウィルスの無力化
Cyber attacks are already at a serious stage. Sophisticated hackers can infiltrate any computer system, steal its data, and tamper with it. Information from many institutions and companies has already been damaged. Moreover, they often do not recognize the fact that they are injured. Conventional programming techniques cannot avoid this crisis. The following table describes the conventional programming method, explains why it is not possible to avoid all cyber attacks, explains the method of scenario function programming, and many cyber attacks using that method. Explain why you can fight
Table of contents 1. Two major features of conventional programming techniques 2. Anti-virus measures in conventional programming methods Explanation of scenario function program 4. Virus neutralization by scenario function program

1.従来のプログラミング手法の2大特徴
従来のプログラム手法においては、その中に含まれる個々の処理(計算、条件判定、読取、書出し等)のために必要な数値(オペランド)は、個々の処理の試行の前に当然存在していなければならない。従って処理の順序は重要であり、その順序が間違わないように人が順序を考え、それをプログラムでコンピュータに指示している。処理順序の指示の仕方は2通りある。1番目は、プログラムにおいて上から下に向かって各行毎に書かれた処理方法を書かれた順番通りに処理する方法である。その順番で処理させたいのであれば特に何も指示しなくても自動的に次々に処理されて行く。
1. Two major features of the conventional programming method In the conventional programming method, the numerical values (operands) required for individual processing (calculation, condition determination, reading, writing, etc.) included in it are trials of individual processing. Of course it must exist before. Therefore, the order of processing is important, and a person considers the order so that the order is not mistaken, and instructs the computer by a program. There are two ways to specify the processing order. The first is a method of processing the processing method written for each line from top to bottom in the program in the order written. If you want them to be processed in that order, they are automatically processed one after another without any special instruction.

処理順序の指示の仕方の2番目は、上から下に書かれた順序通りではなく、処理方法が書かれた行番号(メモリの番地)に飛んでそこに書かれた処理を実行するように人がプログラムでコンピュータに指示する方法である。例えばGOTO 100行目のように指示する。或いは
if 〜(条件)(例:X>Y)
then処理A (例:A=B+C)
else処理B (例:P=Q-R)
の場合には、条件が是であれば次の行が処理されるが、否であればelseが書かれた行に飛んでそこの処理を実行するようにプログラムで指示する。
いずれにしても処理順序は人がプログラムによって指示しなければならない。言い換えればプログラムで指示されていれば、指示された通りの場所に書かれている処理方法を自動的に実行するのである。これを処理順序指示原理と呼ぶ。
従って、例えばサイバー攻撃によってウィルスプログラムが或る行の次に挿入されれば、実行はその行に書かれたウィルスプログラムに自動的に移行してしまうのである。
また、例えばバッファーオーバーフローによって飛び先のアドレス(リターンアドレス)がウィルスプログラムの番地に変更されれば、実行はそのウィルスプログラムに自動的に移行してしまうのである。要は、コンピュータは正規の指示であろうとなかろうとお構いなく指示通りに忠実に動いてしまうのである。
The second way of specifying the processing order is not to follow the order written from top to bottom, but to jump to the line number (memory address) where the processing method is written and execute the processing written there. A method in which a person instructs a computer by a program. For example, instruct GOTO 100th line. Or
if ~ (condition) (eg X> Y)
then processing A (Example: A = B + C)
else processing B (Example: P = QR)
In this case, if the condition is right, the next line is processed. If not, the program instructs the program to jump to the line where else is written and execute the process.
In any case, the processing order must be instructed by the person by the program. In other words, if it is instructed by the program, the processing method written in the place as instructed is automatically executed. This is called the processing order instruction principle.
Therefore, if a virus program is inserted next to a certain line, for example, by a cyber attack, execution automatically shifts to the virus program written on that line.
Also, for example, if the jump address (return address) is changed to the address of a virus program due to buffer overflow, execution automatically shifts to that virus program. In short, the computer will behave exactly as instructed, regardless of whether it is a legitimate instruction.

従来のプログラミング手法にはもう1つ顕著な特徴がある。それは、データ領域に値があれば、それが正しく生成された値なのか、サイバー攻撃によって生成された値なのかを検証することなくその値を正しいとして処理に使ってしまうことである。これをデータ値の無検証使用原理と呼ぶ。 There is another notable feature of traditional programming techniques. That is, if there is a value in the data area, it is used as a correct value without verifying whether it is a correctly generated value or a value generated by a cyber attack. This is called the unverified usage principle of data values.

これらの2つの特徴、即ち上記の「処理順序指示原理」と「データ値の無検証使用原理」、が従来のプログラミング手法の根本原理であり、それこそがサイバー攻撃を回避できない原因である。従って、従来のプログラミング手法では、一度正規プログラムに悪意あるプログラム(ウィルスプログラムという。略してウィルスという)が侵入した後では対策がないので、サイバー攻撃の対策としては、侵入する前にウィルスの侵入を阻止する以外に方法がない。 These two features, ie, the above-mentioned “processing order instruction principle” and “data value non-verification usage principle” are the fundamental principles of the conventional programming technique, and that is the reason why cyber attacks cannot be avoided. Therefore, with conventional programming methods, there is no countermeasure after a malicious program (called a virus program, abbreviated as a virus for short) has invaded a legitimate program. There is no other way but to stop.

2.従来のプログラミング手法におけるウィルス対策
ウィルスの侵入阻止はどのようにするのであろうか。まずウィルスであることを識別しなければならない。ウィルスはプログラムであるから過去にウィルスと認定されたウィルスプログラムについては、そのプログラムの特徴(ビットのパターンという)が公的に登録されてパターンリスト即ち指名手配リストが作成され頒布されているので、サーバーやパソコンへ送信される全てのデータについて受信する直前にそのデータのパターンを調べ前記のパターンリストと照合して合致するデータがあればその侵入を阻止することが出来る。しかし、この方法は指名手配されていない新型のウィルスには効果がない。
そこで更に、送信されてくるプログラムの内容を調べて悪さをしないかをチェックする。更に、Windowsやインターネットソフトウェア、各種のアプリ、或いはプログラミング言語等々の判明している脆弱性を利用して侵入を試みていないかをチェックする。その他多種類の方法でウィルスの侵入を阻止する対策を講じている。これらの対策を実行するソフトウェアをファイアウォールと呼ぶ。
2. How will anti-virus virus intrusion prevention be done using conventional programming methods? First, it must be identified as a virus. Since a virus is a program, since a virus program that has been recognized as a virus in the past has been publicly registered with the characteristics of the program (called a bit pattern), a pattern list, that is, a wanted list is created and distributed. Immediately before receiving all data transmitted to the server or personal computer, the pattern of the data is examined, and if there is matching data by comparing with the pattern list, the intrusion can be prevented. However, this method has no effect on new viruses that are not wanted.
Therefore, the contents of the transmitted program are further checked to see if they are bad. In addition, it checks if there is an attempt to intrude using known vulnerabilities such as Windows, Internet software, various applications, or programming languages. Other various measures are taken to prevent the invasion of viruses. Software that implements these measures is called a firewall.

しかし、ウィルスの新型は理論的には無限にあるので全てのウィルスには対応できないし、そもそも悪意かどうかを判定する事は困難であるし、上記脆弱性は人が作るソフトウェアである限り絶滅することは困難であるのでウィルスの阻止効果には限界がある。個別の認証暗号(パスワードなど)による検証の方法は暗号解読技術が発達しているので、パスワードは解読されたり漏えいしたりするので万全ではない。上記の事情から、直接間接を問わずインターネットに接続している限り従来のプログラミング手法ではウィルスの侵入を完全に阻止することは不可能なのである。 However, since there are theoretically infinite number of new viruses, it cannot cope with all viruses, and it is difficult to determine whether they are malicious in the first place. Because it is difficult, there is a limit to the virus prevention effect. The method of verification using individual authentication ciphers (passwords, etc.) is not perfect because cryptanalysis technology has been developed, and passwords are decrypted or leaked. From the above situation, it is impossible to completely prevent the invasion of viruses by the conventional programming method as long as the Internet is connected directly or indirectly.

3.シナリオ関数プログラムの解説
そこで究極のウィルス対策として発明されたのがシナリオ関数というプログラミング手法である。シナリオ関数は、ウィルスが侵入しても、自らウィルスを検出し除染し正常処理に復帰させる。このウィルスの検出・除染・正常復帰をウィルスの無力化と言う。シナリオ関数のプログラミング手法は従来のそれとは全く異なる方法である。シナリオ関数には従来のプログラミング手法のウィルスに対する弱みである「処理順序指示原理」と「データ値の無検証使用原理」がないのである。以下にシナリオ関数というプログラミング手法について説明する。ただし、此処での説明は、後に述べる本発明の説明のために必要なシナリオ関数の概念だけにとどめる。
3. Explanation of scenario function program The scenario function programming method was invented as the ultimate anti-virus measure. Even if a virus enters, the scenario function detects the virus itself, decontaminates it, and returns to normal processing. This virus detection, decontamination, and normal recovery is called virus neutralization. The scenario function programming method is completely different from the conventional one. The scenario function does not have the “processing order instruction principle” and the “non-verification use principle of data values” which are weaknesses against viruses of conventional programming techniques. A programming method called scenario function is described below. However, the description here is limited only to the concept of scenario function necessary for the description of the present invention described later.

先ず第1に、シナリオ関数においての「処理順序」について述べる。前述の通り、従来のプログラミング手法は人が「処理順序指示」をする。一方シナリオ関数法では、処理順序はコンピュータが決める。以下その理由について概説する。要件を単一機能命令文に分解し、夫々を個々の処理とする。個々の処理とは例えばif X>Y A=B+Cである。要件に従って決められた個々の処理方法がどのような順番で記述され並べられていようとも、コンピュータは処理出来るものから処理させて行き、処理できないものが残れば、再び並べられた順番の先頭に戻って未処理の処理を試みさせ、この作業を循環繰り返し行わせることによって、結局全部の処理を実行してしまうのである。図1参照。 First, the “processing order” in the scenario function will be described. As described above, in the conventional programming method, a person performs “processing order instruction”. On the other hand, in the scenario function method, the processing order is determined by the computer. The reason is outlined below. Decompose requirements into single function statements, each of which is an individual process. Each processing is, for example, if X> Y A = B + C. Regardless of the order in which the individual processing methods determined according to the requirements are described and arranged, the computer starts processing from what can be processed, and if anything that cannot be processed remains, it returns to the top of the order in which they are arranged again. All the processes are eventually executed by trying unprocessed processes and repeating this work in a cyclic manner. See FIG.

例によって説明する。或る変数Aの値を生成させる処理があったとする(if X>Y A=B+C)。そのために必要な変数B,C,X,Y(オペランドという)の値が得られるまで全ての処理を循環繰り返し試行させて実行出来る処理があればそれを実行させてB,C,X,Y全ての値を得た後、初めて変数Aの値が生成される即ち当該処理が実行される。人が処理順序を指示するのではなく循環繰り返しによって必要なデータの値が得られる順に処理するのである。このように処理Aを循環繰り返しによって結局実行さてしまうための一連のプログラムをベクトルAプログラム(ベクトルAと略す)と呼ぶ。図2参照。この処理方法をデータ結合という。これがシナリオ関数の基本原理である。シナリオ関数の処理順序はプログラムとして記述された順序ではない。実際の処理の順序は循環繰り返しで処理を試行して結果を見なければ人にはわからない。なお、シナリオ関数では、現在のプログラミング手法にある前述のような飛び先の行の番地を指示してそこに書かれた処理方法を実行すると言う操作は無い。飛び先の処理方法群も全体の処理の中に一体としてシナリオ関数処理を行うからである。また条件分岐の場合は、是の場合の処理と否の場合の処理の両方を試行し、一方が成立するので成立する処理を採用する。つまり、シナリオ関数の特徴である「処理順序は循環繰り返しの結果で決まる」原理によって個々の処理はプログラムの何処に書かれていてもよいのである。 This will be explained with an example. Assume that there is a process that generates a value of a variable A (if X> Y A = B + C). Therefore, if there is a process that can be executed by repeatedly trying all the processes until the necessary variables B, C, X, Y (operands) are obtained, all B, C, X, Y are executed. After obtaining the value, the value of the variable A is generated for the first time, that is, the processing is executed. Rather than instructing the processing order by a person, processing is performed in the order in which necessary data values are obtained by cyclic repetition. A series of programs for eventually executing the process A by cyclic repetition is called a vector A program (abbreviated as vector A). See FIG. This processing method is called data combination. This is the basic principle of the scenario function. The processing order of the scenario functions is not the order described as a program. The actual processing order cannot be understood by a person unless he / she tries the processing by cyclic repetition and sees the result. In the scenario function, there is no operation for instructing the address of the destination line as described above in the current programming method and executing the processing method written there. This is because the processing method group for the jump destination also performs the scenario function processing as a whole in the entire processing. In the case of conditional branching, both the processing in case of right and the processing in case of failure are tried, and the processing that is satisfied is adopted because one is satisfied. In other words, the individual processes may be written anywhere in the program based on the principle of “the processing order is determined by the result of cyclic repetition” which is a feature of the scenario function.

4.シナリオ関数プログラムによるウィルスの無力化
上記の例で説明する。A の値が正しく得られるためには、B、 C、 X、 Yに値が得られて、且つそれらが正規の処理即ちプログラムによって生成した値である必要がある。ウィルスによって与えられた値では正しくないのである。さらにそれらオペランドの上流の値もすべてそうでなければならない。入力データ値からAの値に至るまでデータ値の依存関係の連鎖で各処理の方法によって繋がっていなければならない。このデータ値の連鎖で繋がっている状態の個々のデータ項目の値を正統な値と言う。この連鎖の中のどこかの値がウィルスで改ざんされた値であれば、それを検出し排除しなければならない。
4). Disabling viruses with scenario function programs The above example will be described. In order for the value of A to be obtained correctly, values for B, C, X, and Y need to be obtained, and they must be values generated by normal processing, that is, a program. The value given by the virus is not correct. In addition, all values upstream of those operands must be so. From the input data value to the A value, it must be linked by the method of each processing in a chain of data value dependency relationships. The values of the individual data items connected by this data value chain are called legitimate values. If any value in this chain is altered by a virus, it must be detected and eliminated.

以下の説明は図2の処理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を初期値化する。前記の正統性検証操作を実行するプログラムを正統性検証プログラムという。
For the following description, refer to the vector A related to the process A in FIG. In a certain process A (for example, the above process A, that is, A = B + C if X> Y), since the variable A is a legitimate value, A is not generated by the virus but generated by the process A. In addition to satisfying the satisfaction condition X> Y, it is necessary that the values B, C, X, and Y (operands) exist and be legitimate. In other words, for the value of A to be legitimate,
(a) The values of B, C, X, and Y (operands) exist and are legitimate values.
(b) Satisfaction condition X> Y is satisfied
(c) Process A trial end flag is on,
Must be established. You must make a decision for that. Therefore, the legitimacy of B, C, X, and Y is also determined for A as described above. In order to determine (a) above because the value of A is legitimate, it is judged whether or not a legitimacy flag, which will be described later, is set in a vector related to the processing of each operand. If the legitimacy flag is set for each of the vector programs related to B, C, X, and Y, and if (b) and (c) above are established, then the value of A is assumed to be legitimate. Raise the legitimacy flag. The determination operations (a), (b), and (c) above are called legitimacy verification operations. In this way, the vectors related to the individual variables are cyclically and repeatedly tried, and each process is tried. If the result is determined to be good, the legitimacy flag is set for each variable. If the legitimacy flag is not raised in any of B, C, X, and Y, or X> Y is not established, A is initialized without setting the legitimacy flag in A. A program that executes the legitimacy verification operation is referred to as a legitimacy verification program.

この操作を任意の順序で並べられた全ての個々の処理に係るベクトルについて次々に試行し、全ての値が正統に成立するまで循環繰り返し試行或いは実行する。これによって、全ての入力データ値から全ての出力データ値に至るまでの全てのデータ値が相互依存関係の連鎖で繋がっていることが保証される。即ち全ての値がプログラムによって生成された値であることが保証される。この連鎖の中のどこかの変数の値がプログラムで生成された値でなければ、当該変数の処理試行終了フラグがオンになっていないのでそれはウィルスによって与えられた値であり、当該変数の値に正統性フラグが立たないので、前記正統性検証プログラムによって検出される。検出されればそれを初期値化して除染し、引き続き循環繰り返しによって正常状態に復帰する事ができることになる。
上記の操作をシナリオ関数プログラムによるウィルスの無力化と言う。この技術は、日本国で特許(特許番号5992079、及び6086977)となっている。
This operation is tried one after another for all vectors related to the individual processes arranged in an arbitrary order, and is repeated or repeated until all values are legitimately established. This ensures that all data values from all input data values to all output data values are linked in a chain of interdependencies. That is, it is guaranteed that all values are values generated by the program. If the value of some variable in this chain is not a value generated by the program, it is the value given by the virus because the processing end flag for that variable is not turned on. Is not detected by the legitimacy verification program. If it is detected, it is deinitialized and decontaminated, and then it can be returned to a normal state by repeated circulation.
The above operation is called virus neutralization by the scenario function program. This technology is patented in Japan (patent numbers 5992079 and 6086977).

特許番号5992079Patent No. 5992079 特許番号6086977Patent No. 6086977

シナリオ関数プログラムの課題
上記のシナリオ関数にも課題がある。それは、個々の変数のベクトルにおいて当該処理を試行するためにそれに必要なデータを読み込む際に、そのデータの中にウィルスプログラムが混入していればそのウィルスが実行されてしまうことである。個々の変数の処理とは、プログラムの命令文で言えば、代入文(例:A=B+C)、定値文(A=10)、条件文(X<Y)、入力文(Read A)、出力文(Write A)である。全てのプログラムの処理はこの5種の処理に帰着する。
上記の課題を、例として入力命令文で説明する。入力命令文によって外部データが読み込まれる際に、正規のデータに付随してウィルスプログラム(単にウィルスと言う)が読み込まれると、コンピュータが入力命令文の次にそのウィルスを起動させてしまうという問題である。ひとたびウィルスが起動すれば、ウィルスは本来のプログラムのデータを改ざんしたり盗んだり何でも行うことが出来る。これがシナリオ関数の課題である。
この課題は入力命令文についてだけではない。前記5種の処理はその処理に必要な全てのデータの値を読み込む作業をする。だからそのデータの中にウィルスプログラムが紛れ込んでいると上記の問題が起きる。

Scenario Function Program Issues The above scenario functions also have issues. That is, when reading data necessary for trying the processing in each variable vector, if the virus program is mixed in the data, the virus is executed. The processing of individual variables is, in terms of program statements, assignment statements (eg A = B + C), constant statements (A = 10), conditional statements (X <Y), input statements (Read A) This is an output statement (Write A). All program processes result in these five processes.
The above problem will be described as an example using an input command sentence. When external data is read by an input command statement, if a virus program (simply called a virus) is read along with legitimate data, the computer will start the virus next to the input command statement. is there. Once the virus starts, it can tamper with or steal the original program data. This is the problem of the scenario function.
This issue is not just about input statements. The five types of processing work to read all data values necessary for the processing. Therefore, if the virus program is mixed in the data, the above problem will occur.

ウィルスの機能によって二つの状況が有る。
1つ目は、ウィルスが本来のシナリオ関数には戻る機能を持っていなければ、本来のシナリオ関数が実行されないので、ベクトルAについて一定以上の時間が経過しても処理が試行終了しない。その状態を異常状態として直ちに警告を発し、シナリオ関数を停止させる。又はベクトルAを初期値化してシナリオ関数を継続させ次の循環でベクトルAを再起動 (復帰という)させる。
2つ目は、ウィルスが本来のシナリオ関数に戻る機能を持つならば、ウィルスがデータを改ざんした場合は、シナリオ関数によって繰り返し処理を試行することによってやがてそれらを検出し除染し復帰させることが出来る。これをベクトルの無力化と言う。しかし、データを盗むだけで改ざんをしない場合は、シナリオ関数ではウィルスを捕捉できない。その場合は前記と同様に、ウィルスがデータを盗む時間だけ処理Aの試行終了が遅れることを利用し、処理Aについて一定以上の時間が経過しても処理が試行終了していなければ異常状態として直ちに警告を発し、シナリオ関数を停止させる。又はベクトルAを初期値化してシナリオ関数を継続させ次の循環でベクトルAを再起動 (復帰という)させる。
上記を纏めると次のよう表になる。
There are two situations depending on the function of the virus.
First, since the original scenario function is not executed unless the virus has a function to return to the original scenario function, the trial does not end even if a certain time or more has elapsed for the vector A. The state is abnormal and an immediate warning is issued to stop the scenario function. Alternatively, the vector A is initialized, the scenario function is continued, and the vector A is restarted (called return) in the next cycle.
Second, if the virus has the function to return to the original scenario function, if the virus has altered the data, it will eventually detect, decontaminate, and restore it by trying the scenario function repeatedly. I can do it. This is called vector neutralization. However, if the data is stolen but not tampered with, the scenario function cannot catch the virus. In that case, as described above, using the fact that the end of trial of process A is delayed by the amount of time that the virus steals data, if process A has not finished trial even after a certain period of time has passed, Immediately issue a warning and stop the scenario function. Alternatively, the vector A is initialized, the scenario function is continued, and the vector A is restarted (called return) in the next cycle.
The following table summarizes the above.

従来法プログラムとシナリオ関数プログラムの動作の比較Comparison of operation of conventional method program and scenario function program シナリオ関数型プログラムに適用する処理時間監視プログラム(強制割込み判定型)Processing time monitoring program (forced interrupt judgment type) applied to scenario function type programs シナリオ関数型プログラムに適用する処理時間監視プログラム(処理終了時間規制型)Processing time monitoring program (processing end time regulation type) applied to scenario function type programs シナリオ関数型プログラムに適用する処理時間監視プログラム(ベクトル終了時間規制型)Processing time monitoring program applied to scenario function type programs (vector end time regulation type) 従来法プログラムに応用する処理時間監視プログラム(強制割込み判定型)Processing time monitoring program (forced interrupt judgment type) applied to the conventional method program

図2はタイマー割込みを使用した例である。図3はベクトル制御プログラムを使用した例である。図2参照。個々の処理(命令)について処理時間監視プログラムを以下のように構築する。シナリオ関数だから処理はベクトルで行う。先ず、個々の処理(命令文)(例として処理Aとする。例えばA=B+C)の直前に必ずタイマースイッチをオンとする。その次に処理Aを試行させる。処理Aを試行した後、処理Aの試行終了フラグをオンさせる。次に、前記の処理によって生成された値の正統性を検証するために前記の正統性検証プログラムを実行し、Aの値が得られて且つ判定が是であれば正統性フラグをオンとし、否であれば前記の生成された値を初期値化する。 FIG. 2 is an example using a timer interrupt. FIG. 3 shows an example using a vector control program. See FIG. A processing time monitoring program is constructed for each process (command) as follows. Since it is a scenario function, processing is performed with vectors. First, the timer switch is always turned on immediately before each processing (command statement) (for example, processing A. For example, A = B + C). Then, process A is tried. After trying process A, the process A trial end flag is turned on. Next, in order to verify the legitimacy of the value generated by the above processing, execute the legitimacy verification program, and if the value of A is obtained and the judgment is good, the legitimacy flag is turned on, If not, the generated value is initialized.

一方適宜に設定する時間(タイマー設定時間という)が経過すると、タイマーが割込み信号を発信する。コンピュータのCPUは割込み信号処理機能を持っているので、本来のプログラムであるベクトルプログラムを一時停止させ、データを全てレジスターに退避させ記憶させた後、割込みプログラムを起動させる。割込みプログラムは本来のプログラムのどこかに割り込んで動き、処理Aの試行終了フラグのオンオフ判定を行う。上記タイマー設定時間は、その時間内にウィルスが悪意の行為をした後本来のプログラムに戻り、処理Aの試行終了フラグをオンとする時間を与えないように短く設定しなければならない。基本的には処理Aに必要な時間と処理の試行終了フラグをオンする時間を加えた時間を超える範囲の最短時間であることが望ましい。そうすればウィルスが悪事を働く時間を制限することが出来る。その場合、正規のデータでも前記のタイマー設定時間よりも長い処理時間が必要な場合には、処理Aの途中での警告・緊急停止が起こる。しかしこれも良いとすることも一つの方法である。なぜなら緊急停止しても、人がチェックして問題が無ければそのまま再起動すれば済むことであり、ウィルスに悪事を働かせる時間を多く与えるよりはよほどましだからである。逆に言えば、タイマー設定時間を長く設定しウィルスに悪事を働く時間を与えると、ウィルスの悪事がデータを盗むだけの場合は、ウィルスの悪事を認知できないことに注意する必要がある。 On the other hand, when an appropriately set time (referred to as timer set time) elapses, the timer transmits an interrupt signal. Since the CPU of the computer has an interrupt signal processing function, the vector program, which is the original program, is temporarily stopped, all data is saved in a register and stored, and then the interrupt program is started. The interrupt program interrupts and moves somewhere in the original program, and determines whether the process A trial end flag is on or off. The timer setting time must be set to be short so as not to give time for the process A to return to the original program and turn on the trial end flag of process A after the malicious action has taken place within that time. Basically, it is desirable that the shortest time is within a range exceeding the time required for the process A and the time to turn on the process trial end flag. That way, you can limit the amount of time the virus does bad things. In this case, if even the regular data requires a processing time longer than the timer setting time, a warning / emergency stop occurs during the process A. But this is also a good way to do it. This is because even if there is an emergency stop, if a person checks and there is no problem, it can be restarted as it is, and it is better than giving more time for the virus to do something wrong. To put it the other way around, if you set a long timer setting time and give the virus time to do evil, it is necessary to be aware that if the virus only steals data, you cannot recognize the virus.

更に詳しく述べる。タイマー設定時間がセットされると、上記の割込みプログラムは、タイマー設定時間を経過すると起動し、ベクトル内の処理Aの試行終了フラグのオンオフを判定する。該フラグがオンならば、タイマー設定時間内に処理Aが正常に終了したことを示すので、割込みプログラムは本来のプログラムの割り込んだ次の場所に実行を戻す。一方、該フラグがオフであれば、その状態は、正常な読み込み処理の次にウィルスが実行されて時間を消費し、そのためまだ該フラグをオンさせていないと判断して、警告を発し、シナリオ関数プログラムを緊急停止する。
なお、プログラム設計上では、割込みプログラムにおいてオンオフを判定すべき処理試行終了フラグを特定するために、各ベクトルのスタートの直後に、当該ベクトルの処理試行終了フラグ名を割込みプログラムに登録する。
Further details will be described. When the timer set time is set, the interrupt program starts when the timer set time elapses, and determines whether the trial end flag of the process A in the vector is on or off. If the flag is on, it indicates that the process A has been completed normally within the timer set time, so that the interrupt program returns execution to the next place where the original program interrupted. On the other hand, if the flag is off, the state is that the virus is executed after the normal reading process and consumes time. Therefore, it is determined that the flag has not been turned on, and a warning is issued. Emergency stop the function program.
In designing the program, in order to specify the processing trial end flag for determining whether the interrupt program should be turned on or off, immediately after the start of each vector, the processing trial end flag name of the vector is registered in the interrupt program.

以上の実施形態は、割込みプログラムを使用したが、処理Aの試行時間を規制する方法もある。図2−1参照。即ち「処理Aが一定時間内に終了すれば正常として次の処理に進み、一定時間以内に終了しなければ、指定するプログラムに進む」というプログラム命令を使用する。一定時間以内に処理Aが終了しなければ、その状態は、正常な読み込み処理の次にウィルスが実行されて時間を消費した為であると判断して、警告を発し、シナリオ関数プログラムを緊急停止する。 In the above embodiment, the interrupt program is used, but there is also a method for regulating the trial time of the process A. See FIG. 2-1. In other words, a program instruction is used that “if processing A ends within a certain time, it proceeds to the next processing as normal, and if it does not end within a certain time, it proceeds to a designated program”. If process A does not finish within a certain time, it is judged that the state is because the virus was executed after the normal reading process and time was consumed, a warning was issued, and the scenario function program was urgently stopped. To do.

所で、個々のベクトル内の処理Aが試行終了したか終了していないかの判定の為のフラグの設置位置、或いは処理Aの試行時間を規制する命令の設置位置は、上記のように処理Aの直後が望ましい。それ以降の位置であれば、処理A以降で設置すべき処理試行終了判定フラグまでの途中の多くの操作のための時間が種々の要素によって変動するので、処理A直後に動くウィルスの悪事を働く時間を敏感に捕捉することが難しくなる。しかし、シナリオ関数によるプログラムにおいては、ベクトルは既に決められたパターンを持っており、そこに処理Aの試行終了フラグ、或いは処理試行終了時間規制命令を挿入することは好ましくない場合がある。その場合には、ベクトルを一定時間内に終了したかどうかでウィルスの悪事があったかどうかを判定する。図3参照。この場合、各ベクトルを制御するプログラム(シナリオ関数では座標関数という)の中に、各ベクトルを順番に起動する際に、
「ベクトルAが一定時間内に終了すれば正常として次の処理に進み、一定時間以内に終了しなければ、指定するプログラムに進む」
という命令を使えばよい。そして指定するプログラムに、警告を発しシナリオ関数の緊急停止をさせる機能を持たせる。
この場合には、ウィルスが起動後に本来のプログラムに戻って来る機能を持っているならば、前記の通りウィルスの捕捉は難しくなる。特にウィルスの悪事を働く時間が短ければ一層難しい。一方戻って来る機能を持たないウィルスには有効である。但し、その場合でも、前記の一定時間を短く設定できないソフトウェアの場合には、警告・緊急停止の前にウィルスに悪事を働く時間を十分に与えてしまうことに注意すべきである。
Whereas, the installation position of the flag for determining whether or not the process A in each vector is completed or not, or the installation position of the instruction that regulates the trial time of the process A is processed as described above. Immediately after A is desirable. If it is a position after that, the time for many operations on the way to the processing trial end determination flag to be installed after processing A will vary depending on various factors, so it will act as a virus that moves immediately after processing A It becomes difficult to capture time sensitively. However, in a program based on a scenario function, the vector has a predetermined pattern, and it may not be preferable to insert a trial end flag for process A or a process trial end time restriction command there. In that case, it is determined whether or not there has been a virus wrong based on whether or not the vector is completed within a predetermined time. See FIG. In this case, when starting each vector in turn in a program for controlling each vector (called a coordinate function in the scenario function),
“If vector A ends within a certain period of time, it proceeds to the next process as normal, and if it does not end within a certain period of time, it proceeds to the specified program.”
You can use this command. The specified program is given a function to issue a warning and make an emergency stop of the scenario function.
In this case, if the virus has a function of returning to the original program after startup, it is difficult to capture the virus as described above. It is even more difficult if you have a short working time, especially when doing virus evil. On the other hand, it is effective for viruses that do not have a function to return. However, it should be noted that, even in such a case, in the case of software that cannot set the predetermined time short, sufficient time is given to act on the virus before warning / emergency stop.

上記の処理時間監視プログラムを本来のプログラムに導入することは、シナリオ関数プログラムにおいては容易である。その理由を述べる。
シナリオ関数プログラムは、個別の処理方法を前記の段落番号0011記載及び図2記載のベクトルに搭載し、そのベクトルをランダムに並べておけばよく、処理順序を人が考え指示しなくても良いので、プログラムが非常に単純でありワンパターンである。なお、シナリオ関数プログラムについては前記の特許文献1及び2に詳細に記載されている。このワンパターンのプログラムに前記の処理時間監視プログラムに必要な諸命令群を予めテンプレートとして追加しておくことは簡単なことである。
It is easy for a scenario function program to introduce the above processing time monitoring program into the original program. The reason is described.
Since the scenario function program mounts the individual processing methods on the vectors described in the paragraph number 0011 and FIG. 2 and arranges the vectors at random, it is not necessary for the person to think about and specify the processing order. The program is very simple and one pattern. The scenario function program is described in detail in Patent Documents 1 and 2 described above. It is easy to previously add various instruction groups necessary for the processing time monitoring program as a template to the one-pattern program.

従来のプログラミング手法に応用する方法
前記シナリオ関数によるプログラミング手法では、処理順序はランダムでよく、処理順序は個々の処理を逐次循環繰り返し試行することにより決められることは前述の通りである。他方、従来のプログラミング手法では、処理順序は人が考えてプログラムで指示することは前述した通りであるので、その指示された順序が正しければ、或る処理に必要なオペランドはその時点で必ず値を持っているので個々の処理を逐次循環繰り返し試行する必要はない。しかし、この従来のプログラミング手法においては、段落番号0014で述べたような「全ての入力データ値から全ての出力データ値に至るまでの全てのデータ値が相互依存関係の連鎖で繋がっていることの保証」即ち「ウィルスによって汚染されたデータ値が一つもない保証」は得られない。
Method Applied to Conventional Programming Method In the programming method using the scenario function, the processing order may be random, and as described above, the processing order is determined by sequentially and repeatedly trying individual processes. On the other hand, in the conventional programming method, since the processing order is specified by the person in consideration of the processing order as described above, if the specified order is correct, an operand required for a certain processing always has a value at that time. Therefore, it is not necessary to repeat each process sequentially and repeatedly. However, in this conventional programming method, as described in paragraph 0014, “all data values from all input data values to all output data values are connected by a chain of interdependencies. A "guarantee", i.e. "a guarantee that no data values are contaminated by a virus" is obtained.

しかし、その保証を求めなければ、処理時間監視プログラムの中で、前記の正統性検証プログラムを具備する必要はない。目的が、『入力データにウィルスプログラムが混入し、そのウィルスが起動して、設定する一定時間内に正規のプログラムにおける次の処理(命令)が実行されない場合に、警告を発しプログラムの強制停止をする』及び『ウィルス対策としてその侵入経路と起動する場所は入力処理に限る』の二つだけで良いとすれば、前記の処理時間監視プログラム(図2)の中で正統性判定プログラムは不要となり、また処理時間監視プログラムは個々の全ての処理に適用するのではなく、入力処理にだけ適用すればよい。それを図示すれば図4である。 However, if the guarantee is not required, it is not necessary to provide the legitimacy verification program in the processing time monitoring program. The purpose is “If a virus program is mixed in the input data, the virus starts, and the next process (command) in the regular program is not executed within the set time, a warning is issued and the program is forcibly stopped. If it is only necessary to input the input path to the intrusion route and start location as a virus countermeasure, the legitimacy determination program is not required in the processing time monitoring program (FIG. 2). Also, the processing time monitoring program need not be applied to all individual processes, but only to input processes. This is shown in FIG.

入力処理(命令)だけは必ずこのワンパターンのサブルーチンによることとすればよい。この処理時間監視プログラムを備えた従来法のプログラミング手法では、シナリオ関数によるプログラミング手法と違って、ウィルスによる汚染を検出・除染・正常状態への復帰をすることは出来ないが、少なくともウィルスプログラムが動き本来のプログラムに戻らないウィルスの場合は、タイマー設定時間を経過すれば必ず警告を発し緊急停止される。また本来のプログラムに戻る機能を備えたウィルスの場合は、タイマー設定時間を短くすれば、段落番号0020記載と同様に、ウィルスが悪事を働く時間を制限することが出来る。だからウィルスが悪事を働く時間が一定時間よりも長ければ警告を発し緊急停止することが出来る。
以上によってウィルスが動いたことすら気付かないという災害は免れる。但し、段落番号0020に記載したシナリオ関数の場合と同様に、本来のプログラムの元の場所に戻る機能を備えたウィルスの場合、タイマー設定時間が長いと、ウィルスによるデータの盗み或いは改ざんがあっても、ウィルスを捉えることは出来なくなることに注意する必要がある。
Only the input process (command) is necessarily performed by this one-pattern subroutine. Unlike the programming method using the scenario function, the conventional programming method equipped with this processing time monitoring program cannot detect, decontaminate, and return to normal status due to virus contamination. If the virus does not return to the original program, it will be alerted and alerted whenever the timer has expired. In addition, in the case of a virus having a function of returning to the original program, if the timer setting time is shortened, the time during which the virus works wrong can be limited as described in paragraph 0020. So if the virus has been doing wrong for longer than a certain amount of time, it can issue a warning and make an emergency stop.
The above-mentioned disaster avoids disasters that do not even realize that the virus has moved. However, as in the case of the scenario function described in paragraph 0020, in the case of a virus having a function for returning to the original location of the original program, if the timer setting time is long, the virus may steal or alter the data. However, it should be noted that the virus cannot be caught.

コンピュータにウィルスが侵入し、秘かに情報を盗み、改ざんし、悪意ある動作をする等のサイバー攻撃が益々深刻になって来ている。最も困る問題は、ウィルスによる情報の漏えいや改ざんがあっても、被害者はそれを認知できないことである。本発明によって、ウィルスが起動すれば一定時間後には警告が発せられプログラムが緊急停止される。従って産業上の利用可能性は大きい。 Cyber attacks, such as viruses entering computers, secretly stealing information, tampering, and performing malicious actions, are becoming increasingly serious. The most troublesome problem is that even if information is leaked or falsified by a virus, the victim cannot recognize it. According to the present invention, if a virus is activated, a warning is issued after a certain time and the program is urgently stopped. Therefore, industrial applicability is great.

Claims (4)

プログラムを作成するための要件を単一機能命令文に分解し、夫々を「個々の処理」とする時、個々の処理を任意に並べ、個々の処理を順次循環繰り返し試行し、個々の処理を実行するために必要な全ての変数の値の生成を試み、生成できる値を順次に生成して行き、結局全ての個々の処理を実行させるシナリオ関数と呼ぶプログラムにおいて、個々の処理の所要時間を監視して、その所要時間が適宜設定された一定時間を超えるかどうかを判定し、超えた場合はウィルスの実行がなされたと判定して、警告を発し、シナリオ関数を緊急停止させる、
ことを特徴とするコンピュータプログラム。
When the requirements for creating a program are broken down into single-function statements, and each of them is called "individual processing", the individual processing is arranged arbitrarily, and the individual processing is sequentially and repeatedly tried. In a program called a scenario function that tries to generate the values of all the variables necessary for execution, sequentially generates the values that can be generated, and eventually executes all the individual processes, the time required for each process is Monitor to determine whether the required time exceeds a set time, and if it exceeds, determine that the virus has been executed, issue a warning, and urgently stop the scenario function.
A computer program characterized by the above.
請求項1のプログラムを従来のプログラミング手法に応用する場合のプログラムであって、個々の処理の内、入力処理についてのみ実行する請求項1に記載したプログラム。
The program according to claim 1, which is a program for applying the program of claim 1 to a conventional programming technique, and is executed only for input processing among individual processing.
請求項1又は2のプログラムが記憶された記憶媒体。
A storage medium in which the program according to claim 1 or 2 is stored.
請求項1又は2のプログラムが実体化された回路。

A circuit in which the program according to claim 1 or 2 is materialized.

JP2017116304A 2017-06-13 2017-06-13 Virus monitoring method by individual instruction processing time measurement Withdrawn JP2019003349A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017116304A JP2019003349A (en) 2017-06-13 2017-06-13 Virus monitoring method by individual instruction processing time measurement
PCT/JP2018/022072 WO2018230471A1 (en) 2017-06-13 2018-06-08 Virus monitoring program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017116304A JP2019003349A (en) 2017-06-13 2017-06-13 Virus monitoring method by individual instruction processing time measurement

Publications (1)

Publication Number Publication Date
JP2019003349A true JP2019003349A (en) 2019-01-10

Family

ID=64660461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017116304A Withdrawn JP2019003349A (en) 2017-06-13 2017-06-13 Virus monitoring method by individual instruction processing time measurement

Country Status (2)

Country Link
JP (1) JP2019003349A (en)
WO (1) WO2018230471A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3918500B1 (en) * 2019-03-05 2024-04-24 Siemens Industry Software Inc. Machine learning-based anomaly detections for embedded software applications

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3971353B2 (en) * 2003-07-03 2007-09-05 富士通株式会社 Virus isolation system
JP2013101550A (en) * 2011-11-09 2013-05-23 Junko Suginaka Information processing space management method, external device, and information processing device
WO2016021220A1 (en) * 2014-08-04 2016-02-11 根来 文生 Definition structure of program for autonomously disabling invading virus, program equipped with structure, recording medium installed with program, and method/device for autonomously solving virus problem

Also Published As

Publication number Publication date
WO2018230471A1 (en) 2018-12-20

Similar Documents

Publication Publication Date Title
CN106682497B (en) The system and method for secure execution code under supervisor mode
RU2627107C2 (en) Code execution profiling
KR101740224B1 (en) Illegal mode change handling
EP3259697B1 (en) Mining sandboxes
CN110048997B (en) Security system and method for handling fault injection attacks
EP3121749B1 (en) Method and apparatus for ensuring control flow integrity
US20070266435A1 (en) System and method for intrusion detection in a computer system
CN110717181B (en) Non-control data attack detection method and device based on novel program dependency graph
KR100745640B1 (en) Method for protecting kernel memory and apparatus thereof
KR20070019190A (en) Method for protecting file system and registry and apparatus thereof
JP7024792B2 (en) Program verification system, method and program
WO2018230471A1 (en) Virus monitoring program
KR100666562B1 (en) Method for protecting kernel driver and process
CN102819703B (en) For protecting the method and apparatus of web page attacks
KR100976961B1 (en) Security system for internet site and method thereof
KR100985071B1 (en) Method and Apparatus for detection and prevention malicious code using script languages for computer system
JP7383750B2 (en) Improved systems and methods for detecting fault injection attacks
JP7483927B2 (en) Method and apparatus for detecting malicious non-executable files by modifying the execution flow of application programs
KR20180015723A (en) Apparatus and method for transition between secure and sub-secure zones
Ruggieri et al. Security considerations for the development of secure software systems
US20180052998A1 (en) Fine-Grained Analysis and Prevention of Invalid Privilege Transitions
Thomas et al. Multi-task support for security-enabled embedded processors
Gicquel et al. SAMVA: Static Analysis for Multi-fault Attack Paths Determination
KR101986028B1 (en) System and method for protecting a device against attacks on processing flow using a code pointer complement
EP2919146A1 (en) An apparatus for enforcing control flows

Legal Events

Date Code Title Description
A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20190607