JP2005149262A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2005149262A
JP2005149262A JP2003387524A JP2003387524A JP2005149262A JP 2005149262 A JP2005149262 A JP 2005149262A JP 2003387524 A JP2003387524 A JP 2003387524A JP 2003387524 A JP2003387524 A JP 2003387524A JP 2005149262 A JP2005149262 A JP 2005149262A
Authority
JP
Japan
Prior art keywords
information processing
processing apparatus
address
data
memory
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.)
Pending
Application number
JP2003387524A
Other languages
English (en)
Inventor
Masahiro Kaminaga
正博 神永
Takashi Watanabe
高志 渡邊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2003387524A priority Critical patent/JP2005149262A/ja
Priority to CNB2004100926745A priority patent/CN100356342C/zh
Priority to US10/990,977 priority patent/US7454017B2/en
Publication of JP2005149262A publication Critical patent/JP2005149262A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

【課題】 本発明の目的は、高いセキュリティを持つICカ−ドなどに供する耐タンパ−情報処理装置に提供することである。
【解決手段】 本発明は、プログラムを格納するプログラム格納部と、データを格納するメモリと、プログラムに従い所定の処理を行う演算装置と、演算装置とメモリを接続するデータバスとを有し、演算装置が演算に使用する論理アドレスと、論理アドレスに対応づけ演算毎または情報処理装置の起動毎にランダムに設定されたメモリの物理アドレスとを変換する変換部とを有する情報処理装置を提供することにより上記課題を解決する。
【選択図】 図4


Description

