JP2006522375A - データ処理システムにおける処理動作マスキング - Google Patents

データ処理システムにおける処理動作マスキング Download PDF

Info

Publication number
JP2006522375A
JP2006522375A JP2005502327A JP2005502327A JP2006522375A JP 2006522375 A JP2006522375 A JP 2006522375A JP 2005502327 A JP2005502327 A JP 2005502327A JP 2005502327 A JP2005502327 A JP 2005502327A JP 2006522375 A JP2006522375 A JP 2006522375A
Authority
JP
Japan
Prior art keywords
register
data processing
data
write
trash
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
JP2005502327A
Other languages
English (en)
Other versions
JP4619288B2 (ja
JP2006522375A5 (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 JP2006522375A publication Critical patent/JP2006522375A/ja
Publication of JP2006522375A5 publication Critical patent/JP2006522375A5/ja
Application granted granted Critical
Publication of JP4619288B2 publication Critical patent/JP4619288B2/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, 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, 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, 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

Abstract

条件付き書き込み処理操作をサポートするデータ処理システムの中にトラッシュレジスタが設けられていて、非書き込み条件に遭遇したとき、レジスタ書き込みが条件付き書き込み操作により特定されるデータレジスタでなくてトラッシュレジスタになされるようになっている。したがって、レジスタ書き込みが起きるか否かに関係する電力符号がマスクされる。トラッシュレジスタはシステム・コンフィギュレーション・レジスタ内に記憶されているコンフィギュレーション・パラメータによって、イネーブルとディスエーブルにプログラム可能である。

Description

本発明はデータ処理システムの分野に関する。特に本発明はたとえばセキュリティを高めるために、データ処理システム内の処理動作のマスクに関するものである。
安全なデータを扱うデータ処理システムを提供することは知られており、そのために高度のセキュリティを確保することが望ましい。一例として、スマートカードを提供することが知られているが、これは秘密の暗号キーのような安全なデータを扱うデータ処理システムを含むものであり、偽物を防止するためにこのデータは秘密にしておかなければならない。
このようなシステムのセキュリティを攻撃する方法として、タイミング分析とパワー分析とを含む方法が知られている。入力に反応するこの種のシステムのタイミング動作と電力消費の様子を観察することによって、実行中の処理に関する情報と処理中のデータを、セキュリティと妥協することができるように決定することができる。セキュリティ攻撃に対して抵抗力を持つことは非常に有利なことである。
本発明の一態様として提供されるデータ処理装置は、
データ処理操作の実行時に結果データ値を発生するように動作可能な結果データ値発生回路と、
結果データ値が書き込まれるデータ処理レジスタとを含み、
結果データ発生回路により実行される少なくとも1つのデータ処理操作が条件付き書き込みデータ処理操作であり、条件付き書き込みデータ処理操作のための結果データ値は、非書き込み条件が満たされたとき、データ処理レジスタに書き込まれず、
さらに、非書き込み条件が満たされたとき、条件付き書き込みデータ処理操作の実行時に結果データ値を書き込むことができるトラッシュレジスタを含む、データ処理装置である。
データ処理レジスタへの書き込みに関連した電力消費に特徴があり、したがって、条件付き書き込みデータ処理操作に付随して実行中のデータ処理に関する情報が外部から観察することができることを本発明は認識している。ここでいう情報はすなわち、条件付き書き込みが起きたか起きなかったかに関する情報である。本発明はこの問題に取り組むものであり、条件付き書き込みデータ処理操作がその非書き込み条件を満たすときに結果値(好ましくは真の値)をトラッシュレジスタに書き込む。他の場合には書き込みは起きないであろう。したがって、書き込み条件または非書き込み条件が満たされているか否かにかかわらず、トルー(true)レジスタかまたはトラッシュレジスタへのレジスタ書き込みが常に起きる。こうしてこのシステムのセキュリティが高まる。
書き込み条件が満たされたときに書き込みが正常に行われるデータレジスタは、好ましくはその種のレジスタを複数個含むレジスタバンクである。この環境において、レジスタバンク内にいくつリアルデータレジスタが設けられているかとは無関係に、ダミー書き込み用に共通のトラッシュレジスタ(1つまたは複数)を使うことができる。
トラッシュレジスタは物理的にレジスタバンクの一部として設けることが好ましい。回路のどの部分が任意の所定の時間に動作しているかを観察することによって、情報の漏洩を防ぐためである。
本発明はたとえばマイクロプロセッサ方式のシステム、ディジタル信号処理システムなど、広範囲のシステムに適用可能であるが、本発明が特によく適合するのはデータ処理命令に応答するプロセッサコアを含むシステムである。これらの命令は、本技術が取り組む潜在的な脆弱性を引き起こす条件付き書き込み命令をしばしば含んでいるからである。
特定の条件が満たされたとき、条件付き書き込み操作が起きるかまたは起きないかのいずれかになるようにできることが理解されよう。
できるだけ電力諸費量を減らすということは、この分野における通常の技術的欲望であることは理解されよう。したがって、条件付き書き込み操作を要求しないとき、レジスタ書き込みを実行しないことが有利な機能であろうということが通常考えられるであろう。その方が電力消費量を軽減するからである。本発明の技術はこの分野におけるこの技術的欲望に逆らうものであって、たとえシステムの実処理動作のために必要でないとしても、トラッシュレジスタ書き込みを慎重に実行して、電力を消費するものである。
本発明の好ましい実施例において、トラッシュレジスタの動作は、システム・コンフィギュレーション・レジスタに記憶されている制御信号に従って、選択的にイネーブルとディスエーブルにすることができる。このことによってトラッシュレジスタ動作のプログラマブル操作が可能になり、安全でない処理が起きているときこの機能をディスエーブルにすることにより、電力を節約することができるようになる。更に、暗号キーの処理や、パスワードの解読等々を行うときのように、必要なときのセキュリティも改善される。
前述のように、トラッシュレジスタは通常のデータレジスタと共にレジスタバンク内に物理的に配置することができるが、好ましい実施例では、トラッシュレジスタはどんなプログラム命令によっても特定することができないように、レジスタ番号にマップされない。したがってプログラマのモデルから見るとレジスタとして見えない。しかしながら、好ましい実施例においてその動作はコンフィギュレーション・パラメータによってイネーブルまたはディスエーブルにすることができる、というようにトラッシュレジスタは見える。
本発明の別の態様として提供されるデータ処理方法は、
データ処理操作の実行時に結果データ値を発生するステップを備え、実行する少なくとも1つのデータ処理操作は条件付き書き込みデータ処理操作であり、非書き込み条件が満足したときに、結果データ値はデータ処理レジスタに書き込まれず、代わりにトラッシュレジスタに書き込まれる、データ処理方法である。
次に本発明の実施例について、図面を参照して説明する。
図1はプロセッサコア4、コプロセッサ6およびメモリ8を含むデータ処理システム2を示す。
動作時に、プロセッサコア4はメモリ8から命令とデータとを取込む。命令は命令パイプライン10に送られ、そこで命令は例えば、取込み、デコード、実行、記憶およびライトバックのようなパイプラインステージを、連続的な処理サイクルで次々と実行する。パイプライン式のプロセッサ自体は、処理性能を改善するために、部分的にオーバーラップしながらいくつかのプログラムの命令を効率的に実行する方法としてよく知られている。
プロセッサコア4によってメモリ8から読み出されたデータ値はレジスタバンク12に送られ、そこから乗算器14,シフタ16,加算器18のうち1つまたは複数使ってプログラム命令の制御下で処理される。アンド、オア、カウントリーディングゼロ(count leading zeros)のように論理操作を行う回路のような他のデータ操作用回路を備えることもできる。
図1はまたプロセッサコア4の中に命令デコーダ20を含む。これはデータ処理動作の実行を制御するために、命令パイプライン10内のプログラム命令に応答して、レジスタバンク12、乗算器14、シフタ16および加算器18のような各種の処理要素に供給される実行制御信号を発生する。一例として、デコーダ20より生ずる制御信号によって適当なオペランドがレジスタバンク12から読み出され、乗算器14、シフタ16、および加算器18のうち適当なものに供給されて作用し、レジスタバンク12にライトバックされる結果を生ずる。
コプロセッサ6はいくつかのコンフィギュレーション・レジスタ22を含むシステム・コンフィギュレーション・コプロセッサである。このレジスタはプログラム制御下でコンフィギュレーション制御パラメータを設定するように書き込まれる。これらのコンフィギュレーション制御パラメータは、たとえばエンディアン(endianess)などのようなデータ処理システム2の構成に関して多くの点を特定することができる。これらのコンフィギュレーション制御レジスタ22のうちの1つの中に、プロセッサコアが固定タイミングモードで動作すべきかそれとも可変タイミングモードで動作すべきかを特定するビットが含まれている。このビットは命令デコーダ20への入力として示されているが、このビットはプロセッサコア4内にある各種の他の点の動作を制御する必要性に応じてそれらの点に供給することもできることが理解されよう。この固定/可変ビットに依存して、プロセッサコア4は固定タイミングモードかそれとも可変タイミングモードのいずれかで動作する。固定タイミングモードで動作するとき、可変タイミングモードのときに可変タイミングを有する(すなわち完了するのに可変数の処理サイクルを要する)少なくとも1つのプログラム命令が、替わって強制的に固定タイミングを有するようにされる(たとえば、完了するのに最多可能数の処理サイクルを要する)。このことはまるごと抑制することができたかもしれないか否かにかかわらず、あるいは最多数より少ない処理サイクルで完了することができたかもしれないかどうかにかかわらず、行われる。命令デコーダ20は主にプログラム命令を解読してプロセッサコア4の他の要素の動作を命令する責任があるので、固定タイミングモードまたは可変タイミングモードのいずれかで動作するのに、命令デコーダ20はプロセッサコア4を制御する中で主要な役割を果たすことができる。固定タイミングモードタイプで動作するのであれば、すべての可変タイミング命令を備える必要はない。
上述の説明によりコンフィギュレーション・レジスタ22の中の1ビットが固定タイミングモードと可変タイミングモードの間の切り替えとして示されていることが理解されよう。替わりに、コンフィギュレーション・レジスタ22内に複数のビットを備えて、たとえば条件付き命令動作、一様分岐動作、ディスエーブル早期終了などのような各種の命令の固定タイミング動作または可変タイミング動作を個別にイネーブルとディスエーブルするようにしてもよい。
図2は条件付き命令の略図を示す。この条件付き命令は、いくつかの条件付き命令だけ、または実質的に完全に条件付きであるARM命令セットのような命令セットの一部だけを含む命令セットの一部とすることができる。条件コード26は関連の命令が実行されるかまたは実行されないかという1組のプロセッサ状態条件を符号化する。たとえば、条件コード26は、もしそのシステムで今設定されている条件コードがゼロという結果を示している、けた上げが起きた、オーバフローが起きたなどがあれば、命令24が実行されないということを規定するように構成することができる。このタイプの命令は効率的なプログラム・コーディングを行うのに使うことができる。命令はその条件コードにかかわらず実行するが、その結果がプロセッサの状態に影響するように結果の書き込みをしないという点で、固定/可変ビットは少なくとも部分的に条件付き動作を抑制する。
図3は命令デコーダ20によって実行される処理操作の一部分の概略を示す。図3はこれらの処理操作を論理シーケンスとして示すが、実際にはこれらの処理操作は少なくとも部分的には並列にまたは異なる順番で実行してもよい。
ステップ28において、命令デコーダ20は新しい命令が実行されるのを待つ。新しい命令を受けると処理はステップ30に進み、そこで新しい命令に付随する条件コードが読まれる。ステップ32でこれらの条件コードがそのシステムに今ある条件コードと比較される。そのシステムに今あるこれらの条件コードは、これらの条件コードを更新したであろう直前の命令または最新の命令のいずれかにおける前の処理活動の結果である。
ステップ34で今実行中の命令の条件コード26と現在ある条件コードとの照合のためのチェックが行われる。もしも一致しなければ、処理はステップ36に進み、現在の命令の実行がスタートする。図3は一致しなかったときに実行されるシステムを示すが、別の実施例では一致したときに実行されるシステムとすることもできるであろう。
ステップ36の次に処理はステップ38に進み、そこで命令の早期終了が可能か否かに関してチェックが行われる。この早期終了は例えば、オペランドの一つがゼロまたは1のような特定の値を有するという理由によるか、または特定の部分的な結果が生じた次の処理サイクル時に起きる。もし早期終了が可能であれば、処理はステップ40に進み、そこでプロセッサコア4が今固定タイミングモードで動いているのかそれとも可変タイミングモードで動いているのかというチェックが行われる。もしプロセッサが可変タイミングモードにあれば、処理はステップ42に進み、その命令は結果を適当に戻して早期に終了し、処理はステップ28に戻る。
もしステップ40における決定によりシステムは固定タイミングモードにあるということならば、早期終了が可能か否かにかかわらず、処理はステップ44に進む。ステップ44はステップ38で早期終了が可能でないと判断されたときにも進むことができるが、その命令を1サイクルだけ実行する。乗算、除算、加算または減算のようなマルチサイクルの命令の場合、これらは一般に実行するのに数サイクルを要するので、ステップ44の次に処理はステップ46に進み、そこでその命令に関して最多数のサイクルが既に実行されたかまだかに関する判断がなされる。もし最多数のサイクルが実行されたのであれば、結果が生じているであろう。もし早期終了が可能であって、システムが強制的に次の処理サイクルを実行中であったならば、ステップ46は、このタイプの命令の最多数の処理サイクルに達したときに、この強制実行を止めるべきであることを依然として示しているであろう。もし最多数の処理サイクルがまだ実行されてなければ、処理はステップ38に戻る。
もしステップ34の照合結果が肯定であれば、処理はステップ48に進む。この例においてステップ44の照合で肯定ということは特定の命令の実行を抑制すべきであることを示す。ステップ48はシステムが現在強制実行モードであるか否かを判断する。もし強制実行モードにあれば、処理はステップ50に進み、そこで命令の強制ダミー実行が行われるであろう。ダミー実行が行われると、その結果が命令自体に特定されている行き先ではなく、トラッシュレジスタ(図1のトラッシュレジスタ51参照)に書き込まれる。それはシステムの状態があるプログラム命令によって修正されるのを防止するためである。そのプログラム命令は実質的に変わらない電力消費量を維持しながら抑制されるべきだったもので、実行されるはずのものではない。もしステップ48でシステムが強制実行モードではなく可変タイミングモードにあると判断されれば、処理はステップ50を迂回してステップ28に戻る。このときプログラム命令は通常のやり方で抑制される。
図3は、ダミー実行がすべての条件コードの失敗した(failed)命令に適用されて、命令の早期終了がすべて抑制される一般的なシステムを示していることを理解されよう。実際、これらの技術を条件付き命令と早期終了可能な命令のサブセットに適用することも可能である。前述のマルチコンフィギュレーション制御ビットを使って、早期終了抑制のような機能を選択的に働かせるのに使うことができようが、条件コード不成功(fail)に続くダミー実行のような他のものには適用されないであろう。
図4は固定タイミングモードで条件付き分岐命令を実行することの概略を示す。命令A、Bのシーケンスは条件付き分岐命令BEQ(等しいときに分岐、branch upon equal)に到達するまで実行される。この命令は、もし前の処理と結果が同じであることを示すフラグがセットされていれば、特定の分岐が実行されて、もしこのフラグがセットされていなければ、抑制されるという動作をエンコードする。条件コードがパスする、すなわち条件コードが一致すると、分岐が採用されて、処理は命令X,Y等々へ進む。もしも条件コードが不成功であれば、まるごと抑制する替わりにBEQ命令は直後の命令Cへの分岐を実行する。これは、もしもBEQ命令が既に抑制されていて全く実行されなかったならば到達していたであろうのと同じ命令である。しかしながら、固定タイミングモードで、条件コードがパスしたか不成功だったかにかかわらず、BEQは同じ数の処理サイクルの消費を実行したであろう。このことは、安全なデータへのアクセスを得ようとしている人に対して、前に実行したデータ処理操作の結果をぼかすのに役立つ。
図5はプログラマブル・プロセッサコアの形式をしたデータ処理装置52の概略を示す。これはプログラム命令Iに応答してデータDを処理する。データ処理装置52はレジスタバンク54、乗算器56、シフタ58、加算器60,算術論理ユニット62,ロードストア・ユニット64,データパイプライン66,命令デコーダ68,およびランダムクロック・ゲーティング回路70を含む。システム・コンフィギュレーション・コプロセッサCP15 72がプロセッサコアに接続されている。システム・コンフィギュレーション・コプロセッサCP15 72はシステム・コンフィギュレーション・レジスタ74を有し、これは複数のフラグ値を保有していて、それぞれがデータ処理システム52に含まれる各種の回路部分の擬似ランダムダミー動作をイネーブルまたはディスエーブルにする役目を果たす。データ処理システム52は一般にもっと多くの回路要素を含むが、これらは明瞭化のため図では省略してあることが理解されよう。
乗算器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とダミー・イネーブル信号ranの両方の支配を受ける回路部分86の概略を示す。この回路部分86はラッチのシーケンスとして考えることができ、ラッチの間に処理ロジックがデータ値を処理する。本物の必須の動作が必要なとき、回路部分86を通るデータ路を提供するラッチはすべてイネーブルとなり、入力ラッチと出力ラッチの間で必要な処理が実行されるであろう。ダミー動作が指示されているとき、入力ラッチと中間ラッチのみがイネーブルになる。したがって、全回路部分を通るデータ路は提供されず、その回路部分により作られる出力値は変わらない。
図7は擬似ランダムクロック信号を発生するのに使われるタイプの線形フィードバック・シフトレジスタを示す。これらのクロック信号は図5のランダムクロック・ゲーティング回路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のうちの1個に対するものか否かが判断される。もしレジスタ書き込みがこれらのレジスタに対するものでなければ、処理はステップ108に進み、レジスタR13、R14およびR15のうちの1個に対して要求されたデータ値Xの単純書き込みがなされる。
もし書き込み中のレジスタが対称型レジスタ書き込みに従うのが可能であれば、ステップ110はこの機能が現在イネーブルであるか否かを判断する働きをする。もしもこの機能が現在イネーブルでなければ、処理はステップ108に進む。もしこの機能がイネーブルであれば、処理はステップ112に進む。
ステップ112で、レジスタ制御回路はデータ値内の各ビットの位置を計算する。値はその位置に書き込み中の現在のビットとその位置に先に記憶されたビットとの反転排他的オアである。それからそのビット位置に対して先に記憶されたダミーレジスタ値と排他的オアがとられる(図11参照)。レジスタ制御回路102はまた決定の逆も同様に計算する。そのビットの反転値がデータレジスタへのデータ値として書き込まれる。これらの値は書き込み中のすべてのビットに対して計算される(たとえば、3個のダミー32ビット値)。
ステップ14でステップ108と同様にしてデータ値がデータレジスタに書き込まれる。ステップ116でレジスタ内の各ビット位置に対して決められた3つの追加の値が3つの追加のレジスタに書き込まれる。ステップ114と116は同時に起こる。図11で後述するが、この結果、ハイからローとローからハイへの遷移の数が平衡して、電力が消費される。
図11はデータ書き込み操作の前後における可能なビット値の表を示す。データ値がレジスタRnに書き込まれている。このレジスタは対称型書き込み操作が適用されるレジスタである。時刻tと時刻t+1における値が示されている。これらの値の反転値は単純に決定される。この対称型操作に従う各データレジスタには専用のダミーレジスタ98が供給されていて、ダミーレジスタ98はデータレジスタに現在保持されているデータ値の反転値を記憶する。
共有ダミーレジスタ100は図11ではRdとして示されている。共有ダミーレジスタRd内の各ビット位置毎に、データ書き込みが起きたときそのビット位置に書き込むべき新しい値が、図11の下段に示した関数によって決定される。この関数は、データ値とデータ値の反転値に変化が無ければ、共有ダミーレジスタ内の対応するビットとその反転値に変化が起きることを確実に保証するものである。この表はデータ値が変化しないときに起きる共有ダミーレジスタにおける変化と、データ値が変化するときに変わらないダミーレジスタの共有値とを示すものである。したがって、各書き込み毎の遷移固定数が保証されている、すなわちハイからローとローからハイへの遷移数が等しく平衡している。
図13は、書き込み操作がその条件コードを失敗したときに書き込みを行うダミーデータレジスタRDの動作を示す流れ図である。ステップ118で、制御論理装置は受信すべき命令を待つ。この制御論理装置は命令デコーダ68または他の論理装置でよい。ステップ120は命令がその条件コードを失敗したか否かを判断する。もしも命令がその条件コードを失敗していなければ、その命令はステップ122で正常に実行されて、その命令の中のレジスタオペランドにより特定されたレジスタにその書き込みを行う。もしも命令がその条件コードを失敗していれば、処理はステップ124に進み、そこでダミーレジスタ書き込みがイネーブルになっているか否かの判断が行われる。もしこれらがイネーブルになっていなければ、処理は終わる。もしダミーレジスタ書き込みがイネーブルであれば、処理はステップ126に進む。ステップ126で、たとえ条件コードが失敗していても、条件コードが失敗した命令によって計算されたデータ値の書き込みがトラッシュデータレジスタRTに対してなされる。このことが条件コードのパスか失敗かにかかわらず、電力消費とタイミングを平衡させる。トラッシュデータレジスタRTもまた前述の遷移平衡メカニズムに従うことが理解されよう。
図13は少なくともいくつかの命令にはマルチプル命令実行メカニズムが備わっているデータ処理システム128を示す。データ処理システム128は少なくともいくつかのJava(登録商標)バイトコード命令のネイティブ実行をサポートするタイプのものである。このタイプのデータ処理システムとネイティブ実行(native execution)は公開されたPCT特許出願番号、WO−A−02/29555、に記載されている。この公開された出願すべてと、特にネイティブ・ハードウェア実行ともっと複雑なJava(登録商標)バイトコードの選択性のソフトウェア・エミュレーションに関する記述を参考文献としてここに組み入れる。
Java(登録商標)のバイトコードデコーダ130は入力信号により選択的にイネーブルとディスエーブルになる。Java(登録商標)のバイトコード・デコーダ130がディスエーブルになると、受信したバイトコードは例外をトリガするだろう。例外はネイティブARMサム命令セットを使ってJava(登録商標)バイトコードを操作するために、ソフトウェア・エミュレーションコードの実行を開始する。このサポートコードは図示のようにエリア132内のメモリに記憶される。Java(登録商標)バイトコードプログラム134もまたメモリ内に記憶される。Java(登録商標)プログラム実行の性質をぼかすことを望むとき、Java(登録商標)バイトコードデコーダ130は擬似ランダム信号に従うことができる。この信号はこの要素を選択的にイネーブルとディスエーブルにして、Java(登録商標)バイトコードに対する命令実行メカニズムがハードウェアとエミュレーションの混合実行メカニズムと純粋なエミュレーションメカニズムとの間を効率的に切り替えることができるようにする。システム・コンフィギュレーション・レジスタ136内のコンフィギュレーション制御値は、Java(登録商標)デコーダ130が存在しているか否かと、このJava(登録商標)デコーダ130のランダムイネーブルとディスエーブルが許されるか否かを特定する。
図14は受信したJava(登録商標)バイトコードの処理の概略を示す。ステップ138でJava(登録商標)バイトコードが受信される。ステップ140はJava(登録商標)デコーダ130がイネーブルであるか否かを判断する。Java(登録商標)デコーダ130の擬似ランダムイネーブルとディスエーブルにより、ステップ142と146どちらかへの効率的な分岐が可能になる。ステップ142ではバイトコードが常にエミュレートされ、ステップ146ではハードウェアにおいて命令の実行が試行される。このことがバイトコードの実行に付随する電力の特徴をあいまいにし/マスクする。もしステップ146で特定のJava(登録商標)バイトコードがJava(登録商標)デコーダ130によりサポートされていないと決定されれば、このJava(登録商標)バイトコードもステップ142においてソフトウェアでエミュレーションされるであろう。しかしながら、もしJava(登録商標)バイトコードがハードウェアでサポートされていれば、ステップ146においてハードウェアで実行される。
固定タイミングモードと可変タイミングモードにおいて操作可能なデータ処理システムの概略を示す。 条件付きプログラミング命令の概略を示す。 本発明の技術に従って働く命令デコーダによって実行される処理操作の一部の概略を示す流れ図である。 固定タイミングモードにおける条件付き分岐命令の実行の概略を示す。 必須の処理操作またはダミーの処理操作を選択的に実行可能にすることができる複数の回路部分を含むデータ処理システムの概略を示す。 必須のイネーブル信号とランダムダミー動作イネーブル信号の両方に反応することができる回路部分とそれに付随するダミー動作イネーブル回路の概略を示す。 擬似ランダム信号発生器として使うことができる線形フィードバック・シフトレジスタの概略を示す。 必須の処理動作とダミーの処理動作を実行する回路部分の制御の概略を示す流れ図である。 複数のデータ処理レジスタ、複数のダミーレジスタ、複数の共有ダミーレジスタおよびマップされてないトラッシュレジスタRTを含むレジスタバンクの一部の概略を示す。条件付き書き込み操作がその条件コードを失敗したとき、トラッシュレジスタRTにダミーレジスタ書き込みが行われる。 レジスタ書き込みが起きたとき、ハイからローへとローからハイへの遷移が起きる回数を平衡させようとして働くレジスタ書き込み制御回路の概略を示す流れ図である。 データレジスタ内の特定のビットに対するビット遷移と3個の追加レジスタに関するそれらとの間の関係を示す表である。これらのレジスタはレジスタ書き込みに付随して起きるハイからローへとローからハイへの遷移を平衡させるように構成されている。 書き込み操作がその条件コードを失敗したとき、トラッシュレジスタへの書き込み制御の概略を示す流れ図である。 1個の命令に対するマルチプル命令実行メカニズムと、少なくともいくつかの命令のために採用された実行メカニズムの擬似ランダム選択とを有するシステムの概略を示す。 図13に示したシステムの制御の概略を示す流れ図である。

Claims (16)

  1. データ処理装置において、
    データ処理操作の実行時に結果データ値を発生するように動作可能な結果データ値発生回路と、前記結果データ値が書き込まれるデータ処理レジスタとを備え、
    前記結果データ発生回路により実行される少なくとも1つのデータ処理操作が条件付き書き込みデータ処理操作であり、該条件付き書き込みデータ処理操作のための結果データ値は、非書き込み条件が満足したとき、前記データ処理レジスタに書き込まれず、
    さらに、前記非書き込み条件が満足したとき、前記条件付き書き込みデータ処理操作の実行時に結果データ値を書き込むことのできるトラッシュレジスタを有する、データ処理装置。
  2. 請求項1記載の装置において、結果データが書き込まれる複数個のデータレジスタを有するレジスタバンクを含む、データ処理装置。
  3. 請求項1と2記載のいずれかの装置において、前記結果データ発生回路は、実行すべきデータ処理操作を特定するデータ処理命令に応答するプロセッサコアの一部である、データ処理装置。
  4. 請求項3記載の装置において、前記データ処理命令は1つまたは2つ以上の条件付きデータ処理命令を含み、かつ、あらかじめ定められた条件が検出されたとき、前記プロセッサコアは条件付きデータ処理命令を実行しない、データ処理装置。
  5. 請求項4記載の装置において、条件付きデータ処理命令が書き込み操作を含み、かつ、前記あらかじめ定められた条件が検出されたならば、前記プロセッサコアは前記トラッシュレジスタへの書き込み操作を実行する、データ処理装置。
  6. 請求項1から5記載のいずれかの装置において、前記トラッシュレジスタへの書き込みはトラッシュレジスタ制御信号によってプログラム上ディスエーブルにする、データ処理装置。
  7. 請求項6記載の装置において、前記トラッシュレジスタ制御信号はシステム・コンフィギュレーション・レジスタに記憶される、データ処理装置。
  8. 請求項2記載の装置において、前記トラッシュレジスタは前記レジスタバンクの一部であって、前記トラッシュレジスタがレジスタを特定するオペランド値によって特定されないように、前記トラッシュレジスタはレジスタ番号にマップされていない、データ処理装置。
  9. データ処理方法において、
    データ処理操作の実行時に結果データ値を発生するステップを備え、実行する少なくとも1つのデータ処理操作は条件付き書き込みデータ処理操作であり、
    非書き込み条件が満足したときに、結果データ値はデータ処理レジスタに書き込まれず、替わりにトラッシュレジスタに書き込まれる、データ処理方法。
  10. 請求項9記載の方法において、前記データ処理レジスタは、結果データが書き込まれる複数のレジスタを有するレジスタバンクの一部である、データ処理方法。
  11. 請求項9と10記載のいずれかの方法において、前記方法は実行すべきデータ処理操作を特定するデータ処理命令に応答するプロセッサコアによって実行される、データ処理方法。
  12. 請求項11記載の方法において、前記データ処理命令は1つまたは2つ以上の条件付きデータ処理命令を含み、かつ、あらかじめ定められた条件が検出されたとき、前記プロセッサコアは条件付きデータ処理命令を実行しない、データ処理方法。
  13. 請求項12記載の方法において、条件付きデータ処理命令が書き込み操作を含み、かつ、前記あらかじめ定められた条件が検出されたならば、前記プロセッサコアは前記トラッシュレジスタへの書き込み操作を実行する、データ処理方法。
  14. 請求項9から13記載のいずれかの方法において、前記トラッシュレジスタへの書き込みはトラッシュレジスタ制御信号によってプログラム上ディスエーブルにする、データ処理方法。
  15. 請求項14記載の方法において、前記トラッシュレジスタ制御信号はシステム・コンフィギュレーション・レジスタに記憶されるデータ処理方法。
  16. 請求項10記載の方法において、前記ダミーレジスタは前記レジスタバンクの一部であって、前記トラッシュレジスタがレジスタを特定するオペランド値によって特定されないように、前記トラッシュレジスタはレジスタ番号にマップされない、データ処理方法。
JP2005502327A 2002-12-12 2003-10-06 データ処理システムにおける処理動作マスキング Expired - Lifetime JP4619288B2 (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
GBGB0302646.5A GB0302646D0 (en) 2002-12-12 2003-02-05 Processing activity masking in a data processing system
GBGB0302650.7A GB0302650D0 (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/004261 WO2004053662A2 (en) 2002-12-12 2003-10-06 Processing activity masking in a data processing system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010185224A Division JP2010282651A (ja) 2002-12-12 2010-08-20 データ処理システムにおける処理動作マスキング

Publications (3)

Publication Number Publication Date
JP2006522375A true JP2006522375A (ja) 2006-09-28
JP2006522375A5 JP2006522375A5 (ja) 2006-11-09
JP4619288B2 JP4619288B2 (ja) 2011-01-26

Family

ID=32512449

Family Applications (4)

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

Family Applications After (3)

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

Country Status (4)

Country Link
US (4) US7134003B2 (ja)
JP (4) JP4619288B2 (ja)
GB (3) GB2406684B (ja)
WO (4) WO2004053685A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017511531A (ja) * 2014-03-14 2017-04-20 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 条件付き命令終了(conditional instruction end)操作

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4619288B2 (ja) * 2002-12-12 2011-01-26 エイアールエム リミテッド データ処理システムにおける処理動作マスキング
US7949883B2 (en) * 2004-06-08 2011-05-24 Hrl Laboratories, Llc Cryptographic CPU architecture with random instruction masking to thwart differential power analysis
US9246728B2 (en) 2004-07-29 2016-01-26 Qualcomm Incorporated System and method for frequency diversity
KR100925911B1 (ko) * 2004-07-29 2009-11-09 콸콤 인코포레이티드 다이버시티 인터리빙을 위한 시스템 및 방법
US20070081484A1 (en) * 2004-07-29 2007-04-12 Wang Michael M Methods and apparatus for transmitting a frame structure in a wireless communication system
US8391410B2 (en) * 2004-07-29 2013-03-05 Qualcomm Incorporated Methods and apparatus for configuring a pilot symbol in a wireless communication system
US20080317142A1 (en) * 2005-07-29 2008-12-25 Qualcomm Incorporated System and method for frequency diversity
FR2875657B1 (fr) * 2004-09-22 2006-12-15 Trusted Logic Sa Procede de securisation de traitements cryptographiques par le biais de leurres.
JP4702004B2 (ja) * 2004-12-21 2011-06-15 株式会社デンソー マイクロコンピュータ
US7725694B2 (en) * 2004-12-21 2010-05-25 Denso Corporation Processor, microcomputer and method for controlling program of microcomputer
JP4889235B2 (ja) * 2005-04-27 2012-03-07 株式会社デンソー プログラム制御プロセッサ
US8312297B2 (en) * 2005-04-21 2012-11-13 Panasonic Corporation Program illegiblizing device and method
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US9391751B2 (en) * 2005-07-29 2016-07-12 Qualcomm Incorporated System and method for frequency diversity
US9042212B2 (en) 2005-07-29 2015-05-26 Qualcomm Incorporated Method and apparatus for communicating network identifiers in a communication system
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 株式会社デンソー マイクロコンピュータ
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
US7594104B2 (en) * 2006-06-09 2009-09-22 International Business Machines Corporation System and method for masking a hardware boot sequence
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
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
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 富士通株式会社 演算処理装置
WO2010116474A1 (ja) 2009-03-30 2010-10-14 富士通株式会社 光伝送システム及び光伝送方法
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
US8624624B1 (en) 2011-08-26 2014-01-07 Lockheed Martin Corporation Power isolation during sensitive operations
US8525545B1 (en) 2011-08-26 2013-09-03 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
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
KR102335203B1 (ko) * 2015-08-10 2021-12-07 삼성전자주식회사 부채널 공격에 대응하는 전자 장치
US10210350B2 (en) * 2015-08-10 2019-02-19 Samsung Electronics Co., Ltd. Electronic device against side channel attacks
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02211561A (ja) * 1989-02-10 1990-08-22 Fujitsu Ltd プロセッサ及びストアバッファ制御方法
JPH09282156A (ja) * 1996-04-17 1997-10-31 Ricoh Co Ltd プログラム保護装置及びプログラム保護方法
JP2001195555A (ja) * 2000-01-12 2001-07-19 Hitachi Ltd Icカードとマイクロコンピュータ
JP2002055883A (ja) * 1997-06-26 2002-02-20 Bull Cp 8 Sa 予測不可能なマイクロプロセッサまたはマイクロコンピュータ
JP2002521724A (ja) * 1998-07-21 2002-07-16 サーティコム コーポレーション タイミングアタック防止暗号システム

Family Cites Families (30)

* 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 デ−タ処理装置
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
US5404402A (en) * 1993-12-21 1995-04-04 Gi Corporation Clock frequency modulation for secure microprocessors
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
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
EP1019794B1 (en) * 1997-10-02 2008-08-20 Koninklijke Philips Electronics N.V. Data processing device for processing virtual machine instructions
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
US6510518B1 (en) * 1998-06-03 2003-01-21 Cryptography Research, Inc. Balanced cryptographic computational method and apparatus for leak minimizational in smartcards and other cryptosystems
DE69938045T2 (de) * 1998-06-03 2009-01-15 Cryptography Research Inc., San Francisco Verwendung von unvorhersagbarer Information zur Leckminimierung von Chipkarten und anderen Kryptosystemen
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
JP2001266103A (ja) * 2000-01-12 2001-09-28 Hitachi Ltd Icカードとマイクロコンピュータ
CA2298990A1 (en) * 2000-02-18 2001-08-18 Cloakware Corporation Method and system for resistance to power analysis
AU2001245511A1 (en) 2000-03-10 2001-09-24 Arc International Plc Method and apparatus for enhancing the performance of a pipelined data processor
DE50010164D1 (de) * 2000-05-22 2005-06-02 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
DE10101956A1 (de) * 2001-01-17 2002-07-25 Infineon Technologies Ag Verfahren zur Erhöhung der Sicherheit einer CPU
JP4619288B2 (ja) * 2002-12-12 2011-01-26 エイアールエム リミテッド データ処理システムにおける処理動作マスキング

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02211561A (ja) * 1989-02-10 1990-08-22 Fujitsu Ltd プロセッサ及びストアバッファ制御方法
JPH09282156A (ja) * 1996-04-17 1997-10-31 Ricoh Co Ltd プログラム保護装置及びプログラム保護方法
JP2002055883A (ja) * 1997-06-26 2002-02-20 Bull Cp 8 Sa 予測不可能なマイクロプロセッサまたはマイクロコンピュータ
JP2002521724A (ja) * 1998-07-21 2002-07-16 サーティコム コーポレーション タイミングアタック防止暗号システム
JP2001195555A (ja) * 2000-01-12 2001-07-19 Hitachi Ltd Icカードとマイクロコンピュータ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017511531A (ja) * 2014-03-14 2017-04-20 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 条件付き命令終了(conditional instruction end)操作

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4619288B2 (ja) データ処理システムにおける処理動作マスキング
KR102558104B1 (ko) 호출 경로 의존 인증
Yu et al. Data oblivious ISA extensions for side channel-resistant and high performance computing
May et al. Non-deterministic processors
US7178011B2 (en) Predication instruction within a data processing system
CN113228024A (zh) 用于推测执行的安全预测器
US11307856B2 (en) Branch target variant of branch-with-link instruction
KR20200090103A (ko) 분기 예측기
JP2010282651A (ja) データ処理システムにおける処理動作マスキング
JP7377208B2 (ja) データ処理
US10324727B2 (en) Memory dependence prediction
GB2515020A (en) Operand generation in at least one processing pipeline
EP4080386A1 (en) Method to protect program in integrated circuit
GB2396229A (en) Processor to register writing masking by writing to normal register or to a trash register
WO2024028565A1 (en) No-operation-compatible instruction
WO2022013521A1 (en) Authentication code generation/checking instructions
CN114692140A (zh) 针对推测脆弱性来强化存储硬件

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20050222

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100120

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100820

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100916

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

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

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

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4619288

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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