ハッシュを用いた動的コードの無欠性検証方法

著者らは特許

G06F - 電気的デジタルデータ処理(特定の計算モデルに基づくコンピュータ・システムG06N)
G06F11/36 - ソフトウェアを検査またはデバッグすることによるエラー防止
G06F21/12 - 実行可能なソフトウェアを保護するもの
G06F21/54 - セキュリティルーチンまたはオブジェクトをプログラムに追加することによるもの

の所有者の特許 JP2016528635:

インカ・エントワークス・インコーポレイテッドInka Entworks, Inc.

 

ハッシュを用いた動的コードの無欠性を検証する方法およびその検証のためのハッシュレジストリ生成方法を開示する。プログラムの一部である特定の関数(セキュリティが必要な関数)にのみセキュリティタグを設定する過程と、セキュリティタグが適用された関数を少なくとも一つ以上含むソースコードをコンパイルしてバイナリを生成するバイナリ生成過程と、前記バイナリを検索して前記セキュリティタグが発見されたら、前記セキュリティタグを含む前記特定の関数のコードブロックに対するハッシュコードを抽出するハッシュコード抽出過程と、前記ハッシュコード抽出過程で生成された少なくとも一つ以上の関数のハッシュコードを含むハッシュレジストリを生成するハッシュレジストリ生成過程とを含むことを特徴とするハッシュを用いた動的コードの無欠性検証のためのハッシュレジストリ生成方法を提供する。
【選択図】図3

 

 

