(57)【要約】少なくとも１つのマシン依存のアセンブリ言語で実行されるマイクロコントローラ（１００）のプログラミングにおいて、アセンブラ命令は、条件付きプログラム・ブランチを除いて、本質的にはデータから独立して実行でき、−満たされたブランチ条件、例えば、少なくとも１つの満たされた状態フラグの場合には、少なくとも１つのプログラム・カウンタ（１０）が、新しいアドレス及び／又は新しい値をロード可能であり、そして、−満たされないブランチ条件、例えば、少なくとも１つの満たされない状態フラグの場合には、命令が終了される。上述のプログラミングをさらに発展させるため、少なくとも１つのマシン依存のアセンブリ言語で実行されるマイクロコントローラ（１００）のプログラミングを処理するための方法とともに、条件付きプログラム・ブランチの場合には、上述のブランチが実際に行われたか否かが、外部から不可視であるように、満たされないブランチ条件の場合には、プログラム・カウンタ（１０）が、命令を終了させる代わりに、以前のアドレス及び／又は以前の値を選択的に再ロード可能であることが提案される。【特許請求の範囲】
【請求項１】
マイクロコントローラであって、そのプログラミングが、少なくとも１つのマシン依存のアセンブリ言語で実行され、これによりアセンブラ命令は、条件付きプログラム・ブランチを除いて、本質的にはデータから独立して実行でき、
−満たされたブランチ条件、例えば、少なくとも１つの満たされた状態フラグの場合には、少なくとも１つのプログラム・カウンタが、新しいアドレス及び／又は新しい値をロード可能であり、そして、
−満たされないブランチ条件、例えば、少なくとも１つの満たされない状態フラグの場合には、命令が終了され、
前記満たされないブランチ条件の場合には、前記プログラム・カウンタは、命令を終了させる代わりに、以前のアドレス及び／又は以前の値を選択的に再ロード可能である
ことを特徴とするマイクロコントローラ。
【請求項２】
ブランチ条件のテストの結果によってトリガ可能な、少なくとも１つのマルチプレクッス・ユニットによって、前記プログラム・カウンタの入力は、
−前記満たされたブランチ条件の場合には、新しいアドレス及び／又は新しい値をロード可能であり、そして、
−前記満たされないブランチ条件の場合には、前記プログラム・カウンタの出力におけるアドレス、及び／又は、前記プログラム・カウンタの出力における値をロード可能である
ことを特徴とする請求項１記載のマイクロコントローラ。
【請求項３】
スマートカード・コントローラとしての構成を特徴とする請求項１又は２記載のマイクロコントローラ。
【請求項４】
少なくとも請求項１乃至３のいずれかに記載された少なくとも１つのマイクロコントローラによって制御される電気又は電子装置。
【請求項５】
少なくとも１つのマシン依存のアセンブリ言語で実行される、マイクロコントローラのプログラミングを処理する方法であって、
−アセンブラ命令は、条件付きプログラム・ブランチを除いて、本質的にはデータから独立して実行され、
−満たされたブランチ条件、例えば、少なくとも１つの満たされた状態フラグの場合には、少なくとも１つのプログラム・カウンタが、新しいアドレス及び／又は新しい値をロードされ、そして、
−満たされないブランチ条件、例えば、少なくとも１つの満たされない状態フラグの場合には、命令が終了され、
前記満たされないブランチ条件の場合には、前記プログラム・カウンタは、命令を終了させる代わりに、以前のアドレス及び／又は以前の値を選択的に再ロードされる
ことを特徴とする方法。
【請求項６】
−前記満たされたブランチ条件の場合には、新しいアドレス及び／又は新しい値、そして、
−前記満たされないブランチ条件の場合には、前記プログラム・カウンタの出力におけるアドレス、及び／又は、前記プログラム・カウンタの出力における値が、前記プログラム・カウンタの入力に与えられることを特徴とする請求項５記載の方法。
【請求項７】
前記ブランチ条件のテスト、及び／又は前記プログラム・カウンタのロードは、補足的なデータによって実行されることを特徴とする請求項５又は６記載の方法。
【請求項８】
前記満たされないブランチ条件の場合には、命令を終了させることと、以前のアドレス及び／又は以前の値によって前記プログラム・カウンタを再ロードすることとの間におけるオプションは、少なくとも１つの特別なビット（＝いわゆる“セレクト・ビット”）によって制御されることを特徴とする、少なくとも請求項５乃至７のいずれかに記載の方法。
【請求項９】
前記満たされないブランチ条件の場合には、重要でない及び又は安全の感度が悪いプログラムの部分では、命令を終了させるオプションは、特に前記特別なビットによって選択されることを特徴とする、少なくとも請求項５乃至８のいずれかに記載の方法。
【請求項１０】
前記特別なビットのオプションは、例えば、少なくとも１つのランダムな機能によって、及び／又は少なくとも１つの適切なビット・シーケンスによって、あらゆる所望のシーケンスで、スイッチのオン及びオフを行われることができることを特徴とする請求項８又は９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラに関し、そのプログラミングが、少なくとも１つのマシン依存のアセンブリ言語で実行され、そのアセンブラ命令は、条件付きプログラム・ブランチを除いて、本質的にはデータから独立して実行でき、
−満たされたブランチ条件、例えば、少なくとも１つの満たされた状態フラグの場合には、少なくとも１つのプログラム・カウンタが、新しいアドレス及び／又は新しい値をロード可能であり、そして、
−満たされないブランチ条件、例えば、少なくとも１つの満たされない状態フラグの場合には、命令が終了される。
【０００２】
また、本発明は、少なくとも１つのマシン依存のアセンブリ言語で実行される、上述のタイプのマイクロコントローラのプログラミングを処理するための方法に関する。
【背景技術】
【０００３】
一般に、装置を制御するために使用され、中央演算処理装置（ＣＰＵ）、メモリ及びポートがワンチップ上に組み込まれているワンチップ・マイクロコンピュータは、マイクロコントローラと呼ばれる。マイクロコントローラのプログラミングは、マシン依存のアセンブリ言語で実行される。公知のアセンブリ言語では、全てのアセンブラ命令は、条件付きプログラム・ブランチを除いて、データから独立して実行される。
【０００４】
条件付きプログラム・ブランチは、一般に、次のように実現される。チェックされるべき条件、一般に、少なくとも１つの状態フラグが、テストされる。ブランチが行われるべきであることが検出された場合には、プログラム・カウンタは、新しいプログラム・アドレス（新しい「値」）をロードされる。ブランチが行われるべきでない場合には、命令は終了され、その後、当然のことだが、プログラム・カウンタは、自動的に、次の値、例えば次のアドレスを含む。
【０００５】
かかる手順は、条件付きプログラム・ブランチの場合には、時間差が命令の実行で発生する可能性があることを伴う。命令の実行におけるこの時間差の理由は、ブランチの場合には、プログラム・カウンタが、さらに新しい値（新しいプログラム・アドレス）に設定されることであり、ブランチでない場合には、命令が、条件のテストの後に終了されることである。
【０００６】
これは、マイクロコントローラのプログラムにおける、条件付きブランチのための命令の実行が、通常、異なる実行時間、従って異なる電流値も有するということを意味し、電流値は、条件付きブランチが実行されるかどうかに応じて、動的な電流測定によって確認することができる。
【０００７】
ソフトウエア解析の現在の方法は、またアッタカーによる悪用、例えば暗号化キーを確認すること可能にし、特別なタイミング解析によって、条件付きプログラム・ブランチを確認し、そして、確認されたプログラムのフローによって、処理されたデータに関する推定を得ることにある。
【０００８】
従って、この命令でテストされたデータに関する推定は、条件付きブランチ命令の時間系列によって、単に得られることができ、これは、例えば、暗号化キーのような、特にマイクロコントローラのプログラムのセキュリティ感知部に対する不正アタックの場合には、非常に不利である。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述の不都合及び欠陥を発端として、概略が述べられた技術の状態を考慮すると、本発明の目的は、条件付きプログラム・ブランチの場合には、ブランチが実際に行われたかどうかが、外部から不可視であるように、上述のタイプの方法とともに、上述のタイプのマイクロコントローラもさらに発展させることである。
【課題を解決するための手段】
【００１０】
この目的は、請求項１で明細に述べられた特徴を有するマイクロコントローラ、及び請求項５で明細に述べられた特徴を有する方法によって達成される。本発明の有利な実施形態及び有用なさらなる改良は、それぞれの従属項において特徴づけられる。
【００１１】
従って、本発明の教示は、マイクロコントローラ、特にスマートカード・コントローラの動作に見られることであり、これは、条件付きプログラム・ブランチに関して安全にされる。
【００１２】
この目的のために、条件付きブランチの命令処理の内部フローは、次のように本発明に基づいて修正される。ブランチの場合には、マイクロコントローラに結合されたプログラム・カウンタ（以下、同様にプログラム・カウンタと呼ばれる）は、そういうものとして知られている方法によって、新しい値をロードされる。しかし、現在、ブランチでない場合には、ブランチ命令の終了の代わりに、プログラム・カウンタは、同様に、この時間ではないが、それ自身の値、特に、少なくとも１つの追加の論理を含むものを、再ロードされる。
【００１３】
言い換えれば、本発明に基づく手順は、テスト条件の結果が、もはや、内部のプログラム処理を終了させるため、又は終了させないために使用されないことを意味する。むしろ、テスト条件の結果は、望ましくは、少なくとも１つのマルチプレクサを活性化するために使用され、これは、テスト結果に応じて、新しいアドレスをプログラム・カウンタ入力に与えることができるか、又は記憶装置のためのプログラム・カウンタ出力をプログラム・カウンタ入力に接続することができる。
【００１４】
その結果、プログラム・カウンタは、全ての場合において、ブランチが行われるべきか否かにかかわらず、新しいアドレス、すなわち新しい値をロードされる。これは、両方の場合に対して、同一の時間のフロー動作を引き起こす。
【００１５】
特に発明の改良によれば、条件付きブランチを不可視にする際におけるさらなる改良は、ブランチ条件のテストとプログラム・カウンタのロードとの両方が、補足的なデータ（＝補足的なプログラム・カウンタによる、いわゆる“電流ブラインド”）によって実行される場合に得られ、その後、動的な電流測定によってマイクロコントローラを攻撃する人は、もはや、ブランチが実行されたか否かを識別することができない。
【００１６】
本発明の有益な実施形態によれば、条件付きプログラム・ブランチのシーケンスは、非常に最適化されることができるので、条件付きブランチの処理は、上述の方法（プログラム・カウンタが常に再ロードされる）によって、又はそういうものとして知られた方法（＝ブランチでないものが命令を終了させる）によって、選択的に実行されることができる。このオプション又はセレクションの可能性の制御は、少なくとも１つの特別なビット（＝いわゆる“セレクト・ビット”）によって、もたらさせる。
【００１７】
上述のオプション又はセレクションの可能性は、有益に、次の目的のために使用されることができる。
（ｉ）マイクロコントローラのプログラミングの重要でない部分では、プログラム・カウンタのロードによって引き起こされる実行のロス（─＞ブランチでない場合には、より長い実行時間）は、セレクト・ビット・オプションが通常の処理に設定される場合に、抑制されることができる。
（ii）セレクト・ビット・オプションが、あらゆる所望のシーケンスで、スイッチのオン及びオフを行われる場合には、例えば、ランダムな機能によって、又は他の適切なビット・シーケンスによって、全てのブランチでないものが、ときには“短い”実行時間と考えられ、ときには“長い”実行時間と考えられる。それによって、条件付きブランチのための命令実行時間に基づくデータの解析は、かなりより困難にされ、その結果、アタッカーは、条件付き命令のブランチでない場合には、同一のデータに対する異なる実行時間によって、故意に欺かれ及び惑わされる。
【００１８】
要するに、本発明の相当の利益は、
−条件付きブランチとの関係におけるデータの解析が、かなりより困難にされるという事実、
−全ての場合に、プログラム・カウンタのアフタローディングによる、条件付きブランチのための同一の実行時間、及び／又は、
ブランチでない場合には、短い命令実行時間であるべきであろうと、長い命令実行時間であるべきであろうと、自由に選択可能なバリエーション
に見られることである。その結果、本発明は、（マイクロコントローラの）プログラムの構成にかかわらず、常に、同一の動的な電流値を生じさせ、従って、時間調整された動的な電流解析に関する、不正かつ許可されていない調査を防止する。
【００１９】
本発明は、最終的に、少なくとも１つの上述のタイプのマイクロコントローラによって制御される電気又は電子装置に関する。既に上で詳述されたように、本発明の教示を、具体化しさらに発展させる、種々の可能な方法がある。この点について、請求項１及び請求項５における添付の特許請求の範囲に対して、参照が行われる。
【００２０】
これら及び本発明の他の態様は、以下に記述される実施形態から明らかであり、そしてこれを参照して説明される。
【発明を実施するための最良の形態】
【００２１】
図１は、スマートカード・コントローラとして設定されたマイクロコントローラ１００の実施形態を説明し、そのプログラミングは、マシン依存のアセンブリ言語によって実行され、そして処理される。この処理において、アセンブラ命令は、条件付きプログラム・ブランチを除いて、データから独立してその方法に基づいて実行される。
【００２２】
満たされたブランチ条件、例えば、満たされた状態フラグの場合には、マイクロコントローラ１００に結合されたプログラム・カウンタ１０が、新しいアドレス及び／又は新しい値をロードされる。マイクロコントローラ１００の特有の特徴は、このマイクロコントローラ１００によって、満たされないブランチ条件、例えば、満たされない状態フラグの場合には、命令が必ずしも終了されないが、満たされないブランチ条件の場合には、プログラム・カウンタ１０が、命令を終了させる代わりに、以前の値を選択的に再ロードされることができる、という事実に見られることである。
【００２３】
このため、マイクロコントローラ１００は、ブランチ条件のテストの結果によってトリガ可能であるマルチプレクサ・ユニット２０を含み、
−満たされたブランチ条件の場合には、新しいアドレス及び／又は新しい値、そして、
−満たされないブランチ条件の場合には、プログラム・カウンタ１０の出力におけるアドレス、及び／又は、プログラム・カウンタ１０の出力における値が、プログラム・カウンタ１０の入力に与えられる。
【００２４】
その結果、テスト条件の実際の結果が、もはや、内部のプログラム処理を終了させるため、又は終了させないために使用されない。むしろ、テスト条件の結果は、マルチプレクサ２０を活性化するために使用され、これは、テスト結果に応じて、新しいアドレス（満たされたブランチ条件の場合）をプログラム・カウンタ１０の入力に与えることができるか、又は記憶装置のためのプログラム・カウンタ１０の出力（満たされないブランチ条件の場合）をプログラム・カウンタ１０の入力に接続することができる。
【００２５】
従って、プログラム・カウンタ１０は、全ての場合において、ブランチであるべきか否かにかかわらず、新しいアドレス、すなわち新しい値をロードされる。これは、両方の場合において、同一の時間のフロー動作を引き起こし、その結果、図１に基づくマイクロコントローラ１００における手順は、常に、（マイクロコントローラの）プログラムの構成から独立して、同一の動的な電流値を生じさせ、従って、時間調整された動的な電流解析に関する、不正かつ許可されていない探索を防止する。
【００２６】
条件付きブランチの分割できないレンダリングにおけるさらなる改良は、ブランチ条件のテストとプログラム・カウンタ１０のロードとの両方が、補足的なデータ（＝補足的なプログラム・カウンタによる、いわゆる“電流ブラインド”）によって実行されることで得られ、その後、動的な電流測定によってマイクロコントローラ１００を攻撃する人は、もはや、ブランチが行われたか否かを識別することができない。
【００２７】
図１に基づく本発明によれば、条件付きプログラム・ブランチのフローは、非常に最適化されることができるので、条件付きブランチの処理は、上述の方法（プログラム・カウンタ１０が常に再ロードされる）によって、又はそういうものとして知られた方法（＝ブランチでないものが命令を終了させる）によって、選択的に実行される。このオプション又はセレクションの可能性の制御は、特別なビット（＝いわゆる“セレクト・ビット”）によって、もたらさせる。
【００２８】
上述のオプション又はセレクションの可能性は、次の目的のために使用されることができる。
（ｉ）マイクロコントローラ１００のプログラミングの重要でない部分では、プログラム・カウンタ１０のロードによって引き起こされる実行のロス（─＞ブランチでない場合には、より長い実行時間）は、セレクト・ビット・オプションが通常の処理に設定される場合に、抑制されることができる。
（ii）セレクト・ビット・オプションが、あらゆる所望のシーケンスで、スイッチのオン及びオフを行われる場合には、例えば、ランダムな機能によって、又は他の適切なビット・シーケンスによって、全てのブランチでないものが、ときには“短い”実行時間と考えられ、ときには“長い”実行時間と考えられる。それによって、条件付きブランチのための命令実行時間に基づくデータの解析は、かなりより困難にされ、その結果、アタッカーは、条件付き命令のブランチでない場合には、同一のデータに対する異なる実行時間によって、故意に欺かれ及び惑わされる。
【図面の簡単な説明】
【００２９】
【図１】本発明に基づく方法によって動作される、本発明に基づくマイクロコントローラの実施形態のブロック図の略図を示す。
【符号の説明】
【００３０】
１００  マイクロコントローラ、特にスマートカード・コントローラ
１０  プログラム・カウンタ
２０  マルチプレクッス・ユニット又はマルチプレクサ
【図１】
2006507593.tif 000002
【国際調査報告】
2006507593.tif 000003
2006507593.tif 000004
2006507593.tif 000005