IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ベイド セキュア インコーポレイテッドの特許一覧

特表2022-539622アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム
<>
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図1-1
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図1-2
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図2
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図3
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図4
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図5
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図6
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図7
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図8
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図9
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図10
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図11
  • 特表-アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-09-13
(54)【発明の名称】アプリケーションソフトウェアファイル内の難読化コードを検出するための方法、装置、およびシステム
(51)【国際特許分類】
   G06F 21/56 20130101AFI20220906BHJP
   G06F 21/14 20130101ALI20220906BHJP
【FI】
G06F21/56
G06F21/14
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2020562724
(86)(22)【出願日】2019-06-28
(85)【翻訳文提出日】2020-11-06
(86)【国際出願番号】 US2019039818
(87)【国際公開番号】W WO2020263271
(87)【国際公開日】2020-12-30
(31)【優先権主張番号】16/455,404
(32)【優先日】2019-06-27
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】519077355
【氏名又は名称】ベイド ユーエスエー インコーポレイテッド
【氏名又は名称原語表記】Vade USA, Inc.
(74)【代理人】
【識別番号】100115738
【弁理士】
【氏名又は名称】鷲頭 光宏
(74)【代理人】
【識別番号】100121681
【弁理士】
【氏名又は名称】緒方 和文
(72)【発明者】
【氏名】グタール セバスチャン
(72)【発明者】
【氏名】マイヤー マキシム マーク
(57)【要約】
電子メッセージの添付ファイル内の難読化コードを検出するコンピュータ実装方法は、添付ファイルを含む電子メッセージを、コンピュータネットワークを介して受信することと、添付ファイルのファイルタイプを特定することと、添付ファイルから1つ以上のスクリプトを抽出することと、抽出された1つ以上のスクリプトから選択された1つ以上の特徴と、非難読化スクリプトファイルのモデルコーパスのスクリプトから選択された対応する1つ以上の特徴と、の間の距離測度を計算することと、計算された距離測度を閾値と比較することと、を含み得る。計算された距離測度が少なくとも閾値に等しい場合には、抽出された1つ以上のスクリプトは難読化コードを含むと判断し得るとともに、少なくとも添付ファイルに対して防御措置を実行してよい。計算された距離測度が閾値未満である場合には、抽出された1つ以上のスクリプトは難読化コードを含んでいないと判断し得る。
【特許請求の範囲】
【請求項1】
電子メッセージ内の難読化コードを検出するためのコンピュータ実装方法であって、
添付ファイルを含む電子メッセージを、コンピュータネットワークを介して受信することと、
前記添付ファイルのファイルタイプを特定することと、
前記添付ファイルから1つ以上のスクリプトを抽出することと、
前記抽出された1つ以上のスクリプトから選択された1つ以上の特徴と、非難読化スクリプトファイルのモデルコーパスのスクリプトから選択された対応する1つ以上の特徴と、の間の距離測度を計算することと、
前記計算された距離測度を閾値と比較することと、
前記計算された距離測度が少なくとも前記閾値に等しい場合に、前記抽出された1つ以上のスクリプトは難読化コードを含むと判断するとともに、少なくとも前記添付ファイルに対して防御措置を実行することと、
前記計算された距離測度が前記閾値未満である場合に、前記抽出された1つ以上のスクリプトは難読化コードを含んでいないと判断することと、を含む、コンピュータ実装方法。
【請求項2】
前記抽出された1つ以上のスクリプトに対して既知の非難読化スクリプトのホワイトリストを適用することと、前記ホワイトリストに対応するものがない抽出されたスクリプトがあれば、それらのスクリプトについてのみ前記距離測度を計算することと、をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記抽出された1つ以上のスクリプトのスクリプト言語を特定することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記抽出された1つ以上のスクリプトからの前記1つ以上の特徴の確率分布を計算することをさらに含み、前記計算される距離測度は、前記抽出された1つ以上のスクリプトからの前記1つ以上の特徴の前記計算された確率分布と、非難読化スクリプトファイルのモデルコーパスの前記スクリプトから選択された前記対応する1つ以上の特徴の予め計算された確率分布との間の、計算された距離を含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記計算される距離は、Jensen-Shannon距離およびWasserstein距離のうちの1つである、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記1つ以上の特徴は、前記抽出された1つ以上のスクリプト内の変数名、関数名、およびコメントのうちの少なくとも1つを含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記1つ以上の特徴は、前記抽出された1つ以上のスクリプト内の英数字を含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記1つ以上の特徴は、前記抽出された1つ以上のスクリプト内の特殊文字を含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記防御措置は、前記受信した電子メッセージを所定のフォルダに送ること、前記電子メッセージおよび/またはその添付ファイルを削除すること、前記受信した電子メッセージに追加の分析を適用すること、ならびに前記難読化コードがないサニタイズされたバージョンの前記添付ファイルをエンドユーザに送ること、のうちの少なくとも1つを含む、請求項1に記載のコンピュータ実装方法。
【請求項10】
メッセージ転送エージェント(MTA)によって少なくとも部分的に実行される、請求項1に記載のコンピュータ実装方法。
【請求項11】
前記抽出された1つ以上のスクリプトが難読化コードを含んでいないと判断される場合に、前記方法は、前記電子メッセージおよび前記添付ファイルをエンドユーザに転送することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項12】
コンピューティング装置であって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに結合された少なくとも1つのデータ記憶装置と、
前記少なくとも1つのプロセッサおよびコンピュータネットワークに結合されたネットワークインタフェースと、
電子メッセージ内の難読化コードを検出するために、前記少なくとも1つのプロセッサによって生成される複数のプロセスと、を備え、前記プロセスは、
添付ファイルを含む電子メッセージを、コンピュータネットワークを介して受信するための処理ロジックと、
前記添付ファイルのファイルタイプを特定するための処理ロジックと、
前記添付ファイルから1つ以上のスクリプトを抽出するための処理ロジックと、
前記抽出された1つ以上のスクリプトから選択された1つ以上の特徴と、非難読化スクリプトファイルのモデルコーパスのスクリプトから選択された対応する1つ以上の特徴と、の間の距離測度を計算するための処理ロジックと、
前記計算された距離測度を閾値と比較するための処理ロジックと、
前記計算された距離測度が少なくとも前記閾値に等しい場合に、前記抽出された1つ以上のスクリプトは難読化コードを含むと判断するとともに、少なくとも前記添付ファイルに対して防御措置を実行するための処理ロジックと、
前記計算された距離測度が前記閾値未満である場合に、前記抽出された1つ以上のスクリプトは難読化コードを含んでいないと判断するための処理ロジックと、を含む、コンピューティング装置。
【請求項13】
前記抽出された1つ以上のスクリプトに対して既知の非難読化スクリプトのホワイトリストを適用するため、および前記ホワイトリストに対応するものがない抽出されたスクリプトがあれば、それらのスクリプトについてのみ前記距離測度を計算するため、の処理ロジックをさらに含む、請求項12に記載のコンピューティング装置。
【請求項14】
前記抽出された1つ以上のスクリプトのスクリプト言語を特定するための処理ロジックをさらに含む、請求項12に記載のコンピューティング装置。
【請求項15】
前記抽出された1つ以上のスクリプトからの前記1つ以上の特徴の確率分布を計算するための処理ロジックをさらに含み、前記計算される距離測度は、前記抽出された1つ以上のスクリプトからの前記1つ以上の特徴の前記計算された確率分布と、非難読化スクリプトファイルのモデルコーパスの前記スクリプトから選択された前記対応する1つ以上の特徴の予め計算された確率分布との間の、計算された距離を含む、請求項12に記載のコンピューティング装置。
【請求項16】
前記計算される距離は、Jensen-Shannon距離およびWasserstein距離のうちの1つである、請求項12に記載のコンピューティング装置。
【請求項17】
前記1つ以上の特徴は、前記抽出された1つ以上のスクリプト内の変数名、関数名、およびコメントのうちの少なくとも1つを含む、請求項12に記載のコンピューティング装置。
【請求項18】
前記1つ以上の特徴は、前記抽出された1つ以上のスクリプト内の英数字を含む、請求項12に記載のコンピューティング装置。
【請求項19】
前記1つ以上の特徴は、前記抽出された1つ以上のスクリプト内の特殊文字を含む、請求項12に記載のコンピューティング装置。
【請求項20】
前記防御措置は、前記受信した電子メッセージを所定のフォルダに送ること、前記電子メッセージおよび/またはその添付ファイルを削除すること、ならびに前記難読化コードがないサニタイズされたバージョンの前記添付ファイルをエンドユーザに送ること、のうちの少なくとも1つを含む、請求項12に記載のコンピューティング装置。
【請求項21】
メッセージ転送エージェント(MTA)として構成された、請求項12に記載のコンピューティング装置。
【請求項22】
前記抽出された1つ以上のスクリプトが難読化コードを含んでいないと判断される場合に、前記電子メッセージおよびその添付ファイルをエンドユーザに転送するための処理ロジックをさらに含む、請求項12に記載のコンピューティング装置。
【請求項23】
電子メッセージ内の難読化コードを検出するコンピュータ実装方法であって、
添付ファイルを含む電子メッセージを、コンピュータネットワークを介して受信することと、
前記添付ファイルのファイルタイプを特定することと、
前記添付ファイルから1つ以上のスクリプトを抽出することと、
前記抽出された1つ以上のスクリプトに対して既知の非難読化スクリプトのホワイトリストを適用することと、
前記ホワイトリストに対応するものがない残りの抽出されたスクリプトがあれば、前記残りの抽出されたスクリプトのスクリプト言語を特定することと、
前記残りの抽出されたスクリプトまたはスクリプト群から選択された1つ以上の特徴の文字ユニグラムの確率分布を計算することと、
前記残りのスクリプトまたはスクリプト群から選択された1つ以上の特徴の文字ユニグラムの前記計算された確率分布と、非難読化スクリプトファイルのモデルコーパスのスクリプトからの対応する1つ以上の特徴の文字ユニグラムの確率分布と、の間の距離を計算することと、
前記計算された距離を閾値と比較することと、
前記計算された距離が少なくとも前記閾値に等しい場合に、前記残りのスクリプトまたはスクリプト群は難読化コードを含むと判断するとともに、少なくとも前記添付ファイルに対して防御措置を実行することと、
前記計算された距離が前記閾値未満である場合に、前記残りのスクリプトまたはスクリプト群は難読化コードを含んでいないと判断することと、を含む、コンピュータ実装方法。
【請求項24】
前記計算される距離は、Jensen-Shannon距離およびWasserstein距離のうちの1つである、請求項23に記載のコンピュータ実装方法。
【請求項25】
前記文字ユニグラムは、前記抽出された1つ以上のスクリプト内の変数名、関数名、およびコメントのうちの少なくとも1つからの文字を含む、請求項23に記載のコンピュータ実装方法。
【請求項26】
前記文字ユニグラムは、前記抽出された1つ以上のスクリプト内の英数字を含む、請求項23に記載のコンピュータ実装方法。
【請求項27】
前記文字ユニグラムは、前記抽出された1つ以上のスクリプト内の特殊文字を含む、請求項23に記載のコンピュータ実装方法。
【発明の詳細な説明】
【背景技術】
【0001】
Microsoft(登録商標)Office(登録商標)およびAdobe(登録商標)Acrobat(登録商標)のようなアプリケーションソフトウェアスイートによって、エンドユーザは、テキスト、テーブル、チャート、ピクチャ、ビデオ、サウンド、ハイパーリンク、対話型オブジェクトなどを含む複合文書を編集することが可能となる。これらのリッチコンテンツ機能のいくつかは、Microsoft(登録商標)Office(登録商標)スイート用のVisual Basic(登録商標)for Application(略称VBA)およびAdobe(登録商標)Acrobat(登録商標)スイート用のJavaScript(登録商標)(略称JS)のような、アプリケーションソフトウェアスイートによるスクリプト言語のサポートに依拠する。
・ Microsoft(登録商標)Office(登録商標)用のVBAは、タスク自動化(書式設定、編集、修正など)、エンドユーザとの対話、およびMicrosoft(登録商標)Office(登録商標)アプリケーション間の対話のために使用されることがある。
・ Adobe(登録商標)Acrobat(登録商標)用のJSは、フォーム処理の自動化、ウェブおよびデータベースとの通信、およびエンドユーザとの対話のために使用されることがある。
【0002】
サイバー犯罪者は、これらのアプリケーションソフトウェアファイルにおけるスクリプト言語のサポートを利用しており、エンドユーザのデバイスにマルウェア(ランサムウェア、スパイウェア、トロイの木馬など)をインストールする、エンドユーザをフィッシングウェブサイトにリダイレクトするなどのような悪意のあるアクションを実行するための、悪意のあるコードを作成している。セキュリティベンダは、悪意のあるVBAおよびJSスクリプトを検出するための技術開発を開始したので、サイバー犯罪者は、ソースコード難読化のような様々な手法を用いて、サイバー攻撃の精巧さを高めている。
【0003】
ソースコード難読化は、人間が理解しにくいソースコードを作成する意図的な行為である。ソースコード難読化は、主に、セキュリティおよび知的財産上の理由でソースコードを保護するとともにリバースエンジニアリングを阻止するために、ソフトウェア業界で広く用いられている。一方、Microsoft(登録商標)Office(登録商標)およびAdobe(登録商標)Acrobat(登録商標)ファイルに埋め込まれた悪意のないVBAおよびJSスクリプトでは、これらのスクリプトは通常は単純で、多くは知的財産価値の全くないものであるため、ソースコード難読化が用いられることは極めて稀である。
【0004】
従って、難読化コードの検出は、マルウェアにおいて悪意のある恐れのあるコードを検出するのに有効な手段となる可能性がある。
【図面の簡単な説明】
【0005】
図1は、サイバー犯罪者が悪意のあるコードを難読化するために用いるJavaScript(登録商標)(JS)難読化手法の例を示している。
【0006】
図2は、Visual Basic(登録商標)for Application(VBA)でのコード難読化の例を示している。
【0007】
図3は、オペレーティングシステムの言語が英語である場合に、Microsoft(登録商標)Excel(登録商標)スプレッドシートの第1のシートにおいて、Microsoft(登録商標)Excel(登録商標)により作成されるデフォルトのVBAスクリプトを示している。
【0008】
図4は、オペレーティングシステムの言語が仏語である場合に、Microsoft(登録商標)Excel(登録商標)スプレッドシートの第1のシートにおいて、Microsoft(登録商標)Excel(登録商標)により作成されるデフォルトのVBAスクリプトを示している。
【0009】
図5は、悪意のないスクリプトの一例を示しており、この場合、JSスクリプトは、PDF文書におけるXFA(XMLフォームアーキテクチャ)のバージョンをチェックする。
【0010】
図6は、図3および4に提示するスクリプトとマッチし得るExcelSheetDefaultScriptという名前のシグネチャの例を示している。
【0011】
図7は、一実施形態による、ModelCorpusLのパースおよび分析から生成され得るいくつかの離散確率分布モデルML={ML,1,...,ML,q}を示している。
【0012】
図8は、一実施形態による、難読化コードを検出するためのコンピュータ実装方法のフローチャートである。
【0013】
図9は、一実施形態による、SMTP(簡易メール転送プロトコル)によってMTA(メッセージ転送エージェント)で受信した電子メールの例示的なユースケースおよび難読化コードの検出のフローチャートである。
【0014】
図10は、一実施形態による、SMTPによってMTAで受信した電子メールにおいて難読化コードを検出するさらなる態様を示す図である。
【0015】
図11は、一実施形態による、難読化コードを検出するコンピュータ実装方法のフローチャートである。
【0016】
図12は、一実施形態の態様を実施することができるコンピューティング装置のブロック図である。
【発明を実施するための形態】
【0017】
悪意のあるコードの文脈では、難読化には、セキュリティベンダのフィルタリング技術を掻い潜るという1つの主目的がある。より正確には、
・ 難読化は、主として、悪意のあるコードの各インスタンスが一意となる可能性を非常に高くするランダム化手法に依拠する。従って、フィンガプリントに依拠するフィルタリング技術(暗号化ハッシュ、ローカルセンシティブハッシュなど)は、そのようなサイバー脅威をブロックするには非効率的である。
・ 潜在する悪意のある挙動を検出する助けとなり得る疑わしい特徴(関数名、オブジェクト名、URLなど)は、通常、難読化によって隠される。従って、決定アルゴリズム(決定木、2値分類器など)と組み合わせた特徴抽出に依拠するフィルタリング技術も、そのようなサイバー脅威をブロックするには非効率的である。
【0018】
以下に、サイバー犯罪者が悪意のあるコードの難読化に用いるいくつかの一般的なJS難読化手法を列挙する。
・ 空白のランダム化
・ 変数名のランダム化
・ 関数名のランダム化
・ コメントのランダム化
・ データ難読化(文字列分割、キーワード置換など)
・ 符号化難読化(16進符号化、8進符号化など)、および、
・ 論理構造難読化
【0019】
図1は、JS用のいくつかのそのような難読化手法を示すテーブルであり、すなわち、空白、変数名、関数名、およびコメントのランダム化102、データ難読化(この場合は、文字列分割)104、符号化難読化(この場合は、16進符号化)106、ならびに108で示すように論理構造の難読化、を示している。102で示すように、原ソースコードの変数名、関数名、およびコメントは、(人間が)読解しにくい代替テキストに置き換えることにより難読化されている。機能は同じであるが、コードは、もはや明確かつ直観的に理解可能ではない。参照符号104では、文字列document.write("Hello World");は、8つの別々の文字列フラグメントに分割されており、8つの異なる変数に割り当てられている。この場合、eval関数は、Kernighan & Richieによる1978年の初版「The C Programming Language」学術書からの象徴的なフレーズ「Hello world」を表示するために、文字列フラグメントの連結を実行する。106で示すように、文字列を分割する代わりに、構成文字をそれぞれの相当16進数で置き換えることにより、同表現を難読化してよい。最後に、108で示すように、単純なJS関数document.writeを、無意味なループに埋め込むことにより、さもなければ単純なコードを複雑かつ不可解にする。
【0020】
前述の難読化手法の列挙は網羅的なものではなく、さらに高度な難読化を実現するために、これらの手法を相互に、および/または他の手法と組み合わせてよい。
【0021】
同様の難読化手法が、VBAにも存在する。図2は、VBAでのコード難読化の例を示している。変数名、関数名のランダム化、およびデータ難読化の例を、それぞれ参照番号202、204、および206で示している。
【0022】
一実施形態によれば、EvaluateFileと呼ばれる関数を次のように定義し得る。
・ 入力はファイルfである。
・ 出力は以下のうちの1つである。
* NoCode:ファイルfはコードを全く含んでいない;
* BenignCodeOnly:ファイルfは悪意のないことが分かっているコードのみを含んでいる;
* NotEnoughData:ファイルfはコードを含んでいるが、そのコードが難読化されているか否かを判断するための十分なデータがない;
* CodeNotObfuscated:ファイルfはコードを含んでおり、そのコードは難読化されていない;または、
* CodeObfuscated:ファイルfはコードを含んでおり、そのコードは難読化されているので、悪意のある可能性がある。
【0023】
EvaluateFile関数およびその使用法を、以下で説明する図8に関連して示している。
[ファイルタイプの特定]
以下のデータが定義される:
【0024】
以下で強調表示するステップでは、実施形態により、コードが難読化されているかどうかを判断するためのコンピュータ実装方法について、図8を参照して詳述する。最初に、電子メッセージ(例えば、電子メール)から添付ファイルを抽出した後に、図8のブロックB802に示すように、ファイルタイプの特定を行ってよい。
【0025】
ステップ1:ファイルfのタイプTfを識別するために、getType関数を呼び出してよい。Tfがnullではない場合、Tfは、アプリケーションソフトウェアスイートのタイプを特定しており、EvaluateFile関数は次のステップに進む。一方、Tfがnullである場合、EvaluateFile関数は終了して、図8のB803に示すように、NoCodeを返す。なお、本開示でカバーするアプリケーションソフトウェアスイートは、Microsoft(登録商標)Office(登録商標)およびAdobe(登録商標)Acrobat(登録商標)を含むが、ただし、これらに限定されないことに留意すべきである。
【0026】
[スクリプトの抽出]
以下のデータが定義される:
【0027】
ステップ2:図8のB804に示すように、ファイルfからスクリプトを抽出するために、extractScripts関数を呼び出す。少なくとも1つのスクリプトが抽出された場合、EvaluateFile関数は次のステップに進む。一方、抽出されたスクリプトがない場合、EvaluateFile関数は終了して、B803に示すように、NoCodeを返す。この段階では、ファイルfからスクリプトSf={sf,1,...,sf,m}が抽出されている。抽出されたスクリプトのいくつかは悪意のないものであり得る一方、その他は悪意のあるものであり得る。
【0028】
[悪意のないスクリプトのホワイトリスティング]
Microsoft(登録商標)Office(登録商標)およびAdobe(登録商標)Acrobat(登録商標)のようなアプリケーションソフトウェアスイートで作成されたファイルは、悪意のないスクリプトを含んでいることがある。例えば、図3および図4は、オペレーティングシステムの言語が英語(図3)または仏語(図4)で構成されている場合に、Microsoft(登録商標)Excel(登録商標)スプレッドシートの第1のシートにおいて、Microsoft(登録商標)Excel(登録商標)により作成されるデフォルトのVBAスクリプトを示している。属性VB_Nameの値は異なるが、他の属性の値は同じであることに留意すべきである。オペレーティングシステム構成言語が英語である場合、属性値は、英語の単語である「Sheet」を含む。オペレーティングシステム構成言語が仏語である場合、属性値は、「Sheet」を意味する仏語の単語である「Feuille」の短縮である「Feuil」を含む。
【0029】
悪意のないスクリプトの他の例を図5に示しており、この場合、JSスクリプトは、PDF文書におけるXFA(XMLフォームアーキテクチャ)のバージョンをチェックする。このJSスクリプトは、様々な変形版がある。これらのスクリプトは、非常に一般的であって、悪意のないものであるため、一実施形態は、各タイプTのホワイトリストWLT={wlT,1,...,wlT,n}を実装することを含み、ここで、wlT,iは、悪意のないスクリプトの特定の類型を識別するホワイトリスト要素である。このホワイトリストは、様々な方法で実装されてよい。これを実装する1つの方法は、図3および4に提示したもののような、同じスクリプトの様々な変形版を捕捉するのに十分に柔軟な書式を用いた、シグネチャのリストを使用することである。図6は、図3および4に提示したスクリプトを識別できるExcelSheetDefaultScriptという名前のシグネチャの例を示している。このシグニチャのセマンティックは、次のように解釈できる:attributesセクションにおいて定義されているすべての属性が、そのスクリプトにおいて認められる場合、かつスクリプト行数が8に等しい場合に、そのスクリプトはホワイトリストに登録されている;すなわち、分析されたスクリプトは、疑わしいとは見なされないので、スクリプトのリストから削除される。
【0030】
一実施形態ではapplyWhitelist関数を定義する。以下のデータが定義される:
【0031】
ステップ3:図8のB806に示すように、ホワイトリストに登録されたスクリプトを識別して、残った疑わしいスクリプトを返すために、applyWhitelist関数を呼び出してよい。少なくとも1つの疑わしいスクリプトが残っている場合、EvaluateFunction関数は次のステップに進む。一方、残っている疑わしいスクリプトがない場合、EvaluateFile関数は終了して、ブロックB807に示すように、BenignCodeOnlyを返す。
【0032】
[疑わしいスクリプトのサイズ条件]
一実施形態によるこのコンピュータ実装方法の実行のこの時点では、疑わしいスクリプトの非ゼロリストS'f={s'f,1,...,s'f,p}がファイルfから抽出されている。コードが難読化されているか否かを必要な精度で判断するためには、十分なデータがアルゴリズムに供給されなければならない。実際に、データが不十分である場合には、疑わしいスクリプトの十分に正確な統計的表現が得られないことがある。
【0033】
以下のデータを定義し得る:
【0034】
ステップ4:図8のB810に示すように、SuspectScriptsSizeを計算して、SuspectScriptsMinSizeと比較してよい。SuspectScriptsSize≧SuspectScriptsMinSizeである場合、EvaluateFunction関数は次のステップに進む。それ以外の場合、EvaluateFile関数は終了して、図8のB811に示すように、NotEnoughDataを返す。
【0035】
[スクリプト言語の特定]
以下のデータを定義し得る:
【0036】
ステップ5:SuspectScriptsSizeが十分に大きい場合、図8のB812に示すように、getScriptingLanguage関数:Lf=getScriptingLanguage(Tf)を用いて変数Lfを評価することにより、スクリプト言語Lfを識別し得る。なお、本明細書ではVBAおよびJSを例として用いているが、本明細書で図示および記載する実施形態の範囲は、それらのスクリプト言語に限定されないことに留意すべきである。
【0037】
[スクリプト言語の統計的モデリング]
図1および図2に提示したもののようなコード難読化手法は、通常、非難読化コードの統計的特徴とは異なる統計的特徴を有するコードを生成する。計算言語学および確率の分野では、nグラムは、テキストまたは音声の所与のサンプルからのn個のアイテムの連続した配列である。それらのアイテムは、応用に応じて、音素、音節、文字、単語、または塩基対であり得る。nグラムは、典型的には、テキストコーパスまたは音声コーパスから収集される。例えば、ラテン語の数詞接頭辞を用いて、サイズ1のnグラムは「ユニグラム」、サイズ2は「バイグラム」(または、それほど一般的ではないが「ダイグラム」)、サイズ3は「トライグラム」と呼ばれる。文字ユニグラムを考えると、英語で記述された非難読化ソースコードの変数名、関数名、およびコメントの統計分布は、英語でのそれらの統計分布とかなり似ており、なぜなら、変数の命名、関数の命名、およびコードへのコメント付けに使用される単語の多くは英語の単語であるからである。一方、図1および2に提示したもののような難読化コードを考えると、実施形態は、変数名、関数名、およびコメントの統計分布が、英語でのそれらの統計分布と非常に異なることを発見および認識することを含む。
【0038】
以下のデータが定義される:
【0039】
それぞれのスクリプト言語Lについて、非難読化コードモデルコーパスModelCorpusLを構築してよい。例えば:
・ ModelCorpusVBAは、悪意のないMicrosoft(登録商標)Office(登録商標)ファイルのコーパスからVBAスクリプトを抽出することにより構築された非難読化コードモデルコーパスである。
・ ModelCorpusJSは、悪意のないPDFファイルのコーパスおよび最も一般的に使用されるJSライブラリ(ライブラリの縮小版と非縮小版の両方)のコーパスからJSスクリプトを抽出することにより構築された非難読化コードモデルコーパスである。周知のように、縮小化の目標は、ウェブページのロードを高速化するように、JSスクリプトファイルのサイズを最小化することである。これは、空白の削除、関数名および変数名の短縮など、コードを圧縮することにより実現される。
【0040】
ModelCorpusLのパースおよび分析から、1つまたは複数の離散確率分布モデルML={ML,1,...,ML,q}を生成してよく、それらの例を図7に提示している。なお、図7に提示するML,1モデルは、抽出されたスクリプト(群)の少なくとも2文字の長さの変数名および関数名のような特徴のみを考慮していることに留意すべきであり、この条件は、縮小されたソースコードは典型的には1文字の長さの関数名および変数名を含むことによって均一分布に従う可能性が最も高いことに関連している。従って、これらの関数名および変数名を離散確率モデルから除外することが望ましい場合がある。図7に提示するML,2モデルで考慮している抽出されたスクリプト群の特徴は、英数字であり、図7に提示するML,3モデルで考慮している抽出されたスクリプト群の特徴は、以下のテーブル1に示す離散確率分布で示すもののような特殊文字である。
【0041】
テーブル1は、MJS,3、すなわちModelCorpusJSの特殊文字の文字ユニグラムの離散確率分布を示している。
【0042】
同様に、疑わしいスクリプトのリストS'f={s'f,1,...,s'f,p}のパースおよび分析から、1つまたは複数の離散確率分布PL,f={PL,f,1,...,PL,f,q}を生成してよい。
【0043】
[モデルと疑わしいスクリプトの間の距離計算]
ステップ6:次に、図8のB816に示すように、離散確率分布間の距離D={D1,...,Dq}を計算してよい。実際に、一実施形態によれば、2つの確率分布間の距離を計算してよい。使用し得る距離測度の例は、Jensen-Shannon距離およびWasserstein距離であるが、他の距離測度を用いてもよい。
【0044】
ここで、これまでに提示した難読化手法、および図7に関連して提示した離散確率分布モデルを考慮すると、総括して、実施形態により以下の考察が得られる。
・ S'fが、変数名、関数名、および/またはコメントのランダム化を多く含む場合、変数名、関数名、および/またはコメントに使用される文字の統計分布は大きく異なるので、ML,1とPL,f,1の間の距離は大きいことになる。実例として、図1に提示した変数名、関数名、および/またはコメントのランダム化102の例を考えると、文字「_」は8回現れ、文字「2」および「3」は5回現れるのに対し、原スクリプトは、変数名、関数名、およびコメントにそれらの文字をいずれも含まない。
・ S'fが多くの符号化難読化を含む場合、英数字の統計分布は大きく異なるので、ML,2とPL,f,2の間の距離は大きいことになる。実例として、図2に提示した16進符号化難読化106の例を考えると、文字「x」は30回現れ、文字「6」は15回現れるのに対し、原スクリプトは、文字「x」または「6」をいずれも含まない。
・ S'fが多くの文字列分割難読化を含む場合、特殊文字のような抽出されたスクリプト(群)の特徴の統計分布は大きく異なるので、ML,3とPL,f,3の間の距離は大きいことになる。実例として、図1の104に提示した文字列分割の例を考えると、文字「+」は7回現れ、文字「=」は8回現れるのに対し、原スクリプトは、文字「+」または「=」をいずれも含まない。
【0045】
テーブル2は、104に提示した難読化スクリプトの特殊文字の文字ユニグラムの離散確率関数を示している。
【0046】
L={ML,1,...,ML,q}とPL,f={PL,f,1,...,PL,f,q}の間の距離を計算することは、モデルが綿密に定義および構築されているのであれば、多くの難読化手法を特徴付けおよび検出するのに有用である。例えば、テーブル1とテーブル2の確率分布間のJensen-Shannon距離JSDを、2を底とする対数を用いて計算すると、JSDを小数第3位に切り上げた場合、JSD=0.650である。
【0047】
以下のデータが定義される:
【0048】
ステップ7:図8のB816に示すように、MLとPL,fの間の距離:D=Dist(ML,PL,f)を計算する。
[確率分布間の距離の評価]
最後に、一実施形態によれば、以下で定義するEvaluateDist関数を用いて、距離Dを評価する:
【0049】
閾値を、満足のいく検出結果が得られる値に設定するために、いくつかの方法を適用し得る。一実施形態では、使用される距離アルゴリズムの限界範囲を考慮することにより、閾値を設定してよい。例えば、2を底とする対数を用いたJensen-Shannon距離を考慮した場合、2つの確率分布PとQの間の2を底とする対数を用いたJensen-Shannon距離は次の特性:0≦JSD(P∥Q)≦1を有するので、EvaluateDistThresholdを0.5に設定することができる。
【0050】
一実施形態では、この目的で予め構築されたテスト用コーパスTestCorpusLにEvaluateFile関数を適用することにより、動的に決定された値に閾値を設定してよい。TestCorpusLは、非難読化コードを有するt個のアプリケーションソフトウェアファイルFNonObf={fNonObf,1,...,fNonObf,t}、および難読化コードを有するt個のアプリケーションソフトウェアファイルFObf={fObf,1,...,fObf,t}を含んでよく、この場合、コードはスクリプト言語Lで記述されている。このとき、以下のアルゴリズムを適用してよい:
・ TestCorpusLコーパス内にあるファイルをランダムな順序にするために、TestCorpusLコーパスをランダムにシャッフルする;
・ 次に、閾値の値を前述のように初期化する;例えば、2を底とする対数を用いたJensen-Shannon距離を考慮する場合、例えば0.5に初期化する;
・ 次に、EvaluateFile関数を、コーパスの各ファイルfに適用して、閾値を以下のように更新する:
* EvaluateFile(fNonObf,i)がCodeNotObfuscatedを返す場合は、何もしない;
* EvaluateFile(fObf,i)がCodeObfuscatedを返す場合は、何もしない;
* EvaluateFile(fNonObf,i)がCodeObfuscatedを返す場合は、閾値の値を少量だけ増加させ、その量は、距離測度、および現在の値から距離測度の上限までの距離に依存する;
* EvaluateFile(fObf,i)がCodeNotObfuscatedを返す場合は、閾値の値を少量だけ減少させ、その量は、距離測度、および現在の値から距離測度の下限までの距離に依存する。
【0051】
ステップ8:最後に、図8のB818に示すように、EvaluateDist(D)関数を呼び出して、コードが難読化されているか否かを判断するのに、十分な情報が利用できるようになる。
・ CodeObfuscatedが返された場合、EvaluateFile関数は終了して、CodeObfuscatedを返す。
・ CodeNotObfuscatedが返された場合、EvaluateFile関数は終了して、CodeNotObfuscatedを返す。
【0052】
[ユースケース例:MTAで受信した電子メール]
図9および10は、SMTP(簡易メール転送プロトコル)によってMTA(メッセージ転送エージェント)1002で受信した電子メールのユースケースを提示している。電子メールは悪意がない可能性があるのでエンドユーザ1008の受信ボックス1004に送るべきであるか、または電子メールはその添付ファイルの1つに悪意のあるコードを含んでいる可能性があるのでスパムフォルダ1006に移動、削除、もしくは他の何らかの防御処理を実行すべきであるかを判定するために、MTA1002によってEvaluateFile関数が用いられる。
【0053】
図9および10に示すように、電子メール送信者1010が、電子メールまたは他の電子メッセージを、(例えば、インターネットおよび/または他のプライベートネットワークもしくはパブリックネットワークを含む)コンピュータネットワーク1012を介して送信し得る。次に、MTA1002は、本発明の実施形態を実施するように構成されたAPI(アプリケーションプログラムインタフェース)サービス1018と、HTTP(ハイパーテキスト転送プロトコル)によって通信し得る。あるいは、本明細書で記載されるとともに特に図8および9に示す機能の一部またはすべてを、MTA1002内で実施し得る。図9のフローチャートは、一実施形態によるコンピュータ実装方法を示している。この図に示すように、ブロックB902で、電子メールまたは他の電子メッセージから添付ファイル{f1,...,fn}を抽出することを要求する。少なくとも1つの添付ファイルがある場合、この図はブロックB904に進む。それ以外の場合は、B908に示すように、その電子メールは、受信者の受信ボックス1004に送られてよい。次に、B904に示すように、モデル群1016に照らしてEvaluateFile関数1014を用いて、それぞれの添付ファイルを評価し得る。EvaluateFile(fi)がCodeObfuscatedを返す少なくとも1つの添付ファイルfiがある場合は、電子メールの添付ファイルは難読化コードを含んでいるので、その電子メールを、B906に示すようにスパムフォルダ1006に移動、削除してよく、または他の何らかの予防措置を実行してよい。この場合、電子メールの少なくとも1つの添付ファイルが悪意のあるコードを含んでいる可能性が非常に高い。それ以外の場合は、B908に示すように、電子メールを受信者の受信ボックスに送ってよい。
【0054】
なお、図9と10は、それぞれ挙動的視点と構造的視点から、単純化したMTAワークフローを示していることに留意すべきである。典型的なMTAワークフローは、追加のプロセスが適用されることがあり、これにより追加のソフトウェアコンポーネントおよび/またはハードウェアコンポーネントを伴うことがあるので、より複雑であり得る。例えば、電子メールの受信時に、これらの代表的な追加プロセスを適用してよい。
・ 複雑さを多少増減させたワークフロールールを適用してよい、
・ 1つまたは複数のIPアドレスブラックリストを適用してよい、
・ 1つまたは複数のアンチスパムフィルタを適用してよい、
・ 1つまたは複数のアンチウィルスフィルタを適用してよい、
・ その他。
【0055】
さらに、その電子メールの少なくとも1つの電子メール添付ファイルが悪意のある可能性があるコードを含んでいる場合には、ほんのいくつかの可能性を挙げると、例えば、その電子メールを削除する、悪意のある可能性がある添付ファイルのそれぞれを電子メールから削除してサニタイズされた電子メールをエンドユーザの受信ボックスに送る、サンドボックス技術を用いて悪意のある可能性がある添付ファイルのそれぞれの挙動分析を行う、送達の判断(電子メールおよび/またはその添付ファイルを届けるか否か)をサンドボックス技術に委ねるなど、代替の防御対策を適用してよい。抽出された添付ファイルが難読化コードを含むと判断された場合に取り得る他の防御措置として、エンドユーザに送る前に難読化コードの機能を無効にすることを含み得る。一実施形態では、図10に示すように、EvaluateFile関数はHTTPベースのAPIとして提供され得るが、当業者であれば理解し得るように、他の実装形態も可能であることに留意すべきである。
【0056】
図11は、一実施形態による、難読化コードを検出するコンピュータ実装方法のフローチャートである。この図に示すように、ブロックB111で、添付ファイルを含む電子メッセージを、コンピュータネットワークを介して受信することを要求する。B112で、添付ファイルのファイルタイプを特定してよく、B113で、そこから1つ以上のスクリプトを抽出してよい。次に、B114に示すように、抽出されたスクリプト(群)から選択された1つ以上の特徴(ほんのいくつかの代表的な特徴を挙げると、例えば、変数名、関数名、コメント、英数字、特殊文字)と、非難読化スクリプトファイルのモデルコーパスのスクリプトから選択された対応する1つ以上の特徴と、の間の距離測度を計算し得る。次に、計算された距離測度を、B115に示すように、(予め決定または動的に決定され得る)閾値と比較してよい。計算された距離測度が、B116に示すように、少なくとも閾値に等しい場合には、B116に示すように、抽出されたスクリプト(群)は難読化コードを含むと判断し得るとともに、添付ファイル(場合によっては電子メール自体)に対して1つ以上の防御措置を実行してよい。最後に、計算された距離測度が閾値未満である場合には、B117に示すように、抽出されたスクリプト(群)は難読化コードを含んでいないと判断し得る。
【0057】
他の実施形態では、このコンピュータ実装方法は、さらに、抽出されたスクリプト(群)に対して既知の非難読化スクリプトのホワイトリストを適用することを含んでよく、抽出されたスクリプトのうちホワイトリストに対応するものがないスクリプト(がある場合は、それらのスクリプト)についてのみ、距離を計算してよい。また、この方法は、抽出されたスクリプト(群)のスクリプト言語を特定することを含んでもよい。このコンピュータ実装方法は、さらに、抽出されたスクリプト(群)からの1つ以上の特徴(例えば、変数名、関数名、コメント、英数字、および/または特殊文字)の確率分布を計算することを含んでよい。その場合、計算される距離測度は、抽出されたスクリプト(群)からの1つ以上の特徴の計算された確率分布と、非難読化スクリプトファイルのモデルコーパスのスクリプトから選択された対応する1つ以上の特徴の予め計算された確率分布との間の、計算された距離を含み得る。例えば、計算される距離は、Jensen-Shannon距離またはWasserstein距離であってよい。
【0058】
一実施形態では、防御措置は、受信した電子メッセージを(例えば、スパムフォルダのような)所定のフォルダに送ること、電子メッセージおよび/もしくはその添付ファイルを削除すること、ならびに/または難読化コードがないサニタイズされたバージョンの添付ファイルをエンドユーザに送ること、を含み得る。抽出されたスクリプト(群)が難読化コードを含んでいないと判断される場合、この方法は、さらに、その電子メッセージおよび添付ファイルをエンドユーザに転送することを含み得る。このコンピュータ実装方法は、一実施形態では、MTAによって少なくとも部分的に実行されてよい。
【0059】
図12は、実施形態を実施し得るMTAによって使用され得るような、コンピューティング装置のブロック図を示している。図12のコンピューティング装置は、情報通信用のバス1201または他の通信機構と、バス1201に結合された情報処理用の1つ以上のプロセッサ1202と、を備え得る。コンピューティング装置は、さらに、情報およびプロセッサ(群)1202により実行される命令を記憶するためにバス1201に結合された、(メインメモリと呼ばれる)ランダムアクセスメモリ(RAM)または他の動的記憶装置1204を備え得る。また、メインメモリ(有形かつ非一時的であり、これらの用語は、本明細書では、信号それ自体および波形を除外する)1204は、プロセッサ1202による命令の実行中に、一時変数または他の中間情報を記憶するために用いられることもある。図12のコンピューティング装置は、さらに、静的情報およびプロセッサ(群)1202への命令を記憶するためにバス1201に結合された、リードオンリメモリ(ROM)および/または他の静的記憶装置1206を備え得る。図7~11に関連して図示および開示した機能の一部またはすべてを実施するために必要とされるような情報および命令を記憶するために、磁気ディスクおよび/またはソリッドステートデータ記憶装置のようなデータ記憶装置1207を、バス1201に結合してよい。また、コンピューティング装置は、バス1201を介して、コンピュータユーザに情報を表示するためのディスプレイ装置1221に結合されてもよい。情報およびコマンド選択をプロセッサ(群)1202に伝達するために、英数字キーおよびその他のキーを有する英数字入力装置1222を、バス1201に結合してよい。他のタイプのユーザ入力装置は、方向情報およびコマンド選択をプロセッサ(群)1202に伝達するため、ならびにディスプレイ1221上でのカーソル移動を制御するための、マウス、トラックボール、またはカーソル方向キーのようなカーソル制御装置1223である。図12のコンピューティング装置は、通信インタフェース(例えば、モデム、ネットワークインタフェースカードすなわちNIC)1208を介して、ネットワーク1226に結合されてよい。
【0060】
図示のように、記憶装置1207は、磁気ディスク1230、不揮発性半導体メモリ(EEPROM、フラッシュメモリなど)1232、磁気ディスクと不揮発性半導体メモリの両方を備える1231に示すようなハイブリッドデータ記憶装置、などの直接アクセスデータ記憶装置を含み得る。参考符号1204、1206、および1207は、1つ以上のコンピューティング装置で実行されることで、本明細書で記載および図示したコンピュータ実装方法を実施する命令列群を表すデータが保存された、有形の非一時的コンピュータ可読媒体の例である。これらの命令の一部は、クライアントコンピューティング装置においてローカルに保存されてよく、一方、これらの命令の他のものは、リモートで保存(および/または実行)されて、ネットワーク1226を介してクライアントコンピューティング装置に伝達されてよい。他の実施形態では、これらの命令のすべては、クライアントまたは他のスタンドアロンコンピューティング装置においてローカルに保存されてよく、一方、さらなる他の実施形態では、これらの命令のすべては、リモートで(例えば、1つ以上のリモートサーバで)保存および実行されて、その結果がクライアントコンピューティング装置に伝達される。さらなる他の実施形態では、命令(処理ロジック)は、1228に示すような、他の形態の有形の非一時的コンピュータ可読媒体に保存されてよい。例えば、参照符号1228は、そこに保存された命令を1つ以上のコンピューティング装置にロードすることで、本明細書で記載および図示した実施形態の1つ以上にコンピューティング装置(群)を再構成するための、適切なデータキャリアを構成し得る光学的な(または他の何らかの記憶技術の)ディスクとして実装されてよい。他の実装形態では、参照符号1228は、暗号化ソリッドステートドライブとして具現化されてよい。他の実装形態も可能である。
【0061】
本発明の実施形態は、難読化コードの新規の検出法を実施するためにコンピューティング装置を使用することに関するものである。実施形態によって、コードを難読化して悪意のあるコードの検出を回避するためにサイバー犯罪者が実現する機構を、打ち破ることにより、コンピュータシステムの機能の特定の改善が得られる。そのような改善されたコンピュータシステムを用いて、難読化コードを採用したサイバー脅威を検出およびブロックすることによりエンドユーザを保護するために、本出願と譲受人が同一である2019年3月28日に出願された米国特許出願第16/368,537号に開示されているようなURLスキャン技術が引き続き有効である場合があり、この文献の開示は、その全体が本明細書に組み込まれる。一実施形態によれば、本明細書に記載の方法、装置、およびシステムは、メモリ1204に格納された、本明細書で図示および記載したコンピュータ実装方法の態様を具現化する命令列群を、プロセッサ(群)1202が実行することで、1つ以上のコンピューティング装置によって提供されてよい。そのような命令群は、データ記憶装置1207のような他のコンピュータ可読媒体または1228に示すような他の(光学的、磁気的などの)データキャリアから、メモリ1204に読み込まれてよい。メモリ1204に格納された命令列群を実行することによって、プロセッサ(群)1202は、本明細書に記載のステップを実行するとともに、本明細書に記載の機能を有する。代替実施形態では、記載の実施形態を実装するために、ソフトウェア命令に代えて、またはソフトウェア命令と組み合わせて、ハードワイヤード回路を用いてよい。従って、実施形態は、ハードウェア回路およびソフトウェアのいずれの特定の組み合わせにも限定されない。実際に、本明細書に記載の機能を任意の適切なコンピュータシステムで実施し得ることは、当業者であれば理解するべきである。コンピューティング装置は、所望の機能を実行するように動作する1つまたは複数のマイクロプロセッサを備え得る。一実施形態では、マイクロプロセッサまたはマイクロプロセッサ群によって実行される命令は、本明細書に記載のステップをマイクロプロセッサ(群)に実行させるように機能する。それらの命令は、任意のコンピュータ可読媒体に保存されてよい。一実施形態では、それらは、マイクロプロセッサの外部の不揮発性半導体メモリまたはマイクロプロセッサに統合された不揮発性半導体メモリに保存されてよい。他の実施形態では、それらの命令は、ディスクに保存されて、マイクロプロセッサによる実行前に、揮発性半導体メモリに読み込まれてよい。
【0062】
上記の詳細な説明の部分では、ローカル処理ユニット、ローカル処理ユニット用のメモリ記憶装置、ディスプレイ装置、および入力装置などのコンピュータコンポーネントを備え得るコンピューティング装置による、プロセスおよびオペレーションの記号表現について記載している。さらに、そのようなプロセスおよびオペレーションは、例えば、リモートファイルサーバ、コンピュータサーバ、およびメモリ記憶装置などの、異種の分散コンピューティング環境において、コンピュータコンポーネントを利用し得る。これらの分散コンピューティングコンポーネントは、通信ネットワークによってローカル処理ユニットにアクセス可能であり得る。
【0063】
コンピュータで実行するプロセスおよびオペレーションは、ローカル処理ユニットおよび/またはリモートサーバによるデータビットの操作、ならびにローカルメモリ記憶装置またはリモートメモリ記憶装置の1つ以上に常駐するデータ構造内でのこれらのビットの維持、を含む。これらのデータ構造は、メモリ記憶装置内に保存されるデータビット群に物理編成を課し、電磁スペクトルの要素を表す。
【0064】
本明細書で記載および図示した、アプリケーションソフトウェアファイル内の難読化コードを検出するコンピュータ実装方法のようなプロセスは、一般的に、所望の結果が得られる一連のコンピュータ実行ステップとして定義されてよい。これらのステップは、一般的に、物理量の物理的操作を必要とするものである。必ずではないが、これらの量は、通常は、保存、転送、結合、比較、または他の操作が可能な電気信号、磁気信号、もしくは光信号の形をとり得る。当業者は、通常、これらの信号を、ビットまたはバイト(2値論理レベルを有する場合)、画素値、ワーク、値、要素、記号、文字、項、番号、点、レコード、オブジェクト、画像、ファイル、ディレクトリ、サブディレクトリ、などと呼ぶ。ただし、これらの用語および類似の用語は、コンピュータオペレーションのための適切な物理量と関連付けられるべきであるということ、ならびに、これらの用語は、コンピュータ内およびコンピュータのオペレーション中に存在する物理量に適用される単なる通常のラベルにすぎないということを、認識しておかなければならない。
【0065】
また、コンピュータ内での操作は、追加、比較、移動、位置決め、配置、参照、削除、変更などのような用語で呼ばれることが多いことも理解されるべきである。本明細書に記載のオペレーションは、コンピュータと対話する人間または人工知能エージェントオペレータまたはユーザによって提供される様々な入力を併用して実行されるマシンオペレーションである。本明細書に記載のオペレーションを実行するために使用されるマシンは、ローカルもしくはリモートの汎用デジタルコンピュータまたは他の同様のコンピューティング装置を含む。
【0066】
さらに、本明細書に記載のプログラム、プロセス、方法などは、いずれかの特定のコンピュータもしくは装置に関するものまたは限定されるものではなく、いずれかの特定の通信ネットワークアーキテクチャに関するものまたは限定されるものでもないことは理解されるべきである。むしろ、様々なタイプの汎用ハードウェアマシンを、本明細書に記載の教示に従って構築されたプログラムモジュールと共に用いてよい。同様に、特定のネットワークアーキテクチャにおいて、ハードワイヤードロジック、またはリードオンリメモリのような不揮発性メモリに保存されたプログラムを有する専用のコンピュータシステムによって、本明細書に記載の方法ステップを実行するために、特化した装置を構築することが効果的であると判明する場合がある。
【0067】
いくつかの例示的な実施形態について記載しているが、これらの実施形態は、単なる例として提示しているものであり、本明細書で開示する実施形態の範囲を限定するものではない。従って、上記の説明において、いずれかの特定の特徴、特性、ステップ、モジュール、またはブロックが必要または不可欠であることを意味するものは何もない。実際に、本明細書に記載の新規の方法およびシステムは、他の様々な形態で具現化されてよい。さらに、本明細書に開示の実施形態の趣旨から逸脱することなく、本明細書に記載の方法およびシステムの形態における様々な省略、置換、および変更を実施してよい。
図1-1】
図1-2】
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
【国際調査報告】