本発明は、ハッシュを用いた動的コードの無欠性を検証する方法に関するものである。
以下に記述される内容は、単に本実施例に係る背景情報のみを提供するだけで、従来の技術を構成するものではないことを明らかにしておく。
最近になって、他人のコンピュータに侵入して情報を流出したり、逆分析(reverse engineering)技術を利用して、コンピュータプログラムが本来意図された機能とは違う機能を実行するようにコンピュータプログラムのバイナリコードを変形したり、デバッガなどのツールを使用して、コンピュータプログラムが実行されている途中でバイナリコードを変形し、これを悪用する事例が頻繁に起こっている。たとえば、プログラムを変形する者は、オンラインゲームのユーザーPCで動作するクライアントプログラムを逆分析して、クライアントプログラムが自動的に実行されるように変形すれば、非正常的な方法でゲームアイテムを獲得することもできる。コンピュータプログラムが変形されたか否かは、コンピュータプログラムが実行されるまでは把握しにくく、発見したとしても対処することが困難なので、コンピュータプログラムが実行されている途中で、コンピュータプログラムが変形されたか否かを検査し、措置をとる必要がある。
コンピュータプログラムは、バイナリ形態で補助記憶装置に貯蔵されており、実行されるためにメインメモリにロードされる。メインメモリにロードされたバイナリは、元の状態を常に維持することができなければならない。しかし、逆分析を介してバイナリを変形して実行したり、デバッガなどのツールを使用して、コンピュータプログラムが実行されている途中で変形すれば、元の状態を維持することができない。
上記のような問題を解決するために、従来は、コンピュータプログラムのバイナリが補助記憶装置にファイルの形で貯蔵されているときに、ファイル全体に対するハッシュを求めてファイルが変形されたか否かを検証するか、あるいはメインメモリにロードされたバイナリの全部または一部に対してハッシュを求めて、変形されたか否かを周期的にチェックして、バイナリの無欠性を検証した。前者をファイルハッシュによる検査方法といい、後者をメモリハッシュによる検査方法という。メモリハッシュによる検査方法は、一定の時間間隔で繰り返して実行することによって希望の目的が達成される方法である。このため、メモリハッシュによる検査方法は、プログラムの実行性能とハッシュを実行するシステムの性能を低下させる要因として作用する。
したがって、従来のメモリハッシュをバイナリコードの無欠性検証方法として使用する場合、コンピュータプログラムの実行性能やシステムの性能に敏感な場合には、適用しにくいという問題がある。
本実施例は、バイナリの全体または一部を周期的にまたは反復的に無欠性の検証をするのではなく、セキュリティタグが適用された関数が呼び出された場合にのみ、関数単位で無欠性の検証をするようにして、無欠性検証によるプログラム実行の性能低下を防止する方法を提供することに主な目的がある。
本実施例の一側面によれば、プログラムの一部である特定の関数(セキュリティが必要な関数)にのみセキュリティタグを設定する過程と、セキュリティタグが適用された関数を少なくとも一つ以上含むソースコードをコンパイルしてバイナリを生成するバイナリ生成過程と、前記バイナリを検索して前記セキュリティタグが発見されたら、前記セキュリティタグを含む前記特定の関数のコードブロックに対するハッシュコードを抽出するハッシュコード抽出過程と、前記ハッシュコード抽出過程で生成された少なくとも一つ以上の関数のハッシュコードを含むハッシュレジストリを生成するハッシュレジストリ生成過程とを含むことを特徴とするハッシュを用いた動的コードの無欠性検証のためのハッシュレジストリ生成方法を提供する。
また、本実施例の他の側面によれば、セキュリティタグが適用された関数を少なくとも一つ以上含むバイナリをメインメモリにロードする過程と、前記バイナリが前記メインメモリで実行される過程で、前記セキュリティタグを含む特定の関数が呼び出されて、前記セキュリティタグが発見されたら、前記関数のコードブロックに対するハッシュコードを抽出するハッシュコード抽出過程と、前記抽出されたハッシュコードとハッシュレジストリに貯蔵されている少なくとも一つ以上の関数のハッシュコードを含むハッシュコードテーブルのハッシュコードのうちのいずれかと一致するか否かを確認し、前記特定の関数が変形されたか否かを判断する関数変形判断過程と、前記関数変形判断過程の結果、前記特定の関数が変形されたと判断された場合には、前記バイナリの実行を中止する過程とを含むことを特徴とするハッシュを用いた動的コードの無欠性検証方法を提供する。
本実施例によれば、メインメモリにロードされたコンピュータプログラムのバイナリが変形されたか否かを検査するために、周期的または反復的にバイナリの全体または一部に対してハッシュコードを求める場合、ハッシュ計算の負担によりコンピュータプログラムの実行性能とシステム性能が低下する。さらに実行速度が敏感なコンピュータプログラムの場合は、上記のような方式は、適用するのが困難である。
プログラムの実行性能に敏感ながらバイナリ変形に対するセキュリティが必要なコンピュータプログラムの実行において、メモリハッシュを利用した無欠性検証のために保護が必要な重要な関数にセキュリティタグを適用し、セキュリティタグが適用された関数が呼び出された場合に、関数にのみメモリハッシュを利用してバイナリが変形したか否かを検査すれば、上記のような問題を解決することができる。つまり、周期的または反復的にメモリハッシュを利用して無欠性を検査する方法よりは、セキュリティタグが適用された関数が実行される場合に限って関数の無欠性を検証すれば、検証の有効性が高まり、プログラムの実行性能の低下も最小限に抑えることができる。
たとえセキュリティタグが適用された関数が繰り返して呼び出されても、関数の無欠性検証が行われた後に再び同じ関数が呼び出された場合、一定の時間間隔内では無欠性検査が省略されるようにして、繰り返して関数が呼び出される場合の問題は解決することができる。
しかも、従来のメモリハッシュを用いた無欠性検証方法とは異なり、関数単位のセキュリティタグが適用されたバイナリとハッシュコードで構成されたハッシュレジストリがともに配布されるので、変形したか否かを判断するための別途原本を取得するための過程が必要ではなく、関数が呼び出された場合に関数内で無欠性検査が実行されるので、無欠性検査を実行する別のプログラムが必要ではない。無欠性検証のための別のプログラムが必要な場合、無欠性検証プログラムを無力化させると、変形されたプログラムが実行されることを防止する手段がなくなる。これに比べてセキュリティタグが適用された関数単位で無欠性の検証を行う場合、関数が呼び出されるとともに無欠性の検証も行われるので、上記のような問題が発生しない。
一方、セキュリティタグは、短い時間間隔で繰り返して呼び出される関数よりは、アカウント認証、パスワードの入力、決済関連、セキュリティ関連(ハッシュチェック、アンチデバッギングなど)、暗号化・復号化、認証書の検証、商品購入・販売、初期化、サーバー通信、設定ファイル(セーフファイル)読み書き、演算結果の判定と、プログラムの実行において保護が必要な重要な関数に適している。上記のような関数は、一定の周期で繰り返して呼び出されることはないという特性があり、繰り返して呼び出されても、関数に対する無欠性検証の後、再び同じ関数が呼び出された場合、一定の時間間隔内では検証が省略されるようにすることができる。
以下、本実施例を添付された図面を参照して詳細に説明する。
本実施例に係るハッシュを用いたバイナリの無欠性を検証する方法は、C/C++のようにネイティブコード(native code)を生成することができるプログラム言語であれば、PC、サーバー、スマートフォンなどのハードウェアまたはWindows(登録商標)、UNIX(登録商標)、Linux(登録商標)、OS Xなどの応用ソフトウェアが実行されるオペレーティングシステムに関係なく、同じように適用することができる。つまり、ハードウェアやオペレーティングシステムとは独立して、セキュリティが必要な重要な関数単位で無欠性を検証するので、汎用性があり、有効性が高く、プログラムの実行性能への影響も最小限に抑えることができる無欠性検証方法を提供する。
図1は、本実施例に係る関数単位のメモリハッシュを用いた動的コード無欠性を検証する概念の概要図である。
本実施例に係る関数単位のメモリハッシュを用いたバイナリの無欠性検証方法は、開発用端末100でセキュリティタグが適用された関数を含むバイナリを生成する過程と、バイナリでハッシュレジストリを生成する過程を含む。ただし、バイナリで関数単位のハッシュコードとハッシュレジストリの生成は、単一の装置によって行われる必要はない。セキュリティタグが適用されたバイナリとハッシュレジストリはネットワークやストレージメディアなどの流通手段を介してユーザーに配布され、ユーザー端末200に貯蔵される。ユーザー端末200は、セキュリティタグが適用された関数を少なくとも一つ以上含むバイナリをメインメモリにロードして実行する。この時、セキュリティタグが発見されたら、セキュリティタグを含む関数の無欠性を検証する過程を実行する。
図2は、本実施例に係る関数単位の動的コード無欠性検証を行うことができるプログラムの開発構成図である。
以下、図3の関数単位のセキュリティタグの適用過程を参照して、図2の構成要素を説明する。図2において、コンパイラ110、セキュリティ適用手段120、貯蔵部130は、開発用端末100の内部構成である。セキュリティ適用サーバー400は、セキュリティ適用手段120で実行するハッシュコード抽出過程(S340)と、ハッシュレジストリ生成過程(S360)を開発用端末100に代わって行うことができる。
コンパイラ110は、セキュリティタグが適用された関数を少なくとも一つ以上含むソースコードをコンパイルしてバイナリを生成する。セキュリティ適用手段120は、コンパイラ110が生成したバイナリでセキュリティタグを検索し、セキュリティタグが発見されたら、無欠性検証の開始点を表示する開始タグから終了地点を表示する終了タグまでに対するハッシュコードを生成するハッシュコード抽出過程(S340)を実行し、ハッシュコード抽出過程で抽出された少なくとも一つ以上のハッシュコードを含むハッシュレジストリを生成する(S360)。セキュリティ適用手段120が実行するハッシュコード抽出過程(S340)とハッシュレジストリ生成過程(S360)は、開発用端末100で実行することもできるが、バイナリ全体をセキュリティ適用サーバー400に送信すればセキュリティ適用サーバー400で実行することもできる。だけでなく、セキュリティ適用手段120は、セキュリティタグを発見し(S330)、開始タグから終了タグまでのコードをセキュリティ適用サーバー400に送信して、セキュリティ適用サーバー400にとってハッシュコード抽出過程(S340)とハッシュレジストリ生成過程(S360)を実行するようにすることもできる。セキュリティ適用手段120によって生成されたハッシュレジストリは、バイナリとともにファイルの形で貯蔵部130に貯蔵される(S360)。
図3は、本実施例に係る関数単位のセキュリティタグが適用されたバイナリでハッシュコードを抽出してハッシュレジストリを生成する過程のフローチャートである。
複数の関数を含むコンピュータプログラムのソースコードでアカウントの認証、パスワードの入力、決済関連、セキュリティ関連(ハッシュチェック、アンチデバッギングなど)、暗号化・復号化、認証書の検証、商品購入、販売、初期化、サーバー通信、設定ファイル(セーフファイル)読み書き、演算結果の判定と、プログラムの実行において保護が必要な重要な関数など、少なくとも一つ以上の関数にセキュリティタグを設定する(S300)。上記のような関数は、通常、周期的に繰り返して呼び出されない特性を持っていながらも、コンピュータプログラムを変形しようとする者には主な関心の対象である。したがって、上記のような関数に対してのみ無欠性を検証しても有効性が非常に高く、無欠性の検証によるプログラムの実行性能の低下も最小限に抑えることができる。セキュリティタグが適用された関数を含むソースコードは、コンパイラ110によってコンパイルされ、バイナリ形式になる(S310)。つまり、コンパイラ110によってバイナリファイルが生成される(S310)。
以下、セキュリティ適用手段120で実行される過程と、貯蔵部130で実行される過程について説明する。セキュリティ適用手段120は、バイナリでセキュリティタグを検索する(S320)。セキュリティタグが発見されていない場合は、バイナリの最後に到達したかを確認して(S350)、到達していない場合は、段階S320に戻り、検索を続ける。セキュリティタグが発見されたら、セキュリティタグを含む関数のコードブロック内で無欠性検査の開始を表示する開始タグと終了を表示する終了タグとの間のコードをハッシュ関数(MD5、SHA、Checksumなど)の入力にしてハッシュコードを抽出する(S340)。これをハッシュコード抽出過程という。前記バイナリの最後まで検索を完了したら(S350)、前で抽出した少なくとも一つ以上の関数のハッシュコードから構成されたハッシュコードテーブルを含むハッシュレジストリが生成される(S360)。ハッシュレジストリはバイナリファイルとは別のファイルに保存されることもでき、バイナリファイルの末尾に添付されて保存されることも可能である。
図4は、本実施例に係るハッシュレジストリの無欠性を検証するためのシグネチャーを生成する過程のフローチャートである。
ハッシュレジストリを生成する過程(S360)は、少なくとも一つ以上の関数単位で抽出されたハッシュコードを含むハッシュコードテーブルをハッシュレジストリに保存する(S362)。しかし、ハッシュレジストリに保存されたハッシュコードは、プログラムを変形しようとする者に露出されて変形される可能性がある。つまり、ハッシュレジストリの無欠性の検証をするためにハッシュレジストリに保存された少なくとも一つ以上の関数のハッシュコードで構成されたハッシュコードテーブルをハッシュ関数(MD5、SHA、Checksumなど)の入力にしてテーブルハッシュコードを抽出する(S364)。抽出されたテーブルハッシュコードを暗号化してシグネチャー(signature)を生成する(S366)。シグネチャーは、ハッシュレジストリの無欠性を検証する非常に重要な部分であるため、暗号化アルゴリズム(AES、DES、RSAなど)で暗号化して(S366)、保護されるようにする。シグネチャーは、ハッシュレジストリにハッシュコードテーブルとともに保存することもあるが、これとは別の場所に保存することもできる(S368)。
図5は、本実施例に係るセキュリティタグが設定された関数でハッシュコードを抽出して、ハッシュレジストリを生成する過程の例示図である。
セキュリティタグは、無欠性の検証を開始する地点を表示する開始タグと終了地点を表示する終了タグで構成される。セキュリティタグが適用された関数のコードブロック内で開始タグから終了タグまでのコードをハッシュ関数(MD5、SHA、Checksumなど)の入力にしてハッシュコードを抽出することになる(S340)。図5の例示図でfunction_1関数は開始タグと終了タグで構成されるセキュリティタグを含んでいる。function_1関数の開始タグから終了タグまでのコードをハッシュ関数であるMD5、SHA、Checksumなどの入力にすると、hash1というハッシュコードが抽出される(S340)。
少なくとも一つ以上の関数にセキュリティタグが適用されるため、ハッシュレジストリは少なくとも一つ以上のハッシュコードを含む。図5の例示図では、セキュリティタグが適用されたn個の関数に抽出されたhash1、hash2、…、hash nハッシュコードを含むハッシュコードテーブルをハッシュレジストリに保存して(S362)、ハッシュコードテーブルをハッシュ関数であるMD5、SHA、Checksumなどの入力にして、テーブルハッシュコードを抽出し(S364)、抽出されたテーブルハッシュコードをAES、DES、RSAなどの暗号化アルゴリズムで暗号化してシグネチャーを生成し(S366)、生成されたシグネチャーをハッシュレジストリまたは別の場所に保存する(S368)過程である。
図6は、本実施例に係る関数単位のセキュリティタグが適用されたバイナリを実行するユーザー端末の構成図である。
関数単位のセキュリティタグが適用されたバイナリは配布過程を経てユーザー端末200の補助記憶装置240に保存される。バイナリがユーザー端末200で実行されるときには、まずバイナリがメインメモリ220にロードされ、CPU210によってバイナリの命令が実行され、その結果がディスプレイ装置230に表示される。
本発明の実施例に係るユーザー端末200は、パーソナルコンピュータ(PC:Personal Computer)、ノートブックコンピュータ、タブレット、個人携帯端末(PDA:Personal Digital Assistant)、ゲームコンソール、携帯型マルチメディアプレーヤー(PMP:Portable Multimedia Player)、プレイステーションポータブル(PSP:PlayStation Portable)、無線通信端末(Wireless Communication Terminal)、スマートフォン(Smart Phone)、TV、メディアプレーヤーなどのユーザー端末である。本明細書の実施例に係るユーザー端末200は、応用サーバーとサービスサーバーなどのサーバー端末である。本発明の実施例に係るユーザー端末は、それぞれ、(i)各種機械や有無線通信網との通信を行うための通信モデムなどの通信装置、(ii)ハッシュを用いた動的コード検証方法の実行のためにインターまたはイントラ予測するための各種プログラムやデータを保存するためのメモリ、(iii)プログラムを実行して演算および制御するためのマイクロプロセッサなどを備えるさまざまなデバイスを意味することができる。少なくとも一実施例によれば、メモリはラム(Random Access Memory:RAM)、ロム(Read Only Memory:ROM)、フラッシュメモリ、光ディスク、磁気ディスク、ソリッドステートディスク(Solid State Disk:SSD)などのコンピュータで読み取り可能な記録/保存媒体である。少なくとも一実施例によれば、マイクロプロセッサは、明細書に記載された動作と機能を1つ以上選択的に実行するようにプログラムされる。少なくとも一実施例によれば、マイクロプロセッサは、全体または部分的に特定の構成の特定用途向け半導体(application specific integrated circuit:ASIC)などのハードウェアである。
図7は、本実施例に係る関数単位のセキュリティタグが適用されたバイナリに対する関数単位の無欠性の検証を実行する過程のフローチャートである。
関数単位でセキュリティタグが適用されたバイナリが実行されるためにメインメモリ200にロードされる(S710)。バイナリが実行され、セキュリティタグが適用された関数が呼び出されてセキュリティタグが発見されたら(S720)、関数の無欠性を検証する。
以下、セキュリティタグが発見され、関数単位の無欠性の検証が行われる過程を説明する。セキュリティタグが適用された関数が呼び出され、セキュリティタグが発見されたら、関数に対する無欠性検証をするか否かを判断する(S730)。セキュリティタグが適用される関数は、アカウントの認証、パスワードの入力、決済関連、セキュリティ関連(ハッシュチェック、アンチデバッギングなど)、暗号化・復号化、認証書の検証、商品購入、販売、初期化、サーバー通信、設定ファイル(セーフファイル)読み書き、計算結果の判定と、プログラムの実行において保護が必要な重要な関数にセキュリティタグが適用され、繰り返し呼び出されない特性があるが、場合によっては繰り返し呼び出されて無欠性の検証が行われる懸念がある。上記のような場合に備えるため、関数の無欠性検証が行われた後、一定の時間間隔内では再度関数の無欠性検証を繰り返さないようにする必要がある。したがって、関数に対する無欠性検証が行われた後、一定の時間間隔内で再度関数が呼び出されたら、無欠性の検証を省略して、次の過程を実行するようにする(S730)。
また、ハッシュレジストリの無欠性を検証する必要がある(S740)。ハッシュレジストリを検証する(S740)には、ハッシュレジストリの生成過程(S340)でのハッシュコードテーブルに対するテーブルハッシュコードを抽出する(S364)過程と同じ過程で、ハッシュレジストリに保存されている少なくとも一つ以上の関数単位のハッシュコードを含むハッシュコードテーブルに対するテーブルハッシュコードを抽出する(S364)。そして抽出されたテーブルハッシュコードとハッシュレジストリまたは別の場所で提供されるハッシュコードテーブルに対するテーブルハッシュコードが等しいか否かを確認する(S740)。この場合、ハッシュレジストリまたは別の場所に保存されたシグネチャーは、復号化された後に提供することができる。もし一致しない場合は、ハッシュレジストリが変形されたので、プログラムが実行を終了する過程に転移される(S770)。
関数の無欠性検査過程は(S750)、関数のコードブロック内で無欠性の検証の開始地点を表示する開始タグから終了地点を表示する終了タグまでのコードに対してハッシュ関数(MD5、SHA、Checksumなど)を使用してハッシュコードを抽出するハッシュコード抽出過程を含み、ハッシュコード抽出過程で抽出されたハッシュコードとハッシュレジストリに貯蔵されたハッシュコードテーブルのいずれかのハッシュコードと一致しているか否かを確認して、関数が変形されているか否かを判断し(S750)、関数が変形された場合は、プログラムの終了過程に転移する(S770)。関数の無欠性検査過程(S750)で関数が変形されていないと確認されたら、正常に関数を実行し、これらの過程は、プログラムが終了するまで繰り返す(S760)。プログラムの終了過程(S770)でバイナリが変形されて、もはや実行されなくなった場合、バイナリで使用しているリソースをシステムに返還し、警告メッセージの表示、実行停止、及び実行終了のいずれかを行うことができる。
図8は、本実施例に係る関数単位の無欠性の検証を実行する過程の例示図である。
図8の例示図は、関数単位のセキュリティタグが適用されたバイナリが実行されて(S710)、セキュリティタグが含まれている関数であるfunction_1が呼び出され、function_1でセキュリティタグが発見されて(S720)、開始タグから終了タグまでのコードからハッシュ関数であるMD5、SHA、Checksumなどを利用してハッシュコードのhash1を抽出し、hash1とハッシュレジストリに保存されているhash1、hash2、…、hash nを含むハッシュコードテーブルのハッシュコードのいずれかと一致するか否かを確認してfunction_1が変形されているかを検証する(S750)。この時、ハッシュレジストリを検証するためにhash1、hash2、…、hash nを含むハッシュコードテーブルに対するテーブルハッシュコードを抽出し、抽出されたテーブルハッシュコードがシグネチャーから復号化されたテーブルハッシュコードと一致するか否かを確認して、ハッシュレジストリが変形されているかを検証することができる(S740)。
以上の説明は、本実施例の技術思想を例示的に説明したにすぎないものであって、本実施例の属する技術分野で通常の知識を有する者であれば、本実施例の本質的な特性から逸脱しない範囲で様々な修正および変形が可能である。したがって、本実施例は、本実施例の技術思想を限定するためのものではなく説明するためのものであり、これらの実施例により、本実施例の技術思想の範囲が限定されるものではない。本実施例の保護範囲は特許請求の範囲によって解釈されるべきであり、それと同等の範囲内にあるすべての技術思想は、本実施例の権利範囲に含まれるものと解釈されるべきである。
図1は、本実施例に係る関数単位のメモリハッシュを用いた動的コード無欠性を検証する概念の概要図である。 図2は、本実施例に係る関数単位の動的コード無欠性の検証を行うことができるプログラム開発構成図である。 図3は、本実施例に係る関数単位のセキュリティタグが適用されたバイナリからハッシュコードを抽出し、ハッシュレジストリを生成する過程のフローチャートである。 図4は、本実施例に係るハッシュレジストリの無欠性を検証するためのシグネチャーを生成する過程のフローチャートである。 図5は、本実施例に係るセキュリティタグが設定された関数からハッシュコードを抽出してハッシュレジストリを生成する過程の例示図である。 図6は、本実施例に係る関数単位のセキュリティタグが適用されたバイナリを実行するユーザー端末の構成図である。 図7は、本実施例に係る関数単位のセキュリティタグが適用されたバイナリに対する関数単位の無欠性の検証を実行する過程のフローチャートである。 図8は、本実施例に係る関数単位の無欠性の検証を実行する過程の例示図である。



  1. プログラムの一部である特定の関数(セキュリティが必要な関数)にのみセキュリティタグを設定する過程と、
    前記セキュリティタグが適用された関数を少なくとも一つ以上含むソースコードをコンパイルしてバイナリを生成するバイナリ生成過程と、
    前記バイナリを検索して前記セキュリティタグが発見されたら、前記特定の関数のコードブロックに対するハッシュコードを抽出するハッシュコード抽出過程と、
    前記ハッシュコード抽出過程で生成された少なくとも一つ以上の関数のハッシュコードを含むハッシュレジストリを生成するハッシュレジストリ生成過程とを含むことを特徴とするハッシュを用いた動的コードの無欠性検証のためのハッシュレジストリ生成方法。

  2. 前記セキュリティタグは、前記特定の関数のコードブロック内で無欠性検査の開始地点を表示する開始タグと終了地点を表示する終了タグとを含むことを特徴とする請求項1に記載のハッシュを用いた動的コードの無欠性検証のためのハッシュレジストリ生成方法。

  3. 前記ハッシュコード抽出過程は、
    前記特定の関数のコードブロック内で前記開始タグから前記終了タグまでのコードに対するハッシュコードを抽出する過程を含むことを特徴とする請求項2に記載のハッシュを用いた動的コードの無欠性検証のためのハッシュレジストリ生成方法。

  4. 前記ハッシュレジストリ生成過程は、
    前記ハッシュコード抽出過程で抽出された少なくとも一つ以上の関数のハッシュコードを含むハッシュコードテーブルを保存する過程と、
    前記ハッシュコードテーブルに対するテーブルハッシュコードを生成し、暗号化してシグネチャー(signature)を生成する過程と、
    前記シグネチャーを保存する過程とを含むことを特徴とする請求項1に記載のハッシュを用いた動的コードの無欠性検証のためのハッシュレジストリ生成方法。

  5. 前記特定の関数は、パスワードの入力、決済関連、アカウント認証、暗号化・復号化、認証書の検証、商品購入・販売、演算結果の判定と、初期化関数のうちいずれかであることを特徴とする請求項1に記載のハッシュを用いた動的コードの無欠性検証のためのハッシュレジストリ生成方法。

  6. セキュリティタグが適用された関数を少なくとも一つ以上含むバイナリをメインメモリにロードする過程と、
    前記バイナリが前記メインメモリで実行される過程で、前記セキュリティタグを含む特定の関数が呼び出されて、前記セキュリティタグが発見されたら、前記関数のコードブロックに対するハッシュコードを抽出するハッシュコード抽出過程と、
    前記抽出されたハッシュコードとハッシュレジストリに保存されている少なくとも一つ以上の関数のハッシュコードを含むハッシュコードテーブルのハッシュコードのうちのいずれかと一致するか否かを確認し、前記特定の関数が変形されたか否かを判断する関数変形判断過程と、
    前記関数変形判断過程の結果、前記特定の関数が変形されたと判断された場合には、前記バイナリの実行を中止する過程とを含むことを特徴とするハッシュを用いた動的コードの無欠性検証方法。

  7. 前記ハッシュコード抽出過程は、
    前記特定の関数のコードブロック内で無欠性検査の開始地点を表示する開始タグから終了地点を表示する終了タグまでのコードに対するハッシュコードを抽出する過程を含むことを特徴とする請求項6に記載のハッシュを用いた動的コードの無欠性検証方法。

  8. 前記ハッシュコード抽出過程は、
    前記特定の関数に対する無欠性検査の後、再び前記特定の関数が呼び出された場合、既に設定された時間間隔内では、前記特定の関数に対する無欠性検査を省略するようにする過程を含むことを特徴とする請求項6に記載のハッシュを用いた動的コードの無欠性検証方法。

  9. 前記ハッシュコード抽出過程は、
    前記ハッシュレジストリが変形されたか否かを検証するために、前記ハッシュレジストリに貯蔵された前記ハッシュコードテーブルに対するテーブルハッシュコードを抽出する過程と、
    前記抽出されたテーブルハッシュコードと、前記ハッシュレジストリまたは別の場所に保管されたシグネチャーから復号化されたテーブルハッシュコードが一致しない場合、前記バイナリの実行を停止する過程とを含むことを特徴とする請求項6に記載のハッシュを用いた動的コードの無欠性検証方法。

 

 