本発明は、高いセキュリティを持つ耐タンパ−情報処理装置に関するものであり、特に、ICカ−ドなどに適用して極めて効果的な技術に関するものである。
ICカ−ドは、勝手に書き換えることが許されないような個人情報の保持や、秘密情報である暗号鍵を用いたデ−タの暗号化や、暗号文の復号化を行う装置である。ICカ−ド自体は電源を持たない。接触式のICカードは、ICカ−ド用のリ−ダライタに差し込まれると、電源の供給を受け、動作可能となる。非接触式のICカードは、リーダライタから発する電波を受け、電磁誘導の原理を利用して電力を起こすことによって動作可能となる。ICカードは動作可能になると、リ−ダライタから送信されるコマンドを受信し、そのコマンドに従って、デ−タの転送等の処理を行う。接触式と非接触式のICカードは、その本体は、本質的に同じICチップであるので、以下、接触式のICカードについてのみ説明する。
ICカ−ドの基本概念は、図1に示すように、カ−ド101の上に、ICカ−ド用チップ102を搭載したものである。図に示すように、一般にICカ−ドは、所定位置に、供給電圧端子Vcc、グランド端子GND、リセット端子RST、入出力端子I/O、及びクロック端子CLKを有する。この端子の位置は、ISO7816の規格に定められている。これらの諸端子を通して、リ−ダ−ライタから電源の供給やリ−ダライタとのデ−タの通信を行う。
ICカ−ドに搭載される半導体チップの構成は、基本的には通常のマイクロコンピュ−タと同じ構成である。図2はICカ−ドに搭載される半導体チップの基本的構成を示すブロック図である。図2に見られるように、カード部材用の半導体チップは、中央処理装置(CPU)201、記憶装置204、入出力(I/O)ポ−ト207、コプロセッサ202を有する。ここで、記憶装置204は、PA(プログラム領域)およびDA(データ領域)を持っている。
なお、システムによってはコプロセッサがない場合もある。CPU201は、論理演算や算術演算などを行う装置であり、記憶装置204は、プログラムやデ−タを格納する装置である。入出力ポ−トは、リ−ダライタと通信を行う装置である。コプロセッサは、暗号処理そのもの、または、暗号処理に必要な演算を高速に行う装置である。例えば、RSA暗号の剰余演算を行う為の特別な演算装置や、DES暗号の処理を行う装置などがある。ICカ−ド用プロセッサの中には、コプロセッサを持たないものも多くある。デ−タバス203は各装置を接続するバスである。
記憶装置204は、ROM(Read Only Memory)やRAM(Random Access Memory)、EEPROM(Electric Erasable Programable Read Only Memory)などを有する。ROMは、記憶情報を変更できないメモリであり、主にプログラムを格納するメモリである。RAMは自由に書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容は消滅する。EEPROMは、電源の供給が中断されてもその内容を保持することができるメモリである。このEEPROMは記憶情報を書き換える必要があり、ICカ−ドがリ−ダライタから抜かれても、保持が可能なデ−タを格納するために使われる。例えば、プリペイドカ−ドでの使用金額などは、EEPROMに保持される。
上述のICカードに代表される、マイクロコンピュータなどの情報処理装置において、情報処理装置への不正浸入を試みるアタッカーをはじめとして正規のユーザーでさえも自由に読み書きできないように、期待される情報の保持や、秘密情報である暗号鍵を使って、秘匿するべく期待されるデータの暗号化や復号化を行うことがある。
しかし、情報処理装置の消費電流や放射電磁波を観測することにより、情報処理装置内部で処理されている情報が推定されてしまう恐れがある。
この対策としては、データの格納位置を変化させ、さらにデータを暗号化・復号化して保存する方法や、データ格納位置を入れ替え、入れ替え前の格納位置から入れ替え後の格納位置を予測できないようにするデータ格納位置入れ替え方法がある(例えば、特許文献1を参照)。
特開2003−134103号公報
本発明は、高いセキュリティを持つカ−ド部材などの耐タンパ−情報処理装置を提供するものである。
本発明の技術的な課題は、カ−ド部材、例えばICカ−ド用チップでのデ−タ処理と消費電流との関連性を減らすことである。消費電流とチップの処理との関連性が減れば、観測した消費電流の波形からICカ−ド用チップ内での処理や暗号鍵を推測することが困難になる。
即ち、本発明は、カード部材等に高いセキュリティを持たせんとするものである。
ICカ−ドは、プログラムや重要な情報がICカ−ド用チップの中に密閉されているため、重要な情報の格納や、カ−ドの中で暗号処理を行うために用いられる。従来、ICカ−ドでの暗号を解読する難しさは、暗号アルゴリズムの解読の困難さと同じと考えられていた。しかし、ICカ−ドが暗号処理を行っている時の消費電流を観測し、解析することにより、暗号アルゴリズムの解読より容易に暗号処理の内容や暗号鍵が推定される可能性が示唆されている。消費電流は、リ−ダライタから供給されている電流を測定することにより観測することができる。それは次のような理由による。
ICカ−ド用チップを構成しているCMOSは、出力状態が1から0あるいは0から1に変わった時に電流を消費する。特に、デ−タバス203においては、バスドライバ−の電流や、配線及び、配線に接続されているトランジスタの静電容量のため、バスの値が1から0あるいは0から1に変わると、大きな電流が流れる。そのため、消費電流を観測すれば、ICカ−ド用チップの中で、何が動作しているか分かる可能性がある。
図3は、ICカ−ド用チップの1サイクルでの消費電流の波形を示したものである。処理しているデ−タに依存して、電流波形が301や302のように異なる。このような差は、バス203を流れるデ−タや中央演算装置201で処理しているデ−タに依存して生じる。
コプロセッサ202は、CPUと並列に、例えば、512ビットの剰余演算を行うことができる。そのため、CPUの消費電流とは異なった消費電流波形の長時間の観測が可能である。その特徴的な波形を観測することにより、コプロセッサの動作回数を容易に測定することができる。コプロセッサの動作回数が暗号鍵と何らかの関係があるならば、動作回数から暗号鍵を推定できる可能性がある。また、コプロセッサでの演算内容に暗号鍵に依存した偏りがあると、その偏りが消費電流から求められ、暗号鍵が推定される可能性がある。
消費電力がデータに依存する典型的な例は、アドレスバスで消費される電力である。アドレスバスは、常に動作していなければならないので、その制御は、スタティック方式である。スタティック方式では、データを毎回クリアすることなく、直前の値と現在の値との変化分の電力が消費される。従って、例えば、アドレス(プログラムカウンタ)が、2ビット毎に、
800C → 800E → 8010 → 8012 → 8014 → 8016 → 8018
と変化したとすると、それぞれ
800C → 800Eの変化ビット数=1
800E → 8010の変化ビット数=4
8010 → 8012の変化ビット数=1
8012 → 8014の変化ビット数=2
8014 → 8016の変化ビット数=1
8016 → 8018の変化ビット数=3
にほぼ比例した電力が消費される。ここで、アドレスの値は16進数で表記した(以下、特に断らない限り、アドレスは16進数で表記するものとする)。
この性質を利用すると、ICチップを開封することなく、消費電力の変化を調べることによって、内部情報を不正に取り出すことができる。特に、差分電力解析(DPA=Differential Power Analysis)のように、多数のデータに対して統計的処理を行って暗号鍵を取り出すアタックは、暗号プログラムの実装方法について何ら知識がない場合でも有効である。
この問題を解決する方法として、ハミング距離が等しくなるように配置する方法が考えられ、有効である。しかし、一般にICカードのような小型デバイスでは、RAMの大きさは厳しく制限されており、データ数が多い場合や、データが大きい場合には、完全にハミング距離が等しくなるように配置することが困難となる。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば下記のとおりである。
演算装置が演算に使用する論理アドレスと、上記論理アドレスに対応づけランダムに設定される上記メモリの物理アドレスとを変換する変換部とを有することを特徴とする情報処理装置である。
上記構成により、データとアドレスの関係をランダム化することが可能となり、消費電流と情報処理装置内での処理との関連性が減少し、情報処理装置内での処理や暗号鍵を推測することが困難になる。
本発明は、物理アドレスとプログラムで指定されたアドレスとの間に一対一の対応関係を保ったまま、それを適当なタイミングで変更することにある。これにより、アドレスは連続性を持たず、高い撹乱効果が得られ、情報処理装置内でのデ−タ処理と消費電流との関連性を減らすことが出来る。消費電流とチップの処理との関連性が減れば、観測した消費電流の波形から情報処理装置内での処理や暗号鍵を推測することが困難になる。
即ち、本発明によれば、高いセキュリティを有するICカードなどの耐タンパー情報処理装置を提供できる。
本発明の本質は、物理アドレスとプログラムで指定されたアドレスの間に一対一の対応関係を保ったまま、それを適当なタイミングで変更することにある。セキュリティの観点からいえば、対応関係は複雑な方がいいが、上述した差分電力解析(DPA)のような統計的アタックの防衛においては、物理アドレスが毎回変更されるということのみが重要である。そこで、実施にあたっては、アドレスマッピングを行う回路ができるだけ単純になるものを選ぶことになる。
上記の問題を解決するため、本発明では、暗号計算など、秘密情報を含む処理に対して、その暗号計算または、当該暗号計算の一部の実行毎にデータを配置するアドレスを物理的に変更する。方法には、種々の形態が考えられる。
最も典型的な方法は、以下の通りである。
プログラムで指定しているデータのアドレスをADDR(USER)に対し、物理アドレスADDR(PHYS)を、乱数R(但しRは整数)によって、
ADDR(PHYS)=ADDR(START)+(((ADDR(USER)−ADDR(START))+R) mod M )(式1)
のように変更する。ここで、ADDR(START)は、ランダム化するアドレスの開始位置、Mは適当な自然数(ランダム化するRAM領域の大きさ)であり、X mod Mは、XをMで割った余りを意味する。(式1)に基づいて物理アドレスを変更するのは、専用の演算装置である。尚、乱数Rの生成は、ICカードに内蔵されている乱数発生装置を使うのが最も一般的であるが、線形合同法などの擬似乱数生成アルゴリズムを用いても代用することができる。
本来のアドレスは、ADDR(USER)であるから、RがMの倍数にならない限り、(式1)で定まる物理アドレスは、ADDR(USER)とは異なるものになる。Rの変更は、リセット毎に行ってもよいし、暗号処理実行毎に行ってもよい。
(式1)に基づいて物理アドレスを変更する数値例を示す。
例えば、Mを128とする。最初にプログラムを実行する毎にRが変化し、順に、50、4、120、56と変化したとすると、ユーザが指定したアドレスADDR(USER)=2000は、実行毎に2050、2004、2120、2056のように変化する。これにより、DPAによる統計的アタックを防ぐことができる。例えば、DES(DATA ENCRYPTION STANDARD:米国の標準暗号)におけるSBOXの処理のようにテーブルルックアップによってデータを参照する場合は、データとアドレスの間に対応関係ができているが、上記の方法でこの対応関係をランダム化することができ、秘密鍵を取り出すことが困難になる。
アドレス変更は、(式1)以外の方法でもよい。本質は、ADDR(USER)とADDR(PHYS)が一対一に対応していることであって、(式1)は、その一例にすぎない。
本発明の実施例としては、「課題を解決するための手段」の項で示した(式1)の方法の他に、別な例として以下が挙げられる。すなわち、
RAMのアドレスADDR_LからADDR_H(ADDR_L<ADDR_H)に対するアクセス(つまり、ADDR_L<=ADDR(USER)<=ADDR_H)に対し、
ADDR(PHYS)=ADDR_H−ADDR(USER) (式2)
とするか、そのままADDR(PHYS)=ADDR(USER)とするかを確率1/2で、ランダムに選択する回路を考える。この方法によっても、DPAのような統計的アタックが困難になる。
もちろん、これ以外の方法もある。乱数Rをアドレス空間と同じビット長を持つものとして、
ADDR(PHYS)=ADDR(USER) XOR R (式3)
とするのも効果的な方法である。ここで、XORはビット毎の排他的論理和である。明らかに、(式3)により、ADDR(USER)とADDR(PHYS)は一対一に対応する。
上記は、実装が比較的容易で効果が高いものであるが、この他にも様々なアドレスマッピングの方法が考えられることは言うまでもない。
このような対策と、アドレス間のハミング距離を揃える方法を部分部分で使い分けることによって、柔軟かつ効果的な対策が可能となる。
以下、発明の種々の実施例を詳細に説明する。
まず、図9に本発明の全体構成を示す。本構成は、中央処理装置(CPU)901、コプロセサ902、アドレス変換部903、アドレスバス904、データバス905、入出力(I/O)ポート906、メモリ部907、EEPROM908、ROM911、RAM914、乱数発生装置915を有する。尚、EEPROM908は、EEPROMのプログラム領域909、データ領域910を持ち、ROM911は、ROMプログラム領域912、ROMデータ領域913を持つ。
CPU201は、論理演算や算術演算などを行う装置であり、好ましい実施例において、CPUがEEPROM908、ROM911等の不揮発性メモリに格納されたプログラムを読出し、そのプログラムに従い所定の処理を行う。
メモリ部906は、プログラムやデータを格納する装置である。入出力ポートは、リーダライタと通信を行う装置である。
アドレス変換部903は、CPUとアドレスバス904の間にあり、アドレスバス904に送るアドレス値がEEPROM、ROM、RAMなどの位置を指しているかを判定し、RAMの指定領域であれば、CPUからのアドレス信号を図4、7のような仕組みによって変換する。905は、データバスであり、変換されない。
図4、図7のPCは、通常CPUの内部にある。すなわち、アドレス変換部は、図4において、401、402を除いた部分、図7において701、702を除いた部分である。
尚、CPUはプログラムカウンタを変化するために、PC+displacement(ジャンプ命令などでの飛び先に相当する)を計算する回路を持っている。従って、減算器(加算器と同じ)までがCPUの内部にある場合がる。
ADDR−BUFは、アドレスバス904に接続されており、変換されたアドレスをアドレスバスに出力するように構成されている。ADDR−BUFには、データ出力用のドライバが接続され、ADDR−BUFのデータをアドレスバスに出力する。変換において、乱数が必要であるため、アドレス変換部には、乱数発生装置915が接続されている。この乱数発生装置は、図4における402、図7における702が対応する。
コプロセッサは、暗号処理そのもの、または、暗号処理に必要な演算を高速に行う装置である。システムによってはコプロセッサがない場合もある。実施例においては、CPUのメモリ(RAM)とコプロセッサのメモリは独立であるため、アドレス変換部とコプロセッサについては関係はない。コプロセッサがCPUとメモリ(RAM)を共有している場合は、コプロセッサにもアドレス変換部をつける必要がある。その場合には、アドレス変換に用いる乱数Rは、CPUのアドレス変換部で用いるものと同じにする。そのため、乱数Rを格納いているバッファを共有するなどの構成となる。
<実施例1>
まず、図4,5,6を用い、(式1)に従って物理アドレスをマッピングする実施例とその動作を説明する。
最初に、最も簡単な、M=2^m(2のm乗)の形の場合の実施例を示す。
図4に示す本発明の実施例は、以下のものから構成される。すなわち、プログラムカウンタ用バッファ401、乱数発生装置402、乱数用のバッファ403、加算器404、2^m−1=M−1(二進数表示では、m個の1が並ぶ)を格納するバッファ(PC)405、論理積(Logical AND)を計算する回路406、物理アドレスバッファ407、プログラムカウンタの位置が指定領域にあるかどうかを判定する判定回路408、セレクタ409、ゼロバッファ410、スタートアドレスバッファ411、減算器412、エンドアドレスバッファ413から構成される。ここで、ゼロバッファには、値0を格納しておく。これは固定値であるので、レジスタである必要はないが、簡単のため、このようにしておく。プログラムカウンタは、マイクロコンピュータがプログラムを実行する際の実行命令、または、データの位置を格納するものである。判定回路408は、プログラムカウンタの値が指定領域(すなわち、ADDR(START)とADDR(END)の間)にあれば1、なければ0をセレクタ409に送り、プログラムカウンタの値を加算器404に送る装置である。また、セレクタ409は、判定回路408の出力信号が1であれば403、0であれば410の値を加算器404に送信する装置である。煩雑さを避けるため、これらの構成については述べないが、論理回路に関する基本的な知識があれば、容易に構成可能であり、発明の実現性が損なわれることはない。尚、本実施例で計算されるのは、ADDR(START)からの相対位置であり、ADDR(PHYS)そのものではないことに注意する。システムによっては、ADDR−BUFの結果にADDR(START)を加えて用いるが、ここでは簡単のため省略する。
図4において、まず、制御信号に従って、乱数発生装置402が乱数を発生し、R−BUFにその値を格納する。ここで、乱数派生装置402が発生した乱数RをR−BUFに新たに格納するタイミングは、(1)リセット後に新たに秘密情報を含む処理を行う前、(2)メモリ上(ランダムオフセットにしている領域)のデータをそれ以後の処理で利用しない場合、メモリ上のデータが解放された後新たに秘密情報を含む処理を行う前の二通りがある。
R−BUFの値は、新たに制御信号がくるまで固定される。ADDR(USER)は、PCに一時的に格納され、判定回路408によって該当アドレス領域にあるかないかが判定される。もし指定領域になければ、408は、0を409に送信すると共に、加算器404にPC−ADDR(START)の値を送信する。もし指定領域にあれば、408は、1を409に対して送信すると共に、加算器404にPC−ADDR(START)の値を送信する。409は、当該信号を受けてR−BUFに格納されている乱数を加算器404に送信し、加算器404は、両者の和を計算して、その値を論理積演算装置406に送信し405の値との論理積を計算し、ADDR−BUFに格納する。(これは、404の出力の下位mビットのみを取り出すのと同じであるので、加算器404での計算は、mビット目まででよい。mを固定するのであれば、このような構成も可能である。)ADDR−BUFの値は、
(ADDR(USER)−ADDR(START)+R) mod M
に一致する。
指定領域外の場合は、409は、408の信号0を受けて、ゼロバッファ410の値0を加算器404に送信する。このときは、ADDR−BUFの値は、
ADDR(USER)−ADDR(START)
となる。つまり、アドレスに変化はない。
これらは、ADDR(START)との相対的な位置関係を示すものであるので、実際の物理アドレスADDR(PHYS)は、本来の位置から巡回的にRだけ異なる位置となる。例えば、ADDR(USER)+Rが指定された領域に含まれている場合は、図5のように、これが直接ADDR(PHYS)となる。ADDR(USER)+Rが指定領域を超えてしまう場合は、指定領域を超える部分は図6のように、剰余分だけ、ADDR(START)からずれた位置に物理アドレスがセットされる。
ここでは、Mが2のべき乗になっている場合を扱っているが、これを2のべき乗ではないような、一般のMに拡張するには、405,406の代わりに、除算器を設ければよい。これは、Mを拡張した実施例となり、領域指定が細かく行える利点がある。
本実施例では、物理アドレスとプログラムで指定されたアドレスとの間に一対一の対応関係を保ったまま、それをランダムに変更することにある。これにより、アドレスは連続性を持たず、高い撹乱効果が得られ、情報処理装置内でのデ−タ処理と消費電流との関連性を減らすことが出来る。消費電流とチップの処理との関連性が減れば、観測した消費電流の波形から情報処理装置内での処理や暗号鍵を推測することが困難になる。
即ち、本実施例によれば、高いセキュリティを有するICカードなどの耐タンパー情報処理装置を提供できる。
なお、本実施例では、ICカードへの適用例について示したが、ICカード以外の情報処理装置等への適用が可能なことは言うまでもない。
<実施例2>
次に、物理アドレスと論理アドレスの対応が、最も単純で、撹乱効果が高い実施例を示す。アドレスのビット数をnとする。通常、メモリの違いは、アドレスの上位ビットで決定される。本実施例では、簡単のため、RAM領域を、最上位ビットが1の領域全てとする。つまり、RAM領域は、2^(n−1)ビットの大きさを持つものとしておく。
本実施例は、以下のものから構成される。すなわち、プログラムカウンタ用バッファ701、乱数発生装置702、乱数用のバッファ703、プログラムカウンタの位置が指定領域にあるかどうかを判定する判定回路704、セレクタ705、ゼロバッファ706、排他的論理和を計算する回路707、物理アドレスバッファ708から構成される。ここで、ゼロバッファには、値0を格納しておく。これは固定値であるので、レジスタである必要はないが、簡単のため、このようにしておく。707はnビットの排他的論理和演算を行う。また、R−BUFはnビットのバッファであるが、最上位は常に0であるものとする。各構成要素間の繋がりは、図7に示す通りである。
プログラムカウンタの値は、プログラムカウンタ用バッファ701に格納される。判定回路704は、当該プログラムカウンタの値の最上位が0であればセレクタ705に0を送信し、最上位が1であれば、705に1を送信すると共に、当該プログラムカウンタの値を排他的論理和演算回路707に送信する。705は、当該信号が1であれば、R−BUF703の値(乱数)を707に送信する。R−BUFの値は、乱数発生装置702から供給される。ここで、乱数派生装置702が発生した乱数RをR−BUFに新たに格納するタイミングは、(1)リセット後に新たに秘密情報を含む処理を行う前、(2)メモリ上(ランダムオフセットにしている領域)のデータをそれ以後の処理で利用しない場合、メモリ上のデータが解放された後新たに秘密情報を含む処理を行う前の二通りがある。
今、PC(プログラムカウンタ(論理アドレス))の最上位が1である場合(アドレスがRAMを指している場合)、判定回路704は信号1をセレクタ705に送信するので、セレクタはR―BUFに格納されている乱数を707に送る。707にて、R−BUFの乱数RとプログラムカウンタPCの値の排他的論理和が計算され、ADDR―BUF708に格納される。これが物理アドレスとなる。この物理アドレスは、Rが0でない限り論理アドレスとは異なる値となる。
PCの最上位が0の場合は、(アドレスがRAM以外を指している場合)、判定回路704は信号0をセレクタ705に送信するので、セレクタはZERO―BUFに格納されている値0を707に送る。707にて、0とプログラムカウンタPCの値の排他的論理和が計算され、ADDR―BUF708に格納される。0との排他的論理和は元の値を変えないから、元のPCの値が物理アドレスとなる。本実施例は、指定可能なRAMの領域が限定されるが、一般にアドレスは連続性を持たず、撹乱効果が高い。
<実施例3>
本発明は、アドレス変化を一定にするようにデータを配置する技術と組み合わせて使うことにより、よりセキュリティを高めることができる。例えば、RAMのうち、DPAアタックの対象になる領域に対して本発明の方式を適用し、電流を統計的方法によらず、直接観測して内部情報を取り出すアタック方式の対象になる部分に対しては、アドレス変化が一定になるようにデータを配置することにより、より広範囲の内部データを安全に処理することができ、セキュリティが向上すると考えられる。
この実施例は、例えば、以下のようになる。
今、RAM領域のアドレスが十六進数表示でC000からCFFFまでとする。前記実施例1で示したMの拡張の例において、C900からCFFFまでの領域に適用した情報処理装置を考える。この条件下で、以下のプログラムを考える。
(以下、実施例のプログラムは、H8マイコンのアセンブラ言語により記述するが、マイクロコンピュータの構成は本質的に同一であり、命令セットの違いは本質的ではなく、他のアセンブラ言語でも同様の効果を持つように記述することは可能である。H8マイコンとアセンブラについては、例えば、藤沢幸穂「H8マイコン完全マニュアル」オーム社、2000年を参照されたい。)
今、2ビットのデータdが、’00’, ’01’, ’10’, ’11’である場合に、それぞれ、データY0, Y1, Y2, Y3をあるコプロセッサのデータレジスタCDBに転送するプログラムを考える。Y0, Y1, Y2, Y3は、同一の長さDATA_LENGTHを持つデータであり、あらかじめRAMの所定の位置に格納されているものとする(図8、804−807)。各データの先頭アドレスは、それぞれ、Y0_TOP, Y1_ TOP, Y2_ TOP, Y3_ TOPであるものとする。又、CDBの先頭アドレスをCDB_TOPとする(図8、808)。
さらに、
Ham(Copy,Y0_TOP)
=Ham(Copy,Y1_TOP)
=Ham(Copy,Y2_TOP)
=Ham(Copy,Y3_TOP)
(条件1)
を満たすように定める。例えば、DATA_LENGTH=1024/16=64, Copy=0100,Y0_TOP=C200, Y1_TOP=C400, Y0_TOP=C700, Y0_TOP=C800と定めれば、
Ham(Copy,Y0_TOP)=Ham(0100,C200)=4
Ham(Copy,Y1_TOP)=Ham(0100,C400)=4
Ham(Copy,Y2_TOP)=Ham(0100,C700)=4
Ham(Copy,Y3_TOP)=Ham(0100,C800)=4
となり、かつ各データは重複なくRAM上に配置され、ワード転送の各段階で(条件1)が満足される。
以下に示すプログラムは、3つの部分から構成されている。第一はMAINを先頭アドレス(ラベル)とする主要部、第二はCopyを先頭アドレスとする転送サブルーチン、第三はtableを先頭アドレスとするデータ部である。第一、第二の部分は、ROMまたは、EEPROM(図8、802,803)に配置されている。プログラム実行においては、最初に、プログラムカウンタの値をMAINとしておく。

