(57)【要約】【課題】悪意あるアタッカーが、プログラムカウンタの変化系列の違いによって、消費電力パターンの変化を観察することによって暗号における秘密鍵を推定する攻撃をおこなうことを防止する。【解決手段】ＣＰＵと記憶装置を備える情報処理装置において、プログラムカウンタの更新に用いられるアドレス変位値を格納するレジスタの値を、任意の値αによってマスクする。このマスクしたアドレス変位値に従って、プログラムカウンタの値を順次更新する。また、アドレスを受信する側、すなわち記憶装置側にアドレス逆変換装置を備え、マスクされたアドレスを逆変換することで、対応するアドレスを得て、ＣＰＵが記憶装置へのアクセスをおこなえるようにする。【選択図】        図１
2006155140.tif 000002
【特許請求の範囲】
【請求項１】
プログラムカウンタを有する中央処理装置と前記中央処理装置からアクセスされる記憶装置とを備える情報処理装置において、
さらに、アドレス変位値レジスタを有するアドレス変位値変換部とアドレス逆変換部とを備え、
前記アドレス変位値変換部は、前記アドレス変位値レジスタに格納された値を暗号化して、その暗号化した値により前記プログラムカウンタを順次更新して、
前記プログラムカウンタの値をバスを介して前記アドレス逆変換部に転送し、
前記アドレス逆変換部は、転送されてくる前記プログラムカウンタの値を復号化して、前記中央処理装置が前記記憶装置にアクセスするためのアドレスを求めることを特徴とする情報処理装置。
【請求項２】
前記アドレス変位値変換装置は、任意値生成器を備え、前記アドレス変位値レジスタの値は、前記アドレス変位値レジスタの初期値と前記任意値生成器が生成した値とを演算した値であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記任意値生成器が生成する値は、真正乱数または擬似乱数であることを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記アドレス逆変換部が、前記プログラムカウンタを復号化するための値を前記バスを介して転送することを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記アドレス逆変換部が、前記プログラムカウンタを復号化するための値を転送するための専用のバスを有することを特徴とする請求項１記載の情報処理装置。
【請求項６】
前記アドレス変位値レジスタとマスク値を乗算した数が、前記プログラムカウンタを更新する増加値であって、
前記マスク値の元数２ｎの有限環における逆元を求めて、その逆元により前記アドレス逆変換部が、転送されてくる前記プログラムカウンタの復号化をおこなうことを特徴とする請求項１記載の情報処理装置。
【請求項７】
プログラムカウンタを有する中央処理装置と前記中央処理装置からアクセスされる記憶装置とを備える情報処理装置のアドレス制御方法において、
前記情報処理装置は、さらに、アドレス変位値レジスタを有するアドレス変位値変換部とアドレス逆変換部と任意値生成器とを備え、
前記アドレス変位値レジスタに値を設定する手順と、
前記任意値生成器が、真正乱数または擬似乱数により生成されるマスク値を生成する手順と、
前記アドレス変位値変換部が、前記アドレス変位値レジスタの値と前記マスク値を演算する手順と、
前記アドレス変位値レジスタの値と前記マスク値を演算した値によって、前記プログラムカウンタを更新する手順と、
前記プログラムカウンタを復号化するために必要な値を、前記マスク値に基づき求める手順と、
前記プログラムカウンタを復号化するために必要な値をバスを介して前記アドレス逆変換部に転送する手順と、
前記プログラムカウンタの値をバスを介して前記アドレス逆変換部に転送する手順と、
前記アドレス逆変換部が、前記プログラムカウンタを復号化するために必要な値に基づき転送されてくる前記プログラムカウンタの値を復号化してアドレスを求める手順と、
前記復号化されたアドレスにより、前記中央処理装置が前記記憶装置にアクセスする手順とを有することを特徴とする情報処理装置のアドレス制御方法。
【請求項８】
プログラムカウンタを有する中央処理装置と前記中央処理装置からアクセスされる記憶装置とを備える情報処理装置のアドレス制御方法において、
前記情報処理装置は、さらに、アドレス変位値レジスタを有するアドレス変位値変換部とアドレス逆変換部と任意値生成器とを備え、
前記アドレス変位値レジスタに値ｄを設定する手順と、
前記任意値生成器が、真正乱数または擬似乱数により生成されるマスク値αを生成する手順と、
前記アドレス変位値変換部が、前記アドレス変位値レジスタの値ｄと前記マスク値αとの乗算値ｄ×αを演算する手順と、
前記アドレス変位値レジスタｄの値と前記マスク値αとの乗算値ｄ×αにより前記プログラムカウンタをインクリメントする手順と、
前記プログラムカウンタを復号化するために必要な値として、前記マスク値αの元数２ｎの有限環における逆元βを求める手順と、
前記プログラムカウンタを復号化するために必要な値βをバスを介して前記アドレス逆変換部に転送する手順と、
前記アドレス逆変換部が、前記プログラムカウンタを復号化するために必要な値βに基づき転送されてくる前記プログラムカウンタの値を復号化してアドレスを求める手順と、
前記復号化されたアドレスにより、前記中央処理装置が前記記憶装置にアクセスする手順とを有することを特徴とする情報処理装置のアドレス制御方法。
【請求項９】
前記アドレス変位値レジスタに値を設定する手順を、前記中央処理装置がプログラムを開始する前におこなうことを特徴とする請求項７記載の情報処理装置のアドレス制御方法。
【請求項１０】
前記任意値生成器がマスク値を生成する手順を、前記中央処理装置が動作中の任意の時点でおこなうことを特徴とする請求項７記載の情報処理装置のアドレス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および、そのアドレス制御方法に係り、情報記憶用のメモリとそのメモリへのアクセス機能を備えた情報処理装置であって、スマートカードに代表される、処理データの秘匿性が重要な耐タンパー情報処理装置に用いて好適な情報処理装置、および、そのアドレス制御方法に関する。
【背景技術】
【０００２】
近年、メモリを内蔵したマイクロプロセッサ（マイクロコンピュータ）をＩＣカードなどに埋め込み、個人情報を利用できるようにして、生活の様々な場面で利用できるようにする情報処理装置が注目を集めている。
【０００３】
以下、このような情報処理装置に関連する従来の技術として、ＣＰＵとメモリマネージメントユニットについて述べる。
【０００４】
中央処理装置（ＣＰＵ）は、命令コードに従い所定の操作をおこなう演算装置である。一般的なＣＰＵは、論理演算・算術演算・比較演算・分岐処理から構成される命令コード群を処理することができる。命令コードはメモリに保存されており、ＣＰＵが保持しているプログラムカウンタ（ＰＣ）には、次に実行するべき命令コードが格納されているアドレスが記憶されている。一度に読み込まれる命令コードのサイズをＳとすれば、ＰＣには、一つの命令コードを処理するごとに、Ｓが加算される。Ｓは、処理の簡略化による高速化のために、一定値である場合が多い。分岐処理がおこなわれる場合には、ＰＣには分岐先までの相対距離が加算または減算されるか、分岐先の絶対アドレスが設定される。
【０００５】
ＣＰＵとメモリを備えるマイクロコンピュータの多くは、メモリマネージメントユニット（ＭＭＵ）と呼ばれるコントローラーを備えている。ＭＭＵの主な機能は、アドレス変換とメモリ保護である。アドレス変換とは、ＣＰＵから与えられた論理アドレスを（メモリの実体である）物理アドレスに変換することである。メモリ保護とは、論理アドレスごとに（または、複数の論理アドレスをまとめて１ブロックとし、全論理アドレス空間をいくつかのブロックに分割した後に、各ブロックごとに）読み書きの可否を設定して、ＯＳなどのシステムが使用する領域がユーザープログラムから侵害されないように保護することである。
【０００６】
なお、ＣＰＵがアクセス可能なアドレス領域は、ＣＰＵが備えるアドレス線のビット長によって決まる。３２ビットＣＰＵであれば、アドレス線のビット長も３２ビットであることが多い。３２ビットで表現できるアドレスの数は、（232＝）約４３億通りである。つまり、１アドレスにつき１バイトのデータを格納すると考えれば、３２ビットＣＰＵは４ギガバイトのメモリ空間にアクセスできる計算になる。しかし、実際に情報処理装置に搭載されているメモリの容量は、ＣＰＵが指定することのできるアドレス空間のサイズと比較して小さいことがほとんどである。例えば、現在のスマートカードのメモリ容量は、１メガバイト未満である。
【０００７】
ところで、クレジットカードなどに利用されるスマートカードは、個人情報がメモリ上に保持されるため、盗用、漏洩などがないように機密保護をすることが最重要課題となる。
【０００８】
悪意あるアタッカーは、海賊行為（タンパー行為）によってスマートカードに保持された情報を読み取ろうとする。このようなアタッカーがスマートカードの情報を読み取る手法として消費電力解析法がある。
【０００９】
消費電力解析法は、暗号処理をＩＣチップ上でおこなう際の消費電力と暗号処理の途中データとの相関を利用して暗号鍵を特定する攻撃法である。より具体的に述べれば、以下の通りである。ＣＭＯＳで構成されているＩＣチップの動作時の消費電力は、ＣＭＯＳスイッチのＯＮ／ＯＦＦ動作数に比例している。よって、ＩＣチップ内部で処理されているデータの論理変化分（ハミング距離）が、消費電力として観測される。暗号アルゴリズムの安全性は、「暗号への入力と出力が得られても秘密鍵がわからない」という形で保証されており、処理途中のデータから秘密鍵がわからないということに関しては保障されていない。実際に、暗号処理途中のデータがわかる場合、暗号の安全性は低下する。消費電力解析法では、暗号処理の途中の消費電力を記録して攻撃に使用する。つまり、消費電力解析法は、暗号処理途中のデータを消費電力すなわちデータのハミング距離という形で観測することで、暗号本来が備える安全性を低下させた上で攻撃をおこなう方法であると言える。
【００１０】
最後に、消費電力解析の防止法に関する、従来の技術とその問題点について述べる。
【００１１】
以下の特許文献１は、消費電力解析への対策方法として、記憶するデータを暗号化することによって、データバスを通過するデータと記憶データとの相関を小さくすることが有効であるとし、対策方式を開示している。この方式の特徴は、あるデータＤをある物理アドレスＰＡに記録する場合に、いずれも物理アドレスＰＡを指し示す複数の異なる論理アドレスの集合Ｌ＝｛ＬＡ'［Ｉ］：  Ｉ＝０，１，…，ｎ−１｝を用意し、Ｌのうちの一つＬＡ'［Ｉ］を外部から予測できない方法で選択し、さらに選択したＬＡ'［Ｉ］に依存してデータＤをＤ'［Ｉ］に変形することである。これによって、同一の物理アドレスにデータＤを記憶する場合でも、記憶データ値を外部から予測できない値に変化させることができる。
【００１２】
しかしながら、この方式には、書き込みの際と読み出しの際には同一の論理アドレスＬＡ'［Ｉ］を使用する必要があるという、制限が存在する。ＬＡ'［Ｉ］が書き込みの際と読み出しの際で同一であれば、ＬＡ'［Ｉ］と消費電流の関係を利用して、例えば「少なくとも同じデータＤがどのタイミングで使用されているか」など、データＤに関する情報を得ることができる。さらには、この明細書中には直接的には言及がないものの、書き込みと読み出し時で使用する論理アドレスが同一である必要があるため、書き込み時に用いた論理アドレスを、読み出し時に備えて記憶しておく必要がある。このことは、書き込み時に用いた論理アドレスを記憶するための特別なメモリを備える必要があることを意味している。スマートカードのような小型の装置では、搭載可能なメモリ容量が制限されるため、特別なメモリを必要としない対策方式が望ましい。
【００１３】
また、以下の特許文献２は、メモリ装置の連続するアドレスに記録されているデータを暗号処理用演算ユニット内部のレジスタに転送する際の、論理アドレス値依存の消費電力パターンを隠蔽する方法を開示している。特許文献２の段落番号００５９、００６０には、ｎは読み出すデータのサイズとするとき、各データが格納されている連続する論理アドレス群ＬＡ［Ｉ］（Ｉ∈｛０，…，ｎ−１｝）を、オフセットＬＯと読み出しバイト数ＬＤの二つで表現する技術が開示されている。例示のため、論理アドレスは１６進数で表記した１６ビットとし、各アドレスには１バイトのデータが格納されており、データは１バイトごとに読み出されるとする。論理アドレス０１００から、１６バイトを読み出す場合、一般的なマイコンでは、０１００，０１０１，０１０２，…，１００Ｆが順番に現れることになるが、特許文献２の情報処理装置では、アドレスバスに現れるデータが，読み出し開始アドレスである０１００と読み出しサイズである１６をあらわす００１０の２つとなる。さらに、これらは事前にメモリ装置と暗号処理用演算ユニットで共有されている値でマスクされており、例えば、マスク値をＦ８Ｂ２であるとするならば、アドレスバスに現れるのは、読み出し開始アドレスである（０１００＋Ｆ８Ｂ２＝）Ｆ９Ｂ２または（０１００−Ｆ８Ｂ２＝）０８４Ｅと、読み出しサイズである（００１０＋Ｆ８Ｂ２＝）Ｆ８Ｃ２または（００１０−Ｆ８Ｂ２＝）０７５Ｅとなる。また、本来ならば１６個のアドレスがアドレスバス現れるところを２つのデータの送信で情報の伝達が完了したことを隠蔽するために、残りの１４個のアドレスが現れるべきタイミングで、暗号処理用演算ユニットは乱数をアドレスバスを通じて送信し、受信側であるメモリ装置はそれらを無視するように構成している。このため、アタッカーは、アドレスバスの消費電力を観察しても、乱数を観察しているに過ぎないため、どのアドレスからデータが読まれたのかを知ることができない。
【００１４】
【特許文献１】特開２００２−３２８８４４号公報
【特許文献２】特開２００１−１９５５５５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上述の消費電力解析法により、アタッカーは、ＣＰＵ内部が保持しているプログラムカウンタの変化系列から、プログラムの処理フローを推測することができる。
【００１６】
以下では、その消費電力解析法によるプログラムの処理フローの解析例について説明する。
【００１７】
プログラムカウンタの変化形列において、連続するプログラムカウンタ値間のハミング距離の系列に注目する。ハミング距離の系列が消費電力として観測可能であることは、先に述べたとおりである。ここで、ハミング距離は、同じ長さのビット列を有するパターンにおいて、その値が変化するビット位置の個数として定義することができる。例えば、ビット列表現で、１１＝（１，０，１，１）と１２＝（１，１，０，０）と表される場合は、第２〜第４ビット目の三つが変化しているのでハミング距離は、３となる。
【００１８】
プログラムカウンタの変化系列は、プログラムの処理フローに応じて変化する。たとえば、条件分岐命令によって、系列１もしくは系列２に分岐する場合を考える。論理アドレスは１６進数で表記した１６ビットとし、プログラムカウンタは２ずつ進むとする。条件分岐命令が、論理アドレス００００に設置されており、系列１は００１０から系列２は００１Ａから開始する。このとき、処理系列１のプログラムカウンタの変化は、
００００→００１０→００１２→００１４→００１６→００１８→００１Ａ→００１Ｃ→００１Ｅ→００２０→  …
となるのに対して、処理系列２のプログラムカウンタの変化は、
００００→００１Ａ→００１Ｃ→００１Ｅ→００２０→００２２→００２４→００２６→００２８→００２Ａ→    …
となる。
【００１９】
それぞれのハミング距離の系列は、系列１では、
１→１→２→１→３→１→２→１→５→  …
であるのに対して、系列２では、
３→２→１→５→１→２→１→３→１→  …
となり、明らかに消費電力の系列が異なることがわかる。このことから、アタッカーは分岐条件が成立したかどうかを知ることができる。
【００２０】
この解析によって、電子商取引等で用いられるＲＳＡ暗号の解読をおこなうことができる。ＲＳＡ暗号の中核となる演算は、yを演算の入力値、Nを公開鍵、xを秘密鍵とした、べき乗剰余演算yx mod Nである。攻撃者の目的は、秘密鍵xを知ることである。べき乗剰余演算の一般的な処理方法は、バイナリー法である。Len(x)でxのビット長を、x[i]でxを二進数展開したときのMSBからi+1番目の1ビットを表し、バイナリー法のアルゴリズムをＣ言語風に記述すると以下のように表すことができる。
V = 1;
for (i = 0; i < Len(x); i++){
V = V2 mod N;
if (x[i] == 1){             ……(*)
V = V×y mod N;
}
}
return V;
本アルゴリズムでは、(*)における条件分岐の成立・不成立が、秘密鍵xの各ビットに依存している。すなわち、条件分岐の成立・不成立が判明すれば、秘密鍵を特定することができる。本アルゴリズムでは、分岐が成立した場合にVにyを乗じる処理が行われる。この際のＰＣ値の変化系列は明らかに分岐が不成立の場合と異なるため、上述した理由によって、秘密鍵を特定することができるのである。
【００２１】
上述の特許文献１に開示された技術は、メモリセルへのアクセス時の論理アドレスが複数種類存在するため、メモリ内部における消費電力解析に対する対策として機能する。しかしながら、これら複数種類の論理アドレスの生成源となっている値は、ＣＰＵ内部で物理アドレスと一対一に対応する値でプログラムカウンタに保持されているため、ＣＰＵ内部のプログラムカウンタに対する消費電力解析への対策としては機能しない。また、特許文献２に開示された技術についても同様であり、アドレスバスにおける消費電力解析に対する対策としては機能するが、ＣＰＵ内部では論理アドレスと物理アドレスがただ一通りに対応付けられて処理されているため、 ＣＰＵ内部に対する消費電力解析への対策としては機能しない。
【００２２】
本発明は、上記問題点を解決するためになされたもので、その目的は、ＩＣチップの中でも特にアドレスバスおよびＣＰＵ内部のプログラムカウンタおよびその関連するレジスタ等における消費電力を解析することによる内部データの推定や特定をおこなう試みを困難にすることによって、安全性の高い情報処理装置およびそのアドレス制御方法を提供することにある。
【課題を解決するための手段】
【００２３】
本発明の情報処理装置は、プログラムカウンタの更新に用いられるアドレス変位値を格納するレジスタの値ｄを任意の値αによってマスクする。このマスクしたアドレス変位値に従って、プログラムカウンタの値を順次更新する。また、本発明の情報処理装置は、アドレスを受信する側、すなわち記憶装置側にアドレス逆変換装置を備えており、マスクされたアドレスを逆変換することで、対応するアドレスを得て、ＣＰＵがそのアドレスによりメモリセルへのアクセスをおこなう。なお、ここで「マスク」とは、アタッカーが予測できない値を用いて、保護対象の値を予測不可能な値に変換することを意味する。
【００２４】
このようにすれば、ＣＰＵが使用するプログラムカウンタの値が、外部から予測できない値αによってマスクされているため、ＣＰＵの内部やアドレスバスにおいて、プログラムカウンタの変化系列に依存した消費電力を解析したとしても、プログラムの処理フローやメモリアクセスに関する、有用な情報を得ることができない。
【００２５】
なお、アドレス変位値とは、以下の値のことを意味している。マイコン内部でプログラム処理が進行する場合、命令コードのサイズ分だけメモリ装置からデータを読み出し、次の命令コード実行に備える処理がおこなわれる。このときの読み出しデータのサイズとしては、一般的に２バイトないし４バイトといった固定値が用いられる。この固定値のことを、ここでは、アドレス変位値と呼ぶ。アドレス変位値は、多くの場合一通りに設定されているが、必ずしも一通りである必要は無く、先行する命令コードに依存して、多様な値を取る場合がある。ただし、これら複数種類のアドレス変位値すべてについてマスクされたアドレス変位値を持つように構成すれば同様の効果を得ることができるため、ここでは、アドレス変位値として、ただひとつの固定値を用いる場合について述べる。
【００２６】
マスク処理は、任意の値αとの排他的論理和や加減算、乗算などの算術演算、αをパラメータとする順列やαを鍵として用いる暗号化処理である場合などがある。
【００２７】
さらに、αとして用いる値は、事前に定義した値の系列を任意の順番で使用する場合や、物理的な機構による真正乱数生成器あるいはソフトウェアにより実現される擬似乱数生成器の出力を用いる場合も想定される。
【発明の効果】
【００２８】
本発明によれば、ＩＣチップの中でも特にアドレスバスおよびＣＰＵ内部のプログラムカウンタおよびその関連するレジスタ等における消費電力を解析することによる内部データの推定や特定をおこなう試みを困難にすることによって、安全性の高い情報処理装置およびそのアドレス制御方法を提供することができる。
【発明を実施するための最良の形態】
【００２９】
〔マイクロコンピュータの構成とＩＣカードへの実装〕
先ず、図２および図３を用いて本発明に係るマイクロコンピュータとＩＣカードへの実装の様子について説明する。
図２は、本発明に係るマイクロコンピュータをＩＣカードに実装した様子を示す図である。
図３は、本発明に係るマイクロコンピュータの基本構成を示す構成図である。
【００３０】
本発明に係るマイクロコンピュータは、図２に示されるように、この半導体装置のチップをプラスチックカード上に実装した接触型ＩＣカードに用いることができる。
【００３１】
このマイクロコンピュータの本体は、カードの中央の横に配置されたＣＯＴと呼ばれるパッケージ形態のＩＣチップ２０２である。
【００３２】
ＩＣカード２０１は、図３にも図示されているように、Ｖｃｃ（供給電源）、ＧＮＤ（グランド）、ＲＳＴ（リセット）、Ｉ／Ｏ（入出力）およびＣＬＫ（クロック）の端子を持ち、カード上のチップはこれらの信号を外部から、例えば、端末機から、供給されることによって稼動する。その場合に用いる端末機自体は基本的に一般のカード・システムと同じ仕様のものでよい。
【００３３】
マイクロコンピュータは、図３に示されるように、中央処理装置ＣＰＵ、記憶装置である読み出し専用メモリＲＯＭ、書き換え可能不揮発性メモリＥＥＰＲＯＭおよび書き換え可能揮発性メモリＲＡＭ、コプロセッサＣＰＲ、そして各部の情報のやりとりをおこなうための入出力ポートＩ／Ｏ、およびそれらを結ぶ信号線としてアドレスバス３０１やデータバス３０２などを有している。
【００３４】
コプロセッサＣＰＲは、内部に独自の記憶装置ＣＲＡＭを保持することもある。中央処理装置ＣＰＵは、論理演算や算術演算などをおこなう装置であり、記憶装置は、プログラムやデータを格納する装置である。クロック生成器ＣＬＫＧは、図２に示されるＩＣチップの端子２０２を経由して、ＩＣチップ外部からクロック信号の供給を受け、そのクロック信号に同期した内部システムクロック信号を生成し、ＣＰＵなどの内部装置に供給する。システムコントローラＳＹＳＣＲは、ＣＰＵやバス信号などの制御をおこなう装置であり、乱数生成器ＲＮＧやタイマーＴＩＭ、セキュリティロジックＳＥＣＬなどのコントロールをおこなう。
【００３５】
セキュリティロジックＳＥＣＬは、アタッカーからの消費電力解析をおこなわせないようにするため、アドレス情報を暗号化するための仕組みであり、これは後に詳説する。
【００３６】
なお、ＳＹＳＣＲ，ＣＰＵ，ＴＩＭ，ＳＥＣＬなどをまとめてＣＰＵと呼ぶ場合もある。
【００３７】
記憶装置は、例えばＲＯＭ (Read Only Memory)やＲＡＭ(Random Access Memory)，ＥＥＰＲＯＭ(Electrically Erasable Programmable Read Only Memory)，ＦＲＡＭ(Ferromagnetic Random Access Memory)などを用いて構成される。ＲＯＭは、内容が固定された変更できないメモリであり、主にプログラムを格納するメモリである。ＲＡＭは自由に書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容が消失する。すなわち、デバイスへの電源供給が中断されると、ＲＡＭの内容は、保持できなくなるいわゆる揮発性のメモリである。EEPROM、 FRAMは、電源の供給が中断されてもその内容を保持することができるいわゆる不揮発性メモリである。これらの組み合わせの違いは必ずしも本発明の本質とは関係しないため、図３には、すべての種類のメモリ構成について記述していない。ＲＯＭのみからなる情報処理装置や磁気記憶装置を持つ情報処理装置などについても、同様に構成することができることはもとよりである。
【００３８】
入出力ポートＩ／Ｏは、ＩＣチップ内部と外部との間でデータ通信をおこなうためのポートである。アドレスバス３０１は、アクセス先の記憶装置のアドレスを転送するバスであり、データバス３０２は、当該アドレスから読み出されたデータ、あるいは、当該アドレスに書き込まれるべきデータの転送に用いられるバスである。
【００３９】
ＣＰＵは、プログラムカウンタＰＣを内部に持ち、ＰＣが指し示すアドレスに記憶されている命令コードおよびデータを読み出して処理をおこなう。ＰＣは通常、一定値分だけインクリメントするという方法で更新される。すなわち、ＰＣが指し示すアドレスから命令コードを読み出した後に、一定のアドレス変位値ｄだけ先のアドレスを指すようにＰＣを更新し（|ＰＣ|＝|ＰＣ|＋ｄ、ここで|ＰＣ|はＰＣの内部に格納される値）、引き続きＰＣが指し示すアドレスから命令コードを読み出すという処理を繰り返すことになる。ここで、一定のアドレス変位値とは、多くの場合、２であることが多い。これは、８ビットＣＰＵの命令コードが１バイトのインストラクションコードと１バイトのオペランドの２バイトで構成されることが多いためである。
【００４０】
〔実施形態１〕
以下、図１、図４ないし図９を用いて本発明に係る第一の実施形態について説明する。
【００４１】
先ず、図１を用いて本発明に係る情報処理装置の構成について説明する。
図１は、本発明の第一の実施形態に係る情報処理装置の構成図である。
【００４２】
本発明の情報処理装置は、上述のように、セキュリティロジックＳＥＣＬ部を設け、悪意のアタッカーが情報処理装置の消費電力を解析して、情報を読み取るのを防ぐために、アドレス情報をセキュリティロジックＳＥＣＬ部により暗号化してメモリ側に転送し、メモリ側で復号しＣＰＵがメモリにアクセスするためのアドレスを取り出すようにしたものである。
【００４３】
セキュリティロジックＳＥＣＬ部は、アドレス変換装置ＡＴＥからなり、内部にインクリメントサイズレジスタＩＳＲを有する。
【００４４】
インクリメントサイズレジスタＩＳＲは、ＰＣのインクリメントサイズｄを記憶する。
【００４５】
また、アドレス逆変換装置ＡＴＤが記憶装置との間にあるアドレスバス１０１に接続されており、ＡＴＤは、内部にアドレス逆変換用の値を記憶するレジスタＡＴＲを有している。
【００４６】
この情報処理装置では、ＩＣチップが起動されプログラムを実行する前に、ＡＴＥで生成するマスク値αによって、ＩＳＲ値ｄをマスクする。そして、ＡＴＥでＩＳＲ値ｄをマスクした値によりＡＴＥ内部のＩＳＲは書き換えられる。
【００４７】
そして、ＡＴＥは、マスク値αに基づき逆変換に必要な値βを生成し、ＡＴＤに送信する。その結果、ＡＴＤはβをＡＴＲに保持する。
【００４８】
以上の初期的な処理をおこなった後は、ＰＣは通常通り、ＡＴＥにおいて、ＩＳＲ値に従って順次更新される。ＣＰＵがＰＣ値の指し示すアドレスＬＡ'にアクセスする際は、アドレスバスを通じて転送されたＬＡ'をＡＴＤが受け取り、ＡＴＤはＡＴＲ値βを用いてＬＡ'の逆変換をおこない、ＣＰＵがメモリにアクセスする際のアドレスに相当するＬＡを得る。その上で、ＣＰＵは、そのＬＡに対応する実際のメモリセルへのアクセスをおこなう。このアクセスが読み出し動作の場合は、読み出されたデータがデータバス３０２を通じてＣＰＵに転送され、書き込み動作の場合は、書き込むべきデータがＣＰＵからデータバスを通じて記憶装置に転送される。
【００４９】
これらの処理を、より詳細に述べれば、次のようになる。ＡＴＥとＣＰＵは、システムコントローラＳＹＳＣＲから初期化信号ＩＮＩを受ける。ＳＹＳＣＲがＩＮＩを発行するのは、ＩＣチップの外部からリセット信号ＲＳＴを受けた場合や、ＣＰＵが命令コードとしてリセットを指示する場合などである。ＩＮＩを受けたＡＴＥは、乱数生成器ＲＮＧを用いて、あるマスク値αを選び、ある関数ｆ（ｘ）を用いて、β＝ｆ（α）を計算する。このβがアドレスの復号化のために用いられる値である。
【００５０】
そして、インクリメントサイズレジスタＩＳＲに初期値ｄが保持されているとすると、その初期値ｄとマスク値αと演算された値により、インクリメントサイズレジスタＩＳＲを書き換える。なお、ＲＮＧは、ハードウェア機構で実現される真正乱数生成器である場合もあり、ソフトウェアにより実現される擬似乱数生成器である場合もある。ＡＴＥはこのβをＡＴＤに送り、ＡＴＤはβをＡＴＲに記憶する。
【００５１】
ＣＰＵはアクセスするメモリアドレスを格納するプログラムカウンタＰＣを保持しており、この間に、ＣＰＵはＰＣを０に初期化する。以上が初期化処理である。
【００５２】
それ以降の動作は以下の通りである。ＣＰＵはＡＴＥを用いて、メモリから命令コードを読み出すごとに、|ＰＣ|'をＩＳＲ分だけ増加させる。すなわち、|ＰＣ|'＝|ＰＣ|'＋|ＩＳＲ|とする。ここで、|ＩＳＲ|は、ＩＳＲの初期値ｄをマスク値αによりマスクした値である。また、ここでの|ＰＣ|'の記号は、ＰＣの値をマスクした変位値により更新していったプログラムカウンタの値であることを示した。
【００５３】
ここで、 |ＰＣ|' ＝ＬＡ'とすると、ＬＡ'がアドレスバスを介してメモリに送られる。メモリ側では、メモリセルにＬＡ'が到達する前に、ＡＴＤがＬＡ'を受け取り、ＡＴＲに保持している先の値βを用いて、ＣＰＵがメモリをアクセスする際のアドレスに相当するＬＡ＝ｇ（ＬＡ'，β）を得る。ここで、ｇ（ｘ，ｙ）は、マスクを除去するための関数である。
【００５４】
上述の一連のアドレスの処理について具体例を述べると示すと以下のようになる。
【００５５】
インクリメントサイズレジスタＩＳＲの初期値ｄが２であるとする。
【００５６】
ｄ＝|ＩＳＲ|＝２        …（式１）
また、マスク値αを１６進表記で、２Ｂ３７とする。
【００５７】
α＝（２Ｂ３７）        …（式２）
最初にＩＳＲの値を更新するときには、ｄとαの積をとる。この値をｄ'とすると、
ｄ'＝|ＩＳＲ|＝ｄ・α＝２×（２Ｂ３７）        …（式３）
である。
【００５８】
βの計算に使用する関数ｆ（ｘ）を、ｆ（ｘ）＝ｘ−１  ｍｏｄ  ２ｎとする。これは、元数が２ｎ場合の有限環における乗法の逆元を求めることに対応している。ここで、ｎはメモリのサイズに対応する適当な整数、例えば、ｎ＝１６とする。すなわち、
α・β≡１  ｍｏｄ  ２１６        …（式４）
（２Ｂ３７）・β≡１  ｍｏｄ  ２１６
である。
【００５９】
ここで、元数が２ｎ場合の有限環は、αがゼロおよび２の倍数のときには逆元を持たないので、αがゼロおよび２の倍数ではないこと、すなわち奇数であることが必要になる。なお、αの生成に真正乱数生成器や擬似乱数生成器を使用する場合、αは１／２の確率で偶数となる。しかしながら、奇数のαを得るためには、αの最下位のビットを無条件に１とするように処理すればよく、ほとんど処理の負荷なくαが奇数であることを保証することができる。
【００６０】
プログラムカウンタの値は、最初は０なので、マスクされたアドレス変位値の整数倍となる。したがって、 ｋを整数として、以下の（式５）が成り立つ
ＬＡ'＝ｋ・ｄ'＝ ｋ・２α        …（式５）
この式５に式４のβをかけると、
ＬＡ＝ＬＡ' ・β＝ｋ・ｄ'・β＝ ｋ・２α・β      …（式６）
≡  ２ｋ  ｍｏｄ  ２ｎ
として、ＬＡを求めることができる。
【００６１】
ここで、逆変換用の関数ｇ（ｘ，ｙ）は、ｇ（ｘ，ｙ）＝ｘ×ｙ  ｍｏｄ  ２ｎとしたことになる。
【００６２】
次に、図４を用いて上記の関数ｆ（ｘ）を用いたＰＣ値のマスクによるハミング距離の影響について説明する。
図４は、ＰＣの変化系列ごとのハミング距離の変化を表したグラフである。
【００６３】
いま、ＰＣ値の変化系列が、
００００→００１０→００１２→００１４→００１６→００１８→００１Ａ→００１Ｃ→００１Ｅ→００２０→  …（系列１）
であるとき、ハミング距離の系列は、
１→１→２→１→３→１→２→１→５→  …
である。
【００６４】
マスク値として２Ｂ３７を用いて、このＰＣ値の系列をマスクした場合、ＰＣ値の変化系列は、以下のように変化する。
【００６５】
００００→Ｂ３７０→０９ＤＥ→６０４Ｃ→Ｂ６ＢＡ→０Ｄ２８→６３９６→ＢＡ０４→１０７２→６６Ｅ０→  …（系列２）
これに対応するハミング距離の系列は、以下の通りである。
【００６６】
８→１０→７→１１→９→１１→８→９→８→  …
一方、別のマスク値Ｄ４Ｃ９を用いた場合、ＰＣ値の変化系列は、以下のように変化する。
【００６７】
００００→４Ｃ９０→Ｆ６２２→９ＦＢ４→４９４６→Ｆ２Ｄ８→９Ｃ６Ａ→４５ＦＣ→ＥＦ８Ｅ→９９２０→  …（系列３）
これに対応するハミング距離の系列は、以下の通りである。
【００６８】
５→９→８→１０→１１→９→９→８→１０→  …
このように、同一のＰＣ値の変化系列も、マスク値によってハミング距離の系列が変化する。図４は、三つの異なるマスク値を用いて、同一のＰＣ値の変化系列をマスクした場合の、ハミング距離の系列を示したものである。マスク値によってハミング距離の系列が異なる挙動となるため、消費電力がハミング距離に比例して現れることから、消費電力を観察しても有用な情報を得ることができないことがわかる
次に、図５および図６を用いて本発明の第一の実施形態に係る情報処理装置のアドレスに関する処理について説明する。
図５は、アドレス変換装置ＡＴＥの構成図である。
図６は、アドレス逆変換装置ＡＴＤの構成図である。
【００６９】
先ず、初期化時の処理手順について述べる。
【００７０】
アドレス変換装置ＡＴＥは、初期化信号ＩＮＩがオンになると、乱数生成器ＲＮＧの出力αがゼロでないことを確認して、αの最下位ビットを１であるときに、アドレス変位値レジスタＩＳＲに、元の値ｄにマスクした値ｄ'をアドレス変位値レジスタＩＳＲに記憶する。ＲＮＧの出力がゼロである場合は、最下位ビットを１をたしたり、再度新しい値を生成したり、ＲＮＧの故障診断などをおこなう。
【００７１】
ＩＳＲの値αはさらに、上記関数ｆ（ｘ）すなわち、逆元計算器ＩＮＶに入力される。ＩＮＶの出力βは、アドレスバスＡＢに送られる。同時に、アドレス逆変換装置ＡＴＤに逆変換に用いる値βの取り込みを促すための信号βＥがオンになる。ＡＴＤでは、βＥがオンであることを受けて、ＡＢからの入力値βを、二出力のうち一方を選択する出力セレクタＳＥＬＯを用いて、アドレス変換値レジスタＡＴＲに取り込む。以上の手順が終了すれば、ＩＮＩはオフになる。
【００７２】
次に、ＰＣの更新とメモリへのアクセスについて述べる。
【００７３】
ＣＰＵは、ＰＣを更新する場合、ＰＣ値をＡＴＥの入力ポートＰＣＩに送る。ＡＴＥは、ＰＣＩから受け取ったＰＣ値にＩＳＲ値を加算して、出力ポートＰＣＯに送る。ＣＰＵは、ＰＣＯからの出力値を新しいＰＣ値として記憶する。
【００７４】
これまでの記法を使うと、|ＰＣ|'＝|ＰＣ|'＋|ＩＳＲ|＝|ＰＣ|'＋ｄ'である。
【００７５】
そして、ＣＰＵは、ＰＣ値である|ＰＣ|'をＡＢを通じて送信する。
【００７６】
ＣＰＵがメモリにアクセスする場合、ＡＴＤはＡＢから|ＰＣ|'を受け取り、βＥがオフであるので、上の具体例では乗算器ＭＵＬを用いてＡＴＲ値βを乗じた結果を出力ポートＰＢに出力する。出力値は、上記で確認したように、マスクされていないＣＰＵがメモリをアクセスするためのアドレスである。
【００７７】
なお、ＩＣチップのリセット時に必ずしもＩＮＩが発行されない場合、ＡＴＲの初期値を１とする。この初期値は、ＡＴＥが用いられない場合の整合性を確保するために必要である。これは、マスクされていないアドレス値に１を乗じても、値が変化しないことを利用した方法であるが、ＡＴＲ値が１の場合は乗算自体をおこなわないようにすれば、処理に必要な時間や電力を削減することができるため、そのように構成することが望ましい。もちろん、ＡＴＤを使用しない場合は、ＡＴＤ部を非活性化してバイパスするように構成することもできる。
【００７８】
以上の処理は、プログラムカウンタを順次、一定のアドレス変位値により更新していく場合の処理であったが、一般的なＣＰＵは、ジャンプ命令に相当する命令を実行することができる。ジャンプ命令とは、あるアドレスから、所定のアドレスにＰＣの値を変化させる命令である。この場合、命令コードには、ジャンプ先のアドレスが含まれる。命令コードは、多くの場合、ＲＯＭなどの書き換え不可能な記憶装置に記録されているため、命令実行時までに、マスク値に応じた、ジャンプ先アドレスの変換をおこなう必要がある。これまで述べたきたアドレス変換は、ＣＰＵが命令コードをジャンプ命令であると判断した場合に、マスク値をジャンプ先アドレスに乗じることで容易におこなうことができる。ＣＰＵに命令コードキャッシュを備えれば、命令実行時間のペナルティなしで、このアドレス変換をおこなうことができる。
【００７９】
また、アドレス変換装置およびアドレス逆変換装置が適宜演算処理をおこなう場合について説明してきたが、初期化時にアドレス変換および逆変換テーブルを作成し、アドレス変換処理および逆変換処理を、テーブル参照によりおこなう構成にしてもよい。このような構成にすることにより、処理速度の高速化を図ることができる。アドレス変換および逆変換テーブルは、揮発性メモリに格納し、チップリセットごとに再生成する。マスク値の更新が必要ない場合は、アドレス変換および逆変換テーブルを一度だけ書き込みが可能なメモリーに格納するように構成してもよい。少なくとも異なるＩＣチップで互いに相関を持たないマスク値を用いるようにすれば、悪意のあるアタッカーが一つのＩＣチップを解析したとしても、他のＩＣチップの解析に対する手がかりが得られないようにすることができる。
【００８０】
〔実施形態２〕
以下、図７ないし図９を用いて本発明に係る第二の実施形態について説明する。
図７は、アドレス変換装置ＡＴＥＵの構成図である。
図８は、アドレス逆変換装置ＡＴＤＵの構成図である。
図９は、本発明の第二の実施形態に係る情報処理装置の信号線におけるデータの流れを表すタイミングチャートである。
【００８１】
第一の実施形態では、マスク値は、乱数生成器ＲＮＧにより発生させていたが、いったんマスク値αが定まると、ＣＰＵのメモリのアドレスの連続性を保つため、ＣＰＵ自体をリセットしたり、再起動するまで変更することができなかった。
【００８２】
本実施形態は、マスク値を任意の時点で変更したり、任意の時点でアドレス変換を開始することのできる情報処理装置に関するものである。
【００８３】
本実施形態のアドレス変換装置とアドレス逆変換装置は、マスク値の更新をおこなう機能をサポートしているので、それぞれアドレス変換装置ＡＴＥＵとアドレス逆変換装置ＡＴＤＵと記載することにする。
【００８４】
マスク値の更新手順は、以下の通りである。
【００８５】
なお、第二の実施形態でも、マスク値の逆変換関数を、ｆ（ｘ）＝ｘ−１  ｍｏｄ  ２ｎであるものとして説明する。
【００８６】
図７に示されるＡＴＥＵは、マスク値更新信号ＵＰＤがオンになると、ＲＮＧを用いて任意の値α^を生成し、テンポラリレジスタＴＲに保存する。さらに二入力から一方を選択して出力する入力セレクタＳＥＬＩによって、ＴＲ値がＩＮＶに入力される。その出力値β^＝α^−１  ｍｏｄ  ２ｎはそのままＡＢを通じてＡＴＤＵに送信される。
【００８７】
ＴＲが更新されたタイミングで、ＴＲ値はＭＵＬを用いて、現在のＩＳＲ値に乗じられ、結果は再びＩＳＲに記憶される。ＴＲ値はさらに、ＰＣＩから入力された|ＰＣ|'にも乗じられ、その結果はＰＣＯを通じて出力される。すなわち、|ＩＳＲ|＝|ＩＳＲ|×α^  ｍｏｄ  ２ｎおよび|ＰＣ|'＝|ＰＣ|'×α^  ｍｏｄ  ２ｎとする。
【００８８】
ＵＰＤがオンであることから、更新を指示する信号ＵＥと、ＡＢの値の取り込みを促すβＥがオンとなる。ＡＴＤは、βＥがオンであるためＡＢの値をＴＲに取り込み、ＵＥがオンであるため、ＴＲ値β^をＡＴＲ値に乗じる。その結果はＡＴＲに記憶される。すなわち、|ＡＴＲ|＝|ＡＴＲ|×β^  ｍｏｄ  ２ｎとなる。この結果、ＩＳＲには、α×α^  ｍｏｄ  ２ｎが記憶されており、ＡＴＲには、α−１×α^−１  ｍｏｄ  ２ｎ（＝（α×α^）−１  ｍｏｄ  ２ｎ）が記憶される。また、|ＰＣ|'はマスクされていない値のα×α^  ｍｏｄ  ２ｎ倍数になる。すなわち、ＣＰＵから送信されるアクセス先アドレスは、α×α^  ｍｏｄ  ２ｎが乗じられた値となっており、ＡＴＲを乗じることで、マスクを除去することができる。
【００８９】
ある時点でマスク処理を開始する場合、図７と図８に示される各信号線の関係を示すと図９に示されるようになる。
【００９０】
￣ＡＥ（ＡＥオーバーライン）は、アドレスを示す値ＬＡがアドレスバスＡＢを通じて得られることを意味するＡＥの論理反転値であるので、￣ＡＥがオフ（論理０）であれば、ＬＡがＡＢを通じて得られる状態であることを意味する。本実施形態では、ＡＴＥＵからＡＴＤＵに逆変換用の値βを転送する際に、アドレスバスを共用することでセキュリティを高めているため、ＬＡとβを同時に転送することができない。よって、￣ＡＥがオフであるときは、βＥはオフである必要があり、βＥがオンであるときは、￣ＡＥはオンである必要がある。本例では、￣ＡＥをオフにして、ＣＰＵはアドレスＬＡ［１］をアドレスバスＡＢに送出する。同時にＡＴＤＵでは、ＡＴＤＵ内部のＡＴＲに記憶している値である１を用いて、ＡＢから得たアドレスＬＡ［１］を逆変換し、ＣＰＵがメモリにアクセスするアドレスＬＡ［１］を得る。ＬＡ［１］は、アドレスバスＰＢに送られ、メモリセルへのアクセスがおこなわれる。すでに述べたように、ＡＴＲ値が１である場合は、逆変換は自分自身への恒等変換であるから、ＡＴＤＵによる逆変換の結果は入力と同じ値となる。すなわち、この場合は、処理自体をバイパスする構成にすることも可能である。
【００９１】
引き続いて、ＡＴＥＵは更新信号ＵＰＤがオンになると、内部で任意の値αを生成し、さらにαからβを生成する。βはアドレスバスＡＢを通じて送出される。このとき、ＵＥとβＥもオンになり、ＡＴＤＵはβをＡＢから取り込んで、ＡＴＲ値に乗じることでＡＴＲ値の更新を行う。更新が終了するタイミングで、ＵＰＤはオフになり、その結果、ＵＥとβＥもオフとなる。これ以降のタイミングでは、ＣＰＵが使用するプログラムカウンタ値はマスクされた値になるため、次のメモリアクセスでＡＢに現れるのは、マスクされた値ＬＡ'［２］である。￣ＡＥがオフであるから、ＡＴＤＵは、ＬＡ'［２］をアドレスとして取り込み、ＡＴＲ値を乗じること逆変換し、ＣＰＵがメモリにアクセスするアドレスＬＡ［２］を得る。以下、同様にしてプログラムカウンタの値がマスクされたまま、処理が継続される。
【００９２】
マスク値の更新は、任意のタイミングでおこなうことができるが、べき乗剰余演算時のループにおける分岐と非分岐の差異を隠蔽する場合には、ループ中のある分岐処理から次の分岐処理までの間におこなうことが望ましい。例えば、分岐命令を実行した直後にマスク値の更新をおこなうように構成すればよい。また、消費電力を測定する際のＳＮ比によっては、数回の分岐処理を観測しただけでは、分岐の有無を判断できない場合があることを鑑みれば、かならずしも分岐命令処理ごとにマスク値を更新する必要は無く、マスク値更新用の命令コードを用意して、ユーザーが任意のタイミングで実施することができるように構成してもよい。さらには、ＲＮＧを用いて外部から予測できないタイミングで実施するようにしてもよい。
【００９３】
処理の途中で、もはやセキュリティを確保する必要がなくなった場合など、ＰＣ値のマスクが不要となった場合、アドレス変換装置ＡＴＥＵは、アドレス逆変換装置ＡＴＤＵからＡＴＲ値を受信し、|ＰＣ|'に乗じることで、マスクを除去することができる。すなわち、上で述べた場合のアドレス変換装置からアドレス逆変換装置に、逆変換のためのβを転送する場合の逆の方向の転送にあたる。その後のＰＣの更新には、ＣＰＵが備えているインクリメント値を用いればよい。また、ＡＴＲ値は１に初期化するか、すでに述べた方法で非活性する。ＡＴＲ値を受信する以外にも、ＡＴＥＵにおいてＩＳＲ値をＩＮＶで処理し、その値を用いることもできる。さらには、ＡＴＲ値のコピーをＡＴＥＵやＣＰＵに保持し、マスク除去処理に備えるように構成することもできる。安全性を高めるために「セキュリティモード」を備え、セキュリティモードのＯＮ／ＯＦＦを切り替える「セキュリティビット」を備える構成にすれば、このセキュリティビットの設定を、ユーザーがコントロールすることができるように構成することで、必要に応じて保護の適用と解除をおこなうことができる。セキュリティビットがＯＮの場合は、上記の手順に従って安全性を高めた処理をおこない、セキュリティビットがＯＦＦの場合は、マスクによる保護が停止すればよい。
【００９４】
〔実施形態３〕
以下、図１０を用いて本発明に係る第三の実施形態を説明する。
図１０は、本発明の第三の実施形態に係る情報処理装置の構成図である。
【００９５】
なお、図１０では、アドレス変換装置ＡＴＥとアドレス変換装置ＡＴＤと記載しているが、実施形態２のようにマスク値の更新機能を有するアドレス変換装置ＡＴＥＵとアドレス変換装置ＡＴＤＵであってもよい。
【００９６】
本実施形態では、アドレス変換装置ＡＴＥとアドレス逆変換装置ＡＴＤをつなぐ経路として、アドレスバス４０１およびデータバス４０３のほかに、逆変換用の値βを転送するための専用のバス４０２を備えている。先の実施形態では、逆変換用の値をアドレスバスを用いて転送することによって、配線を減らすことができ、さらにβの転送を隠蔽することができるが、マスク値の更新の際のメモリアクセスレートが落ちることになる。一方、本実施形態のように、逆変換用の値を転送する専用のバスを持てば、アドレスバスを占有する必要が無くなるため、マスク値の更新処理を高速化することができる。ただし、βはセキュリティ上の重要な値であるので、バス４０２の配線はできるだけ発見が困難になるようにおこなうことや、β値の転送時以外には乱数を転送するなどの対策をおこなうことで、アタッカーによる解析を困難にすることができる。
【００９７】
〔実施形態４〕
以下、図１１を用いて本発明に係る第四の実施形態を説明する。
図１１は、本発明の第四の実施形態に係る情報処理装置の構成図である。
【００９８】
なお、図１１では、アドレス変換装置ＡＴＥとアドレス変換装置ＡＴＤと記載しているが、実施形態２のようにマスク値の更新機能を有するアドレス変換装置ＡＴＥＵとアドレス変換装置ＡＴＤＵであってもよい。
【００９９】
本実施形態では、アドレス逆変換装置ＡＴＤを各記憶装置ごとに用意する。また、ＡＴＥには、それぞれの記憶装置ごとに異なるマスク値を用いることができるように、複数のＩＳＲを備える。複数のマスク値を用いることにより、安全性を高めることができる。ただし、必ずしもすべてのマスク値が異なるように構成する必要は無く、一部あるいはすべてが同じ値であっても良い。
【０１００】
〔実施形態５〕
以下、図１２を用いて本発明に係る第五の実施形態を説明する。
図１２は、本発明の第五の実施形態に係る情報処理装置の構成図である。
【０１０１】
なお、図１２では、アドレス変換装置ＡＴＥとアドレス変換装置ＡＴＤと記載しているが、実施形態２のようにマスク値の更新機能を有するアドレス変換装置ＡＴＥＵとアドレス変換装置ＡＴＤＵであってもよい。
【０１０２】
本実施形態では、一部の記憶装置のみにＡＴＤを設置しているが、それぞれの記憶領域ごとに別々のプログラムカウンタを用意し別のアドレス空間としてアクセスすることが可能となっている。
【０１０３】
ＡＴＤを設置する記憶装置としては、頻繁に書き換えられないものを選択することが望ましい。たとえば、読み出し専用メモリであるＲＯＭや、書き換え回数の制限されるＥＥＰＲＯＭなどがＡＴＤ設置によって保護をおこなう対象の候補である。このような保護領域の制限は、記憶装置の種類によっておこなう方法とは別に、システム的な機能によっておこなう方法がある。すなわち、アドレス空間の一部領域をセキュリティを確保する領域であると定義し、当該アドレス領域にアクセスする場合にのみＡＴＥおよびＡＴＤによる保護をおこなうように構成することができる。
【０１０４】
〔実施形態６〕
以下、図１３を用いて本発明に係る第六の実施形態を説明する。
図１３は、本発明の第六の実施形態に係る情報処理装置の構成図である。
【０１０５】
なお、図１３では、アドレス変換装置ＡＴＥとアドレス変換装置ＡＴＤと記載しているが、実施形態２のようにマスク値の更新機能を有するアドレス変換装置ＡＴＥＵとアドレス変換装置ＡＴＤＵであってもよい。
【０１０６】
本実施形態の構成では、二つ以上のＰＣ［Ｉ］，ＩＳＲ［Ｉ］，ＡＴＲ［Ｉ］の組（Ｉ∈｛１，２，…，ｍ｝）を備え、どの組を使用するかの選択を外部から予測できない方法でおこなう。これによって、マスク値の更新をおこなわずとも、複数のマスク値を切り替えて使用することができるため、消費電力から情報を取得する攻撃をより効率よく防止することができる。どの組を使用するかの選択には、たとえば、乱数生成装置ＲＮＧから得られる乱数を用いる。使用する組の変更は、マスク値の更新タイミングとしては、実施形態２に述べたようなタイミングに従っておこなえばよい。また、特に読み出しと書き込みで異なる組を使用するようにすることで、読み出しと書き込み時の消費電力が異なるように構成すれば、データの書き込みと読み出し時の消費電力の相関を利用する解析をも防止することができる。どの組を使用するかは、ＡＴＥで生成した値を専用のバス５０２を通じてＡＴＤに転送することによって情報を伝えることができる。
【図面の簡単な説明】
【０１０７】
【図１】本発明の第一の実施形態に係る情報処理装置の構成図である。
【図２】本発明に係るマイクロコンピュータをＩＣカードに実装した様子を示す図である。
【図３】本発明に係るマイクロコンピュータの基本構成を示す構成図である。
【図４】ＰＣの変化系列ごとのハミング距離の変化を表したグラフである。
【図５】アドレス変換装置ＡＴＥの構成図である。
【図６】アドレス逆変換装置ＡＴＤの構成図である。
【図７】アドレス変換装置ＡＴＥＵの構成図である。
【図８】アドレス逆変換装置ＡＴＤＵの構成図である。
【図９】本発明の第二の実施形態に係る情報処理装置の信号線におけるデータの流れを表すタイミングチャートである。
【図１０】本発明の第三の実施形態に係る情報処理装置の構成図である。
【図１１】本発明の第四の実施形態に係る情報処理装置の構成図である。
【図１２】本発明の第五の実施形態に係る情報処理装置の構成図である。
【図１３】本発明の第六の実施形態に係る情報処理装置の構成図である。
【符号の説明】
【０１０８】
１０２、３０２、４０３、５０３…データバス
４０２…ＡＴＲ値転送バス
５０２…選択情報転送バス
ＣＰＵ…中央演算装置
ＰＣ…プログラムカウンタ
Ｉ／Ｏ…入出力装置および入出力ポート
ＡＴＥ…アドレス変換装置
ＩＳＲ…インクリメントアドレスレジスタ
ＲＮＧ…乱数生成器
ＳＹＳＣＬ…システムコントローラ
ＳＥＣＬ…セキュリティロジック
ＴＩＭ…タイマー
ＡＴＤ…アドレス逆変換装置
ＡＴＲ…アドレス逆変換用パラメータレジスタ
ＲＯＭ…読み出し専用不揮発性メモリ
ＥＥＰＲＯＭ…書き換え可能不揮発性メモリ
ＲＡＭ…書き換え可能揮発性メモリ
ＣＰＲ…コプロセッサ
ＣＲＡＭ…コプロセッサメモリ
Ｖｃｃ…電源入力端子
Ｖｓｓ…接地端子
ＲＳＴ…リセット入力端子
ＣＬＫ…クロック入力端子
ＣＬＫＧ…システムクロック生成器
ＩＮＶ…逆元計算器
ＡＤＤ…加算器
ＭＵＬ…乗算器
ＳＥＬＯ…二出力から一方を選択するセレクタ
ＳＥＬＩ…二入力から一方を選択するセレクタ
βＥ…β値のフェッチを指示する信号線
１０１、３０１、４０１、５０１、ＡＢ…暗号化された可能性のあるアドレスバス
ＰＢ…暗号化されていないアドレスバス
ＵＥ…マスク値更新を指示する信号線
ＴＲ…一時値保存用レジスタ
【図１】
2006155140.tif 000003
【図２】
2006155140.tif 000004
【図３】
2006155140.tif 000005
【図４】
2006155140.tif 000006
【図５】
2006155140.tif 000007
【図６】
2006155140.tif 000008
【図７】
2006155140.tif 000009
【図８】
2006155140.tif 000010
【図９】
2006155140.tif 000011
【図１０】
2006155140.tif 000012
【図１１】
2006155140.tif 000013
【図１２】
2006155140.tif 000014
【図１３】
2006155140.tif 000015