JP2006510127A - データ処理装置内の命令タイミング制御 - Google Patents

データ処理装置内の命令タイミング制御 Download PDF

Info

Publication number
JP2006510127A
JP2006510127A JP2005502328A JP2005502328A JP2006510127A JP 2006510127 A JP2006510127 A JP 2006510127A JP 2005502328 A JP2005502328 A JP 2005502328A JP 2005502328 A JP2005502328 A JP 2005502328A JP 2006510127 A JP2006510127 A JP 2006510127A
Authority
JP
Japan
Prior art keywords
instruction
conditional
data
timing mode
processor
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
JP2005502328A
Other languages
English (en)
Other versions
JP3848965B2 (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
Priority claimed from GBGB0229068.2A external-priority patent/GB0229068D0/en
Priority claimed from GB0307823A external-priority patent/GB2396229B/en
Application filed by エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2006510127A publication Critical patent/JP2006510127A/ja
Application granted granted Critical
Publication of JP3848965B2 publication Critical patent/JP3848965B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2123Dummy operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)
  • Retry When Errors Occur (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

終了するまでに可変の処理サイクル数を必要とする可変タイミング・モードで動作するプログラム命令に応じるデータ処理装置(2)を提供する。この装置は固定タイミング・モードでも動作する。すなわち、構成制御レジスタ内の1つのビット(または複数のビット)を用いてプログラムすることにより、命令が固定の処理サイクル数を用いて動作することを強制される固定タイミング・モードで動作する。これにより、条件コードを失敗した命令は抑制され、また或るデータを処理するのに必要な処理サイクル数を観察して装置の秘密保護に対して攻撃が行われるのを防ぐために、プログラム命令の早期終了も抑制される。

Description

本発明はデータ処理装置の分野に関するものである。より特定すると、本発明は少なくとも複数のプログラム命令が終了するまでに可変の処理サイクル数を必要とするデータ処理装置に関するものである。
終了するまでに可変の処理サイクル数を必要とする命令を有するプロセッサ・コア(例えば、英国キャンブリッジのARM社の設計によるもの)が提供されている。このようなプログラム命令の一例は条件付命令である。これは、先行命令を実行した結果或る条件が満足される場合(例えば、先行命令により結果がゼロ、オーバーフロー、桁上げなどになった場合)にだけ実行されるよう符号化される。プロセッサの性能を高めるため、早期終了方式を備えるプロセッサも提供されている。これは、処理サイクルを続けても結果が変わらないとプロセッサが判定した場合は、マルチサイクル演算を早期に終了するものである。例えばマルチサイクル加算演算において、両方のオペランドの高次のビットが全てゼロであれば、桁上げがないと判定された場合はその後のプロセッサ・サイクルで高次のビットを計算する必要がない。終了するまでに可変の処理サイクル数をかけるプログラム命令は他にも例が多い。
例えば高度の機密保護で動作して、処理中のデータに許可なくアクセスすることが出来ないようにするプロセッサを提供することがますます重要になっている。例えば、金融取引を扱うスマートカードに用いられるプロセッサ・コアは、パスワードやデータなどを証明するために高度に秘密の暗号鍵を用いることが多い。装置の機密保護と完全性とを保持するには、このような暗号鍵は秘密にしなければならない。このような装置の機密保護を攻撃する1つの周知の方法は、所定の動作を終了するまでに要する処理サイクル数を数えて、処置中のデータに関する情報を識別しようと試みることである。要した処理サイクル数と処理中のデータとの間に相関がある場合は、処理中のデータに関する情報を知ることができる。
サイクルを数えることにより装置の機密保護に加えられる攻撃を防ぐための周知の方法は、コンピュータ・プログラム・コードの書き方に注意して、コンピュータ・プログラムのフローに無関係に固定のサイクル数で終了させることである。実際には、これを行うのは困難である。なぜなら、高いレベルの知識と熟練がプログラマに要求されるためと、全ての場合に処理サイクル数を等しくするという所望の目的が達成されたことを確認/テストすることが困難なためである。また、プログラマが普通に用いる生産性向上ツール(コンパイラなど)はこのような機密のコードを生成するのに適していない。なぜなら、通るプログラム経路に従って、このようなツールが作るコードは処理サイクル数が大幅に変わるのが普通だからである。
1つの観点から、本発明が提供するデータ処理装置は、
終了するまでに最小のサイクル数と最大のサイクル数との間のサイクル数を必要とする少なくとも1つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクルをそれぞれ必要とする個別の処理動作を実行するプロセッサを備え、
前記プロセッサは可変タイミング・モードで動作して、前記少なくとも1つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、また、
前記プロセッサは固定タイミング・モードで動作して、前記少なくとも1つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される。
本発明の認識では、処理動作を速くしまた電力消費を減らすためにプロセッサ内で用いられる可変タイミング命令は、要した処理サイクル数と処理中のデータとの関係を完全に隠すことが望ましい安全な装置という文脈では明らかに不利である。同時に、機密のデータを処理していないときは、速度を上げたり電力消費を減らしたりする可変タイミング命令に付随する大きな利点は望ましいものである。本発明は上記の問題を認めると共に、可変タイミング・モードと固定タイミング・モードとで動作する装置を提供することにより、可能な環境で現在の装置に付随する利点を保持する。可変タイミング・モードでは、可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、固定タイミング・モードでは、可変タイミング命令は終了するまでに必ず固定のサイクル数をかけるよう強制される。このように、機密のデータを処理するときは装置を固定タイミング・モードに置いて、処理動作を終了するまでにかける処理サイクル数を容易に隠すが、機密のデータを処理しないときは装置を可変タイミング・モードで動作させて、可変タイミングの機構に付随する速度の利点と電力消費削減の利点とを活用する。固定タイミング・モードを用いると各命令のタイミングは処理中のデータとは無関係なので、プログラム・フローの経路に無関係に、プログラマは終了するまでに固定の処理サイクル数をかけるプログラム・コードを書くのが容易になる。またこれにより、固定タイミング・コードを生成するコンパイラを作るのが容易になる。
前に述べたように、本発明の方法は可変タイミングをとることのできる広範囲のプログラム命令に適用可能であるが、特に適しているのは、装置が固定タイミング・モードにあって全ての条件コードに関係なく条件付命令は固定の処理サイクル数をかけることを強制される場合か、可変タイミング・モードにあって条件コードが或るパラメータと一致する場合は命令の実行が抑制される場合かに従って、1つ以上の条件付き命令が実行される実施の形態である。
可変タイミング・モードでは抑制すべき条件付き命令を固定タイミング・モードで実行する場合は、本発明の好ましい実施の形態では、後のデータ処理に影響を与えるような変更を条件付き命令が行うことは全て禁止される。例えば、後の処理に影響するようなプロセッサ内の状態の更新や変更を条件付き命令が行うことは全て禁止される。
本発明の技術が適しているプログラム命令の種類は条件付き分岐命令である。なぜなら、この技術を用いなければ、分岐が抑制されるかどうかに従ってこの種の命令はプログラム・タイミングに強い影響を与えることがあるからである。固定タイミング・モードで動作するとき、条件付き分岐命令は条件コードが満足されない場合でも分岐することを強制されるが、この場合は条件付き分岐命令に指定された分岐先に関係なくプログラム・フロー内の次の命令に分岐され、条件付き分岐命令が全く抑制された場合と同じように次の命令が実行される。
条件付き命令が条件付きデータ操作命令の場合は、本発明の好ましい実施の形態では、固定タイミング・モードにあるときは、条件コードを失敗したときは条件付きデータ操作命令は実行されるが、通常これは抑制されて、命令は実行されるが条件付きデータ操作命令の通常の結果の宛先に結果を書き込むことは禁止される。
条件付きデータ操作命令から結果が書き込まれるかどうかに従って生じるプロセッサの消費電力の変動を観察してこれに基づいて機密保護に対する攻撃が行われることから守るために、好ましい実施の形態では、条件コードを失敗したときに、結果を通常の結果の宛先に書き込むのではなく1つ以上のダミー宛先に書き込む。これにより、条件コードを失敗したかどうかに関係なく実質的に同じ電力消費が保たれ、条件付きデータ操作命令は必ず実行され、ダミーの宛先ではあるにしても結果は必ず書き込まれる。
可変タイミング実行が可能な命令の別の型は、1つ以上の処理中のデータ値に従って早期終了が可能な命令である。好ましい実施の形態は固定タイミング・モードで動作して、このような早期終了可変タイミング・モードを与えるために装置内に設けられた機構がそれが可能であることを示しているときでも、早期終了を全て抑制する。例えば、乗算の一方のオペランドがゼロであれば他方のオペランドが何であっても結果はゼロなので、結果をゼロとして命令を早期に終了させることができる。しかし固定タイミング・モードでは、命令は処理サイクル数を全てかけてゼロの結果を返すよう強制される。
早期終了が可能な好ましい型の命令の例として、マルチサイクル乗算命令、マルチサイクル除算命令、マルチサイクル加算命令、マルチサイクル減算命令がある。
或るハードウエア信号などによって装置を固定タイミング・モードにすることは可能であるが、本発明の好ましい実施の形態では、プログラマブル・モード制御用パラメータ(例えば、1ビットまたは複数のビット)によって可変タイミング・モードか固定タイミング・モードかを採用するようプロセッサを構成してよい。
このようにして、機密のデータを処理中でなくかつ低い電力消費で高い性能が必要なときは可変タイミング・モードにし、機密のデータを処理中であって処理中のデータが処理サイクル数に依存することを隠す必要性の方が速度や電力消費などの考慮より優先するときは固定タイミング・モードにするというように、ソフトウエア制御の下で装置を切替えることができる。
プログラマブル・モード制御用パラメータを設定する好ましい方法は、装置制御用コプロセッサなどのシステム構成レジスタ内にこれを保存することである。
別の形態から見ると、本発明は終了するまでに最小のサイクル数と最大のサイクルの数との間を必要とする少なくとも1つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクル数をそれぞれ必要とする個別の処理動作を実行するプロセッサを用いてデータを処理する方法を提供し、前記方法は、
前記プロセッサを可変タイミング・モードで動作させて、前記少なくとも1つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、
前記プロセッサを固定タイミング・モードで動作させて、前記少なくとも1つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される、
ステップを含む。
図1は、プロセッサ・コア4と、コプロセッサ6と、メモリ8とを含むデータ処理装置2を示す。
動作を説明すると、プロセッサ・コア4はメモリ8から命令とデータとを取り出す。命令は命令パイプライン10に取り出され、例えば、取出し、復号、実行、メモリ、次の処理サイクルでの書き込みなど順次のパイプライン段を占める。パイプライン付きプロセッサ自体は、部分的に重ねることにより多数のプログラム命令を実質的に実行してプロセッサの性能を向上させる方法として周知である。
プロセッサ・コア4がメモリ8から読み取ったデータ値はレジスタ・バンク12に送られ、ここから乗算器14、シフタ16、加算器18の1つ以上を用いてプログラム命令制御の下に操作される。AND、OR、ゼロまでのカウントなどの論理演算を実行する回路などの他のデータ操作回路も設けられる。
図1はプロセッサ・コア4内の命令復号器20も示す。これは命令パイプライン10内のプログラム命令に応じて実行制御信号を生成して、レジスタ・バンク12、乗算器14、シフタ16、加算器18などの種々の処理要素に与えて、実行される処理動作を制御する。例えば、復号器20が生成する制御信号は該当するオペランドをレジスタ・バンク12から読み取り、乗算器14、シフタ16、加算器18の該当する要素に与えて実行して結果を生成し、これをレジスタ・バンク12に戻して書き込む。
コプロセッサ6は多数の構成レジスタ22を含むシステム構成コプロセッサである。構成レジスタ22はプログラム制御の下に書き込まれて構成制御用パラメータを設定する。このような構成制御用パラメータは処理装置2の構成の多くの形態(例えばエンディアネス(endianess)など)を指定する。このような構成制御用レジスタ22の1つの中に、プロセッサ・コアの動作を固定タイミング・モードで行うか可変タイミング・モードで行うかを指定する1つのビットが含まれる。図ではこのビットは命令復号器20の入力として与えられるように示しているが、認識されるように、このビットはその行動を制御する必要に応じてプロセッサ・コア4内の種々の他の点に与えてもよい。この固定/可変ビットに従って、プロセッサ・コア4は固定タイミング・モードまたは可変タイミング・モードで動作する。
固定タイミング・モードでは、可変タイミング・モードで可変タイミング(すなわち、終了するまでに可変の処理サイクル数をかける)を有する少なくとも1つのプログラム命令は、可変ではなく固定タイミングを有するように強制される(例えば、全体として抑制されたかまたは最大の処理サイクル数より早く終了したかに関わらず、終了するまでに最大の可能な処理サイクル数をかける)。命令復号器20は、プログラム命令を復号してプロセッサ・コア4の他の要素の活動を命令する主役なので、命令復号器20はプロセッサ・コア4の動作を固定タイミング・モードか可変タイミング・モードかに制御するのに主導的な役割を果たす。全ての可変タイミング命令が固定タイミング・モード型の動作を行う必要はない。
認識されるように、上の説明では構成制御用レジスタ22内の1つのビットでタイミング・モードを固定か可変かに切替えるものとして示した。他の方法として、構成制御用レジスタ22内の複数のビットを用いて、異なる型の命令(条件付き命令行動、均一分岐行動、早期終了の禁止など)の固定または可変のタイミング行動を別々に可能にしまた使用禁止にしてよい。
図2は条件付き命令24の概要を示す。この条件付き命令は、複数の条件付き命令だけを含む命令集合の一部でもよいし、実質的に完全に条件付きである命令集合(ARM命令集合など)の一部でもよい。条件コード26は、関連する命令を実行するかしないかという一組のプロセッサ状態条件を符号化する。例えば条件コード26は、装置内に現在設定されている条件コードがゼロの結果や、桁上げの発生や、オーバーフローの発生などを示す場合は命令24を実行しないと指定することができる。この型の命令を用いて効率的なプログラム符号化を行うことができる。固定/可変ビットは条件付き行動を少なくとも部分的に抑制する。すなわち、その条件コードに関係なく命令は実行するが、プロセッサ状態に影響を与えるようなその結果の書き込み方はしない。
図3は命令復号器20が実行する処理動作の一部の概要を示す流れ図である。理解されるように、図3はこのような処理動作を論理シーケンスとして示すが、実際にはこのような処理動作は少なくとも部分的に並列にまたは異なる順序で実行してよい。
ステップ28で、命令復号器20は実行する新しい命令を待つ。新しい命令を受けると、処理はステップ30に進み、新しい命令に関連する条件コードを読み取る。ステップ32で、これらの条件コードと装置内の既存の条件コードとを比較する。装置内のこれらの既存の条件コードは、前の処理活動(直前の命令かまたはこれらの条件コードを更新した最新の命令で行った)の結果である。
ステップ34で、実行される現在の命令の条件コード26と既存の条件コードとが一致するかどうかチェックする。一致しない場合は、処理はステップ36に進み、現在の命令の実行を開始する。認識されるように、図3は一致しない場合に実行する装置を示すが、別の実施の形態では一致する場合に実行する装置でもよい。
ステップ36の後、処理はステップ38に進んで、命令の早期終了が可能かどうかチェックする。この早期終了は、例えば、オペランドの1つが特定の値(0や1など)を有するためか、または次の処理サイクルで特定の部分的結果が作られたためである。早期終了が可能な場合は処理はステップ40に進み、プロセッサ・コア4が現在動作中のタイミング・モードが固定か可変かをチェックする。プロセッサが可変タイミング・モードにある場合は処理はステップ42に進み、関係する命令を早期終了し、結果を適当に返して、処理はステップ28に戻る。
ステップ40で装置が固定タイミング・モードにあると判定された場合は、早期終了が可能であるかどうかに関係なく処理はステップ44に進む。ステップ38で早期終了が可能でないと判定されたときにもステップ44に進むが、関係する命令をここで1処理サイクルの間実行する。乗算や除算や加算や減算などのマルチサイクル処理命令の場合は実行するのに一般に数サイクルを要するので、ステップ44の後で処理はステップ46に進み、その命令に関連する最大のサイクル数を実行したかどうか判定する。最大のサイクル数を実行した場合は結果が生成されている。早期終了が可能ではあるが更に続いて複数の処理サイクル間実行するよう装置が強制された場合も、その型の命令の最大の可能な処理サイクル数に到達したときはこの強制実行を終了してよいことをステップ46は示す。最大の処理サイクル数をまだ実行していない場合は、処理はステップ38に戻る。
ステップ34でのテストで一致した場合は、処理はステップ48に進む。この例では、ステップ34で一致したと検出されたことは、特定の命令の実行を抑制すべきことを示す。ステップ48で、装置が現在強制実行モードにあるかどうか判定する。強制実行モードにある場合は処理はステップ50に進み、命令の強制ダミー実行を行う。ダミー実行を行ったときは、命令自体の中に指定されている宛先ではなくトラッシュ・レジスタ(図1のトラッシュ・レジスタ51を参照)に結果を書き込んで、抑制すべきであったので実行してはならなかったプログラム命令によって装置の状態が変更されるのを防ぐと共に、電力消費を実質的に不変に保つ。ステップ48で装置が強制実行モードではなく可変タイミング・モードにあると判定された場合は、処理はステップ50をバイパスしてステップ28に戻り、プログラム命令は通常の方法で抑制される。
認識されるように、図3は条件コードを失敗した全ての命令と命令の全ての早期終了を抑制したものにダミー実行が適用される一般的な装置を示す。実際には、このような方法は条件付き命令と早期終了が可能な命令の部分集合にも適用することができる。上に述べた複数の構成制御用ビットを用いて、早期終了抑制などの機能は選択的に実行するが、条件コードの失敗の後のダミー実行などの他の機能は実行しないようにすることもできる。
図4は、固定タイミング・モードにおける条件付き分岐命令の実行の概要を示す。命令のシーケンスABを、条件付き分岐命令BEQ(等しいとき分岐)に到達するまで実行する。命令BEQは、前の処理と結果が等しいことを示すフラグがセットされている場合は指定された分岐を実行し、このフラグがセットされていない場合は抑制するという行動を符号化する。条件コードが合格のとき(すなわち、条件コードが一致するとき)は分岐を行って、処理は命令X、Yなどに進む。条件コード失敗のときは、全体を抑制するのではなく、BEQ命令はすぐ次の命令Cに分岐する。これは、BEQ命令が抑制されて全く実行されなかった場合に到達する命令と同じである。しかし固定タイミング・モードでは、条件コードが合格か失敗かに関係なくBEQは同じ処理サイクル数になる。これにより、秘密データにアクセスしようとする人に対して前に実行したデータ処理動作の結果を隠すことができる。
図5は、プログラム命令Iに応答してデータDを操作するプログラマブル・プロセッサ・コアの形のデータ処理装置52の略図を示す。データ処理装置52は、レジスタ・バンク54、乗算器56、シフタ58、加算器60、算術論理ユニット62、ロード・ストア・ユニット64、データ・パイプライン66、命令復号器68、ランダム・クロック・ゲート用回路70を含む。システム構成コプロセッサCP15 72はプロセッサ・コアに結合する。システム構成コプロセッサ72は、データ処理装置52の種々の回路部の擬似ランダム・ダミー活動をそれぞれ可能にしまたは使用禁止にする多数のフラグ値を保持するシステム構成レジスタ74を含む。認識されるように、データ処理装置52は一般に更に多くの回路要素を含むが、簡単のために図5では省略した。
乗算器56に付随するのはダミー活動可能回路76である。これは必要に応じて乗算器56内でのダミー活動を可能にし、または実行中のプログラム命令が必要とするときは、必要な活動可能信号を通して乗算器56を活動的にする。同様なダミー活動可能回路78,80,82,84が前に述べた他の各回路部58,60,62,64に付随する。
動作を説明すると、実行する命令は命令パイプライン66に、更に命令復号器68に送られて命令駆動可能信号を生成し、各回路部に与えられる。このような可能信号は、データ処理装置52を通るデータ経路を選択し、関係する回路部を活動的にしてその入力を読み取り、指定された処理を実行し、その関連する出力信号を生成する。例えば、乗算・累算演算はレジスタ・バンク54からデータ値を読み取り、これを乗算器56と加算器60とに与え、その結果をレジスタ・バンク54に返して書き込む。このように、レジスタ・バンク54と乗算器56と加算器60とは全てその動作を可能にしまたそれを選択する必要な活動可能信号を受けて、完全なデータ経路を形成する。
異なる回路部は異なる電力消費特性とタイミング特性とを有するので、外部の観察者はこのようなパラメータを観察することによりどの命令を実行中かを知ることができる。これに対抗して、実行中の命令に必要ない他の回路部の擬似ランダム・ダミー活動も可能にする。例えば、実行中の特定の乗算・累算命令でシフタ58が用いられていなくても、擬似ランダム的に可能にして、その入力に与えられる全ての値をシフトして電力を消費する。このダミー活動が必要な動作(例えば、或る回路部が出力値を持続する)を妨げるような望ましくない方法で回路状態を変えることを防ぐため、その出力ラッチは可能にしない。ダミー活動が可能になるのは、関係する回路部の通常の動作タイミングと一致する期間である。
ランダム・クロック・ゲート用回路70は異なる各回路部向けの複数の擬似ランダム可能信号を受けてこれをゲートし、システム構成コプロセッサ72内のシステム構成レジスタ74から読み取られた構成パラメータの制御の下に各回路部に与える。このような構成フラグは、例えば、シフタ58、ALU62、乗算器56についてはダミー活動を可能にするが、加算器60とロード・ストア・ユニット64については可能にしないことを示す。異なる擬似ランダム可能信号により、関係するこれらの各回路部と一致させて異なる擬似ランダム特性を与えることができる。例えば、異なる回路部の通常のタイミングに関連して異なる最小可能時間があってよい。
全体レベルにおいて、命令復号器68は現在実行中の命令が指定するデータ処理動作を実行するのに必要な回路部を可能にする必要な活動可能回路として機能することが分かる。この必要な活動に重ねて、データ処理装置52の他の種々の場所に設けられているダミー活動制御回路により、他の回路部内の種々のダミー活動が可能になり/刺激される。ダミー活動は、必要な活動に付随する電力消費およびタイミング特性を隠すのに役立つ。
図6は、必要な可能信号enとダミー可能信号rndとを受ける回路部86を示す略図である。この回路部86は、その間で処理論理がデータ値を操作するラッチのシーケンスと考えることができる。真に要求された活動が必要なとき、回路部86を通るデータ経路を与える全てのラッチが可能になり、要求された処理は入力ラッチと出力ラッチとの間で実行される。ダミー活動が命令されると、入力ラッチと中間ラッチだけが可能になる。この場合は、全回路部を通ってデータ経路が形成されないので、回路部が生成した出力値は変わらない。
図7は、擬似ランダム・クロック信号を生成するのに用いてよい型の線形フィードバック・シフト・レジスタを示す。このようなクロック信号は図5のランダム・クロック日付回路(random clock dating circuit)72に与えられる。異なる回路部には別個の擬似ランダム信号発生器を設けてよい。異なる擬似ランダム発生器に関連する固定クロック周波数を変えて関連する回路部の特性を一致させ、更に必要に応じて隠蔽動作を隠してよい。
図8は、回路部の可能信号の制御の概要を示す。ステップ88で、命令復号器68から可能信号enを受けたかどうか判定する。このような可能信号を受けた場合は、処理はステップ90に進む。命令復号器68からの可能信号は、復号された真のプログラム命令に従って、要求された処理演算を行うことが必要であることを示す。したがってステップ90では、関係する回路部への入力と出力とクロック信号とを可能にする。ステップ88で命令復号器から可能信号enを受けない場合は、処理はステップ92に進んで、その回路部のダミー演算が許されるかどうか判定する。ダミー演算が許される場合は、処理はステップ94に進み、回路部への入力とクロックとは可能になるが、回路部からの出力は可能にならない。次に回路部はダミー活動を行う。ステップ92での判定の結果、システム構成パラメータの指示によりダミー演算が許されない場合は、ステップ94をバイパスして処理は終了する。
認識されるように、図8に示すプロセスは順次流れ図の形である。実際には、この制御は異なる順序で行われて、データ処理装置52全体に広がる回路要素を用いてよい。順次に実行されるように示されている動作も実際は並列に実行されてよくまたは制御機能は修正されてよい。全体レベルでは、個別の回路部は、該当するプログラム命令に応じて通常要求される動作を行うことが可能になり、また関連する構成パラメータにより許される場合はダミー活動を行うことが可能になる。
図9はレジスタ・バンク96の略図を示す。このレジスタ・バンクは、英国キャンブリッジのARM社が設計したプロセッサに従う、ユーザ・モード動作用のARMプロセッサ・プログラマのモデルに基づくものである。実際には、他のプロセッサ・モードについて更にレジスタを用いることがあるが、簡単のために省略した。通常のデータ・レジスタR0からR15はデータ値を保持するのに用いる。レジスタR13,R14,R15は、一般に機密保護に関係ないデータ値であるプログラム・カウンタ値、分岐復帰アドレス値、スタック・ポインタを記憶する。したがって、R13,R14,R15についてはデータ書込みの際の移行バランスは必要ない。トラッシュ・レジスタRTは、その条件コードを失敗した条件付き書込みに関連して用いるためにレジスタ・バンク96内に設けられる。その条件コードを失敗した条件付き書込み命令は、通常は書込みは行わない。しかしこの装置では、このような失敗した条件付き書込み命令は、条件コードを失敗したにもかかわらずやはりトラッシュ・データ・レジスタRTにデータ値を書き込む。これにより、条件付き書込み動作の条件コード失敗または条件コード合格に付随するはずの電力消費やタイミングの違いを全て隠す。トラッシュ・データ・レジスタRTは、命令内のレジスタ指定オペランドでアドレス指定できるような方法ではプログラマのモデルに現れない。
トラッシュ・データ・レジスタRTだけでなく、高から低へと低から高への移行のバランスをとるために別のレジスタ98,100も設けられる。専用のダミー・レジスタ98は、トラッシュ・データ・レジスタRTだけでなくデータ・レジスタR0からR12に関して設けられる。共用ダミー・レジスタ100は、移行バランシング技術に従ってデータ・レジスタへの書込みのたびに応答して排他的OR値と排他的OR値の逆とを記憶するために設けられる。レジスタ書込み制御回路102は、データ・レジスタへのデータ値の書込みに応じて別のレジスタ98、100に書き込む該当するデータ値を生成する。この対称的書込み制御は、システム構成コプロセッサ72からの該当するシステム構成制御フラグ信号により選択的に可能または使用禁止になる。
図10はレジスタ書込み制御回路102の動作の概要を示す流れ図である。ステップ104で、回路はレジスタ書込み動作の命令を待つ。ステップ106で、このレジスタ書込み先が、対称的書込み制御装置が適用されるデータ・レジスタの1つかトラッシュ・データ・レジスタRTかを判定する。レジスタ書込み先がこれらのレジスタでない場合は処理はステップ108に進み、要求されたデータ値XがレジスタR13,R14,R15の1つに単に書き込まれる。
書込みが行われるレジスタが対称的レジスタ書込みに従う可能性がある場合は、ステップ110で現在この機能が可能かどうか判定する。現在この機能が可能でない場合は、処理はステップ108に進む。この機能が可能な場合は、処理はステップ112に進む。
ステップ112で、レジスタ制御回路はデータ値内のビット位置毎に、その位置に書き込まれた現在のビットとその位置に前に記憶されたビットとの逆排他的ORの値を計算し、次にこれと、そのビット位置に前に記憶されたダミー・レジスタ値との排他的ORをとる(図11を参照)。またレジスタ制御回路102は、この決定の逆と、データ値としてデータ・レジスタに書き込まれたビットの逆も計算する。これらの値を、書き込まれる全てのビットについて計算する(例えば、3ダミー32ビット値)。
ステップ114で、ステップ108と同様にしてデータ値をデータ・レジスタに書き込む。ステップ116で、関係するレジスタ内のビット位置毎に決定された別の3つの値を別の3レジスタに書き込む。ステップ114と116とは同時に行う。図11に関して説明するように、これにより高から低へと低から高への遷移の数と消費電力のバランスが得られる。
図11はデータ書込み動作の前と後の可能なビット値の表を示す。データ値はレジスタRnに書き込まれる。これは対称的書込み動作機能が適用されるレジスタである。時刻tと時刻t+1での値が示されている。これらの値の逆は簡単に決定される。この対称的動作に従う各データ・レジスタに対して、現在データ・レジスタ内に保持されているデータ値の逆を記憶する専用のダミーレジスタ98が設けられる。
共用ダミー・レジスタ100は図11にはレジスタRdで示されている。共用ダミー・レジスタRd内のビット位置毎に、データ書込みが起こったときにそのビット位置に書き込まれる新しい値が、図11の下部に示す関数で決定される。この関数により、データ値とデータ値の逆とに変化が起こらないときは、共用ダミー・レジスタ内の対応するビットとその逆とに、確かに変化が起こる。この表は、データ値が変化しないときに起こる共用ダミー・レジスタ値の変化と、データ値が変化したときに変化しないダミー・レジスタ値内の共用値を示す。このように、書込み毎に保証された固定の遷移数がある、すなわち、高から低へと低から高へのバランスされた等しい遷移数がある。
図13は、書込み動作がその条件コードを失敗したときに書き込みを行うダミー・データ・レジスタRDの動作を示す流れ図である。ステップ118で、制御論理は命令を受けるのを待つ。この制御論理は命令復号器68または他の論理でよい。ステップ120で、命令がその条件コードを失敗したかどうか判定する。命令コードがその条件コードを失敗しない場合は、通常はステップ122に進んで、その命令内のレジスタ・オペランドが指定するレジスタに書込みを行う。命令がその条件コードを失敗した場合は処理はステップ124に進み、ダミー・データ・レジスタ書込みが可能かどうか判定する。これが可能でない場合は処理は終了する。ダミー・データ・レジスタ書込みが可能な場合は処理はステップ126に進み、条件コードを失敗したにもかかわらず、条件コード失敗命令が計算したデータ値がトラッシュ・データ・レジスタRTに書き込まれる。これにより、条件コード合格か条件コード失敗かに関係なく、電力消費とタイミングとがバランスする。認識されるように、トラッシュ・データ・レジスタRTも前に説明した遷移バランシング機構に従う。
図13は、少なくとも複数の命令について多重命令実行機構を備えるデータ処理装置128を示す。データ処理装置128は、少なくとも複数のジャバ(登録商標)(Java(登録商標))バイトコード命令の本来の実行(native execution)を支援するものである。この型のデータ処理装置と固有の実行はPCT特許出願第WO−A−02/29555号に述べられている。この出願全体と、本来のハードウエア実行と、特に一層複雑なジャバ・バイトコードの選択的ソフトウエア・エミュレーションに関する開示をここに援用する。
ジャバ・バイトコード復号器130は入力信号により選択的に可能と使用禁止になってよい。ジャバ・バイトコード復号器130が使用禁止の場合は、受けたジャバ・バイトコードは、例外的に固有のARMサム(Thumb)命令集合を用いてジャバ・バイトコードを処理するためのソフトウエア・エミュレーション・コードの実行を開始する。この支援コードは図に示す領域132内のメモリ内に記憶される。ジャバ・バイトコード・プログラム134もメモリ内に記憶される。ジャバ・プログラムの実行の性質を隠したい場合は、ジャバ・バイトコード復号器130に擬似ランダム信号を与えてこの要素を選択的に可能および使用禁止にして、ジャバ・バイトコードの命令実行機構を、混合ハードウエアおよびエミュレーション機構と純粋エミュレーション機構との間で実質的に切り替えてよい。システム構成レジスタ136内の構成制御値はジャバ復号器130が存在するかどうか、またこのジャバ復号器130をランダムに可能および使用禁止にすることが許されるかどうかを指定する。
図14は、受けたジャバ・バイトコードの処理の概要を示す。ステップ138でジャバ・バイトコードを受ける。ステップ140で、ジャバ復号器130が可能かどうか判定する。ジャバ復号器130を擬似ランダムに可能および使用禁止にすることにより、バイトコードを必ずエミュレートするステップ142かまたはハードウエアで命令を実行するステップ146に実質的に分岐する。これにより、ジャバ・バイトコード実行に付随する電力シグネチャが隠される/マスクされる。ステップ146で、関係する特定のジャバ・バイトコードがジャバ復号器130で支援されないと判定されると、ステップ142でこのジャバ・バイトコードもソフトウエアでエミュレートされる。しかしジャバ・バイトコードがハードウエアで支援される場合は、ステップ146でハードウエアで実行される。
本発明の実施の形態について単なる例であるが添付の図面を参照して説明する。
固定タイミング・モードと可変タイミング・モードとで動作するデータ処理装置の略図を示す。 条件付きプログラミング命令の概要を示す。 本発明の技術に従って動作する命令復号器が実行する処理動作の一部を示す概略の流れ図である。 固定タイミング・モードにおける条件付き分岐命令の実行の概要を示す。 選択的に可能になって要求された処理動作またはダミー処理動作を実行する多数の回路部を含むデータ処理装置を示す略図である。 要求された可能信号とランダム・ダミー活動可能信号とに応じる、回路部とその関連するダミー活動可能回路との概略を示す。 擬似ランダム信号発生器として用いてよい線形シフト・フィードバック・レジスタを示す略図である。 要求された処理活動とダミー処理活動とを実行する回路部の制御の概要を示す流れ図である。 条件付き書込み動作がその条件コードを失敗したときにダミー・レジスタ書込みが行われる宛先の多数のデータ処理レジスタと、多数のダミー・レジスタと、多数の共用ダミー・レジスタと、マップされないトラッシュ・レジスタRTとを含むレジスタ・バンクの一部を示す略図である。 レジスタ書込みが生じたときに起こる高から低へと低から高への移行の数をバランスさせようとするレジスタ書込み制御回路の概要を示す流れ図である。 レジスタ書込みに関連して起こる高から低へと低から高への移行をバランスさせるよう形成された、データ・レジスタと3個の別のレジスタ内の特定のビットのビット移行の関係とを示す表である。 書込み動作の条件コード失敗のときのトラッシュ・レジスタへの書込みの制御の概要を示す流れ図である。 命令の多重実行機構と、少なくとも複数の命令に用いられる実行機構の擬似ランダム選択とを有する装置を示す略図である。 図13の装置の制御の概略を示す流れ図である。

Claims (24)

  1. データ処理装置であって、
    終了するまでに最小のサイクル数と最大のサイクル数との間のサイクル数を必要とする少なくとも1つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクルをそれぞれ必要とする個別の処理動作を実行するプロセッサを備え、
    前記プロセッサは可変タイミング・モードで動作して、前記少なくとも1つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、また、
    前記プロセッサは固定タイミング・モードで動作して、前記少なくとも1つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される、
    データ処理装置。
  2. 前記少なくとも1つの可変タイミング命令は条件付き命令を含み、前記プロセッサは前記可変タイミング・モードで動作して1つ以上の前に実行したプログラム命令の実行に応じて1つ以上の条件コード集合に従って前記条件付き命令の実行を抑制し、また前記プロセッサは前記固定タイミング・モードで動作して1つ以上の前に実行したプログラム命令の実行に応じて前記1つ以上の条件コード集合に関係なく固定の処理サイクル数で前記条件付き命令を終了する、請求項1記載のデータ処理装置。
  3. 前記条件付き命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付き命令の実行を抑制する場合は、前記条件付き命令は後のデータ処理動作に影響を与える何らかの変更を行うことが禁じられる、請求項2記載のデータ処理装置。
  4. 前記条件付き命令が条件付き分岐命令である場合は、前記条件付き分岐命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付き分岐命令の実行を抑制する場合は、前記条件付き分岐命令内で指定されている分岐先に関係なく、前記条件付き分岐命令は次の命令に分岐することを強制される、請求項3記載のデータ処理装置。
  5. 前記条件付き命令が条件付きデータ操作命令である場合は、前記条件付きデータ操作命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付きデータ操作命令の実行を抑制する場合には、前記条件付きデータ操作命令は前記条件付きデータ操作命令のどの通常の結果宛先にも結果を書き込むことが禁じられる、請求項3記載のデータ処理装置。
  6. どの通常の宛先にも前記結果を書き込むことが禁じられる場合は、代わりに前記結果は少なくとも1つのダミー宛先に書き込まれる、請求項5記載のデータ処理装置。
  7. 前記少なくとも1つのダミー宛先はダミー・プロセッサ・レジスタを含む、請求項6記載のデータ処理装置。
  8. 前記少なくとも1つの可変タイミング命令は処理中の1つ以上のデータ値に従って早期終了を行うことが可能な命令を含み、また前記プロセッサは前記可変タイミング・モードで動作するときは早期終了が許され、前記プロセッサは前記固定タイミング・モードで動作するときは早期終了が禁じられる、請求項1記載のデータ処理装置。
  9. 早期終了が可能な前記命令は、
    多重サイクル乗算命令と、
    多重サイクル除算命令と、
    多重サイクル加算命令と、
    多重サイクル減算命令と
    の1つである、請求項8記載のデータ処理装置。
  10. 前記プロセッサは、プログラマブル・モード制御用パラメータに従って前記可変タイミング・モードか前記固定タイミング・モードを採用する、先行請求項のどれかに記載のデータ処理装置。
  11. 前記プログラマブル・モード制御用パラメータはシステム構成レジスタ内に記憶される、請求項10記載のデータ処理装置。
  12. 前記プロセッサはプログラム実行経路を隠すために前記固定タイミング・モードに切り替えられる、先行請求項のどれかに記載のデータ処理装置。
  13. 終了するまでに最小のサイクル数と最大のサイクル数との間のサイクル数を必要とする少なくとも1つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクル数をそれぞれ必要とする個別の処理動作を実行するプロセッサを用いてデータを処理する方法であって、
    前記プロセッサを可変タイミング・モードで動作させて、前記少なくとも1つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、
    前記プロセッサを固定タイミング・モードで動作させて、前記少なくとも1つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される、
    ステップを含むデータを処理する方法。
  14. 前記少なくとも1つの可変タイミング命令は条件付き命令を含み、また更に前記プロセッサを前記可変タイミング・モードで動作させるときは1つ以上の前に実行したプログラム命令の実行に応じて1つ以上の条件コード集合に従って前記条件付き命令の実行を抑制し、また前記プロセッサを前記固定タイミング・モードで動作させるときは1つ以上の前に実行したプログラム命令の実行に応じて前記1つ以上の条件コード集合に関係なく固定の処理サイクル数で前記条件付き命令を終了することを含む、請求項13記載のデータを処理する方法。
  15. 前記条件付き命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付き命令の実行を抑制する場合には、前記条件付き命令は後のデータ処理動作に影響を与える何らかの変更を行うことが禁じられる、請求項14記載のデータを処理する方法。
  16. 前記条件付き命令が条件付き分岐命令である場合は、前記条件付き分岐命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付き分岐命令の実行を抑制する場合は、前記条件付き分岐命令内で指定されている分岐先に関係なく、前記条件付き分岐命令は次の命令に分岐することを強制される、請求項15記載のデータを処理する方法。
  17. 前記条件付き命令が条件付きデータ操作命令である場合は、前記条件付きデータ操作命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付きデータ操作命令の実行を抑制する場合は、前記条件付きデータ操作命令は前記条件付きデータ操作命令のどの通常の結果宛先にも結果を書き込むことが禁じられる、請求項15記載のデータを処理する方法。
  18. どの通常の宛先にも前記結果を書き込むことが禁じられる場合は、代わりに前記結果は少なくとも1つのダミー宛先に書き込まれる、請求項17記載のデータを処理する方法。
  19. 前記少なくとも1つのダミー宛先はダミー・プロセッサ・レジスタを含む、請求項18記載のデータを処理する方法。
  20. 前記少なくとも1つの可変タイミング命令は処理中の1つ以上のデータ値に従って早期終了を行うことが可能な命令を含み、また更に前記プロセッサは前記可変タイミング・モードで動作するときは早期終了が許され、前記プロセッサは前記固定タイミング・モードで動作するときは早期終了が禁じられることを含む、請求項13記載のデータを処理する方法。
  21. 早期終了が可能な前記命令は、
    多重サイクル乗算命令と、
    多重サイクル除算命令と、
    多重サイクル加算命令と、
    多重サイクル減算命令と
    の1つである、請求項20記載のデータを処理する方法。
  22. 前記プロセッサは、プログラマブル・モード制御用パラメータに従って前記可変タイミング・モードか前記固定タイミング・モードを採用する、請求項13から21のどれかに記載のデータを処理する方法。
  23. 前記プログラマブル・モード制御用パラメータはシステム構成レジスタ内に記憶される、請求項22記載のデータを処理する方法。
  24. 前記プロセッサはプログラム実行経路を隠すために前記固定タイミング・モードに切り替えられる、請求項13から23のどれかに記載のデータを処理する方法。
JP2005502328A 2002-12-12 2003-10-06 データ処理装置内の命令タイミング制御 Expired - Lifetime JP3848965B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GBGB0229068.2A GB0229068D0 (en) 2002-12-12 2002-12-12 Instruction timing control within a data processing system
GBGB0302650.7A GB0302650D0 (en) 2002-12-12 2003-02-05 Processing activity masking in a data processing system
GBGB0302646.5A GB0302646D0 (en) 2002-12-12 2003-02-05 Processing activity masking in a data processing system
GB0307823A GB2396229B (en) 2002-12-12 2003-04-04 Processing activity masking in a data processing system
PCT/GB2003/004304 WO2004053685A1 (en) 2002-12-12 2003-10-06 Instruction timing control within a data processing system

Publications (2)

Publication Number Publication Date
JP2006510127A true JP2006510127A (ja) 2006-03-23
JP3848965B2 JP3848965B2 (ja) 2006-11-22

Family

ID=32512449

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2005502329A Pending JP2006510998A (ja) 2002-12-12 2003-10-06 データ処理システム内の処理アクティビティのマスキング
JP2005502327A Expired - Lifetime JP4619288B2 (ja) 2002-12-12 2003-10-06 データ処理システムにおける処理動作マスキング
JP2005502326A Expired - Fee Related JP4511461B2 (ja) 2002-12-12 2003-10-06 データ処理システムでの処理動作マスキング
JP2005502328A Expired - Lifetime JP3848965B2 (ja) 2002-12-12 2003-10-06 データ処理装置内の命令タイミング制御

Family Applications Before (3)

Application Number Title Priority Date Filing Date
JP2005502329A Pending JP2006510998A (ja) 2002-12-12 2003-10-06 データ処理システム内の処理アクティビティのマスキング
JP2005502327A Expired - Lifetime JP4619288B2 (ja) 2002-12-12 2003-10-06 データ処理システムにおける処理動作マスキング
JP2005502326A Expired - Fee Related JP4511461B2 (ja) 2002-12-12 2003-10-06 データ処理システムでの処理動作マスキング

Country Status (4)

Country Link
US (4) US7426629B2 (ja)
JP (4) JP2006510998A (ja)
GB (3) GB2406943B (ja)
WO (4) WO2004053683A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006202265A (ja) * 2004-12-21 2006-08-03 Denso Corp マイクロコンピュータ
JP2006309454A (ja) * 2005-04-27 2006-11-09 Denso Corp プログラム制御方法及びプロセッサ
US8699884B2 (en) 2009-03-30 2014-04-15 Fujitsu Limited Optical transmission system and optical transmission method

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004053683A2 (en) * 2002-12-12 2004-06-24 Arm Limited Processing activity masking in a data processing system
US8065532B2 (en) 2004-06-08 2011-11-22 Hrl Laboratories, Llc Cryptographic architecture with random instruction masking to thwart differential power analysis
US20070081484A1 (en) * 2004-07-29 2007-04-12 Wang Michael M Methods and apparatus for transmitting a frame structure in a wireless communication system
US20080317142A1 (en) * 2005-07-29 2008-12-25 Qualcomm Incorporated System and method for frequency diversity
US8391410B2 (en) * 2004-07-29 2013-03-05 Qualcomm Incorporated Methods and apparatus for configuring a pilot symbol in a wireless communication system
US9246728B2 (en) 2004-07-29 2016-01-26 Qualcomm Incorporated System and method for frequency diversity
AU2005267809B2 (en) * 2004-07-29 2010-02-11 Qualcomm Incorporated System and method for interleaving
FR2875657B1 (fr) * 2004-09-22 2006-12-15 Trusted Logic Sa Procede de securisation de traitements cryptographiques par le biais de leurres.
US7725694B2 (en) * 2004-12-21 2010-05-25 Denso Corporation Processor, microcomputer and method for controlling program of microcomputer
CN101203859B (zh) * 2005-04-21 2013-08-14 松下电器产业株式会社 程序难破解化装置和难破解化方法
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US9042212B2 (en) 2005-07-29 2015-05-26 Qualcomm Incorporated Method and apparatus for communicating network identifiers in a communication system
US9391751B2 (en) * 2005-07-29 2016-07-12 Qualcomm Incorporated System and method for frequency diversity
EP1920376A2 (en) * 2005-08-24 2008-05-14 Nxp B.V. Processor hardware and software
US8074059B2 (en) 2005-09-02 2011-12-06 Binl ATE, LLC System and method for performing deterministic processing
JP4783104B2 (ja) * 2005-09-29 2011-09-28 株式会社東芝 暗号化/復号装置
EP1783648A1 (fr) * 2005-10-10 2007-05-09 Nagracard S.A. Microprocesseur sécurisé avec vérification des instructions
JP4882625B2 (ja) * 2005-12-26 2012-02-22 株式会社デンソー マイクロコンピュータ
US20070288738A1 (en) * 2006-06-09 2007-12-13 Dale Jason N System and method for selecting a random processor to boot on a multiprocessor system
US7594104B2 (en) * 2006-06-09 2009-09-22 International Business Machines Corporation System and method for masking a hardware boot sequence
US20070288761A1 (en) * 2006-06-09 2007-12-13 Dale Jason N System and method for booting a multiprocessor device based on selection of encryption keys to be provided to processors
US20070288740A1 (en) * 2006-06-09 2007-12-13 Dale Jason N System and method for secure boot across a plurality of processors
US7774616B2 (en) * 2006-06-09 2010-08-10 International Business Machines Corporation Masking a boot sequence by providing a dummy processor
US20070288739A1 (en) * 2006-06-09 2007-12-13 Dale Jason N System and method for masking a boot sequence by running different code on each processor
JP4680876B2 (ja) * 2006-12-11 2011-05-11 ルネサスエレクトロニクス株式会社 情報処理装置及び命令フェッチ制御方法
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
JP5146156B2 (ja) * 2008-06-30 2013-02-20 富士通株式会社 演算処理装置
EP2367102B1 (en) * 2010-02-11 2013-04-10 Nxp B.V. Computer processor and method with increased security properties
GB2480296A (en) * 2010-05-12 2011-11-16 Nds Ltd Processor with differential power analysis attack protection
US8525545B1 (en) 2011-08-26 2013-09-03 Lockheed Martin Corporation Power isolation during sensitive operations
US8624624B1 (en) 2011-08-26 2014-01-07 Lockheed Martin Corporation Power isolation during sensitive operations
US8694862B2 (en) 2012-04-20 2014-04-08 Arm Limited Data processing apparatus using implicit data storage data storage and method of implicit data storage
JP5926655B2 (ja) * 2012-08-30 2016-05-25 ルネサスエレクトロニクス株式会社 中央処理装置および演算装置
US20150161401A1 (en) * 2013-12-10 2015-06-11 Samsung Electronics Co., Ltd. Processor having a variable pipeline, and system-on-chip
US9569616B2 (en) 2013-12-12 2017-02-14 Cryptography Research, Inc. Gate-level masking
US9558032B2 (en) 2014-03-14 2017-01-31 International Business Machines Corporation Conditional instruction end operation
US9454370B2 (en) 2014-03-14 2016-09-27 International Business Machines Corporation Conditional transaction end instruction
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9305167B2 (en) * 2014-05-21 2016-04-05 Bitdefender IPR Management Ltd. Hardware-enabled prevention of code reuse attacks
US10049211B1 (en) * 2014-07-16 2018-08-14 Bitdefender IPR Management Ltd. Hardware-accelerated prevention of code reuse attacks
US10210350B2 (en) * 2015-08-10 2019-02-19 Samsung Electronics Co., Ltd. Electronic device against side channel attacks
KR102335203B1 (ko) * 2015-08-10 2021-12-07 삼성전자주식회사 부채널 공격에 대응하는 전자 장치
US10459477B2 (en) 2017-04-19 2019-10-29 Seagate Technology Llc Computing system with power variation attack countermeasures
US10200192B2 (en) 2017-04-19 2019-02-05 Seagate Technology Llc Secure execution environment clock frequency hopping
US10270586B2 (en) 2017-04-25 2019-04-23 Seagate Technology Llc Random time generated interrupts in a cryptographic hardware pipeline circuit
US10511433B2 (en) 2017-05-03 2019-12-17 Seagate Technology Llc Timing attack protection in a cryptographic processing system
US10771236B2 (en) 2017-05-03 2020-09-08 Seagate Technology Llc Defending against a side-channel information attack in a data storage device
FR3071121B1 (fr) * 2017-09-14 2020-09-18 Commissariat Energie Atomique Procede d'execution d'un code binaire d'une fonction securisee par un microprocesseur
US11308239B2 (en) 2018-03-30 2022-04-19 Seagate Technology Llc Jitter attack protection circuit

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07239837A (ja) * 1993-12-21 1995-09-12 General Instr Corp Of Delaware 秘密保護マイクロプロセッサのためのクロック周波数変調
JP2001266103A (ja) * 2000-01-12 2001-09-28 Hitachi Ltd Icカードとマイクロコンピュータ
JP2004522221A (ja) * 2001-01-17 2004-07-22 インフィネオン テクノロジーズ アクチェンゲゼルシャフト Cpuのセキュリティーを高めるための方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4064558A (en) * 1976-10-22 1977-12-20 General Electric Company Method and apparatus for randomizing memory site usage
US4168396A (en) * 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
US4593353A (en) * 1981-10-26 1986-06-03 Telecommunications Associates, Inc. Software protection method and apparatus
JPS59739A (ja) * 1982-06-28 1984-01-05 Fujitsu Ltd マイクロプログラム処理装置における時間保障方式
JPS595354A (ja) 1982-06-30 1984-01-12 Fujitsu Ltd デ−タ処理装置
JP2562838B2 (ja) * 1989-02-10 1996-12-11 富士通株式会社 プロセッサ及びストアバッファ制御方法
US5574912A (en) * 1990-05-04 1996-11-12 Digital Equipment Corporation Lattice scheduler method for reducing the impact of covert-channel countermeasures
GB2282245B (en) * 1993-09-23 1998-04-15 Advanced Risc Mach Ltd Execution of data processing instructions
IL110181A (en) * 1994-06-30 1998-02-08 Softchip Israel Ltd Install microprocessor and peripherals
US5675645A (en) * 1995-04-18 1997-10-07 Ricoh Company, Ltd. Method and apparatus for securing executable programs against copying
FR2745924B1 (fr) * 1996-03-07 1998-12-11 Bull Cp8 Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre
JP3683031B2 (ja) * 1996-04-17 2005-08-17 株式会社リコー プログラム保護装置
US5802360A (en) * 1996-05-01 1998-09-01 Lucent Technologies Inc. Digital microprocessor device having dnamically selectable instruction execution intervals
US6192475B1 (en) * 1997-03-31 2001-02-20 David R. Wallace System and method for cloaking software
FR2765361B1 (fr) * 1997-06-26 2001-09-21 Bull Cp8 Microprocesseur ou microcalculateur imprevisible
EP1019794B1 (en) * 1997-10-02 2008-08-20 Koninklijke Philips Electronics N.V. Data processing device for processing virtual machine instructions
US6327661B1 (en) * 1998-06-03 2001-12-04 Cryptography Research, Inc. Using unpredictable information to minimize leakage from smartcards and other cryptosystems
US6216223B1 (en) * 1998-01-12 2001-04-10 Billions Of Operations Per Second, Inc. Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
WO1999067766A2 (en) * 1998-06-03 1999-12-29 Cryptography Research, Inc. Balanced cryptographic computational method and apparatus for leak minimization in smartcards and other cryptosystems
CA2243761C (en) * 1998-07-21 2009-10-06 Certicom Corp. Timing attack resistant cryptographic system
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
FR2787900B1 (fr) * 1998-12-28 2001-02-09 Bull Cp8 Circuit integre intelligent
US6804782B1 (en) * 1999-06-11 2004-10-12 General Instrument Corporation Countermeasure to power attack and timing attack on cryptographic operations
US6609201B1 (en) * 1999-08-18 2003-08-19 Sun Microsystems, Inc. Secure program execution using instruction buffer interdependencies
FR2802733B1 (fr) * 1999-12-21 2002-02-08 St Microelectronics Sa Bascule de type d maitre-esclave securisee
JP4168305B2 (ja) * 2000-01-12 2008-10-22 株式会社ルネサステクノロジ Icカードとマイクロコンピュータ
CA2298990A1 (en) * 2000-02-18 2001-08-18 Cloakware Corporation Method and system for resistance to power analysis
US20020032558A1 (en) * 2000-03-10 2002-03-14 Paul Strong Method and apparatus for enhancing the performance of a pipelined data processor
ATE366443T1 (de) * 2000-05-22 2007-07-15 Infineon Technologies Ag Sicherheits-datenverarbeitungseinheit sowie dazugehöriges verfahren
US6625737B1 (en) * 2000-09-20 2003-09-23 Mips Technologies Inc. System for prediction and control of power consumption in digital system
GB2367653B (en) 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
WO2004053683A2 (en) * 2002-12-12 2004-06-24 Arm Limited Processing activity masking in a data processing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07239837A (ja) * 1993-12-21 1995-09-12 General Instr Corp Of Delaware 秘密保護マイクロプロセッサのためのクロック周波数変調
JP2001266103A (ja) * 2000-01-12 2001-09-28 Hitachi Ltd Icカードとマイクロコンピュータ
JP2004522221A (ja) * 2001-01-17 2004-07-22 インフィネオン テクノロジーズ アクチェンゲゼルシャフト Cpuのセキュリティーを高めるための方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006202265A (ja) * 2004-12-21 2006-08-03 Denso Corp マイクロコンピュータ
JP4702004B2 (ja) * 2004-12-21 2011-06-15 株式会社デンソー マイクロコンピュータ
JP2006309454A (ja) * 2005-04-27 2006-11-09 Denso Corp プログラム制御方法及びプロセッサ
US8699884B2 (en) 2009-03-30 2014-04-15 Fujitsu Limited Optical transmission system and optical transmission method

Also Published As

Publication number Publication date
GB0501017D0 (en) 2005-02-23
WO2004053685A1 (en) 2004-06-24
JP2006510126A (ja) 2006-03-23
WO2004053683A3 (en) 2004-08-05
GB0502061D0 (en) 2005-03-09
JP2006510998A (ja) 2006-03-30
US20060117167A1 (en) 2006-06-01
WO2004053683A2 (en) 2004-06-24
WO2004053684A3 (en) 2004-08-12
JP4619288B2 (ja) 2011-01-26
WO2004053684A2 (en) 2004-06-24
US7313677B2 (en) 2007-12-25
JP4511461B2 (ja) 2010-07-28
US7426629B2 (en) 2008-09-16
US20060155962A1 (en) 2006-07-13
GB2403572A (en) 2005-01-05
JP3848965B2 (ja) 2006-11-22
GB2406943B (en) 2005-10-05
GB0423310D0 (en) 2004-11-24
JP2006522375A (ja) 2006-09-28
US7134003B2 (en) 2006-11-07
GB2406684B (en) 2005-08-24
US20050289331A1 (en) 2005-12-29
WO2004053662A3 (en) 2004-08-12
US20060036833A1 (en) 2006-02-16
GB2406943A (en) 2005-04-13
GB2406684A (en) 2005-04-06
GB2403572B (en) 2005-11-09
WO2004053662A2 (en) 2004-06-24

Similar Documents

Publication Publication Date Title
JP3848965B2 (ja) データ処理装置内の命令タイミング制御
KR102558104B1 (ko) 호출 경로 의존 인증
US9582650B2 (en) Security of program executables and microprocessors based on compiler-architecture interaction
JP7105699B2 (ja) プログラム・ループ制御
US7877577B2 (en) Information processor and instruction fetch control method
US11307856B2 (en) Branch target variant of branch-with-link instruction
KR102379886B1 (ko) 벡터 명령 처리
JP2010282651A (ja) データ処理システムにおける処理動作マスキング
Winderix et al. Architectural Mimicry: Innovative Instructions to Efficiently Address Control-Flow Leakage in Data-Oblivious Programs
US20230259605A1 (en) Authentication code generation/checking instructions
GB2396229A (en) Processor to register writing masking by writing to normal register or to a trash register
WO2024028565A1 (en) No-operation-compatible instruction
Morse Self-spectre, write-execute and the hidden state
KR20230158569A (ko) 집적회로에서 프로그램을 보호하는 방법
JP2001195252A (ja) マスク技術による無効で分岐効率向上を図るプロセッサ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060817

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060828

R150 Certificate of patent or registration of utility model

Ref document number: 3848965

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100901

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20100901

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110901

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20120901

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130901

Year of fee payment: 7

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

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

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

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

EXPY Cancellation because of completion of term