[プログラム1]
/*** MAIN ***/
MAIN:
0000 MOV.W @d, R2
0002 SHLL R2
0004 MOV.W @(table, R2), R0
0006 MOV.W #CDB_TOP, R1
0008 MOV.B #DATA_LENGTH, R3H
000A JSR Copy

/*** Copy Routine ***/
Copy:
0100 MOV.W @R0, R4
0102 MOV.W R4, @R1
0104 ADDS #2, R0
0106 ADDS #2, R1
0108 DEC.B R3H
010A BNE Copy
010C RTS

/*** table ***/
table:
0200 .DATA.W Y0_TOP ;(=C200)
0202 .DATA.W Y1_TOP ;(=C400)
0204 .DATA.W Y2_TOP ;(=C700)
0206 .DATA.W Y3_TOP ;(=C800)

このプログラムの動作を、上記[プログラム1]及び図8に基づいて説明する。
プログラム及びデータの位置付けは、図8に示されている。CDBはRAMの一部として機能するものとする。
最初、プログラムカウンタはMAIN=0000を指しているので、マイクロコンピュータは、MOV.W @d, R2から順に命令を実行する。
0000では、2ビットのdを該当アドレスから読み出し、これをレジスタR2に格納する。0002では、レジスタR2の値を1ビット左にシフトする。これは、R2の値を2倍することに等しい。0004でtable=0200にR2の値を加えたアドレスに格納されているデータをレジスタR0に転送する。例えば、dの値が3であれば、0200+2*3=0206のアドレスに格納されているデータY3_TOPが指し示すアドレスC800がR0に格納される。
0006では、CDBの先頭アドレスCDB_TOPがレジスタR1に格納される。0008では、データのワード長DATA_LENGTH=64がレジスタR3Hに格納される。000AではJSR Copyという命令によって、プログラムカウンタの値を0100(ラベル名”Copy”)に変更する。0100では、R0に格納されているアドレスのデータをレジスタR4に転送し、0102では、R4の値をR1に格納されているアドレス位置に転送する。0104,0106で、アドレスを2だけインクリメントし、0108では、レジスタR3Hに格納されているカウンタの値を1だけデクリメントする。010Aでは、カウンタの値が0でなければ再びコピールーチンの先頭にプログラムカウンタを変更し、レジスタR3Hの値が0になるまで上述の操作を繰り返す。R3Hの値が0になると、プログラムカウンタは、010Cとなり、サブルーチンから抜けて、000Aの次のアドレス、すなわち、000Cに変更し、処理を終える。
アドレス0100の転送命令にて、データY0, Y1, Y2, Y3を読む際のプログラムカウンタは、0100からR0に変化する。この際、R0に含まれている値と0100とのハミング距離は、常に同じである。
ずなわち、d=0の場合、
0100 → C200(ハミング距離4)
0100 → C202(ハミング距離5)
0100 → C204(ハミング距離5)

