JP2012221510A - 保護するためのルーチンの自動選択 - Google Patents

保護するためのルーチンの自動選択 Download PDF

Info

Publication number
JP2012221510A
JP2012221510A JP2012090211A JP2012090211A JP2012221510A JP 2012221510 A JP2012221510 A JP 2012221510A JP 2012090211 A JP2012090211 A JP 2012090211A JP 2012090211 A JP2012090211 A JP 2012090211A JP 2012221510 A JP2012221510 A JP 2012221510A
Authority
JP
Japan
Prior art keywords
routine
routines
application
protected
evaluation
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.)
Pending
Application number
JP2012090211A
Other languages
English (en)
Inventor
Zunke Michael
ミハエル・ズンケ
Andreas Lange
アンドレアス・ランゲ
Laszlo Elteto
ラズロ・エルテト
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.)
Thales DIS CPL USA Inc
Original Assignee
SafeNet Inc
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 SafeNet Inc filed Critical SafeNet Inc
Publication of JP2012221510A publication Critical patent/JP2012221510A/ja
Pending legal-status Critical Current

Links

Images

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect

Abstract

【課題】保護するためのルーチンの自動選択する装置、コンピュータ読取可能媒体、方法を提供すること。
【解決手段】アプリケーションを保護する装置、コンピュータ読取可能媒体、方法。前記方法は、以下のステップを含む:
前記アプリケーションの複数の各ルーチンを評価し、前記アプリケーションの前記複数の各ルーチンの評価を生成することによって、前記アプリケーション用のセキュリティ・レベルを受け取ることに応答するステップ;
前記複数の各ルーチンの前記評価と及び前記受け取ったセキュリティ・レベルとに基づいて保護を行うための前記複数のルーチンの幾つかを選択するステップ;並びに
前記複数のルーチンのうち前記選択された幾つかを保護するステップ。
【選択図】図1

Description