Patent trol of patentswamp
類似の特許
記載するシステムおよび方法は、仮想化技術を使用してマルウェアからホストシステムを保護することを可能にする。いくつかの実施形態では、メモリ内部監視エンジンが、ホストシステムで実行される仮想マシン(VM)の下で動作する。エンジンは、VM内で実行されるソフトウェアによって使用される仮想メモリページの内容を分析する、および/またはたとえばマルウェアによる許可されていない変更からそれぞれの内容を保護するように構成される。それぞれの内容がメモリからスワップアウトされているとき、メモリ内部監視エンジンは、それぞれのVMにページフォールトをインジェクトして、それぞれの内容のスワップインを強制する。
ホットパッチ機構に関連付けられたコンポーネントローダに、実行されるとユーザーモードプロセス、スレッドまたは保持リファレンスを生成するユーザーモードコンポーネントを、実行させる技術が開示される。コンポーネントは、コンポーネントローダにホットパッチデータが無いことを表示し、コンポーネントローダにコンポーネントをアンロードさせる。ある実装では、カーネルモードモジュールは、ホットパッチ機構に対するコンポーネントに、ゼロにセットされたコンポーネントセットのエントリーポイントおよびコンポーネントローダのためのホットパッチデータを提供する。パッチ機構は、ホットパッチデータを適用してコンポーネントローダを変更することで、コンポーネントローダがコンポーネントのセクションオブジェクトの実行権を要求するようにできる。次いで、カーネルモードモジュールは、エントリーポイントを設定することで、コンポーネントが実行可能になり、セクションオブジェクトおよびコンポーネントをホットパッチ機構に提供し、コンポーネントローダにコンポーネントを実行させる。
【課題】悪意のあるソフトウェアに対するローカル保護をするシステム及び方法を提供する。
【解決手段】計算装置上のネットワーク・アクセス試行を遮断し710、ネットワーク・アクセス試行と関連付けられたソフトウェア・プログラム・ファイルを判定し720、ソフトウェア・プログラム・ファイルの信頼性状態を評価してネットワーク・アクセス試行が許可されるかどうかを判定する。信頼性状態は、ソフトウェア・プログラム・ファイルが信頼できるプログラム・ファイルのホワイトリストに含まれる場合に、信頼できると定義され、ソフトウェア・プログラム・ファイルがホワイトリストに含まれない場合に信頼できないと定義される。ソフトウェア・プログラム・ファイルが非信頼状態を有する場合は、ネットワーク・アクセス試行が阻止され780、イベントがログ記録される。
【選択図】図7
【課題】集積回路のセキュア機能及び鍵管理を提供するメカニズムについて記載する。
【解決手段】例示的集積回路は、秘密鍵を記憶するセキュアメモリと、セキュアメモリに連結して、ディジタル署名入り指令を受信し、秘密鍵を使用して指令に関連する署名を検証し、指令を使用して集積回路の動作を構成するセキュリティマネージャーコアとを含む。
【選択図】図3
本発明は、オブジェクト指向プログラムを実行するように構成された仮想マシン(VM)において、強く型付けされた言語に基づき、強制アクセス制御モジュール(Instr_module)によって、強制アクセス制御(MAC)を保証するための方法(100)に関し、前記方法は、
アクセスポリシー(Acc_pol)を用いて強制アクセス制御モジュール(Instr_module)を構成するステップと、
メソッド呼び出し(Meth_entry)または変数メンバへのアクセス要求を指示するイベント受信すると、「呼び出し元」(CalR)と名付けられた、メソッド(Meth)を呼び出している、またはアクセスを要求しているオブジェクト、ならびに「呼び出し先」(CalE)と名付けられた、メソッド(Meth)に呼び出される、またはそのアクセスが要求されるオブジェクトに、呼び出し元および呼び出し先言語型(Typ_CalR、Typ_CalE)に従って、アクセス制御ラベル(LabE、LabR)を追加するステップと、
前記アクセス制御ラベル(LabE、LabR)、呼び出し元および呼び出し先のインスタンス番号(Inst_Num)、アクセスポリシー(Acc_pol)、ならびにアクセス許可に従って、「ネガティブ決定」と名付けられた、メソッド(Meth)の実行もしくは変数メンバへのアクセスをブロックする決定(Dec)、または「ポジティブ決定」と名付けられた、仮想マシン(VM)にメソッド(Meth)を実行させる、もしくは変数メンバにアクセスさせる決定(Dec)を行うステップと、
対応するアクセス試行をブロックするまたは許可するために、前記決定(Dec)を仮想マシン(VM)に送信するステップと
を含む。
システムは、1台の携帯機器上でエンタープライズアプリケーションのワークスペース環境を保持する。このシステムは、その携帯機器にインストールするためのエンタープライズアプリケーションを受け取り、このエンタープライズアプリケーションのバイナリ実行可能ファイルには、エンタープライズアプリケーションに対して、アプリケーション管理エージェントと通信し、ワークスペースを有効のままにすることに関する有効期間の値を含むセキュリティポリシを取得するように強制する機能が挿入されている。アプリケーション管理エージェントはエンタープライズアプリケーションに、暗号化メッセージを共有するための暗号キーを提供する。起動時に、エンタープライズアプリケーションはワークスペース失効期限の値を暗号化メッセージとして保存する。このワークスペース失効期限の値は、ユーザがそれを引き続き使っている場合には、または失効期限の値が満了する前にユーザが他のエンタープライズアプリケーションを起動した場合はその、他のエンタープライズアプリケーションによって延長される。アプリケーション管理エージェントは、ワークスペース失効期限の値が満了した場合に、ユーザに認証証明情報を要求する。
実行防止のための方法、装置、および/またはシステムが提供される。メモリデバイス内の実行可能コードの複数のメモリページの第1のサブセットに対する状態インジケータが、非実行可能状態にセットされる。複数のメモリページの第1のサブセット内の関数に対する間接スタブを含む複数のメモリページの第2のサブセットに対する状態インジケータが、実行可能状態にセットされる。アプリケーションの実行時に、複数のメモリページの第1のサブセットからの呼び出された関数の実行を指示する前に、複数のメモリページの第1のサブセット内の対応する関数に対する状態インジケータを変更する複数のメモリページの第2のサブセット内の対応する間接スタブに対して、関数呼び出しが指示される。
【課題】アプリケーションプログラムサーチの方法及びそのシステムの提供。
【解決手段】本発明は一種のアプリケーションプログラム(或いはApp)サーチの方法を提供する。本方法中、一つ或いは複数のアプリケーションプログラムがスケジューラーのスケジュール策略に基づき実行され、スケジュールのアプリケーションプログラムが実行された後、これらのアプリケーションプログラムが発生するアプリケーションプログラムデータが収集並びに保存される。続いて、サーチ命令を受け取った後、保存されたアプリケーションプログラムデータに対してサーチを実行し、これらアプリケーションプログラムデータが保存したアプリケーションプログラムデータ中の、該サーチ命令と関係する情報を発送する。
【選択図】図1
【課題】メモリ保護ユニットの制約を受けずアクセス管理の自由度を高める。
【解決手段】アドレス空間に配置されるデバイスのレジスタに対するアクセス保護を行なうメモリ保護ユニットを備え、オペレーティングシステムとプロセスとが動作する電子機器であって、オペレーティングシステムは、メモリ保護ユニットを利用してレジスタへのアクセス権限を設定し、プロセスは、デバイスを操作する際に、オペレーティングシステムに操作依頼を行ない、オペレーティングシステムが、操作依頼に従って対応するレジスタにアクセスして、デバイスの操作を実行する。
【選択図】図1
【課題】リターン指向プログラミング(ROP)ペイロードの存在を検出するシステム、方法、および、媒体を提供する。
【解決手段】潜在的なガジェットアドレス空間を識別し、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定し、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、データ内にROPペイロードが存在していることを示しているか否かを決定し、データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定の回数なされたことに応じて、データ内にROPペイロードが存在していることを示す。
【選択図】図3
To top