0100 → C080(ハミング距離4)
のように変化する。
d=1の場合、
0100 → C400(ハミング距離4)
0100 → C402(ハミング距離5)
0100 → C404(ハミング距離5)

0100 → C480(ハミング距離4)
であり、ハミング距離の変化の仕方は、d=0の場合と全く同一である。d=2,3の場合も同様に変化することは明らかであろう。
これにより、C900からCFFFまでは、前記実施例1に示すMの拡張例の場合の効果で、毎回ランダムなアドレス変化に伴う電流が発生するが、C000からC900までの領域の一部(Y0からY4までが格納されている部分)を使う処理(プログラム1)に関しては、上記に説明したようにアドレスの変化に伴う電流がデータによらず一定となる。これにより、C000からC900までを使う処理では、アドレスの変化が小さいため、電流からアドレスを読み取ることが困難となり、C900からCFFFまでの領域においては、DPAをはじめとする電流の統計処理による内部データ読み取りを困難にすることができる。
ICカ−ドの概観及び端子の例を示す平面図である。 マイクロコンピュ−タの基本構成を示すブロック図である。 ICカードにおける消費電流の波形の例を示す図である。 本発明の実施例1を示す図である。 図4の説明を補足する図である。 図4の説明を補足する図である。 本発明の実施例2を示す図である。 本発明の実施例3のうち、アドレス変化が一定になるプログラムの部分を示す図である。 本発明の全体構成を示す図である。
符号の説明
Vcc…電源端子、RST…リセット端子、CLK…クロック端子、GND…グランド端子、I/O…入出力端子、CPU…中央処理装置、COPRO…コプロセッサ、I/O…入出力ポート、MEM…記憶装置、PA…プログラム領域、DA…データ領域、
t…時間、I…電流値、START−BUF…スタートアドレス用バッファ、PC…プログラムカウンタ用バッファ、SUB…減算器、END−BUF…エンドアドレスバッファ、DET…判定回路、R−BUF…乱数用バッファ、RNG…乱数発生装置、ZERO−BUF…ゼロバッファ、Adder…加算器、ADDR−BUF…物理アドレスバッファ、
ADDR(START)…スタートアドレス、ADDR(USER)…ユーザアドレス、ADDR(PHYS)…物理アドレス、R…乱数、MAIN…メインルーチン、Y0_TOP…データY0の先頭アドレス(Y1_TOP,Y2_TOP,Y3_TOPも同様)、CDB_TOP…CDBの先頭アドレス、
901…CPU、902…コプロセッサ、903…アドレス変換部(本願図4などに相当)、904…アドレスバス、905…データバス、906…入出力ポート、907…メモリ部、908…EEPROM、909…EEPROMのプログラム領域、910…EEPROMのデータ領域、911…ROM、912…ROMのプログラム領域、913…ROMのデータ領域、914…RAM(RAMは揮発性メモリのため全てデータ領域)、915…乱数発生装置。

