JP2010508573A - 暗号ハッシュを用いたウィルス位置決定法 - Google Patents

暗号ハッシュを用いたウィルス位置決定法 Download PDF

Info

Publication number
JP2010508573A
JP2010508573A JP2009534700A JP2009534700A JP2010508573A JP 2010508573 A JP2010508573 A JP 2010508573A JP 2009534700 A JP2009534700 A JP 2009534700A JP 2009534700 A JP2009534700 A JP 2009534700A JP 2010508573 A JP2010508573 A JP 2010508573A
Authority
JP
Japan
Prior art keywords
file
hash
virus
sequence
blocks
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.)
Granted
Application number
JP2009534700A
Other languages
English (en)
Other versions
JP4997373B2 (ja
Inventor
クレシェンツォ、 ジオヴァンニ ディ
フェラマク ヴァキル、
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.)
Telcordia Licensing Co LLC
Original Assignee
Telcordia Licensing Co LLC
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 Telcordia Licensing Co LLC filed Critical Telcordia Licensing Co LLC
Publication of JP2010508573A publication Critical patent/JP2010508573A/ja
Application granted granted Critical
Publication of JP4997373B2 publication Critical patent/JP4997373B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

整合性検査技術を用いてコンピュータウィルスを特定し、その位置を決定する方法を提供する。ファイルブロックのシーケンスを算出するステップと、ホストファイルからのファイルブロックのシーケンスのハッシュを計算し、感染ファイルからの同一または関連するファイルブロックのシーケンスのハッシュを計算するステップと、第1のハッシュと第2とのハッシュのいくつかが一致しない場合にウィルスの位置が出力されるように、同一または関連するファイルブロックのシーケンスから、ホストファイルからのハッシュと感染ファイルからのハッシュとを比較するステップと、を含む、3種類のウィルス感染のそれぞれへのウィルス位置決定方法が提供される。ウィルス感染の種類に基づいてファイルブロックのシーケンスを算出する方法と、衝突困難ハッシュ関数、デジタル署名方式、メッセージ認証コード、または疑似乱数関数を用いてハッシュを計算する方法が提供される。

Description

