Virus


    [ ウイルスとアルゴリズムとの繋がり ]

一般的には、「ウイルス」ソフトは宿主のファイルの一部を書き換えて自分のコピーを追加して感染し、
感染した宿主のプログラムが実行した時に自分自身を複製するコードを実行する動作を行ないます。
ユーザの意図と無関係に自己複製を行い、多くの場合不利益をもたらすものがウイルスと呼ばれます。

    定義については後ほど考察するものとして、他にも「ワーム」、「トロイの木馬」、「スパイウエア」
    「コンセプトウイルス」や「ロジックボム」「ボット」等の種類があります。


「ウイルス」や「ウイルス対策ソフト」は「アルゴリズム」に関連するとても深い話題です。
アルゴリズムの語源を考えると、インド数学が流行した理由にも納得出来るかも知れません。


    [ 不正な動作と社会的関心 ]

「ニュース」等の事件報道で使用される用語としての「ウイルス」というと、
感染、増殖、隠蔽等、不正な動作を行なうプログラムの総称を指す場合が多く、
具体的に「どんな種類の技術を使ったか」ということよりも、
その「ウイルス」を使って結果的に「どんな不正を行なったか」
ということを早急に伝えることの方が優先事項のように見えます。

具体的な技術の解説については、社会的影響の度合いによって、
他の企画やメディアで、ニュースで使用した用語の解説や訂正を行なうケースが増えています。

これは犯罪全般に言えることですが、詳細な解説は社会的関心に左右されます。
正しい解説や、それに近い解説が増えるということは、
それだけ社会的影響や関心が大きくなったということでもあります。

    [ ウイルスを簡単に言うと... ]

「意図しない動作」は「バグ」であることもあります。

「不正な動作」を行なうことを意図して書かれたプログラム、
あるいは、そのプログラムの影響範囲や、効率を考慮して書かれた
ユーザが「意図しない動作」を行なうプログラムが「ウイルス」だと思っていればよいでしょう。

「ウイルス」、「意図しない動作」、「不正な動作」はそれぞれ別の存在として捉えた方が良いかも知れません。

ウイルスに対するワクチンである「ウイルス対策ソフト」も、多くの場合アルゴリズムでパターンを探します。
このことは未知のセキュリティホールだけではなく、
既知のウイルスであっても、亜種等のパターンに該当しないウイルスには対抗できないことを意味します。

    [ もう少し理論的に考えると... ]

コンピュータの基本動作は、[ 入力 -> 処理 -> 出力 ] です。
これはどんな処理であっても、機械的に、出力することを意味します。

ガーベージイン、ガーベージアウトは、「ごみを入れればどんな処理を行なっても結果としてごみがでる」という意味で、
なんらかのプログラミングを行なったことがあれば、聞いたことがある言葉だと思います。

上記を踏まえて、条件によって処理を行うかどうかを決める「ウイルス対策ソフト」のことを考えると、
[ 入力 -> 処理条件 -> 処理 -> 出力 ] というオートマトンの状態遷移図に近いものになります。

この「処理条件」が認証だったり、 firewall だったり、ウイルス対策ソフトだったりするわけですが、
処理条件が「~とみなす」というあいまいなパターンアルゴリズムである以上、
完璧なセキュリティなどありえないことが分かります。

処理条件が正しくなければ、正しい処理は行なわれず、結果として正しい出力を得られない場合があるということです。
これは、ウイルスを見逃すケースや、ウイルスと誤認識する可能性があることを意味します。

firewall に置き換えると、信頼した通信経路からの不正侵入には弱く、
使わないはずの通信経路を使おうと思った時に使えないケースがあると言うことです。

linuxやunixではデバイスへのアクセスにroot権限が必要な場合があったり、
強制アクセス制御のように、システムコールに割り込んで、
実行してもよいプログラムかどうかをチェックするプログラムもあります。

処理前の処理条件による処理という意味では同じです。
処理条件による処理を行なう理由がセキュリティなのです。



TOP