首页 / 专利库 / 软件 / 软件解决方案 / Method and program for providing tamper resistance

Method and program for providing tamper resistance

阅读:773发布:2024-02-21

专利汇可以提供Method and program for providing tamper resistance专利检索,专利查询,专利分析的服务。并且PROBLEM TO BE SOLVED: To provide a method for increasing security of software. SOLUTION: Tamper resistance is provided to prevent reading of an operation of a software part by calling functions which can be exclusively used by one distinguished section of a processor, its peripheral equipment and a driver from other distinguished section. Pseudo random binary sequence generators 110, 120 are related to each of such distinguished sections and each of them can be made incremental according to call and execution of the functions. Values of the pseudo random binary sequences are compared with each other before permitting or preventing further execution of the software. This comparison can be executed at all privileged levels and additional security is provided by using an additional privileged function to execute the comparison by modification of this invention.,下面是Method and program for providing tamper resistance专利的具体信息内容。

【特許請求の範囲】
  • 【請求項1】1つの区別化されたセクションが他の区別化されたセクション上で利用できないファンクションを実行できる、区別化されたセクションを有するプロセッサ上で実行されるソフトウェアに耐タンパー性を与える方法であって、 前記他の区別化されたセクションと関連する第1の疑似ランダム2進シーケンス(PRBS)ジェネレータをインクリメントするステップと、 前記1つの区別化されたセクションの前記ファンクションを、前記他の区別化されたセクションから呼び出すステップと、 前記1つの区別化されたセクションと関連する第2の疑似ランダム2進シーケンス・ジェネレータをインクリメントするステップと、 前記ファンクションを実行するステップと、 前記第1および前記第2の疑似ランダム2進シーケンス・ジェネレータの疑似ランダム2進シーケンス値を比較するステップと、 前記比較するステップの結果によって、前記ソフトウェアの実行を制御するステップとを含む方法。
  • 【請求項2】前記ファンクションは、前記区別化されたセクションのPRBSジェネレータをインクリメントすることに制限される、請求項1に記載の方法。
  • 【請求項3】前記1つの区別化されたセクションで利用できるさらなるファンクションは、前記他の区別化されたセクションからの疑似ランダム2進シーケンス値を呼び出し、前記1つの区別化されたセクションにおいて前記比較するステップを実行する、請求項1に記載の方法。
  • 【請求項4】前記さらなるファンクションは、前記1つの区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータをインクリメントし、前記他の区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータは、前記さらなるファンクションが呼び出されるとインクリメントされる、請求項3に記載の方法。
  • 【請求項5】前記1つの区別化されたセクションで利用できるさらなるファンクションは、前記他の区別化されたセクションから前記疑似ランダム2進シーケンス値を呼び出し、前記1つの区別化されたセクションにおいて比較するステップを実行する、請求項2に記載の方法。
  • 【請求項6】前記さらなるファンクションは、前記1つの区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータをインクリメントし、前記他の区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータは、前記さらなるファンクションが呼び出されるとインクリメントされる、請求項5に記載の方法。
  • 【請求項7】アルゴリズムと前記他の区別化されたセクションの疑似ランダム2進シーケンス値を用いて、データを変更するステップと、 前記アルゴリズムの逆のファンクションを有する他のアルゴリズムと、前記1つの区別化されたセクションにおける疑似ランダム2進シーケンス値とを用いて、データを変更するステップとをさらに含み、 前記1つの区別化されたセクションと前記他の区別化されたセクションとの前記疑似ランダム2進シーケンス値が同じであると、前記アルゴリズムによって変更されたデータが、復元される、請求項1に記載の方法。
  • 【請求項8】前記区別化されたセクションは、異なる特権レベルである、請求項1に記載の方法。
  • 【請求項9】1つの区別化されたセクションが、他の区別化されたセクション上では利用できないファンクションを実行することができる、区別化されたセクションを有するプロセッサ上で実行されるソフトウェアに耐タンパー性を与える方法であって、 アルゴリズムと前記他の区別化されたセクションの疑似ランダム2進シーケンス値を用いて、データを変更するステップと、 前記アルゴリズムと逆のファンクションを有する他のアルゴリズムと、前記1つの区別化されたセクションにおける疑似ランダム2進シーケンス値とを用いて、データを変更するステップとを含み、 前記1つの区別化されたセクションおよび前記他の区別化されたセクションの前記疑似ランダム2進シーケンス値が同じであると、前記アルゴリズムによって変更されたデータが、復元される、方法。
  • 【請求項10】前記区別化されたセクションは、異なる特権レベルである、請求項9に記載の方法。
  • 【請求項11】1つの区別化されたセクションが、他の区別化されたセクション上で利用できないファンクションを実行することができる、区別化されたセクションを有するプロセッサを制御する記憶プログラムであって、 前記プロセッサに、 前記他の区別化されたセクションに関連する第1の疑似ランダム2進シーケンス・ジェネレータをインクリメントするステップと、 前記1つの区別化されたセクションの前記ファンクションを、前記他の区別化されたセクションから呼び出すステップと、 前記1つの区別化されたセクションに関連する第2の疑似ランダム2進シーケンス・ジェネレータをインクリメントするステップと、 前記ファンクションを実行するステップと、 前記第1および第2の疑似ランダム2進シーケンス・ジェネレータの疑似ランダム2進シーケンス値を比較するステップと、 前記比較するステップの結果によって、前記記憶プログラムの実行を制御するステップとを実行させるコマンドを含み、 前記記憶プログラムの実行を、タンパリングを検出すると、制御することができる、記憶プログラム。
  • 【請求項12】前記ファンクションは、前記区別化されたセクションのPRBSジェネレータをインクリメントすることに制限される、請求項11に記載のプログラム。
  • 【請求項13】前記1つの区別化されたセクションで利用できるさらなるファンクションは、前記他の区別化されたセクションからの前記疑似ランダム2進シーケンス値を呼び出し、前記1つの区別化されたセクションにおける前記比較するステップを実行する、請求項11に記載のプログラム。
  • 【請求項14】前記さらなるファンクションは、前記1
    つの区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータをインクリメントし、前記他の区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータは、前記さらなるファンクションが呼び出されるとインクリメントされる、請求項13に記載のプログラム。
  • 【請求項15】前記1つの区別化されたセクションで利用できるさらなるファンクションは、前記他の区別化されたセクションからの疑似ランダム2進シーケンス値を呼び出し、前記1つの区別化されたセクションにおいて前記比較ステップを行う、請求項12に記載のプログラム。
  • 【請求項16】前記さらなるファンクションは、前記1
    つの区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータをインクリメントし、前記他の区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータは、前記さらなるファンクションが呼び出されるとインクリメントされる、請求項15に記載のプログラム。
  • 【請求項17】アルゴリズムと前記他の区別化されたセクションの疑似ランダム2進シーケンス値を用いて、データを変更するステップと、 前記アルゴリズムの逆のファンクションを有する他のアルゴリズムと、前記1つの区別化されたセクションの疑似ランダム2進シーケンス値とを用いて、データを変更するステップとをさらに含み、 前記1つの区別化されたセクションと前記他の区別化されたセクションとの疑似ランダム2進シーケンス値が、
    同じであると、前記アルゴリズムによって変更されたデータが、復元される、請求項11に記載のプログラム。
  • 【請求項18】1つの区別化されたセクションが、他の区別化されたセクション上で利用できないファンクションを実行することができる、区別化されたセクションを有するプロセッサを制御する記憶プログラムであって、 前記プロセッサに、 アルゴリズムと前記他の区別化されたセクションの疑似ランダム2進シーケンス値を用いて、データを変更するステップと、 前記アルゴリズムの逆のファンクションを有する他のアルゴリズムと、前記1つの区別化されたセクションの疑似ランダム2進シーケンス値とを用いて、データを変更するステップとを実行させるコマンドを含み、 前記1つの区別化されたセクションと前記他の区別化されたセクションとの疑似ランダム2進シーケンス値が、
    同じであると、前記アルゴリズムによって変更されたデータは、復元され、 前記記憶プログラムの実行は、タンパリングを検出すると制御される、記憶プログラム。
  • 说明书全文

    【発明の詳細な説明】

    【0001】

    【発明の属する技術分野】本発明は、一般に、コンピュータのソフトウェア・アプリケーションのセキュリティの形成に関し、特に、無許可の人によるアプリケーション・プログラムの動作の読み取りを防ぐための装置に関する。

    【0002】

    【従来の技術】コンピュータのアプリケーション・ソフトウェアの数および多様性は、過去数年の間に拡大されてきた。 コンピュータのハードウェア開発は、このようなアプリケーション・プログラムのファンクションを著しく拡大させ、従って、書き込まなければならないコードの量および他の開発コストが、著しく増大した。 同じ時期に、無許可の複製によって失われるこのようなプログラムの価値に対するソフトウェアのベンダーの認識が増大してきている。 従って、今日、ソフトウェア・ベンダーが、個々のプログラムのコピーの登録を要求したり、あるいは、特定のユーザにサイト・ライセンスを販売したり、また、プログラム・コピーが登録されている人以外の人による、アプリケーションまたはアプリケーションの主要部分の実行を防ぐ機能を、プログラムに含ませることは、通常行われていることである。

    【0003】ソフトウェアの登録は、一般に、登録によってアクセスが許可される場合を除いては、ソフトウェアの大部分を使用不可にすることによって行われる。 殆ど同様に、潜在的な購入者がソフトウェアを買うか否かを決定するのに十分なほど実行することができるデモストレーション・コピーの機能と同様の削減機能を有する形態で、ユーザに、可能な限りオンラインで、ソフトウェアを提供することによって、ソフトウェアの販売を促進することは、通常行われていることである。 その際、
    初期的には使用不可のファンクションを使用可能にすることが、購入,支払い,および登録の際に遠隔的に行われる。 また、このような変換可能な形態のソフトウェアの配布は、デモンストレーション・コピーとして個別バージョンを作製する必要性を回避するという利点と、1
    つのコピーを他のコピーによって破壊する可能性とを与える。

    【0004】しかしながら、このような特徴は、精巧さおよび複雑さのレベルを拡大し、良好なレベルのセキュリティを実現する一方、このような特徴が、アプリケーション・プログラムの変更によって無効にされて、このような特徴が活用されなくなることは自明のことである。 プロテクトされたソフトウェアのファンクション、
    およびプロテクトされたファンクションへのアクセスを復元するプロセスは、一般に、“ハッキング(hack
    ing)”と呼ばれ、ハッキングはまた、一般に、パスワードのプロテクション,ユーザーの識別または認証などを無効にする。プログラム変更のプロセスは、しばしば、“パッチング(patching)と呼ばれる。 ハッキングによるプログラムの変更を困難にする特性は、
    “耐タンパー性(tamper resistanc
    e)と呼ばれる。 もちろん、“耐タンパー性”は、データベースおよびアプリケーション・プログラムのような多くの種類のソフトウェアにとって望ましい特性である。

    【0005】耐タンパー性ソフトウェアの作製は、しばしば、プロセッサに含まれる特権レベルと、いわゆる特権命令との概念を含む。 特権命令は、一般に、プロセッサ・アーキテクチャの制限された機能へのアクセスを許可することが要求される。 例えば、特権命令または特権ファンクションは、プロセッサ内のプロテクトされた専用デバッグ・レジスタのロードおよびアンロードと、割り込みベクトルのフックと、重要なオペレーティング・
    システム(OS)メモリ領域および入/出力(I/
    O)ファンクションのオペレーションとを含むことができる。 これらの特権ファンクションは、低い特権レベルのアプリケーションによってコントロールされる(例えば、要求される)が、実際には、より多くの特権オペレーティング・システム要素によるアプリケーション・プログラムの通常オペレーションの際には、より高い特権レベルの他の構造またはソフトウェアによって行われる。 特に、I/Oファンクションの実行はOSの最高特権レベルに限定され、より低い特権レベルで動作または実行するアプリケーションによっては実行されることはできず、要求されるにすぎない。

    【0006】すなわち、ソフトウェア開発要求に調和させて、アプリケーション・ソフトウェアを、より安全にするためには、アプリケーションと協働して動作し、より低い特権アプリケーションに代わってこれらの特権オペレーションを行う特権コンパニオン・ソフトウェア・
    モジュール(通常は、デバイス・ドライバの形態で)を開発する必要がある。 アプリケーションが、システム保全性を検証するか、あるいは、特定の種類のタンパリング(tampering)が生じたか否かを判断する必要性を有する(あるいは、プログラマーによって判断されるときに、必要性を有するべきである)場合に、アプリケーションは、特権モジュールを呼び出して、これらのサービスを実行することができる。 残念なことに、このような機構およびそのかなり広範囲の使用は、アプリケーションと特権モジュールとの間のインターフェースを、セキュリティ機能を無効にしようとするアタック(attack)の論理的箇所とする。 例えば、特権モジュールへのセキュリティ関連の呼び出しをパッチアウトすることは、多くの場合、耐タンパー性および実行することが意図される保全性検査の機能を無効にするであろう。

    【0007】いかなる形態の耐タンパー性も完全に安全ではないが、耐タンパー性は、一般に、アプリケーションおよび対応する特権モジュール内の、このような手段で(例えば、より多くの技術,トラップ,および相互依存性によって)与えられる複雑さのレベルが増大するにつれて、与えられた時間と労力の範囲で、それら手段を無効にすることに成功し、アプリケーションまたはデータ保全性を損い、あるいは、含まれるシークレットへのアクセスを得る可能性は低下する。 残念なことに、このような複雑さはまた、ソフトウェア・アプリケーションの信頼性および/または安定性(すなわち、例えば、データベースおよび/またはエラー回復システムの頑強性)、およびソフトウェア自体の実行速度および効率を損なう。 従って、今日まで、アプリケーションの実行効率と、アプリケーション自体およびそのデータのセキュリティとの間には、避けられないトレード・オフ(tr
    ade−off)がある。

    【0008】

    【発明が解決しようとする課題】従って、本発明の目的は、タンパリングの検出と、タンパリングが検出されるとファイルの実行の終了とによって、ソフトウェアのセキュリティを増大する方法を提供することにある。

    【0009】本発明の他の目的は、ソフトウェアの実行効率を大きく低下させることなしに、ソフトウェアの有効なセキュリティを提供することにある。

    【0010】本発明のさらに他の目的は、無許可の人によるソフトウェア動作の読み取りを防ぐことにある。

    【0011】本発明のさらに他の目的は、ソフトウェアの使用不可またはプロテクトされた部分の、無許可の使用可能化または読み取りを防ぐことにある。

    【0012】

    【課題を解決するための手段】本発明のこれらのおよび他の目的を実現するために、第1の区別化されたセクションが第2の区別化されたセクション上で利用できないファンクションを実行できる、複数の区別化されたセクションを有するプロセッサ上で実行されるソフトウェアに耐タンパー性を与える方法と、この方法を実行するためのコマンドを含むソフトウェアとが提供される。 この方法は、第2の区別化されたセクションと関連する第1
    の疑似ランダム2進シーケンス・ジェネレータをインクリメントするステップと、第1の区別化されたセクションのファンクションを、第2の区別化されたセクションから呼び出すステップと、第1の区別化されたセクションと関連する第2の疑似ランダム2進シーケンス・ジェネレータをインクリメントするステップと、ファンクションを実行するステップ(疑似ランダム2進シーケンス値の比較を含み、あるいは、疑似ランダム2進シーケンス・ジェネレータのインクリメントに加えて1つ以上のオペレーションを含むか含まない)と、前記第1および第2の疑似ランダム2進シーケンス・ジェネレータの疑似ランダム2進シーケンス値を比較するステップと、前記比較するステップの結果によって、前記ソフトウェアの実行を制御するステップとを含む。

    【0013】本発明の他の形態によれば、1つの区別化されたセクションが、他の区別化されたセクション上で利用できないファンクションを実行することができる、
    複数の区別化されたセクションを有するプロセッサ上で実行されるソフトウェアに耐タンパー性を与える方法と、この方法を実行するためのコマンドを含むソフトウェアとを提供する。 この方法は、アルゴリズムと第1の区別化されたセクションの疑似ランダム2進シーケンス値を用いて、データを更新するステップと、逆のアルゴリズムと、第1の区別化されたセクションにおける疑似ランダム2進シーケンス値とを用いて、データを更新するステップとを含み、前記第1の区別化されたセクションおよび前記他の区別化されたセクションの疑似ランダム2進シーケンス値が同じであると、前記アルゴリズムによって更新されたデータが、復元される。

    【0014】

    【発明の実施の形態】前述のおよび他の目的,態様,利点は、本発明の好適な実施例の以下の詳細な説明から、
    図面を参照することによってより理解されるであろう。

    【0015】図面、特に図1,図2,図3は、高レベルの概略ブロック図の形態で、本発明の一実施例100を示す。 図1には、矢印104で示すように、任意のタイム・スケール(左から右へ)が与えられ、実線のブロックは、ハードウェアまたはソフトウェアのいずれかで実施することができる機能的要素を示すことに注意すべきである。 点線で示すブロックは、プロテクションが望まれるソフトウェア・シーケンスを示す。 図2および図3
    では、シーケンスは、上から下に進み、示された各ファンクションが実行されるソフトウェアは、図1が、特権レベルを分ける点線106で分けられているのと同様に、左または右に分離されている。 従って、図1と図2
    および図3とは、同じ内容を異なる強調および観点で示すものである。 対応する参照符号は、可能なところで用いられている。 (図4および図5についても、同様である。) 疑似ランダム2進シーケンス(PRBS)ジェネレータは、当業者によって認識されているように、周知であり、多くの形態で用いられ、実現されている。 一般に、
    PRBSジェネレータは、複数の記憶デバイスを含むことができる論理アレイとして実施される。 しばしば用いられるPRBSジェネレータの形態は、シフトレジスタの性質上、直列に接続されたフリップフロップの列を用いる。 種々の長さのこのようなシフトレジスタでは、真値または補数値のいずれかとしての、あるステージの出力の他のステージへのフィードバックは、他のステージの出力と論理的に組み合わされ(より一般には、マスクと呼ばれる)、真のランダム値とほぼ同じの統計的特性を有する長い論理値列を作成することができることが分かっている。 もちろん、このようなハードウェアによる実現は、技術上周知の方法で、ソフトウェアでシミュレートすることができ、また、しばしばシミュレートされる。 (実際には、以下に詳細に説明するように、本発明の実施には、ソフトウェアによる実現が、極めて好適である)。

    【0016】PRBSジェネレータの繰り返し周期は、
    与えられた記憶ステージの数に対して極めて長くすることができる。 PRBSジェネレータの出力は、単一のステージから直列に、あるいは、内部タップから並列に任意の長さのバイト(最大記憶ステージの数まで)で並列に引き出すことができる。 任意の長さとすることができる多数の2進数の後に、PRBSは繰り返すが、シーケンスの開始ポイントは、例えば、PRBS内の記憶デバイスの初期記憶状態として、PRBSジェネレータに最初に与えられる特定の値によって任意のポイントで開始することができる。 これら初期状態は、集合的に、シード値と呼ばれる。 従って、PRBSジェネレータから引き出すことができる固有シーケンスの数は、繰り返しシーケンスにおける2進数の数に等しい。

    【0017】さらに、PRBSジェネレータにおける各々異なる論理アレイ相互接続またはマスク(例えば、個々のステージの出力のフィードバックまたは論理的組合せ)は、固有の2進シーケンスを与える。 さらに、同じ2進シーケンスは、同じマスク,同じ記憶ステージの数を有し、同じシード値で初期化される、機能的に同一のPRBSジェネレータから引き出されるのみである。 従って、PRBSシーケンスは、これらのパラメータの予備知識なしに複製することは困難である。

    【0018】本発明は、原則的には、2つの同一のPR
    BSジェネレータ110および120(すなわち、同じマスクおよび同じステージ数nを有している。)を使用し、これらは、同じシード値で初期化され、それぞれ、
    特権呼び出しの要求および実行の際にインクリメントされる。 これら同一のPRBSジェネレータのうちの1つは、特権レベルの各々において与えられ、もしくは、特権レベルの各々にアクセス可能にされ、特権レベルの間は、本発明の原理によって耐タンパー性が与えられている。 PRBSジェネレータからのPRBSは、より高い特権レベルまたはより低い特権レベルのいずれか(あるいは、各レベルにおけるPRBSに基づく異なる特権レベルの両方において実行される他のファンクション)において比較される。 また、実行の割り込み、およびより高い特権ファンクションの結果の中断は、個々のPRB
    信号が同一でないときに常に実行される。 オペレーションのこの基本モードは、非常に高速に実行することができ、頻繁に繰り返されても、ソフトウェアの実行効率を大きく低下させず、また、図4および図5を参照して、以下により詳細に説明するように、容易に拡張することができる。

    【0019】図1,図2,図3には、各々、個々のPR
    BSジェネレータ110または120を有する2つの特権レベルが示されていることが分かる。 これらの特権レベルは、Windows−Intel環境の用語と調和するリング3(低い特権レベル)およびリング0(高い特権レベル)として示される。 しかし、本発明は、異なるファンクションが、異なる特権レベルで実行されるか、あるいは、特定の分離されたハードウェア,ソフトウェア,またはファームウェアによる実行に限定される、あらゆる環境に十分適合できることを理解すべきである。 例えば、コマンドの実行のために、特定のデータ・パスまたはレジスタを要求することができる。

    【0020】すなわち、意図した目的を与える本発明の成功的実施については、プロセッサまたはその周辺機器、あるいはドライバが、個別の同一の(あるいは、同一に構成されて初期化されている)PRBSジェネレータに関連させることができる区別化されたオペレーショナル・セクションを有する(あるいは、有するように構成できる)ことが必要とされるだけである。 1つのこのような区別化されたセクションは、他の区別化されたセクションでは利用できないファンクションを実行することができる。 従って、用語“区別化されたセクション(differentiated section)”
    は、これらの条件を満たす全てのそのような可能な構成を含むものと理解すべきである。

    【0021】この点については、PRBSジェネレータをソフトウェアで実行することが、原則的には好適であることが分かる。 なぜならば、ハードウェア・アクセスは、ソフトウェアによるPRBSジェネレータの実現を要求する低い特権レベルでは拒否されうるからである。
    さらに、PRBSジェネレータのソフトウェアによる実現は、アプリケーションと、そのコンパニオン・デバイス・ドライバまたはより高い特権レベルのソフトウェアとの両方において、同一のPRBSジェネレータの形成、および、PRBSジェネレータの初期化を容易にする。 また、本発明は、PRBSジェネレータ自体をプロテクトするのに用いることができ、また用いるべきであることが分かるであろう。

    【0022】以下の説明のために、点線の矢印200で示すように、アプリケーションまたは他のソフトウェアが、本発明によって保護されていないファンクションを実施および実行しているものと仮定する。 また、PRB
    Sジェネレータ110,120が、同じシード値,同じマスク,および同じn値に初期化され、従って、同じ値を出力し、同期しているとみなすことができる。

    【0023】保護することが望まれるプログラムのセクションに先立つプログラム命令のリスト内のある箇所で、オペレーションA(および/またはBおよび/またはX)のシーケンスが挿入されている。 これらのオペレーションは、即時シーケンスで実行することは必要とされないが、これらのオペレーションの間に他のオペレーションを挿入させて、オペレーションの目的が無許可の人に認識できないようにすることができる。 本発明の説明のため、命令Aのシーケンスは、3つのオペレーションA1,A2,A3からなるものとして示されている。
    これらのオペレーションの各々は、複数のコマンドを含むことができる。

    【0024】シーケンスAが、異なる特権レベルまたは特定のハードウェアで実行される1つ以上の連続するオペレーション(例えば、A2)を保護するプログラムに到達すると、202で示すように、ステップA1は、P
    RBSジェネレータをインクリメントし、プロテクトされたステップA2に進む。 ステップA2は、204で示すように、特権リング0(例えば、デバイス・ドライバ内の)での所望のファンクションA(Fn A )を呼び出す。 次に、ファンクションAは、PRBSジェネレータ120をインクリメントする。 次に、208で示すように、ファンクションAは、所望のオペレーションを実行し、アプリケーションに戻る。

    【0025】次に、アプリケーションは、オペレーションA3に進み、210で示すように、PRBSジェネレータ110の出力を取り出し、212で示すように、F
    pを呼び出して、PRBSジェネレータ120の出力を取り出し、214で示すように、出力をアプリケーションに戻す。 次に、オペレーションA3は、216で示すように、PRBSジェネレータ110および120の出力を比較する。 それらの出力は共に、最初に同期化され、共にシーケンスA内で一度インクリメントされたので、その比較は成功し、アプリケーションは、218で示すように続く。

    【0026】シーケンスBは、同様に動作し、個別に説明する必要はない。 オペレーションB3(オペレーションA3に対応する)で、PRBS出力の比較が成功すると、アプリケーションは、222で示すように続く。

    【0027】しかしながら、例えば、アプリケーションが、登録されていない、および、リング0へのアクセス、または、リング0内の全てのファンクション(またはファンクションによって実行されるオペレーション)
    が拒否されたという理由で、オペレーションA2が、許可されていなかったならば、アプリケーションは、進むことができない。 無許可のユーザが、ステップA1をパッチアウトする(202)ことによって、このアクセスの拒否を無効にしようと試みるならば、ステップA2
    は、PRBSジェネレータ110をインクリメントすることなく、PRBSジェネレータ120をインクリメントし、A3(216)での比較は、失敗するであろう。

    【0028】逆に、アクセスの拒否を無効にしようとする試みが、オペレーションAの間に、PRBSジェネレータ120のインクリメントをパッチアウトすることによって行われるならば、比較はまた、失敗するであろう。 ファンクションAをパッチアウトすることによって(例えば、オペレーションA2を削除、または“ノー・
    オペレーション(NO−OP)”とすることによって)、アプリケーションの連続するセクションへのアクセスの拒否を無効にしようと(コードの比較のため)試みることは、また、比較の失敗を生じるであろう。というのは、PRBSジェネレータ110は、インクリメントされるが、PRBSジェネレータ120は、インクリメントされないからである。PRBSジェネレータ12
    0および110に対するインクリメントまたはデクリメントにおけるパッチによってアクセスの拒否を無効にしようと試みることは、また、A3での比較の失敗を生じるであろう。 というのは、Fn Aおよび他の特権ファンクションは、本発明によれば、ファンクションを実行する前に、PRBSジェネレータ120をインクリメントするからである。

    【0029】たとえ、特権ファンクションが実行されても、アプリケーションへ結果を報告する前に、比較が行われる。 比較216が失敗すると、アプリケーションの実行は、プログラマーによって所望される全ての方法で、例えば、記憶装置から、またはアプリケーションをコンピュータ上にロードした記憶媒体から、アプリケーション、またはアプリケーションの多かれ少なかれ重要な部分の削除を含む所望のサブルーチンに分岐することによって、終了することができる。

    【0030】特権ファンクションへのアクセスの拒否を無効にするためには、最小2つのパッチが、同時かつ正確に実行されなければならず、また、アプリケーションの動作の予備知識を有さない無許可のユーザによってうまく行われることはないであろう。 システムの動作を読み取ることは、本発明が防止しようとするタンパリングの典型的なタイプであることを思い出すべきである。 従って、本発明は、たとえ、アプリケーションにおいて多数回用いられても、あるいは繰り返されても、簡単で高速に実行可能であるが、無許可の人にアプリケーションの動作を暴露するタンパリングに対するプロテクションを与えるのに非常に有効であることが分かる。

    【0031】どこで比較が行われるのか、あるいは、特権ファンクションになり得るようなことを行う際に付加的なファンクションが実行されるのかは、本発明の基本原理の実施にとっては重要ではない。 しかし、次に、図1および図3の保護されたオペレーションXについて説明されるような付加的なファンクションを実行することによって、付加的なプロテクションを与えることができる。 この場合は、222で示すオペレーションX1が、
    オペレーションA1で前述したように、PRBSジェネレータ110をインクリメントする。 オペレーションX
    2は、前述したように、Fn xを呼び出し(224)、
    PRBSジェネレータ120をインクリメントする(2
    26)。 上述したように、再度、アプリケーションへ戻る(228)。

    【0032】次に、オペレーションX3は、PRBSジェネレータ110からPRBS値を取り出す(230)
    が、オペレーションFn p ′を呼び出し、PRBSジェネレータ110からデバイス・ドライバに、PRBS値を与える(232)。 次に、特権ファンクションF
    p ′が、PRBSジェネレータ120からPRBS値を取り出し、比較を行う。 Fn p ′は、PRBSジェネレータ120をインクリメントしないか、あるいはまた、PRBSジェネレータ110および120を、それぞれさらにインクリメントするために、X3およびFn
    p ′の両方を設けることができる。 このオペレーションは、比較がより高い(あるいは、少なくとも異なる)特権レベルで行われることを除いては、オペレーション・
    シーケンスAと同じである。 しかし、実際には、無許可の人によってパッチが不正確に与えられるより多くのロケーションが与えられ、また、オペレーションA3および他の特権ファンクションと比較して、規約上の不整合がX3またはFn p ′のいずれかに与えられる。

    【0033】次に、図4および図5を参照して、本発明の拡張を説明する。 上述した本発明の実施例は、PRB
    S出力の比較が失敗した後に、アプリケーションの終了、または、ファイルの消滅または破壊を開始できるのに対して、図4および図5に示す本発明の拡張は、耐タンパー性の一部としてファイルの破壊および修理を含み、従って、性能において共により頑強であり、タンパリングが検出される前の早い時期に、プロテクト・アクションを生じさせる。 この拡張は、上述の保護されたオペレーションAの変形A′として説明される。

    【0034】オペレーションA1は、前述したように、
    PRBSジェネレータ110をインクリメントするために行われる。 しかし、402で示すように、インクリメントされたPRBS値は、アプリケーションに戻される。 オペレーションA2′は、404に示されるアルゴリズムXと、PRBSジェネレータ110からの現在のPRBS値とを用いて、データおよび/またはアプリケーション・プログラム・コードを意図的に消滅または破壊させるために、PRBS値を用いる。 次に、オペレーションA3′は、PRBS値ジェネレータ120をインクリメントし、新しいPRBS値を戻した後に、オペレーションA′を実行するために、特権ファンクションF
    A ′を呼び出す。 次に、PRBSジェネレータ110
    のPRBS値と現在は同じであるべきである、PRBS
    ジェネレータ120からの新しいPRBS値は、PRB
    Sジェネレータ120からのPRBS値と、404で破壊されたデータまたはコードを復元するためのアルゴリズムXの逆であるアルゴリズムX′とを用いて、410
    に示すように、オペレーションA4を実行するために用いられる。

    【0035】この場合、個別の比較は行う必要はない。
    というのは、データまたはコードの不正確な復元は、アプリケーションを休止するか、あるいは、不正確で意味のない結果を戻す(データまたはコードは、完全にランダムな2進コード・シーケンスによって破壊されたので)からである。 さらに、データの破壊および復元以外の特権オペレーションは、オペレーションA′内で実行される必要はなく、実際には、プログラム動作を読み取ろうと試みる無許可の人は、アプリケーションから情報を得ることができない。 この拡張は、単独で、あるいは、上述したA,B,またはXのような特権ファンクションの特定の例の代わりに、比較を用いる特権ファンクションと共に用いることができる。

    【0036】上述したことから、本発明は、単独かつ高速に実行されるが、一例では、非常に高度の耐タンパー性を与えることが分かる。 耐タンパー性手順に対し、本発明の複数の例を与えることができ、特に、変形(例えば、図3)および拡張(例えば、図5)は、アプリケーションの実行速度を低下させることなく、実際に破ることのできないプロテクションを与える。

    【0037】本発明を、1つの好適な実施例によって説明したが、当業者によれば、本発明が、特許請求の範囲の趣旨および範囲内の変更を含んで実施できることが分かるであろう。

    【0038】まとめとして、本発明の構成に関して以下の事項を開示する。 (1)1つの区別化されたセクションが他の区別化されたセクション上で利用できないファンクションを実行できる、区別化されたセクションを有するプロセッサ上で実行されるソフトウェアに耐タンパー性を与える方法であって、前記他の区別化されたセクションと関連する第1の疑似ランダム2進シーケンス(PRBS)ジェネレータをインクリメントするステップと、前記1つの区別化されたセクションの前記ファンクションを、前記他の区別化されたセクションから呼び出すステップと、前記1つの区別化されたセクションと関連する第2の疑似ランダム2進シーケンス・ジェネレータをインクリメントするステップと、前記ファンクションを実行するステップと、前記第1および前記第2の疑似ランダム2進シーケンス・ジェネレータの疑似ランダム2進シーケンス値を比較するステップと、前記比較するステップの結果によって、前記ソフトウェアの実行を制御するステップとを含む方法。 (2)前記ファンクションは、前記区別化されたセクションのPRBSジェネレータをインクリメントすることに制限される、上記(1)に記載の方法。 (3)前記1つの区別化されたセクションで利用できるさらなるファンクションは、前記他の区別化されたセクションからの疑似ランダム2進シーケンス値を呼び出し、前記1つの区別化されたセクションにおいて前記比較するステップを実行する、上記(1)に記載の方法。 (4)前記さらなるファンクションは、前記1つの区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータをインクリメントし、前記他の区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータは、前記さらなるファンクションが呼び出されるとインクリメントされる、上記(3)に記載の方法。 (5)前記1つの区別化されたセクションで利用できるさらなるファンクションは、前記他の区別化されたセクションから前記疑似ランダム2進シーケンス値を呼び出し、前記1つの区別化されたセクションにおいて比較するステップを実行する、上記(2)に記載の方法。 (6)前記さらなるファンクションは、前記1つの区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータをインクリメントし、前記他の区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータは、前記さらなるファンクションが呼び出されるとインクリメントされる、上記(5)に記載の方法。 (7)アルゴリズムと前記他の区別化されたセクションの疑似ランダム2進シーケンス値を用いて、データを変更するステップと、前記アルゴリズムの逆のファンクションを有する他のアルゴリズムと、前記1つの区別化されたセクションにおける疑似ランダム2進シーケンス値とを用いて、データを変更するステップとをさらに含み、前記1つの区別化されたセクションと前記他の区別化されたセクションとの前記疑似ランダム2進シーケンス値が同じであると、前記アルゴリズムによって変更されたデータが、復元される、上記(1)に記載の方法。 (8)前記区別化されたセクションは、異なる特権レベルである、上記(1)に記載の方法。 (9)1つの区別化されたセクションが、他の区別化されたセクション上では利用できないファンクションを実行することができる、区別化されたセクションを有するプロセッサ上で実行されるソフトウェアに耐タンパー性を与える方法であって、アルゴリズムと前記他の区別化されたセクションの疑似ランダム2進シーケンス値を用いて、データを変更するステップと、前記アルゴリズムと逆のファンクションを有する他のアルゴリズムと、前記1つの区別化されたセクションにおける疑似ランダム2進シーケンス値とを用いて、データを変更するステップとを含み、前記1つの区別化されたセクションおよび前記他の区別化されたセクションの前記疑似ランダム2
    進シーケンス値が同じであると、前記アルゴリズムによって変更されたデータが、復元される、方法。 (10)前記区別化されたセクションは、異なる特権レベルである、上記(9)に記載の方法。 (11)1つの区別化されたセクションが、他の区別化されたセクション上で利用できないファンクションを実行することができる、区別化されたセクションを有するプロセッサを制御する記憶プログラムであって、前記プロセッサに、前記他の区別化されたセクションに関連する第1の疑似ランダム2進シーケンス・ジェネレータをインクリメントするステップと、前記1つの区別化されたセクションの前記ファンクションを、前記他の区別化されたセクションから呼び出すステップと、前記1つの区別化されたセクションに関連する第2の疑似ランダム2進シーケンス・ジェネレータをインクリメントするステップと、前記ファンクションを実行するステップと、
    前記第1および第2の疑似ランダム2進シーケンス・ジェネレータの疑似ランダム2進シーケンス値を比較するステップと、前記比較するステップの結果によって、前記記憶プログラムの実行を制御するステップとを実行させるコマンドを含み、前記記憶プログラムの実行を、タンパリングを検出すると、制御することができる、記憶プログラム。 (12)前記ファンクションは、前記区別化されたセクションのPRBSジェネレータをインクリメントすることに制限される、上記(11)に記載のプログラム。 (13)前記1つの区別化されたセクションで利用できるさらなるファンクションは、前記他の区別化されたセクションからの前記疑似ランダム2進シーケンス値を呼び出し、前記1つの区別化されたセクションにおける前記比較するステップを実行する、上記(11)に記載のプログラム。 (14)前記さらなるファンクションは、前記1つの区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータをインクリメントし、前記他の区別化されたセクションの前記疑似ランダム2進シーケンス・
    ジェネレータは、前記さらなるファンクションが呼び出されるとインクリメントされる、上記(13)に記載のプログラム。 (15)前記1つの区別化されたセクションで利用できるさらなるファンクションは、前記他の区別化されたセクションからの疑似ランダム2進シーケンス値を呼び出し、前記1つの区別化されたセクションにおいて前記比較ステップを行う、上記(12)に記載のプログラム。 (16)前記さらなるファンクションは、前記1つの区別化されたセクションの前記疑似ランダム2進シーケンス・ジェネレータをインクリメントし、前記他の区別化されたセクションの前記疑似ランダム2進シーケンス・
    ジェネレータは、前記さらなるファンクションが呼び出されるとインクリメントされる、上記(15)に記載のプログラム。 (17)アルゴリズムと前記他の区別化されたセクションの疑似ランダム2進シーケンス値を用いて、データを変更するステップと、前記アルゴリズムの逆のファンクションを有する他のアルゴリズムと、前記1つの区別化されたセクションの疑似ランダム2進シーケンス値とを用いて、データを変更するステップとをさらに含み、前記1つの区別化されたセクションと前記他の区別化されたセクションとの疑似ランダム2進シーケンス値が、同じであると、前記アルゴリズムによって変更されたデータが、復元される、上記(11)に記載のプログラム。 (18)1つの区別化されたセクションが、他の区別化されたセクション上で利用できないファンクションを実行することができる、区別化されたセクションを有するプロセッサを制御する記憶プログラムであって、前記プロセッサに、アルゴリズムと前記他の区別化されたセクションの疑似ランダム2進シーケンス値を用いて、データを変更するステップと、前記アルゴリズムの逆のファンクションを有する他のアルゴリズムと、前記1つの区別化されたセクションの疑似ランダム2進シーケンス値とを用いて、データを変更するステップとを実行させるコマンドを含み、前記1つの区別化されたセクションと前記他の区別化されたセクションとの疑似ランダム2進シーケンス値が、同じであると、前記アルゴリズムによって変更されたデータは、復元され、前記記憶プログラムの実行は、タンパリングを検出すると制御される、記憶プログラム。

    【図面の簡単な説明】

    【図1】本発明の好適な実施例の高レベル・ブロック図であり、そのオペレーションを示す図である。

    【図2】図1に示す本発明の実施例のオペレーションを示すフローチャートである。

    【図3】図1に示す本発明の実施例のオペレーションを示すフローチャートである。

    【図4】図1の実施例の好適な拡張を示す高レベル・ブロック図である。

    【図5】図4に示す本発明の拡張を示すフローチャートである。

    【符号の説明】

    100 本発明の一実施例 104 タイム・スケール 106 特権レベルを分ける点線 110,120 PRBSジェネレータ

    ───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョージ・ダブリュ・ウィルヘルム、ジュ ニア アメリカ合衆国 13760−1611 ニューヨ ーク州 エンドウェル カタリーナ ビー エルブイディー 705

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