Claims (9)

  1. 2つの異なる電位を用いて、2値情報を表現する情報処理装置であって、
    データを格納するメモリと、
    プログラムに従い、所定の処理を行う演算装置と、
    上記演算装置が演算に使用する論理アドレスと、上記論理アドレスに対応づけランダムに設定された上記メモリの物理アドレスとを変換する変換部とを有することを特徴とする情報処理装置。
  2. 請求項1に記載の情報処理装置であって、
    上記演算装置が演算に使用する論理アドレスの開始アドレスに対応づけられる上記メモリの物理アドレスを演算毎または上記情報処理装置の起動毎または新たに秘密情報を含む処理を行う前または上記メモリのデータを以後の処理で使用しない場合に設定することを特徴とする情報処理装置。
  3. 請求項2に記載の情報処理装置であって、
    上記演算装置は、上記演算処理又は上記情報処理装置の起動時毎に、乱数を発生させ、上記論理アドレスの開始アドレスに該乱数を加算して上記メモリの使用容量で割った余りを該論理アドレスの開始アドレスに対応する物理アドレスとして設定することを特徴とする情報処理装置。
  4. 請求項2に記載の情報処理装置であって、
    上記演算装置が演算に使用する論理アドレスに対応づけられる上記メモリの物理アドレスを、演算毎または上記情報処理装置の起動毎に、上記論理アドレスと乱数との排他的論理和とすることを特徴とする情報処理装置。
  5. 請求項3、4に記載の情報処理装置であって、上記メモリの使用容量は2のべき乗であることを特徴とすることを特徴とする情報処理装置。
  6. 請求項3、4に記載の情報処理装置であって、論理アドレスを変換する領域の外部に、読み出し又は書き込みを行う複数のデータを前記読み出しまたは書き込み命令から、当該データへのハミング距離が同一になるような領域を含むことを特徴とする情報処理装置。
  7. 請求項3乃至6に記載の情報処理装置であって、ICカードに搭載されるもの。
  8. 請求項1に記載の情報処理装置であって、
    上記メモリにおいて、上記演算装置が演算に使用する論理アドレスの開始アドレスに対応づけられる上記メモリの物理アドレスを演算毎または上記情報処理装置の起動毎に設定する第1領域と、
    論理アドレスを変換する領域の外部に、読み出し又は書き込みを行う複数のデータを上記読み出しまたは書き込み命令から、当該データへのハミング距離が同一になるように設定する第2領域とを有することを特徴とする情報処理装置。
  9. 請求項8に記載の情報処理装置であって、
    上記メモリにおいて、
    前記情報処理装置内で発生する電流を直接観測して内部情報を取り出すアタックの対象となる部分に対しては、前記第2領域を割り当て、
    前記情報処理装置内で発生する電流を統計的に処理して内部情報を取り出すアタックの対象となる領域に対しては、前記第1領域を割り当てることを特徴とする情報処理装置。