本発明は、保護目的でアプリケーションの一部を自動的に選択するための方法、装置、コンピュータ読取可能媒体に関する。
下記の背景技術の議論においては、特定の構造及び/又は方法について言及する。しかし、下記言及は、こうした構造及び/又は方法が従来技術を構成することを認めるものとして解釈するべきではない。出願人は、こうした構造及び/又は方法が従来技術としての資格がないことを主張する権利を明示的に留保するものとする。
アプリケーションの機能の一部は安全性を必要とする可能性がある。例えば、アプリケーションの違法コピーが行われることを防止するためのコピープロテクションを含むアプリケーションについては、違法コピーが行われることを防止するプログラムの一部が安全であることが必要となる可能性がある。
しかし、アプリケーションの機能を決定するためのアプリケーションのソースコードをリバース・エンジニアリングする際にハッカー側も腕を上げていく。しばしば、ハッカーは、実行可能なコードを採用し、ソースコードの作成を行うソフトウェア・ツールを用いることができ、又は、ハッカーは、実行中のアプリケーションの各指示をハッカーが見ることを可能にする別のソフトウェア・ツールを用いることができる。
アプリケーションのリバース・エンジニアリングをハッカーが行うことを更に困難にするための1つの方法として、ソースコードの難読化(obfuscation)と呼ばれる方法がある。難読化においては、アプリケーションのソースコードを取り出し、該ソースコードを意図的に更に複雑なものにする。しかし、難読化によって、アプリケーションの性能(パフォーマンス)を低下してしまい、その原因としては、難読化によって、アプリケーションに余分なソースコードが付加されるからである。ソースコードの難読化部分の実行については、ソースコードの非難読化部分と比べて20倍も遅くなる可能性がある。難読化以外にルーチンを保護する方法が更にあるが、ソースコードを保護する大半の方法は、アプリケーションの実行速度を遅くするという共通の特徴を有している。
ソースコードの一部を保護することにより、ソースコードをリバース・エンジニアリングすることが更に困難なるものの、不可能になっているわけではない。従って、アプリケーションのどの部分をリバース・エンジニアリングするべきなのかがハッカーに分からないように、アプリケーションの重要な部分のみならず、更なる難読化が行われることがしばしばある。
アプリケーションのこうしたデコイ部分の選択は、しばしば、冗長なプロセスとなり、高額な報酬が支払れるプロフェッショナルの貴重な時間が必要となる可能性がある。ルーチンは、アプリケーションの一部でありソースコード内に書かれるものであるが、しばしば、該ルーチンのリストがユーザーに提示され、該ユーザーは、リストのうちどれを保護すべきかを選択する。そして、選択されたルーチン(被選択ルーチン)が保護される。しかし、アプリケーションにおける更なる開発が行われると、新たなルーチンが付加される可能性があるため、ユーザーは、デコイとして用いるためのルーチンを再選択しなければならなくなる可能性がある。また、ユーザーが選択したルーチンにより、アプリケーションに著しい速度低下をもたらす可能性もあり、そして、広範なテストを行わなければ、被選択ルーチンがアプリケーションに著しい速度低下をもたらすかどうかについてユーザーが理解することが困難となる可能性がある。
従って、複数のルーチンを含むアプリケーションを保護する方法に関するニーズが当分野で存在する。本発明の方法は、以下のステップを含む:
前記アプリケーションの複数の各ルーチンを評価し、前記アプリケーションの前記複数の各ルーチンの評価を生成することによって、前記アプリケーション用のセキュリティ・レベルを受け取ることに応答するステップ;
前記複数の各ルーチンの前記評価と及び前記受け取ったセキュリティ・レベルとに基づいて、保護対象の前記複数のルーチンの幾つかを選択するステップ;並びに
前記複数のルーチンの前記選択された幾つかを保護するステップ。
前記方法は、保護するための前記複数のルーチンのうち少なくとも1つのルーチンを選択するステップを含むことができ;及び
前記アプリケーションの前記複数の各ルーチンの前記評価は、更に、前記選択された少なくとも1つのルーチン用のデコイとして前記複数の各ルーチンがどれだけ良好に作用するかに基づく。
前記セキュリティ・レベルは、保護する前記アプリケーションのパーセンテージであってもよい。
保護することは、前記複数のルーチンのうち前記選択された幾つかを難読化することによって、前記被選択ルーチンを保護することを含む。
前記方法は、以下のステップを含むことができる:
保護されていない複数のルーチンのうち前記選択された幾つかを用いて、前記アプリケーションの性能テストを実施して、保護されていないときの性能測定値を生成するステップ;
保護された複数のルーチンのうち前記選択された幾つかを用いて、前記アプリケーションの性能テストを実施して、保護されているときの性能測定値を生成するステップを生成するステップ;
前記保護されているときの性能測定値を前記保護されていないときの性能測定値と比較するステップ;及び
前記比較するステップにより、前記保護されているときの性能測定値が、予め決められた性能低下測定値を下回って前記保護されていないときの性能測定値よりも低下していることが示された場合、前記複数のルーチンの幾つかを選択するステップに戻るステップ。
前記複数の各ルーチンに関して、以下のメトリクスうちの少なくとも1つを計算することができる:
前記ルーチンのサイズ、前記ルーチン内の分岐数に基づく前記ルーチンの複雑さ;
前記アプリケーションのコール・グラフ中の前記ルーチンの位置;
前記ルーチンに対するコールの数、前記ルーチン中のループの数、及び前記ループの境界条件に基づいて前記ルーチンのループが実行される回数についての上限。
サイズが小さいルーチンについては、保護するための選択がなされる資格がないことを決定することできる。
アプリケーションを保護するためのシステムを公開する。
前記システムは以下を備える:
アプリケーションのルーチンを評価して評価を生成するために設計された評価ルーチン;
前記評価とセキュリティ・レベルとに基づいてルーチンを選択するために設計された選択ルーチン(選択するルーチン);並びに
前記被選択ルーチン(選択されたルーチン)を保護するために設計された保護ルーチン(保護するルーチン)。
前記複数のルーチンのうち少なくとも1つのルーチンが保護するために選択されてもよい;
前記複数のルーチンのうちの前記選択された少なくとも1つのルーチン用のデコイとして前記複数の各ルーチンがどれだけ良好に作用するかに基づいて、前記アプリケーションのルーチンを評価するために、前記評価ルーチンは更に設計されてもよい。
前記セキュリティ・レベルは、保護する前記アプリケーションのパーセンテージであってもよい。
前記被選択ルーチンを難読化することによって前記被選択ルーチンを保護するために前記保護ルーチンが更に設計されてもよい。
前記システムは、以下の動作を行うために設計された性能テスターを備えることができる:
前記保護されていない複数のルーチンのうち前記選択された幾つかを用いて、前記アプリケーションの性能テストを実施して、保護されていないときの性能測定値を生成すること;
前記保護された複数のルーチンのうち前記選択された幾つかを用いて、前記アプリケーションの性能テストを実施して、保護されているときの性能測定値を生成すること;
前記保護されているときの性能測定値を前記保護されていないときの性能測定値と比較すること;及び
前記比較することにより、前記保護されているときの性能測定値が、予め決められた性能低下測定値を下回って前記保護されていないときの性能測定値より低下していることが示された場合、前記複数のルーチンの幾つかを再選択すること。
前記複数の各ルーチンに関して、以下のメトリクスうちの少なくとも1つを計算することができる:
前記ルーチンのサイズ、前記ルーチン内の分岐数に基づく前記ルーチンの複雑さ;
前記アプリケーションのコール・グラフ中の前記ルーチンの位置;
前記ルーチンに対するコールの数、前記ルーチン中のループの数、及び前記ループの境界条件に基づいて前記ルーチンのループが実行される回数についての上限。
サイズが小さいルーチンについては、保護するための選択がなされる資格がないことを決定することできる。
非一時的なコンピュータ読取可能記録媒体であって、アプリケーションを保護するためにコンピュータを制御する方法を該媒体上で実行する媒体について開示する。前記方法は以下のステップ含む:
前記アプリケーションの複数の各ルーチンを評価し、前記アプリケーションの前記複数の各ルーチンの評価を生成することによって前記アプリケーション用のセキュリティ・レベルを受け取ることに応答するステップ;
前記複数の各ルーチンの前記評価と及び前記受け取ったセキュリティ・レベルとに基づいて、保護対象の前記複数のルーチンのうち幾つかを選択するステップ;並びに
前記複数のルーチンのうち前記選択された幾つかを保護するステップ。
同一の番号は同一の要素を表している添付図面に関連して、以下の詳細な説明を参照することができ、該図面については下記の通りである:
本発明の実施形態に従ってアプリケーションを保護するためのシステムを表す。 図1の評価ルーチンの動作を表す。 図1の選択ルーチンの動作を表す。 図1の保護ルーチンの動作を表す。 図1の性能テスターの動作を表す。 本発明の実施形態に従ってアプリケーションを保護するための方法を表す。 コンピュータシステムを表す。
詳細な説明
図1は、アプリケーションを保護するためのシステム(100)を表す。システム(100)は、アプリケーション(200)とセキュリティ・レベル(300)とを受け取り、アプリケーション(200)のルーチン(220)を選択し、そして、アプリケーション(200)のルーチン(220)のうち幾つかを保護して、保護されたルーチン(224)を生成する。アプリケーションを保護するためのシステム(100)は、以下のモジュールである、評価ルーチン(110)、選択ルーチン(120)、保護ルーチン(130)を含み、性能テスター(140)を含むことができる。
アプリケーション(200)は、複数のルーチン(220)を含むことができる。前記ルーチン(220)のうちの幾つかは、予め選択されたルーチン(222)であってもよい。予め選択されたルーチン(220)の機能のハッカーからの安全性を確保するために、予め選択されたルーチン(222)を、保護してもよく、又は保護するために予め選択してもよい。どのルーチンについてリバース・エンジニアリングを試みるべきかをハッカーが分からないようにするために、システム(100)は、デコイとして動作する更なるルーチン(220)を保護するために選択することができる。
ルーチン(220)がどれだけ保護するのに適しているかを決定するために、評価ルーチン(110)がルーチン(220)を評価する。一実施形態において、評価ルーチン(110)は、ルーチンのランキング(262)(図2参照)を生成し、該ランキングの最上位に最も保護に適したルーチン(220)を有する。ルーチン(220)が保護された場合にアプリケーション(200)に対して発生する性能の低下についての見積もりに基づいて、評価ルーチン(220)は、ルーチン(220)が保護にどれだけ良好に適しているかについて評価することができる。評価ルーチン(110)については、また後で議論する。
評価ルーチン(110)によって生成されたルーチン(220)の評価とセキュリティ・レベル(300)とに基づいて、選択ルーチン(120)は、ルーチン(220)を保護するために選択する。例えば、セキュリティ・レベル(300)は、保護を追加するためのルーチン(220)のパーセンテージであってもよい。そして、評価ルーチン(110)によって生成されたランキングと保護を追加するためのルーチン(220)のパーセンテージとに基づいて、選択ルーチン(120)は、ルーチン(220)を保護するために選択することができる。従って、もし仮に、アプリケーション(200)中に300個のルーチン(220)があったとして、且つ、5パーセントのルーチン(220)が保護されるべきとセキュリティ・レベル(300)が表明したとした場合、選択ルーチン(120)は、保護されたルーチン(224)となるべきルーチンを、ランキング中から上位5パーセント、又は上位15個のルーチンを選択するであろう。選択ルーチン(120)については、また後で議論する。
保護ルーチン(120)は、ルーチン(220)を受け取り、ルーチン(220)を保護して、保護されたルーチン(224)を生成する。例えば、保護ルーチン(120)は、ルーチン(220)受け取って、ルーチン(220)を難読化することができる。幾つかの実施形態において、保護ルーチン(120)は、予め選択されたルーチン(222)を受け取り、そして、予め選択されたルーチン(222)を保護して、予め選択され且つ保護されたルーチン(223)を生成する。保護ルーチン(120)については、また後で議論する。
性能テスター(140)は、アプリケーション(200)の性能をテストする。性能テスター(140)は、ルーチン(220)が保護される前と後とでアプリケーションを実行することができ、そして、保護されたルーチン(224)によりアプリケーション(200)の性能をどれだけ低下するかについて決定することができる。幾つかの実施形態において、アプリケーション(200)の性能の低下について、保護されたルーチン(224)によって過剰に低下してしまった旨の決定をシステム(100)が行うことができる。過剰な低下を是正するため、システム(100)は、異なるルーチン(220)を選択して保護することができる。これについては、アプリケーション(200)の性能を許容できないほどに低下させることのないルーチン(220)を選択するための反復プロセスであってもよい。性能テスター(140)については、また後で議論する。
セキュリティ・レベル(300)は、アプリケーション(200)に対してどれだけのセキュリティを付加するかについての尺度である。セキュリティ・レベル(300)は、ユーザー又は別のアプリケーションから受け取ることができる。セキュリティ・レベル(300)は、異なる方法で表現することができる。セキュリティ・レベル(300)をどのように表現できるかについて幾つか例を挙げると以下の例が挙げられる:保護するルーチン(220)のパーセンテージ、保護するアプリケーションのソースコードのパーセンテージ、及び予め選択され、保護するルーチン(222)の倍数。
図2は、評価ルーチン(110)の動作を表す。評価ルーチン(110)は、ルーチン(220)を受け取り、該ルーチン(220)を評価して、評価(260)を生成する。評価(260)は、前記ルーチン(220)がどれだけ保護に適しているかを表す数値であってもよい。ルーチン(220)の複数のメトリクスを計算することに基づいて、評価ルーチン(110)は、評価(260)を生成することができる。評価ルーチン(110)は、ルーチン(220)がどれだけ保護に適しているかに従って、ルーチン(220)をランク付けしたランキング(262)を生成することができる。
評価ルーチン(110)は、少なくとも以下に基づいてルーチン(220)を評価することができる:ルーチン(220)に対して保護を付加することによって引き起こされるアプリケーション(200)の性能低下を見積もること;予め選択されたルーチン(複数可)(222)用のデコイルーチンとして、ルーチン(220)がどれだけ良好であるかを見積もること;及びルーチン(220)の機能を保護することがどれだけ重要であるかを見積もること。
ルーチン(220)に対して保護を付加することによって引き起こされるアプリケーション(200)の性能低下を見積もるために、ルーチン(220)用の異なる多くのメトリクスを、評価ルーチン(110)は計算することができる。以下の述べるものは、メトリクスの幾つかである。評価ルーチン(110)は、ルーチンのサイズを計算することができ、該サイズは異なる多くの方法で計算することができ、ルーチンの実行可能なバージョンの中にある指示の数、又はルーチンのソースコードの行数を含む。評価ルーチン(110)は、ルーチンの複雑さを計算することができ、該複雑さは、ループ(282)の数、ループ(284)上の境界条件、他のルーチン(286)に対するコール、及びルーチン(220)内の分岐の数に基づくことができ、該分岐の数については、ルーチン(220)内の条件文の数をカウントすることによって計算できる。評価ルーチン(110)は、アプリケーション(200)のコール・ツリー(270)を生成することができ、又は該ツリーを生成する別のルーチンを有することができる。前記コール・ツリー(270)は、どのルーチン(220)がどこでコールされるかを表す。前記コール・ツリー(270)は、ルーチン(220)が関与するであろうアプリケーション(200)が実行される予想量を決定するのに役立つことができる。評価ルーチン(110)は、コール・ツリー(270)中でのルーチン(220)の位置と、及びコール・グラフ中でルーチン(220)が参照されている回数とを計算することができる。例えば、もしも、ルーチン(220)が、アプリケーション(200)の実行の最初の段階でコールされるだけであり、そして、ルーチン(220)が、他のルーチン(220)に対してコールを行っていないことがコール・ツリー(270)によって示されている場合、ルーチン(220)はアプリケーション(200)の実行について大きな比重を占めるものではなく、保護を付加するための良好な候補となる可能性があるとすることができる。上記の全ては、ルーチン(220)に保護を付加することによって引き起こされるアプリケーション(200)の性能低下を見積もるために使用することができる。
ルーチン(220)がとることができる1以上の異なる形態に基づいて、評価ルーチン(110)は、任意のメトリクスを評価することができる。例えば、評価ルーチン(110)は、ルーチン(220)のソースコードを評価することができ、又はルーチン(220)から生成された生成物を評価することができ、例えば、ルーチン(220)のソースコードから生成することができる、リンクされた又はリンクされていない、Pコード又は実行可能なコードが挙げられる。
評価ルーチン(110)については、ルールを設けることができ、例えば、小さいルーチンについては保護しなくとも良いというルールを設けることができ、この理由としては、該ルーチンは隠すべきところがほとんど無いか、隠すべき機能が全く無く、また、該ルーチンは、その機能をハッカーが推測するのが容易い傾向にあるからである。更に、小さいルーチンは、アプリケーションの実行中に頻繁にコールされることがしばしばあり、その結果、小さいルーチンを保護することで、アプリケーション(200)の性能が大幅に低下する可能性がある。
評価ルーチン(110)は、アプリケーション(200)中のルーチン(220)のランキング(262)を生成することができ、該ランキングでは、保護されるべきルーチンの適性に基づいてランク付けが行われている。各ルーチン(220)用に生成された評価(260)でソートしたルーチン(220)の線形リストを構築することによって、評価ルーチン(110)はランキング(262)を生成することができる。
評価ルーチン(110)は、保護するためのルーチン(220)を評価するために、評価基準(236)を使用することができる。例えば、評価(260)は2つの数値を含むことができる:1つは、対応するルーチン(220)が保護された場合の、予想される性能低下についての数値である;もう1つの数値は、対応するルーチン(220)の機能を保護することがどれだけ望ましいかに対応する数値である。そして、評価ルーチン(110)は、保護するルーチン(220)を評価基準(236)に基づいて評価することができ、該基準において、ルーチンの保護の望ましさは、評価基準(236)の70%をしめ、また、アプリケーションの予想される性能低下は、評価基準(236)の30%をしめる。
図3は、選択ルーチン(120)の動作を表している。選択ルーチン(120)は、評価(260)と及びセキュリティ・レベル(300)とを受け取り、ルーチン(220)を選択して、被選択ルーチン(226)を生成する。例えば、評価(260)に対応するルーチン(220)を保護する場合、評価(260)は、予想される性能低下を表す数値であってもよく、そして、セキュリティ・レベル(300)は、保護するルーチン(220)のパーセントであってもよい。セキュリティ・レベル(300)を満たすまで、選択ルーチン(120)は、予想される性能低下が最も低いルーチン(220)を選択することができる。幾つかの実施形態において、選択されたルーチン(220)の数値がセキュリティ・レベル(300)の要求を満たすまで、選択ルーチン(120)は、最も高くランク付け(262)されたルーチンを選択することができる。
図4は、保護ルーチン(130)の動作を表している。保護ルーチン(130)はルーチン(220)を受け取り、ルーチン(220)を保護して保護されたルーチン(224)を生成する。一実施形態において、保護ルーチン(130)は、ルーチン(220)を難読化して、難読化され且つ保護されたルーチン(224)を生成する。難読化については、ルーチン(220)の機能をハッカーがリバース・エンジニアリングすることが困難となるようにルーチン(220)の機能を乱雑にするための方法として公知である。幾つかの実施形態において、保護ルーチン(130)は予め選択されたルーチン(222)を受け取り、予め選択されたルーチン(222)を保護し、保護され且つ予め選択されたルーチン(223)を生成する。一実施形態において、保護ルーチン(130)は予め選択されたルーチン(222)を難読化する。そして、難読化され、保護され、且つ予め選択されたルーチン(223)を生成する。幾つかの実施形態において、1以上の予め選択されたルーチン(複数可)(222)は、別のアプリケーションによって、又は手動で開発者によってのいずれかで保護される。そして、保護され且つ予め選択されたルーチン(223)を生成する。アプリケーションを保護するためのシステム(100)が実行される前に、予め選択されたルーチン(複数可)(222)は既に保護されていても良い。
図5は、性能テスター(140)の動作を表している。性能テスター(140)は、保護されたルーチン(224)を有さないアプリケーション(200)を受け取り、該アプリケーション(200)について性能テストを実施し、保護されていないときの性能測定値(252)を生成する。そして、性能テスター(140)は、保護されたルーチン(224)を有するアプリケーション(200)を受け取り、該アプリケーション(200)について性能テストを実施し、保護されているときの性能測定値(254)を生成する。アプリケーションを保護するためのシステム(100)は、保護されていないときの性能測定値(252)を保護されているときの性能測定値(254)と比べることができ、そして、もしも、セキュリティ・レベル(300)を基準とすることができる予め決められた性能低下測定値を超えて、アプリケーションの性能が低下した場合には、システム(100)は、保護する新たなルーチンを決定し、再度性能テストを実行することができる。幾つかの実施形態において、性能テスター(140)は、予め決められた量を超えてアプリケーション(200)の性能を低下させたルーチン(220)を特定することができ、そして、これらのルーチンが、選択(260)及び/又はランキング(262)内に含まれないように排除することができ、その結果、選択ルーチン(120)は、これらのルーチンを保護対象として選択しなくなるだろう。
図6は、アプリケーションを保護するための方法を表している(600)。以下の議論では、図1〜5についても参照する。前記方法は、610で開始され、アプリケーション用のセキュリティ・レベルを受け取ることに応答して、アプリケーションの複数の各ルーチンを評価し、アプリケーションの前記複数の各ルーチンに関する評価を生成する。例えば、アプリケーションを保護するためのシステム(100)は、20パーセントのルーチンを保護すべき旨を表すセキュリティ・レベル(300)を受け取ることができる。評価ルーチン(110)は、アプリケーション(200)のルーチン(220)を評価することができる。
続いて、前記方法は、620において、前記評価と、及び前記受け取ったセキュリティ・レベルとに基づいて、保護する前記複数のルーチンのうち幾つかを選択する。例えば、選択ルーチン(120)は、評価ルーチン(110)によって生成されたルーチンの評価に基づいて、及びセキュリティ・レベル(300)に基づいて、保護するルーチンを選択することができる。例えば、選択されたルーチン(220)の幾つがセキュリティ・レベル(300)の要求を満たすまで、選択ルーチン(120)は、最も高くランク付け(262)されたルーチンを選択することができる。
続いて、前記方法は、630において、前記複数のルーチンのうち選択された幾つかを保護する。例えば、保護ルーチン(130)は、各被選択ルーチン(226)を受け取ることができ、及び、保護されたルーチン(224)を生成するために被選択ルーチン(226)を難読化することができる。
前記方法は、終了又は任意で継続のいずれかを行うことができ、継続する場合には、640において、保護されていない前記複数のルーチンのうち前記選択された幾つかを用いてアプリケーションの性能テストを行い、保護されていないときの性能測定値を生成する。例えば、性能テスター(140)は、保護されたルーチン(224)を有さないアプリケーション(200)の性能テストを行い、保護されていないときの性能測定値(252)を生成することができる。
続いて、前記方法は、650において、保護された前記複数のルーチンのうち前記選択された幾つかを用いてアプリケーションの性能テストを行い、保護されているときの性能測定値を生成することができる。例えば、性能テスター(140)は、保護されたルーチン(224)を有するアプリケーション(200)の性能テストを行い、保護されているときの性能測定値(254)を生成することができる。
続いて、前記方法は、670において、保護されているときの性能測定値が、予め決められた性能低下測定値を下回って、保護されていないときの性能測定値よりも低下しているかどうかを、比較により示すことができる。例えば、アプリケーションを保護するためのシステム(100)は、予め決められた性能低下測定値を下回って、保護されているときの性能測定値が保護されていないときの性能測定値よりも低下していることが、比較することにより示されているかどうかを決定することができ、この場合には、判定は「YES」となり、前記方法は、ステップ(620)へ戻り、ルーチンを再度選択する。評価を再実施するのは時間を消費する可能性があるため、前記方法は、ステップ(610)ではなくステップ(620)に戻ってもよい。もしも、判定が「NO」、即ち、予め決められた性能低下を下回って、保護されているときの性能測定値が保護されていないときの性能測定値よりも低下しないことが、前記比較により示された場合には、前記方法を終了することができる。
図7は、コンピュータシステム(700)を表しており、該システムは、「ファブリック」通信による通信内に、プロセッサ(702)、メモリ・システム(704)、及び1以上の入力/出力(I/O)装置(706)を含む。通信ファブリックは、種々の方法で実装することができ、図7に示すように、1以上のコンピュータバス(708,710)及び/又はブリッジデバイス(712)を含むことができる。I/O装置(706)は、ネットワーク・アダプタ及び/又はマス・ストレージ・デバイスを含むことができる。図1及び図7を参照されたい。コンピュータシステム(700)は、前記アプリケーションを保護するためのシステム(100)に従った方法を実行することができ、I/O装置(706)を介してセキュリティ・レベル(300)を受け取ることができる。例えば、ユーザーは、コンピュータ・キーボードからセキュリティ・レベル(300)を入力することができる。前記アプリケーションを保護するためのシステム(200)は、複数のモジュール及び/又はルーチンを含むことができ、これらは、通信ファブリックを介してアクセス可能なメモリ・システム(704)又はマス・ストレージ・デバイス(706)上に、ローカル又はリモートで存在することができる。例えば、前記モジュール及び/又はルーチンは、プロセッサ(702)と同一の空間内にハードディスクがあるように、ローカルであってもよく、或いは、ハードディスクがサービスセンター内にリモートに位置しているように、メモリ・システム内等にリモートで位置してもよい。アプリケーション(200)は、メモリ・システム(704)又はマス・ストレージ・デバイス(706)内に記憶することができ、これらについてもローカル又はリモートのいずれかであってもよい。アプリケーションを保護するためのシステム(200)は、ユーザーからの入力を受け取ることができ、I/O装置(706)上に出力を表示することができ、該デバイスとしては、キーボード、マウス、ディスプレイ等を含めることができる。通信ファブリックは、インターネット及びLANを含む数多くのネットワークと通信されてもよい。
本明細書に開示した実施形態に関連して記載されたモジュール又はルーチンは、異なる数のモジュール又はルーチンを用いて実装することができ、本明細書に記載された機能については、更に多くの又は更に少ないモジュール又はルーチンの間で分割される。更に言えば、前記モジュール又はルーチンは、ローカル又はリモートいずれかに存在してもよく、上述の機能を実装するために、リモート又はローカルいずれかでのコールを行うことができる。
本明細書に開示した実施形態に関連して記載された、様々な例示的ルーチン又は例示的モジュール、及び例示的回路については、以下の物を用いて実装又は実行することができる:汎用目的プロセッサ、デジタル・シグナル・プロセッサ(DSP)、特定用途向けIC(ASIC)、現場でプログラム可能なゲートアレイ(FPGA)、若しくは他のプログラム制御可能な論理デバイス、ディスクリート・ゲート(discrete gate)、若しくはトランジスター・ロジック(transistor logic)、ディスクリート・ハードウェア・コンポーネント、又は、本明細書に記載した機能を実行するために設計されたこれらの任意の組合せ。汎用目的プロセッサは、マイクロプロセッサであってもよいが、別の形態では、前記プロセッサは、任意の従来のプロセッサ、コントローラー、マイクロコントローラー、又はステート・マシンであってもよい。また、プロセッサは、コンピューティングデバイスの組合せとして実装することができ、例えば、1つのDSP及び1つのマイクロプロセッサの組合せ、複数のマイクロプロセッサの組合せ、DSPコアと接続された1以上のマイクロプロセッサの組合せ、又は任意の他のこうした設計の組合せであってもよい。
更に、本明細書に開示した態様に関連して記載された方法又はアルゴリズムのステップ及び/又は動作は、ハードウェア内、プロセッサによって実行されるソフトウェアモジュール内、又はこれら2つの組み合せ内で直接実施することができる。ソフトウェアモジュールは、以下の物の中に存在することができる:RAMメモリ、フラッシュ・メモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブル・ディスク、CD−ROM、又は公知の記憶媒体の任意の他の形態。例示的な記憶媒体は、プロセッサと連結することができ、プロセッサは、該記憶媒体から情報を読み取ることができ、そして、該記憶媒体へ情報を書き込むことができる。或いは、記憶媒体は、プロセッサに組み込まれても良い。更に、幾つかの態様において、プロセッサ及び記憶媒体は、ASIC内に存在してもよい。更に言えば、ASICは、ユーザー端末内に存在しても良い。或いは、プロセッサ及び記憶媒体は、ユーザー端末内にある個別のコンポーネントとして存在しても良い。更に言えば、幾つかの態様において、方法又はアルゴリズムのステップ及び/又は動作は、機械読取可能媒体及び/又はコンピュータ読取可能媒体上での単一の指示、又は任意の組合せの指示、又は一組の指示として存在してもよく、該媒体は物理的な形態であってもよい。
本発明の好ましい実施形態に関連して記述してきたが、添付した特許請求の範囲で規定されるように本発明の思想及び発明の範囲から逸脱することなく、具体的に記載されていない付加、削除、改変、及び置換を行うことができることを当業者は理解するであろう。

