JP2008503014A - ソフトウェアのセキュリティ確保 - Google Patents

ソフトウェアのセキュリティ確保 Download PDF

Info

Publication number
JP2008503014A
JP2008503014A JP2007527785A JP2007527785A JP2008503014A JP 2008503014 A JP2008503014 A JP 2008503014A JP 2007527785 A JP2007527785 A JP 2007527785A JP 2007527785 A JP2007527785 A JP 2007527785A JP 2008503014 A JP2008503014 A JP 2008503014A
Authority
JP
Japan
Prior art keywords
software
dynamic link
link library
computer
readable medium
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
JP2007527785A
Other languages
English (en)
Other versions
JP2008503014A5 (ja
JP4729575B2 (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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
Priority claimed from US11/061,399 external-priority patent/US7721340B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2008503014A publication Critical patent/JP2008503014A/ja
Publication of JP2008503014A5 publication Critical patent/JP2008503014A5/ja
Application granted granted Critical
Publication of JP4729575B2 publication Critical patent/JP4729575B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/121Restricting unauthorised execution of programs
    • 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
    • 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
    • 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
    • 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/3247Cryptographic 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 involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

ハッカーがソフトウェアイメージを構成するソフトウェア群をリバースエンジニアリングする際に、ハッカーを混乱させるためのソフトウェアイメージの難読化が提供される(402)。コンピューティングマシン上の中央処理装置やキャッシュメモリなどのハードウェアリソースが、ソフトウェア改ざんの抑止が可能なクラスに属するか否かを判定するためのプロセスもまた提供される(442)。スレッド保護は、保護ソフトウェアを実行する様々なスレッドによって改ざんを抑止する(443)。サービス保護は、様々な許可されていないサービスの実行を可能にする改ざんを抑止する(407)。インストールセットアップ保護は、様々なソフトウェアがインストールされる間の改ざんを抑止する(202)。ハードウェア保護は、ハッカーが様々なソフトウェアを許可されていないハードウェア上で実行させるのを防止する(3B)。

Description

本発明は一般にセキュリティに関し、より詳細には、許可されていない個人、または許可されていないソフトウェアによる変更を防止することによって、ソフトウェア改ざんを抑止することに関する。
ソフトウェアは、コンピューティングマシンを強力にする。このようなマシンは、人の欠陥のある心臓の不規則なリズムを正すことができ、あるいは、人々が天空の星座に手を伸ばすことを可能にすることができる。それにもかかわらず、ソフトウェアは、偶発的な被害や意図的な危害のような単純なものに対して脆弱である。様々な例の中でも特に、何らかの方法で親のパーソナルコンピュータにアクセスした子供が、物理的なデータ損失を引き起こしたり、あるいは、コンピューティングマシンの使用に悪影響を及ぼすよう設定を変更したりすることから、偶発的な被害は、悪意なしに生じ得る。意図的な危害は通常、「ハッカー」によって引き起こされる。ハッカーとは、悪質なソフトウェアをコンピューティングマシン上で実行させたり、許可なくコンピューティングマシンに直接アクセスしてプログラムおよびデータを改ざんしたりすることによって、コンピューティングの専門知識を不正目的に使用する人間に対する、非難を込めた用語である。
オペレーティングシステムは、メモリ、中央処理装置(CPU)時間、ディスクスペース、周辺デバイスなどのコンピューティングマシンリソースの割り振りと使用率とを制御するソフトウェアである。オペレーティングシステムは、アプリケーションが依存する基本ソフトウェアである。普及しているオペレーティングシステムとして、Windows(登録商標) 98、Windows(登録商標) NT、Windows(登録商標) XP、Mac OS(登録商標)、UNIX(登録商標)、およびLinux(登録商標)が挙げられる。オペレーティングシステムは、特定の市場に適するよう、パッケージされることがある。例えば、ソフトウェアメーカは、小規模のニッチなサーバ市場に使用される強力なオペレーティングシステムを、大規模な一般消費者市場の初心者ユーザに適するよう様々な方法で改造する(retrofit)ことがある。1つの問題は、初心者ユーザが、改造されたオペレーティングシステムをうっかり変更してしまい、不具合を生じさせる場合があることである。しかしながら、最も悪質な問題は、ハッカーが、他の不正目的で使用するために、改造されたオペレーティングシステムをリバースエンジニアリングして変更する可能性があり、それによりソフトウェアメーカが損害を被ることである。図1は、この問題および他の問題をより詳細に示している。
ソフトウェアイメージ108は、コンピュータハードウェアを動作させる命令を含むオペレーティングシステムの複製またはコピーを表している。ソフトウェアイメージ108は通常、コンピュータハードウェア内のどこかに記憶されたファイルなので、ハッカーまたは悪質なソフトウェア102は、ソフトウェアイメージ108を変更する可能性もあるし、あるいは、ソフトウェアイメージ108を容易に置き換えるようにする可能性もある。ユーザ110が、次回、ソフトウェアイメージを呼び出して、オペレーティングシステムなどのシステムソフトウェアを実行するときは、ソフトウェアメーカから提供されたオリジナルのソフトウェアイメージではなく、変更された、または置き換えられたソフトウェアイメージが実行される。
ソフトウェアイメージ108の改ざんは、通常、ハッカーまたは悪質なソフトウェア102によって行われ、ユーザ110によって行われることはめったにない。しかしながら、レジストリ106は、ハッカーまたは悪質なソフトウェア102によってだけでなく、ユーザ110によって意図せずに改ざんされる場合もある。レジストリ106は、1人または複数のユーザ、1つまたは複数のアプリケーション、および、1つまたは複数のハードウェアデバイスを対象とするシステムを構成するために利用できる情報を記憶するのに使用されるシステムソフトウェアである。例えば、レジストリを使用して、消費者コンピューティングマシンに対しては、3次元レンダリングおよびハードウェアアクセラレーションサポートを有効にする一方で、サーバコンピューティングマシンに対しては、これらと同じ機能を無効にすることができる。
これらの情報は、ユーザ110が管理許可を得て行動するとき、あるいは、レジストリを変更する権限を不正に得たハッカーまたは悪質なソフトウェア102によって、変更される可能性がある。ハッカーおよび悪質なソフトウェア102は、レジストリ106を操作して、ライセンシング制約を破ろうとする場合があり、それによりレジストリ内の情報およびレジストリ設定を変更して、特定の消費者またはマーケティングチャネルに対しては意図されていなかった追加機能のロックを解除する可能性がある。1つの問題は、レジストリが変更されると、コンピューティングマシンが、動作を停止するか、または予測できない挙動を示す場合があることである。
別の問題は、実行ソフトウェア104の改ざんに関連する。ハッカーまたは悪質なソフトウェア102は、本来の実行ソフトウェア104を不正に破棄し、本来の実行ソフトウェア104に代えて、許可されていない、または禁止されたソフトウェアサービスに置き換える可能性がある。さらに、ハッカーまたは悪質なソフトウェア102は、ソフトウェア応答またはソフトウェアコールをエミュレートして、実行ソフトウェア104の稼動を改ざんする可能性もある。
偶発的な被害および意図的な危害の両方によるソフトウェア改ざんの問題を考えると、悪質なハッカーおよび悪質なソフトウェアが、ソフトウェアを脆弱にし得ることは驚くに当たらない。ソフトウェア改ざんの問題に対する解決策がなければ、ユーザは最終的に、コンピュータメーカが、許可されていない個人からのアクセスを防止しながら安全なコンピューティング体験を提供するとは、もはや信用しなくなるであろう。したがって、既存のシステムに関連する上記の問題を回避または軽減するとともに、ソフトウェアのセキュリティを確保するためのシステム、方法、およびコンピュータ読取り可能な媒体が必要とされる。
本発明によれば、ソフトウェア改ざんを抑止するためのシステム、方法、およびコンピュータ読取り可能な媒体が提供される。本発明のシステムの形態は、コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止するためのシステムを含む。このシステムは、許可されていないサービスの実行を抑止するための、難読化された保護ダイナミックリンクライブラリ(protection dynamic-link library)の保護関数(protection function)を呼び出す手段を備える。このシステムは、中央階層型データベースのキーおよび値を保護するための、難読化された保護ダイナミックリンクライブラリの別の保護関数を呼び出す手段をさらに備える。
本発明の別の態様によれば、本発明の方法の形態は、コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止するための方法を含む。この方法は、許可されていないサービスの実行を抑止するための、難読化された保護ダイナミックリンクライブラリの保護関数を呼び出すことを備える。この方法は、中央階層型データベースのキーおよび値を保護するための、難読化された保護ダイナミックリンクライブラリの別の保護関数を呼び出すことをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ読取り可能な媒体を含む。この方法は、許可されていないサービスの実行を抑止するための、難読化された保護ダイナミックリンクライブラリの保護関数を呼び出すことを備える。この方法は、中央階層型データベースのキーおよび値を保護するための、難読化された保護ダイナミックリンクライブラリの別の保護関数を呼び出すことをさらに備える。
本発明によれば、ソフトウェア改ざんを抑止するためのシステム、方法、およびコンピュータ読取り可能な媒体が提供される。本発明のコンピュータ読取り可能な媒体の形態は、情報のオリジナル性(originality)を検証するための、コンピューティングシステムによって使用されるコンピュータ実行可能命令と、1つまたは複数のデータ構造とを記憶したコンピュータ読取り可能な媒体を含む。このコンピュータ読取り可能な媒体は、保護ダイナミックリンクライブラリの秘密ライブラリキーを用いて暗号化されたプロファイルを備え、このプロファイルは、プロファイルデータを含む。プロファイルデータのサイズおよびフォーマットは、プロファイルタイプに依存する。このプロファイルは、保護ダイナミックリンクライブラリの公開ライブラリキーを用いてデジタル署名されたシグネチャをさらに含む。このプロファイルは、プロファイルを識別する識別子とプロファイルデータとのチェックサムが含まれるベリファイアブロブ(verifier blob)をさらに含む。
本発明の別の態様によれば、本発明の方法の形態は、ソフトウェア間の相互動作を保護するためのコンピュータで実施される方法を含む。このコンピュータで実施される方法は、公開呼び出しキー(public calling key)と秘密呼び出しキー(private calling key)とを有する第1のソフトウェアによって、中央階層型データベースに記憶されたプロファイルへのアクセスを開始することを備え、第1のソフトウェアは、ランダムなソルト値を送る。このコンピュータで実施される方法は、秘密ライブラリキーを有する第2のソフトウェアによって、ランダムなソルト値を受け取ることをさらに備える。次いで、第2のソフトウェアは、中央階層型データベース内でプロファイルを見つけ、秘密ライブラリキーを使用して、プロファイルを解読する。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、ソフトウェア間の相互動作を保護するためのコンピュータで実施される方法を含む。このコンピュータで実施される方法は、公開呼び出しキーと秘密呼び出しキーとを有する第1のソフトウェアによって、中央階層型データベースに記憶されたプロファイルへのアクセスを開始することを備え、第1のソフトウェアは、ランダムなソルト値を送る。このコンピュータで実施される方法は、秘密ライブラリキーを有する第2のソフトウェアによって、ランダムなソルト値を受け取ることをさらに備える。次いで、第2のソフトウェアは、中央階層型データベース内でプロファイルを見つけて、秘密ライブラリキーを使用して、プロファイルを解読する。
本発明の別の態様によれば、本発明のシステムの形態は、ソフトウェア間の相互動作を保護するためのシステムを含む。このシステムは、公開呼び出しキーと秘密呼び出しキーとを有する第1のソフトウェアによって、中央階層型データベースに記憶されたプロファイルへのアクセスを開始する手段を備え、第1のソフトウェアは、ランダムなソルト値を送る。このシステムは、秘密ライブラリキーを有する第2のソフトウェアによって、ランダムなソルト値を受け取る手段をさらに備える。次いで、第2のソフトウェアは、中央階層型データベース内でプロファイルを見つけて、秘密ライブラリキーを使用して、プロファイルを解読する手段を実行する。
本発明によれば、ソフトウェア改ざんを抑止するためのシステム、方法、およびコンピュータ読取り可能な媒体が提供される。本発明の方法の形態は、コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止するための方法を含む。この方法は、ソフトウェアが分類される製品クラスに対する保護が利用可能な場合に、難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードすることを備える。この方法は、コンピューティングマシン上で実行されるソフトウェアが、改ざんからの保護が利用可能である製品クラス内に依然として存在することを監視するための、システムタイマを生成することをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止するための方法を含む。この方法は、ソフトウェアが分類される製品クラスに対する保護が利用可能な場合に、難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードすることを備える。この方法は、コンピューティングマシン上で実行されるソフトウェアが、改ざんからの保護が利用可能である製品クラス内に依然として存在することを監視するための、システムタイマを生成することをさらに備える。
本発明の別の態様によれば、本発明の方法の形態は、コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止するための方法を含む。この方法は、コンピューティングマシン上で、難読化された保護ダイナミックリンクライブラリの保護関数を呼び出すことから、複数の実行スレッドを生成することを備える。複数のスレッドのうちの1つのスレッドは、許可されていないサービスの実行を抑止し、複数のスレッドのうちの他のスレッドは、中央階層型データベースのキーおよび値を保護する。この方法は、複数のスレッドが実行されていることを監視するためのタイマを生成することをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を含む。このコンピュータ読取り可能な媒体は、コンピューティングマシン上で、難読化された保護ダイナミックリンクライブラリの保護関数を呼び出すことから、複数の実行スレッドを生成することを備える。複数のスレッドのうちの1つのスレッドは、許可されていないサービスの実行を抑止し、複数のスレッドのうちの他のスレッドは、中央階層型データベースのキーおよび値を保護する。この方法は、複数のスレッドが実行されていることを監視するためのタイマを生成することをさらに備える。
本発明によれば、ソフトウェアを抑止するためのシステム、方法、およびコンピュータ読取り可能な媒体が提供される。本発明の方法の形態は、サービス改ざんを抑止するための方法を含む。この方法は、コンピューティングマシンの起動時に、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、許可されていないサービスの実行を抑止するスレッドを生成することを備える。この方法は、難読化された保護ダイナミックリンクライブラリと通信して、許可されていないサービスのリストに関連する暗号化された保護プロファイルにアクセスすることをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、サービス改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を含む。この方法は、コンピューティングマシンの起動時に、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、許可されていないサービスの実行を抑止するスレッドを生成することを備える。この方法は、難読化された保護ダイナミックリンクライブラリと通信して、許可されていないサービスのリストに関連する暗号化された保護プロファイルにアクセスすることをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ読取り可能な媒体を含む。この方法は、許可されていないサービスの実行を抑止するための、難読化された保護ダイナミックリンクライブラリの保護関数を呼び出すことを備える。この方法は、中央階層型データベースのキーおよび値を保護するための、難読化された保護ダイナミックリンクライブラリの別の保護関数を呼び出すことをさらに備える。
本発明によれば、ソフトウェア改ざんを抑止するためのシステム、方法、およびコンピュータ読取り可能な媒体が提供される。本発明のコンピュータ読取り可能な媒体の形態は、ソフトウェアをインストールするための、コンピューティングシステムによって使用されるコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を含む。このコンピュータ読取り可能な媒体は、改ざんがあるか否かについて中央階層型データベースを監視し、コンピューティングシステムに記憶されたファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止するコンピュータ実行可能命令を含む保護ダイナミックリンクライブラリを備える。
本発明の別の態様によれば、本発明の方法の形態は、ソフトウェアセットアップを保護するためのコンピュータで実施される方法を含む。この方法は、市販のソフトウェアパッケージのクラスに属するものとしてソフトウェアを識別するための製品識別子を生成することを備える。この方法は、ソフトウェアが、製品識別子に基づいて、ソフトウェア改ざんからの保護が利用可能である市販のソフトウェアパッケージのクラスに属する場合に、ソフトウェア改ざんを抑止するための保護ダイナミックリンクライブラリのインストールを容易にすることをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、ソフトウェアセットアップを保護するためのコンピュータで実施される方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を含む。この方法は、市販のソフトウェアパッケージのクラスに属するものとしてソフトウェアを識別するための製品識別子を生成することを備える。この方法は、ソフトウェアが、製品識別子に基づいて、ソフトウェア改ざんからの保護が利用可能である市販のソフトウェアパッケージのクラスに属する場合に、ソフトウェア改ざんを抑止するための保護ダイナミックリンクライブラリのインストールを容易にすることをさらに備える。
本発明の別の態様によれば、本発明のシステムの形態は、ソフトウェアセットアップを保護するためのシステムを含む。このシステムは、市販のソフトウェアパッケージのクラスに属するものとしてソフトウェアを識別するための製品識別子を生成する手段を備える。このシステムは、ソフトウェアが、製品識別子に基づいて、ソフトウェア改ざんからの保護が利用可能である市販のソフトウェアパッケージのクラスに属する場合に、ソフトウェア改ざんを抑止するための保護ダイナミックリンクライブラリのインストールを容易にする手段をさらに備える。
本発明によれば、ソフトウェア改ざんを抑止するためのシステム、方法、およびコンピュータ読取り可能な媒体が提供される。本発明のコンピュータ読取り可能な媒体の形態は、ソフトウェア改ざんから保護するための、コンピューティングシステムによって使用されるコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を含む。このコンピュータ読取り可能な媒体は、改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止する難読化されたコンピュータ実行可能命令を含む保護ダイナミックリンクライブラリを備える。
本発明の別の態様によれば、本発明の方法の形態は、ソフトウェア改ざんを抑止するための、コンピューティングシステムによって使用されるコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を作成するためのコンピュータで実施される方法を含む。この方法は、改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止する難読化された保護ダイナミックリンクライブラリを形成することを備える。難読化された保護ダイナミックリンクライブラリでは、クラス、メソッド、フィールド、および制御フローの名前が難読化されている。この方法は、難読化された保護ダイナミックリンクライブラリのチェックサムを含む、デジタル署名されたカタログファイルを生成することをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、ソフトウェア改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を含む。この方法は、改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止する難読化された保護ダイナミックリンクライブラリを形成することを備える。難読化された保護ダイナミックリンクライブラリでは、クラス、メソッド、フィールド、および制御フローの名前が難読化されている。この方法は、難読化された保護ダイナミックリンクライブラリのチェックサムを含む、デジタル署名されたカタログファイルを生成することをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、ソフトウェア改ざんを抑止するための、コンピューティングシステムによって使用されるコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を作成するためのシステムを含む。このシステムは、改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止する難読化された保護ダイナミックリンクライブラリを形成する手段を備える。難読化された保護ダイナミックリンクライブラリでは、クラス、メソッド、フィールド、および制御フローの名前が難読化されている。このシステムは、難読化された保護ダイナミックリンクライブラリのチェックサムを含む、デジタル署名されたカタログファイルを生成する手段をさらに備える。
本発明によれば、ソフトウェア改ざんを抑止するためのシステム、方法、およびコンピュータ読取り可能な媒体が提供される。本発明の方法の形態は、ソフトウェア改ざんを抑止する方法を含む。この方法は、難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードする前に、難読化された保護ダイナミックリンクライブラリの第1のチェックサムを計算することを備える。この方法は、ソフトウェア改ざんを抑止するためのセキュリティエラー対策を講じるべきか否かを判定するために、難読化された保護ダイナミックリンクライブラリのソフトウェアイメージのオリジナル性を検証することをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、ソフトウェア改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ読取り可能な媒体を含む。この方法は、難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードする前に、難読化された保護ダイナミックリンクライブラリの第1のチェックサムを計算することを備える。この方法は、ソフトウェア改ざんを抑止するためのセキュリティエラー対策を講じるべきか否かを判定するために、難読化された保護ダイナミックリンクライブラリのソフトウェアイメージのオリジナル性を検証することをさらに備える。
本発明の別の態様によれば、本発明のシステムの形態は、ソフトウェア改ざんを抑止するためのシステムを含む。このシステムは、難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードする前に、難読化された保護ダイナミックリンクライブラリの第1のチェックサムを計算する手段を備える。このシステムは、ソフトウェア改ざんを抑止するためのセキュリティエラー対策を講じるべきか否かを判定するために、難読化された保護ダイナミックリンクライブラリのソフトウェアイメージのオリジナル性を検証する手段をさらに備える。
本発明によれば、ソフトウェア改ざんを抑止するためのシステム、方法、およびコンピュータ読取り可能な媒体が提供される。本発明の方法の形態は、ソフトウェアに対してサポート可能なマシンのクラスにコンピューティングマシンが属するか否かを判定するためのコンピュータで実施される方法を含む。この方法は、コンピューティングマシンの中央処理装置のID(identification)を明らかにする、中央処理装置に対する命令セットが存在するかを検証することを備える。この方法は、中央処理装置が、自己識別(self identification)をサポートするアーキテクチャを有する場合に、難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードすることをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、ソフトウェアに対してサポート可能なマシンのクラスにコンピューティングマシンが属するか否かを判定する方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を含む。この方法は、コンピューティングマシンの中央処理装置のIDを明らかにする、中央処理装置に対する命令セットが存在するかを検証することを備える。この方法は、中央処理装置が、自己識別をサポートするアーキテクチャを有する場合に、難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードすることをさらに備える。
本発明によれば、ソフトウェア改ざんを抑止するためのシステム、方法、およびコンピュータ読取り可能な媒体が提供される。本発明の方法の形態は、ソフトウェア改ざんを抑止する方法を含む。この方法は、コンピューティングマシンの起動時に、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、システムに関連付けられた中央階層型データベースのキーおよび値を保護する第1のスレッドを生成することを備える。この方法は、ユーザがコンピューティングマシンにログオンしたときに、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、ユーザに関連付けられた中央階層型データベースのキーおよび値を保護する第2のスレッドを生成することをさらに備える。
本発明の別の態様によれば、本発明のコンピュータ読取り可能な媒体の形態は、ソフトウェア改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ読取り可能な媒体を含む。この方法は、コンピューティングマシンの起動時に、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、システムに関連付けられた中央階層型データベースのキーおよび値を保護する第1のスレッドを生成することを備える。この方法は、ユーザがコンピューティングマシンにログオンしたときに、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、ユーザに関連付けられた中央階層型データベースのキーおよび値を保護する第2のスレッドを生成することをさらに備える。
本発明の前述した態様、および多くの付随する利点は、添付の図面と共に以下の詳細な説明を参照することによって、よりよく理解されるとともに、より容易に認識されるであろう。
強力ではあるが脆弱であることは、ソフトウェアの相反する性質(dichotomy)である。本発明の様々な実施形態により、ソフトウェアの改ざんが抑止される。一実施形態は、ハッカーが、ソフトウェアイメージを構成するソフトウェア群をリバースエンジニアリングする際、ハッカーを混乱させるために、ソフトウェアイメージを難読化するものである。別の実施形態は、これらのソフトウェア群が互いに、改ざんからの保護を必要とするソフトウェアパッケージを構成するか否かを検証するものである。さらに別の実施形態は、コンピューティングマシン上の中央処理装置やキャッシュメモリなどのハードウェアリソースが、ソフトウェア改ざんを抑止することが可能なクラスに属するか否かを判定するものである。さらに別の実施形態は、コンピューティングマシン上の何らかの重大な(critical)ファイルが改ざんされたか否かをチェックすることを含む。さらに別の実施形態は、レジストリが改ざんされたか否かを判定することを含む。他のいくつかの実施形態は、実行されているソフトウェアサービスが改ざんされたか否かを判定することを含む。
図2は、ソフトウェアコンポーネント200を示している。ソフトウェアコンポーネント200は、製品識別子(PID)ダイナミックリンクライブラリ200A、セットアップソフトウェア200B、およびセットアップ情報ファイル200Cを含む。セットアップソフトウェアコンポーネント200は、改ざんを抑止するためのソフトウェアをコンピュータシステムにインストールすることができるか否かを判定することを担う。このソフトウェアは、システムソフトウェア(オペレーティングシステム)、アプリケーションソフトウェア、およびネットワークソフトウェアなどの、任意の適切なソフトウェア群を含む。製品識別子ダイナミックリンクライブラリ200Aは、ファイルとは別に記憶された実行可能ルーチンのクラスに属する。このルーチンは、「DLL」などの特定の拡張子を有し、プログラムによって必要とされるときにだけロードされる。このダイナミックリンクライブラリは、Microsoft(登録商標) Windows(登録商標)ファミリのオペレーティングシステム、およびOS/2の機能として、適切に見つけることができる。ダイナミックリンクライブラリは、いくつかの特徴を有する。第1に、ダイナミックリンクライブラリは通常、使用されるまでメモリをまったく消費しない。第2に、各ダイナミックリンクライブラリは別個のファイルなので、プログラマは、呼び出し元プログラム、または他の任意のダイナミックリンクライブラリの動作に影響を与えることなく、そのモジュールだけを修正または改良することができる。最後に、プログラマは、同じダイナミックリンクライブラリを、他のプログラムと共に使用することができる。
セットアップ情報ファイル200Cは、テキストベースのファイルのクラスに属し、インストール中にセットアップソフトウェア200Bなどのセットアップアプリケーションによって使用される情報を含む。他のセットアップ情報ファイル(保護情報ファイル202Aなど)と比べて特にセットアップ情報ファイル200Cは、通常、セットアップソフトウェア200Bなどのセットアップアプリケーションがオーサリングされる前に生成される。情報ファイルに記憶することができる情報の例には、レジストリ変更、ファイル名、および、ソース媒体上におけるソースファイルの位置が含まれる。セットアップ情報ファイル200C、および保護情報ファイル202Aはまた、秘密セクション(private section)を含むこともできる。これらの秘密セクションは、セットアップソフトウェア200Bによって異なる。これらの秘密セクションを使用して、セットアップソフトウェア200Bなどの特定のセットアップアプリケーションがソフトウェア改ざんを抑止するソフトウェアをインストールするために使用する、特殊な情報を記憶することができる。
セットアップソフトウェア200Bはプログラムであり、その機能は、システムソフトウェア、アプリケーションソフトウェア、またはネットワークソフトウェアなどの別のプログラムを、記憶媒体またはメモリにインストールすることである。セットアップソフトウェア200Bを使用して、マシン、プリンタ、モニタ、およびネットワークの特定の組合せに関するアプリケーションの、しばしば複雑となり得るセットアッププロセス中に、ユーザを誘導することができる。製品識別子ダイナミックリンクライブラリ200Aは、一意な製品識別子を生成して、生成した製品識別子204Aをレジストリ204に記憶する。レジストリ204については後述する。セットアップ情報ファイル200Cは、ソフトウェア改ざんを抑止するソフトウェアをインストールするために、インストールダイナミックリンクライブラリ202Bを準備する。インストールコンポーネント202は、保護情報ファイル202Aおよびインストールダイナミックリンクライブラリ202Bを含む。保護情報ファイル202Aは、ソフトウェア改ざんを抑止するソフトウェアをインストールするための様々な情報を含む。これらの情報には、レジストリ変更、ファイル名、ソースファイルの位置などがある。加えて、保護情報ファイル202Aは、システムファイル206Bと、市販のソフトウェアパッケージに特有の様々なソフトウェアコンポーネントとをインストールするための情報も含む。
ソフトウェアコンポーネント202に含まれるインストールダイナミックリンクライブラリ202Bは、保護ダイナミックリンクライブラリ206Aなどの、実際のソフトウェア改ざんを抑止するソフトウェアをインストールする。保護ダイナミックリンクライブラリ206Aは、特定の市場セグメントに特有であって、その特定の市場セグメントに適したコンテンツまたは言語を提供することができる。インストールダイナミックリンクライブラリ202Bはまた、アクティベーションキー(activation key)204Cを設定して、それにより、保護ダイナミックリンクライブラリ206Aに組み入れられた改ざんを抑止するソフトウェアが、インストールが安全なインストールであることを素早く識別できるようにする。さらに、インストールダイナミックリンクライブラリ202Bはまた、ハードウェアおよび/または言語に関連する情報が特に含まれるいくつかの暗号化された保護プロファイルと、様々なシステムファイル206Bとをインストールし、それにより、何かが改ざんされたか否かを判定できるようにする。
ランタイムコンポーネント206は、システムファイル206Bと共に、ソフトウェア改ざんを抑止するソフトウェアを組み入れた保護ダイナミックリンクライブラリ206Aを含む。システムファイル206Bは、ヘルプファイルと、言語などの市場に特有のコンテンツファイルとを含む。
中央階層型データベース204は、製品識別子204A、アクティベーションキー204C、および暗号化された保護プロファイル204Dを含む。中央階層型データベース204は、1人または複数のユーザ、1つまたは複数のアプリケーション、および、1つまたは複数のハードウェアデバイスを対象とするシステムを構成するために必要な情報を記憶するのに使用される。中央階層型データベース204は、オペレーティングシステムが動作中に頻繁に参照する情報を含む。その情報には、各ユーザに関するプロファイル、コンピュータにインストールされたアプリケーション、および、それぞれが作成することのできる文書のタイプ;フォルダおよびアプリケーションアイコンに関するプロパティシート設定;どんなハードウェアがシステム上に存在するか;および、どのポートが使用されているか、などがある。加えて、中央階層型データベース204を使用して、前述したように、ソフトウェア改ざんの抑止を助ける情報を記憶することもできる。1つの適切な情報は、チェックサムを含む。チェックサムは、ハッカーがファイルを変更したときなどに、改ざんがあるか否かについて、データをテストするのに使用される計算値である。チェックサムは、所与のデータチャンクに対して、一連の算術演算または論理演算を用いてすべてのデータバイトを順次結合することによって計算されることが好ましい。ソフトウェア改ざんが検証または妥当性検査されている期間中に、記憶されたデータを使用して、新たなチェックサムを同じ方法で計算することができる。2つのチェックサムが一致しない場合は、ソフトウェア改ざんが行われた可能性があり、改ざんを修復するか、または、コンピューティングマシンをシャットダウンするために、適切なステップをとることができる。
図3Aは、保護ダイナミックリンクライブラリ306Aに組み入れられたソフトウェア改ざんを抑止するソフトウェアの実行を示している。図3Aの様々な要素は、図2の様々な要素と同様であり、簡潔にするために、これらについてはさらに論じない。ログオンコンポーネント308はログオンモジュール308Aを含む。コンピュータシステムの起動時、ログオンモジュール308Aは、製品識別子304Aに応じて、保護ダイナミックリンクライブラリ306Aをロードしようとする。適切な製品識別子が中央階層型データベース304内に存在する場合、保護ダイナミックリンクライブラリ306Aが、ログオンモジュール308Aによってロードされる。ログオンモジュール308Aは、コンピューティングマシン上のシステムソフトウェアへのアクセスをユーザに許可する前に、ユーザ名およびパスワードを受け取って、この情報を妥当性検査するソフトウェアであることが好ましい。
保護ダイナミックリンクライブラリ306Aは、コンピュータシステムのソフトウェアが実行されている間、様々な暗号化された保護プロファイル304Dを読み取ることによって、様々なシステムファイル306Bが改ざんされていないかを検証する。加えて、保護ダイナミックリンクライブラリ306Aは、キーおよびキーに関連付けられた値の様々な設定を検証して、これらが改ざんされたか否かを判定する。保護ダイナミックリンクライブラリ306Aはまず、レジストリをチェックするため、ならびに、コンピュータシステム上で実行することが許可されているサービスをチェックするために、タイマを生成する。システムが改ざんされていた場合、保護ダイナミックリンクライブラリ306Aは、改ざんに対処する適切な方法の中でも特に、改ざんの修復を試みるか、あるいはコンピューティングマシンのシャットダウンを開始することが好ましい。
例えば、保護ダイナミックリンクライブラリ306Aは、中央階層型データベース304を監視し、改ざんがあった場合は、キーおよびキーに関連付けられた値をリセットする。保護ダイナミックリンクライブラリ306Aはまた、様々なシステムファイル306Bなどの重大なファイルを、暗号化された保護プロファイル304Dおよび保護ダイナミックリンクライブラリ306Aに含まれる情報と照合して、改ざんがあったか否かを判定する。さらに、保護ダイナミックリンクライブラリ306Aは、コンピュータシステム上で実行されるソフトウェアサービスが確実に許可されているものであるようチェックして、許可されていないソフトウェアサービスを取り除く。
図3Bは、ログオンモジュール308Aなどのソフトウェアからアクセス可能な暗号化された保護プロファイル304Dを示している。ログオンモジュール308Aは、保護ダイナミックリンクライブラリ306Bと通信して、暗号化された保護プロファイル304Dにアクセスする。ログオンモジュール308Aと保護ダイナミックリンクライブラリ306Bとの間の相互動作は、ソフトウェア間で情報の通信または転送を安全に行えることが可能となる適切なプロトコルを介することが好ましい。
1つの適切なプロトコルは、ランダムなソルト値の送信を含む。このソルト値は、ログオンモジュール308Aから保護ダイナミックリンクライブラリ306Bに送られる数字、英字、または英数字情報のストリングを含むことができる。保護ダイナミックリンクライブラリ306Bは、公開ライブラリキーと秘密ライブラリキーという2つのキーを有することが好ましい。暗号化およびデジタル署名において、これらのキーは、送信または受信される情報を暗号化または解読するのに使用されるビットのストリングを含む。暗号化は一般に、複数の人が知っている公開キーと、1人だけしか知らない秘密キーという、異なる2つのタイプのキーに依拠する。
保護ダイナミックリンクライブラリ306Bは、秘密ライブラリキーを使用して、プロファイル312〜316などのプロファイルを解読する。各プロファイルは、様々な情報を記憶することができる不定形のデータ構造であるブロブ(blob)と呼ばれるデータ構造として適切に構成される。プロファイル312〜316のブロブは、保護ダイナミックリンクライブラリ306Bの秘密ライブラリキーを使用して暗号化されることが好ましい。プロファイル312にはブロブ1が含まれる。ブロブ1は、保護ダイナミックリンクライブラリ306Bの秘密ライブラリキーを用いて暗号化されている。ブロブ1にはプロファイルデータ1 312Aが含まれる。プロファイルデータ1 312Aのサイズおよびフォーマットは、ハードウェアプロファイルや言語プロファイルなどのプロファイルタイプに依存する。ブロブ1にはシグネチャ1 312Bも含まれる。シグネチャ1 312Bは、保護ダイナミックリンクライブラリ306Bの公開ライブラリキーを用いてデジタル署名された、プロファイルデータ1 312Aのチェックサムを含む。ブロブ1にはベリファイアブロブ1 312Cも含まれる。ベリファイブロブ1 312Cは、ログオンモジュール308Aの公開呼び出しキーを用いてデジタル署名されるとともに、ログオンモジュール308Aの秘密呼び出しキーを用いて暗号化もされた、プロファイル312の識別子と、プロファイルデータ1 312Aとのチェックサムである。
プロファイル314はブロブ2として構成され、ブロブ2にはベリファイアブロブ2 314Aが含まれる。ベリファイアブロブ2 314Aは、ログオンモジュール308Aの秘密呼び出しキーを用いてデジタル署名されるとともに、ログオンモジュール308Aの秘密呼び出しキーを用いて暗号化もされた、プロファイル314の識別子と、プロファイルデータ2 314Bによって記述されるデータとのチェックサムである。ブロブ2にはプロファイルデータ2 314Bが含まれる。プロファイルデータ2 314Bのサイズおよびフォーマットは、ハードウェアプロファイルや言語プロファイルなどのプロファイルタイプに依存する。ブロブ2にはシグネチャ2 314Cも含まれる。シグネチャ2 314Cは、保護ダイナミックリンクライブラリ306Bの公開ライブラリキーを用いてデジタル署名された、プロファイルデータ2 314Bのチェックサムである。
プロファイル316はブロブ3として構成される。ブロブ3にはシグネチャ3 316Aが含まれる。シグネチャ3 316Aは、保護ダイナミックリンクライブラリ306Bの公開ライブラリキーを用いてデジタル署名された、プロファイルデータ3 316Cのチェックサムである。ブロブ3にはベリファイアブロブ3 316Bが含まれる。ベリファイアブロブ3 316Bは、ログオンモジュール308Aの公開呼び出しキーを用いてデジタル署名されるとともに、ログオンモジュール308Aの秘密呼び出しキーを用いて暗号化もされた、プロファイル316の識別子と、プロファイルデータ3 316Cとのチェックサムである。ブロブ3にはプロファイルデータ3 316Cが含まれる。プロファイルデータ3 316Cのサイズおよびフォーマットは、ハードウェアプロファイルや言語プロファイルなどのプロファイルタイプに依存する。プロファイル312〜316の各ブロブ1〜3では、プロファイルデータ1〜3、シグネチャ1〜3、およびベリファイア1〜3などの様々な名前付き構造は、各ブロブ1〜3または各プロファイル312〜316内で配置が異なっていることに留意されたい。これらの異なる配置は、レジストリ304に含まれるプロファイルデータの改ざんを抑止する助けとなる。配置情報を含むヘッダがブロブ1〜3内に存在し、それにより、名前付き構造が各ブロブ1〜3内のどこに位置するかを判定することができる。
保護ダイナミックリンクライブラリ306Bは、自身の秘密ライブラリキーを使用してプロファイルまたはブロブを解読することによって、所望のプロファイルを見つけると、プロファイルをログオンモジュール308Aに返す。保護ダイナミックリンクライブラリ306Bは、ログオンモジュール308Aにそのデータを返す前に、見つかったプロファイルの識別子およびプロファイルデータからチェックサムを計算する。このチェックサムは、プロファイルと、ログオンモジュール308Aから元々送られたランダムなソルト値とを比較した結果を含む。ソルト値は本質的に、ハッカーが単純に保護ダイナミックリンクライブラリ306Aをエミュレートして、誤ったプロファイルをログオンモジュール308Aに返すことができないようにするものである。
チェックサムの計算を行うと、保護ダイナミックリンクライブラリ306Bは、本質的に様々な情報(例えば、成功、失敗、および、成功または失敗を詳述するフラグ)を含む結果データ構造である結果と、見つかったプロファイルのベリファイアブロブと、プロファイルの識別子、そのデータ、結果、およびランダムなソルト値から算出した計算したチェックサムとを、ログオンモジュール308Aに返す。ログオンモジュール308Aは、保護ダイナミックリンクライブラリ306Bから返された結果を検証する。ログオンモジュール308Aは、自身の秘密呼び出しキーを使用してベリファイアブロブを解読し、プロファイルの識別子とプロファイルのデータとのチェックサムを得る。加えて、ログオンモジュール308Aは、自身の公開呼び出しキーを使用して、ベリファイアブロブのシグネチャを検証する。さらに、ログオンモジュール308Aは、解読したベリファイアブロブチェックサム、DLLの結果、および、保護ダイナミックリンクライブラリ306Aに元々送られたランダムなソルト値から、チェックサムを計算する。ログオンモジュール308Aは、計算したチェックサムが、保護ダイナミックリンクライブラリ306Bから返されたチェックサムと一致するか否かを判定するテストを実行する。チェックサムが一致しない場合、ログオンモジュール308Aは、システムが改ざんされたと結論を下す。
図4A〜4Zは、ソフトウェア改ざんを抑止する方法400を示している。わかりやすくするために、方法400に関する以下の説明では、図2のソフトウェアコンポーネント200、202、204、および206に関連して示した様々な要素と、図3A〜3Bのログオンモジュール308Aおよび保護ダイナミックリンクライブラリ306Bとを参照する。方法400は、開始ブロックから、継続端(「端A」)と出口端(「端B」)との間に定義された方法ステップのセット402に進む。方法ステップのセット402は、ソフトウェア改ざんを抑止するための、ソフトウェアの難読化を記述している。
方法400は、端A(図4C)から、ブロック414に進み、ブロック414で、ソフトウェア改ざんを抑止するソフトウェアを組み入れた保護ダイナミックリンクライブラリのソースコードが生成される。ソースコードはコンパイルされてリンクされ、保護ダイナミックリンクライブラリ(DLL)が生成される(ブロック416を参照)。次いで、ブロック418で、クラス、メソッド、およびフィールドの名前を含む難読化制御ファイルが生成される。次いで、方法400はブロック420に進み、ブロック420で、保護DLLおよび難読化制御ファイルを入力として使用して、難読化プロセスが実行される。クラス、メソッド、フィールド、および制御フローの名前が難読化された、難読化されたDLLが生成される(ブロック422を参照)。この難読化プロセスにより、保護ダイナミックリンクライブラリは、リバースエンジニアリングしようとするハッカーによってデバッグされにくいものとなる。難読化の例として、ジャンプ命令を保護ダイナミックリンクライブラリに挿入すること、または、プログラム命令を並べ替えることが挙げられる。
前述した難読化プロセスは、ソフトウェアを不正目的でリバースエンジニアリングしようとするデコンパイラを失敗させるために、ソフトウェアのアセンブリにおいてシンボルのリネームを可能にする、多くの適した技法のうちの1つである。難読化プロセスは、アプリケーションが損なわれないようにしながら、不正なデコンパイルに対する保護を増大させることができる。難読化の目標は混乱であり、これは、ソフトウェアの多面的な知的概念を理解しようとするハッカーの心理に負担をかける。難読化プロセスは、人間であるインタープリタ、すなわちハッカーを混乱させるだけでなく、論理の確実性に依存するデコンパイラをも役に立たなくさせる(break)可能性が高い。難読化プロセスは、無数のデコンパイルの可能性を生成するが、これらの一部は誤った論理につながり、したがって変換における不確実性をもたらす。
方法400は、端A1(図4D)から、ブロック426に進み、ブロック426で、この方法により、難読化された保護DLLのチェックサムが計算される。次いで、カタログファイルが生成される(ブロック428を参照)。カタログファイルの適切な一実装例は、データベースである。カタログファイルは、各ソフトウェアコンポーネントの名前、そのバージョン、および、そのシグネチャ(例えば、チェックサム)を含む。次いで、ブロック430で、難読化された保護DLLのチェックサムが、カタログファイルに配置される。次いで、方法400はブロック432に進み、ブロック432で、この方法により、難読化されたDLLのチェックサムを含むカタログファイルのチェックサムが計算される。カタログファイルのチェックサムもまた、秘密キーを用いて暗号化される(ブロック434を参照)。言い換えれば、カタログファイルは、秘密キーを用いてデジタル署名される。この時点で、方法400により、検証することのできる難読化された保護DLLおよびカタログファイルが生成される。検証は、難読化された保護DLLが、特定のソフトウェアメーカなどの既知のソースから生じたものであるかどうか、および、難読化された保護DLLが改ざんされていないかどうかを確認する助けとなる。次いで、方法400は出口端Bに進む。
方法400は、端B(図4A)から、継続端(「端C」)と出口端(「端D」)との間に定義された方法ステップのセット404に進む。方法ステップのセット404は、ソフトウェア改ざんを抑止するソフトウェアを組み入れた保護ダイナミックリンクライブラリを、コンピューティングマシン上でセットアップすることを記述している。
方法400は、端C(図4E)から、ブロック438に進み、ブロック438で、この方法により、ソフトウェアの製品識別子が得られ、ソフトウェアの製品識別子が、レジストリなどの中央階層型データベースに記憶される。製品識別子は、ユーザから提供される。ユーザは、ソフトウェアの包装に通常は添えられているキーから、製品識別子を得ることができる。この方法により、製品識別子が復号され、ソフトウェアが分類されるクラスが識別される(ブロック440を参照)。ソフトウェアは、システムソフトウェア、アプリケーションソフトウェア、またはネットワークソフトウェアなど、任意の適切なソフトウェア群を含むことができる。次いで、判定ブロック442で、識別されたクラスに対して、保護が利用可能か否かを判定するテストが行われる。判定がNOである場合、方法400は別の継続端(「端L」)に進み、実行を終了する。一方、判定ブロック442におけるテストの判定がYESである場合、方法400はブロック444に進み、ブロック444で、インストールダイナミックリンクライブラリが呼び出される。インストールダイナミックリンクライブラリは、製品識別子に基づいて、アクティベーションキーを、レジストリなどの中央階層型データベースにインストールする(ブロック446を参照)。アクティベーションキーにより、コンピューティングマシンは、時間がかかる可能性のある製品識別子の復号を行わずに、ソフトウェア改ざんを抑止するソフトウェアがコンピューティングマシン上で実行されているか否かを素早くチェックして判定することができる。
端C1(図4F)から、インストールダイナミックリンクライブラリは、暗号化された保護プロファイルを、レジストリなどの中央階層型データベースにインストールする。コンピューティングマシンの起動時に、システムソフトウェアなどのソフトウェアのログオンモジュールが実行される(ブロック450を参照)。次いで、ブロック452で、ログオンモジュールは、レジストリなどの中央階層型データベースに記憶された製品識別子を復号し、ソフトウェアが分類される製品クラスを得る。方法400は判定ブロック454に進み、判定ブロック454で、識別された製品クラスに対して、保護が利用可能か否かを判定するテストが行われる。判定ブロック454におけるテストの判定がNOである場合、方法400は端Lに進み、実行を終了する。一方、判定ブロック454におけるテストの判定がYESである場合、ログオンモジュール308Aは、難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードすることを試みる(ブロック456を参照)。方法400は別の継続端(「端C2」)に進む。
方法400は、端C2(図4G)から、ブロック458に進み、ブロック458で、この方法により、インストールされることになる保護ダイナミックリンクライブラリのチェックサムが計算される。以下、簡潔にするために、難読化された保護ダイナミックリンクライブラリを保護ダイナミックリンクライブラリとも呼ぶことに留意されたい。この方法により、システムファイルに含まれるカタログファイルのリストが得られる(ブロック460を参照)。次いで、ブロック462で、この方法により、リストからカタログファイルが選択され、カタログファイルに含まれるチェックサムが検索される。シグネチャの解読および検証が行われる。方法400は判定ブロック464に進み、判定ブロック464で、2つのチェックサムが一致するか否かを判定するテストが行われる。判定ブロック464におけるテストの判定がNOである場合、方法400は別の継続端(「端C3」)に進む。一方、判定ブロック464におけるテストの判定がYESである場合、方法400は別の継続端(「端C4」)に進む。図4Gに関連して説明した処理ステップは、難読化された保護ダイナミックリンクライブラリのソフトウェアイメージを検証して、ソフトウェアイメージのオリジナル性(すなわち、ソフトウェアイメージが所望のソフトウェアメーカによって元々出荷または配布されたものか否か)を判定するためのプロセスを記述している。改ざんが行われた場合、検証プロセスは、ロードされることになる難読化された保護ダイナミックリンクライブラリのソフトウェアイメージが改ざんされたことを示し、コンピューティングマシンをシャットダウンするなどのセキュリティエラー対策を講じなければならない場合がある。
方法400は、端C3(図4H)から、判定ブロック466に進み、判定ブロック466で、検索すべきカタログファイルが他にあるか否かを判定するテストが行われる。判定ブロック466におけるテストの判定がYESである場合、方法400は別の継続端(「端C5」)に進む。端C5(図4G)から、方法400はブロック462にループバックし、前述した処理ステップが繰り返される。一方、判定ブロック466におけるテストの判定がNOである場合、方法400はブロック468に進む。この場合、インストールされることになる保護ダイナミックリンクライブラリは、カタログファイルに含まれていたオリジナルではなく、これは、保護ダイナミックリンクライブラリが改ざんされたおそれがあることを示す。次いで、方法400は別の継続端(「端C7」)に進む。方法400は、端C4(図4H)から、判定ブロック470に進み、判定ブロック470で、保護ダイナミックリンクライブラリ、および信用できるカタログファイルがあるか否かを判定するテストが行われる。判定ブロック470におけるテストの判定がNOである場合、方法400は端C5に進み、ブロック462にループバックして、前述した処理ステップが繰り返される。判定ブロック470で説明したテストの適切な一実装例は、Microsoft(登録商標) Windows(登録商標)から提供される信用チェック用(trust-checking)アプリケーションプログラミングインターフェースのセットである。一方、判定ブロック470におけるテストの判定がYESである場合、方法400は別の継続端(「端C6」)に進む。
方法400は、端C6(図4I)から、ブロック472に進み、ブロック472で、この方法により、信用チェック用アプリケーションプログラミングインターフェースのセットを呼び出すことによって、見つかったカタログファイルが検証され、状態データが、戻り値として得られる。この方法により、信用チェック用アプリケーションプログラミングインターフェースのセットを介して得られた状態データを使用して、信用できるプロバイダ情報(trust provider information)が得られる(ブロック474を参照)。次いで、ブロック476で、この方法により、得られた信用できるプロバイダ情報を使用して、証明書チェーン(certificate chain)からベースサイナ(base signer)が得られる。方法400はブロック478に進み、ブロック478で、この方法により、ベースサイナのコンテキストを使用して、証明書チェーンの最後の要素が妥当性検査される。最後の要素が正しい公開キーを含んでいたか否かを判定するテストが行われる(判定ブロック480を参照)。判定ブロック480におけるテストの判定がYESである場合、方法400は端C7に進む。一方、判定ブロック480におけるテストの判定がNOである場合、方法400は端C5に進み、ブロック462にループバックして、前述した処理ステップが繰り返される。
方法400は、端C7(図4J)から、判定ブロック482に進み、判定ブロック482で、保護ダイナミックリンクライブラリがうまくロードされたか否かを判定するテストが行われる。判定ブロック482におけるテストの判定がNOである場合、この方法により、システムのシャットダウンが開始される(ブロック484を参照)。方法400は端Lに進み、実行を終了する。一方、判定ブロック482におけるテストの判定がYESである場合、方法400はブロック486に進み、ブロック486で、この方法により、無期限のスレッド内で実行される第1のタイマが生成される。次いで、方法400は、継続端(「端C8」)および出口端Dにより表される2つの実行パスに進む。図4Jにおけるこの実行パスの分岐は、コンピューティングマシン上で実行される複数のソフトウェアの同時性を示すものである。
方法400は、端C8(図4K)から、判定ブロック488に進み、判定ブロック488で、予め設定された期間が過ぎたか否かを判定するテストが行われる。判定がNOである場合、方法400は判定ブロック488にループバックし、前述した処理ステップが繰り返される。判定ブロック488におけるテストの判定がYESである場合、方法400はブロック490に進み、ブロック490で、この方法により、レジストリなどの中央階層型データベースに記憶されたアクティベーションキーがチェックされて、製品クラスが復号される。復号された製品クラスに対する利用可能な保護があるか否かを判定する別のテストが行われる(判定ブロック492を参照)。判定ブロック492におけるテストの判定がYESである場合、方法400は端C8にループバックし、前述した処理ステップが繰り返される。一方、判定ブロック492におけるテストの判定がNOである場合、コアアプリケーションプログラミングインターフェースが改ざんされており、この方法により、コンピューティングマシンをシャットダウンするなどのセキュリティ対策が講じられる(ブロック494を参照)。次いで、方法400は端Lに進み、実行を終了する。
方法400は、端D(図4A)から、継続端(「端E」)と出口端(「端F」)との間に定義された方法ステップのセット406に進む。方法ステップのセット406は、コンピューティングマシンが、サポート可能なマシンのクラスに属するか否かを判定する。
方法400は、端E(図4L)から、ブロック496に進み、ブロック496で、この方法により、そのコンピューティングマシンの中央処理装置のIDを得るための、中央処理装置に対する命令セットが存在するかが検証される。命令セットが利用可能か否かを判定するテストが行われる(判定ブロック498を参照)。判定ブロック498におけるテストの判定がNOである場合、コンピューティングマシンの中央処理装置は、自己識別をサポートしないアーキテクチャを有する(ブロック499を参照)。1つの適切な結論は、この中央処理装置が、ソフトウェア改ざんを抑止するソフトウェアをサポートできるということである。次いで、方法400は出口端Fに進む。一方、判定ブロック498におけるテストの判定がYESである場合、ログオンモジュールは、保護ダイナミックリンクライブラリと通信して、除外される中央処理装置クラスに関連する暗号化された保護プロファイルにアクセスする(ブロック497を参照)。言い換えれば、コンピューティングマシンが動作の際に使用する様々なパラメータを記述している、コンピューティングマシンにインストールされたファイルが存在する。例えば、言語ファイルは、オペレーティングシステムがユーザに情報を提示する際に使用する言語を記述している。別の例として、ハードウェアファイルは、オペレーティングシステムがサポートするコンピューティングマシン群を記述している。問題は、ハッカーまたは悪質なソフトウェアによってファイルが容易に改ざんされるおそれがあることである。暗号化された保護プロファイルには、コンピューティングマシンにインストールされたオリジナルのファイルを示すチェックサムが含まれる。オリジナルのファイルが改ざんされた場合、改ざんされたファイルのチェックサムと、暗号化された保護プロファイルに記憶されたチェックサムとは一致しないことになり、このことは、オリジナルのファイルが改ざんされたことを示す。例えば、ハッカーがハードウェアファイルを変更して、オペレーティングシステムを欺いてサポートできないコンピューティングマシンをサポートさせようとした場合、変更されたハードウェアファイルのチェックサムは、暗号化された保護プロファイルに記憶されたチェックサムとは異なる可能性が高く、したがって改ざんの判定が可能となる。図4Lに戻ると、ログオンモジュールは、セキュリティを高めるのに使用されるランダムなソルト値を保護ダイナミックリンクライブラリに送る(ブロック495を参照)。ランダムなソルト値により、ハッカーが、関数呼び出し、またはコールを無効にする(defeat)こと、または妨害(intercept)することが困難になる。後述するように、ランダムなソルト値は、ランダムなソルト値と、保護ダイナミックリンクライブラリから送られたデータとに基づくチェックサムの計算において使用される。このチェックサムが、保護ダイナミックリンクライブラリによって計算されたチェックサムと照合されて、改ざんが行われたか否かが判定される。次いで、方法400は別の継続端(「端E1」)に進む。
方法400は、端E1(図4M)から、ブロック493に進み、ブロック493で、保護ダイナミックリンクライブラリは、秘密ライブラリキーを使用して、暗号化された保護プロファイル(「プロファイル」)を解読する。保護ダイナミックリンクライブラリは、プロファイルをシステムと比較する(ブロック491を参照)。次いで、判定ブロック489で、プロファイルが見つかったか否かを判定するテストが行われる。各プロファイルは、好ましくは複数ビット(例えば、64ビット)である名前を有する。判定ブロック489におけるテストの判定がNOである場合、方法400はブロック493にループバックし、前述した処理ステップが繰り返される。一方、判定ブロック489におけるテストの判定がYESである場合、方法400はブロック487に進み、ブロック487で、保護ダイナミックリンクライブラリは、プロファイルのID、そのデータ、比較結果、およびソルト値に対して、チェックサムを計算する。保護ダイナミックリンクライブラリは、結果データ構造、プロファイルのベリファイアブロブ、および計算したチェックサムを返す(ブロック485を参照)。次いで、方法400は別の継続端(「端E2」)に進む。
方法400は、端E2(図4N)から、ブロック483に進み、ブロック483で、ログオンモジュールは、秘密呼び出しキーを使用して、ベリファイアブロブを解読し、ベリファイアチェックサムを得る。ログオンモジュールは、公開呼び出しキーを使用して、チェックサムのシグネチャを妥当性検査する(ブロック481を参照)。次いで、ブロック479で、ログオンモジュールは、解読したベリファイアチェックサム、受け取った結果データ構造、およびソルト値から、チェックサムを計算する。方法400はブロック477に進み、ブロック477で、この方法により、ログオンモジュールおよび保護ダイナミックリンクライブラリによって計算されたチェックサムが比較される。これらのチェックサムが一致するか否かを判定するテストが行われる(判定ブロック475を参照)。判定ブロック475におけるテストの判定がNOである場合、方法400は端Lに進み、実行を終了する。一方、判定ブロック475におけるテストの判定がYESである場合、方法400は別の継続端(「端E3」)に進む。
方法400は、端E3(図4O)から、ブロック473に進み、ブロック473で、この方法により、プロファイルから、除外されるコンピューティングマシンクラスのリストが抽出される。次いで、この方法により、コンピューティングマシンは、CPU情報(例えば、ベンダID、タイプ、ファミリ、モデル番号、ブランドID、特徴セット(feature set))を確認する(ブロック471を参照)。次いで、判定ブロック469で、ベンダIDが、除外されるリストに存在するか否かを判定するテストが行われる。判定ブロック469におけるテストの判定がNOである場合、方法400は端Fに進む。一方、テストの判定がYESである場合、方法400は別の継続端(「端E4」)に進む。
方法400は、端E4(図4P)から、判定ブロック467に進み、判定ブロック467で、タイプ、ファミリ、およびモデル番号が、除外されるリストに存在するか否かを判定するテストが行われる。判定ブロック467におけるテストの判定がYESである場合、方法400は別の継続端(「端E7」)に進む。一方、判定ブロック467におけるテストの判定がNOである場合、方法400は別の判定ブロック465に進み、判定ブロック465で、ブランドIDおよび特徴セットが、除外されるリストに存在するか否かを判定するテストが行われる。判定ブロック465におけるテストの判定がYESである場合、方法400は端E7に進む。一方、判定ブロック465におけるテストの判定がNOである場合、方法400は別の継続端(「端E5」)に進む。
方法400は、端E5(図4Q)から、判定ブロック463に進み、判定ブロック463で、コンピューティングマシンのCPUすなわち中央処理装置のIDを判定する拡張命令が存在するか否かを判定するテストが行われる。判定ブロック463におけるテストの判定がNOである場合、方法400は端Fに進む。一方、判定ブロック463におけるテストの判定がYESである場合、この方法により、コンピューティングマシンのCPUすなわち中央処理装置の名前を得るための拡張命令が呼び出される(ブロック461を参照)。次いで、ブロック459で、この方法により、中央処理装置のキャッシュサイズを得るための拡張命令が呼び出される。方法400は別の継続端(「端E6」)に進む。
方法400は、端E6(図4R)から、判定ブロック457に進み、判定ブロック457で、中央処理装置の名前が、除外されるリストに存在するか否かを判定するテストが行われる。判定ブロック457におけるテストの判定がYESである場合、方法400は端E7に進む。判定ブロック457におけるテストの判定がNOである場合、CPUのキャッシュサイズが、除外されるリストに存在するか否かを判定する別のテストが行われる(判定ブロック455を参照)。判定ブロック455におけるテストの判定がYESである場合、方法400は端E7に進む。一方、判定がNOである場合、方法400は端Fに進む。
端E7(図4S)から、この方法により、コンピュータマシンに対する利用可能な保護がないことを伝えるエラーメッセージが発せられ、システムのシャットダウンが開始される(ブロック455を参照)。次いで、方法400は端Lに進み、実行を終了する。
方法400は、端F(図4B)から、継続端(「端G」)と出口端(「端H」)との間に定義された方法ステップのセット408に進む。方法ステップのセット408は、インストールファイルが改ざんされたか否かを検証する。
端G(図4S)から、ログオンモジュールは、保護ダイナミックリンクライブラリと通信して、コンピューティングマシン上の重大なファイルに関連する暗号化された保護プロファイルにアクセスする(ブロック453を参照)。図4L〜4N中の(図示したシーケンスの)ステップ495〜475が、コンピューティングマシン上の重大なファイルに関連する暗号化された保護プロファイルを見つけるというコンテキストにおいて実行される(ブロック451を参照)。次いで、ブロック449で、この方法により、重大なファイルのリストが、プロファイルから抽出される。コンピューティングマシン上の重大なファイルが変更されたか否かを判定するテストが行われる(判定ブロック447を参照)。判定ブロック447におけるテストの判定がYESである場合、方法400は端Lに進み、実行を終了する。一方、判定ブロック447のテストの判定がNOである場合、方法400は端Hに進む。端Gと端Hとの間の処理ステップは、コンピューティングマシン上の重大なファイルが変更または改ざんされたか否かを継続的にチェックするために、同時に実行できることに留意されたい。
方法400は、端H(図4B)から、継続端(「端I」)と出口端(「端J」)との間に定義された方法ステップのセット410に進む。方法ステップのセット410は、レジストリが改ざんされたか否かを判定する。
端I(図4T)から、起動時に、ログオンモジュールは、システムコンテキストのレジストリのキーおよび値を保護するための、保護ダイナミックリンクライブラリの保護関数を呼び出す(ブロック445を参照)。保護ダイナミックリンクライブラリは、システムコンテキストのレジストリの様々なキーおよび値を保護するためのスレッドを生成する(ブロック443を参照)。次いで、ブロック441で、保護ダイナミックリンクライブラリは、生成したばかりのスレッドへのハンドルを、ログオンモジュールに返す。方法400はブロック439に進み、ブロック439で、この方法により、システムコンテキストのレジストリのキーおよび値を保護するスレッドの継続性をチェックするためのタイマが生成される。次いで、方法400は3つの独立した実行パスに進む。これら実行パスは、継続端(「端I2」)、判定ブロック437、および別の継続端(「端I4」)により表されている。これらの独立した実行パスは同時性を示している。判定ブロック437で、予め設定された期間が過ぎたか否かを判定するテストが行われる。判定ブロック437におけるテストの判定がNOである場合、方法400は別の継続端(「端I3」)に進み、判定ブロック437にループバックして、前述した処理ステップが繰り返される。一方、判定ブロック437におけるテストの判定がYESである場合、方法400は別の継続端(「端I1」)に進む。
方法400は、端I1(図4U)から、判定ブロック435に進み、判定ブロック435で、スレッドが終了したか否かを判定するテストが行われる。判定ブロック435におけるテストの判定がNOである場合、方法400は別の判定ブロック433に進み、判定ブロック433で、スレッドが一時停止したか否かを判定するテストが行われる。判定ブロック433におけるテストの判定がNOである場合、方法400は端I3に進み、判定ブロック437にループバックして、前述した処理ステップが繰り返される。判定ブロック435、433におけるテストの判定がYESである場合、方法400はブロック431に進む。この場合はシステムが改ざんされたと考えられ、ブロック431で、この方法により、システムのシャットダウンが開始される。次いで、方法400は端Lに進み、実行を終了する。
方法400は、端I2(図4V)から、ブロック429に進み、ブロック429で、スレッドは、保護ダイナミックリンクライブラリと通信して、保護すべきシステムレジストリキーおよび値のリストにアクセスする。図4L〜4N中の(図示したシーケンスの)ステップ495〜475が実行される(ブロック427を参照)。次いで、ブロック425で、スレッドは、レジストリキーを保護するための変更があれば、その変更の通知を行う(subscribe)。判定ブロック423で、変更の通知があるか否かを判定するテストが行われる。判定ブロック423におけるテストの判定がNOである場合、方法400は判定ブロック423にループバックし、前述した処理ステップが繰り返される。一方、判定ブロック423におけるテストの判定がYESである場合、この方法により、改ざんされたキーおよびその値が修復される(ブロック421を参照)。次いで、方法400は判定ブロック423にループバックし、前述した処理ステップが繰り返される。
方法400は、端I4(図4W)から、ブロック419に進み、ブロック419で、ユーザがログオンしたときに、ログオンモジュールは、ユーザコンテキストのレジストリのキーおよび値を保護するための、保護ダイナミックリンクライブラリの保護関数を呼び出す。保護ダイナミックリンクライブラリは、ユーザコンテキストのレジストリの様々なキーおよび値を保護するためのスレッドを生成する(ブロック417を参照)。次いで、ブロック415で、保護ダイナミックリンクライブラリは、生成したばかりのスレッドへのハンドルを、ログオンモジュールに返す。方法400はブロック413に進み、ブロック413で、この方法により、ユーザコンテキストのレジストリのキーおよび値を保護するスレッドの継続性をチェックするためのタイマが生成される。図4T〜4Uの(図示したシーケンスの)ステップ437〜421が、ユーザコンテキストについて実行される。次いで、方法400は端Jに進む。
方法400は、端J(図4B)から、継続端(「端K」)と出口端(「端L」)との間に定義された方法ステップのセット412に進む。方法のセット412は、サービスが改ざんされたか否か、または、許可されていないサービスが実行されているか否かを判定する。端K(図4X)から、起動時に、ログオンモジュールは、許可されていないサービスの実行を抑止するための、保護ダイナミックリンクライブラリの保護関数を呼び出す。保護ダイナミックリンクライブラリは、許可されていないサービスの実行を抑止するためのスレッドを生成する(ブロック407を参照)。次いで、ブロック405で、保護ダイナミックリンクライブラリは、生成したばかりのスレッドへのハンドルを、ログオンモジュールに返す。次いで、方法400はブロック403に進み、ブロック403で、この方法により、許可されていないサービスの実行を抑止するスレッドの継続性をチェックするためのタイマが生成される。図4T〜4Uのステップ437〜431が実行される(ブロック401を参照)。次いで、ブロック401Aで、スレッドは、保護ダイナミックリンクライブラリと通信して、許可されていないサービスのリストに関連する暗号化された保護プロファイルにアクセスする。次いで、方法400は別の継続端(「端K1」)に進む。
端K1(「図4Y」)から、図4L〜4Nのステップ495〜475が実行される。判定ブロック401Cで、許可されていないサービスが実行されているか否かを判定するテストが行われる。判定ブロック401Cにおけるテストの判定がNOである場合、方法400は別の継続端(「端K2」)に進む。一方、判定ブロック401Cにおけるテストの判定がYESである場合、方法400はブロック401Dに進み、ブロック401Dで、この方法により、許可されていないサービスに依存するすべてのサービスが停止される。次いで、許可されていないサービスが、実行から削除される(ブロック401Eを参照)。
方法400は、端K2(図4Z)から、判定ブロック401Fに進み、判定ブロック401Fで、許可されていないサービスが他にもあるか否かを判定するテストが行われる。判定ブロック401Fにおけるテストの判定がYESである場合、別の継続端(「端K3」)に進む。端K3(図4Y)から、方法400は判定ブロック401Cにループバックし、前述した処理ステップが繰り返される。一方、判定ブロック401Fにおけるテストの判定がNOである場合、方法400はブロック401Gに進み、ブロック401Gで、スレッドは、予め設定された期間の間、スリープする。次いで、方法400は端K3を介して判定ブロック401Cにループバックし、前述した処理ステップが繰り返される。端Kと端Lとの間に定義された方法ステップのセット412に関連して説明したステップは、他の方法ステップのセットと同時に実行されることが好ましい。
本発明の好ましい実施形態について、図示して説明したが、本発明の趣旨および範囲を逸脱することなく、これに様々な変更を加えることができることが理解されよう。
許可されていない個人によるコンピューティングマシンにおけるソフトウェア改ざんの問題を示す従来システムを例示するブロック図である。 改ざんを抑止するソフトウェアをセットアップするための例示的なソフトウェアコンポーネントを示すブロック図である。 ソフトウェア改ざんを抑止するために相互動作する例示的なソフトウェアコンポーネントを示すブロック図である。 本発明の一実施形態による、レジストリまたはダイナミックリンクライブラリに記憶された例示的なプロファイルと、ソフトウェア群の安全な相互動作によるプロファイルの抽出とを示すブロック図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。 本発明の一実施形態による、ソフトウェア改ざんを抑止する方法を示すプロセス図である。

Claims (179)

  1. コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止する方法であって、
    許可されていないサービスの実行を抑止するための、難読化された保護ダイナミックリンクライブラリの保護関数(protection function)を呼び出すことと、
    中央階層型データベースのキーおよび値を保護するための、前記難読化された保護ダイナミックリンクライブラリの別の保護関数を呼び出すことと
    を備えることを特徴とする方法。
  2. ログオンモジュールを実行することをさらに備え、前記ログオンモジュールは、前記ソフトウェアが分類される製品クラスに対する保護が利用可能な場合に、前記難読化された保護ダイナミックリンクライブラリをロードすることを特徴とする請求項1に記載の方法。
  3. 前記難読化された保護ダイナミックリンクライブラリを前記ロードする動作が失敗した場合、前記コンピューティングマシンをシャットダウンすることをさらに備えることを特徴とする請求項2に記載の方法。
  4. 許可されていないサービスの実行を抑止するための、難読化された保護ダイナミックリンクライブラリの保護関数を前記呼び出す動作は、許可されたサービスのリストをチェックして許可されていないサービスの実行を削除するスレッドを生成することを特徴とする請求項3に記載の方法。
  5. 中央階層型データベースのキーおよび値を保護するための、前記難読化された保護ダイナミックリンクライブラリの別の保護関数を前記呼び出す動作は、システムコンテキストのキーおよび値を保護するためのスレッドを生成することを含むことを特徴とする請求項4に記載の方法。
  6. 中央階層型データベースのキーおよび値を保護するための、前記難読化された保護ダイナミックリンクライブラリの別の保護関数を前記呼び出す動作は、ユーザコンテキストのキーおよび値を保護するためのスレッドを生成することを含むことを特徴とする請求項5に記載の方法。
  7. 前記スレッドが確実に実行されていることを定期的に判定するためのタイマを生成することをさらに備えることを特徴とする請求項6に記載の方法。
  8. ログオフが開始した場合であって、かつ、前記ソフトウェアが分類される製品クラスに対する保護が利用可能な場合、前記スレッドを停止することをさらに備えることを特徴とする請求項7に記載の方法。
  9. コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ読取り可能な媒体であって、
    前記方法は、
    許可されていないサービスの実行を抑止するための、難読化された保護ダイナミックリンクライブラリの保護関数を呼び出すことと、
    中央階層型データベースのキーおよび値を保護するための、前記難読化された保護ダイナミックリンクライブラリの別の保護関数を呼び出すことと
    を備えることを特徴とするコンピュータ読取り可能な媒体。
  10. 前記方法は、ログオンモジュールを実行することをさらに備え、前記ログオンモジュールは、前記ソフトウェアが分類される製品クラスに対する保護が利用可能な場合に、前記難読化された保護ダイナミックリンクライブラリをロードすることを特徴とする請求項9に記載のコンピュータ読取り可能な媒体。
  11. 前記方法は、前記難読化された保護ダイナミックリンクライブラリを前記ロードする動作が失敗した場合、前記コンピューティングマシンをシャットダウンすることをさらに備えることを特徴とする請求項10に記載のコンピュータ読取り可能な媒体。
  12. 許可されていないサービスの実行を抑止するための、難読化された保護ダイナミックリンクライブラリの保護関数を前記呼び出す動作は、許可されたサービスのリストをチェックして許可されていないサービスの実行を削除するスレッドを生成することを特徴とする請求項11に記載のコンピュータ読取り可能な媒体。
  13. 中央階層型データベースのキーおよび値を保護するための、前記難読化された保護ダイナミックリンクライブラリの別の保護関数を前記呼び出す動作は、システムコンテキストのキーおよび値を保護するためのスレッドを生成することを含むことを特徴とする請求項12に記載のコンピュータ読取り可能な媒体。
  14. 中央階層型データベースのキーおよび値を保護するための、前記難読化された保護ダイナミックリンクライブラリの別の保護関数を前記呼び出す動作は、ユーザコンテキストのキーおよび値を保護するためのスレッドを生成することを含むことを特徴とする請求項13に記載のコンピュータ読取り可能な媒体。
  15. 前記方法は、前記スレッドが確実に実行されていることを定期的に判定するためのタイマを生成することをさらに備えることを特徴とする請求項14に記載のコンピュータ読取り可能な媒体。
  16. 前記方法は、ログオフが開始した場合であって、かつ、前記ソフトウェアが分類される製品クラスに対する利用保護が可能な場合、前記スレッドを停止することをさらに備えることを特徴とする請求項15に記載のコンピュータ読取り可能な媒体。
  17. コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止するためのシステムであって、
    許可されていないサービスの実行を抑止するための、難読化された保護ダイナミックリンクライブラリの保護関数を呼び出す手段と、
    中央階層型データベースのキーおよび値を保護するための、前記難読化された保護ダイナミックリンクライブラリの別の保護関数を呼び出す手段と
    を備えたことを特徴とするシステム。
  18. ログオンモジュールを実行する手段をさらに備え、前記ログオンモジュールは、前記ソフトウェアが分類される製品クラスに対する保護が利用可能な場合に、前記難読化された保護ダイナミックリンクライブラリをロードすることを特徴とする請求項17に記載のシステム。
  19. 前記難読化された保護ダイナミックリンクライブラリを前記ロードする動作が失敗した場合、前記コンピューティングマシンをシャットダウンする手段をさらに備えたことを特徴とする請求項18に記載のシステム。
  20. 許可されていないサービスの実行を抑止するための、難読化された保護ダイナミックリンクライブラリの保護関数を前記呼び出す手段は、許可されたサービスのリストをチェックして許可されていないサービスの実行を削除するスレッドを生成することを特徴とする請求項19に記載のシステム。
  21. 情報のオリジナル性を検証するための、コンピューティングシステムによって使用されるコンピュータ実行可能命令と、1つまたは複数のデータ構造とを記憶したコンピュータ読取り可能な媒体であって、
    保護ダイナミックリンクライブラリの秘密ライブラリキーを用いて暗号化されたプロファイル
    を備え、前記プロファイルは、プロファイルデータを含み、前記プロファイルデータのサイズおよびフォーマットは、プロファイルタイプに依存し、前記プロファイルは、前記保護ダイナミックリンクライブラリの公開ライブラリキーを用いてデジタル署名されたシグネチャをさらに含み、前記プロファイルは、前記プロファイルを識別する識別子と前記プロファイルデータとのチェックサムを含むベリファイアブロブ(verifier blob)をさらに含むことを特徴とするコンピュータ読取り可能な媒体。
  22. 前記プロファイルが記憶される中央階層型データベースを有することを特徴とする請求項21に記載のコンピュータ読取り可能な媒体。
  23. 秘密呼び出しキーおよび公開呼び出しキーを含むログオンモジュールをさらに備え、前記プロファイルの前記ベリファイアブロブは、前記秘密呼び出しキーを用いて暗号化され、前記公開呼び出しキーを用いて署名されることを特徴とする請求項22に記載のコンピュータ読取り可能な媒体。
  24. 前記保護ダイナミックリンクライブラリは、公開ライブラリキーおよび秘密ライブラリキーを含み、前記プロファイルの前記シグネチャは、前記公開ライブラリキーを用いて署名され、前記プロファイルは、前記秘密ライブラリキーを用いて暗号化されることを特徴とする請求項22に記載のコンピュータ読取り可能な媒体。
  25. 前記プロファイルの前記プロファイルデータ、前記シグネチャ、および前記ベリファイアブロブの構造は、別のプロファイルとは異なることを特徴とする請求項22に記載のコンピュータ読取り可能な媒体。
  26. ソフトウェア間の相互動作を保護するためのコンピュータで実施される方法であって、
    公開呼び出しキーおよび秘密呼び出しキーを有する第1のソフトウェアによって、中央階層型データベースに記憶されたプロファイルへのアクセスを開始することであって、前記第1のソフトウェアはランダムなソルト値を送る、アクセスを開始することと、
    秘密ライブラリキーを有する第2のソフトウェアによって、前記ランダムなソルト値を受け取った後、前記第2のソフトウェアは、前記中央階層型データベース内で前記プロファイルを見つけて、前記秘密ライブラリキーを使用して前記プロファイルを解読することと
    を備えることを特徴とする方法。
  27. 前記第2のソフトウェアは、前記プロファイルの識別子と、前記プロファイルのデータと、前記プロファイルを見つけた結果と、前記ランダムなソルト値とを含む情報集合の第1のチェックサムを計算することを特徴とする請求項26に記載の方法。
  28. 前記第2のソフトウェアは、前記プロファイルを見つけた結果と、前記公開呼び出しキーを用いて署名され、かつ、前記秘密呼び出しキーを用いて暗号化された前記プロファイルのベリファイアブロブと、前記第2のソフトウェアによって計算された前記第1のチェックサムとを送ることを特徴とする請求項27に記載の方法。
  29. 前記第1のソフトウェアは、前記プロファイルの結果と、前記ベリファイアブロブと、前記第1のチェックサムとを受け取った後、前記秘密呼び出しキーを使用して前記ベリファイアブロブを解読し、前記公開呼び出しキーを使用してシグネチャを検証し、前記第1のソフトウェアは、前記プロファイルの識別子と、前記プロファイルのデータと、前記プロファイルを見つけた結果と、前記ランダムなソルト値とを含む情報集合の第2のチェックサムを計算することをさらに備えることを特徴とする請求項28に記載の方法。
  30. 前記第1のチェックサムと前記第2のチェックサムとを比較することをさらに備え、前記第1のチェックサムと前記第2のチェックサムとが一致しない場合、改ざんが行われたとの結論を下すことを特徴とする請求項29に記載の方法。
  31. ソフトウェア間の相互動作を保護するためのコンピュータで実施される方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体であって、
    前記方法は、
    公開呼び出しキーおよび秘密呼び出しキーを有する第1のソフトウェアによって、中央階層型データベースに記憶されたプロファイルへのアクセスを開始することであって、前記第1のソフトウェアはランダムなソルト値を送る、アクセスを開始することと、
    秘密ライブラリキーを有する第2のソフトウェアによって、前記ランダムなソルト値を受け取った後、前記中央階層型データベース内で前記プロファイルを見つけて、前記秘密ライブラリキーを使用して前記プロファイルを解読することと
    を備えることを特徴とするコンピュータ読取り可能な媒体。
  32. 前記第2のソフトウェアは、前記プロファイルの識別子と、前記プロファイルのデータと、前記プロファイルを見つけた結果と、前記ランダムなソルト値とを含む情報集合の第1のチェックサムを計算することを特徴とする請求項31に記載のコンピュータ読取り可能な媒体。
  33. 前記第2のソフトウェアは、前記プロファイルを見つけた結果と、前記公開呼び出しキーを用いて署名され、かつ、前記秘密呼び出しキーを用いて暗号化された前記プロファイルのベリファイアブロブと、前記第2のソフトウェアによって計算された前記第1のチェックサムとを送ることを特徴とする請求項32に記載のコンピュータ読取り可能な媒体。
  34. 前記方法は、前記第1のソフトウェアが、前記プロファイルの結果と、前記ベリファイアブロブと、前記第1のチェックサムとを受け取った後、前記秘密呼び出しキーを使用して前記ベリファイアブロブを解読し、前記公開呼び出しキーを使用してシグネチャを検証し、前記第1のソフトウェアが、前記プロファイルの識別子と、前記プロファイルのデータと、前記プロファイルを見つけた結果と、前記ランダムなソルト値とを含む情報集合の第2のチェックサムを計算することをさらに備えることを特徴とする請求項33に記載のコンピュータ読取り可能な媒体。
  35. 前記方法は、前記第1のチェックサムと前記第2のチェックサムとを比較することをさらに備え、前記第1のチェックサムと前記第2のチェックサムとが一致しない場合、改ざんが行われたとの結論を下すことを特徴とする請求項34に記載のコンピュータ読取り可能な媒体。
  36. ソフトウェア間の相互動作を保護するためのシステムであって、
    公開呼び出しキーおよび秘密呼び出しキーを有する第1のソフトウェアによって、中央階層型データベースに記憶されたプロファイルへのアクセスを開始する手段であって、前記第1のソフトウェアはランダムなソルト値を送る、アクセスを開始する手段と、
    秘密ライブラリキーを有する第2のソフトウェアによって、前記ランダムなソルト値を受け取った後、前記第2のソフトウェアによって実行される、前記中央階層型データベース内で前記プロファイルを見つけて、前記秘密ライブラリキーを使用して前記プロファイルを解読する手段と
    を備えたことを特徴とするシステム。
  37. 前記第2のソフトウェアは、前記プロファイルの識別子と、前記プロファイルのデータと、前記プロファイルを見つけた結果と、前記ランダムなソルト値とを含む情報集合の第1のチェックサムを計算する手段を使用することを特徴とする請求項36に記載のシステム。
  38. 前記第2のソフトウェアは、前記プロファイルを見つけた結果と、前記公開呼び出しキーを用いて署名され、かつ、前記秘密呼び出しキーを用いて暗号化された前記プロファイルのベリファイアブロブと、前記第2のソフトウェアによって計算された前記第1のチェックサムとを送る手段を使用することを特徴とする請求項37に記載のシステム。
  39. 前記第1のソフトウェアが、前記プロファイルの結果と、前記ベリファイアブロブと、前記第1のチェックサムとを受け取った後、前記第1のソフトウェアによって実行される、前記秘密呼び出しキーを使用して前記ベリファイアブロブを解読し、前記公開呼び出しキーを使用してシグネチャを検証する手段をさらに備え、前記第1のソフトウェアは、前記プロファイルの識別子と、前記プロファイルのデータと、前記プロファイルを見つけた結果と、前記ランダムなソルト値とを含む情報集合の第2のチェックサムを計算することを特徴とする請求項38に記載のシステム。
  40. コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止する方法であって、
    前記ソフトウェアが分類される製品クラスに対する保護が利用可能な場合、難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードすることと、
    前記コンピューティングマシン上で実行される前記ソフトウェアが、改ざんからの保護が利用可能である前記製品クラス内に依然として存在することを監視するための、システムタイマを生成することと
    を備えることを特徴とする方法。
  41. 前記システムタイマは無期限のスレッド内で実行されることを特徴とする請求項40に記載の方法。
  42. 前記システムタイマは、予め設定された期間に関連付けられ、前記予め設定されたタイマ期間が過ぎると、タイマルーチンが実行されることを特徴とする請求項41に記載の方法。
  43. 前記タイマルーチンは、中央階層型データベースに記憶されたアクティベーションキー(activation key)をチェックして、前記製品クラスを復号することを特徴とする請求項42に記載の方法。
  44. 前記復号した製品クラスに対する利用可能な保護がなく、前記ソフトウェアが改ざんされたことを示す場合、前記タイマルーチンは、セキュリティエラー対策を講じることを特徴とする請求項43に記載の方法。
  45. ユーザの構成が、前記中央階層型データベースに記憶された予め定められたプロファイルと一致しない場合、前記タイマルーチンは、セキュリティエラー対策を講じることを特徴とする請求項44に記載の方法。
  46. コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体であって、
    前記方法は、
    前記ソフトウェアが分類される製品クラスに対する保護が利用可能な場合、難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードすることと、
    前記コンピューティングマシン上で実行される前記ソフトウェアが、改ざんからの保護が利用可能である前記製品クラス内に依然として存在することを監視するための、システムタイマを生成することと
    を備えることを特徴とするコンピュータ読取り可能な媒体。
  47. 前記システムタイマは無期限のスレッド内で実行されることを特徴とする請求項46に記載のコンピュータ読取り可能な媒体。
  48. 前記システムタイマは、予め設定された期間に関連付けられ、前記予め設定されたタイマ期間が過ぎると、タイマルーチンが実行されることを特徴とする請求項47に記載のコンピュータ読取り可能な媒体。
  49. 前記タイマルーチンは、中央階層型データベースに記憶されたアクティベーションキーをチェックして、前記製品クラスを復号することを特徴とする請求項48に記載のコンピュータ可読媒体。
  50. 前記復号した製品クラスに対する利用可能な保護がなく、前記ソフトウェアが改ざんされたことを示す場合、前記タイマルーチンは、セキュリティエラー対策を講じることを特徴とする請求項49に記載のコンピュータ読取り可能な媒体。
  51. ユーザの構成が、前記中央階層型データベースに記憶された予め定められたプロファイルと一致しない場合、前記タイマルーチンは、セキュリティエラー対策を講じることを特徴とする請求項50に記載のコンピュータ読取り可能な媒体。
  52. コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止する方法であって、
    前記コンピューティングマシン上で、難読化された保護ダイナミックリンクライブラリの保護関数を呼び出すことから、複数の実行スレッドを生成することであって、前記複数のスレッドのうちの1つのスレッドは、許可されていないサービスの実行を抑止し、前記複数のスレッドのうちの他のスレッドは、中央階層型データベースのキーおよび値を保護する、複数の実行スレッドを生成することと、
    前記複数のスレッドが実行されていることを監視するためのタイマを生成することと
    を備えることを特徴とする方法。
  53. 前記タイマは無期限のスレッド内で実行されることを特徴とする請求項52に記載の方法。
  54. 前記タイマは、予め設定された期間に関連付けられ、前記予め設定されたタイマ期間が過ぎると、タイマルーチンが実行されることを特徴とする請求項53に記載の方法。
  55. 前記複数のスレッドのうちの前記1つのスレッドが終了または一時停止して、前記複数のスレッドのうちの前記1つのスレッドが改ざんされたことを示す場合、前記タイマルーチンは、セキュリティエラー対策を講じることを特徴とする請求項54に記載の方法。
  56. 前記複数のスレッドのうちの前記他のスレッドが終了または一時停止して、前記複数のスレッドのうちの前記他のスレッドが改ざんされたことを示す場合、前記タイマルーチンは、セキュリティエラー対策を講じることを特徴とする請求項55に記載の方法。
  57. コンピューティングマシン上で実行されるソフトウェアの改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体であって、
    前記方法は、
    前記コンピューティングマシン上で、難読化された保護ダイナミックリンクライブラリの保護関数を呼び出すことから、複数の実行スレッドを生成することであって、前記複数のスレッドのうちの1つのスレッドは、許可されていないサービスの実行を抑止し、前記複数のスレッドのうちの他のスレッドは、中央階層型データベースのキーおよび値を保護する、複数の実行スレッドを生成することと、
    前記複数のスレッドが実行されていることを監視するためのタイマを生成することと
    を備えることを特徴とするコンピュータ読取り可能な媒体。
  58. 前記複数のスレッドのうちの前記1つのスレッドが終了または一時停止して、前記複数のスレッドのうちの前記1つのスレッドが改ざんされたことを示す場合、前記方法は、セキュリティエラー対策を講じることを特徴とする請求項57に記載のコンピュータ読取り可能な媒体。
  59. 前記複数のスレッドのうちの前記他のスレッドが終了または一時停止して、前記複数のスレッドのうちの前記他のスレッドが改ざんされたことを示す場合、前記方法は、セキュリティエラー対策を講じることを特徴とする請求項58に記載のコンピュータ読取り可能な媒体。
  60. サービス改ざんを抑止する方法であって、
    コンピューティングマシンの起動時に、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、許可されていないサービスの実行を抑止するスレッドを生成することと、
    難読化された保護ダイナミックリンクライブラリと通信して、許可されていないサービスのリストに関連する暗号化された保護プロファイルにアクセスすることと
    を備えることを特徴とする方法。
  61. 前記呼び出す動作は、前記難読化されたダイナミックリンクライブラリによって、前記ログオンモジュールに前記スレッドへのハンドルを返すことを含むことを特徴とする請求項60に記載の方法。
  62. 許可されていないサービスの実行を抑止する前記スレッドの継続性をチェックするためのタイマを生成することをさらに備えることを特徴とする請求項61に記載の方法。
  63. 予め設定された期間が過ぎて、前記スレッドが終了した場合、システムのシャットダウンを開始することをさらに備えることを特徴とする請求項62に記載の方法。
  64. 予め設定された期間が過ぎて、前記スレッドが一時停止した場合、システムのシャットダウンを開始することをさらに備えることを特徴とする請求項63に記載の方法。
  65. 前記難読化されたダイナミックリンクライブラリによって、前記許可されていないサービスのリストを含むプロファイルを見つけ、前記プロファイルのIDと、前記プロファイルのデータと、前記ログオンモジュールから前記難読化された保護ダイナミックリンクライブラリに送られたソルト値とから、チェックサムを計算することをさらに備えることを特徴とする請求項64に記載の方法。
  66. 前記難読化された保護ダイナミックリンクライブラリによって、結果データ構造と、前記プロファイルのベリファイアブロブと、前記計算したチェックサムとを、前記ログオンモジュールに返すことをさらに備えることを特徴とする請求項65に記載の方法。
  67. 前記ログオンモジュールによって計算されたチェックサムと、前記保護ダイナミックリンクライブラリによって計算されたチェックサムとが一致しなかった場合、セキュリティエラー対策を講じることをさらに備え、前記ログオンモジュールによって計算された前記チェックサムは、解読されたベリファイアチェックサムと、受け取った前記結果データ構造と、前記ソルト値とに依存することを特徴とする請求項66に記載の方法。
  68. 許可されていないサービスが実行されている場合、前記許可されていないサービスに依存するすべてのサービスを停止し、前記許可されていないサービスを削除することをさらに備えることを特徴とする請求項67に記載の方法。
  69. 予め設定された期間の間、前記スレッドをスリープさせることをさらに備えることを特徴とする請求項68に記載の方法。
  70. サービス改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体であって、
    前記方法は、
    コンピューティングマシンの起動時に、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、許可されていないサービスの実行を抑止するスレッドを生成することと、
    難読化された保護ダイナミックリンクライブラリと通信して、許可されていないサービスのリストに関連する暗号化された保護プロファイルにアクセスすることと
    を備えることを特徴とするコンピュータ読取り可能な媒体。
  71. 前記呼び出す動作は、前記難読化されたダイナミックリンクライブラリによって、前記スレッドへのハンドルを前記ログオンモジュールに返すことを含むことを特徴とする請求項70に記載のコンピュータ読取り可能な媒体。
  72. 前記方法は、許可されていないサービスの実行を抑止する前記スレッドの継続性をチェックするためのタイマを生成することをさらに備えることを特徴とする請求項71に記載のコンピュータ読取り可能な媒体。
  73. 前記方法は、予め設定された期間が過ぎて、前記スレッドが終了した場合、システムのシャットダウンを開始することをさらに備えることを特徴とする請求項72に記載のコンピュータ読取り可能な媒体。
  74. 前記方法は、予め設定された期間が過ぎて、前記スレッドが一時停止した場合、システムのシャットダウンを開始することをさらに備えることを特徴とする請求項73に記載のコンピュータ読取り可能な媒体。
  75. 前記方法は、前記難読化されたダイナミックリンクライブラリによって、前記許可されていないサービスのリストを含むプロファイルを見つけ、前記プロファイルのIDと、前記プロファイルのデータと、前記ログオンモジュールから前記難読化された保護ダイナミックリンクライブラリに送られたソルト値とから、チェックサムを計算することをさらに備えることを特徴とする請求項74に記載のコンピュータ読取り可能な媒体。
  76. 前記方法は、前記難読化されたダイナミックリンクライブラリによって、結果データ構造と、前記プロファイルのベリファイアブロブと、前記計算したチェックサムとを、前記ログオンモジュールに返すことをさらに備えることを特徴とする請求項75に記載のコンピュータ読取り可能な媒体。
  77. 前記方法は、前記ログオンモジュールによって計算されたチェックサムと、前記保護ダイナミックリンクライブラリによって計算されたチェックサムとが一致しなかった場合、セキュリティエラー対策を講じることをさらに備え、前記ログオンモジュールによって計算されたチェックサムは、解読されたベリファイアチェックサムと、受け取った前記結果データ構造と、前記ソルト値とに依存することを特徴とする請求項76に記載のコンピュータ読取り可能な媒体。
  78. 前記方法は、許可されていないサービスが実行されている場合、前記許可されていないサービスに依存するすべてのサービスを停止し、前記許可されていないサービスを削除することをさらに備えることを特徴とする請求項77に記載のコンピュータ読取り可能な媒体。
  79. 前記方法は、予め設定された期間の間、前記スレッドをスリープさせることをさらに備えることを特徴とする請求項78に記載のコンピュータ読取り可能な媒体。
  80. ソフトウェアをインストールするための、コンピューティングシステムによって使用されるコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体であって、
    コンピュータ実行可能命令を含む保護ダイナミックリンクライブラリであって、前記コンピュータ実行可能命令は、改ざんがあるか否かについて中央階層型データベースを監視し、前記コンピューティングシステムに記憶されたファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止する、保護ダイナミックリンクライブラリ
    を備えたことを特徴とするコンピュータ読取り可能な媒体。
  81. 一意な製品識別子を生成して、前記生成した製品識別子を前記中央階層型データベースに記憶するための製品識別子ダイナミックリンクライブラリと、
    ダイナミックリンクライブラリをセットアップするための情報を含むセットアップ情報ファイルと、
    前記セットアップ情報ファイル内の情報を使用して、前記ダイナミックリンクライブラリをセットアップするためのセットアップソフトウェアと
    をさらに備えたことを特徴とする請求項80に記載のコンピュータ読取り可能な媒体。
  82. 前記セットアップソフトウェアによって、前記セットアップ情報ファイルを使用して生成されたインストールダイナミックリンクライブラリと、
    市販のソフトウェアパッケージに関連するファイルに関する情報を含む保護情報ファイルと
    をさらに備えたことを特徴とする請求項81に記載のコンピュータ読取り可能な媒体。
  83. 前記中央階層型データベースは、前記一意な製品識別子と、前記コンピューティングシステムが前記市販のソフトウェアパッケージを実行していることの検証を助けるための、前記一意な製品識別子から得られるアクティベーションキーと、前記システムに記憶された前記ファイルのセットのオリジナル性の検証を容易にするための、前記ファイルのセットのシグネチャを含む暗号化された保護プロファイルとを含むことを特徴とする請求項82に記載のコンピュータ読取り可能な媒体。
  84. 前記保護ダイナミックリンクライブラリは、前記インストールダイナミックリンクライブラリによって、前記保護情報ファイルに記憶された情報を使用して生成されることを特徴とする請求項83に記載のコンピュータ読取り可能な媒体。
  85. ソフトウェアセットアップを保護するためのコンピュータで実施される方法であって、
    市販のソフトウェアパッケージのクラスに属するものとしてソフトウェアを識別するための製品識別子を生成することと、
    前記ソフトウェアが、前記製品識別子に基づいて、ソフトウェア改ざんからの保護が利用可能である市販のソフトウェアパッケージのクラスに属する場合、ソフトウェア改ざんを抑止するための保護ダイナミックリンクライブラリのインストールを容易にすることと
    を備えることを特徴とする方法。
  86. 保護情報ファイルからの情報を使用して、ソフトウェア改ざんを抑止するための前記保護ダイナミックリンクライブラリを生成するセットアップソフトウェアによって、インストールダイナミックリンクライブラリを実行することをさらに備えることを特徴とする請求項85に記載の方法。
  87. 実行ソフトウェアが市販のソフトウェアパッケージのクラスに属するか否かの検証を容易にするために、前記製品識別子に基づいて、アクティベーションキーを中央階層型データベースに記録することをさらに備えることを特徴とする請求項86に記載の方法。
  88. サポートされる言語、ハードウェア、およびその他の情報に関するファイルのシグネチャを含む暗号化された保護プロファイルを前記中央階層型データベースに記録することをさらに備えることを特徴とする請求項87に記載の方法。
  89. 前記保護ダイナミックリンクライブラリによって使用される情報を含むシステムファイルをインストールすることをさらに備えることを特徴とする請求項88に記載の方法。
  90. ソフトウェアセットアップを保護するためのコンピュータで実施される方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体であって、
    前記方法は、
    市販のソフトウェアパッケージのクラスに属するものとしてソフトウェアを識別するための製品識別子を生成することと、
    前記ソフトウェアが、前記製品識別子に基づいて、ソフトウェア改ざんからの保護が利用可能である市販のソフトウェアパッケージのクラスに属する場合、ソフトウェア改ざんを抑止するための保護ダイナミックリンクライブラリのインストールを容易にすることと
    を備えることを特徴とするコンピュータ読取り可能な媒体。
  91. 前記方法は、保護情報ファイルからの情報を使用して、ソフトウェア改ざんを抑止するための前記保護ダイナミックリンクライブラリを生成するセットアップソフトウェアによって、インストールダイナミックリンクライブラリを実行することをさらに備えることを特徴とする請求項90に記載のコンピュータ読取り可能な媒体。
  92. 前記方法は、実行ソフトウェアが市販のソフトウェアパッケージのクラスに属するか否かの検証を容易にするために、前記製品識別子に基づいて、アクティベーションキーを中央階層型データベースに記録することをさらに備えることを特徴とする請求項91に記載のコンピュータ読取り可能な媒体。
  93. 前記方法は、サポートされる言語、ハードウェア、およびその他の情報に関するファイルのシグネチャを含む暗号化された保護プロファイルを前記中央階層型データベースに記録することをさらに備えることを特徴とする請求項92に記載のコンピュータ読取り可能な媒体。
  94. 前記方法は、前記保護ダイナミックリンクライブラリによって使用される情報を含むシステムファイルをインストールすることをさらに備えることを特徴とする請求項93に記載のコンピュータ読取り可能な媒体。
  95. ソフトウェアセットアップを保護するためのシステムであって、
    市販のソフトウェアパッケージのクラスに属するものとしてソフトウェアを識別するための製品識別子を生成する手段と、
    前記ソフトウェアが、前記製品識別子に基づいて、ソフトウェア改ざんからの保護が利用可能である市販のソフトウェアパッケージのクラスに属する場合、ソフトウェア改ざんを抑止するための保護ダイナミックリンクライブラリのインストールを容易にする手段と
    を備えたことを特徴とするシステム。
  96. 保護情報ファイルからの情報を使用して、ソフトウェア改ざんを抑止するための前記保護ダイナミックリンクライブラリを生成するセットアップソフトウェアによって、インストールダイナミックリンクライブラリを実行する手段をさらに備えたことを特徴とする請求項95に記載のシステム。
  97. 実行ソフトウェアが市販のソフトウェアパッケージのクラスに属するか否かの検証を容易にするために、前記製品識別子に基づいて、アクティベーションキーを中央階層型データベースに記録する手段をさらに備えたことを特徴とする請求項96に記載のシステム。
  98. サポートされる言語、ハードウェア、およびその他の情報に関するファイルのシグネチャを含む暗号化された保護プロファイルを前記中央階層型データベースに記録する手段をさらに備えたことを特徴とする請求項97に記載のシステム。
  99. 前記保護ダイナミックリンクライブラリによって使用される情報を含むシステムファイルをインストールする手段をさらに備えたことを特徴とする請求項98に記載のシステム。
  100. ソフトウェア改ざんから保護するための、コンピューティングシステムによって使用されるコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体であって、
    難読化されたコンピュータ実行可能命令を含む保護ダイナミックリンクライブラリであって、前記難読化されたコンピュータ実行可能命令は、改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止する、保護ダイナミックリンクライブラリ
    を備えたことを特徴とするコンピュータ読取り可能な媒体。
  101. コンパイルしてリンクすることができるソースコードであって、改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止する難読化されていないコンピュータ実行可能命令を含む保護ダイナミックリンクライブラリを生成するソースコードをさらに備えたことを特徴とする請求項100に記載のコンピュータ読取り可能な媒体。
  102. 難読化されていないコンピュータ実行可能命令を含む前記保護ダイナミックリンクライブラリにおけるクラス、メソッド、およびフィールドの名前を含む難読化制御ファイルをさらに備え、前記難読化ファイルを使用して、難読化されていないコンピュータ実行可能命令を含む前記保護ダイナミックリンクライブラリにおけるクラス、メソッド、およびフィールドの前記名前が難読化されて、難読化されたコンピュータ実行可能命令を含む前記保護ダイナミックリンクライブラリが生成されることを特徴とする請求項101に記載のコンピュータ読取り可能な媒体。
  103. 前記保護ダイナミックリンクライブラリのチェックサムを含むカタログファイルをさらに備えたことを特徴とする請求項102に記載のコンピュータ読取り可能な媒体。
  104. 前記カタログファイルを含むデジタル署名されたカタログファイルと、前記デジタル署名されたカタログファイルの、非公開の秘密キーを使用して暗号化されたチェックサムとをさらに備えたことを特徴とする請求項103に記載のコンピュータ読取り可能な媒体。
  105. ソフトウェア改ざんを抑止するための、コンピューティングシステムによって使用されるコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を作成するためのコンピュータで実施される方法であって、
    改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止する難読化された保護ダイナミックリンクライブラリを形成することであって、前記難読化された保護ダイナミックリンクライブラリでは、クラス、メソッド、フィールド、および制御フローの名前が難読化されている、難読化された保護ダイナミックリンクライブラリを形成することと、
    前記難読化された保護ダイナミックリンクライブラリのチェックサムを含むデジタル署名されたカタログファイルを生成することと
    を備えることを特徴とする方法。
  106. 改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止するコンピュータ実行可能命令を含むソースコードを生成することをさらに備え、前記ソースコードを生成する動作は、難読化された保護ダイナミックリンクライブラリを前記形成する動作の前に行われることを特徴とする請求項105に記載の方法。
  107. 改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止するコンピュータ実行可能命令を含む保護ダイナミックリンクライブラリを形成するために、前記ソースコードをコンパイルしてリンクすることをさらに備えることを特徴とする請求項106に記載の方法。
  108. 前記難読化された保護ダイナミックリンクライブラリの前記チェックサムを計算することと、
    前記難読化された保護ダイナミックリンクライブラリの前記チェックサムを記憶するためのカタログファイルを生成することと
    をさらに備えることを特徴とする請求項107に記載の方法。
  109. 前記カタログファイルのチェックサムを計算することと、
    非公開の秘密キーを使用して前記カタログファイルの前記チェックサムを暗号化することと、
    前記カタログファイルにデジタル署名して、デジタル署名されたカタログファイルを生成することと
    をさらに備えることを特徴とする請求項108に記載の方法。
  110. ソフトウェア改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体であって、
    前記方法は、
    改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止する難読化された保護ダイナミックリンクライブラリを形成することであって、前記難読化された保護ダイナミックリンクライブラリでは、クラス、メソッド、フィールド、および制御フローの名前が難読化されている、難読化された保護ダイナミックリンクライブラリを形成することと、
    前記難読化された保護ダイナミックリンクライブラリのチェックサムを含むデジタル署名されたカタログファイルを生成することと
    を備えることを特徴とするコンピュータ読取り可能な媒体。
  111. 改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止するコンピュータ実行可能命令を含むソースコードを生成し、前記ソースコードを生成する動作は、難読化された保護ダイナミックリンクライブラリを前記形成する動作の前に行われることを特徴とする請求項110に記載のコンピュータ読取り可能な媒体。
  112. 改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止するコンピュータ実行可能命令を含む保護ダイナミックリンクライブラリを形成するために、前記ソースコードをコンパイルしてリンクすることを特徴とする請求項111に記載のコンピュータ読取り可能な媒体。
  113. 前記方法は、前記難読化された保護ダイナミックリンクライブラリの前記チェックサムを計算することと、前記難読化された保護ダイナミックリンクライブラリの前記チェックサムを記憶するためのカタログファイルを生成することとをさらに備えることを特徴とする請求項112に記載のコンピュータ読取り可能な媒体。
  114. 前記方法は、前記カタログファイルのチェックサムを計算することと、非公開の秘密キーを使用して前記カタログファイルの前記チェックサムを暗号化することと、前記カタログファイルにデジタル署名して、デジタル署名されたカタログファイルを生成することとをさらに備えることを特徴とする請求項113に記載のコンピュータ読取り可能な媒体。
  115. ソフトウェア改ざんを抑止するための、コンピューティングシステムによって使用されるコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体を作成するためのシステムであって、
    改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止する難読化された保護ダイナミックリンクライブラリを形成する手段であって、前記難読化された保護ダイナミックリンクライブラリでは、クラス、メソッド、フィールド、および制御フローの名前が難読化されている、難読化された保護ダイナミックリンクライブラリを形成する手段と、
    前記難読化された保護ダイナミックリンクライブラリのチェックサムを含むデジタル署名されたカタログファイルを生成する手段と
    を備えたことを特徴とするシステム。
  116. 改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止するコンピュータ実行可能命令を含むソースコードを生成する手段をさらに備え、前記ソースコードを生成する動作は、難読化された保護ダイナミックリンクライブラリを前記形成する動作の前に行われることを特徴とする請求項115に記載のシステム。
  117. 改ざんがあるか否かについてデータベースを監視し、ファイルのセットのオリジナル性を検証し、許可されていないサービスの実行を防止するコンピュータ実行可能命令を含む保護ダイナミックリンクライブラリを形成するために、前記ソースコードをコンパイルしてリンクする手段をさらに備えたことを特徴とする請求項116に記載のシステム。
  118. 前記難読化された保護ダイナミックリンクライブラリの前記チェックサムを計算する手段と、前記難読化された保護ダイナミックリンクライブラリの前記チェックサムを記憶するためのカタログファイルを生成する手段とをさらに備えたことを特徴とする請求項117に記載のシステム。
  119. 前記カタログファイルのチェックサムを計算する手段と、非公開の秘密キーを使用して前記カタログファイルの前記チェックサムを暗号化する手段と、前記カタログファイルにデジタル署名して、デジタル署名されたカタログファイルを生成する手段とをさらに備えたことを特徴とする請求項118に記載のシステム。
  120. ソフトウェア改ざんを抑止する方法であって、
    難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードする前に、前記難読化された保護ダイナミックリンクライブラリの第1のチェックサムを計算することと、
    ソフトウェア改ざんを抑止するためのセキュリティエラー対策を講じるべきか否かを判定するために、前記難読化された保護ダイナミックリンクライブラリのソフトウェアイメージのオリジナル性を検証することと
    を備えることを特徴とする方法。
  121. システムファイルに含まれるカタログファイルのリストを得ることと、前記カタログファイルのリスト内のカタログファイルに含まれる第2のチェックサムを検索することとをさらに備えることを特徴とする請求項120に記載の方法。
  122. 前記検証する動作は、前記第1のチェックサムと前記第2のチェックサムとが一致しない場合、前記ソフトウェアイメージが、オリジナルの難読化された保護ダイナミックリンクライブラリではないと判定することを特徴とする請求項121に記載の方法。
  123. 前記難読化された保護ダイナミックリンクライブラリと、前記第2のチェックサムを含む前記カタログファイルとが信用できるか否かを判定するために、信用チェック用(trust-checking)アプリケーションプログラミングインターフェースのセットを呼び出すことをさらに備え、前記信用チェック用アプリケーションプログラミングインターフェースのセットは、状態データを返すことを特徴とする請求項122に記載の方法。
  124. 前記信用チェック用アプリケーションプログラミングインターフェースのセットを呼び出し、前記状態データを使用して信用できるプロバイダ情報(trust provider information)を検索することをさらに備えることを特徴とする請求項123に記載の方法。
  125. 前記信用チェック用アプリケーションプログラミングインターフェースのセットを呼び出し、前記信用できるプロバイダ情報を使用してベースサイナ(base signer)を検索することをさらに備えることを特徴とする請求項124に記載の方法。
  126. 前記信用チェック用アプリケーションプログラミングインターフェースのセットを呼び出し、前記ベースサイナのコンテキストを使用して証明書チェーン(certificate chain)内の最後の要素を妥当性検査することをさらに備えることを特徴とする請求項125に記載の方法。
  127. 前記検証する動作は、前記最後の要素が前記ソフトウェアイメージのメーカからの正しい公開キーを含む場合、前記ソフトウェアイメージがオリジナルであるとの結論を下すことを特徴とする請求項126に記載の方法。
  128. ソフトウェア改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ読取り可能な媒体であって、
    前記方法は、
    難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードする前に、前記難読化された保護ダイナミックリンクライブラリの第1のチェックサムを計算することと、
    ソフトウェア改ざんを抑止するためのセキュリティエラー対策を講じるべきか否かを判定するために、前記難読化された保護ダイナミックリンクライブラリのソフトウェアイメージのオリジナル性を検証することと
    を備えることを特徴とするコンピュータ読取り可能な媒体。
  129. 前記方法は、システムファイルに含まれるカタログファイルのリストを得ることと、前記カタログファイルのリスト内のカタログファイルに含まれる第2のチェックサムを検索することとをさらに備えることを特徴とする請求項128に記載のコンピュータ読取り可能な媒体。
  130. 前記検証する動作は、前記第1のチェックサムと前記第2のチェックサムとが一致しない場合、前記ソフトウェアイメージが、オリジナルの難読化された保護ダイナミックリンクライブラリではないと判定することを特徴とする請求項129に記載のコンピュータ読取り可能な媒体。
  131. 前記方法は、前記難読化された保護ダイナミックリンクライブラリと、前記第2のチェックサムを含む前記カタログファイルとが信用できるか否かを判定するために、信用チェック用アプリケーションプログラミングインターフェースのセットを呼び出すことをさらに備え、前記信用チェック用アプリケーションプログラミングインターフェースのセットは、状態データを返すことを特徴とする請求項130に記載のコンピュータ読取り可能な媒体。
  132. 前記方法は、前記信用チェック用アプリケーションプログラミングインターフェースのセットを呼び出し、前記状態データを使用して信用できるプロバイダ情報を検索することをさらに備えることを特徴とする請求項131に記載のコンピュータ読取り可能な媒体。
  133. 前記方法は、前記信用チェック用アプリケーションプログラミングインターフェースのセットを呼び出し、前記信用できるプロバイダ情報を使用してベースサイナを検索することをさらに備えることを特徴とする請求項132に記載のコンピュータ読取り可能な媒体。
  134. 前記方法は、前記信用チェック用アプリケーションプログラミングインターフェースのセットを呼び出し、前記ベースサイナのコンテキストを使用して証明書チェーン内の最後の要素を妥当性検査することをさらに備えることを特徴とする請求項133に記載のコンピュータ読取り可能な媒体。
  135. 前記検証する動作は、前記最後の要素が前記ソフトウェアイメージのメーカからの正しい公開キーを含む場合、前記ソフトウェアイメージがオリジナルであるとの結論を下すことを特徴とする請求項134に記載のコンピュータ読取り可能な媒体。
  136. ソフトウェア改ざんを抑止するためのシステムであって、
    難読化された保護ダイナミックリンクライブラリをコンピューティングマシンにロードする前に、前記難読化された保護ダイナミックリンクライブラリの第1のチェックサムを計算する手段と、
    ソフトウェア改ざんを抑止するためのセキュリティエラー対策を講じるべきか否かを判定するために、前記難読化された保護ダイナミックリンクライブラリのソフトウェアイメージのオリジナル性を検証する手段と
    を備えたことを特徴とするシステム。
  137. システムファイルに含まれるカタログファイルのリストを得る手段と、前記カタログファイルのリスト内のカタログファイルに含まれる第2のチェックサムを検索する手段とをさらに備えたことを特徴とする請求項136に記載のシステム。
  138. 前記検証する手段は、前記第1のチェックサムと前記第2のチェックサムとが一致しない場合、前記ソフトウェアイメージが、オリジナルの難読化された保護ダイナミックリンクライブラリではないと判定することを特徴とする請求項137に記載のシステム。
  139. 前記難読化された保護ダイナミックリンクライブラリと、前記第2のチェックサムを含む前記カタログファイルとが信用できるか否かを判定するために、信用チェック用アプリケーションプログラミングインターフェースのセットを呼び出す手段をさらに備え、前記信用チェック用アプリケーションプログラミングインターフェースのセットは、状態データを返すことを特徴とする請求項138に記載のシステム。
  140. ソフトウェアに対してサポート可能なマシンのクラスにコンピューティングマシンが属するか否かを判定するためのコンピュータで実施される方法であって、
    前記コンピューティングマシンの中央処理装置のIDを明らかにする、前記中央処理装置に対する命令セットが存在するかを検証することと、
    前記中央処理装置が自己識別をサポートするアーキテクチャを有する場合、難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードすることと
    を備えることを特徴とする方法。
  141. 前記難読化された保護ダイナミックリンクライブラリと通信して、除外される中央処理装置クラスに関連する暗号化された保護プロファイルにアクセスすることをさらに備えることを特徴とする請求項140に記載の方法。
  142. 暗号化された保護プロファイルから、除外されるコンピューティングマシンクラスのリストを抽出することをさらに備えることを特徴とする請求項141に記載の方法。
  143. 前記中央処理装置に関する情報を前記コンピューティングマシンに明らかにさせることをさらに備え、前記情報は、ベンダIDと、タイプと、ファミリと、モデル番号と、ブランドIDと、特徴セット(feature set)とからなるグループから選択されることを特徴とする請求項142に記載の方法。
  144. 前記ベンダIDが、前記除外されるコンピューティングマシンクラスのリストに存在しない場合、前記難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードする動作を実行することをさらに備えることを特徴とする請求項143に記載の方法。
  145. 前記タイプ、前記ファミリ、および前記モデル番号が、前記除外されるコンピューティングマシンクラスのリストに存在する場合、前記コンピューティングマシンに対する利用可能な保護がないことを伝えるエラーメッセージを発して、前記コンピューティングマシンのシャットダウンを開始することをさらに備えることを特徴とする請求項144に記載の方法。
  146. 前記ブランドIDおよび前記特徴セットが、前記除外されるコンピューティングマシンクラスのリストに存在する場合、前記コンピューティングマシンに対する利用可能な保護がないことを伝えるエラーメッセージを発して、前記コンピューティングマシンのシャットダウンを開始することをさらに備えることを特徴とする請求項145に記載の方法。
  147. 前記中央処理装置のIDを判定する拡張命令が存在しない場合、前記難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードする動作を実行することをさらに備えることを特徴とする請求項146に記載の方法。
  148. 前記中央処理装置の名前を明らかにする拡張命令の実行により、前記名前が、前記除外されるコンピューティングマシンクラスのリストに存在しないことが示された場合、前記難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードする動作を実行することをさらに備えることを特徴とする請求項147に記載の方法。
  149. 前記中央処理装置のキャッシュサイズを明らかにする拡張命令の実行により、前記キャッシュサイズが、前記除外されるコンピューティングマシンクラスのリストに存在しないことが示された場合、前記難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードする動作を実行することをさらに備えることを特徴とする請求項148に記載の方法。
  150. ソフトウェアに対してサポート可能なマシンのクラスにコンピューティングマシンが属するか否かを判定する方法を実行するためのコンピュータ実行可能命令を記憶したコンピュータ読取り可能な媒体であって、
    前記方法は、
    前記コンピューティングマシンの中央処理装置のIDを明らかにする、前記中央処理装置に対する命令セットが存在するかを検証することと、
    前記中央処理装置が自己識別をサポートするアーキテクチャを有する場合、難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードすることと
    を備えることを特徴とするコンピュータ読取り可能な媒体。
  151. 前記方法は、前記難読化された保護ダイナミックリンクライブラリと通信して、除外される中央処理装置クラスに関連する暗号化された保護プロファイルにアクセスすることをさらに備えることを特徴とする請求項150に記載のコンピュータ読取り可能な媒体。
  152. 前記方法は、暗号化された保護プロファイルから、除外されるコンピューティングマシンクラスのリストを抽出することをさらに備えることを特徴とする請求項151に記載のコンピュータ読取り可能な媒体。
  153. 前記方法は、前記中央処理装置に関する情報を前記コンピューティングマシンに明らかにさせることをさらに備え、前記情報は、ベンダIDと、タイプと、ファミリと、モデル番号と、ブランドIDと、特徴セットとからなるグループから選択されることを特徴とする請求項152に記載のコンピュータ読取り可能な媒体。
  154. 前記方法は、前記ベンダIDが、前記除外されるコンピューティングマシンクラスのリストに存在しない場合、前記難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードする動作を実行することをさらに備えることを特徴とする請求項153に記載のコンピュータ読取り可能な媒体。
  155. 前記方法は、前記タイプ、前記ファミリ、および前記モデル番号が、前記除外されるコンピューティングマシンクラスのリストに存在する場合、前記コンピューティングマシンに対する利用可能な保護がないことを伝えるエラーメッセージを発して、前記コンピューティングマシンのシャットダウンを開始することをさらに備えることを特徴とする請求項154に記載のコンピュータ読取り可能な媒体。
  156. 前記方法は、前記ブランドIDおよび前記特徴セットが、前記除外されるコンピューティングマシンクラスのリストに存在する場合、前記コンピューティングマシンに対する利用可能な保護がないことを伝えるエラーメッセージを発して、前記コンピューティングマシンのシャットダウンを開始することをさらに備えることを特徴とする請求項155に記載のコンピュータ読取り可能な媒体。
  157. 前記方法は、前記中央処理装置のIDを判定する拡張命令が存在しない場合、前記難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードする動作を実行することをさらに備えることを特徴とする請求項156に記載のコンピュータ読取り可能な媒体。
  158. 前記方法は、前記中央処理装置の名前を明らかにする拡張命令の実行により、前記名前が、前記除外されるコンピューティングマシンクラスのリストに存在しないことが示された場合、前記難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードする動作を実行することをさらに備えることを特徴とする請求項157に記載のコンピュータ読取り可能な媒体。
  159. 前記方法は、前記中央処理装置のキャッシュサイズを明らかにする拡張命令の実行により、前記キャッシュサイズが、前記除外されるコンピューティングマシンクラスのリストに存在しないことが示された場合、前記難読化された保護ダイナミックリンクライブラリを前記コンピューティングマシンにロードする動作を実行することをさらに備えることを特徴とする請求項158に記載のコンピュータ読取り可能な媒体。
  160. ソフトウェア改ざんを抑止する方法であって、
    コンピューティングマシンの起動時に、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、システムに関連付けられた中央階層型データベースのキーおよび値を保護する第1のスレッドを生成することと、
    ユーザが前記コンピューティングマシンにログオンしたときに、前記ログオンモジュールによって、前記難読化されたダイナミックリンクライブラリの前記保護関数を呼び出して、前記ユーザに関連付けられた前記中央階層型データベースのキーおよび値を保護する第2のスレッドを生成することと
    を備えることを特徴とする方法。
  161. 改ざんから保護すべき前記中央階層型データベースの各キーについての変更通知を行うことをさらに備えることを特徴とする請求項160に記載の方法。
  162. キーの変更についての前記変更通知を受け取り、ソフトウェア改ざんを抑止するために、前記キーおよびキーの値の少なくとも一方を修復することをさらに備えることを特徴とする請求項161に記載の方法。
  163. 前記システムに関連付けられた前記中央階層型データベースの前記キーおよび前記値を保護する前記第1のスレッドの実行の継続性をチェックするための第1のタイマに、前記第1のスレッドのハンドルを提供することをさらに備えることを特徴とする請求項162に記載の方法。
  164. 予め設定された期間が過ぎた後、前記第1のスレッドが終了または一時停止した場合、前記第1のタイマに関連付けられたソフトウェアが、システムのシャットダウンを開始することをさらに備えることを特徴とする請求項163に記載の方法。
  165. 前記第1のスレッドにより、前記難読化された保護ダイナミックリンクライブラリと通信して、前記中央階層型データベース内のシステムキーおよび値に関連する暗号化された保護プロファイルにアクセスすることをさらに備えることを特徴とする請求項164に記載の方法。
  166. 前記ユーザに関連付けられた前記中央階層型データベースの前記キーおよび前記値を保護する前記第2のスレッドの実行の継続性をチェックするための第2のタイマに、前記第2のスレッドのハンドルを提供することをさらに備えることを特徴とする請求項162に記載の方法。
  167. 予め設定された期間が過ぎた後、前記第2のスレッドが終了または一時停止した場合、前記第2のタイマに関連付けられたソフトウェアが、システムのシャットダウンを開始することをさらに備えることを特徴とする請求項166に記載の方法。
  168. 前記第2のスレッドにより、前記難読化された保護ダイナミックリンクライブラリと通信して、前記中央階層型データベース内のユーザレジストリキーおよび値に関連する暗号化された保護プロファイルにアクセスすることをさらに備えることを特徴とする請求項167に記載の方法。
  169. ソフトウェア改ざんを抑止する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ読取り可能な媒体であって、
    前記方法は、
    コンピューティングマシンの起動時に、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、システムに関連付けられた中央階層型データベースのキーおよび値を保護する第1のスレッドを生成することと、
    ユーザが前記コンピューティングマシンにログオンしたときに、前記ログオンモジュールによって、前記難読化されたダイナミックリンクライブラリの前記保護関数を呼び出して、前記ユーザに関連付けられた前記中央階層型データベースのキーおよび値を保護する第2のスレッドを生成することと
    を備えることを特徴とするコンピュータ読取り可能な媒体。
  170. 前記方法は、改ざんから保護すべき前記中央階層型データベースの各キーについての変更通知を行うことをさらに備えることを特徴とする請求項169に記載のコンピュータ読取り可能な媒体。
  171. 前記方法は、キーの変更についての前記変更通知を受け取り、ソフトウェア改ざんを抑止するために、前記キーおよびキーの値の少なくとも一方を修復することをさらに備えることを特徴とする請求項170に記載のコンピュータ読取り可能な媒体。
  172. 前記方法は、前記システムに関連付けられた前記中央階層型データベースの前記キーおよび前記値を保護する前記第1のスレッドの実行の継続性をチェックするための第1のタイマに、前記第1のスレッドのハンドルを提供することをさらに備えることを特徴とする請求項171に記載のコンピュータ読取り可能な媒体。
  173. 前記方法は、予め設定された期間が過ぎた後、前記第1のスレッドが終了または一時停止した場合、前記第1のタイマに関連付けられたソフトウェアが、システムのシャットダウンを開始することをさらに備えることを特徴とする請求項172に記載のコンピュータ読取り可能な媒体。
  174. 前記方法は、前記第1のスレッドにより、前記難読化された保護ダイナミックリンクライブラリと通信して、前記中央階層型データベース内のシステムキーおよび値に関連する暗号化された保護プロファイルにアクセスすることをさらに備えることを特徴とする請求項173に記載のコンピュータ読取り可能な媒体。
  175. 前記方法は、前記ユーザに関連付けられた前記中央階層型データベースの前記キーおよび前記値を保護する前記第2のスレッドの実行の継続性をチェックするための第2のタイマに、前記第2のスレッドのハンドルを提供することをさらに備えることを特徴とする請求項171に記載のコンピュータ読取り可能な媒体。
  176. 前記方法は、予め設定された期間が過ぎた後、前記第2のスレッドが終了または一時停止した場合、前記第2のタイマに関連付けられたソフトウェアが、システムのシャットダウンを開始することをさらに備えることを特徴とする請求項175に記載のコンピュータ読取り可能な媒体。
  177. 前記方法は、前記第2のスレッドにより、前記難読化された保護ダイナミックリンクライブラリと通信して、前記中央階層型データベース内のユーザレジストリキーおよび値に関連する暗号化された保護プロファイルにアクセスすることをさらに備えることを特徴とする請求項176に記載のコンピュータ読取り可能な媒体。
  178. ソフトウェア改ざんを抑止するためのシステムであって、
    コンピューティングマシンの起動時に、ログオンモジュールによって、難読化されたダイナミックリンクライブラリの保護関数を呼び出して、システムに関連付けられた中央階層型データベースのキーおよび値を保護する第1のスレッドを生成する手段と、
    ユーザが前記コンピューティングマシンにログオンしたときに、前記ログオンモジュールによって、前記難読化されたダイナミックリンクライブラリの前記保護関数を呼び出して、前記ユーザに関連付けられた前記中央階層型データベースのキーおよび値を保護する第2のスレッドを生成する手段と
    を備えたことを特徴とするシステム。
  179. 改ざんから保護すべき前記中央階層型データベースの各キーについての変更通知を行い、キーの変更についての前記変更通知を受け取り、ソフトウェア改ざんを抑止するために、前記キーおよびキーの値の少なくとも一方を修復することをさらに備えたことを特徴とする請求項178に記載のシステム。
JP2007527785A 2004-06-12 2005-06-10 ソフトウェアのセキュリティ確保 Expired - Fee Related JP4729575B2 (ja)

Applications Claiming Priority (21)

Application Number Priority Date Filing Date Title
US57893704P 2004-06-12 2004-06-12
US60/578,937 2004-06-12
US11/061,790 2005-02-17
US11/061,399 2005-02-17
US11/061,791 US7584509B2 (en) 2004-06-12 2005-02-17 Inhibiting software tampering
US11/061,411 US7631360B2 (en) 2004-06-12 2005-02-17 Hardware protection
US11/062,238 2005-02-17
US11/061,484 2005-02-17
US11/062,238 US7526805B2 (en) 2004-06-12 2005-02-17 Thread protection
US11/061,280 2005-02-17
US11/061,792 US7577997B2 (en) 2004-06-12 2005-02-17 Image verification
US11/061,484 US7640592B2 (en) 2004-06-12 2005-02-17 Installation setup
US11/061,791 2005-02-17
US11/061,792 2005-02-17
US11/062,237 2005-02-17
US11/061,790 US7559091B2 (en) 2004-06-12 2005-02-17 Software obfuscation
US11/062,237 US7552337B2 (en) 2004-06-12 2005-02-17 Service protection
US11/061,280 US7891008B2 (en) 2004-06-12 2005-02-17 Profile protection
US11/061,411 2005-02-17
US11/061,399 US7721340B2 (en) 2004-06-12 2005-02-17 Registry protection
PCT/US2005/020638 WO2005125081A2 (en) 2004-06-12 2005-06-10 Securing software

Publications (3)

Publication Number Publication Date
JP2008503014A true JP2008503014A (ja) 2008-01-31
JP2008503014A5 JP2008503014A5 (ja) 2008-07-31
JP4729575B2 JP4729575B2 (ja) 2011-07-20

Family

ID=35510448

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007527785A Expired - Fee Related JP4729575B2 (ja) 2004-06-12 2005-06-10 ソフトウェアのセキュリティ確保

Country Status (5)

Country Link
US (8) US7584509B2 (ja)
EP (1) EP1757008B1 (ja)
JP (1) JP4729575B2 (ja)
KR (3) KR101187554B1 (ja)
WO (1) WO2005125081A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009129451A (ja) * 2007-11-20 2009-06-11 Korea Electronics Telecommun 悪性コードによって挿入されたダイナミックリンクライブラリ検出装置及び方法
JP2013537760A (ja) * 2010-08-05 2013-10-03 ジェムアルト エスアー セキュリティ部品及び携帯通信装置において複数の加入者プロファイルを安全に使用するシステムと方法
JP2016535354A (ja) * 2013-08-22 2016-11-10 インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. 共通中間言語ベースのプログラムのためのセキュリティ提供方法
JP2016540282A (ja) * 2013-10-10 2016-12-22 インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. 動的ライブラリを保護する方法及び装置
JP2020060958A (ja) * 2018-10-10 2020-04-16 株式会社Nttドコモ 難読化判定装置

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2778053A (en) * 1954-09-13 1957-01-22 Duro Metal Products Co Separable hinged mounting for motors or the like
AU9291001A (en) * 2000-09-22 2002-04-02 Edc Systems Inc Systems and methods for preventing unauthorized use of digital content
US8103592B2 (en) * 2003-10-08 2012-01-24 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf of first process
US8271803B2 (en) * 2003-10-08 2012-09-18 Microsoft Corporation Anti-debugging protection of binaries with proxy code execution
US7788496B2 (en) 2003-10-08 2010-08-31 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf thereof
US7979911B2 (en) 2003-10-08 2011-07-12 Microsoft Corporation First computer process and second computer process proxy-executing code from third computer process on behalf of first process
US7860239B2 (en) * 2004-07-07 2010-12-28 International Business Machines Corporation Method and apparatus for metering usage of software products using multiple signatures
US7841009B1 (en) * 2004-07-09 2010-11-23 Angel Secure Networks System and method for defending against reverse engineering of software, firmware and hardware
US20060021066A1 (en) * 2004-07-26 2006-01-26 Ray Clayton Data encryption system and method
US20060259900A1 (en) * 2005-05-12 2006-11-16 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
US20060259903A1 (en) * 2005-05-12 2006-11-16 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
GB0516471D0 (en) * 2005-08-10 2005-09-14 Symbian Software Ltd Protected software identifiers for improving security in a computing device
US8214296B2 (en) * 2006-02-14 2012-07-03 Microsoft Corporation Disaggregated secure execution environment
US20070192824A1 (en) * 2006-02-14 2007-08-16 Microsoft Corporation Computer hosting multiple secure execution environments
US8020001B2 (en) * 2006-02-23 2011-09-13 Qualcomm Incorporated Trusted code groups
US8010947B2 (en) 2006-05-23 2011-08-30 International Business Machines Corporation Discovering multi-component software products based on weighted scores
US7814544B1 (en) * 2006-06-22 2010-10-12 Symantec Corporation API-profile guided unpacking
US7805289B2 (en) 2006-07-10 2010-09-28 Microsoft Corporation Aligning hierarchal and sequential document trees to identify parallel data
US8700915B2 (en) * 2006-07-12 2014-04-15 Irdeto Corporate B.V. Method and system for verifying authenticity of at least part of an execution environment for executing a computer module
US8392996B2 (en) * 2006-08-08 2013-03-05 Symantec Corporation Malicious software detection
US20080099141A1 (en) * 2006-10-26 2008-05-01 Ashland Inc. Method of producing flexible laminates
US8584109B2 (en) 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
US8356356B2 (en) * 2007-01-30 2013-01-15 Microsoft Corporation Anti-debugger comprising spatially and temporally separate detection and response portions
US8286138B2 (en) * 2007-01-30 2012-10-09 Microsoft Corporation Multi-threaded detection of a game software debugger
JP4903071B2 (ja) * 2007-03-15 2012-03-21 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US20080229115A1 (en) * 2007-03-16 2008-09-18 Microsoft Corporation Provision of functionality via obfuscated software
US20080263366A1 (en) * 2007-04-19 2008-10-23 Microsoft Corporation Self-verifying software to prevent reverse engineering and piracy
US8336107B2 (en) * 2007-04-27 2012-12-18 Angel Secure Networks, Inc. System and methods for defending against root
US8176473B2 (en) * 2007-05-14 2012-05-08 Microsoft Corporation Transformations for software obfuscation and individualization
US9545258B2 (en) 2007-05-17 2017-01-17 Boston Scientific Scimed, Inc. Tissue aperture securing and sealing apparatuses and related methods of use
US10552701B2 (en) * 2008-02-01 2020-02-04 Oath Inc. System and method for detecting the source of media content with application to business rules
US8856500B2 (en) 2008-02-06 2014-10-07 Nxp B.V. Obfuscating program by scattering sequential instructions into memory regions such that jumps occur with steps of both signs in equal frequency
US8621187B2 (en) 2008-02-11 2013-12-31 Nxp, B.V. Method of program obfuscation and processing device for executing obfuscated programs
US8208900B2 (en) * 2008-03-04 2012-06-26 Apple Inc. Secure device configuration profiles
US8176337B2 (en) * 2008-03-12 2012-05-08 Apple Inc. Computer object code obfuscation using boot installation
CN101983379B (zh) * 2008-04-02 2014-04-02 惠普开发有限公司 盘驱动器数据加密
US8752185B2 (en) * 2008-05-01 2014-06-10 Yahoo! Inc. Method for media fingerprinting
EP2234031A1 (en) * 2009-03-24 2010-09-29 SafeNet, Inc. Obfuscation
US8474052B2 (en) * 2009-12-09 2013-06-25 Microsoft Corporation User-administered license state verification
US20110225649A1 (en) * 2010-03-11 2011-09-15 International Business Machines Corporation Protecting Computer Systems From Malicious Software
JP2013523043A (ja) 2010-03-22 2013-06-13 エルアールディシー システムズ、エルエルシー ソースデータセットの完全性を識別及び保護する方法
JP5380604B2 (ja) 2010-03-26 2014-01-08 株式会社東芝 情報記録装置
US11297045B2 (en) 2010-03-26 2022-04-05 Kioxia Corporation Information recording apparatus with shadow boot program for authentication with a server
JP5585257B2 (ja) * 2010-07-16 2014-09-10 株式会社リコー 画像形成装置、機器システム、プログラム管理方法、プログラム
TWI420339B (zh) 2010-11-10 2013-12-21 Ind Tech Res Inst 軟體授權系統及方法
US8499173B2 (en) * 2010-11-23 2013-07-30 Lockheed Martin Corporation Apparatus and method for protection of circuit boards from tampering
US8683452B1 (en) * 2010-12-21 2014-03-25 Emc Corporation Dynamically obfuscated javascript
JP5932837B2 (ja) 2011-01-19 2016-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コードを更新および認証するための方法およびシステム、プログラムの完全性を試験する方法およびシステム
US9058482B2 (en) 2011-03-01 2015-06-16 Angel Secure Networks, Inc. Controlling user access to electronic resources without password
US8930717B2 (en) 2011-03-01 2015-01-06 Angel Secure Networks, Inc. Secure processing module and method for making the same
JP2014515858A (ja) * 2011-04-29 2014-07-03 北京中天安泰信息科技有限公司 実行中の命令を再結合する方法および装置
US8516273B2 (en) * 2011-05-31 2013-08-20 Asobe Systems Incorporated Porting digital rights management service to multiple computing platforms
US8595510B2 (en) 2011-06-22 2013-11-26 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US8181035B1 (en) 2011-06-22 2012-05-15 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US8261085B1 (en) * 2011-06-22 2012-09-04 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US9111072B1 (en) * 2011-08-23 2015-08-18 Tectonic Labs, LLC Anti-reverse engineering unified process
US9519648B2 (en) * 2011-09-27 2016-12-13 International Business Machines Corporation Software detection
US9280377B2 (en) 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
US20140032733A1 (en) 2011-10-11 2014-01-30 Citrix Systems, Inc. Policy-Based Application Management
US9215225B2 (en) 2013-03-29 2015-12-15 Citrix Systems, Inc. Mobile device locking with context
US9286471B2 (en) 2011-10-11 2016-03-15 Citrix Systems, Inc. Rules based detection and correction of problems on mobile devices of enterprise users
US8640242B2 (en) * 2011-12-01 2014-01-28 Mcafee, Inc. Preventing and detecting print-provider startup malware
US9052824B2 (en) * 2012-01-26 2015-06-09 Upthere, Inc. Content addressable stores based on sibling groups
US9608881B2 (en) * 2012-04-13 2017-03-28 International Business Machines Corporation Service compliance enforcement using user activity monitoring and work request verification
US8997230B1 (en) * 2012-06-15 2015-03-31 Square, Inc. Hierarchical data security measures for a mobile device
CN102799815B (zh) * 2012-06-29 2015-07-29 安科智慧城市技术(中国)有限公司 一种安全加载程序库的方法和装置
CN104408333B (zh) * 2012-09-24 2017-06-13 江苏理工学院 一种基于片上系统多核融合的软件保护装置
US8613070B1 (en) 2012-10-12 2013-12-17 Citrix Systems, Inc. Single sign-on access in an orchestration framework for connected devices
US9774658B2 (en) 2012-10-12 2017-09-26 Citrix Systems, Inc. Orchestration framework for connected devices
US9516022B2 (en) 2012-10-14 2016-12-06 Getgo, Inc. Automated meeting room
US8910239B2 (en) 2012-10-15 2014-12-09 Citrix Systems, Inc. Providing virtualized private network tunnels
US20140109176A1 (en) 2012-10-15 2014-04-17 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US9170800B2 (en) 2012-10-16 2015-10-27 Citrix Systems, Inc. Application wrapping for application management framework
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
US20140108793A1 (en) 2012-10-16 2014-04-17 Citrix Systems, Inc. Controlling mobile device access to secure data
US9606774B2 (en) 2012-10-16 2017-03-28 Citrix Systems, Inc. Wrapping an application with field-programmable business logic
GB2505531B (en) * 2012-11-16 2015-01-07 F Secure Corp Methods, systems and apparatus for managing data entries on a database
US9270660B2 (en) 2012-11-25 2016-02-23 Angel Secure Networks, Inc. System and method for using a separate device to facilitate authentication
CN104812833B (zh) * 2012-12-12 2016-10-12 日本瑞翁株式会社 粉体成形用氯乙烯树脂组合物、氯乙烯树脂成形体和层合体
WO2014142817A1 (en) * 2013-03-13 2014-09-18 Intel Corporation Managing device driver cross ring accesses
US8875247B2 (en) 2013-03-14 2014-10-28 Facebook, Inc. Instant personalization security
US9985850B2 (en) 2013-03-29 2018-05-29 Citrix Systems, Inc. Providing mobile device management functionalities
US9455886B2 (en) 2013-03-29 2016-09-27 Citrix Systems, Inc. Providing mobile device management functionalities
US9369449B2 (en) 2013-03-29 2016-06-14 Citrix Systems, Inc. Providing an enterprise application store
US9355223B2 (en) 2013-03-29 2016-05-31 Citrix Systems, Inc. Providing a managed browser
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US8943592B1 (en) * 2013-07-15 2015-01-27 Eset, Spol. S.R.O. Methods of detection of software exploitation
DE102014204417A1 (de) 2014-03-11 2015-09-17 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Detektieren einer Manipulation an einem Programmcode
US9639673B2 (en) 2014-06-17 2017-05-02 Apple Inc. Protecting software through a fake cryptographic layer
CN104217137B (zh) * 2014-08-29 2017-09-29 广东欧珀移动通信有限公司 一种识别智能终端系统是否被更改的方法及装置
EP3197953B1 (de) * 2014-09-24 2018-05-23 Evonik Röhm GmbH Schlagzäh ausgerüstete formmasse mit verbessertem eigenschaftsprofil
US9483381B2 (en) * 2014-12-15 2016-11-01 Dell Products L.P. Obfuscating debugging filenames
US10733594B1 (en) 2015-05-11 2020-08-04 Square, Inc. Data security measures for mobile devices
CN104933332B (zh) * 2015-06-10 2018-07-13 北京北信源软件股份有限公司 一种防止软件被非法卸载的方法及装置
KR20170010574A (ko) 2015-07-20 2017-02-01 삼성전자주식회사 정보처리장치, 영상처리장치 및 그들의 제어방법
WO2017146721A1 (en) 2016-02-26 2017-08-31 Hewlett Packard Enterprise Development Lp Fault isolation in transaction logs
US10594731B2 (en) 2016-03-24 2020-03-17 Snowflake Inc. Systems, methods, and devices for securely managing network connections
US10546302B2 (en) 2016-06-30 2020-01-28 Square, Inc. Logical validation of devices against fraud and tampering
US10373167B2 (en) 2016-06-30 2019-08-06 Square, Inc. Logical validation of devices against fraud
US10474446B2 (en) * 2016-09-16 2019-11-12 Bank Of America Corporation Installation tool for adhering to enterprise requirements
US10404667B2 (en) * 2016-11-17 2019-09-03 Bank Of America Corporation Secure, autonomous file encryption and decryption
US10496993B1 (en) 2017-02-15 2019-12-03 Square, Inc. DNS-based device geolocation
US10552308B1 (en) 2017-06-23 2020-02-04 Square, Inc. Analyzing attributes of memory mappings to identify processes running on a device
US10715536B2 (en) 2017-12-29 2020-07-14 Square, Inc. Logical validation of devices against fraud and tampering
US11005971B2 (en) * 2018-08-02 2021-05-11 Paul Swengler System and method for user device authentication or identity validation without passwords or matching tokens
US11494762B1 (en) 2018-09-26 2022-11-08 Block, Inc. Device driver for contactless payments
US11507958B1 (en) 2018-09-26 2022-11-22 Block, Inc. Trust-based security for transaction payments
EP4004773B1 (en) 2019-07-29 2023-09-06 Intertrust Technologies Corporation Systems and methods for managing state
US11610004B2 (en) * 2021-04-14 2023-03-21 Bank Of America Corporation System for implementing enhanced file encryption technique

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04107631A (ja) * 1990-08-28 1992-04-09 Seiko Epson Corp 情報処理装置
JPH06242957A (ja) * 1993-02-16 1994-09-02 Fujitsu Ltd プログラム実行制御装置
WO2003100610A1 (en) * 2002-05-28 2003-12-04 Toshiba Corporation System update protocol and bootable cd controller
JP2004013608A (ja) * 2002-06-07 2004-01-15 Hitachi Ltd プログラムの実行および転送の制御

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9422389D0 (en) 1994-11-05 1995-01-04 Int Computers Ltd Authenticating access control for sensitive functions
JPH08263438A (ja) 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
CN1912885B (zh) 1995-02-13 2010-12-22 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US6006328A (en) 1995-07-14 1999-12-21 Christopher N. Drake Computer software authentication, protection, and security system
US5802368A (en) * 1995-09-29 1998-09-01 Informix Software, Inc. Dynamic Library Task Switching
US5794232A (en) 1996-03-15 1998-08-11 Novell, Inc. Catalog services for distributed directories
US5845129A (en) 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
WO1999001815A1 (en) 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
US20040107368A1 (en) 1998-06-04 2004-06-03 Z4 Technologies, Inc. Method for digital rights management including self activating/self authentication software
US20020002678A1 (en) 1998-08-14 2002-01-03 Stanley T. Chow Internet authentication technology
US20020062451A1 (en) * 1998-09-01 2002-05-23 Scheidt Edward M. System and method of providing communication security
US7140005B2 (en) 1998-12-21 2006-11-21 Intel Corporation Method and apparatus to test an instruction sequence
WO2000039987A1 (de) * 1998-12-29 2000-07-06 Swisscom Ag Verfahren und system, um benutzern eines telekommunikationsnetzes objekte zur verfügung zu stellen
US6421768B1 (en) * 1999-05-04 2002-07-16 First Data Corporation Method and system for authentication and single sign on using cryptographically assured cookies in a distributed computer environment
US7146505B1 (en) 1999-06-01 2006-12-05 America Online, Inc. Secure data exchange between date processing systems
US6731756B1 (en) 1999-06-21 2004-05-04 Elisar Software Corporation, Inc. Method for securing video images
WO2001008345A1 (en) 1999-07-22 2001-02-01 Open Security Solutions, Llc A computer system and process for accessing an encrypted and self-decrypting digital information product
ATE365944T1 (de) 1999-10-26 2007-07-15 Iontas Ltd Überwachung von rechnerbenutzung
US6898707B1 (en) * 1999-11-30 2005-05-24 Accela, Inc. Integrating a digital signature service into a database
US20030014315A1 (en) * 1999-12-03 2003-01-16 Harri Jaalinoja Method and a system for obtaining services using a cellular telecommunication system
US7539875B1 (en) 2000-06-27 2009-05-26 Microsoft Corporation Secure repository with layers of tamper resistance and system and method for providing same
AU6371500A (en) * 2000-07-25 2002-02-05 Mediadna Inc System and method of verifying the authenticity of dynamically connectable executable images
US7181017B1 (en) * 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
US7000100B2 (en) 2001-05-31 2006-02-14 Hewlett-Packard Development Company, L.P. Application-level software watchdog timer
NL1018494C2 (nl) 2001-07-09 2003-01-10 Koninkl Kpn Nv Methode en systeem voor het door een dienstproces aan een client leveren van een dienst.
US7424615B1 (en) 2001-07-30 2008-09-09 Apple Inc. Mutually authenticated secure key exchange (MASKE)
US20040054952A1 (en) * 2002-09-13 2004-03-18 Morrow James W. Device verification system and method
US7320075B2 (en) * 2001-11-20 2008-01-15 Safenet, Inc. Software protection method utilizing hidden application code in a protection dynamic link library object
US7249262B2 (en) * 2002-05-06 2007-07-24 Browserkey, Inc. Method for restricting access to a web site by remote users
US7318235B2 (en) * 2002-12-16 2008-01-08 Intel Corporation Attestation using both fixed token and portable token
US7607009B2 (en) 2003-02-10 2009-10-20 International Business Machines Corporation Method for distributing and authenticating public keys using time ordered exchanges
US7251732B2 (en) * 2003-06-18 2007-07-31 Microsoft Corporation Password synchronization in a sign-on management system
US7281271B1 (en) 2003-09-25 2007-10-09 Symantec Corporation Exception handling validation system and method
US7478146B2 (en) * 2003-11-03 2009-01-13 Nokia Corporation System, apparatus, and method for communicating capabilities of a mobile device
US7555568B2 (en) * 2004-02-28 2009-06-30 Huang Evan S Method and apparatus for operating a host computer from a portable apparatus

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04107631A (ja) * 1990-08-28 1992-04-09 Seiko Epson Corp 情報処理装置
JPH06242957A (ja) * 1993-02-16 1994-09-02 Fujitsu Ltd プログラム実行制御装置
WO2003100610A1 (en) * 2002-05-28 2003-12-04 Toshiba Corporation System update protocol and bootable cd controller
JP2005527908A (ja) * 2002-05-28 2005-09-15 株式会社東芝 システム更新プロトコルおよび埋込みオペレーティングシステムを備えたブート可能なcdコントローラ
JP2004013608A (ja) * 2002-06-07 2004-01-15 Hitachi Ltd プログラムの実行および転送の制御

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009129451A (ja) * 2007-11-20 2009-06-11 Korea Electronics Telecommun 悪性コードによって挿入されたダイナミックリンクライブラリ検出装置及び方法
JP2013537760A (ja) * 2010-08-05 2013-10-03 ジェムアルト エスアー セキュリティ部品及び携帯通信装置において複数の加入者プロファイルを安全に使用するシステムと方法
JP2016535354A (ja) * 2013-08-22 2016-11-10 インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. 共通中間言語ベースのプログラムのためのセキュリティ提供方法
JP2016540282A (ja) * 2013-10-10 2016-12-22 インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. 動的ライブラリを保護する方法及び装置
JP2020060958A (ja) * 2018-10-10 2020-04-16 株式会社Nttドコモ 難読化判定装置
JP7084273B2 (ja) 2018-10-10 2022-06-14 株式会社Nttドコモ 難読化判定装置

Also Published As

Publication number Publication date
US20050278782A1 (en) 2005-12-15
EP1757008B1 (en) 2018-09-26
US20060005252A1 (en) 2006-01-05
US7526805B2 (en) 2009-04-28
US20050278553A1 (en) 2005-12-15
US7584509B2 (en) 2009-09-01
US7891008B2 (en) 2011-02-15
EP1757008A2 (en) 2007-02-28
KR20110110866A (ko) 2011-10-07
US20050278791A1 (en) 2005-12-15
JP4729575B2 (ja) 2011-07-20
US20050278535A1 (en) 2005-12-15
US20060005249A1 (en) 2006-01-05
WO2005125081A2 (en) 2005-12-29
KR101159487B1 (ko) 2012-06-22
US7559091B2 (en) 2009-07-07
US7577997B2 (en) 2009-08-18
US7640592B2 (en) 2009-12-29
US7552337B2 (en) 2009-06-23
KR101187554B1 (ko) 2012-10-02
US20060005250A1 (en) 2006-01-05
KR20110119808A (ko) 2011-11-02
KR20110119809A (ko) 2011-11-02
WO2005125081A3 (en) 2006-03-23
US7631360B2 (en) 2009-12-08
EP1757008A4 (en) 2012-11-21
KR101187521B1 (ko) 2012-10-02
US20060005251A1 (en) 2006-01-05

Similar Documents

Publication Publication Date Title
JP4729575B2 (ja) ソフトウェアのセキュリティ確保
US7721340B2 (en) Registry protection
JP4702957B2 (ja) 耐タンパ・トラステッド仮想マシン
JP4796340B2 (ja) 状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法
EP2689375B1 (en) System and method for securely binding and node-locking program execution to a trusted signature authority
CN107533594B (zh) 验证软件的方法、安全软件系统及可读存储介质
US8656190B2 (en) One time settable tamper resistant software repository
KR20130114703A (ko) 보안 상태 전환을 관리하기 위한 방법 및 장치
Chen et al. Sweetdroid: Toward a context-sensitive privacy policy enforcement framework for android os
KR101203245B1 (ko) 소프트웨어 보안
CN112685697B (zh) 一种防止安卓应用被破解篡改的方法及终端

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080610

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080610

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110322

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: 20110412

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110418

R150 Certificate of patent or registration of utility model

Ref document number: 4729575

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: 20140422

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees