JP5021754B2 - 物理的にセキュア化されていないソフトウェアエレメントのためのセキュリティ - Google Patents

物理的にセキュア化されていないソフトウェアエレメントのためのセキュリティ Download PDF

Info

Publication number
JP5021754B2
JP5021754B2 JP2009534664A JP2009534664A JP5021754B2 JP 5021754 B2 JP5021754 B2 JP 5021754B2 JP 2009534664 A JP2009534664 A JP 2009534664A JP 2009534664 A JP2009534664 A JP 2009534664A JP 5021754 B2 JP5021754 B2 JP 5021754B2
Authority
JP
Japan
Prior art keywords
key
memory
timer
code
krc
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.)
Expired - Fee Related
Application number
JP2009534664A
Other languages
English (en)
Other versions
JP2010507873A (ja
Inventor
ラヴィクマー モハンダス,
Original Assignee
キョウセラ ワイヤレス コープ.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by キョウセラ ワイヤレス コープ. filed Critical キョウセラ ワイヤレス コープ.
Publication of JP2010507873A publication Critical patent/JP2010507873A/ja
Application granted granted Critical
Publication of JP5021754B2 publication Critical patent/JP5021754B2/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Description

(発明の分野)
本開示は、ソフトウェアセキュリティの分野に関する。特に、本開示は、キーソフトウェアエレメントを、物理的にセキュア化されていない可能性のあるデバイス内に配置されたコードから、またはコード自身が物理的にセキュア化されていない可能性のあるコードから検索することを非常に困難にするために使用可能な装置と方法との両方に関する。
(発明の背景)
通常、実行可能なイメージを形成するようにリンクされたターゲット(コンパイルされた)コードという形態のソフトウェアを内部で用いる、世界中で使用される無数のデバイスが存在する。それらのデバイスの一部(例えば、リモートセンサからの画像を格納し、分析するために用いられる監視処理機器)は、物理的にセキュア化され得る。モバイル通信デバイスなどの他のデバイスは、物理的にセキュア化されていない可能性がある。
物理的にセキュア化されていない可能性のあるデバイスは、物理的にセキュア化されたデバイスにとっては可能でない方法でハッカーによって攻撃され得る。これらの無防備なデバイスは、分解され得、ソフトウェアが実行されるハードウェアを曝露した後に、様々な方法で攻撃され得る。1つの攻撃は、メインプロセッサ基板上のJoint Test Action Group「JTAG」バッファに接続されたI2Cバスポートなどのトラブルシューティングポートを用いることである。コードが、実行の間にトレースされ、バッファの内容が読み取られ得る。別の攻撃は、デバイスのメモリの内容をコピーするかまたは引き出し、シミュレータ上でコードを実行することにより、実行可能なコードがトレースされたり、標的にされた情報が引き出されたりすることを可能にする。
製品内のコードを保護することは常に問題となるが、特定の機能を使用可能にするキーの使用、そしてコード内の指定されたフィールドにおける識別「ID」および他の機密情報の存在における最近の高まりは、物理的に小さいけれども非常に重要なビット配列に対する保護を提供する特別のニーズを作り出した。現在、利用可能な保護は、特別なメモリまたは他の追加されたハードウェアの使用を介している。これらのハードウェアベースの解決策は、制限された製品寿命を有し、非常にコストに敏感であり、かつ/または製品化までの制限された時間的要件を有する製品に対して、高価すぎ、かつ柔軟性が十分ではない。
(概要)
本明細書中に開示されるシステムおよび方法は、無認可の発見または開示からソフトウェアエレメントを保護するために使用可能である。「ソフトウェアエレメント」は、無認可の閲覧または発見から通常以上の保護を必要とする、ビットの任意のストリングを意味するために用いられる。特に一般的な例はキーであり、そのキーは、ソフトウェアまたはデータファイルを復号化したり、暗号解読したり、または使用を認可したりするために用いられる。しかし、開示された保護の機構および方法は、人物またはデバイスに対するID情報を含む、特別な保護が必要な任意のビットの組に適用可能である。
無認可の開示として本明細書中で言及される、ソフトウェアへの不正アクセスを得る攻撃は、ある人物がデバイスの物理的制御を有する場合には、その人物が該デバイスを攻撃することを含み、または彼らがコードのコピーを有し、エミュレータ上でコードを実行することを試みる場合には、彼らが該コードを攻撃することを含む。前者の場合には、コードがデバイス上で実行する間、攻撃は通常、コードをトレースする試みであり得る。このことは通常、搭載チップのトラブルシューティングポートおよびJTAG能力を用いる形態をとる。後者の場合には、無認可の人物は、デバイスに対するコードイメージの制御を何とかして得て、エミュレータ上でコードを実行することを試みる。それぞれの場合において、攻撃の基本的な目的は、コードをトレースし、価値のあるソフトウェアエレメントを捕捉することである。
保護されるソフトウェアエレメントは、デバイスのメモリ内のどこかに格納される。「メモリ」は、デバイス内またはデバイスによって使用可能なメモリの任意の形態およびすべての形態を含み、読み出し専用または読み取り書き込み型であり得る。保護されるソフトウェアエレメントは、通常デバイス内のメインメモリまたは読み出し専用メモリ内にあるけれども、ソフトウェアエレメントは、取り外し可能なメモリ上にも存在したり、またはリモートアクセスされたりし得る。
命令(関数、ルーチンなど)の組は、フェッチされたデータから格納されたデータを集めたり、ソフトウェアエレメントを生成したり、または回復したりするように書き込まれる。このソフトウェアエレメント検索ソフトウェアは、本明細書中でキー検索コード「KRC」と呼ばれる。KRCを構成するコードが、明確な命令の組として認識可能であり得る(または認識可能ではないことがあり得る)こと、あるいはデバイスのコードベースにおいて単一のインターフェースを提示し得る(または提示しないことがあり得る)ことが理解されるべきである。KRCの機能性を構成するコードの列は、無認可のトレースの試みをさらに妨げるために、非常に拡散され得、意図的にそのようにされ得る。さらに、KRCの部分は、割り込みサービスルーチン「ISR」、および関数またはルーチンとして編成された伝統的なコードベース内などの場所に存在し得る。従って、KRCおよび同様な概念は、本明細書中に用いられるときに、KRCに属するとして記述された関数を実行するために用いられる、システムまたはその構成要素内のどこかに配置される任意のコードおよびすべてのコードを含むことが理解されるべきである。
本明細書中では、ソフトウェアエレメントの保護は、多くの実施形態において与えられており、それらの実施形態の組み合わせとして実装され得る。一実施形態におけるソフトウェアエレメントの保護は、2つのタイマを用いる。一方のタイプのタイマは、システムクロック(タイミング情報の専用でない供給源)に基づき、もう一方のタイプのタイマは、監視(watchdog)タイマ(システムをリセットし得る専用のタイマ)に基づく。KRCは、コードトレーシングを妨げるために、1つまたは両方のタイマと連携して用いられる。複数のタイマの例も用いられ得る。
システムクロックベースのタイマは、メモリフェッチまたはコードの列を実行する際に、時間デルタをチェックするために用いられる。コードが、JTAGまたは同様な技術を用いてトレースされる場合には、命令を実行するためにかかる時間の長さは著しく増大する。KRCが実行する間、実際の時間デルタ(指定された機能を完了するまでの時間)を計画された最大の時間デルタと比較することは、コードがトレースされたことの検出を可能にする。時間の計算は、時間差変数、カウントダウンタイマ、または他の方法として実装され得る。クリティカルなコードの実行の間に、トレース状態が検出されると、KRCは、偽の値(false value)、値なし(no value)を返し得、システムをリセットさせるかまたは他の動作をとらせる。
監視タイマは、2つの方法で用いられる。一実施形態において、監視タイマ値は、正常な(非トレーシング)状況の下では、監視タイマがリセットをCPUに送信するべきであることをタイマ値が示す前にKRCが実行を終了するように、設定される。監視タイマは通常、バッファまたはカウンタのオーバランの結果としてシステムリセットを発行する。バッファは、実行コードの適切な動作を示すために、定期的に0にリセットされ得る。別の実施形態において、監視タイマとKRCとは、タイマ値に加えて、共通の読み取り書き込みエリア(共有変数、バッファなど)を共有する。共通の読み取り書き込みエリアは、監視タイマというよりもKRCがCPUリセットコマンドをいつ送るかを決定し得るような方法で、実行するKRCと監視タイマとを結びつけるために用いられる。このことは、より十分に以下で説明される。
さらに、無認可のコードトレーサーからKRCをさらに隠す、間接コーディングを用いる方法およびその効果を示す他の実施形態が開示される。開示される例示的実施形態が、必要に応じて各実装のために、組み合わされることが意図されている。
例えば、本発明は以下の項目を提供する。
(項目1)
ソフトウェアエレメントを保護するための方法であって、該方法は、
コードを実行することと、
キーが該コードによって必要とされることを決定することと、
キー検索コード(KRC)の実行をトリガすることであって、該KRCは、以前にメモリへとロードされたキーを検索するように構成され、該メモリは、該KRCによってアクセス可能である、ことと、
経過時間に基づいて、タイマ値を決定するために使用可能なタイマをイネーブルにすることと、
該KRCを実行することと、
該タイマ値をチェックすることと、
該タイマ値が所定の値に到達する前に、キーが検索される場合には、該KRCによって該キーを該コードに再調整することと、
該タイマ値が、該所定の値に到達する場合には、該キーを該コードに再調整する前に、該KRCの実行を停止することと
を包含する、方法。
(項目2)
前記メモリ内の不連続な複数のメモリ位置に前記キーを格納することをさらに包含する、項目1に記載の方法。
(項目3)
前記複数のメモリ位置のそれぞれは、その内に格納された前記キーが操作される部分を有する、項目2に記載の方法。
(項目4)
前記実行を停止することは、システムをリセットすることをさらに包含する、項目1に記載の方法。
(項目5)
前記KRCを実行することは、
複数のメモリ位置からデータをフェッチすることであって、該メモリ位置は、それぞれキーを検索するために必要な該データの一部分を格納する、ことと、
該フェッチされたデータを操作することと、
該操作されたデータから該キーを検索することと
をさらに包含する、項目1に記載の方法。
(項目6)
前記タイマ値をチェックすることは、
前記KRCを始動する際に前記タイマを始動することと、
該KRCが、前記キーが格納されるすべてのメモリ位置をフェッチしたときに、該タイマ値をチェックすることと
をさらに包含する、項目1に記載の方法。
(項目7)
前記タイマ値をチェックすることは、
前記KRCを始動する際に前記タイマを始動することと、
前記キーが複数のメモリ位置に格納されるときには、該KRCが、該キーの最初の部分をフェッチしたときに、該タイマ値をチェックすることと
をさらに包含する、項目1に記載の方法。
(項目8)
複数のタイマをイネーブルにすることであって、各タイマは値と関連づけられる、ことと、
前記キーを互いに含む複数のメモリ位置のフェッチングを始動することと、
該キーのメモリ位置を互いに備える該複数のメモリ位置のフェッチのそれぞれに対してタイマを用いることと、
該タイマのいくつかが、その関連づけられた値に到達する場合には、前記KRCの実行を停止することと
をさらに包含する、項目7に記載の方法。
(項目9)
前記複数のタイマは、前記キー全体のフェッチに対するタイマをさらに含む、項目8に記載の方法。
(項目10)
ソフトウェアエレメントを保護するための方法であって、該方法は、
コードを実行することと、
キーが、該コードによって必要とされることを決定することと、
キー検索コード(KRC)の実行をトリガすることであって、該KRCは、以前に該KRCによってアクセス可能なメモリへとロードされたキーを検索するように構成される、ことと、
該KRCとともに使用可能な監視タイマをイネーブルにすることと、
値を該監視タイマと関連づけることと、
該KRCを実行することと、
該監視タイマによって該監視タイマの値をチェックすることと、
該監視タイマが所定の値に到達する前に、キーが検索される場合には、該KRCによって該キーを該コードに再調整することと、
該監視タイマが、該所定の値に到達する場合には、システムをリセットすることと
を包含する、方法。
(項目11)
前記メモリ内の不連続な複数のメモリ位置に前記キーを格納することをさらに包含する、項目10に記載の方法。
(項目12)
前記複数のメモリ位置のそれぞれは、その内に格納された前記キーが操作された形態において格納される部分を有する、項目11に記載の方法。
(項目13)
前記KRCを実行することは、
複数のメモリ位置からデータをフェッチすることであって、該メモリ位置は、それぞれキーを検索するために必要な該データの一部分を格納する、ことと、
該フェッチされたデータを操作することと、
該操作されたデータから該キーを検索することと
をさらに包含する、項目10に記載の方法。
(項目14)
前記監視タイマ値をチェックすることは、
前記KRCを始動する際に前記タイマを始動することと、
該KRCが、前記キーが格納されるすべてのメモリ位置をフェッチした後、該KRCによって該監視タイマ値をリセットすることと
をさらに包含する、項目10に記載の方法。
(項目15)
前記タイマ値をチェックすることは、
前記KRCを始動する際に前記タイマを始動することと、
前記キーが複数のメモリ位置に格納され、該KRCが、該キーの次の部分をフェッチする前に、該キーの最初の部分をフェッチしたときに、該タイマ値をリセットすることと
をさらに包含する、項目10に記載の方法。
(項目16)
前記キーの各部分がフェッチされた後、前記タイマ値をリセットすることであって、該タイマ値は、該フェッチのいずれか1つが、所定の量まで平均のフェッチ時間を超える場合には、システムリセットをトリガする所定の値に設定される、こと
をさらに包含する、項目15に記載の方法。
(項目17)
CPUと、
該CPUと動作可能に通信しているメモリと、
該CPUと動作可能に通信しているシステムクロックと、
該CPUをリセットし、設定可能な監視タイマ値(WTV)を用いるように動作可能な監視タイマであって、該監視タイマは、該WTVが所定の値に到達するときに、該CPUをリセットするように構成される、監視タイマと、
キーとキー検索コード(KRC)とを必要とするコードを備える該メモリ内の、該CPUによって実行可能なコードと
を備え、
該KRCは、該キーを検索するように構成され、
該キーは、該メモリ内に格納され、
該KRCは、経過時間値(SC ETV)を決定するために該システムクロックを用い、そして該監視タイマが、該CPUをリセットする前に、時間の量を増大させる方法で該WTVを設定するように構成され、
該KRCは、該キーを検索し、そして該キーを検索する間、
(i)該SC ETVをチェックして、該SC ETVが所定の値を超える場合には、該キーの検索を停止し、
(ii)KRCコード実行時間が、所定の時間制限を超える場合には、該監視タイマが、該CPUをリセットするように、該WTVを設定するようにさらに構成される、
モバイルデバイス。
(項目18)
前記KRCは、該KRCが終了する前に、前記CPUがリセットされることを前記監視タイマに示すように、前記WTVを設定するようにさらに構成され、そしてさらに、該KRCは、実行の間に複数の所定の時点で該WTVをリセットするように構成される、項目17に記載のモバイルデバイス。
(項目19)
前記KRCは、該KRC実行の時間の異なる部分に対して使用可能な複数のSC ETVを決定するようにさらに構成される、項目17に記載のモバイルデバイス。
(項目20)
フェッチされ、組み合わされるときに、キー全体を構成する前記キーの部分は、複数の位置に格納され、前記複数のSC ETVの少なくとも一部は、該キーの部分をフェッチする間の実行時間をチェックするために用いられる、項目19に記載のモバイルデバイス。
図1aは、本明細書中に記述される様々な実施形態に関連して用いられ得る、例示的な無線通信デバイスを示すブロック図である。 図1bは、本明細書中に記述される様々な実施形態に関連して用いられ得る、例示的なコンピュータシステムを示すブロック図である。 図2は、デバイスのための例示的ソフトウェアのブロック図である。 図3は、無認可の開示からソフトウェアエレメントを保護するための流れ図である。 図4a、図4b、図4c、および図4dは、無認可の開示からソフトウェアエレメントを保護するためのさらなる実施形態を例示する流れ図の組である。 図4a、図4b、図4c、および図4dは、無認可の開示からソフトウェアエレメントを保護するためのさらなる実施形態を例示する流れ図の組である。 図4a、図4b、図4c、および図4dは、無認可の開示からソフトウェアエレメントを保護するためのさらなる実施形態を例示する流れ図の組である。 図4a、図4b、図4c、および図4dは、無認可の開示からソフトウェアエレメントを保護するためのさらなる実施形態を例示する流れ図の組である。 図5は、無認可の開示からソフトウェアエレメントを保護するための監視タイマの使用を示す状態図である。 図6は、無認可の開示からソフトウェアエレメントを保護するための監視タイマの使用を示す流れ図である。
(詳細な説明)
当業者は、本発明の以下の説明が例示的であり、決して制限することではないことを理解されたい。本発明の他の実施形態はまた、本開示の利益を有するそのような当業者に対して容易にそれら自身を示唆するであろう。概して図面を参照すると、例示目的のための本発明が、図1から図6を通して具体化されて示される。装置が、構成に応じて、そして部分の詳細に応じて変化し得、方法が、本明細書中に開示される発明の概念から逸脱することなく、詳細および任意の動作の順序に応じて変化し得ることは認識されたい。
単語「例示的な(exemplary)」または「例示的(exemplar)」は、「実施例、例、または例示として役に立つこと」を意味するために用いられる。「例示的な」として、または「例示的」として記述される実施形態は、必ずしも他の実施形態より優れて好適かまたは有利であるとして解釈されることはない。
用語「コンピュータ読み取り可能な媒体」は、中央処理ユニット(CPU、マイクロプロセッサ、DSP、または命令を実行することが可能な任意の他の論理デバイス)による実行のために使用できる実行可能な命令(例えば、ソフトウェア、コンピュータプログラム)を提供するか、保持するか、または担持するために用いられる任意の媒体を示すために用いられる。媒体は、それらに制限することではないけれども、CPUによって読み取り可能な(ローカル、リモート、揮発性、不揮発性、取り外し可能などであり得る)メモリを含み、一次メモリ、(ディスク、取り外し可能なカードまたはフラッシュ、リモートディスクなどを含む)二次メモリなどの任意の適切な形態をとり得る。コンピュータ読み取り可能な媒体はさらに、無線通信デバイス、基地局、または他のCPUを有するエンティティにおいて用いられる、実行可能なコード、プログラム命令、および/または決定入力をCPUに提供するための任意の手段を含む。実行可能なコード、プログラム命令、決定入力などは、CPUによって実行される際に、本明細書中に記述される発明の特徴および機能を、CPUにイネーブルにさせ、サポートさせ、かつ/または実行させるために用いられる。
図1aは、本明細書中に記述される様々な実施形態に関連して用いられ得る、例示的な無線通信デバイス100を示すブロック図である。無線通信デバイス100は、物理的に保護されないデバイスの実施例である。該開示において用いられるときに、「物理的に保護されない」は、潜在的な攻撃者またはハッカーが、どのような理由のためかまたは任意の手段によって、デバイス内のコードの少なくともなんらかの調査をなんらかの手段によって可能にする、物理デバイスに対して物理的にアクセスできる任意のデバイスを意味する。該概念はまた、攻撃者が、保護されるデータを有するコードまたはそのコピーを含むメモリの内容を取得し得るいかなる方法をも含んでいる。例えば、無認可の人物が、コードサーバが物理的にセキュアである会社内部のコードサーバへのアクセスを取得し、デバイス内で用いられたコードのコピーをそれでも取得し得る場合には、「物理的に保護されない」または「保護されない」の概念が適用される。後者の場合において、コードは、エミュレータまたは他の手段を用いて探査するハッカーに対して利用可能となり、保護されないことになる。
無線通信デバイス100は、無線メッシュ状ネットワーク内のハンドセット、PDA、無線ネットワークデバイス、またはセンサノードであり得る。他のすべての無線通信デバイスが、本明細書中では完全に企図される。
無線通信デバイス100は、アンテナ102と、マルチプレクサ104と、低雑音増幅器(「LNA」)106と、電力増幅器(「PA」)108と、変調回路110と、ベースバンドプロセッサ112と、スピーカ114と、マイクロホン116と、中央処理ユニット(「CPU」)120と、データストレージ領域122と、ハードウェアインターフェース118とを備える。無線通信デバイス100において、無線周波数(「RF」)信号は、アンテナ102によって送信され、受信される。マルチプレクサ104は、アンテナ102を送信信号経路と受信信号経路との間に連結するスイッチとして動作する。受信経路において、受信されたRF信号は、マルチプレクサ104からLNA106に連結される。LNA106は、受信されたRF信号を増幅し、増幅された信号を変調回路110の復調部分に連結する。
一般に、変調回路110は、1つの集積回路(「IC」)内に復調器および変調器を組み合わせる。復調器および変調器はまた、別個の構成要素であり得る。復調器は、RF搬送波信号を取り去ってベースバンド受信音声信号を残し、その音声信号は、復調器出力からベースバンドプロセッサ112に送られる。
ベースバンド受信音声信号が、音声情報を含む場合には、ベースバンドプロセッサ112は、信号を復号化し、その信号をアナログ信号に変換する。次いで信号は、増幅され、スピーカ114に送られる。ベースバンドプロセッサ112はまた、マイクロホン116からアナログの音声信号を受信する。これらのアナログ音声信号は、ベースバンドプロセッサ112によってデジタル信号に変換され、符号化される。ベースバンドプロセッサ112はまた、送信のためのデジタル信号をコード化し、変調回路110の変調器部分にルーティングされるベースバンド送信音声信号を生成する。変調器は、ベースバンド送信音声信号をRF搬送波信号と混合し、電力増幅器108にルーティングされるRF送信信号を生成する。電力増幅器108は、RF送信信号を増幅し、その信号をマルチプレクサ104にルーティングする。そこでは、該信号が、アンテナ102による送信のためにアンテナポートに切り替えられる。ベースバンドプロセッサ112はまた、中央処理ユニット120と通信によって連結される。中央処理ユニット120は、メモリとデータストレージ領域122とにアクセスできる。中央処理ユニット120は、データストレージ領域122に格納され得る命令(すなわち、コンピュータプログラムまたはソフトウェア)を実行するように構成される。コンピュータプログラムはまた、ベースバンドプロセッサ112から受信され、データストレージ領域122に格納されるか、または受信の際に実行され得る。
中央処理ユニットはまた、新しいデバイスが、ハードウェアインターフェースによって検出されるときに、ハードウェアインターフェース118から通知を受信するように構成され得る。ハードウェアインターフェース118は、CPU120と通信し、新しいデバイスと相互作用する制御ソフトウェアを有する電気機械的な検出器の組み合わせであり得る。
監視タイマ124は、一般にCPU120と同じ基板上に配置される追加のハードウェアデバイスである。監視タイマ124は、CPUとともに特定の共通バッファにアクセスし得、CPUリセットコマンドを発行し得る。CPUリセットコマンドは、全体のシステムを再始動させる(システムを再立ち上げする)。
通信デバイス100は、筐体内に配置され、例示的ハンドセット筐体が、参照番号162として示される。筐体の性質は、上記された(そして、システム130に対して下記される)物理的構成要素に対する取り付け部分を単に提供し、その意図された用途に応じたフォームファクタと、埃、水、衝撃などからの内部構成要素の保護とを提供する。明らかに、ノート型コンピュータは、セル式電話器と異なる筐体を有するが、それらは、物理的構造内/物理的構造上に構成要素を取り付ける筐体の性質を共有し、そこでは、その構造は、デバイスの意図された用途のニーズを満たしている。ポータブルデバイスまたはモバイルデバイスは、筐体と、その内に取り付けられたその構成要素とが、人物によって携帯されるか、または人物によって可動にされるように設計されるデバイスである。例としては、ハンドセット、ノート型コンピュータ、PDA、家庭用WiFiルータ、モデムなどを含む。
図1bのコンピュータシステム130は、本明細書中に開示される保護機構とともに使用可能な、PC、複写機、音響復号化および再生デバイスなどを含むデバイス内で見出される例示的システムである。
システム130は、プロセッサ134などの1つ以上のプロセッサまたは論理ユニットを含む。追加のプロセッサが提供され得、そのようなプロセッサは、例えば、入力/出力を管理する補助プロセッサ、浮動小数点数値演算を実行する補助プロセッサ、信号処理アルゴリズムの高速実行に適切なアーキテクチャを有する特定目的マイクロプロセッサ(例えば、デジタルシグナルプロセッサ)、メイン処理システム(例えば、バックエンドプロセッサ)に従属するスレーブプロセッサ、デュアルまたはマルチプロセッサシステムのための追加のマイクロプロセッサまたはコントローラ、あるいはコプロセッサなどである。そのような補助プロセッサは、個別のプロセッサであり得るか、またはプロセッサ134と統合され得る。
プロセッサ134は、通信バス132に接続される。通信バス132は、コンピュータシステム130のストレージと他の周辺構成要素との間の情報伝送を容易にするためのデータチャネルを含み得る。通信バス132は、通常、データバス、アドレスバス、および制御バス(図示されない)を含む、プロセッサ134との通信のために用いられる信号の組から成り立っている。通信バス132は、任意のバスアーキテクチャ規格または規格化されていないバスアーキテクチャを含み得る。そのバスアーキテクチャは、例えば、industry standard architecture(「ISA」)、extended industry standard architecture(「EISA」)、Micro Channel Architecture(「MCA」)、peripheral component interconnect(「PCI」)ローカルバス、に準拠するバスアーキテクチャ、またはIEEE488 general−purpose interface bus(「GPIB」)、IEEE696/S−100を含む、米国電気電子技術者協会(「IEEE」)によって公布された標準規格、などである。
コンピュータシステム130は、メインメモリ136を含み、また二次メモリ144を含み得る。メインメモリ136は、プロセッサ134上で実行するプログラムのために命令およびデータのストレージを提供する。メインメモリ136は、一般にダイナミックランダムアクセスメモリ(「DRAM」)および/またはスタティックランダムアクセスメモリ(「SRAM」)などの半導体ベースのメモリである。他の半導体ベースのメモリタイプは、例えば、同期式DRAM(「SDRAM」)、ラムバスDRAM(「RDRAM」)、強誘電体RAM(「FRAM」)、などを含み、読み出し専用メモリ(「ROM」)を含む。
二次メモリ144は、ハードディスクドライブ146および/または取り外し可能なストレージドライブまたはポート148、例えば、フロッピー(登録商標)ディスクドライブ、磁気テープドライブ、コンパクトディスク(「CD」)ドライブ、デジタルバーサタイルディスク(「DVD」)ドライブ、またはソリッドステートメモリフォームファクタをオプションで含み得る。取り外し可能なストレージドライブ148は、媒体インターフェース152を介して取り外し可能なストレージ媒体154から読み出し、かつ/または取り外し可能なストレージ媒体154に書き込む。取り外し可能なストレージ媒体154は、ドライブまたはポート148と互換のタイプであり、例えば、フロッピー(登録商標)ディスク、磁気テープ、CD、DVD、様々な種類およびフォームファクタのソリッドステートメモリなどである。代替の実施形態において、二次メモリ144は、コンピュータプログラムまたは他のデータまたは命令が、コンピュータシステム130へとロードされることを可能にするための、他の同様な手段を含み得る。そのような手段は、例えば、外部ストレージ媒体158およびインターフェース150を含み得る。外部ストレージ媒体158の例は、外部ハードディスクドライブまたは外部オプティカルドライブ、または/および外部光磁気ドライブを含み得る。
コンピュータシステム130はまた、監視タイマ160を有し、監視タイマ160は、CPUが、(そのプログラミングを介して)リセットし得る値をチェックする能力を有する。監視タイマ値が、所定のしきい値に到達する場合には、監視タイマは、CPUリセットコマンドを発行し、CPUリセットコマンドは、システムを再始動させる。
コンピュータシステム130はまた、通信インターフェース138を含み得る。通信インターフェース138は、ソフトウェアおよび/またはデータが、コンピュータシステム130と、外部デバイスおよび/またはセンサと、適用可能な場合には、ネットワークまたは他の情報源との間で伝送されることを可能にする。通信インターフェース138の例は、いくつかだけを挙げると、モデム、ネットワークインターフェースカード(「NIC」)、シリアル通信ポートまたはパラレル通信ポート、PCMCIAスロットおよびPCMCIAカード、赤外線インターフェース、およびIEEE1394ファイアワイヤを含む。
接続性は、入力信号142(センサおよび/またはデバイスへの出力信号をも備え得る)を受信する通信チャネル140を介して達成される。通信チャネル140は、信号142を伝え、様々な通信手段(いくつかだけを挙げると、電線、ケーブル、光ファイバ、従来の電話回線、セル式電話リンク、無線周波数(RF)リンク、または赤外線リンクを含む)を用いて実装される。
図2は、図1aおよび図1bにおいて論じられたようなデバイス内の例示的ソフトウェア(またはコード)200のブロック図である。例示される実施形態において、オペレーティングシステム202は、デバイスが機能することを可能にする基本的な実行可能プログラムまたはプログラムを備える。オペレーティングシステム202に加えて、ソフトウェアは、アプリケーションデータ210とユーザインターフェース204とを備える。アプリケーションデータ210は、アプリケーションが機能するために必要な、またはアプリケーションがそのサービスを提供するために用いる、ユーザ情報とアプリケーション情報とを備える。
ユーザインターフェース204は、UIアプリケーションによって用いられる、実行可能なユーザインターフェースアプリケーションと、ユーザインターフェースデータとの両方を備え得る。代替の実施形態において、ユーザインターフェースアプリケーション部分は、オペレーティングシステムの部分として含まれ得、ユーザインターフェース204は、ユーザインターフェースアプリケーションまたはユーザによって使用可能な、補助的なユーザデータまたはカスタマイズされたデータまたは他のデータを備え得る。ソフトウェアまたはコード200は、デバイスドライバ206、デバイスドライバ208から、デバイスドライバnまでなどの、1つ以上のデバイスドライバを通常さらに備える。これらのデバイスドライバは、オペレーティングシステム202上またはオペレーティングシステム202内で実行するソフトウェアと、オペレーティングシステム202と通信する様々な構成要素(いくつかを挙げると、ディスプレイ、キーパッド、スピーカ、マイクロホン、イヤホン、データセンサなど)との間の通信を容易にする実行可能なコードを備える。
さらに、アプリケーション212、214、216、218、アプリケーションnまでなどの、ソフトウェアアプリケーションの組またはモジュールが示される。例示されるように、多数のアプリケーションが、デバイス内のソフトウェアまたはコード部分を備え得る。アプリケーションの数上の唯一の限界は、デバイス内で利用可能なストレージの物理的な限界である。
また、キー検索コード(KRC)220が示される。オペレーティングシステム「OS」層の部分として示されたが、KRCは、システム全体の設計に依存してアプリケーションレベルのプログラムであり得る。KRCは、以下でより十分に記述されるように、メモリからソフトウェアエレメントを検索する命令の組であり、それらのエレメントに最大限の保護を提供する。
制限ではないけれども、音楽復号器を含むアプリケーションは、符号化または暗号化された音楽ファイルなどの適用可能なデータを実行するかまたは操作するために、しばしばキーを必要とする。アプリケーションと関連づけられる1つ以上のキーは、無認可の発見および使用から保護される1つ以上のビット配列であり、アプリケーション全体またはデータファイル全体ではない。同様に、(コードまたは大量のデータのセクション全体ではない)一意のID配列、キーまたは他のビット/バイト配列は、情報へのアクセスを得るために、アプリケーションの使用を認可または可能にするために用いられるか、あるいはデータまたはコードを使用可能な形態に変換するために用いられ、本開示が保護するために設計されるソフトウェアエレメントである。典型的なキー、ビット配列、バイト配列、ワード配列、または他のソフトウェアエレメント(本明細書中で、「キー」または「ソフトウェアエレメント」のいずれかとして集合的に称される)は、1バイト〜8バイト長の程度であり得るけれども、本明細書中に開示される方法および装置とともに使用可能なキーまたは保護可能なソフトウェアエレメントのサイズにおける特定の上限または下限は存在しない。キーは、OS内、システムデータ内、アプリケーションコード内、またはコードベースにわたって他の場所内に配置され得る。
本明細書中に開示される方法および装置はまた、企業秘密または機密データの操作技術、およびキーを含む、短いコード配列を保護するために用いられ得る。それらはまた、任意のタイプの機密データの比較的短い配列を保護するために用いられ得る。
図3は、ソフトウェアエレメントを保護するための、例示的配列および設計を示す。フローチャート300は、キーを保護するために使用可能な方法の組を表している。図3の説明に加えて、その後の図からのエレメントとの組み合わせがなされ得る。
最初のフェーズにおいて、ブロック302で示されるように、キーは、それ自身のサブセットに分割され、それらのサブセクションは次いで、メモリ内の様々な位置に格納される。このことは、単にメモリを走査することによって見出されることから、キーを保護するために行われる。キー(ソフトウェアエレメント)は、それらが、メモリ内のすべてのデータおよびコード(すべてのメモリ位置)を走査することによって見出されることを可能にする、認識できるパターンをしばしば有している。従って、最初のステップは、キーをその最終的な形態で決して格納しないことである。キーは、多くのバイトまたはワードに単に分割され、メモリのまったく異なるセクション内に格納され得る。バイトまたはワードはまた、あらゆる認識できるパターンをさらに隠すために、任意の配列によって位置的に組み合わされ得る。例えば、デバイス内のメモリが、16ビット単位でアドレス指定可能な(格納される)場合には、64ビットのキーは、8つ(8)の8ビット配列へと分解され、8つ(8)のメモリ位置に格納される。各16ビットのメモリ位置は、保護された配列の認識可能性を低減するために用いられる、別の8つ(8)のビットによってパディングされた残りの8つ(8)のビットを有する。検索される際に、パディングビットは単に取り去られる。パディングは、各保護されるビット間で無作為にビットを交互にするか、保護されるワードの前または後にワードを追加するか、または所望のビット配列の回復を可能にする任意の他の方法など、任意の方法であり得る。従って、ブロック302は、コード(複数のメモリ位置へのキーストレージ機構の設計)の設計特微と、設計方法を用いる動作との両方を表している。動作は、適正なメモリ位置からデータを検索し、それからキーを検索するために情報を組み立てることと関連づけられた動作である。
ブロック304において、アプリケーションは、コードであるキー検索関数を呼び出すことによって、キーをメモリ内のその複数の格納位置から検索する。キーを用いる必要があるOSまたはアプリケーションコードは、キーをその分散された位置から直接に検索し得ない。このことは、メモリ位置が増殖されることを防ぎ、パディングアルゴリズムを可能な限り未知にしておくために、メモリ位置が、単一のコード配列において保持されることを可能にする。従って、キーが必要なコードは、キー検索関数を呼び出す。キー検索関数は、読み取るためのメモリ位置と、格納されたキーセクションのパディングまたは(もしあれば)用いられた他の隠ぺい方法とを知る。特定の実施形態のために必要であるように、キー検索関数は、複数のメモリ位置からキーセクションを回復し、正しいビットを引き出し、検索されたキーを戻すためにビットを組み立てる。
ブロック306は、特徴のない関数名またはルーチン名の使用を表している。例えば、キー検索に用いられることになっている関数が命名されるときに、「key_retrieval」または何か同様な名前に命名されるべきではない。ハッカーは、キーまたは識別「ID」が必要なアプリケーションまたはOS内の特定の地点に現われる記述的名前を捜す。1つ以上の疑わしい名前を見出すと、ハッカーは、単に、関数が呼び出されることを待ち構え、戻り値(キー)を捕捉し得る。従って、関数呼び出しが、キーを検索するために用いられる場合には、関数名は、任意の英数字の配列であるべきである。従って、ブロック306は、コードの設計特微と、設計を用いることと関連づけられた動作との両方を表している。設計は、関数に対して特徴のない名前を用いることである。動作は、指名された特徴のない名前を用いて、任意の必要なパラメータとともに関数を呼び出すことと関連づけられた動作である。
キー検索コードの検出を防ぐさらなるステップは、ブロック308で示される。実行可能なイメージが生成された後、キー検索関数のためのシンボルは、任意のテーブルから取り去られ得る。このことは、単にアドレスへのなんらかの種類のジャンプを行わせ、そのことは、ハッカーが、有意なイベントとして検出することをより困難にする。従って、ブロック308は、実行可能なイメージの構築の間にとられる動作を表し、そして実行の間に例示されたシンボルを用いる、キー検索関数の呼び出しを表しており、そこでは、シンボルテーブルは、リストにされたこの関数に対するシンボルを有しない。
上記の説明のそれぞれは、ハッカーが、イメージを走査することによって、キー検索関数呼び出し、またはキー検索コードのセクションを認識することを困難にする、実行可能なイメージを作り出すために使用可能である。これらの技術を可能な限り多く用いることが、好ましいけれども、それらは必須ではない。各アプリケーションまたは実施形態に対して決定されるときに、これらの技術のすべてまたは一部が用いられ得るか、あるいはなにも用いられ得ない。
キー検索アルゴリズムの一部分としてのタイマの使用が、ブロック310によって表される。キー検索関数が、呼び出される際に(一実施形態に対して上記されたように、容易な検出から隠ぺいされた後)、該関数は、それがメモリからキーを検索するときにタイマを用いる。この図の説明は、ソフトウェアのみによる解決策であり、すなわち用いられるタイマは、専用のタイマではなくシステムタイマである。キー検索関数は、それが、様々なメモリ位置からキーの一部の検索を開始する直前に、システムクロックを読み取る。コードは次いで、実施形態に依存して、所定の最大の時間デルタが到達されるまでか、またはキーセクションがローカルメモリ内にあるまでの、1つ以上の時間デルタを生成する。時間デルタは、経過時間の測定値またはインジケータである。
最大の時間デルタに最初に到達する場合には、検索コードは、システム再始動コマンド(システムが未知の状態にあるときに、セル式電話器のようなデバイス内で用いられる)を送るか、またはさらなる処理を防ぐなんらかの種類のフラグまたはインジケータをOSに設定する。最大の時間デルタは、コード実行をトレースするためのトラブルシューティングポートの使用を防ぐ。コードをトレースするときには、実行にかかった時間は、トレーシングが発生しないときよりも有意に長くなる。システムまたは基板クロックが、通常のスピードでなおも動作しているので、検索時間が、通常予期される特定の量よりも長くかかる場合には、重大なシステム問題があるか、またはソフトウェアが、実行するときに、監視されている(トレースされている)ことが推論され得る。いずれの場合にも、最大のデルタが検出されると、キーは検索されず、かつ/または再調整されない。システムクロック信号を用いる任意の方法が、用いられ得ることに注意されたい。例えば、タイマは、単に、カウントダウンタイマ(時間デルタを計算するというよりも、クロックまたはタイミング信号に基づいて、ローカルタイマをゼロ(0)まで減少するタイマ)であり得る。システムクロック信号を用いる任意の方法が、完全に企図される。
ブロック312を続けると、時間デルタは、データ検索イベントに対してチェックされる。キーデータが検索されたか、または処理されたか、あるいはその両方の前に、あまりにも多くの時間が経ったことをタイマが示す場合には、「はい」の分岐が、ブロック314に対してとられる。ブロック314は、検索プロセスを停止させ、かつ/または関数の呼び出し元に値を戻さないためにとられた動作に対応する。ブロック316において、システムは、再始動/再立ち上げされる。ブロック314およびブロック316は、キーを検索する間のタイマの使用に対する1つの反応を表している。関連する動作は、単独でまたは組み合わせにおいて用いられ得る。例えば、コードは、期限切れのタイマを検出すると直ちに、システムが再始動するように書き込まれ得る。このことは、コードをトレースするあらゆる人物に対して有意な混乱をきたし、発生事象を特定する時間および困難性を大いに増大させる。しかし、示された動作の他の動作もとられ得る。例えば、検索関数は、タイマイベントが発生するときに、機能しない値を単に戻すか、または分岐するか、またはさもなければ実行を他のコードに移転し得る。ブロック314で考察された状態に対するこれらの可能な反応のいずれも、本明細書中では完全に企図される。
決定ブロック312において、キー部分が到着したときに、タイマが期限切れにならなかった場合には、「いいえ」の出口が、ブロック318に対してとられる。ブロック318と関連づけられた動作は、キーを呼び出しルーチンに伝えるために必要な動作を含む。ブロック320は、キー検索を過ぎて、通常のコード実行の継続を表している。
図4a、図4b、図4c、および図4dは、図3で示された全体の流れと関連して使用可能な実施形態をさらに例示する。流れ図400は、キー検索コードを呼び出すための関数呼び出しを用いない実施形態を例示する。流れ図410は、複数のタイマを用いる実施形態を例示する。流れ図420は、検索関数呼び出しまたはコードからの戻りを捕捉するエミュレータの使用を打倒するための、特定のハードウェアタイマを用いる実施形態を例示する。これらの実施形態のそれぞれは、別個にまたは互いに連携して用いられ得る。流れ図440は、メモリからキーを再生成するための流れを例示する。
関数呼び出しを用いない、図4aの流れ図400を参照すると、ブロック402において開始する。キー検索コード「KRC」は、関数名を割り当てられず、関数呼び出しを用いて呼び出されない。ブロック404に続くと、一実施形態は、プログラマブルなオペコードを用いる。該オペコードは、ユーザ定義可能なパラメータをとる。該パラメータは、KRCがどこにあるか(どのコードを実行するか)の指示を含む。従って、ブロック404は、設計選択(ユーザ定義オペコードの使用)と、流れとの両方を表しており、この流れは、キーを検索する必要があるコードが、指名されたパラメータを有するオペコードを用いて検索コードを呼び出すときにとられる動作を含む。これは、図3のブロック304〜ブロック308に対する代替の実施形態である。
あるいは、流れ図400は、ブロック406を用いて具現化され得る。ブロック406は、設計選択と、キー検索ソフトウェアを呼び出すためのISRおよびその関連づけられたベクトルを用いることと関連づけられた動作とを表している。ISRと関連づけられたベクトルは、キー検索コードを示すように設定される。キーが、検索される必要があるときに、呼び出しコードは、ソフトウェア割り込みを発行する。割り込みサービスルーチンは、関連づけられたベクトルを探索することによって割り込みを処理する。ベクトルは、キー検索コードを示し、そしてコードが実行される。このことは、キー検索コードが、それと関連づけられた関数呼び出しを有しないことを意味しており、そのことは、コードをハッカーからさらに隠ぺいする(間接的動作のさらなるレベルである)。ブロック406は、図3のブロック304〜ブロック308に対する代替の実施形態である。
図4bは、概してブロック412で示されるような複数のタイマが、ブロック414と関連づけられた動作を用いて実施され得る方法410を例示する。メモリからのキー検索に対応する単一の計時動作の代わりに、キー生成プロセスは、時間が測定できるサブ動作にさらに再分割される。これらはまた、物理的時間においてオーバーラップし得る(タイマは同時に動作し得る)。ブロック414に対応する動作は、キー検索コードが始動されるときに、任意の必要なタイマを初期化することである。ブロック416に続くと、各タイマは、各所定の計時されるイベントでトリガされる。計時されるイベントは、キーのすべての部分を検索する時間、検索されたデータを処理する時間、および各個々のキー部分を検索する時間を含む。始動されると、複数のタイマが、図3のブロック310と関連づけられた動作の一部分として初期化され、図3のブロック312〜ブロック320で記述されたように、各タイマが処理される。複数のタイマのうちの任意の最初のタイマが期限切れになることは、タイミングの失敗と考えられ、所望の失敗モード(システム再始動または他の動作)をトリガする。
ハードウェアタイマ、監視タイマが、キー検索ソフトウェアによって用いられる実施形態は、図4cの流れ図420で示される。検索コードが実行する間、タイマは、検索コードに専用の専有可能な(dedicateable)ハードウェアリソースである。このことは、専用のリソースではなく一般的なシステムクロックである図3で記述されたタイマとは異なる。図4cで示される方法で専用のリソースを用いることは、無認可のコードトレーシングの間の混乱を引き起こす。なぜならば、そのことが、明白な理由もなく(現在トレースされているコード内の特定の場所と直接相関しない)、システムリセットを生成するからである。
ブロック422は、キー検索コードの始動においてかまたはキー検索ソフトウェアを呼び出す前に、監視タイマを設定するかまたは起動させることと関連づけられた動作に対応している。この起動またはタイマの0へのリセットは、ISRの結果として実行される他のコードでそれを隠すことによってより不明瞭にされ得る。監視タイマが、実行されるコードから別個に動作するので、どれが用いられているかを決定することは困難である。ブロック424に続くと、動作は、2つの一般的なアプローチに対応する。最初のアプローチにおいて、監視タイマの最高値は、それが0まで動作する前に、キー検索コードが正常な状況下で終了するように、十分に高い値に設定される。完了すると、タイマは、非作動にされるか、またはリセットされる。別のアプローチにおいて、監視タイマの最高値は、キー検索プロセスが実行されるときに、キー検索コードが監視タイマをリセットしなければならないように、設定される。いずれかのアプローチまたは他の同様なアプローチが、監視タイマをサービスすることを備える。監視カウンタをリセットすることは、直接呼び出しによってか、またはISRの使用を介して間接的に遂行され得る。ほとんどの場合において、さらなる間接動作を作り出すために、ISRの方法を用いることが好ましい。
決定ブロック426に続くと、監視タイマの割り込みを処理するISRは、監視タイマの値を最高の値に対してチェックする。監視タイマの値が超えられている場合には、値はOKではなく、「いいえ」の出口が、ブロック428に対してとられる。ブロック428と関連づけられた動作は、システムをリセットするために必要な動作である。値がOKである場合には、「はい」の出口が、ブロック430に対してとられ、そこでは、通常のコード実行が継続し、タイマ(time)が非作動にされるかまたは値が超えられるまで、決定ブロック426を介して通常のコード自身へと論理的にループバックする。他の実施形態は示されず、例えば、指定された期間の後、一部の監視タイマが、バッファを作成することによって動作するか、またはカウンタがオーバランし、そこでは、オーバランが、システムリセットをもたらす割り込みを生成する。監視タイマのあらゆる実施形態が、本明細書中に企図される。
プロセス440は、図4dに示されるように、キー検索(図3のブロック310)と関連づけられる流れを例示する。キー検索コードまたは関数が呼び出されるときに、ブロック442と関連づけられた動作が実行される。キーの一部を含むメモリ位置が、読み取られ、データが、キー検索コードに対して使用可能にされる。一実施形態において、これらのメモリ位置は連続している。他の実施形態において、メモリ位置は連続し得ない。該位置は、実装者によって行われる設計選択である。ブロック444において、関連する動作は、メモリから読み取られたデータを操作することが必要な、任意の動作またはすべての動作である。このことは、各ワードから交互のビットを取り外すことか、1つおきのワードを捨てることか、または同様なことと同じくらい単純であり得る。それはまた、キーの一部を再生成するための、より洗練されたアルゴリズムの使用を含み得る。ブロック446に続くと、動作は、完全なキーを操作されたデータから引き出すかまたは引き抜くことを終了するために必要な動作に対応している。このことは、前に操作されたデータの部分を互いに連結することと同じくらい単純であり得るか、またはより洗練された操作であり得る。ブロック448において、ブロック446から引き出されたか、再生成されたか、さもなければ決定されたキーは、キー検索コードを呼び出したコードに提供される。どのようにキーが戻され得るかについては制限がない。それは、相互にアクセス可能なバッファまたは変数へとロードされるか、さもなければ呼び出しコードに対して利用可能にされた、関数呼び出しの戻り値であり得る。
図5は、ソフトウェアエレメントを検索するエミュレータの無認可の使用を打破することに役立つように監視カウンタが用いられる、実施形態を示す状態図500である。図3のようなシステムクロックまたは図4のブロック420に示されるような監視カウンタを用いることは、コードがデバイスのハードウェア上に駐在する間の無認可のコードトレーシングを打破することに役立つ。それは、イメージ全体がエミュレータ上で実行されるときには、無認可のコードトレーシングを検出するために用いられ得ない。エミュレータは、エミュレートされたクロック信号を提供するので、図3で測定される時間デルタは、適正に見える。さらに、エミュレータは、図4のブロック420で示された監視カウンタを有しないので、システムリセットはトリガされない。
図5を続けると、ブロック502は、停止状態の監視タイマを表している。キー検索コードを始動する一部分として、監視タイマは、ブロック506で起動される。該起動は、キー検索プロセスを始動する呼び出しの前または呼び出しの後に発生し得るが、好ましくは、メモリフェッチが始まる前に発生する。ブロック508によって例示されるように、監視カウンタは、ここで動作している。監視カウンタが動作している間、キー検索コードもまたCPU上で実行する。監視カウンタISRとキー検索コード(または、そのISR)との両方によってアクセス可能な、共有変数、バッファ、または他の読み取り書き込みエリアが存在する。
監視が動作するときに、監視は、その関連づけられたISRをCPU上に定期的に呼び出す。ISRは、共有変数内の値をブロック512ごとにインクリメントする。それはまた、図4cで記述されたプロセスを同時に実行するように構成され得、すなわち、2つの論理的な流れが両方とも発生する。キー検索コードが実行するときに、それは、共有変数の値を定期的にチェックする。このことは、直接行われ得るけれども、何者かがコードをトレースする際に、共有エリアを直接チェックすることは、検出するには簡単すぎ得る。代替の方法は、ISRの使用を介して共有変数を間接的にチェックすることである。キー検索コードが、そのISRによって処理される割り込みを送るときには、該ISRは、タイマの値が、特定の値までインクリメントしたか、または特定の値を過ぎてインクリメントしたかを調べるためにチェックする。値がインクリメントしなかった場合には、何ものか(例えば、エミュレータ上で実行されるコード)が、変数をインクリメントさせないようにしている(ブロック514)。
インクリメントにおける失敗は、システムリセットをトリガ(trigging)するキー検索ISRをもたらす(ブロック516)。共有変数が適切にインクリメントされる場合には、キー検索コードによってトリガされたISRは、共有変数を0までリセットする(ブロック510)。監視ISRは、共有変数をインクリメントすることを継続し、キー検索コードは、共有変数の値を定期的にチェックする。この論理的なループは、ブロック504に示されるように、クリティカルなコードセクションまで継続する。その地点では、監視タイマは、非作動にされる(ブロック502)か、あるいは他のプロセスまたはデフォルトのシステム検査プロセスに対して利用可能にされる。
図6は、KRCの実行と関連する監視タイマの使用を示す流れ図である。KRCと監視タイマとの両方を始動するためにとられる動作が、ブロック600で示される。監視タイマとKRCとの両方は、この図でカウンタと呼ばれる共通エリアへの読み取り書き込みアクセスを有する。決定ブロック606と決定ブロック612とに示されるカウンタは、同じカウンタを参照する。監視タイマおよびKRCは、同時に実行する。
ブロック602を続けると、行われる動作は、監視タイマが割り込みをメインプロセッサに送ることを含み、それは、割り込みサービスルーチン「ISR」を呼び出す)。ブロック604において、ISRを実行することによってとられる動作は、カウンタをインクリメントすることを含む。決定ブロック606が、点線616で取り囲んで示されることにより、さらなる実施形態が、この決定を省略し得ることを示す。その場合には、監視タイマは、ISRが呼び出されるごとにカウンタを単にインクリメントする。決定ブロック606を用いる実施形態において、カウンタは、カウンタ値が最大の「MAX」値を越えているか否かを決定するためにチェックされる。MAX値は、KRCが完了することか、またはカウンタを0にリセットしたことを可能にするために、十分な時間を残すように設定される。MAXに到達する場合には、KRCが、ハングした(例えば、応答を待っている)か、またはトレースされているかのいずれかであり、「はい」の出口が、ブロック608に対してとられる。ブロック608に対応する動作は、システムをリセットする(再始動させる)ために必要な動作である。カウンタがMAX未満の場合には、「いいえ」の出口が、ブロック602に対してとられる。実際の実装は、変化し得ることに注意されたい。例えば、MAX値のチェックは、カウンタのオーバフローであり得る。監視タイマは、KRC実行の終わりに非作動にされるまで、この順序を介してループする。
監視タイマは、KRCと同時に実行する。ブロック610は、KRC実行の間にとられる動作を表している。KRCは、実行の間に様々な地点でカウンタをチェックするためのコードを含む。このことは、任意の数の方法において実装され得る。好適な一実施形態は、割り込みを送り、ISRにカウンタを処理させることである。このことは、コードの間接動作のさらなるレベルを提供し、監視タイマとKRC実行との間の相互接続を検出し、破ることをより困難にする。別の実施形態は、KRC命令ストリーム内でカウンタを直接チェックすることである。たとえどのような方法が、カウンタコードを実装するために用いられても、関数の効果は、カウンタが、その値が0であるか否かを調べるためにチェックされることである。答が、はいである場合には、「はい」の出口が、ブロック608に対してとられ、システムはリセットされる。このことは、カウンタが、KRCによって0にリセットされる頻度よりもかなり高く(大きさの順序であり得る)、監視タイマが、呼び出される頻度のために行われる。カウンタは、初期化と、その後のKRCからのリセットとによってのみ0に設定される。カウンタが0であることをKRCが見出す場合には、それは、監視タイマが存在しないことを意味する。このことは、コードがエミュレータ内で実行することを示している。
カウンタが0でない場合には、「いいえ」の出口が、ブロック614に対してとられる。ブロック614と関連づけられた動作は、カウンタを0にリセットするために必要な動作を含む。ブロック614は次いで、ブロック610に向かう。ループは、KRCが実行を終了するまで継続される。
本発明の例示的な実施形態の上記の説明から、様々な技術が、本発明の範囲を逸脱することなく本発明の概念を実施するために用いられ得ることは明白である。さらに、本発明は、特定の実施形態に対する特有の参照とともに記述されたけれども、本開示の利益を有する当業者はまた、本明細書中に開示された本発明の概念の精神および範囲から逸脱することなく、変形が形態および詳細においてなされ得ることを認識する。記述された例示的な実施形態は、すべての点において制限ではなく例示として考慮される。本発明は、本明細書中に記述された特定の例示的な実施形態に制限されないけれども、本発明の範囲を逸脱することなく多くの再配置、組み合わせ、修正、および置換えが可能であることはまた理解されるべきである。

Claims (12)

  1. ソフトウェアエレメントを保護するための方法であって、該方法は、プロセッサとメモリとを含むシステムによって実行され、該方法は、
    システムクロックに従って該プロセッサ上でコードを実行することであって、該コードは、該メモリに格納されているキーをリクエストする機能を含む、ことと、
    該機能が実行されると、
    該プロセッサが、専用ハードウェアタイマをイネーブルにすることであって、該専用ハードウェアタイマは、該専用ハードウェアタイマをイネーブルした時刻からの経過時間の量を測定するように構成されており、該専用ハードウェアタイマは、該システムクロックから分離されている、ことと、
    該プロセッサが、キー検索コード(KRC)を実行することであって、該KRCを実行することは、該プロセッサが、該メモリから該キーを読み出すことを包含する、ことと、
    該プロセッサが、該KRCが実行している間、複数の所定の時点で経過時間の量を読み出すことと、
    該経過時間の量が該複数の所定の時点のうちの2つの間で増加しない場合には、該プロセッサが、該キーを該コードに戻すことなく、該KRCの実行を停止することと
    を包含する、方法。
  2. 前記キーは、前記メモリ内の不連続な複数のメモリ位置に格納されている、請求項1に記載の方法。
  3. 前記複数のメモリ位置のそれぞれは、前記キーの部分を表すデータを格納し、該データは、不明瞭にされている、請求項2に記載の方法。
  4. 前記実行を停止することは、前記システムをリセットすることをさらに包含する、請求項1に記載の方法。
  5. 前記メモリから前記キーを読み出すことは、
    複数のメモリ位置からデータをフェッチすることであって、該複数のメモリ位置のそれぞれは、該キーを導出するために必要な該データの部分を格納する、ことと、
    該データを組み合わせることによって該キーを導出することと
    を包含する、請求項1に記載の方法。
  6. 前記専用ハードウェアタイマは、複数の専用タイマを含み、該複数の専用タイマは、それぞれの専用タイマをイネーブルした時刻からの経過時間のそれぞれの量を測定するように構成されており、
    前記キーは、複数のデータ部分として前記メモリに格納されており、
    該複数の専用タイマのうちの各専用タイマは、該複数のデータ部分のうちのそれぞれのデータ部分を読み出すための時刻の推定量を表すそれぞれの所定の値に関連付けられており、
    前記方法は、
    前記プロセッサが、該複数の専用タイマをイネーブルにすることと、
    該プロセッサが、該複数のデータ部分のうちの各データ部分を読み出すことと、
    該プロセッサが、該複数の専用タイマのうちのいずれかが、それに関連付けられている所定の値に到達した場合には、前記KRCの実行を停止することと
    をさらに包含する、請求項1に記載の方法。
  7. 前記専用ハードウェアタイマは、ハードウェア監視タイマであり、該ハードウェア監視タイマは、前記経過時間の量が所定の値に到達した場合に前記システムをリセットするように構成されている、請求項1に記載の方法。
  8. 前記キーは、前記メモリ内の不連続な複数のメモリ位置に格納されている、請求項7に記載の方法。
  9. 前記複数のメモリ位置のそれぞれは、前記キーの部分を表すデータを格納し、該データは、不明瞭にされている、請求項8に記載の方法。
  10. 前記メモリから前記キーを読み出すことは、
    複数のメモリ位置からデータをフェッチすることであって、該複数のメモリ位置のそれぞれは、該キーを導出するために必要な該データの部分を格納する、ことと、
    該データを組み合わせることによって該キーを導出することと
    を包含する、請求項7に記載の方法。
  11. CPUと、
    該CPUと動作可能に通信するメモリと、
    該CPUと動作可能に通信するシステムクロックと、
    該システムクロックから分離されているハードウェア監視タイマであって、該ハードウェア監視タイマは、該CPUをリセットし、設定可能な監視タイマ値(WTV)を用いるように動作可能であり、該ハードウェア監視タイマは、該WTVが所定の値に到達した場合に該CPUをリセットするように構成されており、該WTVは、該ハードウェア監視タイマがイネーブルされている間、該ハードウェア監視タイマによって周期的に増加される、ハードウェア監視タイマと、
    該メモリ内の、該システムクロックに従って該CPUによって実行可能なコードであって、該コードは、該ハードウェア監視タイマをイネーブルすることとキー検索コード(KRC)を実行することとを該CPUに行わせることによって該メモリに格納されているキーをリクエストする機能を含み、該KRCは、該メモリに格納されている該キーを読み出し、実行の間に複数の所定の時点で該WTVを読み出し、該WTVが該複数の所定の時点のうちの2つの間で増加しない場合には該実行を停止するように構成されている、モバイルデバイス。
  12. 前記KRCは、該KRCが終了する前に、前記CPUがリセットされることを前記監視タイマに示すように、前記WTVを設定するようにさらに構成されており、さらに、該KRCは、実行の間に前記複数の所定の時点で該WTVをリセットするように構成されている、請求項11に記載のモバイルデバイス。
JP2009534664A 2006-10-27 2007-10-26 物理的にセキュア化されていないソフトウェアエレメントのためのセキュリティ Expired - Fee Related JP5021754B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/553,806 2006-10-27
US11/553,806 US20080104704A1 (en) 2006-10-27 2006-10-27 Security for physically unsecured software elements
PCT/US2007/022673 WO2008051607A2 (en) 2006-10-27 2007-10-26 Security for physically unsecured software elements

Publications (2)

Publication Number Publication Date
JP2010507873A JP2010507873A (ja) 2010-03-11
JP5021754B2 true JP5021754B2 (ja) 2012-09-12

Family

ID=39325203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009534664A Expired - Fee Related JP5021754B2 (ja) 2006-10-27 2007-10-26 物理的にセキュア化されていないソフトウェアエレメントのためのセキュリティ

Country Status (4)

Country Link
US (1) US20080104704A1 (ja)
EP (1) EP2078275A2 (ja)
JP (1) JP5021754B2 (ja)
WO (1) WO2008051607A2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2910144A1 (fr) * 2006-12-18 2008-06-20 St Microelectronics Sa Procede et dispositif de detection errones au cours de l'execution d'un programme.
TWI405071B (zh) * 2009-10-26 2013-08-11 Universal Scient Ind Shanghai 使用時間記錄系統及其記錄方法
CN102004885B (zh) * 2010-10-30 2013-07-03 华南理工大学 一种软件保护方法
DE102014203095A1 (de) * 2014-02-20 2015-08-20 Rohde & Schwarz Gmbh & Co. Kg Funkgerät-System und Verfahren mit Zeitparameter-Auswertung

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6205550B1 (en) * 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
WO2002091146A2 (en) * 2001-05-09 2002-11-14 Ecd Systems, Inc. Systems and methods for the prevention of unauthorized use and manipulation of digital content
US20050097342A1 (en) * 2001-05-21 2005-05-05 Cyberscan Technology, Inc. Trusted watchdog method and apparatus for securing program execution
EP1320006A1 (en) * 2001-12-12 2003-06-18 Canal+ Technologies Société Anonyme Processing data
FR2840704B1 (fr) * 2002-06-06 2004-10-29 Sagem Procede de stockage d'une cle confidentielle dans un terminal securise
EP1383047A1 (fr) * 2002-07-18 2004-01-21 Cp8 Procédé de sécurisation de l'exécution d'un programme contre des attaques par rayonnement ou autres
EP1758395A1 (en) * 2004-06-28 2007-02-28 Matsushita Electric Industrial Co., Ltd. Program creation device, program test device, program execution device, information processing system

Also Published As

Publication number Publication date
US20080104704A1 (en) 2008-05-01
JP2010507873A (ja) 2010-03-11
EP2078275A2 (en) 2009-07-15
WO2008051607A2 (en) 2008-05-02
WO2008051607A3 (en) 2008-07-10

Similar Documents

Publication Publication Date Title
US10402179B1 (en) Application randomization mechanism
US10554685B1 (en) Self-healing architecture for resilient computing services
RU2691187C1 (ru) Система и способы аудита виртуальной машины
US6907396B1 (en) Detecting computer viruses or malicious software by patching instructions into an emulator
JP5690689B2 (ja) アプリケーション解析装置およびプログラム
JP4938576B2 (ja) 情報収集システムおよび情報収集方法
US20140082746A1 (en) Extensible protocol for low memory agent
US7823201B1 (en) Detection of key logging software
WO2012046406A1 (ja) 情報処理装置およびアプリケーション不正連携防止方法
US10582387B2 (en) Disabling a mobile device that has stolen hardware components
WO2015042066A1 (en) Data flow based behavioral analysis on mobile devices
Egners et al. Messing with Android's permission model
CN111782416A (zh) 数据上报方法、装置、系统、终端及计算机可读存储介质
Apostolopoulos et al. Discovering authentication credentials in volatile memory of android mobile devices
US10210331B2 (en) Executing full logical paths for malware detection
JP5021754B2 (ja) 物理的にセキュア化されていないソフトウェアエレメントのためのセキュリティ
US7788724B2 (en) System and method for detecting malicious applications
JP2011258019A (ja) 異常検知装置、異常検知プログラムおよび異常検知方法
KR102149711B1 (ko) 위장 프로세스를 이용한 랜섬웨어 행위 탐지 및 방지 장치, 이를 위한 방법 및 이 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체
Xu et al. Security enhancement of secure USB debugging in Android system
CN113687925B (zh) 设备操作处理方法及装置、存储介质、计算机设备
WO2021144978A1 (ja) 攻撃推定装置、攻撃推定方法及び攻撃推定プログラム
CN110597557B (zh) 一种系统信息获取方法、终端及介质
Liang et al. An effective online scheme for detecting Android malware
US20240095341A1 (en) Maya: a hardware-based cyber-deception framework to combat malware

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100512

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110929

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111226

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120106

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120127

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120203

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120511

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

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

LAPS Cancellation because of no payment of annual fees