Claims (15)

  1. 複数のルーチンを含むアプリケーションを保護する方法であって、以下のステップを含む前記方法:
    前記アプリケーション用のセキュリティ・レベルを受け取ることに応答して、
    前記アプリケーションの複数の各ルーチンを評価し、前記アプリケーションの前記複数の各ルーチンの評価を生成するステップ;
    前記複数の各ルーチンの前記評価と及び前記受け取ったセキュリティ・レベルとに基づいて、保護対象の前記複数のルーチンの幾つかを選択するステップ;並びに
    前記複数のルーチンのうち前記選択された幾つかを保護するステップ。
  2. 請求項1に記載の方法であって:
    保護するための前記複数のルーチンのうち少なくとも1つのルーチンを選択するステップをさらに含み;及び
    前記アプリケーションの前記複数の各ルーチンの前記評価が、更に、前記選択された少なくとも1つのルーチン用のデコイとして前記複数の各ルーチンがどれだけ良好に作用するかに基づく方法。
  3. 請求項1に記載の方法であって、前記セキュリティ・レベルは、保護する前記アプリケーションのパーセンテージである方法。
  4. 請求項1に記載の方法であって、保護することが以下の保護を含む方法:
    前記複数のルーチンのうち前記選択された幾つかを難読化することによって、前記被選択ルーチンを保護すること。
  5. 請求項1に記載の方法であって、更に以下のステップを含む方法:
    保護されていない複数のルーチンのうち前記選択された幾つかを用いて、前記アプリケーションの性能テストを実施して、保護されていないときの性能測定値を生成するステップ;
    保護された複数のルーチンのうち前記選択された幾つかを用いて、前記アプリケーションの性能テストを実施して、保護されているときの性能測定値を生成するステップ;
    前記保護されているときの性能測定値を前記保護されていないときの性能測定値と比較するステップ;及び
    前記比較するステップにより、前記保護されているときの性能測定値が、予め決められた性能低下測定値を下回って前記保護されていないときの性能測定値よりも低下していることが示された場合、前記複数のルーチンの幾つかを選択するステップに戻るステップ。
  6. 請求項1に記載の方法であって、以下のうちの少なくとも1つを計算して、前記複数の各ルーチンの前記評価を決定する、該方法:
    前記ルーチンのサイズ、前記ルーチン内の分岐数に基づく前記ルーチンの複雑さ;
    前記アプリケーションのコール・グラフ中の前記ルーチンの位置;
    前記ルーチンに対するコールの数、前記ルーチン中のループの数、及び前記ループの境界条件に基づいて前記ルーチンのループが実行される回数についての上限。
  7. 請求項1に記載の方法であって、サイズが小さいルーチンは、保護するための選択がなされない方法。
  8. アプリケーションを保護するためのシステムであって、前記システムは以下を備える:
    アプリケーションのルーチンを評価して評価を生成するために設計された評価ルーチン;
    前記評価とセキュリティ・レベルとに基づいてルーチンを選択するために設計された選択ルーチン;並びに
    前記被選択ルーチンを保護するために設計された保護ルーチン。
  9. 請求項8に記載のアプリケーションを保護するためのシステムであって、
    前記複数のルーチンのうち少なくとも1つのルーチンが保護するために選択され;
    前記複数のルーチンのうちの前記選択された少なくとも1つのルーチン用のデコイとして前記複数の各ルーチンがどれだけ良好に作用するかに基づいて、前記アプリケーションのルーチンを評価するために前記評価ルーチンが更に設計されたシステム。
  10. 請求項8に記載のアプリケーションを保護するためのシステムであって、前記セキュリティ・レベルが、保護する前記アプリケーションのパーセンテージであるシステム。
  11. 請求項8に記載のアプリケーションを保護するためのシステムであって、前記被選択ルーチンを難読化することによって前記被選択ルーチンを保護するために前記保護ルーチンが更に設計されたシステム。
  12. 請求項8に記載のアプリケーションを保護するためのシステムであって、以下の動作を行うために設計された性能テスターを更に備えるシステム:
    前記保護されていない複数のルーチンのうち前記選択された幾つかを用いて、前記アプリケーションの性能テストを実施して、保護されていないときの性能測定値を生成すること;
    前記保護された複数のルーチンのうち前記選択された幾つかを用いて、前記アプリケーションの性能テストを実施して、保護されているときの性能測定値を生成すること;
    前記保護されているときの性能測定値を前記保護されていないときの性能測定値と比較すること;及び
    前記比較することにより、前記保護されているときの性能測定値が、予め決められた性能低下測定値を下回って前記保護されていないときの性能測定値より低下していることが示された場合、前記複数のルーチンの幾つかを再選択すること。
  13. 請求項8に記載のアプリケーションを保護するためのシステムであって、以下のうちの少なくとも1つを計算して、前記複数の各ルーチンの前記評価を決定する、該システム:
    前記ルーチンのサイズ、前記ルーチン内の分岐数に基づく前記ルーチンの複雑さ;
    前記アプリケーションのコール・グラフ中の前記ルーチンの位置;
    前記ルーチンに対するコールの数、前記ルーチン中のループの数、及び前記ループの境界条件に基づいて前記ルーチンのループが実行される回数についての上限。
  14. 請求項8に記載のアプリケーションを保護するためのシステムであって、サイズが小さいルーチンは、保護するための選択がなされないシステム。
  15. 非一時的なコンピュータ読取可能記録媒体であって、アプリケーションを保護するためにコンピュータを制御する方法を該媒体上で実行する媒体であり、前記方法が以下のステップ含む媒体:
    前記アプリケーションの複数の各ルーチンを評価し、前記アプリケーションの前記複数の各ルーチンの評価を生成することによって前記アプリケーション用のセキュリティ・レベルを受け取ることに応答するステップ;
    前記複数の各ルーチンの前記評価と及び前記受け取ったセキュリティ・レベルとに基づいて、保護対象の前記複数のルーチンのうち幾つかを選択するステップ;並びに
    前記複数のルーチンのうち前記選択された幾つかを保護するステップ。
