情報処理装置及び方法、並びにプログラム
【課題】電源電流の変化や磁界による内部データの漏洩を防止する。
【解決手段】
10ビットアドレスバス26と10ビットデータバス27の少なくとも一方を、パラレル通信の信号線で構成する。本発明の情報処理装置は、内部データのデータ表現に、例えば10ビットのDコード表現のデータを適用する。10ビットのDコード表現のデータを用いてメモリアドレスの指示や、ROM6−1,RAM6−2,および不揮発性メモリ6−3の内部データの読み出し、及び書き込みを行う。本発明は、接触ICカード及び非接触ICカードに適用できる。
【解決手段】
10ビットアドレスバス26と10ビットデータバス27の少なくとも一方を、パラレル通信の信号線で構成する。本発明の情報処理装置は、内部データのデータ表現に、例えば10ビットのDコード表現のデータを適用する。10ビットのDコード表現のデータを用いてメモリアドレスの指示や、ROM6−1,RAM6−2,および不揮発性メモリ6−3の内部データの読み出し、及び書き込みを行う。本発明は、接触ICカード及び非接触ICカードに適用できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び方法、並びにプログラムに関し、特に、タンパ攻撃による内部データの漏洩を防止する情報処理装置及び方法、並びにプログラムに関する。
【背景技術】
【0002】
近年、IC(Integrated Circuit)カードの普及が著しい。このため、ICカードの不正なアクセスを目論む第三者が、その内部データを不正に読み出したり、書き換えたりすることで、ICカードに攻撃をしかけることがある。なお、以下、かかる攻撃をタンパ攻撃と称する。
【0003】
タンパ攻撃の手法として、ICチップの消費電力の変化を解析し、内部動作を調べることにより内部データを推定する手法が存在する。なお、以下、かかる手法を、電力解析法と称する。また、タンパ攻撃の手法として、ICチップから発生する電磁波の磁界の変化を解析し、内部動作を調べることにより内部データを推定する手法が存在する。なお、以下、かかる手法を、電磁波解析法と称する。
【0004】
さらに、タンパ攻撃の手法として、ICチップに光や放射線を照射することによって誤作動を誘発し、内部データを推定したり、不正に書き換えたりする手法が存在する。なお、以下、かかる手法を、光照射法と称する。さらにまた、タンパ攻撃の手法として、ICチップに対し、電気的信号を読み取るマイクロプローバ等を直接接触させて、内部データを取得する手法が存在する。なお、以下、かかる手法を、直接プロービング法と称する。
【0005】
これら多種多様な手法によりなされるタンパ攻撃に対しても、内部データの漏洩や改ざんを防止できるように、対タンパ性の向上がICカードに求められている。
【0006】
例えば、ICカードに含まれるICチップにおいては、バス上を伝搬している内部データが2進数で表現されている。ICチップには、内部データの通信に必要なデータ線があり、必要に応じてそのデータ線の誤りを検出する符号、即ちパリティビットが用いられている。ICチップは、パリティビットを用いてメモリデータの異常を検出することで、ICカードの信頼性の向上を図っている。しかしながら、パリティビットを用いる手法においては、内部データがバス上に伝搬されているときに、その情報の状態変化が、電流の変化や磁界の変化として現れてしまう。このため、電源ラインの消費電流や、または外部へ漏洩する磁界変化を介して、上述した電力解析法や電磁波解析法により内部データが漏洩する恐れがある。この内部データの漏洩に対する手法(以下、データ漏洩対策手法)として、従来例えば、次のような第1乃至第4のデータ漏洩対策手法が提案されている。
【0007】
従来の第1のデータ漏洩対策手法とは、アクセスメモリのアドレスを指定する手法である。この手法を採用することで、指定されたアドレス以外からの内部データへのアクセスを拒否することができる。
【0008】
従来の第2のデータ漏洩対策手法とは、内部データを、秘密鍵によって暗号化する暗号回路に対して転送する手法である。
【0009】
従来の第3のデータ漏洩対策手法とは、直接プロービング法によるタンパ攻撃に対する対策として、ICチップに微細加工を施す手法である。
【0010】
従来の第4のデータ漏洩対策手法とは、電力解析法によるタンパ攻撃に対する対策用として、特許文献1に開示されている手法である。即ち、特許文献1によれば、ターゲット回路に対してサブターゲット回路が設けられる。このサブターゲット回路にダミー信号を入力することで、ターゲット回路における消費電力と、サブターゲット回路における消費電力の和を略一定とする手法が、従来の第4のデータ漏洩対策手法である。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2005−322018号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、従来の第1のデータ漏洩対策手法では、アクセスメモリのアドレスを指定する場合に、同一のプログラムコードを毎回用いる。このため、第三者により同一アドレス信号が生成される場合がある。このような場合、内部データが漏洩する恐れがある。
【0013】
従来の第2のデータ漏洩手法では、暗号化回路に対して、同一パターンのデータが毎回転送される。よって、第三者により、この転送パターンが統計学的に解析される場合がある。このような場合、内部データが漏洩する恐れがある。
【0014】
従来の第3のデータ漏洩対策手法が採用された場合には、第三者により、直接プロービング法を用いて、同一プログラムによる処理の繰り返し状態が補足され、バスデータが1本ずつ個別にモニタリングされるおそれがある。このため、第三者により、個別にモニタしたバスデータが組み合わされて内部データが解析される場合がある。その結果、内部データが漏洩する恐れがある。
【0015】
従来の第4のデータ漏洩対策手法では、電力解析法によるタンパ攻撃の対策用としては好適であるが、他のタンパ攻撃手法の対策用としては一概に好適であるとはいえない。
【0016】
本発明は、このような状況に鑑みてなされたものであり、タンパ攻撃による内部データの漏洩を防止することができるようにするものである。
【課題を解決するための手段】
【0017】
本発明の一側面は、データを記憶する記憶手段と、前記記憶手段の所定のアドレスを指定して、前記アドレスからデータを読み出す処理を少なくとも実行する処理手段と、前記処理手段による前記アドレスの指定に関するアドレスデータを伝搬するアドレス伝搬手段と、前記処理手段、前記記憶手段、外部とのうち一方から他方へ前記データを伝搬するデータ伝搬手段と、前記アドレスデータの形態を、前記処理手段で取り扱う第1の形態から、データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする規則を有する第2の形態に変換して、前記アドレス伝搬手段に供給する第1の変換手段と、前記アドレス伝搬手段を伝搬されてきた前記アドレスデータの形態を、前記第2の形態から前記第1の形態に逆変換して、逆変換後の前記アドレスデータを用いて、前記記憶手段のアクセス制御をする第1の逆変換手段と、前記処理手段から供給された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に供給する第2の変換手段と、前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記処理手段に供給する第2の逆変換手段とを備える情報処理装置である。前記アドレス伝搬手段と前記データ伝搬手段とのうち少なくとも一方は、パラレル通信を行っており、前記第1の変換手段は、所定のタイミングで、前記第2の形態の前記アドレスデータまたは前記データの直前までの累積値を初期化し、その累積値の初期化を指示する制御データを第2の形態で生成し、前記アドレス伝搬手段を介して前記第1の逆変換手段に送信し、前記第1の逆変換手段は、前記制御データに従って前記累積値を初期化し、前記第2の形態の制御データを前記データ伝搬手段を介して前記第2の逆変換手段に送信する制御をし、前記第2の逆変換手段は、前記制御データに従って前記累積値を初期化し、その累積値の初期化を前記第2の変換手段に通知し、前記第2の変換手段は、前記第2の逆変換手段からの通知に従って、前記累積値を初期化する情報処理装置である。
【0018】
前記記憶手段は、前記データを前記第1の形態で記憶し、前記前記記憶手段から読み出された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に出力する第3の変換手段をさらに備えることができる。
【0019】
前記記憶手段は、前記データの書き込みが可能であり、前記第3の変換手段はさらに、前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記記憶手段に書き込むことができる。
【0020】
前記第1の変換手段は、さらに、前記アドレス伝搬手段を伝送するデータのアドレス伝搬エラーを監視し、前記アドレス伝搬エラーが発生した場合そのことを示す制御データを前記第2の形態で生成して、前記データ伝搬手段を介して前記処理手段に送信することができる。
【0021】
前記第2の変換手段は、さらに、前記データ伝搬手段を伝送するデータのデータ伝搬エラーを監視し、前記データ伝搬エラーが発生した場合そのことを示す制御データを前記第2の形態で生成して、前記アドレス伝搬手段を介して前記処理手段に送信することができる。
【0022】
本発明の一側面である情報処理装置の情報処理方法とプログラムのそれぞれは、上述した本発明の情報処理装置に対応する方法とプログラムのそれぞれである。
【0023】
本発明の一側面においては、データが記憶され、所定のアドレスが指定され、前記アドレスからデータを読み出す処理が少なくとも実行され、前記アドレスの指定に関するアドレスデータが伝搬される。前記データが伝搬され、前記アドレスデータの形態を、第1の形態から、データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする規則を有する第2の形態に変換される。伝搬されてきた前記アドレスデータの形態が、前記第2の形態から前記第1の形態に逆変換され、逆変換後の前記アドレスデータを用いて、アクセス制御される。さらに、前記データの形態が、前記第1の形態から前記第2の形態に変換され、伝搬されてきた前記データの形態が、前記第2の形態から前記第1の形態に逆変換される。所定のタイミングで、前記第2の形態の前記アドレスデータまたは前記データの直前までの累積値が初期化され、その累積値の初期化を指示する制御データが第2の形態で生成され、前記第1の逆変換手段に送信され、前記制御データに従って前記累積値が初期化される。前記第2の形態の制御データにより送信する制御がなされ、前記制御データに従って前記累積値が初期化され、その累積値の初期化が通知され、通知に従って、前記累積値が初期化される。
【発明の効果】
【0024】
本発明の一側面によれば、タンパ攻撃による内部データの漏洩を防止することができる。
【図面の簡単な説明】
【0025】
【図1】5B6B変換コードについて説明する図である。
【図2】3B4B変換コードについて説明する図である。
【図3】Dコードにおけるランニングディスパリティ値(Running Disparity値:以下、RD値と称する)の調整の規則について説明する図である。
【図4】8B10B変換により得られる、Kコードについて説明する図である。
【図5】Kコードに対して割り当てられた制御信号の一例を説明する図である。
【図6】本発明が適用された情報処理装置の第1の実施の形態の構成例を示す機能ブロック図である。
【図7】本発明が適用された情報処理方法の、第1の実施の形態の処理の一例を説明するフローチャートである。
【図8】8ビットの2進数表現と、10ビットのDコード表現における消費電力及び磁界の変化について説明する図である。
【図9】8ビット2進数表現における消費電流の分布について説明する図である。
【図10】10ビットDコード表現における消費電流の分布について説明する図である。
【図11】本発明が適用された情報処理装置の第2の実施の形態の構成例を示す機能ブロック図である。
【図12】本発明が適用された情報処理方法の、第2の実施の形態の処理の一例を説明するフローチャートである。
【発明を実施するための形態】
【0026】
以下、図面を参照して、本発明が適用される情報処理装置の実施の形態として、2の実施の形態(以下、それぞれ第1及び第2の実施の形態と称する)について説明する。よって、説明は以下の順序で行う。
1、本発明の概要
2、第1の実施の形態(入力:8ビットの2進数表現の例)
3、第2の実施の形態(入力:10ビットのDコード表現の例)
【0027】
<1.本発明の概要>
本発明が適用される情報処理装置においては、2進数表現のデータを、例えば、データの0と1の数が同じになるように変換するDCフリーコードを用いて変換する。具体的には例えば、DCフリーコードとしては、8B10B変換により得られるDコードが存在する。
【0028】
さらに、本発明が適用される情報処理装置は、内部データの通信をパラレル通信で行う。即ち、本発明が適用される情報処理装置は、アドレスバス、データバスが、パラレル接続された信号線で構成され、そのデータ表現として、DCフリーコードが適用される。換言すると、本発明が適用される情報処理装置は、DCフリーコードを用いてメモリアドレスの指示や、書き込み及び読み出し等のデータの伝送を行う。
【0029】
以下に、DCフリーコードの一例であるDコードを生成可能な8B10B変換について、その概略を説明する。
【0030】
[8B10B変換の概略の説明]
8B10B変換とは、8ビットの2進数表現のデータを、10ビットの2進数表現のデータに変換する手法であり、従来シリアル通信に適用されていた手法をいう。後述する本発明の第1及び第2の実施の形態では、8B10B変換が、パラレル通信に適用されている。
【0031】
8B10B変換においては、入力された8ビットの2進数表現のデータが、ビットウエイトの軽い順にABCDEの5ビットのデータと、FGHの3ビットのデータに分けられる。5ビットのデータは、6ビットのデータにビット変換される。また、3ビットのデータは、4ビットのデータにビット変換される。ビット変換後の6ビットのデータと4ビットのデータが合成されて、計10ビットのデータが得られる。このようにして、8ビットの2進数表現のデータが計10ビットのデータに変換される。なお8B10B変換には、法則性は特になく、後述する図1や図2に示される表が用いられる。
【0032】
8B10B変換により得られる10ビットのデータは、データそのものを示すDコードと、制御信号を示すKコードとに大別できる。Dコードは、シンボルD.x.y(xは00乃至31の整数、yは0乃至6の整数、及びP7,A7)で表現される。以下、この表現をDコード表現と称する。また、Kコードは、シンボルK.x.y(xは00乃至31の整数、yは0乃至7の整数)で表現される。以下、この表現をKコード表現と称する。
【0033】
さらにシンボルD.x.y、及びK.x.yには、それぞれ2種類のデータが存在する。これら2種類のデータのどちらを出力するかは、ランニングディスパリティ値(Running Disparity値:以下、RD値と称する)により決定される。RD値は、連続するデータの各ビットに対し、10ビット表現の1の数と0の数とを累計し、1の数と0の数の差分を見る値である。8B10B変換においては、RD値が例えば±1の範囲の値になるように、Dコードの発生パターンが切り替えられる。
【0034】
即ち、8B10B変換においては、RD値が例えば±1の範囲を超えた値となった場合は、データに何らかのエラーがあることが判る。また、8B10B変換においては、RD値の初期値(以下、RD初期値と称する)が乱数により選択された後、8B10B変換が開始される。よって、同じデータでもDコードの発生パターンが変わるという特徴がある。さらに、8B10B変換においては、1024のパターンのうち、Dコードとして255を選択して使うので、残りのパターン(DCフリーコードの特徴をもつパターン)のKコードを、制御パターンのコードとしてパラレルバスに流すことで、周辺装置をコントロールすることができる。
【0035】
図1は、8ビットの2進数表現のデータのうち5ビットのデータEDCBAが、6ビットのデータabcdeiにビット変換される場合の対応関係を示している。なお、以下、このようなビット変換を、5B6B変換と称する。また、5B6B変換により得られるデータabcdeiを、5B6Bコードと称する。データを示す5B6Bコードは、D.xと表現される。制御信号を示す5B6Bコードは、K.xと表現される。
【0036】
図2は、8ビットの2進数表現のデータのうち3ビットのデータHGFが、4ビットのデータfghjにビット変換される場合の対応関係を示している。なお、以下、このようなビット変換を、3B4B変換と称する。また、3B4B変換により得られるデータfghjを、3B4Bコードと称する。データを示す3B4Bコードは、D.x.yと表現される。制御信号を示す3B4Bコードは、K.x.yと表現される。
【0037】
なお、D.x.yと表現される3B4Bコードのうち、D.x.P7及びD.x.A7については、シリアル通信の場合には、直前のデータの値によって、どちらか一方を選択することになっている。しかしながら、パラレル通信の場合には、どちらか一方を選択する必要はなく、常にD.x.P7を使用することができる。
【0038】
上述した図1と図2を用いて説明した5B6Bコードと3B4Bコードを組み合わせることにより、Dコード(D.x.y)やKコード(K.x.y)が生成される。具体的には例えば、データを示す5B6Bコード(D.00)と、データを示す3B4Bコード(D.x.0)を組み合わせた場合には、Dコードは、D.00.0となる。また例えば、制御信号を示す5B6Bコード(K.28)と、制御信号を示す3B4Bコード(K.x.0)を組み合わせた場合には、Kコードは、K.28.0となる。なお、Kコードの一例については、図4を用いて後述する。
【0039】
図3は、DコードにおけるRD値の調整の規則について説明する図である。
【0040】
図3において、「前のRD値」には、直前までに変換済の1以上の10ビットのDコード表現のデータについてのRD値であって、今回の8B10B変換に用いられるRD値が記述されている。「8B10B変換後のデータのディスパリティ値」には、今回変換対象の10ビットのDコード表現のデータ内のディスパリティ値が記述されている。「次のRD値」には、今回変換対象の10ビットのDコード表現のデータも含めたに変換済の複数の10ビットのDコード表現のデータについてのRD値であって、次回の8B10B変換に用いられるRD値が記述されている。
【0041】
即ち、DコードにおけるRD値の調整の規則とは、同一行において、「前のRD値」を用いて8B10B変換が行われた場合に生成される10ビットのDコード表現のデータの「8B10B変換後のデータのディスパリティ値」によって、「次のRD値」が決定される、という規則である。
【0042】
図4は、制御用信号を示すKコードの一例である。Kコードは、上述したように、制御信号を示す5B6Bコードと、制御信号を示す3B4Bコードとの組み合わせにより構成される。これにより、図4の例に示されるような複数の種類のKコードを生成することができる。
【0043】
図5は、Kコードに対して割り当てられた制御信号の一例を説明する図である。例えば後述する第1の実施形態では、Initializeという制御信号が使用される。よって、このような場合には、図5の1行目に示されるように、K.28.7というKコードが用いられることになる。なお、Kコードに対して割り当てる制御信号の種類は、図5の例に特に限定されない。即ち、8B10B変換においては、Kコードに、各種の機能を実行する制御信号が任意に割り当てることが可能である。
【0044】
以上、図1乃至図5を用いて、8B10B変換について説明した。次に、本発明が適用される情報処理装置の第1の実施の形態として、8B10B変換が適用された情報処理装置について説明する。
【0045】
<2.第1の実施の形態>
[情報処理装置の第1の実施の形態の構成例]
図6は、本発明を適用した情報処理装置の第1の実施の形態の構成例を示すブロック図である。
【0046】
図6の例の情報処理装置には、CPU(Central Processing Unit)1、エンコーダ/デコーダ2、乱数発生部3、8B10B変換部4、10B8B変換部5−1,5−2、及び5−3が設けられている。図6の例の情報処理装置にはまた、ROM(Read Only Memory)(メモリ)6−1、RAM(Random Access Memory)(メモリ)6−2、不揮発性メモリ6−3が設けられている。図6の例の情報処理装置にはまた、8B10B変換調整部7−1、10B8B/8B10B変換調整部7−2,7−3、8B10B変換調整部8、及び10B8B変換調整部9が設けられている。図6の例の情報処理装置にはさらにまた、入力部10、出力部11、制御線22−1,22−2、22−3,及び25、10ビットアドレスバス26、10ビットデータバス27、8ビットデータバス28が設けられている。なお、以下、10B8B変換部5−1,5−2及び5−3を個々に区別する必要がない場合、これらをまとめて10B8B変換部5と称する。また、ROM(メモリ)6−1、RAM(メモリ)6−2、不揮発性メモリ6−3をメモリという観点で個々に区別する必要がない場合、これらをまとめて、メモリ6と称する。また、制御線22−1乃至22−3を個々に区別する必要がない場合、これらをまとめて、制御線22と称するとする。
【0047】
CPU1には、エンコーダ/デコーダ2及び乱数発生部3が接続されている。
【0048】
CPU1は、情報処理装置全体を制御する。エンコーダ/デコーダ2は、CPU1に入出力されるデータに対し、必要に応じて符号化または復号化処理を施す。乱数発生部3は、乱数を発生し、CPU1を介して8B10B変換部4に出力する。この乱数は、後述するRD初期値を設定するために用いられる。CPU1にはまた、8B10B変換部4が接続されている。8B10B変換部4にはまた、10ビットアドレスバス26を介して10B8B変換部5が接続されている。10B8B変換部5にはメモリ6が接続されている。即ち、後述するように、アドレスデータは、CPU1とメモリ6内では8ビットの2進数表現のデータとして取り扱われる。一方、8B10B変換部4と10B8B変換部5との間の10ビットアドレスバス26においては、アドレスデータは、10ビットのDコード表現の形態で伝送される。CPU1にはまた、8ビットデータバス28を介して、入力部10、出力部11、8B10B変換調整部8、及び10B8B変換調整部9が接続されている。
【0049】
入力部10は、外部から8ビットの2進数表現のデータを入力し、8ビットデータバス28を介してCPU1に出力する。
【0050】
出力部11は、CPU1から8ビットデータバス28を介して供給された8ビットの2進数表現のデータを、外部に出力する。
【0051】
8B10B変換調整部8と10B8B変換調整部9とにはまた、10ビットデータバス27を介して、8B10B変換調整部7−1及び10B8B/8B10B変換調整部7−2,7−3が接続されている。8B10B変換調整部7−1及び10B8B/8B10B変換調整部7−2,7−3にはそれぞれ、ROM(メモリ)6−1、RAM(メモリ)6−2、及び不揮発性メモリ6−3がそれぞれ接続されている。即ち、後述するように、メモリ6に読み書きされるデータは、CPU1とメモリ6内では8ビットの2進数表現のデータとして取り扱われる。一方、8B10B変換調整部8及び10B8B変換調整部9と、8B10B変換調整部7−1及び10B8B/8B10B変換調整部7−2,7−3との間では、即ち、10ビットデータバス27においては、データは、10ビットのDコード表現の形態で伝送される。
【0052】
以下、図3の例の情報処理装置の内部データがメモリ6から読み出される動作を例として、各構成要素の機能を適宜説明していく。なお、最初の内部データの読み出しの前には、RD値の初期化が行われる。ただし、RD値の初期化を行う場合の各構成要素の機能の説明については、後述する図7の処理の説明の中で行う。
【0053】
RD値の初期化が行われた後、8B10B変換部4は、CPU1からの8ビットの2進数表現のデータ、例えば、読み出し対象のメモリ6のメモリアドレスに対して、8B10B変換に従った処理(以下、8B10B変換処理と称する)を施す。これにより、メモリアドレスは、10ビットのDコード表現のデータとなる。なお、アドレスサイズの拡張はKコードを用いて拡張することができる。10ビットのDコード表現のデータは、10ビットアドレスバス26を介して、10B8B変換部5に伝送される。
【0054】
10B8B変換部5は、10ビットのDコード表現のデータを、8ビットの2進数表現のデータに変換する。なお、以下、このように、10ビットのDコード表現のデータを、8ビットの2進数表現のデータに変換する手法を、10B8B変換と称する。また、10B8B変換に従って実行される処理を、10B8B変換処理と称する。即ち、10B8B変換部5は、10ビットのDコード表現のデータに対して10B8B変換処理を施す。このような10B8B変換処理の結果得られるメモリアドレスに基づいて、読み出し対象のメモリ6のアクセスが制御される。なお、この制御には、所定の種類のKコードが用いられる場合もある。
【0055】
8B10B変換調整部7−1、または10B8B/8B10B変換調整部7−2若しくは7−3は、メモリ6から読み出したデータに対して8B10B変換処理を施し、その結果得られる10ビットのDコード表現のデータを、10ビットデータバス27に出力する。10ビットのDコード表現のデータは、10ビットデータバス27を介して、10B8B変換調整部9に供給される。10B8B変換調整部9は、10ビットのDコード表現のデータに対して10B8B変換処理を施し、その結果得られる8ビットの2進数表現のデータを、8ビットデータバス28を介して、CPU1に供給する。
【0056】
以上、図6の例の情報処理装置の内部データがメモリ6から読み出される動作を例として、各構成要素の機能を説明した。
【0057】
さらに、以下、図6の情報処理装置がデータをメモリ6に書き込む動作を例として、各構成要素の機能を説明する。
【0058】
書き込み動作の場合におけるRD値の初期化やメモリ6のアクセス制御は、読み出しの動作の場合と基本的に同様である。即ち、メモリアドレスやKコードは、CPU1とメモリ6との間においては、より正確には、8B10B変換部4と10B8B変換部5との間の10ビットアドレスバス26においては、10ビットのDコード表現の形態で伝送される。書き込み対象のデータは、8ビットの2進数表現の形態で、CPU1から出力され、8ビットデータバス28を介して、8B10B変換調整部8に供給される。
【0059】
8B10B変換調整部8は、8ビットの2進数表現のデータに対して8B10B変換処理を施し、その結果得られる10ビットのDコード表現のデータを、10ビットデータバス27に出力する。10ビットのDコード表現のデータは、10ビットデータバス27を介して、10B8B/8B10B変換調整部7−2または7−3に供給される。なお、以下、10B8B/8B10B変換調整部7−2,7−3を個々に区別する必要がない場合、これらをまとめて10B8B/8B10B変換調整部7と称する。
【0060】
10B8B/8B10B変換調整部7は、10ビットのDコード表現のデータに対して10B8B変換処理を施し、その結果得られる8ビットの2進数表現のデータをメモリ6に書き込む。
【0061】
以上、図6の例の情報処理装置が有する機能のうち、データの読み書き機能を実現させるという観点で、各構成要素の機能を説明した。
【0062】
なお、図6の例の情報処理装置は、データの読み書き機能に加えて、さらに、読み書き中のデータのエラーを検出する機能も有している。ただし、かかる機能を実現させるという観点での各構成要素の機能の説明については、後述する図7の処理の説明の中で行う。
【0063】
[情報処理装置の第1の実施の形態における処理の説明]
図7は、図6の例の情報処理装置が実行する処理の一例を説明するフローチャートである。
【0064】
図7の例のフローチャートには、RD値の初期化を行う一連の処理が示されている。なお、以下、かかる一連の処理を、RD値初期化処理と称する。また、図7の例のフローチャートには、10ビットアドレスバス26を伝送しているデータ、即ち、10ビットのDコード表現のデータにエラー(以下、アドレスバスエラーと称する)が発生した場合において、そのことを通知するまでの一連の処理が示されている。なお、以下、かかる一連の処理を、アドレスバスエラー通知処理と称する。さらにまた、図7の例のフローチャートには、10ビットデータバス27を伝送している10ビットのDコード表現のデータにエラー(以下、データバスエラーと称する)が発生した場合において、そのことを通知するまでの一連の処理が示されている。
【0065】
また、図7には、図中左方から、8B10B変換部4、10B8B変換部5−1、8B10B変換調整部7−1、10B8B変換調整部9、およびCPU1のそれぞれについての処理のフローチャートが図示されている。各フローチャート間に示される矢印は、情報(データ)の流れを示している。なお、この段落の内容は、後述する図12についても同様にあてはまるとする。
【0066】
なお、図7の例のフローチャートにおいて、処理の主体を10B8B変換部5−1としている箇所については、10B8B変換部5−2,5−3においても同様の処理が行われるものとする。また、処理の主体を8B10B変換調整部7−1としている箇所については、10B8B/8B10B変換調整部7−2,7−3においても同様の処理が行われるものとする。さらにまた、処理の主体が10B8B変換部5−2と10B8B/8B10B変換調整部7−2となる場合には、メモリ6としてはRAM(メモリ)6−2が用いられる。同様に、処理の主体が10B8B変換部5−3と10B8B/8B10B変換調整部7−3となる場合には、メモリ6として不揮発性メモリ6−3が用いられる。
【0067】
ステップS1乃至S7の処理は、RD値初期化処理である。例えば最初の内部データの読み出しや書き出しの前に、各ロジックがリセットされてから復帰されると、次のステップS1乃至S7のRD値初期化処理が実行される。
【0068】
ステップS1において、8B10B変換部4は、乱数発生部3より発生された乱数に基づいて、RD初期値を決定して、RD値を初期化する。また、8B10B変換部4は、メモリ6のアドレスとRD初期値の設定を指示するKコード(以下、Initialize Kコードと称する)を生成する。なお、Initialize Kコードとしては、例えば図5に示されるK.28.7が採用される。
【0069】
ステップS2において、8B10B変換部4は、Initialize Kコードを、10ビットアドレスバス26を介して、10B8B変換部5−1に供給する。
【0070】
ステップS3において、10B8B変換部5−1は、8B10B変換部4から供給されたInitialize Kコードに従って、RD値を初期化する。また、10B8B変換部5は、RD値の初期化と同時に、ROM(メモリ)6−1の内部アドレスレジスタを初期化する。
【0071】
ステップS4において、10B8B変換部5−1は、制御線22−1を介して、RD値の初期化を指示する。具体的には、10B8B変換部5−1は、8B10B変換調整部7−1に対してRD値の初期化を指示する。
【0072】
ステップS5において、8B10B変換調整部7−1は、RD値を初期化する。
【0073】
ステップS6において、8B10B変換調整部7−1は、Initialize Kコードを、10ビットデータバス27を介して10B8B変換調整部9に供給する。
【0074】
ステップS7において、10B8B変換調整部9は、Initialize Kコードの指示に従い、RD値の初期化を行う。以上で、最初の内部データの読み出しや書き出しの前に、各ロジックがリセットされてから復帰されると実行される、RD値初期化処理が終了される。
【0075】
次に、情報処理装置にアドレスバスエラーが発生した場合のアドレスバスエラー通知処理について説明する。ステップS8乃至S12は、アドレスバスエラー通知処理である。
【0076】
ステップS8において、8B10B変換部4は、10ビットのDコード表現のデータを、10B8B変換部5−1に供給する。
【0077】
ここで、アドレスバスエラーが発生したとする。
【0078】
ステップS9において、10B8B変換部5−1は、アドレスバスエラーが発生したことを検出し、ROM(メモリ)6−1を不活性にする。そして、10B8B変換部5−1は、制御線22−1を介して、8B10B変換調整部7−1に対して、アドレスバスエラーが発生したことを通知する。
【0079】
ステップS10において、8B10B変換調整部7−1は、アドレスバスエラーを示すKコード(以下、アドレスバスエラーKコードと称する)を生成する。
【0080】
ステップS11において、8B10B変換調整部7−1は、アドレスバスエラーKコードを10ビットデータバス27を介して10B8B変換調整部9に供給する。
【0081】
ステップS12において、10B8B変換調整部9は、アドレスバスエラーKコードが供給されると、制御線25を介して、CPU1にアドレスバスエラーを通知する。以上で、情報処理装置にアドレスバスエラーが発生した場合のアドレスバスエラー通知処理が終了される。
【0082】
次に、情報処理装置にデータバスエラーが発生した場合のデータバスエラー通知処理について説明する。
【0083】
ステップS13において、8B10B変換調整部7−1は、ROM(メモリ)6−1から読み出したデータについて、10ビットのDコード表現のデータを10B8B変換調整部9に出力する。
【0084】
ここで、例えばタンパ攻撃によるデータバスエラーが発生したとする。
【0085】
ステップS14において、10B8B変換調整部9は、データバスエラーを検出した場合、制御線25を介してCPU1にデータエラーを通知する。以上で、情報処理装置にデータバスエラーが発生した場合のデータバスエラー通知処理が終了される。
【0086】
以上のデータバスエラー通知処理の例においては、10B8B変換調整部9がデータバスエラーを検出した場合について説明した。しかしながら、8B10B変換調整部7−1がデータバスエラーを検出することもありうる。この場合、8B10B変換調整部7−1は、データバスエラーKコードを生成し、10B8B変換調整部9にデータバスエラーKコードを供給する。その後は、上述したステップS14以降の処理が施される。
【0087】
またさらに、8B10B変換調整部8が、データバスエラーを検出することもありうる。この場合、8B10B変換調整部8がデータバスエラーKコードを生成し、10B8B変換調整部9にデータバスエラーKコードを供給する。その後は、上述したステップS14以降の処理が施される。またさらに、8B10B変換調整部8は、10ビットデータバス27を伝送している10ビットのDコード表現のデータをモニタし、RD値が一致するように調整することもできる。
【0088】
以上、第1の実施の形態の情報処理装置の構成例とその処理について説明した。次に、図8乃至図10を参照して、第1の実施形態の情報処理装置が奏することができる効果について説明する。
【0089】
図8は、8ビットの2進数表現のデータと、10ビットのDコード表現のデータの電流変化及び磁界変化について説明するための図である。なお、図8においては、8B10B変換部4の左側に8ビットの2進数表現のデータが示されている。また、図8においては、8B10B変換部4の右側に10ビットのDコード表現のデータが示されている。またさらに、図8においては、発生する磁界の大きさと分布が、点線の円として示されている。
【0090】
図8を参照して、8ビットの2進数表現のデータにおける磁界の変化と、10ビットのDコード表現のデータにおける磁界の変化を比較する。8ビットの2進数表現のデータでは、隣接する各ビットの0と1は無関係に発生する。よって、例えば8ビットの2進数表現のデータの値が0や255である場合に、磁界の変化が大きい。具体的には例えば、8ビットの2進数表現のデータで255を表現する場合、対応する全てのバスドライバがON状態となる。すると、回路全体を囲む大きな磁界(図中点線で示される磁界)が発生する。即ち、回路全体が大きなアンテナを構成しているような状態となる。従って、第三者が電磁波解析法を用いて容易に内部データを推定する恐れがある。
【0091】
これに対し、10ビットのDコード表現のデータにおいては、隣接する各ビットの0と1は3個以上連続して発生しない規則を有している。さらに、直前に入力された10ビットのDコード表現のデータと、継続して入力される10ビットのDコード表現のデータとの合計20ビットのデータにおいては、0と1の総数は完全に一致する。このため10ビットのDコード表現のデータの値が0や255の場合も、磁界は近傍でのみ発生する。従って、第三者が、電磁波解析法により内部データを推定することは、非常に困難となる。具体的には例えば、10ビットのDコード表現のデータで255を表現する場合、各バスドライバは、間欠的にON状態となる。このため、バスドライバの近傍に、個々に小さな磁界(図中点線で示される磁界)が発生する。換言すると、回路の周囲に小さなアンテナが細かく分布しているような状態となるため、磁界が遠くまで届かない。よって、第三者による電磁波解析法を用いた内部データの推定は困難となる。
【0092】
次に、図9及び図10を用いて、8ビットの2進数表現のデータにおける消費電流と、10ビットのDコード表現のデータにおける消費電流について比較する。図9には、8ビットの2進数表現のデータを用いて0乃至255を表現する場合の、各ビットにおけるビット1の発生数の分布が示されている。図10には、10ビットのDコード表現のデータを用いて値0乃至255を表現する場合の、各ビットにおけるビット1の発生数の分布が示されている。なお、ビット1の発生数の分布は、電流変化の分布をそのまま表している。例えば、各バスドライバの消費電流が1mAであると仮定すると、それぞれの回路における電流変化は、以下のようになる。8ビットの2進数表現のデータにおいては、回路全体の消費電力は、1乃至8mAの範囲で常時変化する。従って、回路全体の消費電力を解析し、内部動作を調べることにより内部データを推定する電力解析法を用いて、第三者により容易に内部データが推定される恐れがある。これに対し、10ビットのDコード表現のデータにおいては、消費電流は4mAから6mAの範囲内でしか変化しない。さらに、複数バイトの消費電流の平均値は、およそ5mAとなり、平均化される。従って、電力解析法を用いた第三者による内部データの推定は、非常に困難となる。
【0093】
以上、第1の実施の形態の情報処理装置について説明した。第1の実施の形態では、外部から8ビットの2進数表現のデータが入力され、また、メモリのデータも8ビットの2進数表現で読み出し及び書き込みが行われる場合の実施の形態であった。
【0094】
<3、第2の実施の形態>
これに対して、第2の実施の形態の情報処理装置と外部との間のデータの授受は、10ビットのDコード表現であるとする。例えば、10ビットのDコード表現を用いたイーサネット(登録商標)やHDMI(High-Definition Multimedia Interface)機器との間でデータの通信が行われる場合に、第2の実施形態を適用できる。また例えば、外部装置として8B10B変換装置が用いられており、直接10ビットのDコード表現のデータが入力される場合に、第2の実施形態適用できる。
【0095】
[情報処理装置の第2の実施の形態の構成例]
図11は、本発明を適用した情報処理装置の第2の実施の形態の構成例を示すブロック図である。
【0096】
図11において、図6と対応する箇所には対応する符号が付してあり、それらの説明は適宜省略する。
【0097】
図11の例の情報処理装置には、図6の構成に対して、10B8B変換部5からの制御線22が省略され、8B10B変換調整部7−1及び10B8B/8B10B変換調整部7−2,7−3のそれぞれの代わりに、RD補正部32−1,32−2、及び32−3が設けられている。また、図11の例の情報処理装置は、外部との間で10ビットのDコード表現のデータを入出力する。このため、入力部10と出力部11は、10ビットデータバス27に接続されている。また、図11の例の情報処理装置には、DMA(Direct Memory Access)部31が設けられている。
なお、以下、RD補正部32−1,32−2、及び32−3を個々に区別する必要がない場合、これらをまとめて、RD補正部32と称するとする。
【0098】
図11の例の10B8B変換部31は、Initialize Kコードを受信した場合、またはアドレスバスエラーを検出した場合に、後に続くブロックへの伝達の処理として、図6の例の10B8B変換部5とは異なる処理を実行する。
【0099】
即ち、図11の例の10B8B変換部31は、メモリ6に予め保持されているアドレスバスエラーKコードやInitialize Kコードを、RD補正部32に出力させる。換言すると、第2の実施の形態のメモリ6には、アドレスバスエラーKコードや、Initialize Kコードが予め保持されている。
【0100】
このため、図11の例の情報処理装置においては、図6の例では必要であった制御線22が不要となる。
【0101】
RD補正部32は、ランダムに読み出される10ビットのDコード表現のRD値が、±1の範囲を超えないように、5B6Bコードと3B4Bコードの組み合わせを適切に反転させる。
【0102】
具体的には、たとえば、メモり6のメモリアドレスの00,01,02に、D.03.0(RD=-1)、D.03.3(RD=+1)、D.03.4(RD=-1)というDコード表現のデータが書き込まれたとする。これらのDコード表現のデータが、00,02,00,02という順で読み出された場合、最終的なRD値は、-4となり、RD値の規定の範囲、例えば、RD=±1の範囲を超えてしまう。よって、RD補正部32は、このような場合には、例えば2番目と3番目のDコードをD.03.3(RD=-1)に変換してRD値をゼロにする処理を施すことで、RD値の規定の範囲内に調整する。
【0103】
DMA部31は、CPU1を介さずに直接メモリ6とデータ転送を行う。
【0104】
以上のような構成をもつことにより、第2の実施の形態においては、10ビットのDコード表現のデータを用いたイーサネット(登録商標)やHDMI機器との接続を容易にすることができる。さらに、第2の実施の形態においては、電源の瞬断などの外部要因で、メモリ書き込みデータにエラーが生じた場合におけるエラーの検出を容易にすることができる。
【0105】
また、第1の実施の形態においては、メモリ6に対して直接タンパ攻撃が行われた場合には、対処することができない。しかしながら、第2の実施の形態においては、メモリ6の内部データも、10ビットのDコード表現のデータで読み出し及び書き込みを行う。このため、第2の実施の形態においては、メモリ6に直接タンパ攻撃が行われた場合においても、高い対タンパ性を発揮することが可能となる。
【0106】
またさらに、第2の実施の形態においても、図8乃至図10を参照して上述した、第1の実施の形態の情報処理装置が奏することのできる効果と同様の効果を奏することができる。
【0107】
[情報処理装置の第2の実施の形態における処理の説明]
図12は、本発明が適用される情報処理装置の第2の実施の形態における処理の一例を説明するフローチャートである。
【0108】
図12の例のフローチャートには、RD値初期化処理、アドレスバスエラー通知処理、及びデータバスエラー通知処理が示されている。
【0109】
図12の例のフローチャートにおけるステップS21,S22の処理は、図7の例のフローチャートにおけるステップS1,S2の処理と同様の処理である。このため、その説明を省略する。
【0110】
ステップS23において、10B8B変換部5−1は、8B10B変換部4から供給されたInitialize Kコードに従って、RD値を初期化する。また、10B8B変換部5−1は、RD値の初期化と同時に、ROM(メモリ)6−1の内部アドレスレジスタを初期化する。
【0111】
ステップS24において、10B8B変換部5−1は、ROM(メモリ)6−1に対し、ROM(メモリ)6−1に保持されているInitialize Kコードの出力を指示する。
【0112】
ステップS25において、ROM(メモリ)6−1は、Initialize KコードをRD補正部32−1に出力する。
【0113】
ステップS26において、RD補正部32−1は、ROM(メモリ)6−1から供給されたInitialize Kコードの指示に基づいて、RD値を初期化する。
【0114】
ステップS27において、RD補正部32−1は、Initialize Kコードを、10ビットデータバス27を介して10B8B変換調整部9に出力する。
【0115】
図12の例のフローチャートにおけるステップS28,S29の処理は、図7の例のフローチャートにおけるステップS7,S8の処理と同様の処理である。このため、その説明を省略する。
【0116】
ステップS30において、10B8B変換部31−1は、ROM(メモリ)6−1に対し、ROM(メモリ)6−1に保持されているアドレスバスエラーKコードの供給を指示する。
【0117】
ステップS31において、ROM(メモリ)6−1は、アドレスバスエラーKコードをRD補正部32−1に出力する。
【0118】
ステップS32において、RD補正部32−1は、アドレスバスエラーKコードを、10ビットデータバス27を介して10B8B変換調整部9に出力する。
【0119】
図12の例のフローチャートにおけるステップS33の処理は、図7の例のフローチャートにおけるステップS12の処理と同様の処理である。このため、その説明を省略する。
【0120】
ステップS34において、RD補正部32−1は、ROM(メモリ)6−1から読み出したデータについて、10ビットのDコード表現のデータを、10B8B変換調整部9に出力する。
【0121】
図12の例のフローチャートにおけるステップS35の処理は、図7の例のフローチャートにおけるステップS14の処理と同様の処理である。このため、その説明を省略する。
【0122】
以上説明した本発明が適用される情報処理装置の第1の実施の形態、及び第2の実施の形態においては、次のような効果を奏することが可能になる。
【0123】
本発明が適用される情報処理装置においては、10ビットのDコード表現を用いてデータを表現する。このため、10ビットアドレスバス26や10ビットデータバス27において、各ビットが全て0、または全て1となる状態が発生しない。即ち、0と1の数が同数となるため、ON状態となっているトランジスタと、OFF状態となっているトランジスタの数が同一になり、総合的な消費電流は常に一定となる。よって、第三者による電力解析法を用いた攻撃に対して、高い対タンパ性を発揮する。また、本発明が適用される情報処理装置においては、磁界についても、10ビットアドレスバス26や10ビットデータバス27の総和としては、0となる。このため、第三者による電磁波解析法を用いた攻撃に対しても、高い対タンパ性を発揮する。
【0124】
また、本発明が適用される情報処理装置においては、電源の急峻な変化や、レーザ等による回路の誤作動のような外部からの遥動により、データが全て0または1になるエラーが生じた場合にも、このようなエラーを容易に検出することが可能となる。上述したように、タンパ攻撃の手法としての光照射法は、回路にレーザなどの光や放射線を照射することによって誤作動を誘発し、内部データを推定したり、不正に書き換えたりするものである。本発明が適用される情報処理装置においては、データを10ビットのDコード表現とすることによって、このような外部からの揺動によるデータのエラーを検出することが可能となる。
【0125】
さらに、本発明が適用される情報処理装置においては、同一のプログラムの実行においても、RD値を毎回変更することが出来る。よって、10ビットアドレスバス26や10ビットデータバス27に供給される10ビットのDコード表現のデータのパターンが毎回変化する。このため、本発明が適用される情報処理装置においては、第三者が外部からデータのパターンをモニタする手がかりが無くなる。またさらに、本発明が適用される情報処理装置においては、たとえば秘密鍵によって暗号化する暗号回路への転送においても、RD値をランダムに初期化することができる。よって、同一データであっても10ビットのDコード表現のデータのパターンが変化するため、このパターンを第三者が外部からモニタすることは困難となる。またさらに、本発明が適用される情報処理装置においては、同一プログラムが繰り返される状態でプロービングされる場合においても、毎回データのパターンが変化する。よって、複数のバスラインを同時にプロービングする必要があるため、微細加工のチップでは、第三者による攻撃は困難になる。
【0126】
例えば、DCフリーコードは、イーサネット(登録商標)やコンピュータの内部バス高速シリアル通信に使われている。このため本発明が適用される情報処理装置の第2の実施の形態においては、イーサネットデータの暗号化復号などの用途に対しては、データ変換の必要が無くなる、このため、第2の実施の形態においては、システム構成を容易にすることができる。
【0127】
なお、以上の例では、本発明が適用される情報処理装置におけるRD値の範囲を±1としたが、RD値の範囲は±1以上(例えば、RD=±2)でも本発明に適用可能である。しかしながら、上述の電力解析法や電磁波解析法を用いた攻撃に対する対タンパ性を考慮すると、RD値の範囲は±1とするのが好適である。さらに以上の例では、本発明が適用される情報処理装置においては、アドレスバスやデータバスを伝播するデータとしては、8B10B変換を用いた10ビットのDコード表現のデータが採用された。しかしながら本発明の実施の形態は、上述の例に限定されるものではない。次のような規則を有するデータをアドレスバスやデータバスに伝搬させることができる情報処理装置であれば、本発明は適用可能である。即ち、伝送データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする、という規則で伝搬される情報処理装置一般に本発明は適用可能である。
【0128】
ところで、上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウェアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【0129】
コンピュータでは、CPU1が、例えば次のような動作をすることにより、上述した一連の処理が行われる。即ち、例えば、CPU1が、ROM6−1に記憶されているプログラムを、RAM6−2や不揮発性メモリ6−3にロードして実行することにより、上述した一連の処理が行われる。
【0130】
コンピュータ(CPU1)が実行するプログラムは、例えば、パッケージメディア等としての図示せぬリムーバブルメディアに記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。コンピュータでは、プログラムは、リムーバブルメディアをドライブに装着することにより、メモリ6−1や図示せぬハードディスク等にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、10ビットデータバス27を介して受信し、ROM6−1や図示せぬハードディスク等にインストールすることができる。その他、プログラムは、ROM6−1や図示せぬハードディスク等に、あらかじめインストールしておくことができる。なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【符号の説明】
【0131】
1 CPU, 2 エンコーダ/デコーダ, 3 乱数発生部, 4 8B10B変換部, 5−1,5−2,5−3 10B8B変換部, 6−1 ROM, 6−2 RAM, 6−3 不揮発性メモリ, 7−1,8 8B10B変換調整部, 7−2,7−3 10B8B/8B10B変換部, 9 10B8B変換調整部, 10 入力部, 11 出力部, 22,23,24,25 制御線, 26 10ビットアドレスバス, 27 10ビットデータバス, 28 8ビットデータバス, 31 DMA部, 32−1,32−2,32−3 RD補正部
【技術分野】
【0001】
本発明は、情報処理装置及び方法、並びにプログラムに関し、特に、タンパ攻撃による内部データの漏洩を防止する情報処理装置及び方法、並びにプログラムに関する。
【背景技術】
【0002】
近年、IC(Integrated Circuit)カードの普及が著しい。このため、ICカードの不正なアクセスを目論む第三者が、その内部データを不正に読み出したり、書き換えたりすることで、ICカードに攻撃をしかけることがある。なお、以下、かかる攻撃をタンパ攻撃と称する。
【0003】
タンパ攻撃の手法として、ICチップの消費電力の変化を解析し、内部動作を調べることにより内部データを推定する手法が存在する。なお、以下、かかる手法を、電力解析法と称する。また、タンパ攻撃の手法として、ICチップから発生する電磁波の磁界の変化を解析し、内部動作を調べることにより内部データを推定する手法が存在する。なお、以下、かかる手法を、電磁波解析法と称する。
【0004】
さらに、タンパ攻撃の手法として、ICチップに光や放射線を照射することによって誤作動を誘発し、内部データを推定したり、不正に書き換えたりする手法が存在する。なお、以下、かかる手法を、光照射法と称する。さらにまた、タンパ攻撃の手法として、ICチップに対し、電気的信号を読み取るマイクロプローバ等を直接接触させて、内部データを取得する手法が存在する。なお、以下、かかる手法を、直接プロービング法と称する。
【0005】
これら多種多様な手法によりなされるタンパ攻撃に対しても、内部データの漏洩や改ざんを防止できるように、対タンパ性の向上がICカードに求められている。
【0006】
例えば、ICカードに含まれるICチップにおいては、バス上を伝搬している内部データが2進数で表現されている。ICチップには、内部データの通信に必要なデータ線があり、必要に応じてそのデータ線の誤りを検出する符号、即ちパリティビットが用いられている。ICチップは、パリティビットを用いてメモリデータの異常を検出することで、ICカードの信頼性の向上を図っている。しかしながら、パリティビットを用いる手法においては、内部データがバス上に伝搬されているときに、その情報の状態変化が、電流の変化や磁界の変化として現れてしまう。このため、電源ラインの消費電流や、または外部へ漏洩する磁界変化を介して、上述した電力解析法や電磁波解析法により内部データが漏洩する恐れがある。この内部データの漏洩に対する手法(以下、データ漏洩対策手法)として、従来例えば、次のような第1乃至第4のデータ漏洩対策手法が提案されている。
【0007】
従来の第1のデータ漏洩対策手法とは、アクセスメモリのアドレスを指定する手法である。この手法を採用することで、指定されたアドレス以外からの内部データへのアクセスを拒否することができる。
【0008】
従来の第2のデータ漏洩対策手法とは、内部データを、秘密鍵によって暗号化する暗号回路に対して転送する手法である。
【0009】
従来の第3のデータ漏洩対策手法とは、直接プロービング法によるタンパ攻撃に対する対策として、ICチップに微細加工を施す手法である。
【0010】
従来の第4のデータ漏洩対策手法とは、電力解析法によるタンパ攻撃に対する対策用として、特許文献1に開示されている手法である。即ち、特許文献1によれば、ターゲット回路に対してサブターゲット回路が設けられる。このサブターゲット回路にダミー信号を入力することで、ターゲット回路における消費電力と、サブターゲット回路における消費電力の和を略一定とする手法が、従来の第4のデータ漏洩対策手法である。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2005−322018号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、従来の第1のデータ漏洩対策手法では、アクセスメモリのアドレスを指定する場合に、同一のプログラムコードを毎回用いる。このため、第三者により同一アドレス信号が生成される場合がある。このような場合、内部データが漏洩する恐れがある。
【0013】
従来の第2のデータ漏洩手法では、暗号化回路に対して、同一パターンのデータが毎回転送される。よって、第三者により、この転送パターンが統計学的に解析される場合がある。このような場合、内部データが漏洩する恐れがある。
【0014】
従来の第3のデータ漏洩対策手法が採用された場合には、第三者により、直接プロービング法を用いて、同一プログラムによる処理の繰り返し状態が補足され、バスデータが1本ずつ個別にモニタリングされるおそれがある。このため、第三者により、個別にモニタしたバスデータが組み合わされて内部データが解析される場合がある。その結果、内部データが漏洩する恐れがある。
【0015】
従来の第4のデータ漏洩対策手法では、電力解析法によるタンパ攻撃の対策用としては好適であるが、他のタンパ攻撃手法の対策用としては一概に好適であるとはいえない。
【0016】
本発明は、このような状況に鑑みてなされたものであり、タンパ攻撃による内部データの漏洩を防止することができるようにするものである。
【課題を解決するための手段】
【0017】
本発明の一側面は、データを記憶する記憶手段と、前記記憶手段の所定のアドレスを指定して、前記アドレスからデータを読み出す処理を少なくとも実行する処理手段と、前記処理手段による前記アドレスの指定に関するアドレスデータを伝搬するアドレス伝搬手段と、前記処理手段、前記記憶手段、外部とのうち一方から他方へ前記データを伝搬するデータ伝搬手段と、前記アドレスデータの形態を、前記処理手段で取り扱う第1の形態から、データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする規則を有する第2の形態に変換して、前記アドレス伝搬手段に供給する第1の変換手段と、前記アドレス伝搬手段を伝搬されてきた前記アドレスデータの形態を、前記第2の形態から前記第1の形態に逆変換して、逆変換後の前記アドレスデータを用いて、前記記憶手段のアクセス制御をする第1の逆変換手段と、前記処理手段から供給された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に供給する第2の変換手段と、前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記処理手段に供給する第2の逆変換手段とを備える情報処理装置である。前記アドレス伝搬手段と前記データ伝搬手段とのうち少なくとも一方は、パラレル通信を行っており、前記第1の変換手段は、所定のタイミングで、前記第2の形態の前記アドレスデータまたは前記データの直前までの累積値を初期化し、その累積値の初期化を指示する制御データを第2の形態で生成し、前記アドレス伝搬手段を介して前記第1の逆変換手段に送信し、前記第1の逆変換手段は、前記制御データに従って前記累積値を初期化し、前記第2の形態の制御データを前記データ伝搬手段を介して前記第2の逆変換手段に送信する制御をし、前記第2の逆変換手段は、前記制御データに従って前記累積値を初期化し、その累積値の初期化を前記第2の変換手段に通知し、前記第2の変換手段は、前記第2の逆変換手段からの通知に従って、前記累積値を初期化する情報処理装置である。
【0018】
前記記憶手段は、前記データを前記第1の形態で記憶し、前記前記記憶手段から読み出された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に出力する第3の変換手段をさらに備えることができる。
【0019】
前記記憶手段は、前記データの書き込みが可能であり、前記第3の変換手段はさらに、前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記記憶手段に書き込むことができる。
【0020】
前記第1の変換手段は、さらに、前記アドレス伝搬手段を伝送するデータのアドレス伝搬エラーを監視し、前記アドレス伝搬エラーが発生した場合そのことを示す制御データを前記第2の形態で生成して、前記データ伝搬手段を介して前記処理手段に送信することができる。
【0021】
前記第2の変換手段は、さらに、前記データ伝搬手段を伝送するデータのデータ伝搬エラーを監視し、前記データ伝搬エラーが発生した場合そのことを示す制御データを前記第2の形態で生成して、前記アドレス伝搬手段を介して前記処理手段に送信することができる。
【0022】
本発明の一側面である情報処理装置の情報処理方法とプログラムのそれぞれは、上述した本発明の情報処理装置に対応する方法とプログラムのそれぞれである。
【0023】
本発明の一側面においては、データが記憶され、所定のアドレスが指定され、前記アドレスからデータを読み出す処理が少なくとも実行され、前記アドレスの指定に関するアドレスデータが伝搬される。前記データが伝搬され、前記アドレスデータの形態を、第1の形態から、データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする規則を有する第2の形態に変換される。伝搬されてきた前記アドレスデータの形態が、前記第2の形態から前記第1の形態に逆変換され、逆変換後の前記アドレスデータを用いて、アクセス制御される。さらに、前記データの形態が、前記第1の形態から前記第2の形態に変換され、伝搬されてきた前記データの形態が、前記第2の形態から前記第1の形態に逆変換される。所定のタイミングで、前記第2の形態の前記アドレスデータまたは前記データの直前までの累積値が初期化され、その累積値の初期化を指示する制御データが第2の形態で生成され、前記第1の逆変換手段に送信され、前記制御データに従って前記累積値が初期化される。前記第2の形態の制御データにより送信する制御がなされ、前記制御データに従って前記累積値が初期化され、その累積値の初期化が通知され、通知に従って、前記累積値が初期化される。
【発明の効果】
【0024】
本発明の一側面によれば、タンパ攻撃による内部データの漏洩を防止することができる。
【図面の簡単な説明】
【0025】
【図1】5B6B変換コードについて説明する図である。
【図2】3B4B変換コードについて説明する図である。
【図3】Dコードにおけるランニングディスパリティ値(Running Disparity値:以下、RD値と称する)の調整の規則について説明する図である。
【図4】8B10B変換により得られる、Kコードについて説明する図である。
【図5】Kコードに対して割り当てられた制御信号の一例を説明する図である。
【図6】本発明が適用された情報処理装置の第1の実施の形態の構成例を示す機能ブロック図である。
【図7】本発明が適用された情報処理方法の、第1の実施の形態の処理の一例を説明するフローチャートである。
【図8】8ビットの2進数表現と、10ビットのDコード表現における消費電力及び磁界の変化について説明する図である。
【図9】8ビット2進数表現における消費電流の分布について説明する図である。
【図10】10ビットDコード表現における消費電流の分布について説明する図である。
【図11】本発明が適用された情報処理装置の第2の実施の形態の構成例を示す機能ブロック図である。
【図12】本発明が適用された情報処理方法の、第2の実施の形態の処理の一例を説明するフローチャートである。
【発明を実施するための形態】
【0026】
以下、図面を参照して、本発明が適用される情報処理装置の実施の形態として、2の実施の形態(以下、それぞれ第1及び第2の実施の形態と称する)について説明する。よって、説明は以下の順序で行う。
1、本発明の概要
2、第1の実施の形態(入力:8ビットの2進数表現の例)
3、第2の実施の形態(入力:10ビットのDコード表現の例)
【0027】
<1.本発明の概要>
本発明が適用される情報処理装置においては、2進数表現のデータを、例えば、データの0と1の数が同じになるように変換するDCフリーコードを用いて変換する。具体的には例えば、DCフリーコードとしては、8B10B変換により得られるDコードが存在する。
【0028】
さらに、本発明が適用される情報処理装置は、内部データの通信をパラレル通信で行う。即ち、本発明が適用される情報処理装置は、アドレスバス、データバスが、パラレル接続された信号線で構成され、そのデータ表現として、DCフリーコードが適用される。換言すると、本発明が適用される情報処理装置は、DCフリーコードを用いてメモリアドレスの指示や、書き込み及び読み出し等のデータの伝送を行う。
【0029】
以下に、DCフリーコードの一例であるDコードを生成可能な8B10B変換について、その概略を説明する。
【0030】
[8B10B変換の概略の説明]
8B10B変換とは、8ビットの2進数表現のデータを、10ビットの2進数表現のデータに変換する手法であり、従来シリアル通信に適用されていた手法をいう。後述する本発明の第1及び第2の実施の形態では、8B10B変換が、パラレル通信に適用されている。
【0031】
8B10B変換においては、入力された8ビットの2進数表現のデータが、ビットウエイトの軽い順にABCDEの5ビットのデータと、FGHの3ビットのデータに分けられる。5ビットのデータは、6ビットのデータにビット変換される。また、3ビットのデータは、4ビットのデータにビット変換される。ビット変換後の6ビットのデータと4ビットのデータが合成されて、計10ビットのデータが得られる。このようにして、8ビットの2進数表現のデータが計10ビットのデータに変換される。なお8B10B変換には、法則性は特になく、後述する図1や図2に示される表が用いられる。
【0032】
8B10B変換により得られる10ビットのデータは、データそのものを示すDコードと、制御信号を示すKコードとに大別できる。Dコードは、シンボルD.x.y(xは00乃至31の整数、yは0乃至6の整数、及びP7,A7)で表現される。以下、この表現をDコード表現と称する。また、Kコードは、シンボルK.x.y(xは00乃至31の整数、yは0乃至7の整数)で表現される。以下、この表現をKコード表現と称する。
【0033】
さらにシンボルD.x.y、及びK.x.yには、それぞれ2種類のデータが存在する。これら2種類のデータのどちらを出力するかは、ランニングディスパリティ値(Running Disparity値:以下、RD値と称する)により決定される。RD値は、連続するデータの各ビットに対し、10ビット表現の1の数と0の数とを累計し、1の数と0の数の差分を見る値である。8B10B変換においては、RD値が例えば±1の範囲の値になるように、Dコードの発生パターンが切り替えられる。
【0034】
即ち、8B10B変換においては、RD値が例えば±1の範囲を超えた値となった場合は、データに何らかのエラーがあることが判る。また、8B10B変換においては、RD値の初期値(以下、RD初期値と称する)が乱数により選択された後、8B10B変換が開始される。よって、同じデータでもDコードの発生パターンが変わるという特徴がある。さらに、8B10B変換においては、1024のパターンのうち、Dコードとして255を選択して使うので、残りのパターン(DCフリーコードの特徴をもつパターン)のKコードを、制御パターンのコードとしてパラレルバスに流すことで、周辺装置をコントロールすることができる。
【0035】
図1は、8ビットの2進数表現のデータのうち5ビットのデータEDCBAが、6ビットのデータabcdeiにビット変換される場合の対応関係を示している。なお、以下、このようなビット変換を、5B6B変換と称する。また、5B6B変換により得られるデータabcdeiを、5B6Bコードと称する。データを示す5B6Bコードは、D.xと表現される。制御信号を示す5B6Bコードは、K.xと表現される。
【0036】
図2は、8ビットの2進数表現のデータのうち3ビットのデータHGFが、4ビットのデータfghjにビット変換される場合の対応関係を示している。なお、以下、このようなビット変換を、3B4B変換と称する。また、3B4B変換により得られるデータfghjを、3B4Bコードと称する。データを示す3B4Bコードは、D.x.yと表現される。制御信号を示す3B4Bコードは、K.x.yと表現される。
【0037】
なお、D.x.yと表現される3B4Bコードのうち、D.x.P7及びD.x.A7については、シリアル通信の場合には、直前のデータの値によって、どちらか一方を選択することになっている。しかしながら、パラレル通信の場合には、どちらか一方を選択する必要はなく、常にD.x.P7を使用することができる。
【0038】
上述した図1と図2を用いて説明した5B6Bコードと3B4Bコードを組み合わせることにより、Dコード(D.x.y)やKコード(K.x.y)が生成される。具体的には例えば、データを示す5B6Bコード(D.00)と、データを示す3B4Bコード(D.x.0)を組み合わせた場合には、Dコードは、D.00.0となる。また例えば、制御信号を示す5B6Bコード(K.28)と、制御信号を示す3B4Bコード(K.x.0)を組み合わせた場合には、Kコードは、K.28.0となる。なお、Kコードの一例については、図4を用いて後述する。
【0039】
図3は、DコードにおけるRD値の調整の規則について説明する図である。
【0040】
図3において、「前のRD値」には、直前までに変換済の1以上の10ビットのDコード表現のデータについてのRD値であって、今回の8B10B変換に用いられるRD値が記述されている。「8B10B変換後のデータのディスパリティ値」には、今回変換対象の10ビットのDコード表現のデータ内のディスパリティ値が記述されている。「次のRD値」には、今回変換対象の10ビットのDコード表現のデータも含めたに変換済の複数の10ビットのDコード表現のデータについてのRD値であって、次回の8B10B変換に用いられるRD値が記述されている。
【0041】
即ち、DコードにおけるRD値の調整の規則とは、同一行において、「前のRD値」を用いて8B10B変換が行われた場合に生成される10ビットのDコード表現のデータの「8B10B変換後のデータのディスパリティ値」によって、「次のRD値」が決定される、という規則である。
【0042】
図4は、制御用信号を示すKコードの一例である。Kコードは、上述したように、制御信号を示す5B6Bコードと、制御信号を示す3B4Bコードとの組み合わせにより構成される。これにより、図4の例に示されるような複数の種類のKコードを生成することができる。
【0043】
図5は、Kコードに対して割り当てられた制御信号の一例を説明する図である。例えば後述する第1の実施形態では、Initializeという制御信号が使用される。よって、このような場合には、図5の1行目に示されるように、K.28.7というKコードが用いられることになる。なお、Kコードに対して割り当てる制御信号の種類は、図5の例に特に限定されない。即ち、8B10B変換においては、Kコードに、各種の機能を実行する制御信号が任意に割り当てることが可能である。
【0044】
以上、図1乃至図5を用いて、8B10B変換について説明した。次に、本発明が適用される情報処理装置の第1の実施の形態として、8B10B変換が適用された情報処理装置について説明する。
【0045】
<2.第1の実施の形態>
[情報処理装置の第1の実施の形態の構成例]
図6は、本発明を適用した情報処理装置の第1の実施の形態の構成例を示すブロック図である。
【0046】
図6の例の情報処理装置には、CPU(Central Processing Unit)1、エンコーダ/デコーダ2、乱数発生部3、8B10B変換部4、10B8B変換部5−1,5−2、及び5−3が設けられている。図6の例の情報処理装置にはまた、ROM(Read Only Memory)(メモリ)6−1、RAM(Random Access Memory)(メモリ)6−2、不揮発性メモリ6−3が設けられている。図6の例の情報処理装置にはまた、8B10B変換調整部7−1、10B8B/8B10B変換調整部7−2,7−3、8B10B変換調整部8、及び10B8B変換調整部9が設けられている。図6の例の情報処理装置にはさらにまた、入力部10、出力部11、制御線22−1,22−2、22−3,及び25、10ビットアドレスバス26、10ビットデータバス27、8ビットデータバス28が設けられている。なお、以下、10B8B変換部5−1,5−2及び5−3を個々に区別する必要がない場合、これらをまとめて10B8B変換部5と称する。また、ROM(メモリ)6−1、RAM(メモリ)6−2、不揮発性メモリ6−3をメモリという観点で個々に区別する必要がない場合、これらをまとめて、メモリ6と称する。また、制御線22−1乃至22−3を個々に区別する必要がない場合、これらをまとめて、制御線22と称するとする。
【0047】
CPU1には、エンコーダ/デコーダ2及び乱数発生部3が接続されている。
【0048】
CPU1は、情報処理装置全体を制御する。エンコーダ/デコーダ2は、CPU1に入出力されるデータに対し、必要に応じて符号化または復号化処理を施す。乱数発生部3は、乱数を発生し、CPU1を介して8B10B変換部4に出力する。この乱数は、後述するRD初期値を設定するために用いられる。CPU1にはまた、8B10B変換部4が接続されている。8B10B変換部4にはまた、10ビットアドレスバス26を介して10B8B変換部5が接続されている。10B8B変換部5にはメモリ6が接続されている。即ち、後述するように、アドレスデータは、CPU1とメモリ6内では8ビットの2進数表現のデータとして取り扱われる。一方、8B10B変換部4と10B8B変換部5との間の10ビットアドレスバス26においては、アドレスデータは、10ビットのDコード表現の形態で伝送される。CPU1にはまた、8ビットデータバス28を介して、入力部10、出力部11、8B10B変換調整部8、及び10B8B変換調整部9が接続されている。
【0049】
入力部10は、外部から8ビットの2進数表現のデータを入力し、8ビットデータバス28を介してCPU1に出力する。
【0050】
出力部11は、CPU1から8ビットデータバス28を介して供給された8ビットの2進数表現のデータを、外部に出力する。
【0051】
8B10B変換調整部8と10B8B変換調整部9とにはまた、10ビットデータバス27を介して、8B10B変換調整部7−1及び10B8B/8B10B変換調整部7−2,7−3が接続されている。8B10B変換調整部7−1及び10B8B/8B10B変換調整部7−2,7−3にはそれぞれ、ROM(メモリ)6−1、RAM(メモリ)6−2、及び不揮発性メモリ6−3がそれぞれ接続されている。即ち、後述するように、メモリ6に読み書きされるデータは、CPU1とメモリ6内では8ビットの2進数表現のデータとして取り扱われる。一方、8B10B変換調整部8及び10B8B変換調整部9と、8B10B変換調整部7−1及び10B8B/8B10B変換調整部7−2,7−3との間では、即ち、10ビットデータバス27においては、データは、10ビットのDコード表現の形態で伝送される。
【0052】
以下、図3の例の情報処理装置の内部データがメモリ6から読み出される動作を例として、各構成要素の機能を適宜説明していく。なお、最初の内部データの読み出しの前には、RD値の初期化が行われる。ただし、RD値の初期化を行う場合の各構成要素の機能の説明については、後述する図7の処理の説明の中で行う。
【0053】
RD値の初期化が行われた後、8B10B変換部4は、CPU1からの8ビットの2進数表現のデータ、例えば、読み出し対象のメモリ6のメモリアドレスに対して、8B10B変換に従った処理(以下、8B10B変換処理と称する)を施す。これにより、メモリアドレスは、10ビットのDコード表現のデータとなる。なお、アドレスサイズの拡張はKコードを用いて拡張することができる。10ビットのDコード表現のデータは、10ビットアドレスバス26を介して、10B8B変換部5に伝送される。
【0054】
10B8B変換部5は、10ビットのDコード表現のデータを、8ビットの2進数表現のデータに変換する。なお、以下、このように、10ビットのDコード表現のデータを、8ビットの2進数表現のデータに変換する手法を、10B8B変換と称する。また、10B8B変換に従って実行される処理を、10B8B変換処理と称する。即ち、10B8B変換部5は、10ビットのDコード表現のデータに対して10B8B変換処理を施す。このような10B8B変換処理の結果得られるメモリアドレスに基づいて、読み出し対象のメモリ6のアクセスが制御される。なお、この制御には、所定の種類のKコードが用いられる場合もある。
【0055】
8B10B変換調整部7−1、または10B8B/8B10B変換調整部7−2若しくは7−3は、メモリ6から読み出したデータに対して8B10B変換処理を施し、その結果得られる10ビットのDコード表現のデータを、10ビットデータバス27に出力する。10ビットのDコード表現のデータは、10ビットデータバス27を介して、10B8B変換調整部9に供給される。10B8B変換調整部9は、10ビットのDコード表現のデータに対して10B8B変換処理を施し、その結果得られる8ビットの2進数表現のデータを、8ビットデータバス28を介して、CPU1に供給する。
【0056】
以上、図6の例の情報処理装置の内部データがメモリ6から読み出される動作を例として、各構成要素の機能を説明した。
【0057】
さらに、以下、図6の情報処理装置がデータをメモリ6に書き込む動作を例として、各構成要素の機能を説明する。
【0058】
書き込み動作の場合におけるRD値の初期化やメモリ6のアクセス制御は、読み出しの動作の場合と基本的に同様である。即ち、メモリアドレスやKコードは、CPU1とメモリ6との間においては、より正確には、8B10B変換部4と10B8B変換部5との間の10ビットアドレスバス26においては、10ビットのDコード表現の形態で伝送される。書き込み対象のデータは、8ビットの2進数表現の形態で、CPU1から出力され、8ビットデータバス28を介して、8B10B変換調整部8に供給される。
【0059】
8B10B変換調整部8は、8ビットの2進数表現のデータに対して8B10B変換処理を施し、その結果得られる10ビットのDコード表現のデータを、10ビットデータバス27に出力する。10ビットのDコード表現のデータは、10ビットデータバス27を介して、10B8B/8B10B変換調整部7−2または7−3に供給される。なお、以下、10B8B/8B10B変換調整部7−2,7−3を個々に区別する必要がない場合、これらをまとめて10B8B/8B10B変換調整部7と称する。
【0060】
10B8B/8B10B変換調整部7は、10ビットのDコード表現のデータに対して10B8B変換処理を施し、その結果得られる8ビットの2進数表現のデータをメモリ6に書き込む。
【0061】
以上、図6の例の情報処理装置が有する機能のうち、データの読み書き機能を実現させるという観点で、各構成要素の機能を説明した。
【0062】
なお、図6の例の情報処理装置は、データの読み書き機能に加えて、さらに、読み書き中のデータのエラーを検出する機能も有している。ただし、かかる機能を実現させるという観点での各構成要素の機能の説明については、後述する図7の処理の説明の中で行う。
【0063】
[情報処理装置の第1の実施の形態における処理の説明]
図7は、図6の例の情報処理装置が実行する処理の一例を説明するフローチャートである。
【0064】
図7の例のフローチャートには、RD値の初期化を行う一連の処理が示されている。なお、以下、かかる一連の処理を、RD値初期化処理と称する。また、図7の例のフローチャートには、10ビットアドレスバス26を伝送しているデータ、即ち、10ビットのDコード表現のデータにエラー(以下、アドレスバスエラーと称する)が発生した場合において、そのことを通知するまでの一連の処理が示されている。なお、以下、かかる一連の処理を、アドレスバスエラー通知処理と称する。さらにまた、図7の例のフローチャートには、10ビットデータバス27を伝送している10ビットのDコード表現のデータにエラー(以下、データバスエラーと称する)が発生した場合において、そのことを通知するまでの一連の処理が示されている。
【0065】
また、図7には、図中左方から、8B10B変換部4、10B8B変換部5−1、8B10B変換調整部7−1、10B8B変換調整部9、およびCPU1のそれぞれについての処理のフローチャートが図示されている。各フローチャート間に示される矢印は、情報(データ)の流れを示している。なお、この段落の内容は、後述する図12についても同様にあてはまるとする。
【0066】
なお、図7の例のフローチャートにおいて、処理の主体を10B8B変換部5−1としている箇所については、10B8B変換部5−2,5−3においても同様の処理が行われるものとする。また、処理の主体を8B10B変換調整部7−1としている箇所については、10B8B/8B10B変換調整部7−2,7−3においても同様の処理が行われるものとする。さらにまた、処理の主体が10B8B変換部5−2と10B8B/8B10B変換調整部7−2となる場合には、メモリ6としてはRAM(メモリ)6−2が用いられる。同様に、処理の主体が10B8B変換部5−3と10B8B/8B10B変換調整部7−3となる場合には、メモリ6として不揮発性メモリ6−3が用いられる。
【0067】
ステップS1乃至S7の処理は、RD値初期化処理である。例えば最初の内部データの読み出しや書き出しの前に、各ロジックがリセットされてから復帰されると、次のステップS1乃至S7のRD値初期化処理が実行される。
【0068】
ステップS1において、8B10B変換部4は、乱数発生部3より発生された乱数に基づいて、RD初期値を決定して、RD値を初期化する。また、8B10B変換部4は、メモリ6のアドレスとRD初期値の設定を指示するKコード(以下、Initialize Kコードと称する)を生成する。なお、Initialize Kコードとしては、例えば図5に示されるK.28.7が採用される。
【0069】
ステップS2において、8B10B変換部4は、Initialize Kコードを、10ビットアドレスバス26を介して、10B8B変換部5−1に供給する。
【0070】
ステップS3において、10B8B変換部5−1は、8B10B変換部4から供給されたInitialize Kコードに従って、RD値を初期化する。また、10B8B変換部5は、RD値の初期化と同時に、ROM(メモリ)6−1の内部アドレスレジスタを初期化する。
【0071】
ステップS4において、10B8B変換部5−1は、制御線22−1を介して、RD値の初期化を指示する。具体的には、10B8B変換部5−1は、8B10B変換調整部7−1に対してRD値の初期化を指示する。
【0072】
ステップS5において、8B10B変換調整部7−1は、RD値を初期化する。
【0073】
ステップS6において、8B10B変換調整部7−1は、Initialize Kコードを、10ビットデータバス27を介して10B8B変換調整部9に供給する。
【0074】
ステップS7において、10B8B変換調整部9は、Initialize Kコードの指示に従い、RD値の初期化を行う。以上で、最初の内部データの読み出しや書き出しの前に、各ロジックがリセットされてから復帰されると実行される、RD値初期化処理が終了される。
【0075】
次に、情報処理装置にアドレスバスエラーが発生した場合のアドレスバスエラー通知処理について説明する。ステップS8乃至S12は、アドレスバスエラー通知処理である。
【0076】
ステップS8において、8B10B変換部4は、10ビットのDコード表現のデータを、10B8B変換部5−1に供給する。
【0077】
ここで、アドレスバスエラーが発生したとする。
【0078】
ステップS9において、10B8B変換部5−1は、アドレスバスエラーが発生したことを検出し、ROM(メモリ)6−1を不活性にする。そして、10B8B変換部5−1は、制御線22−1を介して、8B10B変換調整部7−1に対して、アドレスバスエラーが発生したことを通知する。
【0079】
ステップS10において、8B10B変換調整部7−1は、アドレスバスエラーを示すKコード(以下、アドレスバスエラーKコードと称する)を生成する。
【0080】
ステップS11において、8B10B変換調整部7−1は、アドレスバスエラーKコードを10ビットデータバス27を介して10B8B変換調整部9に供給する。
【0081】
ステップS12において、10B8B変換調整部9は、アドレスバスエラーKコードが供給されると、制御線25を介して、CPU1にアドレスバスエラーを通知する。以上で、情報処理装置にアドレスバスエラーが発生した場合のアドレスバスエラー通知処理が終了される。
【0082】
次に、情報処理装置にデータバスエラーが発生した場合のデータバスエラー通知処理について説明する。
【0083】
ステップS13において、8B10B変換調整部7−1は、ROM(メモリ)6−1から読み出したデータについて、10ビットのDコード表現のデータを10B8B変換調整部9に出力する。
【0084】
ここで、例えばタンパ攻撃によるデータバスエラーが発生したとする。
【0085】
ステップS14において、10B8B変換調整部9は、データバスエラーを検出した場合、制御線25を介してCPU1にデータエラーを通知する。以上で、情報処理装置にデータバスエラーが発生した場合のデータバスエラー通知処理が終了される。
【0086】
以上のデータバスエラー通知処理の例においては、10B8B変換調整部9がデータバスエラーを検出した場合について説明した。しかしながら、8B10B変換調整部7−1がデータバスエラーを検出することもありうる。この場合、8B10B変換調整部7−1は、データバスエラーKコードを生成し、10B8B変換調整部9にデータバスエラーKコードを供給する。その後は、上述したステップS14以降の処理が施される。
【0087】
またさらに、8B10B変換調整部8が、データバスエラーを検出することもありうる。この場合、8B10B変換調整部8がデータバスエラーKコードを生成し、10B8B変換調整部9にデータバスエラーKコードを供給する。その後は、上述したステップS14以降の処理が施される。またさらに、8B10B変換調整部8は、10ビットデータバス27を伝送している10ビットのDコード表現のデータをモニタし、RD値が一致するように調整することもできる。
【0088】
以上、第1の実施の形態の情報処理装置の構成例とその処理について説明した。次に、図8乃至図10を参照して、第1の実施形態の情報処理装置が奏することができる効果について説明する。
【0089】
図8は、8ビットの2進数表現のデータと、10ビットのDコード表現のデータの電流変化及び磁界変化について説明するための図である。なお、図8においては、8B10B変換部4の左側に8ビットの2進数表現のデータが示されている。また、図8においては、8B10B変換部4の右側に10ビットのDコード表現のデータが示されている。またさらに、図8においては、発生する磁界の大きさと分布が、点線の円として示されている。
【0090】
図8を参照して、8ビットの2進数表現のデータにおける磁界の変化と、10ビットのDコード表現のデータにおける磁界の変化を比較する。8ビットの2進数表現のデータでは、隣接する各ビットの0と1は無関係に発生する。よって、例えば8ビットの2進数表現のデータの値が0や255である場合に、磁界の変化が大きい。具体的には例えば、8ビットの2進数表現のデータで255を表現する場合、対応する全てのバスドライバがON状態となる。すると、回路全体を囲む大きな磁界(図中点線で示される磁界)が発生する。即ち、回路全体が大きなアンテナを構成しているような状態となる。従って、第三者が電磁波解析法を用いて容易に内部データを推定する恐れがある。
【0091】
これに対し、10ビットのDコード表現のデータにおいては、隣接する各ビットの0と1は3個以上連続して発生しない規則を有している。さらに、直前に入力された10ビットのDコード表現のデータと、継続して入力される10ビットのDコード表現のデータとの合計20ビットのデータにおいては、0と1の総数は完全に一致する。このため10ビットのDコード表現のデータの値が0や255の場合も、磁界は近傍でのみ発生する。従って、第三者が、電磁波解析法により内部データを推定することは、非常に困難となる。具体的には例えば、10ビットのDコード表現のデータで255を表現する場合、各バスドライバは、間欠的にON状態となる。このため、バスドライバの近傍に、個々に小さな磁界(図中点線で示される磁界)が発生する。換言すると、回路の周囲に小さなアンテナが細かく分布しているような状態となるため、磁界が遠くまで届かない。よって、第三者による電磁波解析法を用いた内部データの推定は困難となる。
【0092】
次に、図9及び図10を用いて、8ビットの2進数表現のデータにおける消費電流と、10ビットのDコード表現のデータにおける消費電流について比較する。図9には、8ビットの2進数表現のデータを用いて0乃至255を表現する場合の、各ビットにおけるビット1の発生数の分布が示されている。図10には、10ビットのDコード表現のデータを用いて値0乃至255を表現する場合の、各ビットにおけるビット1の発生数の分布が示されている。なお、ビット1の発生数の分布は、電流変化の分布をそのまま表している。例えば、各バスドライバの消費電流が1mAであると仮定すると、それぞれの回路における電流変化は、以下のようになる。8ビットの2進数表現のデータにおいては、回路全体の消費電力は、1乃至8mAの範囲で常時変化する。従って、回路全体の消費電力を解析し、内部動作を調べることにより内部データを推定する電力解析法を用いて、第三者により容易に内部データが推定される恐れがある。これに対し、10ビットのDコード表現のデータにおいては、消費電流は4mAから6mAの範囲内でしか変化しない。さらに、複数バイトの消費電流の平均値は、およそ5mAとなり、平均化される。従って、電力解析法を用いた第三者による内部データの推定は、非常に困難となる。
【0093】
以上、第1の実施の形態の情報処理装置について説明した。第1の実施の形態では、外部から8ビットの2進数表現のデータが入力され、また、メモリのデータも8ビットの2進数表現で読み出し及び書き込みが行われる場合の実施の形態であった。
【0094】
<3、第2の実施の形態>
これに対して、第2の実施の形態の情報処理装置と外部との間のデータの授受は、10ビットのDコード表現であるとする。例えば、10ビットのDコード表現を用いたイーサネット(登録商標)やHDMI(High-Definition Multimedia Interface)機器との間でデータの通信が行われる場合に、第2の実施形態を適用できる。また例えば、外部装置として8B10B変換装置が用いられており、直接10ビットのDコード表現のデータが入力される場合に、第2の実施形態適用できる。
【0095】
[情報処理装置の第2の実施の形態の構成例]
図11は、本発明を適用した情報処理装置の第2の実施の形態の構成例を示すブロック図である。
【0096】
図11において、図6と対応する箇所には対応する符号が付してあり、それらの説明は適宜省略する。
【0097】
図11の例の情報処理装置には、図6の構成に対して、10B8B変換部5からの制御線22が省略され、8B10B変換調整部7−1及び10B8B/8B10B変換調整部7−2,7−3のそれぞれの代わりに、RD補正部32−1,32−2、及び32−3が設けられている。また、図11の例の情報処理装置は、外部との間で10ビットのDコード表現のデータを入出力する。このため、入力部10と出力部11は、10ビットデータバス27に接続されている。また、図11の例の情報処理装置には、DMA(Direct Memory Access)部31が設けられている。
なお、以下、RD補正部32−1,32−2、及び32−3を個々に区別する必要がない場合、これらをまとめて、RD補正部32と称するとする。
【0098】
図11の例の10B8B変換部31は、Initialize Kコードを受信した場合、またはアドレスバスエラーを検出した場合に、後に続くブロックへの伝達の処理として、図6の例の10B8B変換部5とは異なる処理を実行する。
【0099】
即ち、図11の例の10B8B変換部31は、メモリ6に予め保持されているアドレスバスエラーKコードやInitialize Kコードを、RD補正部32に出力させる。換言すると、第2の実施の形態のメモリ6には、アドレスバスエラーKコードや、Initialize Kコードが予め保持されている。
【0100】
このため、図11の例の情報処理装置においては、図6の例では必要であった制御線22が不要となる。
【0101】
RD補正部32は、ランダムに読み出される10ビットのDコード表現のRD値が、±1の範囲を超えないように、5B6Bコードと3B4Bコードの組み合わせを適切に反転させる。
【0102】
具体的には、たとえば、メモり6のメモリアドレスの00,01,02に、D.03.0(RD=-1)、D.03.3(RD=+1)、D.03.4(RD=-1)というDコード表現のデータが書き込まれたとする。これらのDコード表現のデータが、00,02,00,02という順で読み出された場合、最終的なRD値は、-4となり、RD値の規定の範囲、例えば、RD=±1の範囲を超えてしまう。よって、RD補正部32は、このような場合には、例えば2番目と3番目のDコードをD.03.3(RD=-1)に変換してRD値をゼロにする処理を施すことで、RD値の規定の範囲内に調整する。
【0103】
DMA部31は、CPU1を介さずに直接メモリ6とデータ転送を行う。
【0104】
以上のような構成をもつことにより、第2の実施の形態においては、10ビットのDコード表現のデータを用いたイーサネット(登録商標)やHDMI機器との接続を容易にすることができる。さらに、第2の実施の形態においては、電源の瞬断などの外部要因で、メモリ書き込みデータにエラーが生じた場合におけるエラーの検出を容易にすることができる。
【0105】
また、第1の実施の形態においては、メモリ6に対して直接タンパ攻撃が行われた場合には、対処することができない。しかしながら、第2の実施の形態においては、メモリ6の内部データも、10ビットのDコード表現のデータで読み出し及び書き込みを行う。このため、第2の実施の形態においては、メモリ6に直接タンパ攻撃が行われた場合においても、高い対タンパ性を発揮することが可能となる。
【0106】
またさらに、第2の実施の形態においても、図8乃至図10を参照して上述した、第1の実施の形態の情報処理装置が奏することのできる効果と同様の効果を奏することができる。
【0107】
[情報処理装置の第2の実施の形態における処理の説明]
図12は、本発明が適用される情報処理装置の第2の実施の形態における処理の一例を説明するフローチャートである。
【0108】
図12の例のフローチャートには、RD値初期化処理、アドレスバスエラー通知処理、及びデータバスエラー通知処理が示されている。
【0109】
図12の例のフローチャートにおけるステップS21,S22の処理は、図7の例のフローチャートにおけるステップS1,S2の処理と同様の処理である。このため、その説明を省略する。
【0110】
ステップS23において、10B8B変換部5−1は、8B10B変換部4から供給されたInitialize Kコードに従って、RD値を初期化する。また、10B8B変換部5−1は、RD値の初期化と同時に、ROM(メモリ)6−1の内部アドレスレジスタを初期化する。
【0111】
ステップS24において、10B8B変換部5−1は、ROM(メモリ)6−1に対し、ROM(メモリ)6−1に保持されているInitialize Kコードの出力を指示する。
【0112】
ステップS25において、ROM(メモリ)6−1は、Initialize KコードをRD補正部32−1に出力する。
【0113】
ステップS26において、RD補正部32−1は、ROM(メモリ)6−1から供給されたInitialize Kコードの指示に基づいて、RD値を初期化する。
【0114】
ステップS27において、RD補正部32−1は、Initialize Kコードを、10ビットデータバス27を介して10B8B変換調整部9に出力する。
【0115】
図12の例のフローチャートにおけるステップS28,S29の処理は、図7の例のフローチャートにおけるステップS7,S8の処理と同様の処理である。このため、その説明を省略する。
【0116】
ステップS30において、10B8B変換部31−1は、ROM(メモリ)6−1に対し、ROM(メモリ)6−1に保持されているアドレスバスエラーKコードの供給を指示する。
【0117】
ステップS31において、ROM(メモリ)6−1は、アドレスバスエラーKコードをRD補正部32−1に出力する。
【0118】
ステップS32において、RD補正部32−1は、アドレスバスエラーKコードを、10ビットデータバス27を介して10B8B変換調整部9に出力する。
【0119】
図12の例のフローチャートにおけるステップS33の処理は、図7の例のフローチャートにおけるステップS12の処理と同様の処理である。このため、その説明を省略する。
【0120】
ステップS34において、RD補正部32−1は、ROM(メモリ)6−1から読み出したデータについて、10ビットのDコード表現のデータを、10B8B変換調整部9に出力する。
【0121】
図12の例のフローチャートにおけるステップS35の処理は、図7の例のフローチャートにおけるステップS14の処理と同様の処理である。このため、その説明を省略する。
【0122】
以上説明した本発明が適用される情報処理装置の第1の実施の形態、及び第2の実施の形態においては、次のような効果を奏することが可能になる。
【0123】
本発明が適用される情報処理装置においては、10ビットのDコード表現を用いてデータを表現する。このため、10ビットアドレスバス26や10ビットデータバス27において、各ビットが全て0、または全て1となる状態が発生しない。即ち、0と1の数が同数となるため、ON状態となっているトランジスタと、OFF状態となっているトランジスタの数が同一になり、総合的な消費電流は常に一定となる。よって、第三者による電力解析法を用いた攻撃に対して、高い対タンパ性を発揮する。また、本発明が適用される情報処理装置においては、磁界についても、10ビットアドレスバス26や10ビットデータバス27の総和としては、0となる。このため、第三者による電磁波解析法を用いた攻撃に対しても、高い対タンパ性を発揮する。
【0124】
また、本発明が適用される情報処理装置においては、電源の急峻な変化や、レーザ等による回路の誤作動のような外部からの遥動により、データが全て0または1になるエラーが生じた場合にも、このようなエラーを容易に検出することが可能となる。上述したように、タンパ攻撃の手法としての光照射法は、回路にレーザなどの光や放射線を照射することによって誤作動を誘発し、内部データを推定したり、不正に書き換えたりするものである。本発明が適用される情報処理装置においては、データを10ビットのDコード表現とすることによって、このような外部からの揺動によるデータのエラーを検出することが可能となる。
【0125】
さらに、本発明が適用される情報処理装置においては、同一のプログラムの実行においても、RD値を毎回変更することが出来る。よって、10ビットアドレスバス26や10ビットデータバス27に供給される10ビットのDコード表現のデータのパターンが毎回変化する。このため、本発明が適用される情報処理装置においては、第三者が外部からデータのパターンをモニタする手がかりが無くなる。またさらに、本発明が適用される情報処理装置においては、たとえば秘密鍵によって暗号化する暗号回路への転送においても、RD値をランダムに初期化することができる。よって、同一データであっても10ビットのDコード表現のデータのパターンが変化するため、このパターンを第三者が外部からモニタすることは困難となる。またさらに、本発明が適用される情報処理装置においては、同一プログラムが繰り返される状態でプロービングされる場合においても、毎回データのパターンが変化する。よって、複数のバスラインを同時にプロービングする必要があるため、微細加工のチップでは、第三者による攻撃は困難になる。
【0126】
例えば、DCフリーコードは、イーサネット(登録商標)やコンピュータの内部バス高速シリアル通信に使われている。このため本発明が適用される情報処理装置の第2の実施の形態においては、イーサネットデータの暗号化復号などの用途に対しては、データ変換の必要が無くなる、このため、第2の実施の形態においては、システム構成を容易にすることができる。
【0127】
なお、以上の例では、本発明が適用される情報処理装置におけるRD値の範囲を±1としたが、RD値の範囲は±1以上(例えば、RD=±2)でも本発明に適用可能である。しかしながら、上述の電力解析法や電磁波解析法を用いた攻撃に対する対タンパ性を考慮すると、RD値の範囲は±1とするのが好適である。さらに以上の例では、本発明が適用される情報処理装置においては、アドレスバスやデータバスを伝播するデータとしては、8B10B変換を用いた10ビットのDコード表現のデータが採用された。しかしながら本発明の実施の形態は、上述の例に限定されるものではない。次のような規則を有するデータをアドレスバスやデータバスに伝搬させることができる情報処理装置であれば、本発明は適用可能である。即ち、伝送データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする、という規則で伝搬される情報処理装置一般に本発明は適用可能である。
【0128】
ところで、上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウェアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【0129】
コンピュータでは、CPU1が、例えば次のような動作をすることにより、上述した一連の処理が行われる。即ち、例えば、CPU1が、ROM6−1に記憶されているプログラムを、RAM6−2や不揮発性メモリ6−3にロードして実行することにより、上述した一連の処理が行われる。
【0130】
コンピュータ(CPU1)が実行するプログラムは、例えば、パッケージメディア等としての図示せぬリムーバブルメディアに記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。コンピュータでは、プログラムは、リムーバブルメディアをドライブに装着することにより、メモリ6−1や図示せぬハードディスク等にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、10ビットデータバス27を介して受信し、ROM6−1や図示せぬハードディスク等にインストールすることができる。その他、プログラムは、ROM6−1や図示せぬハードディスク等に、あらかじめインストールしておくことができる。なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【符号の説明】
【0131】
1 CPU, 2 エンコーダ/デコーダ, 3 乱数発生部, 4 8B10B変換部, 5−1,5−2,5−3 10B8B変換部, 6−1 ROM, 6−2 RAM, 6−3 不揮発性メモリ, 7−1,8 8B10B変換調整部, 7−2,7−3 10B8B/8B10B変換部, 9 10B8B変換調整部, 10 入力部, 11 出力部, 22,23,24,25 制御線, 26 10ビットアドレスバス, 27 10ビットデータバス, 28 8ビットデータバス, 31 DMA部, 32−1,32−2,32−3 RD補正部
【特許請求の範囲】
【請求項1】
データを記憶する記憶手段と、
前記記憶手段の所定のアドレスを指定して、前記アドレスからデータを読み出す処理を少なくとも実行する処理手段と、
前記処理手段による前記アドレスの指定に関するアドレスデータを、伝搬するアドレス伝搬手段と、
前記処理手段、前記記憶手段、外部とのうち一方から他方へ前記データを伝搬するデータ伝搬手段と、
前記アドレスデータの形態を、前記処理手段で取り扱う第1の形態から、データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする規則を有する第2の形態に変換して、前記アドレス伝搬手段に供給する第1の変換手段と、
前記アドレス伝搬手段を伝搬されてきた前記アドレスデータの形態を、前記第2の形態から前記第1の形態に逆変換して、逆変換後の前記アドレスデータを用いて、前記記憶手段のアクセス制御をする第1の逆変換手段と、
前記処理手段から供給された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に供給する第2の変換手段と、
前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記処理手段に供給する第2の逆変換手段と
を備え、
前記アドレス伝搬手段と前記データ伝搬手段とのうち少なくとも一方は、パラレル通信を行っており、
前記第1の変換手段は、所定のタイミングで、前記第2の形態の前記アドレスデータまたは前記データの直前までの累積値を初期化し、その累積値の初期化を指示する制御データを第2の形態で生成し、前記アドレス伝搬手段を介して前記第1の逆変換手段に送信し、
前記第1の逆変換手段は、前記制御データに従って前記累積値を初期化し、前記第2の形態の制御データを前記データ伝搬手段を介して前記第2の逆変換手段に送信する制御をし、
前記第2の逆変換手段は、前記制御データに従って前記累積値を初期化し、その累積値の初期化を前記第2の変換手段に通知し、
前記第2の変換手段は、前記第2の逆変換手段からの通知に従って、前記累積値を初期化する
情報処理装置。
【請求項2】
前記記憶手段は、前記データを前記第1の形態で記憶し、
前記前記記憶手段から読み出された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に出力する第3の変換手段
をさらに備える請求項1に記載の情報処理装置。
【請求項3】
前記記憶手段は、前記データの書き込みが可能であり、
前記第3の変換手段はさらに、前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記記憶手段に書き込む
請求項2に記載の情報処理装置。
【請求項4】
前記第1の変換手段は、さらに、前記アドレス伝搬手段を伝送するデータのアドレス伝搬エラーを監視し、前記アドレス伝搬エラーが発生した場合そのことを示す制御データを前記第2の形態で生成して、前記データ伝搬手段を介して前記処理手段に送信する
請求項1に記載の情報処理装置。
【請求項5】
前記第2の変換手段は、さらに、前記データ伝搬手段を伝送するデータのデータ伝搬エラーを監視し、前記データ伝搬エラーが発生した場合そのことを示す制御データを前記第2の形態で生成して、前記アドレス伝搬手段を介して前記処理手段に送信する
請求項1に記載の情報処理装置。
【請求項6】
データを記憶する記憶手段と、
前記記憶手段の所定のアドレスを指定して、前記アドレスからデータを読み出す処理を少なくとも実行する処理手段と、
前記処理手段による前記アドレスの指定に関するアドレスデータを、伝搬するアドレス伝搬手段と、
前記処理手段、前記記憶手段、外部とのうち一方から他方へ前記データを伝搬するデータ伝搬手段と
を備え、前記アドレス伝搬手段と前記データ伝搬手段とのうち少なくとも一方は、パラレル通信を行っている
情報処理装置が実行するステップとして、
前記アドレスデータの形態を、前記処理手段で取り扱う第1の形態から、データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする規則を有する第2の形態に変換して、前記アドレス伝搬手段に供給する第1の変換ステップと、
前記アドレス伝搬手段を伝搬されてきた前記アドレスデータの形態を、前記第2の形態から前記第1の形態に逆変換して、逆変換後の前記アドレスデータを用いて、前記記憶手段のアクセス制御をする第1の逆変換ステップと、
前記処理手段から供給された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に供給する第2の変換ステップと、
前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記処理手段に供給する第2の逆変換ステップと、
所定のタイミングで、前記第2の形態の前記アドレスデータまたは前記データの直前までの累積値を初期化する初期化ステップと
を含み、
前記初期化ステップの処理においては、前記累積値の初期化を指示する制御データが用いられ、前記制御データが伝搬される場合、前記第2の形態で、前記データ伝送手段または前記アドレス伝搬手段を伝送される
情報処理方法。
【請求項7】
データを記憶する記憶手段と、
前記記憶手段の所定のアドレスを指定して、前記アドレスからデータを読み出す処理を少なくとも実行する処理手段と、
前記処理手段による前記アドレスの指定に関するアドレスデータを、伝搬するアドレス伝搬手段と、
前記処理手段、前記記憶手段、外部とのうち一方から他方へ前記データを伝搬するデータ伝搬手段と
を備え、前記アドレス伝搬手段と前記データ伝搬手段とのうち少なくとも一方は、パラレル通信を行っている
情報処理装置を制御するコンピュータに実行させるステップとして、
前記アドレスデータの形態を、前記処理手段で取り扱う第1の形態から、データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする規則を有する第2の形態に変換して、前記アドレス伝搬手段に供給する第1の変換ステップと、
前記アドレス伝搬手段を伝搬されてきた前記アドレスデータの形態を、前記第2の形態から前記第1の形態に逆変換して、逆変換後の前記アドレスデータを用いて、前記記憶手段のアクセス制御をする第1の逆変換ステップと、
前記処理手段から供給された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に供給する第2の変換ステップと、
前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記処理手段に供給する第2の逆変換ステップと、
所定のタイミングで、前記第2の形態の前記アドレスデータまたは前記データの直前までの累積値を初期化する初期化ステップと
を含むプログラムであって、
前記初期化ステップの処理においては、前記累積値の初期化を指示する制御データが用いられ、前記制御データが伝搬される場合、前記第2の形態で、前記データ伝送手段または前記アドレス伝搬手段を伝送される
プログラム。
【請求項1】
データを記憶する記憶手段と、
前記記憶手段の所定のアドレスを指定して、前記アドレスからデータを読み出す処理を少なくとも実行する処理手段と、
前記処理手段による前記アドレスの指定に関するアドレスデータを、伝搬するアドレス伝搬手段と、
前記処理手段、前記記憶手段、外部とのうち一方から他方へ前記データを伝搬するデータ伝搬手段と、
前記アドレスデータの形態を、前記処理手段で取り扱う第1の形態から、データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする規則を有する第2の形態に変換して、前記アドレス伝搬手段に供給する第1の変換手段と、
前記アドレス伝搬手段を伝搬されてきた前記アドレスデータの形態を、前記第2の形態から前記第1の形態に逆変換して、逆変換後の前記アドレスデータを用いて、前記記憶手段のアクセス制御をする第1の逆変換手段と、
前記処理手段から供給された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に供給する第2の変換手段と、
前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記処理手段に供給する第2の逆変換手段と
を備え、
前記アドレス伝搬手段と前記データ伝搬手段とのうち少なくとも一方は、パラレル通信を行っており、
前記第1の変換手段は、所定のタイミングで、前記第2の形態の前記アドレスデータまたは前記データの直前までの累積値を初期化し、その累積値の初期化を指示する制御データを第2の形態で生成し、前記アドレス伝搬手段を介して前記第1の逆変換手段に送信し、
前記第1の逆変換手段は、前記制御データに従って前記累積値を初期化し、前記第2の形態の制御データを前記データ伝搬手段を介して前記第2の逆変換手段に送信する制御をし、
前記第2の逆変換手段は、前記制御データに従って前記累積値を初期化し、その累積値の初期化を前記第2の変換手段に通知し、
前記第2の変換手段は、前記第2の逆変換手段からの通知に従って、前記累積値を初期化する
情報処理装置。
【請求項2】
前記記憶手段は、前記データを前記第1の形態で記憶し、
前記前記記憶手段から読み出された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に出力する第3の変換手段
をさらに備える請求項1に記載の情報処理装置。
【請求項3】
前記記憶手段は、前記データの書き込みが可能であり、
前記第3の変換手段はさらに、前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記記憶手段に書き込む
請求項2に記載の情報処理装置。
【請求項4】
前記第1の変換手段は、さらに、前記アドレス伝搬手段を伝送するデータのアドレス伝搬エラーを監視し、前記アドレス伝搬エラーが発生した場合そのことを示す制御データを前記第2の形態で生成して、前記データ伝搬手段を介して前記処理手段に送信する
請求項1に記載の情報処理装置。
【請求項5】
前記第2の変換手段は、さらに、前記データ伝搬手段を伝送するデータのデータ伝搬エラーを監視し、前記データ伝搬エラーが発生した場合そのことを示す制御データを前記第2の形態で生成して、前記アドレス伝搬手段を介して前記処理手段に送信する
請求項1に記載の情報処理装置。
【請求項6】
データを記憶する記憶手段と、
前記記憶手段の所定のアドレスを指定して、前記アドレスからデータを読み出す処理を少なくとも実行する処理手段と、
前記処理手段による前記アドレスの指定に関するアドレスデータを、伝搬するアドレス伝搬手段と、
前記処理手段、前記記憶手段、外部とのうち一方から他方へ前記データを伝搬するデータ伝搬手段と
を備え、前記アドレス伝搬手段と前記データ伝搬手段とのうち少なくとも一方は、パラレル通信を行っている
情報処理装置が実行するステップとして、
前記アドレスデータの形態を、前記処理手段で取り扱う第1の形態から、データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする規則を有する第2の形態に変換して、前記アドレス伝搬手段に供給する第1の変換ステップと、
前記アドレス伝搬手段を伝搬されてきた前記アドレスデータの形態を、前記第2の形態から前記第1の形態に逆変換して、逆変換後の前記アドレスデータを用いて、前記記憶手段のアクセス制御をする第1の逆変換ステップと、
前記処理手段から供給された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に供給する第2の変換ステップと、
前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記処理手段に供給する第2の逆変換ステップと、
所定のタイミングで、前記第2の形態の前記アドレスデータまたは前記データの直前までの累積値を初期化する初期化ステップと
を含み、
前記初期化ステップの処理においては、前記累積値の初期化を指示する制御データが用いられ、前記制御データが伝搬される場合、前記第2の形態で、前記データ伝送手段または前記アドレス伝搬手段を伝送される
情報処理方法。
【請求項7】
データを記憶する記憶手段と、
前記記憶手段の所定のアドレスを指定して、前記アドレスからデータを読み出す処理を少なくとも実行する処理手段と、
前記処理手段による前記アドレスの指定に関するアドレスデータを、伝搬するアドレス伝搬手段と、
前記処理手段、前記記憶手段、外部とのうち一方から他方へ前記データを伝搬するデータ伝搬手段と
を備え、前記アドレス伝搬手段と前記データ伝搬手段とのうち少なくとも一方は、パラレル通信を行っている
情報処理装置を制御するコンピュータに実行させるステップとして、
前記アドレスデータの形態を、前記処理手段で取り扱う第1の形態から、データの幅をWとして、各データにおけるビットが1となる総数をBとすると、B=W/2<=±1、かつ、直前までのデータの累積でも±1以内とする規則を有する第2の形態に変換して、前記アドレス伝搬手段に供給する第1の変換ステップと、
前記アドレス伝搬手段を伝搬されてきた前記アドレスデータの形態を、前記第2の形態から前記第1の形態に逆変換して、逆変換後の前記アドレスデータを用いて、前記記憶手段のアクセス制御をする第1の逆変換ステップと、
前記処理手段から供給された前記データの形態を、前記第1の形態から前記第2の形態に変換して、前記データ伝搬手段に供給する第2の変換ステップと、
前記データ伝搬手段を伝搬されてきた前記データの形態を、前記第2の形態から前記第1の形態に逆変換して、前記処理手段に供給する第2の逆変換ステップと、
所定のタイミングで、前記第2の形態の前記アドレスデータまたは前記データの直前までの累積値を初期化する初期化ステップと
を含むプログラムであって、
前記初期化ステップの処理においては、前記累積値の初期化を指示する制御データが用いられ、前記制御データが伝搬される場合、前記第2の形態で、前記データ伝送手段または前記アドレス伝搬手段を伝送される
プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2010−204881(P2010−204881A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−48797(P2009−48797)
【出願日】平成21年3月3日(2009.3.3)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願日】平成21年3月3日(2009.3.3)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]