JP2003387524A 2003-11-18 2003-11-18 情報処理装置 Pending JP2005149262A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003387524A JP2005149262A (ja) 2003-11-18 2003-11-18 情報処理装置
CNB2004100926745A CN100356342C (zh) 2003-11-18 2004-11-16 信息处理装置
US10/990,977 US7454017B2 (en) 2003-11-18 2004-11-18 Information processing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003387524A JP2005149262A (ja) 2003-11-18 2003-11-18 情報処理装置

Publications (1)

Publication Number Publication Date
JP2005149262A true JP2005149262A (ja) 2005-06-09

Family

ID=34694853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003387524A Pending JP2005149262A (ja) 2003-11-18 2003-11-18 情報処理装置

Country Status (1)

Country Link
JP (1) JP2005149262A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009025812A (ja) * 2007-06-18 2009-02-05 Shansun Technology Co デジタル情報の保護方法、装置およびコンピュータによるアクセス可能な記録媒体
JP2009110476A (ja) * 2007-11-01 2009-05-21 Konami Digital Entertainment Co Ltd 記憶処理装置、情報提供サーバ、動作方法、ならびに、プログラム
JP2009258992A (ja) * 2008-04-16 2009-11-05 Toppan Printing Co Ltd 不揮発性メモリ装置及びlsi装置
KR100927975B1 (ko) * 2007-08-29 2009-11-24 주식회사 안철수연구소 메모리에서의 데이터 보호 방법
JP2012146004A (ja) * 2011-01-07 2012-08-02 Dainippon Printing Co Ltd 携帯装置及び動的データの格納位置変更方法
JP2013156798A (ja) * 2012-01-30 2013-08-15 Kddi Corp 記憶装置、アクセスパターンの秘匿方法およびプログラム
JP2013246678A (ja) * 2012-05-28 2013-12-09 Kddi Corp 記憶装置、記憶媒体、アクセスパターンの秘匿方法およびプログラム
JP2013250644A (ja) * 2012-05-30 2013-12-12 Honda Elesys Co Ltd メモリアクセス装置、メモリアクセス方法、及びプログラム
US9081725B2 (en) 2002-03-19 2015-07-14 Shansun Technology Company Digital information protecting method and apparatus, and computer accessible recording medium

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001195555A (ja) * 2000-01-12 2001-07-19 Hitachi Ltd Icカードとマイクロコンピュータ
JP2002032268A (ja) * 2000-07-13 2002-01-31 Fujitsu Ltd 処理装置および集積回路
GB2366634A (en) * 2000-09-11 2002-03-13 Lucent Technologies Inc Gray code program counter and address compiler
JP2004126841A (ja) * 2002-10-01 2004-04-22 Renesas Technology Corp プログラム実装方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001195555A (ja) * 2000-01-12 2001-07-19 Hitachi Ltd Icカードとマイクロコンピュータ
JP2002032268A (ja) * 2000-07-13 2002-01-31 Fujitsu Ltd 処理装置および集積回路
GB2366634A (en) * 2000-09-11 2002-03-13 Lucent Technologies Inc Gray code program counter and address compiler
JP2004126841A (ja) * 2002-10-01 2004-04-22 Renesas Technology Corp プログラム実装方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9081725B2 (en) 2002-03-19 2015-07-14 Shansun Technology Company Digital information protecting method and apparatus, and computer accessible recording medium
JP2009025812A (ja) * 2007-06-18 2009-02-05 Shansun Technology Co デジタル情報の保護方法、装置およびコンピュータによるアクセス可能な記録媒体
JP2014098923A (ja) * 2007-06-18 2014-05-29 Shansun Technology Co デジタル情報の保護方法、装置およびコンピュータによるアクセス可能な記録媒体
KR100927975B1 (ko) * 2007-08-29 2009-11-24 주식회사 안철수연구소 메모리에서의 데이터 보호 방법
JP2009110476A (ja) * 2007-11-01 2009-05-21 Konami Digital Entertainment Co Ltd 記憶処理装置、情報提供サーバ、動作方法、ならびに、プログラム
JP4554660B2 (ja) * 2007-11-01 2010-09-29 株式会社コナミデジタルエンタテインメント 記憶処理装置、情報提供サーバ、動作方法、ならびに、プログラム
JP2009258992A (ja) * 2008-04-16 2009-11-05 Toppan Printing Co Ltd 不揮発性メモリ装置及びlsi装置
JP2012146004A (ja) * 2011-01-07 2012-08-02 Dainippon Printing Co Ltd 携帯装置及び動的データの格納位置変更方法
JP2013156798A (ja) * 2012-01-30 2013-08-15 Kddi Corp 記憶装置、アクセスパターンの秘匿方法およびプログラム
JP2013246678A (ja) * 2012-05-28 2013-12-09 Kddi Corp 記憶装置、記憶媒体、アクセスパターンの秘匿方法およびプログラム
JP2013250644A (ja) * 2012-05-30 2013-12-12 Honda Elesys Co Ltd メモリアクセス装置、メモリアクセス方法、及びプログラム