JP2012090211A 2011-04-13 2012-04-11 保護するためのルーチンの自動選択 Pending JP2012221510A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/086,044 US20120266249A1 (en) 2011-04-13 2011-04-13 Automatic Selection of Routines for Protection
US13/086044 2011-04-13

Publications (1)

Publication Number Publication Date
JP2012221510A true JP2012221510A (ja) 2012-11-12

Family

ID=45952882

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012090211A Pending JP2012221510A (ja) 2011-04-13 2012-04-11 保護するためのルーチンの自動選択

Country Status (3)

Country Link
US (1) US20120266249A1 (ja)
EP (1) EP2511847A1 (ja)
JP (1) JP2012221510A (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999001815A1 (en) * 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
US20050183072A1 (en) * 1999-07-29 2005-08-18 Intertrust Technologies Corporation Software self-defense systems and methods
US20060259981A1 (en) * 2005-05-13 2006-11-16 Yaron Ben-Shoshan System and method of controlling and monitoring computer program usage
EP1936527A1 (fr) * 2006-12-18 2008-06-25 Gemplus Procédé permettant de faire varier le nombre d'exécution de contre-mesures dans un code exécuté

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643775B1 (en) * 1997-12-05 2003-11-04 Jamama, Llc Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications
US7263722B1 (en) * 1999-05-12 2007-08-28 Fraunhofer Crcg, Inc. Obfuscation of executable code
US7587616B2 (en) * 2005-02-25 2009-09-08 Microsoft Corporation System and method of iterative code obfuscation
US8108689B2 (en) * 2005-10-28 2012-01-31 Panasonic Corporation Obfuscation evaluation method and obfuscation method

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999001815A1 (en) * 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
JP2002514333A (ja) * 1997-06-09 2002-05-14 インタートラスト テクノロジーズ コーポレイション ソフトウェアセキュリティを増強するための混乱化技術
US6668325B1 (en) * 1997-06-09 2003-12-23 Intertrust Technologies Obfuscation techniques for enhancing software security
US20050183072A1 (en) * 1999-07-29 2005-08-18 Intertrust Technologies Corporation Software self-defense systems and methods
US20060259981A1 (en) * 2005-05-13 2006-11-16 Yaron Ben-Shoshan System and method of controlling and monitoring computer program usage
EP1936527A1 (fr) * 2006-12-18 2008-06-25 Gemplus Procédé permettant de faire varier le nombre d'exécution de contre-mesures dans un code exécuté
WO2008074619A1 (fr) * 2006-12-18 2008-06-26 Gemalto Sa Procédé permettant de faire varier le nombre d'exécution de contre-mesures dans un code exécuté
US20100011344A1 (en) * 2006-12-18 2010-01-14 Gemalto Sa Method making it possible to vary the number of executions of countermeasures in an executed code
JP2010514032A (ja) * 2006-12-18 2010-04-30 ジェムアルト エスアー 実行済みコードにおいて対抗策の実行数を変更可能にする方法

Also Published As

Publication number Publication date
EP2511847A1 (en) 2012-10-17
US20120266249A1 (en) 2012-10-18

Similar Documents

Publication Publication Date Title
Thomas et al. Security metrics for the android ecosystem
US9471470B2 (en) Automatically recommending test suite from historical data based on randomized evolutionary techniques
US20170046246A1 (en) Multi-data analysis based proactive defect detection and resolution
JP6501982B2 (ja) 故障リスク指標推定装置および故障リスク指標推定方法
US9146833B2 (en) System and method for correct execution of software based on a variance between baseline and real time information
US20120233596A1 (en) Measuring coupling between coverage tasks and use thereof
TW201541278A (zh) 隨選檢測惡意程式之方法、電子裝置、及使用者介面
US9405659B2 (en) Measuring the logging quality of a computer program
JP6913057B2 (ja) 損害予測方法、損害予測システム及びプログラム
JP2011516953A (ja) 自動解析を採用する改竄防止システム
WO2017131669A1 (en) Recommendations based on the impact of code changes
JP2015130152A (ja) 情報処理装置及びプログラム
Wang et al. WAS: A weighted attribute-based strategy for cluster test selection
Tickoo et al. Testing effort based modeling to determine optimal release and patching time of software
Saraf et al. Generalized software fault detection and correction modeling framework through imperfect debugging, error generation and change point
JP2015176230A (ja) テストケース生成装置、方法、及びプログラム
Anand et al. Modeling software fault removal and vulnerability detection and related patch release policy
JP5828285B2 (ja) 分散処理システム、分散処理方法および分散処理プログラム
US10102099B2 (en) Performance information generating method, information processing apparatus and computer-readable storage medium storing performance information generation program
JP2012221510A (ja) 保護するためのルーチンの自動選択
Kapur et al. Application of multi attribute utility theory in multiple releases of software
US20120291019A1 (en) Program verification apparatus based on model verifying and storage medium
Nichols et al. Fixpoint reuse for incremental javascript analysis
WO2018201864A1 (zh) 一种数据库性能诊断方法、装置、设备以及存储介质
GB2504496A (en) Removing code instrumentation based on the comparison between collected performance data and a threshold

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151124

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160510