本発明は、一般に、ソフトウェアセキュリティに関し、特に、整合性検査(integrity checking)技術を用いてコンピュータウィルスを特定し、その位置を突き止める方法に関する。
ウィルス検出は、アンチウィルスソフトウェアを購入して動作させるような、ウィルスに対する予防処置をとることを定期的に要求されるあらゆるコンピュータユーザに対して、驚くほど広範な影響を与える問題である。ウィルスとは、テキストあるいは実行可能なコードなどの形態のデータであって、ユーザの承認なく、かつ一般にはユーザが知らない状態で、ユーザのファイルのデータに追加または上書きされたデータのことである。ウィルス検出の分野における研究として、特定クラスのウィルスを対象とする種々の発見的(ヒューリスティックな)方法がある。この問題の解決を試みるいくつかの最も効を奏した現在の技術は、シグネチュア検出及び整合性検査の一般的なパラダイムに分類される。そのようなものとして、例えば、E. Skoudis, "MALWARE:Fighting Malicious Code," Prentice Hall(2004)(非特許文献1)及びP. Szor, "The Art of Computer Virus Research and Defense," Addison Wesley(2005)(非特許文献2)に示されたものがある。前者のパラダイムは、既知のウィルスについてのシグネチュア(痕跡)と呼ばれる感染したコード断片を発見することと、そのシグネチュアを蓄積することと、コンピュータメモリをスキャンしてそのようなシグネチュアを探索するソフトウェアを開発することが必要である。本発明が視点を置く後者のパラダイムは、ファイルへの無承認の変更を検出でき、未知のウィルスの存在を明らかにする可能性を有する、暗号ハッシュ(cryptographic hash)関数を使用することが必要である。後者のパラダイムの成功した重要な例は、UNIX(登録商標)環境において広範に利用可能な整合性検査プログラムであるTripwireである。
例えば、G. Di Crescenzo, A. Ghosh, and R. Talpade, "Towards a Theory of Intrusion Detection"で検討されているように、シグネチュア及び異常検出における侵入検出原理は、ウィルス検出の方法論への洞察を与えている。シグネチュアによるウィルス検出パラダイムは、侵入検出分野におけるシグネチュア検出原理に類似しているが、それとは対照的に、整合性検査パラダイムは、侵入検出分野における異常検出原理に対してより類似している。
通常、利用可能なアンチウィルスソフトウェアは、ウィルスを検出する三つの主な技術であるシグネチュア、ヒューリスティックス及び整合性検証を使用している。シグネチュア技術は、侵入検出システムのシグネチュア検出手法に類似している。まず、既知のウィルスが調べられ、それらのシグネチュアが蓄積され、次に、これらのシグネチュアの存在が候補の実行可能ファイルで探される。これがウィルス検出の最も普及している手法であるが、この手法はベンダーによるシグネチュアデータベースの迅速な更新、及びユーザによるそれらのシグネチュアファイルの迅速な更新に依存しており、ポリモーフィック(多様型:polymorphic)及びメタモーフィック(変成型(metamorphic))型のウィルス技術によって簡単に破られる。
他の二つの技術であるヒューリスティックス及び整合性検証は、侵入検出システムでの異常検出手法にさらに類似している。ヒューリスティックス技術は、例えば、実行可能ファイルへの書き込み、ブートセクタへのアクセス及びハードドライブの内容の消去の試みなどのようにウィルスが示しそうないくつかの挙動に基づいてウィルスの特定を試みる点で、いくぶん高度な技術であるかもしれない。整合性検証技術は、感染が起こったであるが、おそらくは感染したファイルの実行の前であり、それによって感染はまだ実害を与えないものとなっているときに、ファイルへの予期しない変更を検出しようとするものである。
ヒューリスティックス技術及び整合性検証技術は、両方とも、多様性(polymorphism)及び変成能力(metamorphism)を備えたような、より「賢い」ウィルスを捕捉する潜在的能力を有している。しかしながら、これらの技術は特定のファイルに関してせいぜい警告を発することができる程度である。その特定のファイルは、そののち、潜在的なウィルスの位置、性質及び被害についての結論が導き出される必要のある制御された環境の下でのウィルス診断段階において、慎重にエミュレートして分析される必要がある。エミュレーション用の正確に制御された環境を実現することは困難であるので、導き出された結果の精度は信頼できない可能性がある。さらに、多くの場合、元のファイルへのウィルスによってもたらされる変更は、例えばメモリ以外のどこかの場所にあるプログラムを呼ぶサブルーチンのように、極めて小さいので、ウィルス自体についての付加的な情報を得ることは極めて有用であろう。
また、整合性検証技術または整合性検査原理は、ファイルへの変更を検出するだけであり、ファイル内で変更が発生した位置を突き止めないし、示すこともない。ウィルスについての位置決定情報がないのでは、ウィルスの検出は、非常に資源を消費する割には失敗を起こしやすいものとなる。このことは、ソフトウェアセキュリティの分野における新たな問題である「ウィルス位置決定」を暗に示している。
E. Skoudis, "MALWARE:Fighting Malicious Code," Prentice Hall(2004) P. Szor, "The Art of Computer Virus Research and Defense," Addison Wesley(2005) G. Di Crescenzo, A. Ghosh, and R. Talpade, "Towards a Theory of Intrusion Detection" B. Schneier, "Applied Cryptography:Protocols,Algorithms and Source Code in C," J. Wiley & Sons(1993) S. Quinlan and S. Dorward, "Venti:a New Approach to Archival Storage," Proc. of USENIX Conference on File and Storage Technologies (FAST), 2002 G. H. Kim and E. H. Spafford, "The Design and Implementation of Tripwire: a File System Integrity Checker," Proc. of 2nd ACM Conference on Computer and Communications Security (ACM CCS), 1994
本発明者らが知る限り、ウィルスの位置決定の問題はこれまで厳密には研究されておらず、また、これまで問題提起されたことさえなかった。暗号ハッシュのデータへの適用はデータ整合性検証にとっては周知のパラダイムであり、Tripwireのようなファイルシステムの整合性を検証するプログラムにとっては基本的なものである。ファイルのすべての微小(atomic)ブロックの暗号ハッシュも公知のパラダイムであり、高いレイテンシ(待ち時間)の狭い帯域幅のリンクを介してファイルを遠隔で更新したり、あるいは追記型(write-once)アーカイブデータ記憶装置の目的に対処したりするプログラムにおいて使用されてきた。しかしながら、これらのプログラムのいずれもウィルス位置決定の問題を解決してこなかった。
本発明は、好都合にも、3種類のウィルス感染のそれぞれに対するウィルス位置決定の方法を提供する。一実施態様において、この方法は、ホストファイルからのブロックのシーケンスのハッシュを計算するステップと、疑わしいかまたは損傷したファイルを、各グループが複数のブロックのシーケンスを含んでいる、複数のグループに分割するステップと、疑わしいファイルの複数のブロックのシーケンスのすべてのハッシュを算出するステップと、ホストファイルからのハッシュを疑わしいファイルからのハッシュと比較し、その結果、不一致が見つからない場合、その疑わしいファイルは「損傷していない(uncorrupted)」と宣言され、少なくとも一つの不一致が見つけられた場合、その疑わしいファイルは「損傷している(corrupted)」と宣言され、ファイル内でのウィルスのおおよその位置を決定するステップと、を含む。
ウィルス位置決定方法は、ファイルブロックのシーケンスを算出するステップと、ホストファイルからのファイルブロックのシーケンスのハッシュを算出し、感染ファイルからの同一または関連したファイルブロックのシーケンスのハッシュを算出するステップと、第1のハッシュと第2のハッシュのいくつかが一致しない場合にウィルスの位置が出力されるように、同一または関連するファイルブロックのシーケンスから、ホストファイルからのハッシュを感染ファイルからのハッシュと比較するステップと、を含むことができる。ウィルス感染の種類に応じてファイルブロックのシーケンスを算出する方法と、衝突困難ハッシュ関数、デジタル署名方式、メッセージ認証コード、または疑似乱数関数を用いてハッシュを算出する方法とが提供される。
図1は概略図である。 図2は、ウィルスの位置を決定するために後で用いられるファイルブロックのシーケンス及びハッシュを算出する、ハッシュアルゴリズムの一般的な構造を示している。 図3は、書換え型ウィルス(rewriting-virus)に感染したファイルの場合の、ハッシュアルゴリズムRew−pHによって算出されたファイルブロックのシーケンスを示している。 図4Aは、書換え型ウィルス位置決定アルゴリズムRew−Locでのステップを示している。 図4Bは、(Rew−Locによって用いられる)アルゴリズムRew−RecLocでのステップを示している。 図5は、追加型ウィルス(appending-virus)に感染したファイルの場合の、ハッシュアルゴリズムApp−pHによって算出されたファイルブロックのシーケンスを示している。 図6Aは、追加型ウィルス位置決定アルゴリズムApp−Locでのステップを示している。 図6Bは、(App−Locによって用いられる)アルゴリズムApp−RecLocでのステップを示している。 図7は、埋め込み型(embedding)ウィルスに感染したファイルの場合の、ハッシュアルゴリズムEmb−pHによって算出されたファイルブロックのシーケンスを示している。 図8は、埋め込みウィルス位置決定アルゴリズムEmb−Locでのステップを示している。 図9は、種々のウィルス位置決定技術の特徴の要約である。 図10は、種々のウィルス位置決定技術の性能評価である。
本発明は、図面を参照し、図面全体にわたって類似の参照符号が類似の部分を示す本発明の非限定的な例示の実施形態によって、以下の詳細な説明において詳述される。しかしながら、当然に理解されようが、本発明は図示通りの装置及び手段に限定されるものではない。
ウィルス位置決定を用いてソフトウェアのセキュリティを改善する方法が提供される。ファイルに対する変更を検出するだけでなくファイル内でのこれらの変更の位置が突き止められるように、上述した整合性検査原理を拡張することができる。
ウィルス位置の決定を達成する方法を、書換え型(rewriting)手法、追加型(appending)及び先頭追加型(prepending)手法、及び挿入型(insertion)または埋め込み型(embedding)のそれぞれの手法のような、各感染手法に対して考案することができる。本発明に基づく方法は、感染手法に特化したコードによって選択された暗号ハッシュを、ファイルブロック群の種々のシーケンスに対して反復して効率的な適用することに基づいている。すべての場合において、この方法は満足できる位置決定を行う。すなわち、ウィルスより高々2倍大きな領域が損傷ファイル内で特定され、効率、すなわち位置決定ハッシュ関数によって返されるハッシュは、従来の暗号ハッシュ関数によって返されるハッシュよりも最大で対数因子の分だけ長い。出力効率は、位置決定ハッシュ関数の重要な特性である。というのは、下で議論するように、はるかに長いハッシュ、すなわち入力ドキュメントの微小ブロック数における線形因子だけ長いハッシュを返す自明な構造があるからである。
結果的に「損傷したファイル」になる「ターゲットファイル」に対してある改変を行うウィルス(ここで、改変の種類は特有の「感染手法」によって変わる可能性がある)を以下で考察する。(暗号)衝突困難ハッシュの既知の概念及び形式的定義(例えばB. Schneier, "Applied Cryptography:Protocols,Algorithms and Source Code in C," J. Wiley & Sons(1993))が示され、ウィルスの振る舞いの分類が説明される。
衝突困難ハッシュの概念:
「衝突困難(collision-intractable)」ハッシュ関数、または「衝突なし(collision-free)」、「衝突困難(collision-resistant)」、及び時として「暗号(cryptographic)」関数として知られている、暗号法でしばしば用いられる数学的ツールが、ファイルやメッセージなどの整合性検証を必要とする用途を含むいくつかの用途において非常にしばしば用いられている。これらのツールまたは関数は以下のように定義される:すなわちそれらは、入力として任意の長さの二進(バイナリ)文字列(圧縮されるべきファイルを示す)を受け取り、出力として固定サイズ(例えば128または160ビット)の二進文字列(元のファイルのハッシュまたはフィンガープリント(指紋)を示す)を返す。ハッシュ関数への入力が160ビットよりはるかに長い場合、ハッシュ関数の任意の単一出力の原像(preimage)の数は非常に大きくなる。さらに、これらの関数によって期待される驚くべき特性は、任意のアルゴリズムでもそれを実行に成功するのに実行不可能な時間(例えば、数世紀またはそれ以上)を要するであろうという意味において、同一の出力へマップ(写像)されるたった2つの原像を見つけることすら、いかなる効率的なアルゴリズムにとっても計算困難でありそうだからである。
衝突困難ハッシュ関数の形式的定義:
kをセキュリティパラメータとし、H={Hwk∈Nを関数
w:{0,1}k×{0,1}a→{0,1}b
の族(family)とする、ここでa>bであり、wは|w|=kを満足する関数インデックスである。以下の条件、
(1)各wに対してHwを算出する(kについての)確率的多項式時間アルゴリズムが存在する;
(2)任意の確率的多項式時間アルゴリズムAに関し、wが一様に選択された場合に、Hw(x1)=Hw(x2)となるような確率A(w)=(x1,x2)が最大でε(k)となる、どんな逆多項式よりも漸近的に小さい関数εが存在する;
が成り立つ場合に、Hを衝突困難ハッシュ関数(collision-resistant hash function)の族であると言う。
衝突困難ハッシュ関数には以下の特性が認められる:無視できる確率(negligible probability)を除いて、x1及びx2が多項式時間アルゴリズムから算出される場合、|x1|≧k,|x2|≧kに対してx1≠x2の時、Hw(x1)≠Hw(x2)となる。それらの入力に対して微小(atomic)衝突困難ハッシュ関数を繰り返し適用する合成衝突困難ハッシュ関数の構造を、任意の2つの入力に基づいた、合成関数の結果として生じた出力が入力の類似性及び/または差異についての情報を明らかにするように、構築することができる。
ウィルスの振る舞いの分類:上書き、先頭追加、追加、埋め込み:
大半のインターネットウィルスをそれらウィルスの感染手法、すなわち以下に詳細に説明する、上書き(Overwriting)、先頭追加(Prepending)、追加(Appending)、及び埋め込み(Embedding)の1つにしたがうように特徴づけることができる。
上書き型感染手法(Overwriting Infection Technique):
この感染手法では、ウィルスは、ホストのコードの一部を交換することによって、ホストまたはターゲット実行可能ファイルに感染する。ウィルスにとってこれを実現可能な1つの方法は、正規のデータファイルを開くであろうように、書き込みのために簡単にターゲットファイルを開き、その後、ウィルス自身のコピーをファイルにセーブすることである。これによって損傷ファイルが発生することになる。損傷した実行可能ファイルが、そのあとで、その所有者によって実行開始されるとき、オペレーティングシステムは、元のターゲットプログラムの代わりにウィルスコードを実行するだろう。この感染手法は、通常、ターゲットファイルにダメージを与え、それを使用不能にする。
先頭追加型感染手法(Prepending Infection Technique):
この感染手法では、ウィルスは、どのウィルスが感染したいホストまたはターゲット実行可能ファイルの先頭にそのコードを挿入し、損傷した実行可能ファイルを生成する。この技術は、一般に、上書き技術より精巧であり、例えばウィルスNimdaによって使用された。損傷ファイルが、そのあとで、その所有者によって実行開始されるとき、ウィルスコードが実行可能プログラムの先頭に位置し、次に意図されたすなわち元のターゲットプログラムが位置するので、オペレーティングシステムは、最初にウィルスコードを実行するだろう。この感染手法は、ターゲットファイルを破損するようには見せないだけでなく、コードの所有者によって簡単に検出できない、という効果も持っている。事実、そのようなウィルスの存在は容易に検出できない。
追加型感染手法(Appending Infection Technique):
この感染手法では、ウィルスは、そのウィルスが感染したいホストまたはターゲット実行可能ファイルの終わりにそのコードを挿入し、さらに、通常、ウィルスコードの先頭へのジャンプも感染または損傷したファイルの先頭に挿入する。損傷した実行可能ファイルが、そのあとで、その所有者によって実行開始されるとき、オペレーティングシステムは、まず、ジャンプしてウィルスコードを実行し、次に、意図したプログラム、すなわち元のターゲットプログラムの制御に戻るであろう。先頭追加手法と同様に、この感染手法を用いたウィルスの存在を検出するのは容易ではない。この手法は、例えばウィルスMichelangeloで使用された。
埋め込み型感染手法(Embedding Infection Technique):
この感染手法では、ウィルスは、1個のコードまたは別個のファイル中のコードを指すコマンドを、シェルスクリプト、Perlのスクリプト、Java(登録商標)のクラスファイル、または正規の実行可能ファイルに最終的にコンパイルされる1つまたは複数のファイルのソースコードのどこにでも挿入する。この手法が見られた例はほとんどないが、実行可能命令を含んだあらゆるプログラムがウィルスの潜在的なターゲットであるということに注意しなければならない。
暗号ハッシュに基づいた整合性検証:
上述したように、整合性検証技術は、ファイルを実行する前に、そのファイルへの予期しない変更を検出しようとするものである。暗号ハッシュに基づいた整合性検証は以下のように行うことができる。
任意の衝突困難ハッシュ関数の族H={Hwk∈N(表記を簡単にするために、Hwからインデックスwを落としている)及びファイルfが与えられるすると、160ビットの値であるhash(ハッシュ)=H(f)値は、任意の効率的なアルゴリズム(場合によりfそのものを生成するアルゴリズム)が整合性検証試験H(g)=H(f)を満足するfとは異なるgを実現可能な計算時間で得るまたは既に持つことができないであろう、という根拠を与える。
実行可能またはソースファイルの整合性検証は以下のように行われる。準備段階では、ファイルがその元のソースファイルからダウンロードされる場合のように、ファイルfが感染していないと考えられる場合、タグhash=H(f)がファイルに添付されている。そののち、合法的な変更がファイル上で行われてファイルf'になると、新しい値hash'=H(f')が以前のハッシュ値に取って代わる。ファイルを実行する必要がある場合、または実行のためにコンパイルされる必要がある場合、整合性検証試験はファイルの現在のバージョンf''上で行われる、すなわち、hash'=H(f'')かどうかがチェックされる。一致が確認されれば、合法的な変更のみがファイルになされたという根拠を持つことになり、一致が確認されない場合には、ある予期しない変更が生じていることになる。この変更は感染によってもたらされ得るので、次に、そのファイルは、安全な環境でファイルの実行をエミュレートすることを含む種々の診断技術を試みるアナライザに送られ、ウィルスについての有用な情報を引き出し、たぶん、ファイルf''をその以前の感染していない状態に修復する。
暗号ハッシュを整合性検証に用いるよくあるシステムとして、S. Quinlan and S. Dorward, "Venti:a New Approach to Archival Storage," Proc. of USENIX Conference on File and Storage Technologies (FAST), 2002(非特許文献5)及びG. H. Kim and E. H. Spafford, "The Design and Implementation of Tripwire: a File System Integrity Checker," Proc. of 2nd ACM Conference on Computer and Communications Security (ACM CCS), 1994(非特許文献6)に記載されるVentiがある。
暗号ハッシュとウィルス位置決定:
上記の技術を拡張して、整合性を検査するだけでなく、2つのファイル間の差異についての付加的情報を明らかにすることもできる。上記の整合性検証技術の基礎的な特性は、以下のように言い直すことができる。ファイルM(1)及びM(2)、及びそれらのハッシュhash(1)及びhash(2)が与えられると、M(1)=M(2)ならば1であり、そうでなければ0である定義される関数p(M(1),M(2))を決定する効率的なアルゴリズムDIFFが存在する。アルゴリズムDIFFは、入力p、hash(1)及びhash(2)を用いて、単純にhash(1)=hash(2)かどうかを検査し、もしそうならば1を返し、そうでない場合には0を返す。この手法はより広範な関数に、特に、例えば書換え型(rewriting)、追加型、先頭追加型及び埋め込み型の感染手法のような上述した感染手法によって引き起こされる、M(1)とM(2)との間の差異に関する情報を検出する関数に、一般化することができる。例えば、p-revealing(p−顕示)衝突困難ハッシュ関数は、2つのファイルM(1),M(2)を返す任意の効率的な敵対者に対して、入力としてM(1)及びM(2)の2つのハッシュを受け取る際に関数p(M(1),M(2))を算出できる効率的なアルゴリズムDetが存在するような、衝突困難ハッシュ関数として形式的に定義される。ここでpは、通常、2つのファイル間の差異に関する何らかの情報を返す関数である。任意の衝突困難ハッシュ関数はM(1)とM(2)との間の差異の性質に関する有用な情報を明らかにするのを支援するようには見えないが、従来のものから発展したより複雑な衝突困難ハッシュ関数を考案して有用な情報を得ることができる。
説明した本発明に基づく方法のすべてでは、各ファイルMはn個の微小ブロックM(1),M(2),…,M(n)からなり、ここでブロックサイズは適切に選択することができる。例えば、ファイルを例えばソースファイルの行に分解できるような、最も小さな意味上(semantic)の単位として、ブロックサイズを決定することができるであろう。1つの手法では、非常に単純なハッシュ関数が、入力ファイルの各ブロックの微小ハッシュを返し、次に、以前に算出されたすべてのハッシュの微小ハッシュを返すことによって得られる。ここで微小ハッシュは、任意の衝突困難ハッシュ関数を用いて算出される。この技術をファイルの各ブロック上で上記のアルゴリズムDEFFとともに用いて、関数pによって必要とされるあらゆる興味ある情報を引き出すことができる。しかしながら明らかな欠点は、返されたハッシュが長すぎることであり、それは従来のハッシュの大きさのn倍に等しい。このことは、数キロバイトのようなかなり小さなサイズのファイルにとっても既に非実用的になり得る。
しかしながら、例示実施形態では、構造(construction)の「拡張ファクタ(expansion factor)」と呼ばれる、返されたハッシュの大きさは、以下のように定義される。Hを衝突困難ハッシュ関数とし、cHをHへの呼び出しを行うハッシュ関数の構造としよう。すると、cHの拡張ファクタは、nビットの入力上のHにより返された出力の大きさで除算されたnビットの入力上のcHによって返された出力の大きさとなる。できるだけ短い拡張ファクタを有する構造、例えばnについての対数が非常に望ましい。すべての構造を拡張ファクタに等しいハッシュ関数の適用回数として記述できるので、この構造は、付加された検証及びハッシュの発生に起因する計算上及び記憶上のオーバヘッドを非常に小さくすることを可能にする。
この性能を達成するために、感染手法の各々で例示したように、基礎の衝突困難ハッシュ関数の複数回の適用が、メッセージビットの慎重に選択されたシーケンスに対して算出される。例えば、シーケンスの選択は、後で複数のハッシュのみから2つのメッセージ間の差異に関する所望の情報を「復号する」ことを可能にする、適切な「符号化方式」にしたがって行うことができる。ここで、符号化/復号方式及び所望の情報はともに、感染手法に依存している。
他の興味のあるメトリックは、ウィルスが検出される局在化された領域を最小限にすることであろう。特に、ある「位置決定因子」ρに対して、最大でmax(ρ・b(V),1)となるブロック数を含んだブロックの間隔を返すことが望ましい。ここでb(V)はウィルスVが構成されるブロック数である。
本発明に基づく方法におけるすべての構造は、位置決定因子ρ=2(nについての対数で表される拡張ファクタ)を達成し、ハッシュについての頻繁でないオフライン計算を必要とするのみであり、その結果、計算オーバヘッドは、システム全体の効率への重要な要因にはならない。
図1は、疑わしいファイル12になるような処理技術によって変更されるターゲットファイル10を示す概略図である。図2は、ハッシュアルゴリズム、例えば一般的なp-revealingハッシュ関数の一般的な構造を示している。このハッシュアルゴリズムは、後でウィルスの位置を突き止めるのに用いられるファイルブロックのシーケンス及びハッシュを算出する。ステップA1において、ブロックシーケンスが算出される。ステップA2において、各ブロックシーケンスに対してハッシュが算出される。このハッシュはステップA3において出力される。以下に、各種の感染すなわち書換え型、追加/先頭追加型及び埋め込み型のためのハッシュアルゴリズムをより詳細に説明する。
書換え型感染のウィルス位置決定:
上述のように、書換え型感染手法では、ウィルスは、ターゲットファイルのいくつかのブロックを書き換える。ほとんどの場合、損傷ファイルは、書換えの後でさえ同一サイズのままであり、書き換えられたブロックが隣接して配置されている。本発明に基づく方法は、ファイルからのブロックのシーケンスに対してできるだけ多くのハッシュを算出し、ファイルのいかなる位置でも連続するブロックのセグメントを書き換えるウィルスの位置決定を後でできるようしている。したがって、ファイル中のブロック数をnとすると、位置決定ハッシュ関数は、ファイルブロックの4(log2 n−l)個のシーケンスに対してハッシュを算出するので、4(log n−1)個のハッシュが算出される、すなわち、log n−1個のグループの各々に対して4つのハッシュが算出される。例えば、n=1024の場合、4×(10−1)すなわち36個のハッシュが算出される。図3は、書換え型感染に対するウィルス位置診断ハッシュ計算の例示実施形態において、ハッシュ計算がなされるファイルブロック14,16,18,20のシーケンスから構成されたグループ22を示している。なお、i番目のグループ22では、n/2i+1ブロックだけファイルを巡回的に回転させ、第1のシーケンス14及び第2のシーケンス16に分割を再適用することにより、第3のシーケンス18及び第4のシーケンス20が得られることに留意されたい。
実施形態では、p-revealing衝突困難ハッシュ関数pは、以下のように定義される。n個のブロックを有するファイルM1,M2の入力上で、関数p(M1,M2)は次に等しくなる:
M1=M2の場合は0;
(b−a)<(n/4)、かつ、M1(a),M1(a+1),…,M1(b)及びM2(a),M2(a+1),…,M2(b)だけがM1とM2とが異なるブロックである場合に(a,b); それ以外の場合には⊥。
したがって、この解析は、最大でn/4個のブロックを書き換えるウィルスに限定される。その理由は、より多くのブロックが書き換えられた場合、位置決定ハッシュ関数が従来のハッシュ関数に比べて著しく有用ではなくなるので、位置決定問題は妥当性を失うからである。
したがって各ステップでは、微小衝突困難ハッシュ関数Hが、入力ファイルのいくつかのブロックのハッシュを算出するのに用いられる。M1をM2に改変する書換えウィルスのためによって相互に異なっている任意の2つのファイルM1,M2が与えられると、各ステップにおけるハッシュは、M2における候補ブロックの半分を削除することによって、ウィルスの位置を発見するための支援を行うはずである。削除されたブロックは、ファイル中のまだ削除されていないブロックの前半または後半、またはファイル中のまだ削除されていないブロックの適切な巡回シフトの前半または後半、の4つの中の1つである。これは位置決定因子2を達成するのに十分であり、各ステップで4個のハッシュが算出されるので、出力拡張は高々4・log nとなる。
衝突困難ハッシュ関数の形式的な記述を以下に続ける。Rew−pHとして示す本発明に基づくp-revealing衝突困難ハッシュ関数は、入力としてn個のブロックからなるメッセージM=M(0),…,M(n−1)を受け取り、以下のように、元の衝突困難ハッシュ関数Hを4・log n回にわたってMのl個のブロックのシーケンスに適用する(説明を簡単にするために、nは2のべき乗であり、対数は底が2であると仮定する)。
ステップ1:
この第1のステップで、Mの中のブロックは、各シーケンスがn/2個のブロックの連結によって得られる、次のように定義される4つのシーケンスにグループ化される:
1,1=M(0)|…|M(n/2−1),
1,2=M(n/2)|…|M(n−l),
1,3=M(n/4)|…|M(3n/4−1),
1,4=M(0)|…|M(n/4−1)|M(3n/4)|…|M(n−1))。
1,3及びS1,4のブロックのインデックス(指標)は、それぞれn/4だけ、S1,1及びS1,2のブロックのインデックスを巡回的にシフトすることによって得られる。このステップでの4つのハッシュは、i=1,2,3,4に対してh1,i=H(S1,i)として算出される。
ステップj、ここでj=2,…,log n−1:
ステップ1を拡張して、M中のブロックは、各シーケンスがn/2j個のブロックの連結によって得られる、次のように定義される2×2j個のシーケンスにグループ化される:
j,i=M((i−1)*n/2j)|…|M(i*n/2j−1),
j,i+2j=M(((i−1)*n/2j+n/2j+1) mod n)|…|M((i*n/2j+n/2j+1−l) mod n),
ここで、i=1,…,2jである(なお、Sj,i+2jでのブロックのインデックスは、n/2j+1だけ巡回的にSj,iのインデックスをシフトすることによって得られる)。
このステップにおける4つのハッシュは以下のように算出される:
i=1,2の場合には、
j,i=H(Sj,i|Sj,i+2|Sj,i+4|…|Sj,i+2j-2),
i=3,4の場合には、
j,i=H(Sj,i-2+2j|Sj,i+2j|Sj,i+2j+2|…|Sj,i+2j+2j-4)。
関数の出力は、h=((h1,i,h2,i,…,hlog n-1,i))i=1,2,3,4である。
Rew−pHの微小ハッシュの全体の数はたったの4・log n−4であり、これは、各ハッシュがウィルス間隔の位置に関する1ビットの情報を明らかにするモデルにおいて、本質的に最適である。
Rew−pHが衝突困難であることを示すために、Rew−pHの出力での衝突を発見するアルゴリズムは、値j=0,1,…,log n及び値i=1,2,3,4の少なくとも1つに対して、Hによって同じh(j|i)にマッピングされる2つの異なる入力を見つけることに気づく。このことは、Hの衝突を発見するアルゴリズムを暗示している。
Rew−pHがp-revealingであることを示すために、pHとすべてのインデックス(j,i),j∈{1,…,log n−1},i∈{1,2,3,4}に対するハッシュhj,iとを用いる効率的なアルゴリズムLocを構築し、ファイルMの疑わしいかまたはおそらく損傷したバージョンM'における書換え型ウィルスの位置決定を行う。図4Aに示したアルゴリズムRew−Locは、以下のように説明することができる:
1. M'の入力に対してRew−pHを適用したときの、出力h'=((h'1,i,h'2,i,…,h'log n-1,i))i=1,2,3,4を算出する(ステップS1);
2. すべてのインデックス(j,i),j∈{1,…,log n−1},i∈{1,2,3,4}に対して、hj,i≠h'j,iの場合にはtj,i=1となり、hj,i=h'j,iの場合にはtj,i=0となるtj,iを算出する(ステップS2);
3. S={1,…,n},j=1を設定し、入力ペア(S,j)についてプロシージャ(手順)Rew−RecLoc(下に定義される)を実行したときに返されるブロックTのシーケンスを出力する(ステップS3);
ステップS4では、プロシージャRew−RecLocを実行する。プロシージャRew−RecLoc(S,j)は、以下のように定義され、図4Bに示されている:
1. すべてのインデックスi∈{1,2,3,4}に対してtj,i=1の場合には(ステップS5)には、T=Sを戻り値として返し、停止する;
2. tj,i*=0となるようにi*を定める(ステップS6);
3. i*=1または2場合には(ステップS7)、群Sj,i,Sj,i+2,Sj,i+4,…,Sj,i+2j-2からのブロックを群Sからすべて取り除く(ステップS8);
4. i*=3または4の場合には(ステップS9)、群Sj,i-2+2j,Sj,i+2j,Sj,i+2j+2,…,Sj,i+2j+2j-4からのブロックを群Sからすべて取り除く(ステップ10);
5. プロシージャRew−RecLoc(S,j+1)を実行する(ステップS11)。
pの定義により、(b−a)<(n/4)の場合を考えるだけで十分とすれば、Rew−pHがp-revealingであるという証明は、次の補助定理の帰結となる。高々n/(2・2j)のサイズの任意のウィルス間隔(a',b')に対し、M'(ウィルス間隔(a',b')を有する書き換え型感染にかかったMのバージョン)の入力と、元のファイルMの入力上で構造Rew−pHのステップjまでに得られたハッシュとに対して、アルゴリズムRew−Locは、n/2j≧(b−a+1)、(b−a+1)≦n/2jの場合には、a≦a'≦b'≦bとなるような間隔(a,b)を返す。
追加型/先頭追加型感染のウィルス位置決定:
追加型感染手法と先頭追加型感染手法とを対称的な方法でを扱うことができる。上述のように、追加型感染手法ではウィルスはターゲットファイル10の末端に追加されるが、先頭追加型感染手法ではウィルスはターゲットファイル10の先頭に追加される。結果として、両方の感染手法においては、損傷してしまったまたはその疑いのあるファイル12のファイルサイズは大きくなり、ウィルスが追加または先頭追加された後、以前のファイルサイズが失われる可能性がある。本発明に基づく方法では、ファイルの末端に連続するブロックのセグメントを追加する(または、先頭にセグメントを先頭追加する)ウィルスの位置決定を行うことをあとで行うために、ホストファイル10からのブロックのシーケンスについての多くのハッシュを算出する。損傷していないターゲットファイル10のブロック数がnであり、損傷しているファイル12のブロック数がn'であると仮定する。すると、l個のブロックからなるメッセージの入力上で、構造は、たかだかlog4/3 l/4個のファイルブロックシーケンスを、したがってたかだかlog4/3 l/4個のハッシュを返す、すなわち、log4/3 l/4個のフェーズのおのおのに対して1つのハッシュを返す。例えば、l=1024の場合には20個のハッシュがある。
図5は、追加型/先頭追加型感染に対するウィルス位置決定ハッシュを行う例示実施形態において、ハッシュされるファイルブロックのシーケンス24を示している。
本発明に基づくウィルス位置決定方法では、p-revealing衝突困難ハッシュ関数を構築することができ、ここで、pは以下のように定義される。必ずしも長さが等しくなくてもよM1及びM2の入力上で、関数p(M1,M2)は次に等しくなる:
M1=M2の場合は0;
|M2|<2|M1|であり、及びi=1,…,x−1に対してM1(i)=M2(i)であり、かつi=xに対してM1(i)≠M2(i)である場合はx;
それ以外の場合には⊥。
上で議論した書換え型感染の場合のように、解析を、最大でn個のブロックを追加するウィルスに限定することができる。すなわち、M2でのブロック数がたかだか2nであると仮定する。ここでnは、M1中のブロック数である。したがって、各ステップにおいて、微小衝突困難ハッシュ関数Hが、入力ファイルのいくつかのブロックの2つのハッシュを算出するのに用いられる。M1をM2に改変する追加型ウィルスのために相互に異なっている任意の2つのファイルM1,M2が与えられると、各ステップにおいて、2つのハッシュは、M2中での候補ブロックの約半分を削除することによって、ウィルスの位置を発見するための支援を行うはずである。
追加型及び先頭追加型ウィルスに伴う主な1つの困難点は、ファイルM2の長さがターゲットファイルM1の長さとは異なる可能性があることであり、したがって、上で説明した書換え型ウィルスに対する技術のような「長さ依存の」技術は用いることができない。その代りに、ファイルの先頭からはじめて、候補ブロックは、ターゲットファイルの長さとは無関係なシーケンスのハッシュを慎重に算出することにより、削除される。
Hが衝突困難ハッシュ関数を表わすとする。App−pHとして表わされるp-revealing衝突困難ハッシュ関数は、入力としてl個のブロックからなるメッセージM=M(1),…,M(l)を受け取り、元の関数Hを最大でlog l回にわたってMのl個のブロックのシーケンスに対して以下のように適用する:
1. j←1及びMj=Mと設定する;
2. 2k<l/2となる最大の正の整数kを算出し、Mjから、シーケンスSj,1=Mj(1),…,Mj(2k)を得て、ハッシュhj=H(Sj)を算出する;
3. 反復が終わるように新しい入力Mj+1が0または1個のブロックを有するようになるまで、l−2k+1+1≧1場合に、Mj+1=Mj(2k+1+1)|…|Mj(l)上でステップ2を再帰的に繰り返し、j=j+1とする:
4. m=log4/3 l/4に対して、算出されたハッシュ(h1,h2,.…,hm)をすべて返す。
nがターゲットファイルMのブロック数を表わし、n'が損傷ファイルM'のブロック数を表わすとすると、たかだかlog l回の反復ステップがあることになる、したがって、n'≦2nと仮定しているので、App−pHにより返された全ハッシュ数は、全ハッシュ数≦log4/3 l/4≦log4/3 n'/4≦log4/3 n−1となる。この拡張ファクタは(乗法定数を上限として)、各ハッシュがウィルス間隔の位置に関する1ビットの情報を明らかにするモデルにおいて、本質的に最適である。
App−pHが衝突困難であることを示すために、App−pHの出力での衝突を発見するアルゴリズムが、値j=1,…,log n及び値i=1,2の少なくとも1つに対して、Hによって同じh(j|i)にマッピングされる2つの異なる入力を発見することに気づく。このことは、Hの衝突を発見するアルゴリズムを暗示している。
App−pHがp-revealingであることを示すために、すべてのインデックスj∈{1,…,m}に対して(ここでm=log4/3 n/4である)App−pH及びハッシュhjを用いる効率的なアルゴリズムApp−Locを構築し、ファイルMのたぶん損傷しているであろうバージョンM'中の追加型ウィルスの位置決定を行う。図6Aに示したアルゴリズムApp−Locは、以下のように説明することができる:
1. j←1及びMj=Mを設定する(ステップS12);
2. 2k<n'/2となる最大の正の整数kを算出し、Mjから次の2つのブロックシーケンス:Sj,i=Mj(1),…,Mj(2k-1)及びSj,2=Mj(1),…,Mj(2k)を得て、i=1,2に対してハッシュh1,j=H(Sj,i)を算出する(ステップS13);
3. 反復が終わるように新しい入力Mj+1が0または1つのブロックを有するようになるまで、l−2k+1+1≧1場合に、Mj+1=Mj(2k+1+1)|…|Mj(l)上でステップ2を再帰的に繰り返し、j=j+1とする(ステップS15);
4. m'=log4/3 n'/4に対して、(h1,i,h2,i,…,hm',i)i=1,2がすべての算出されたハッシュを表すものとする(ステップS15);
5. m'=m(ステップS16)の場合、i=2に設定し(ステップS17)、そうでなければi=1に設定する(ステップS18);
6. h'=(h'1,h'2,…,h'm')=(h1,i,h2,i,…,hm',i)に設定する(ステップS19);
7. すべてのインデックスj∈{1,…,m'}に対して、hj≠h'jの場合tj=1とない、hj=h'jの場合にtj=0となるtjを算出する(ステップS20);
8. S={1,…,n},j=1と設定し、入力ペア(S,j)に対してプロシージャApp−RecLoc(下に定義される)を適用したときに返されるペアを出力する(ステップS21);
ステップS22では、プロシージャApp−RecLocを実行するプロシージャApp−RecLoc(S,j)は、以下のように定義され、図6Bに示されている:
1. tj,i=1の場合には、T=Sを戻り値として返し、停止する(ステップS23);
2. ブロックシーケンスSからブロックシーケンスSj,iからのブロックをすべて取り除く(ステップS24);
3. プロシージャApp−RecLoc(S,j+1)を実行する(ステップS25)。
App−pHがp-revealingであるという証明は、次の補助定理の帰結となる。少なくともl−sj+1個のブロックを有する任意のウィルス間隔(s,l)に対して、追加された間隔(s,l)を有するターゲットファイルMに等しい、l個のブロックを有する損傷ファイルM'の入力と構造App−pHの反復での最初の(j−1)ステップ中に得られたハッシュとに対して、アルゴリズムApp−Locは、x≦s(すなわち、アルゴリズムはウィルスの所在を決定する)及びx≧2s−n−1となるような値xを返す。すなわち、App−pHの位置診断因子は最大2となる。
埋め込み型感染のウィルス位置決定:
上述のように埋め込み型感染手法では、ウィルスは、先頭または末端ではない、ターゲットファイル10の中間部分のどこかに挿入され、それによりターゲットファイル10より大きなサイズを有する疑わしいファイル12が生成される。本発明に基づく方法は、損傷したファイル12のどこかに連続するブロックのセグメントを埋め込むウィルスの位置決定をあとで行うために、ターゲットファイル10からのブロックのシーケンスについての多くのハッシュを算出する。ターゲットファイル10のブロック数がnであり、損傷しているファイル12のブロック数がn'であると仮定する。すると、l個のブロックを有するメッセージの入力上で、この構造は、ファイルブロックについてのたかだか8・(log2 l−1)個のシーケンスを、したがって8・(log l−1)個のハッシュを返す。すなわち、log l個のフェーズのおのおのに対して8つのハッシュを返す。例えば、n=1024の場合には、8×(10−1)=72のハッシュがあることになる。
図7は、埋め込み型感染に対するウィルス位置決定ハッシュを行う例示実施形態において、ハッシュされるファイルブロック26,28,30,32のサブセットを示している。ウィルスが、その感染したファイルすなわち損傷したファイル12内に埋め込まれているので、ウィルスの先頭及び終端の両方を発見することが必要である。
本発明に基づくウィルス位置決定方法では、p-revealing衝突困難ハッシュ関数を構築することができ、ここで、pは以下のように定義される。必ずしも長さが等しくなくてもよM1及びM2の入力上で、関数p(M1,M2)は次に等しくなる:
M1=M2の場合は0;
b−a<n/2であって、i=1,…,a−1に対してM1(i)=M2(i)であり、i1=b+1,…,n及びi2=i1+b−1+1に対してM1(i1)=M2(i2)である場合には、(a,b);
それ以外の場合には⊥。
この解析は最大でn個のブロックを埋め込むウィルスに限定される、すなわち、M2でのブロック数はたかだか2nであると推定される。ここで、nはターゲットファイルM1のブロック数である。
埋め込み型感染の場合のp-revealingハッシュ関数の構造は、書換え型及び追加型感染の場合の構造の組み合わせとなる。この組み合わせは、追加型感染の構造におけるような「長さに無関係な」ファイルブロックシーケンスを使用し、書換え型感染の構造におけるようなシーケンス構造を用いるこの技術を利用することから構成される。結果的に得られる構造は、位置決定因子が2、拡張ファクタが8・log lとなる。ここで、lは入力ファイルのサイズである。
関数の形式的説明を続ける。Hが衝突困難ハッシュ関数を表わすとする。Emb−pHとして表わされる本発明に基づくp-revealing衝突困難ハッシュ関数は、入力としてn個のブロックからなるメッセージM=M(0),…,M(l−1)を受け取り、以下のステップを1回は入力M=M(0),…,M(l−1)上で実行し、1回は反転ファイル(reverse)rM=M(l−1),…,M(0)上で実行することによって、元の関数Hを8(log l−1)回にわたってMのl個のブロックのシーケンスに適用する(説明を簡単にするために、lは2のべき乗であり、対数の底は2と仮定する)。
ステップ1:
k<l/2となる最大の正の整数kを算出する。この第1のステップにおいて、Mのブロックは、それぞれがl/2個のブロックの連結によって得られる4つのシーケンスにグループ化され、それらは次のように定義される:
1,1=M(0)|…|M(2k−1),
1,2=M(2k)|…|M(l−1),
1,3=M(2k-1)|…|M(l−1−2k-1),
1,4=M(0)|…|M(2k-1−1)|M(l−1−2k-1)|…|M(n−1)。
1,3及びS1,4中のブロックのインデックスは、それぞれ、S1,1及びS1,2中のブロックのインデックスを2k-1だけ巡回的にシフトすることによって得られる。このステップでの4つのハッシュは、i=1,2,3,4に対してhj,i=H(Sj,i)として算出される。
ステップj、ここでj=2,…,log l−1:
ステップ1を拡張して、M中のブロックは、各シーケンスがn/2j個のブロックの連結によって得られる、次のように定義される2×2j個のシーケンスにグループ化される:
c,d=1,…,2jに対して、シーケンスSj,i=M((c−1)*2k/2j)|…|M(c*2k/2j−1)|M(2k+(d−1)*(l−2k)/2j)|…|M(2k+d*l/2j−1));及び
そのブロックのインデックスがシーケンスSj,iのインデックスを2k/2jだけ巡回的にシフトすることによって得られるという点を除いて、シーケンスSj,iと同様に定義されているシーケンスSj,i+2j
このステップにおける4つのハッシュは以下のように算出される:
i=1,2の場合には、
j,i=H(Sj,i|Sj,i+2|Sj,i+4|…|Sj,i+2j-2);
i=3,4の場合には、
j,i=H(Sj,i-2+2j|Sj,i+2j|Sj,i+2j+2|…|Sj,i+2j+2j-4)。
関数の出力は、h=((h1,i,h2,i,…,hlog n-1,i))i=1,2,3,4,5,6,7,8となる(ここで、i=1,2,3,4のときhj,iはMを参照し、i=5,6,7,8のときhj,iはrMを参照する)。
Emb−pHの微小ハッシュの全体の数はたった8・log n−8となり、そしてこれは、各ハッシュがウィルス間隔の位置に関する1ビットの情報を明らかにするモデルにおいて本質的に最適である。
以前に構築されたハッシュ関数同様、Emb−pHが衝突困難であることが分かる。Emb−pHがp-revealingであることを示すために、すべてのインデックス(j,i),j∈{1,…,log n−1},i∈{1,…,8}に対して、Emb−pH及びハッシュhj,iを用いる効率的なアルゴリズムEmb−Loc(図8において示される)を構築し、ファイルMのおそらく損傷したバージョンM'中の埋め込み型ウィルスの位置決定を行う。このアルゴリズムは、アルゴリズムRew−Locを2度実行することから構成される。すなわち一度は、すべてのインデックス(j,i),j∈{1,…,log n−1},i∈{1,…,4}に対してファイルMとハッシュhj,iを用いて実行し(ステップS26)、もう一度は、すべてのインデックス(j,i),j∈{1,…,log n−1},i∈{5,…,8}に対してファイルrMとハッシュhj,iを用いて実行する(ステップS27)。S1及びS2をこうして得られた出力とする。アルゴリズムEmb−Locは、集合S1と集合S2の共通部分を返す(ステップS28)。
性能解析:
既知の2つの技術と比較した場合における、上で説明した本発明に基づく技術の適用可能性及び性能の概要が、図9及び図10に示されている。
上述のように、「検出構造(detection construction)」とは、その入力ファイル全体に対する単一のハッシュを単に算出する構造を表わし、「自明な構造(trivial construction)」とは、入力ファイルの各ブロックの単一のハッシュを算出する構造を表わしている。上述の「書換え型感染のウィルス位置決定」の節、「追加型/先頭追加型感染のウィルス位置決定」の節及び「埋め込み型感染のウィルス位置決定」の節における構造が、それぞれRew−pH、App−pH及びEmb−pHとして表わされ、nがファイル中のブロック数であることを思い出されたい。検出構造及び自明な構造は、上述した特徴付けにおける任意の感染手法に適用可能であるが、3つのハッシュ関数構造Rew−pH、App−pH及びEmb−pHの各々は、特定の感染手法に適合するように構成されている。
さらに、これらの構造Rew−pH、App−pH及びEmb−pHにおけるウィルス長についての制限は、そのような制限が満足させられないときには常にウィルス位置決定問題が重要性を失うので、本質的に、一般性の喪失を伴うものではない。
図10は、次に述べる性能ファクタを要約したものである。位置決定因子に関して言えば、検出構造は実際には位置決定を行わないが、一方、自明な構造は、それが感染したブロックの全ての位置を決定するので、可能な最良の位置決定能力を有する。構造Rew−pH、App−pH及びEmb−pHは、感染領域の高々2倍の大きさの領域を位置決定するのみである。拡張ファクタに関して、自明な構造はあまりにも大きい拡張を持っているが一方、検出構造は実際には拡張を持たず、構造Rew−pH、App−pH及びEmb−pHは、ハッシュに関し、(nについての)対数程度の拡張を持っている。
最後に、計算時間性能に関して言えば、自明な構造及び検出構造は、本質的に、単一のハッシュ計算に関して計算時間爆発を持たない。構造Rew−pH、App−pH及びEmb−pHは、(nについて)ハッシュの対数の程度の計算を行う。
本発明を特定の実施形態により説明したが、本発明は、そのような実施形態によって限定されるように解釈されるべきでなく、むしろ添付の特許請求の範囲に従って解釈されるべきであることを理解すべきであろう。
[関連する出願の相互参照]
本発明は、2006年10月31日に出願された米国仮特許出願第60/855,710号の利益を主張し、その全内容及び開示は参照によりここに組み込まれる。

Claims (5)

  1. ファイルブロックのシーケンスを算出するステップと、
    ホストファイルからの前記ファイルブロックのシーケンスの第1のハッシュを計算するステップと、
    感染ファイルからの前記ファイルブロックのシーケンスの第2のハッシュを計算するステップと、
    前記ファイルブロックのシーケンスを有する前記第1のハッシュと前記第2のハッシュとを比較するステップと、
    を含み、
    前記第1のハッシュと前記第2のハッシュとのいくつかが一致しない場合にウィルスの位置を出力する、ウィルス位置決定方法。
  2. 前記第1のハッシュを計算するステップ及び前記第2のハッシュを計算するステップは、衝突困難ハッシュ関数、デジタル署名方式、メッセージ認証コード、及び疑似乱数関数の1つを用いて行われる、請求項1に記載の方法。
  3. 前記ファイルブロックのシーケンスを算出するステップは、出力が、書換え型、追加型または埋め込み型ウィルスの位置をそれぞれ返す、書き換え型アルゴリズム、追加型アルゴリズム及び埋め込み型アルゴリズムの1つ用いて行われる、請求項1に記載の方法。
  4. 前記ウィルスは、ホストファイルからの改変された内容を有する前記ファイルブロックのシーケンスである、請求項1に記載の方法。
  5. 前記ウィルスの前記位置は、小さな乗法量を超える分だけ前記ウィルスよりも大きい量以下である前記ファイルブロックのシーケンスである前記ファイルブロックのシーケンスである、請求項1に記載の方法。
JP2009534700A 2006-10-31 2007-10-30 暗号ハッシュを用いたウィルス位置決定法 Active JP4997373B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US85571006P 2006-10-31 2006-10-31
US60/855,710 2006-10-31
PCT/US2007/022899 WO2008054732A2 (en) 2006-10-31 2007-10-30 Virus localization using cryptographic hashing

Publications (2)

Publication Number Publication Date
JP2010508573A true JP2010508573A (ja) 2010-03-18
JP4997373B2 JP4997373B2 (ja) 2012-08-08

Family

ID=39344881

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009534700A Active JP4997373B2 (ja) 2006-10-31 2007-10-30 暗号ハッシュを用いたウィルス位置決定法

Country Status (7)

Country Link
US (3) US8191146B2 (ja)
EP (1) EP2080312B1 (ja)
JP (1) JP4997373B2 (ja)
KR (1) KR101303532B1 (ja)
CN (1) CN101641675B (ja)
MX (1) MX345979B (ja)
WO (1) WO2008054732A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104025107A (zh) * 2011-11-02 2014-09-03 比特梵德知识产权管理有限公司 模糊列入白名单反恶意软件系统及方法

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652613B1 (en) 2002-01-17 2017-05-16 Trustwave Holdings, Inc. Virus detection by executing electronic message code in a virtual machine
US8402529B1 (en) 2007-05-30 2013-03-19 M86 Security, Inc. Preventing propagation of malicious software during execution in a virtual machine
US20090235357A1 (en) * 2008-03-14 2009-09-17 Computer Associates Think, Inc. Method and System for Generating a Malware Sequence File
US10262136B1 (en) * 2008-08-04 2019-04-16 Zscaler, Inc. Cloud-based malware detection
GB0822619D0 (en) * 2008-12-11 2009-01-21 Scansafe Ltd Malware detection
US8676759B1 (en) 2009-09-30 2014-03-18 Sonicwall, Inc. Continuous data backup using real time delta storage
US8640241B2 (en) * 2009-11-16 2014-01-28 Quatum Corporation Data identification system
JP5340185B2 (ja) * 2010-01-19 2013-11-13 日本放送協会 ファイル処理装置及びプログラム
JP5553670B2 (ja) * 2010-04-19 2014-07-16 キヤノン株式会社 管理装置、その制御方法およびプログラム
US8769691B1 (en) * 2011-02-14 2014-07-01 Trend Micro, Inc. Network traffic reduction
US9652616B1 (en) * 2011-03-14 2017-05-16 Symantec Corporation Techniques for classifying non-process threats
US8745750B2 (en) 2011-04-21 2014-06-03 Microsoft Corporation Origination verification using execution transparent marker context
CN102970294A (zh) * 2012-11-21 2013-03-13 网神信息技术(北京)股份有限公司 安全网关的病毒检测方法及装置
US9336025B2 (en) 2013-07-12 2016-05-10 The Boeing Company Systems and methods of analyzing a software component
US9852290B1 (en) * 2013-07-12 2017-12-26 The Boeing Company Systems and methods of analyzing a software component
US9280369B1 (en) 2013-07-12 2016-03-08 The Boeing Company Systems and methods of analyzing a software component
US9396082B2 (en) 2013-07-12 2016-07-19 The Boeing Company Systems and methods of analyzing a software component
US9479521B2 (en) 2013-09-30 2016-10-25 The Boeing Company Software network behavior analysis and identification system
CN106682506B (zh) * 2016-05-06 2020-03-17 腾讯科技(深圳)有限公司 一种病毒程序检测方法和终端
RU2634178C1 (ru) * 2016-10-10 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносных составных файлов
GB2562079B (en) * 2017-05-04 2021-02-10 Arm Ip Ltd Continuous hash verification
RU2659739C1 (ru) * 2017-09-29 2018-07-03 Акционерное общество "Лаборатория Касперского" Способ контроля доступа к составным файлам
JP6911723B2 (ja) * 2017-11-16 2021-07-28 富士通株式会社 ネットワーク監視装置、ネットワーク監視方法及びネットワーク監視プログラム
CN109766084B (zh) * 2018-12-28 2021-04-23 百富计算机技术(深圳)有限公司 支付应用的定制开发方法、装置、计算机设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005050441A1 (en) * 2003-11-19 2005-06-02 Telefonaktiebolaget L M Ericsson (Publ) Updating data in a mobile terminal

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408642A (en) * 1991-05-24 1995-04-18 Symantec Corporation Method for recovery of a computer program infected by a computer virus
US5613002A (en) * 1994-11-21 1997-03-18 International Business Machines Corporation Generic disinfection of programs infected with a computer virus
US5485575A (en) * 1994-11-21 1996-01-16 International Business Machines Corporation Automatic analysis of a computer virus structure and means of attachment to its hosts
US7234167B2 (en) * 2001-09-06 2007-06-19 Mcafee, Inc. Automatic builder of detection and cleaning routines for computer viruses
GB2392590B (en) 2002-08-30 2005-02-23 Toshiba Res Europ Ltd Methods and apparatus for secure data communication links
US7055008B2 (en) 2003-01-22 2006-05-30 Falconstor Software, Inc. System and method for backing up data
US7373519B1 (en) * 2003-04-09 2008-05-13 Symantec Corporation Distinguishing legitimate modifications from malicious modifications during executable computer file modification analysis
US20040172551A1 (en) * 2003-12-09 2004-09-02 Michael Connor First response computer virus blocking.
US7475427B2 (en) * 2003-12-12 2009-01-06 International Business Machines Corporation Apparatus, methods and computer programs for identifying or managing vulnerabilities within a data processing network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005050441A1 (en) * 2003-11-19 2005-06-02 Telefonaktiebolaget L M Ericsson (Publ) Updating data in a mobile terminal
JP2007515708A (ja) * 2003-11-19 2007-06-14 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 携帯端末内のデータ更新方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104025107A (zh) * 2011-11-02 2014-09-03 比特梵德知识产权管理有限公司 模糊列入白名单反恶意软件系统及方法
JP2014534531A (ja) * 2011-11-02 2014-12-18 ビットディフェンダー アイピーアール マネジメント リミテッド ファジーホワイトリスト化アンチマルウェアシステムおよび方法
CN104025107B (zh) * 2011-11-02 2017-02-22 比特梵德知识产权管理有限公司 模糊列入白名单反恶意软件系统及方法

Also Published As

Publication number Publication date
US8572743B2 (en) 2013-10-29
US8578498B2 (en) 2013-11-05
WO2008054732A3 (en) 2008-08-07
CN101641675A (zh) 2010-02-03
US20120167223A1 (en) 2012-06-28
JP4997373B2 (ja) 2012-08-08
EP2080312A4 (en) 2013-09-25
US20120159181A1 (en) 2012-06-21
EP2080312A2 (en) 2009-07-22
KR20090113247A (ko) 2009-10-29
US20080134337A1 (en) 2008-06-05
MX345979B (es) 2017-02-24
EP2080312B1 (en) 2015-07-08
MX2009004666A (es) 2010-02-17
CN101641675B (zh) 2014-06-25
KR101303532B1 (ko) 2013-09-03
WO2008054732A2 (en) 2008-05-08
US8191146B2 (en) 2012-05-29

Similar Documents

Publication Publication Date Title
JP4997373B2 (ja) 暗号ハッシュを用いたウィルス位置決定法
JP6670907B2 (ja) スクリプトの実行をブロックするシステム及び方法
US10339312B2 (en) System and method for detecting malicious compound files
US8713686B2 (en) System and method for reducing antivirus false positives
US5613002A (en) Generic disinfection of programs infected with a computer virus
Breitinger et al. Similarity preserving hashing: Eligible properties and a new algorithm mrsh-v2
Spinellis Reliable identification of bounded-length viruses is NP-complete
JP6353498B2 (ja) ユーザ機器上でマルウェアを検出するためにアンチウィルス記録セットを生成するシステム及び方法
US20130160125A1 (en) Method and system for rapid signature search over encrypted content
Ronen et al. Pseudo constant time implementations of TLS are only pseudo secure
WO2015007224A1 (zh) 基于云安全的恶意程序查杀的方法、装置和服务器
US7353386B2 (en) Method and device for authenticating digital data by means of an authentication extension module
Lee et al. Compression-based analysis of metamorphic malware
Di Crescenzo et al. Cryptographic hashing for virus localization
KR101092342B1 (ko) 파일 축약 정보 생성, 시그니쳐 생성 및 시그너쳐 패턴 검증 장치 및 방법
RU2628922C1 (ru) Способ определения похожести составных файлов
Huidobro et al. Obfuscation procedure based on the insertion of the dead code in the crypter by binary search
Braga et al. From Dragondoom to Dragonstar: Side-channel Attacks and Formally Verified Implementation of WPA3 Dragonfly Handshake
RU2659739C1 (ru) Способ контроля доступа к составным файлам
JP6207392B2 (ja) 異常検出装置、異常検出方法、及び異常検出プログラム
Tsioutsias Analysis and evaluation of ROPInjector
Verma DEVELOPMENT OF A VIRUS DETECTION SYSTEM FOR DOS ENVIRONMENT
Song et al. Automatic vulnerability locating in binary patches
Alashwali Secure Verifiable Remote Attestation of Embedded Devices
WO2016013926A1 (en) A system and method to secure distribution and execution of library files in a client-server environment

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100615

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100615

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110916

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111216

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120116

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120216

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120309

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120321

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120326

R150 Certificate of patent or registration of utility model

Ref document number: 4997373

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150525

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250