Similar Documents

Publication Publication Date Title
US7454017B2 (en) Information processing unit
US5995623A (en) Information processing apparatus with a software protecting function
US6691921B2 (en) Information processing device
KR100445406B1 (ko) 데이터 암호화 장치 및 그 방법
US10313128B2 (en) Address-dependent key generator by XOR tree
US7395165B2 (en) Circuit arrangement with non-volatile memory module and method of en-/decrypting data in the non-volatile memory module
JP4317607B2 (ja) 情報処理装置、耐タンパ処理装置
JP2002328845A (ja) 半導体集積回路及びicカードのセキュリティー保護方法
US8045712B2 (en) Stream ciphering of the content of a memory external to a processor
JP4199937B2 (ja) 耐タンパー暗号処理方法
KR20070117172A (ko) 스마트 카드 및 그것의 데이터 보안 방법
JP2001005731A (ja) 情報処理装置、カード部材および情報処理システム
US8321691B2 (en) EMA protection of a calculation by an electronic circuit
US20170046280A1 (en) Data processing device and method for protecting a data processing device against attacks
US10389530B2 (en) Secure method for processing content stored within a component, and corresponding component
JP3844116B2 (ja) 暗号化・復号化装置とicカード
JP2005149262A (ja) 情報処理装置
JP2008181225A (ja) Icカード
JP2004126841A (ja) プログラム実装方法
JPWO2005027403A1 (ja) 情報処理装置
JP2005223477A (ja) 耐タンパー情報処理装置
JP4664655B2 (ja) 情報処理装置、および、そのアドレス制御方法
US20190384894A1 (en) Intrinsic authentication of program code
JP4003723B2 (ja) 情報処理装置、耐タンパ処理装置
JP2004259287A (ja) 情報処理装置、カード部材および情報処理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060707

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060707

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091222

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100615