JP2004246899A - 集積回路により実行されるアルゴリズムの不正防止方法 - Google Patents
集積回路により実行されるアルゴリズムの不正防止方法 Download PDFInfo
- Publication number
- JP2004246899A JP2004246899A JP2004034896A JP2004034896A JP2004246899A JP 2004246899 A JP2004246899 A JP 2004246899A JP 2004034896 A JP2004034896 A JP 2004034896A JP 2004034896 A JP2004034896 A JP 2004034896A JP 2004246899 A JP2004246899 A JP 2004246899A
- Authority
- JP
- Japan
- Prior art keywords
- subprogram
- instruction
- program
- integrated circuit
- main program
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/75—Protecting 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/755—Protecting 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【課題】 秘密データを処理する集積回路の物理的シグネチャ解析による攻撃に対して不正防止方法を提供する。
【解決手段】 主プログラムを実行する集積回路の物理的シグネチャをランダム化する不正防止方法であって、サブプログラムのランダムに選択されたアドレスへの分岐を主プログラムに提供し、主プログラムの総実行時間をランダム化するために、サブプログラムが含むあらゆる演算コードが、主プログラムへ復帰する少なくとも一つの命令を除いて、同一のサブプログラムに含まれる命令に直接的又は間接的につながるという特徴を有する。
【選択図】 図1
【解決手段】 主プログラムを実行する集積回路の物理的シグネチャをランダム化する不正防止方法であって、サブプログラムのランダムに選択されたアドレスへの分岐を主プログラムに提供し、主プログラムの総実行時間をランダム化するために、サブプログラムが含むあらゆる演算コードが、主プログラムへ復帰する少なくとも一つの命令を除いて、同一のサブプログラムに含まれる命令に直接的又は間接的につながるという特徴を有する。
【選択図】 図1
Description
本発明は、集積回路の分野に関し、特に、集積回路により処理されるデータ又は秘密量を、これらのデータを無断使用しようとする不正攻撃から保護することに関する。
本発明の実施例の応用は、外部から来るデータの暗号化に使用される秘密量が集積回路チップに含まれているスマートカードの分野に関する。
起こり得る不正の中で、本発明は特に、秘密量を伴う機能を実行する集積回路の物理的パラメータのシグネチャ試験に基づいた不正攻撃を問題としている。例えば、集積回路の前記物理的シグネチャは、気温又は消費電流の変動に対応し得る。集積回路の消費電流の統計解析による攻撃は、SPA(単純電力解析)又はDPA(電力差分解析)攻撃として知られている。このような攻撃は、アルゴリズムに(外部から来た)データが入力され、アルゴリズム自体が知られると、管理キーについて仮説を立てる。(常に同じ方法でデータを処理するという点で、決定性がある)アルゴリズムが既知であるので、秘密量が入力データとミックスされる方法が前記アルゴリズムによって知られる。同じキー仮説に基づいて入力データを変化させることにより、回路の消費電流が解析され、平均シグネチャ(トレース)が得られる。平均シグネチャは、正しい仮説を特定することによって、秘密量の発見を導くことができる。
DPAタイプの消費電流攻撃は、例えば、CRYPTO99会議との関連で、「Differential Power Analysis」by Kocher, Jaffe, and Jun, Springer Verlag LNCS 1666発行 (1999年), ページ388-397の論文中に記述されている。
秘密量を処理するアルゴリズムを実行する集積回路、例えばスマートカードのセキュリティ欠陥は、このようなシステムを集積化した製品の開発に多大な損害を及ぼす。
本発明は、物理的シグネチャ解析攻撃に対して、秘密データを処理する集積回路のセキュリティを改善することを目的としている。特に、本発明は、秘密データを処理する集積回路の物理的シグネチャ解析による攻撃に対して不正防止方法を提供することを目的とする。
これら及び他の目的を達成するため、本発明は、主プログラムを実行する集積回路の物理的シグネチャをランダム化し、サブプログラムのランダムに選択されたアドレスへの分岐を主プログラムに提供することを含む不正防止方法を提供し、前記サブプログラムが含むあらゆる演算コードが、主プログラムへ復帰する少なくとも一つの命令を除いて、同一のサブプログラムに含まれる命令に直接的又は間接的につながり、主プログラムの総実行時間をランダム化するために、該サブプログラムの入力アドレスがいかなるものであれ、前記復帰命令の実行により、サブプログラムへの前記分岐を引き起こした命令の直ぐ後に続く主呼出しプログラム(Pg)の命令に戻るという特徴を有する。
本発明の実施形態によると、前記サブプログラムの入力アドレスがいかなるものであれ、主呼出しプログラムへ復帰する命令に必ず至るという特徴をサブプログラムは有する。
本発明の実施形態によると、サブプログラムは、割込み生成演算コードを含まない特徴を有する。
本発明の実施形態によると、サブプログラムは、サブプログラムの外部のアドレスへジャンプ又は分岐する命令を含まないことを特徴とする。
本発明の実施形態によると、サブプログラムは、無限ループを含まないことを特徴とする。
本発明の実施形態によると、サブプログラムは、主プログラムのコードと共にROMに配置される。
本発明はまた、決定性のプログラムを実行する集積回路を提供する。
本発明の前述した目的、特徴及び効果は、本発明による不正防止方法の実施形態を概略的に示す添付図面を用いて、何ら限定しない具体的な実施形態を以下に詳細に説明する。
分かりやすくするために、本発明を理解するのに必要な素子のみ図示し、以下で説明する。特に、本発明は既知のマイクロコントローラが実装されているので、本発明のセキュリティ機能を実行する集積回路即ちマイクロコントローラの構造は詳述されない。さらに、本発明のセキュリティサブプログラムを実行することに使用される命令及び演算コードは、命令を実行する前記サブプログラムが従来のものなので、詳述しない。
本発明の特徴は、実行時間をランダム化する目的で、秘密量を処理する主プログラム即ちアルゴリズムの非同期化を提供することである。従って、実行ごとに、回路の物理的シグネチャがランダムに異なる。それは、シグネチャの相違が単に入力データ間の相違の結果として生じるわけではないので、起こり得る海賊行為によって秘密量に関する仮説が有効になることを防ぐ。
図1は、本発明の不正防止方法の実施形態の概略図である。
この実施例において、本発明は、秘密量を処理するプログラムPgに利用される。このプログラムは起動命令(START)で起動し、アルゴリズムを従来の方法で実行する連続する命令INST1からINSTmを含む。
本発明の特徴によると、プログラムPgは、サブプログラムEへ分岐する少なくとも一つの命令を含む。前記命令は、SECUと呼ばれている。命令SECUは、ランダムに選択されたアドレスAddRdにサブプログラムEへの分岐を有する。
このようにして、プログラムが命令SECUを実行すると、マイクロコントローラは、サブプログラムEのアドレス終端を形成する二つの値の間の数Rdのランダム選択を行う。従って、サブプログラムEにおける分岐アドレスAddi(iは乱数Rdに対応する)は、ランダムであり、アルゴリズムPgの実行ごとに変化する。
本発明によると、サブプログラムEは、以下の条件を満たすコードの集合から選ばれた演算コードOPCODEiを含む。以下の条件とは、
演算コードOPCODEiは閉集合に属すこと、つまり、サブプログラムEで実行される演算コードがいかなるものであれ(呼出しプログラムPgへ復帰する命令RETを除く)、次の演算コードがまたこのサブプログラムの演算コードであること、
ジャンプする又は他のサブプログラムを呼出すための命令は、好ましくは、閉集合に関係可能なものに限られること、
サブプログラムEへの入力アドレスがいかなるものであれ、プログラムから出力可能な演算コードRETが常に最後に生じること、
サブプログラムEが、無限ループを備えないこと、
好ましくは、演算コードの集合が、(アルゴリズムの実行を停止させないために、)割込み生成命令を含まないことである。
演算コードOPCODEiは閉集合に属すこと、つまり、サブプログラムEで実行される演算コードがいかなるものであれ(呼出しプログラムPgへ復帰する命令RETを除く)、次の演算コードがまたこのサブプログラムの演算コードであること、
ジャンプする又は他のサブプログラムを呼出すための命令は、好ましくは、閉集合に関係可能なものに限られること、
サブプログラムEへの入力アドレスがいかなるものであれ、プログラムから出力可能な演算コードRETが常に最後に生じること、
サブプログラムEが、無限ループを備えないこと、
好ましくは、演算コードの集合が、(アルゴリズムの実行を停止させないために、)割込み生成命令を含まないことである。
サブプログラムコンポーネントは、特に、主プログラム命令と区別するために、以上では演算コードと呼ばれてきた。実際に、あらゆるプログラムと同様に、サブプログラムEは、1又は数個のオペランドを場合によって処理し、各々が1又は数個の演算コードで形成された命令を含む。従って、サブプログラムEへのアクセスは、上述の条件に関する命令の始めに行われ得る。重要な点は、命令の途中(複合命令の演算コード上)に落ちこまず、その中にブロックされつづけないことである。サブプログラムEのいくつかのアドレスが、入力アドレスとして、禁じられる場合、例えば、乱数Rdの検証試験が行われる。又は、可能なアドレスの集合から数Rdがランダムに選択される。
サブプログラムの命令即ち演算コードが、オペランドを使用する場合、前記オペランドは、実際の可能な秘密量以外のあらゆるオペランドであり得る。
サブプログラムEは、例えば、主プログラムPgのコードと共にROMに収納される。
上述の条件を満たせば、不正防止サブプログラムEの生成は、手動で行われてもよい。
もう一つの実施形態によると、プログラムEは、コンパイラにより自動的に生成される。従って、ユーザは、前記サブプログラムに関して条件が満たされるという保障を得る。さらに、サブプログラムは、自動的に、ランダムに生成された演算コードの集合であり、規定のルールに従う。
もちろん、不正防止機能SECUへのいくつかの呼出しが、主プログラムPgに存在していてもよい。同様に、各サブプログラムが同じ特質を有し且つ、主プログラムからのランダムアクセスに関するものであれば、異なるサブプログラムEを提供しても良い。
簡略化した実施例として、最も簡略化されたサブプログラムは、サブプログラムの最後のラインに命令RETを置くこと、次のアドレスへジャンプする命令又は演算コードNEXTを提供することだけを含む。従って、主プログラムの命令SECUがサブプログラムに送るアドレス次第で、復帰命令RETに至る時間が異なる。
本発明の効果は、秘密量を処理するプログラムの実行時間をランダム化出来ることである。これにより、このプログラムを実行する集積回路の電流シグネチャ(又は他の物理的シグネチャ)を可変且つランダムとすることができる。
もちろん、本発明は、当業者によれば容易に種々の変更、修正及び改良をすることができる。特に、上述した機能表示に基づく、セキュリティサブプログラムEに許可される演算コードの選択は、当業者の能力の範囲内である。さらに、これらの表示に基づいて、異なるプログラミング言語に本発明を適用することも、当業者の能力の範囲内である。本発明に特有の演算コードの集合即ちサブプログラムを使用する特定の命令(SECU)を使用可能な命令に提供することで足りる。
さらに、サブプログラムが、主プログラムへ直接的又は間接的に復帰するならば、セキュリティサブプログラムは、決定性であろうがなかろうが、他のサブプログラムへジャンプする命令を含んでも良い。
このような変更、修正及び改良は、この開示の部分でしようとするもので、本発明の精神及び範囲の中で行われるものである。従って、前述の説明は単なる例であり、これに限定するものではない。本発明は、特許請求の範囲及びそれらの均等範囲によって規定されるもののみに限定される。
Pg 主プログラム
START 起動命令
INST 命令
E サブプログラム
SECU 分岐命令
Add アドレス
Rd 乱数
OPCODE 演算コード
RET 復帰命令
START 起動命令
INST 命令
E サブプログラム
SECU 分岐命令
Add アドレス
Rd 乱数
OPCODE 演算コード
RET 復帰命令
Claims (7)
- アルゴリズム即ち主プログラム(Pg)を実行する集積回路の物理的シグネチャをランダム化し、
サブプログラム(E)のランダムに選択されたアドレスへの分岐を前記プログラムに提供することを含む不正防止方法において、
サブプログラムが含むあらゆる演算コードが、主プログラムへ復帰する少なくとも一つの命令(RET)を除いて、同一のサブプログラムに含まれる命令に直接的又は間接的につながり、
前記主プログラムの総実行時間をランダム化するために、前記サブプログラムの入力アドレス(Addi)がいかなるものであれ、前記復帰命令(RET)の実行により、該サブプログラムへの前記分岐を引き起こした命令の直ぐ後に続く前記主呼出しプログラム(Pg)の命令に戻ることを特徴とする不正防止方法。 - 前記サブプログラムの前記入力アドレスがいかなるものであれ、前記サブプログラム(E)が、前記主呼出しプログラム(Pg)へ復帰する命令(RET)に必ず至るという特徴を有することを特徴とする請求項1に記載の方法。
- 前記サブプログラム(E)は、割込み生成演算コードを含まないことを特徴とする請求項1に記載の方法。
- 前記サブプログラム(E)は、前記サブプログラムの外部のアドレスへジャンプ又は分岐する命令を含まないことを特徴とする請求項1に記載の方法。
- 前記サブプログラム(E)は、無限ループを含まないことを特徴とする請求項1に記載の方法。
- 前記サブプログラム(E)は、主プログラム(Pg)のコードと共に、ROMに配置されることを特徴とする請求項1に記載の方法。
- 決定性のプログラムを実行する集積回路において、請求項1から6のいずれかの不正防止方法を実行するための手段を含むことを特徴とする集積回路。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0301783 | 2003-02-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004246899A true JP2004246899A (ja) | 2004-09-02 |
Family
ID=32732000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004034896A Withdrawn JP2004246899A (ja) | 2003-02-13 | 2004-02-12 | 集積回路により実行されるアルゴリズムの不正防止方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20040162993A1 (ja) |
EP (1) | EP1450237A3 (ja) |
JP (1) | JP2004246899A (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8301890B2 (en) * | 2006-08-10 | 2012-10-30 | Inside Secure | Software execution randomization |
US7613907B2 (en) * | 2006-08-11 | 2009-11-03 | Atmel Corporation | Embedded software camouflage against code reverse engineering |
US7554865B2 (en) * | 2006-09-21 | 2009-06-30 | Atmel Corporation | Randomizing current consumption in memory devices |
JP4680876B2 (ja) * | 2006-12-11 | 2011-05-11 | ルネサスエレクトロニクス株式会社 | 情報処理装置及び命令フェッチ制御方法 |
EP1986122A1 (fr) * | 2007-04-23 | 2008-10-29 | Stmicroelectronics Sa | Unite de traitement securisee |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2037857C (en) * | 1990-03-20 | 2001-01-16 | Roy Allen Griffin, Iii | Prevention of determination of time of execution of predetermined data processing routine in relation to occurrence of prior observable external event |
US5249294A (en) * | 1990-03-20 | 1993-09-28 | General Instrument Corporation | Determination of time of execution of predetermined data processing routing in relation to occurrence of prior externally observable event |
FR2765361B1 (fr) * | 1997-06-26 | 2001-09-21 | Bull Cp8 | Microprocesseur ou microcalculateur imprevisible |
US7092523B2 (en) * | 1999-01-11 | 2006-08-15 | Certicom Corp. | Method and apparatus for minimizing differential power attacks on processors |
CA2258338C (en) * | 1999-01-11 | 2009-02-24 | Certicom Corp. | Method and apparatus for minimizing differential power attacks on processors |
FR2790347B1 (fr) * | 1999-02-25 | 2001-10-05 | St Microelectronics Sa | Procede de securisation d'un enchainement d'operations realisees par un circuit electronique dans le cadre de l'execution d'un algorithme |
-
2004
- 2004-02-11 US US10/776,415 patent/US20040162993A1/en not_active Abandoned
- 2004-02-12 EP EP04300078A patent/EP1450237A3/fr not_active Withdrawn
- 2004-02-12 JP JP2004034896A patent/JP2004246899A/ja not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20040162993A1 (en) | 2004-08-19 |
EP1450237A2 (fr) | 2004-08-25 |
EP1450237A3 (fr) | 2005-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163857B2 (en) | Securing microprocessors against information leakage and physical tampering | |
Van Bulck et al. | Nemesis: Studying microarchitectural timing leaks in rudimentary CPU interrupt logic | |
JP5643894B2 (ja) | サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法 | |
Borrello et al. | Constantine: Automatic side-channel resistance using efficient control and data flow linearization | |
Kirovski et al. | Enabling trusted software integrity | |
Agosta et al. | Compiler-based side channel vulnerability analysis and optimized countermeasures application | |
TWI449392B (zh) | 軟體執行的隨機化 | |
Gupta et al. | Marlin: Mitigating code reuse attacks using code randomization | |
Kim et al. | SGX-LEGO: Fine-grained SGX controlled-channel attack and its countermeasure | |
Heydemann et al. | Formally verified software countermeasures for control-flow integrity of smart card C code | |
Cyr et al. | Low-cost and secure firmware obfuscation method for protecting electronic systems from cloning | |
CN112434266A (zh) | 一种shellcode控制流扁平化混淆方法 | |
Pewny et al. | Breaking and fixing destructive code read defenses | |
Jangda et al. | Adaptive just-in-time code diversification | |
US20100011344A1 (en) | Method making it possible to vary the number of executions of countermeasures in an executed code | |
Ragel et al. | Micro embedded monitoring for security in application specific instruction-set processors | |
Zhu et al. | Protection against indirect overflow attacks on pointers | |
Hayes et al. | {GPU} Taint Tracking | |
JP2004246899A (ja) | 集積回路により実行されるアルゴリズムの不正防止方法 | |
Drinic et al. | A hardware-software platform for intrusion prevention | |
Lackner et al. | Towards the hardware accelerated defensive virtual machine–type and bound protection | |
Allibert et al. | Chicken or the egg-computational data attacks or physical attacks | |
Chakraborty et al. | Embedded software security through key-based control flow obfuscation | |
Holtryd et al. | Sok: Analysis of root causes and defense strategies for attacks on microarchitectural optimizations | |
Ha et al. | Kernel code integrity protection at the physical address level on RISC-V |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20070501 |