(57)【要約】    【課題】  本発明の課題は、消費電力解析攻撃を困難にすると同時に、ハードウェアプロービングによる、直接のデータ読み取りをも困難なものとし、さらにはデータバスにおけるデータ転送中のエラーを検出もしくは修正することである。    【解決手段】  鍵加算装置２００１においてデータDに鍵Kを加算した結果と、ECC生成装置２００２によって生成されたエラー訂正コードに基づいてデータ変換装置２００３を用いて変形して得たデータD'を、データバス２００４を通じて記憶装置２００５に記録する。データD'読み出しの際は、データバス２００６を通してデータ変換装置２００７に入力し、データ変換装置２００７によってデータ部とエラー訂正コード部に分離した結果をECC検査装置２００８に入力する。必要に応じて修正されたデータは、鍵加算装置２００９において、鍵Kが加算された結果、データDとして得ることが出来る。【選択図】  図２０
2005223477.tif 000002
【特許請求の範囲】
【請求項１】
演算装置と、
前記演算装置から送信されるデータを格納する記憶装置と、
前記演算装置と前記記憶装置とを接続する（Ｎ＋ｒ）ビットのデータバスと、
乱数生成装置と、
データ変換装置とを有し、
前記データ変換装置は、前記演算装置から送信されるＮビットのデータを前記乱数生成装置で生成されたｒビットの乱数からなるデータを鍵として前記Ｎビットのデータを暗号化しＮビットの暗号化データを生成し、前記暗号化データと前記乱数とを連接することにより（Ｎ＋ｒ）ビットのデータを生成し、前記（Ｎ＋ｒ）ビットのデータをデータバスに出力することを特徴とする情報処理装置。
【請求項２】
請求項１記載の情報処置装置において、
前記データ変換装置が、さらに前記（Ｎ＋ｒ）ビットのデータに対し非線形変換を行ないデータバスに出力することを特徴とする情報処理装置。
【請求項３】
演算装置と、
前記演算装置から送信されるデータを格納する記憶装置と、
前記演算装置と前記記憶装置とを接続する（Ｎ＋ｒ）ビットのデータバスと、
乱数生成装置と、
データ変換装置とを有し、
前記データ変換装置は、前記演算装置から送信されるＮビットのデータと前記乱数生成装置で生成されたｒビットの乱数とを連接することにより（Ｎ＋ｒ）ビットのデータを生成し、前記（Ｎ＋ｒ）ビットのデータに対し非線形変換を行ないデータバスに出力することを特徴とする情報処理装置。
【請求項４】
請求項２または３のいずれかに記載の情報処理において、
前記非線形変換は、前記（Ｎ＋ｒ）ビットのデータのビット位置を変更する置換処理であることを特徴とする情報処理装置。
【請求項５】
請求項２または３のいずれかに記載の情報処理において、
前記非線形変換は、前記（Ｎ＋ｒ）ビットのデータの逆元を求める処理であることを特徴とする情報処理装置。
【請求項６】
請求項１記載の情報処理装置において、
前記乱数生成装置は、前記データバスの転送ごとに乱数を生成することを特徴とする情報処理装置。
【請求項７】
請求項６記載の情報処理装置において、
前記乱数生成装置は、擬似乱数生成装置であることを特徴とする情報処理装置。
【請求項８】
請求項１記載の情報処理装置において、
第２のデータ変換装置を有し、
前記第２のデータ変換装置は、前記データバスの各バスラインにより前記演算装置から前記記憶装置へ転送されて来る各ビットが、前記Ｎビットと前記ｒビットのいずれのビットに対応するかを判定し、前記（Ｎ＋ｒ）ビットの中から、前記Ｎビットを取り出し、前記ｒビットを廃棄することを特徴とする情報処理装置。
【請求項９】
請求項８記載の情報処理装置において、
前記データ変換装置および前記第２のデータ序列変換装置は、（Ｎ＋ｒ）ビットのデータを入力として受け取り、ＧＦ（２ｎ）における既約多項式ｍ（ｘ）およびｍ’（ｘ）を法の値としたＮビットの逆元を出力する変換装置であることを特徴とする情報処理装置。
【請求項１０】
請求項９記載の情報処理装置において、
前記データ変換装置および前記第２のデータ逆変換装置において用いる前記既約多項式に関して、ｍ（ｘ）＝ｍ’（ｘ）となるように構成することを特徴とする情報処理装置。
【請求項１１】
請求項１０記載の情報処理装置において、
データ比較装置と、
前記乱数生成装置から得られたｒビットをデータ比較装置に送信する第２のデータバスを備え、
前記データ比較装置は、前記第２のデータ変換装置から得られたｒビットと、前記第２のデータバスを通じて得られたｒビットを比較し、両者のビットが一致した場合は前記ｒビットを破棄し、両者が一致しなければエラー信号を出力することを特徴とする情報処理装置。
【請求項１２】
請求項１０記載の情報処理装置において、
データ比較装置と、
第２の乱数生成装置とを備え、
前記乱数生成装置および第２の乱数生成装置は、いずれも擬似乱数生成装置であり、前記乱数生成装置は第２の乱数生成装置との間に同期信号線を有し、前記乱数生成装置はデータ変換装置に接続され、前記第２の乱数生成装置は前記データ比較装置に接続され、前記比較装置は前記第２のデータ変換装置から得られたｒビットと、前記第２の乱数生成装置から得られたｒビットとを比較することを特徴とする情報処理装置。
【請求項１３】
請求項８記載の情報処理装置において、
前記データ変換装置および前記第２のデータ変換装置を複数備え、
前記複数のデータ変換装置の出力のうちの一つを第１出力とし、前記第１出力を前記データバスを通じて前記複数の第２のデータ変換装置に入力し、前記複数の第２のデータ変換装置の出力のうち、前記の第１出力を除いた出力を破棄することを特徴とする情報処理装置。
【請求項１４】
請求項１３記載の情報処理装置において、
前記複数のデータ変換装置の出力のうち一つを選択するための第１の出力選択装置と、前記複数の第２のデータ変換装置の出力のうち一つを選択するための第２の出力選択装置とを備え、
前記第１の出力選択装置は前記第２の出力選択装置と選択動作を決定付けるデータを共有することを特徴とする情報処理装置。
【請求項１５】
請求項１４記載の情報処理装置において、
前記第２の出力選択装置は、前記第１の出力選択装置によって選択された前記複数のデータ変換装置のうちの一つの逆変換に対応する前記複数の第２のデータ変換装置の出力の一つを選択することを特徴とする情報処理装置。
【請求項１６】
演算装置と、
前記演算装置から送信されるデータを格納する記憶装置と、
前記演算装置と前記記憶装置とを接続するＮビットのデータバスと、
乱数生成装置と、
データ変換装置とを有し、
前記データ変換装置は、Ｎビットのデータを入力として受け取り、ＧＦ（２ｎ）における既約多項式ｍ（ｘ）を法の値としたＮビットの逆元を前記データバスに出力することを特徴とする情報処理装置。
【請求項１７】
請求項１６記載の情報処理装置において、
前記データバスに接続された第２のデータ変換装置を有し、
前記データバスに入力されるＮビットのデータは、前記演算装置からの出力であるｄビットのデータと前記乱数生成装置からの出力であるｒビットのデータとの連接として構成され、
前記第２のデータ変換装置は、前記データバスの各バスラインにより転送されてくるＮビットのデータについて前記既約多項式を法の値としたＮビットの逆元を出力し、出力の各ビットが前記ｄビットと前記ｒビットのいずれのビットに対応するか判定し、（ｄ＋ｒ）ビットの中から、前記ｄビットを取り出し、前記ｒビットを廃棄することを特徴とする情報処理装置。
【請求項１８】
請求項１７記載の情報処理装置において、
前記データ変換装置は、複数の異なるＧＦ（２ｎ）における既約多項式を法の値とした逆元を出力する変換装置から成り、前記第２のデータ変換装置は前記データ変換装置と同一であることを特徴とする情報処理装置。
【請求項１９】
請求項１６記載の情報処理装置において、
前記データ変換装置を複数有し、
前記データ変換装置の複数の決定結果のいずれか一つを用いて転送を行うことを特徴とする情報処理装置。
【請求項２０】
請求項１記載の情報処理装置において、
前記演算装置からのＮビットのデータからｒビットのＥＣＣを生成するＥＣＣ生成装置を有し、
前記データ変換装置は、
前記演算装置からのＮビットのデータと前記ＥＣＣ生成装置で生成されたｒビットのＥＣＣとを前記記憶装置へ転送する前記データバスのバスラインを前記乱数生成装置から発生した乱数を用いてランダムに決定することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置における消費電力解析やハードウェアプロービングによる処理情報の読み出し・解析を防止することのできる、耐タンパー情報処理装置に関するものである。また、データ記録・読み出し時における攻撃による、データ変化・改ざんを検出することの出来るフォールトディテクタブル（Ｆａｕｌｔ Ｄｅｔｅｃｔａｂｌｅ）な、もしくはデータ変化・改ざんを自動的に回復することのできるフォールトトーレラント（Ｆａｕｌｔ Ｔｏｌｅｒａｎｔ）な耐タンパー情報処理装置に関するものである。特に、そのような機能が要件であるＩＣカード（スマートカード）に代表される、１チップに集積された情報処理装置に関するものである。
【背景技術】
【０００２】
あるシステムや装置に対する「アタッカー」とは、設計者が意図していない方法を用いて、システムや装置に対する解析や攻撃を行い、本来外部に開示されない情報を取り出す行為者のことを意味する。ＩＣカードに代表される高いセキュリティを持ったマイクロコンピュータチップでは、アタッカーをはじめとして正規のユーザーでさえも自由に読み書きできないように期待される情報の保持や、秘密情報である暗号鍵を使って、秘匿するべく期待されるデータの暗号化や復号化を行うことがある（例えば、特許文献１を参照）。
【０００３】
尚、特許文献１は、デジタル受信機、例えば、ＭＰＥＧ−２デジタルテレビジョン受信機
の復号機関と、システムデコーダとの間において、第１データバスのＮ並列ビットラインの各々のＮビットの暗号文ビットストリームのビットオーダをスクランブルして、Ｎビット幅のスクランブルされた暗号文ビットストリームを発生させ、スクランブルされたＮビットの暗号文ビットストリームのビットオーダをスクランブル解除して、元の暗号文ビットストリームと同一のスクランブル解除された暗号文ビットストリームを発生させる旨を開示する。
【０００４】
マイクロコンピュータの基本構成は、図１に示すように、中央演算装置１０１、記憶装置１０４、そして各部の情報のやりとりを行うための入出力ポート１０７、およびそれらを結ぶ信号線１０３を有している。中央処理装置１０１は、論理演算や算術演算などを行う装置であり、記憶装置１０４は、プログラムやデータを格納する装置である。記憶装置１０４は、例えばＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ Ｅｒａｓａｂｌｅ Ｐｒｏｇｒａｍｍａｂｌｅ Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）、ＦＲＡＭ（Ｆｅｒｒｏｍａｇｎｅｔｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）などを用いて構成される。ROMは、内容が固定された、変更できないメモリであり、主にプログラムを格納するメモリである。ＲＡＭは自由に書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容が消失する。すなわち、デバイスへの電源供給が中断されると、ＲＡＭの内容は、保持できなくなる。ＥＥＰＲＯＭ、ＦＲＡＭは、電源の供給が中断されてもその内容を保持することができるメモリである。
【０００５】
例えば接触型ＩＣカードに供されるコンピュータの本体の例を、図２に示す。図２にはこの半導体装置のチップをプラスチックカード上に実装した場合の端子配置を示している。当該コンピュータの本体は、カードの中央の横に配置されたＣＯＴと呼ばれるパッケージ形態のＩＣチップ２０２である。図２には端子配置の例が示されている。即ち、ＩＣカードは、Ｖｃｃ（供給電源）、ＧＮＤ（グランド）、ＲＳＴ（リセット）、Ｉ／Ｏ（入出力）、およびＣＬＫ（クロック）の端子を持つ。前記チップはこれらの信号を外部から、例えば端末機から、供給されることによって稼動する。前記端末機自体は基本的に一般のカード・システムのものを用いることができる。
【０００６】
ＩＣカードに代表される、マイクロコンピュータに対する攻撃の方法として、非特許文献２に記載された差分電力解析（Ｄｉｆｆｅｒｅｎｔｉａｌ Ｐｏｗｅｒ Ａｎａｌｙｓｉｓ）が知られている。ＤＰＡは、マイクロコンピュータによる暗号化処理時の消費電力を解析することで、暗号化処理で使用した秘密の鍵を特定する攻撃である。消費電力は図２におけるＶｃｃとＧＮＤの間に抵抗を設置し、その両端の電圧を観察することによって測定することができる。消費電力の測定方法については、非特許文献２にも一例が記載されている。
【０００７】
消費電力解析攻撃を防止するための技術として、特許文献２において、データを情報処理装置間で暗号化して送受信する方式が開示されている。同方式を用いることで、データ転送時の消費電力と転送データとの相関を低く、もしくは無くすことができるため、消費電力解析攻撃は著しく困難なものとなる。
【０００８】
また、特許文献３において、データの値が同じであっても、消費電流が予測不可能な方法で変化させる方法として、データを暗号化し、暗号化の鍵を短い期間で変化させることにより、データの真の値と電気的な表現の関連性を予測不能にする技術が開示されている。
【０００９】
一方で、ＦＩＢ加工などの物理的な改造を行うなどの方法により、処理データを故意に変化させることで、秘密の暗号鍵を取り出す攻撃が知られている。例えば、ＲＳＡ暗号の処理中に処理データを変化させることで秘密の暗号鍵を取り出す攻撃が、非特許文献３として、ＤＥＳ暗号に対する攻撃が、非特許文献４として発表されている。一般的な対策として、同一の処理を２度以上行い、その結果が一致すれば処理結果が正しいと判定する方法が知られている。
【００１０】
【特許文献１】特表２０００−５０７０７２号公報
【００１１】
【特許文献２】特開２００１−５７３１号公報
【特許文献３】特開２００３−１５２７０２号公報
【非特許文献１】Ｐａｕｌ Ｋｏｃｈｅｒ，Ｊｏｓｈｕａ Ｊａｆｆｅ，Ｂｅｎｊａｍｉｎ Ｊｕｎ，“Ｄｉｆｆｅｒｅｎｔｉａｌ Ｐｏｗｅｒ Ａｎａｌｙｓｉｓ，”Ａｄｖａｎｃｅｓ ｉｎ Ｃｒｙｐｔｏｇｒａｐｈｙ−ＣＲＹＰＴＯ‘９９，ｐｐ．３８９−３９７，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，１９９９
【非特許文献２】Ｗ．Ｒａｎｋｌ，Ｗ．Ｅｆｆｉｎｇ，“Ｓｍａｒｔ Ｃａｒｄ Ｈａｎｄｂｏｏｋ Ｓｅｃｏｎｄ Ｅｄｉｔｉｏｎ”，Ｊｏｈｎ Ｗｉｌｅｙ＆ｓｏｎｓ，ＬＴＤ．ｐ．４２２
【非特許文献３】Ｄ．Ｂｏｎｅｈ，Ｒ．Ａ．Ｄｅｍｉｌｌｏ，Ｒ．Ｊ．Ｌｉｐｔｏｎ，“Ｏｎ ｔｈｅ Ｉｍｐｏｒｔａｎｃｅ ｏｆ Ｃｈｅｃｋｉｎｇ Ｃｒｙｐｔｏｇｒａｐｈｉｃ Ｐｒｏｔｏｃｏｌｓ ｆｏｒ Ｆａｕｌｔｓ”，Ｐｒｏｃ． ｏｆ ＥＵＲＯＣＲＹＰＴ‘９７，ｐｐ．３７−５１，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，１９９７
【非特許文献４】Ｅ．Ｂｉｈａｍ，Ａ．Ｓｈａｍｉｒ，“Ｄｉｆｆｅｒｅｎｔｉａｌ Ｆａｕｌｔ Ａｎａｌｙｓｉｓ ｏｆ ＳｅｃｒｅｔＫｅｙ Ｃｒｙｐｔｏｓｙｓｔｅｍｓ” ，Ｐｒｏｃ． ｏｆ Ｃｒｙｐｔｏ‘９７，ｐｐ．５１３−５２５，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，１９９７
【非特許文献５】Ａｌｆｒｅｄ  Ｊ．Ｍｅｎｅｚｅｓ、ＰａｕｌＣ．ｖａｎ  Ｏｏｒ．Ｖａｎｓｔｏｎｅ、“ＨＡＮＤＯＢＯＯＫ  ｏｆ  ＡＰＰＬＩＥＤ  ＣＲＹＰＴＯＧＲＡＰＨＹ”,ＣＲＣ  ｐｒｅｓｓ,ｐ．５１６
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の課題は、消費電力解析攻撃を困難にすると同時に、ハードウェアプロービングによる、直接のデータ読み取りをも困難なものとし、さらにはデータバスにおけるデータ転送中のエラーを検出もしくは修正することである。すなわち、高いセキュリティを持つ情報処理装置を提供せんとするものである。当該情報処理装置としてはコンピュータシステム、わけてもマイクロコンピュータシステムを代表例としてあげることが出来る。更には、本発明は、高いセキュリティを持つ、ＩＣカード（スマートカード）に代表されるカード部材、およびカード・システムを提供するものである。
【００１３】
本発明のより技術的な課題を示せば、それは、マイクロコンピュータチップでのデータ処理と消費電力との関連性を減少させることである。また、チップ内部で転送されるデータのプロービングによる直接読み取りや改ざんを防止することである。特にＩＣカードは、秘匿するべき重要な情報の格納や、カード内での暗号処理やデータの認証処理を行うために用いられている。このように高い安全性を要求される用途にＩＣカードが用いられるのは、プログラムや重要な情報がＩＣカードチップの中に密閉されており、さらには様々な情報隠蔽措置が施され、秘密データの処理を盗み見ることが困難であるためである。
【００１４】
従来、ＩＣカードにおける暗号処理を解読することは、暗号アルゴリズム自体の解読の困難さと同程度と考えられていた。しかし、ＩＣカードが暗号処理を行う際の消費電力を解析することにより、暗号処理の内容や暗号鍵を推測する攻撃方法は、暗号アルゴリズムの直接的な解読を行う方法よりも容易であると目されている。
【００１５】
Ｐ．Ｋｏｃｈｅｒらによって提案された消費電力解析と呼ばれるこの方法は、ＩＣカードが処理するデータのビット状態と消費電力の間に関連性があることを利用した攻撃である。従って、消費電力とチップの処理との関連性が小さくなれば、観測した消費電力から、ＩＣカードチップ内での処理や暗号鍵を推測することは困難になる。本発明の着眼点は、マイクロコンピュータの消費電力と処理されるデータとの関連を減少させることである。その手段の主なものは、消費電力の差を生み出す原因の一つである信号線（例えば、バスラインや、ＲＡＭ内のビット線、ワード線等）の充放電を元のデータと異なるものにすることによるものである。
【００１６】
以下にまず、本発明の背景となる消費電力の観測による、処理の解読の可能性について説明する。このことが理解されれば、本発明の趣旨が容易に理解されよう。
【００１７】
上述の消費電力解析の骨子は次の通りである。ＩＣカード用チップを構成するＣＭＯＳ（Ｃｏｍｐｌｅｍｅｔａｒｙ Ｍｅｔａｌ−Ｏｘｉｄｅ−Ｓｅｍｉｃｏｎｄｕｃｔｏｒ） のゲート回路は、出力状態が１から０あるいは０から１に変わった時に電力を消費する。特に信号線は大きな配線容量を持つため、ゲート回路は、バスのデータ値が１から０あるいは０から１に変わると、その充放電のために大きな電力を消費する。こうした消費電力を観測すれば、ＩＣカード用チップの中での情報処理の内容が解読される可能性がある。
【００１８】
図３は、ＩＣカード用チップの１サイクルでの消費電力の時系列波形を示したものである。処理しているデータの値に依存して、消費電力の波形が３０１や３０２のように異なる。このような複数の消費電力に対する波形の差は、信号線を流れるデータや中央演算装置で処理しているデータ等に依存して生じる。
【００１９】
現在、ＩＣカード用チップの信号線の制御方式には、大別して二つの種類がある。一つはスタティック信号線制御方式であり、もう一つがプリチャージ信号線制御方式である。スタティック信号線制御方式は、バスが保持しているデータのクリアを行わないものである。一方、プリチャージ信号線制御方式は、一回の処理が終わる毎にデータをクリアするために、信号線のデータを全て１または０にしてから次のデータを乗せる制御方式である。尚、プリチャージを信号値の１か０のどちらにするかは、論理回路が順論理か、逆論理かで異なる。しかし、その動作の本質は変わらない。
【００２０】
上述の基本動作の説明から明らかなように、この制御方式の違いにより、消費電力の波形が異なる。消費電力波形の違いから、どちらの制御方式を用いているかを判断する事ができる。信号線の制御方式がわかれば、固定されている暗号鍵について、処理するデータを変更して、それに応じた消費電力の変化を観測することにより、暗号鍵のビット値の影響が観測できる。さらに、これらの消費電力の波形を分析することにより、暗号鍵を推定できる可能性が生ずる。消費電力の具体的な分析方法を決定するには、解析対象である処理の方式に関する情報が必要であるが、現代暗号の成果の一つである暗号アルゴリズムの公開と標準化によって、暗号化方式に関する情報は得やすくなっている。
【００２１】
すでに述べたように、バスデータの暗号化による消費電力と実データとの相関を減少させる方法については、特許文献２によって開示されている技術が存在する。特許文献２の方法は、（ａ）バスラインの両端に暗号化・復号化装置を設置し、同一の暗号鍵を用いて、送信側で暗号化を行い、受信側で復号化を行う。（ｂ）情報記憶装置に接続されたバスラインにおいて、データ送信側に暗号化・復号化装置を設置し、同一の暗号鍵を用いて、送信側において暗号化を行ったデータを情報記憶装置に記憶する。情報記憶装置からのデータ読み出しの際には、先の暗号鍵を用いて復号化を行う。という２通りの方法である。（他の方法も開示されているが、本発明に関連しないためここでは述べない。）
確かにこの方法を用いて、消費電力と実データとの相関を減少させることが出来る。しかし、（ａ）については、情報記憶装置へのデータ書き込み及び読み出しが実データについて行われるので、その際に生じる実データに依存した消費電力が観測される。また、復号化を行った後のデータをプロービングによって直接読み出すことが可能である。（ｂ）については、バスラインのプロービングによるデータの読み出しを行えば、情報記憶装置に記憶されるデータを知ることができる。この場合、一度に大量のデータが送信されるため、すべてのデータを捕捉することが出来ないとしても、一部のデータを目印として、情報記憶装置に記憶されている情報を読み出せば、逐次一連のデータを取得することができる。取得したデータは暗号化されているものの、暗号処理の実装方法によっては、同一データがどのタイミングで使用されたかを判定するだけで、暗号鍵を取得することができる。また、暗号鍵を送信側と受信側で共有する必要があるため、そのための専用のバスラインを用意する必要があり、そのバスラインをプロービングすることによって暗号鍵を得ることが出来る可能性があるという点にも注意する必要があろう。
【００２２】
消費電力解析への対策が必要である一方で、バスラインに対する直接のプロービングによるデータ読み出しに対する対策が必要である。データはＩＣチップ内部のバスラインを通じて各モジュール間で送受信される。そのバスラインを流れるデータを直接プロービングすることによって、送受信データを読み取ることができる。プロービングは、ＬＳＩのデバッグやテスティングの際に、一般的に用いられる方法である。暗号の実装方法によっては、すべてのバスデータを一度に読み取る必要は無く、一部の配線を通じてやり取りされるデータを観測すれば十分である場合がある。例えば、ＲＳＡ暗号を実装する方式の一つとしてバイナリ法が知られているが、バイナリ法では、あるタイミングで使用されるデータが２種類のいずれであるかを逐次判定できれば、最終的に暗号鍵を特定することが出来る。２種類の判定であるならば、最小で１本のバスラインを監視すればよい。よって、一部の配線のみを観測しても暗号の解読が行えないことが必要である。
【００２３】
また、データは電気的に送受信されるため、たとえばＦＩＢ加工によって物理的に配線をＧＮＤに接続するなどして、一部もしくは全部のデータが故意に変化させられる可能性がある。アタッカーが故意に狙った暗号処理タイミングでこのような攻撃を行えば、特許文献３、４に記載のように、暗号鍵を読み取られる可能性がある。そのため、配線を通じて転送されるデータの完全性を確保する必要がある。
【課題を解決するための手段】
【００２４】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば下記のとおりである。
【００２５】
演算装置と、前記演算装置から送信されるデータを格納する記憶装置と、前記演算装置と前記記憶装置とを接続する（Ｎ＋ｒ）ビットのデータバスと、乱数生成装置と、データ変換装置とを有し、前記データ変換装置は、前記演算装置から送信されるＮビットのデータを前記乱数生成装置で生成されたｒビットの乱数からなるデータを鍵として前記Ｎビットのデータを暗号化しＮビットの暗号化データを生成し、前記暗号化データと前記乱数とを連接することにより（Ｎ＋ｒ）ビットのデータを生成し、前記（Ｎ＋ｒ）ビットのデータをデータバスに出力することを特徴とする情報処理装置。
【００２６】
上記構成により、消費電力を解析することによるマイクロコンピュータ内部の状態を推定すること、バスラインをプロービングすることによるデータの読み出しを行うこと、転送データの改ざんを行うことなどの攻撃に対抗するために、内部データのランダム化を行う。そのための、データ変換装置およびデータバス構成および情報処理装置構成を与える。
【発明の効果】
【００２７】
本発明は、消費電力を解析することによるマイクロコンピュータ内部の状態を推定すること、バスラインをプロービングすることによるデータの読み出しを行うこと、転送データの改ざんを行うことが困難とする効果を奏する。その結果、消費電力解析や、差分故障解析といった、暗号処理に対する攻撃への耐性を向上させることが出来る。
【発明を実施するための最良の形態】
【００２８】
ここで、以下の説明の理解を容易にする為、本願明細書での特徴的な用語である「暗号化」と「ランダム化」について説明する。
【００２９】
「暗号化」とは、ある暗号化鍵を用いて、あるデータをある規則に従って、変化させる動作のことをいう。「暗号化」においては、暗号化鍵は暗号化装置の内部に保持されるため、暗号化データとは一緒に送信、転送されることはない。一般的な暗号アルゴリズムは、暗号化鍵に暗号の安全性を依存しているため、基本的に装置外部に暗号化鍵が出力されることはない。そのため、暗号化装置の外部において暗号化データを観察しても、アタッカーは暗号化鍵に関する情報を得ることは出来ない。二者間で安全に暗号化鍵を共有するためには、Ｄｉｆｆｅ−Ｈｅｌｌｍａｎ鍵共有方式（非特許文献５を参照）や公開鍵暗号を用いた方法が用いられる。
【００３０】
一方、本願明細書における「ランダム化」とは、以下の（１）〜（３）のいずれかを意味するものとする。（１）データをランダム化鍵によって暗号化した結果と、ランダム化鍵との連接を行う。（２）データとランダム化鍵との連接で得られるデータを非線形変換によって変換する。（３）データをランダム化鍵によって暗号化した結果と、ランダム化鍵との連接を行い、さらに非線形変換を行う。
【００３１】
尚、上記（１）、（３）の「ランダム化」において、データを暗号化するという点においてはランダム化鍵と暗号化鍵とその役割は同じであるが、暗号化されたデータと共に転送されるという点において「暗号化」における暗号化鍵と異なる。そのため、アタッカーは十分に精密にデータを取得すれば、ランダム化鍵と、データまたは暗号化されたデータとを特定することが原理的に可能である。この点において、暗号化は本質的に異なるといえる。ただし、本提案のランダム化装置は、ランダム化されたデータとランダム化鍵から構成される転送データの観測が十分でなければ、ランダム化鍵やデータを推定することが困難であるようにランダム化を行う。ランダム化ではランダム化鍵をデータまたは暗号化データと共に転送するため、転送データが一般に、ランダム化鍵ビット長ｎとデータビット長ｍの和であるｎ＋ｍビットのデータとなる。
【００３２】
課題を解決するために、本発明が基礎とする考え方は次の３通りに分類される。
（１）データのランダム化
第１の形態は、情報処理装置と情報記憶装置の間を、データバスを通じて送受信されるデータをランダム化することによって、本来のデータと消費電力の間に相関が生じないようにする形態である。バスの送信側Ａにランダム化・復元装置１を、受信側Ｂにランダム化・復元装置２を備える。受信側はさらに情報記憶装置に接続されている。ここで受信側Ｂに設置するとしたランダム化・復元装置２は、情報記憶装置の内部に設置する場合もある。データ送信の際は、送信側Ａにおいて、ランダム化・復元装置１を用いて、設定されたランダム化鍵ＫＡによるランダム化を行い、ランダム化データは受信側Ｂに送られる。受信側Ｂはランダム化・復元装置２を用いて、設定されたランダム化鍵ＫＢによって復元を行い、復元データを情報記憶装置に送信する。情報記憶装置は受信したデータを記録する。送信側Ａと受信側Ｂで使用するランダム化鍵ＫＡとＫＢを相異なるものに設定することで、受信側Ｂにおける復元処理は、先にランダム化された実データＤとは異なる値Ｄ’を出力する。送信データをバスライン上でプローブして読み出されても、実際に情報記憶装置に記録されるデータがどのような形態になっているかを知ることができない。そのため、バスライン上で読み出したデータに基づいて、情報記憶装置に記録されているデータの位置を特定することは出来ない。情報記憶装置からデータを読み出す際は、読み出したデータをランダム化・復元装置２によりランダム化鍵ＫＢを用いてランダム化し、バスラインを通じてランダム化・復元装置１に送信する。ランダム化・復元装置１は、ランダム化鍵ＫＡを用いて復元するため、結果として先の実データＤを得ることが出来る。
【００３３】
ランダム化データとして、３通りの形態がある。１つ目の形態は、ランダム化するべきデータをランダム化鍵によって暗号化した結果と、ランダム化鍵との連接によって得られる形態である。２つ目の形態は、ランダム化するべきデータとランダム化鍵との連接で得られるデータを非線形変換装置によって変換した結果得られる形態である。３つ目の形態は、１つ目の形態のランダム化データをさらに非線形変換装置によって変換した結果得られる形態である。
【００３４】
１つ目の形態と３つ目の形態においては、データがランダム化鍵によって予測できない形態に変換されるため、アタッカーは転送データの形態を予測することができない。これにより、転送データの形態を予測することが必要な消費電流解析などを効果的に防止することができる。２つ目の形態は、データのハミングウェイトが変化しないため、完全な消費電流解析対策とはならないが、ランダム化鍵を連接することによって消費電流におけるデータ依存成分のＳ／Ｎ比が小さくなり、攻撃を困難にする効果が得られる。すなわち、ランダム化鍵を用いてビット拡張を行うことは、消費電流解析に対する耐性を向上させる効果がある。
【００３５】
本発明で開示する方式は、特許文献２と異なり、受信側すなわち情報記憶装置側にもランダム化・復元装置を設置しており、ランダム化鍵も送信側と受信側で異なるように設定する。また、特許文献２は暗号化鍵を用いた暗号化を行っているが、本発明で開示する方式は、暗号化とは本質的に異なる、ランダム化を行っている。
【００３６】
そして、例えば、ランダムに配線された微細なバスに対して正確なハードウェアプロービングを行わなければならないなどの物理的な制約も考慮すれば、アタッカーが転送データを十分正確に観測することは難しく、現実的に攻撃を行うことは難しいといえる。
【００３７】
受信側Ｂは、さらに情報記憶装置に接続されるとしたが、その間に外部通信装置を設置することで、ランダム化を保った状態で外部へのデータ転送を行う場合もある。
（２）ビット転送時の配線選択のランダム化
第２の形態は、データを送受信する際に、ある１ビットの送受信に使用する配線を、複数の配線からランダムに選択する方法である。配線とデータビットの対応は、ランダム化鍵に依存して決定される。
【００３８】
情報処理装置内部で取り扱うデータは、一般的に８の倍数ビットを単位としている。一般の情報処理装置では、データdの上位ビットからd0,d1,…,d7とし、バスラインの番号０から７を対応させる。これは、配線長を出来るだけ短くすることでデータ転送遅延を極力減少させるため、また、整然と配線することによってデバッグやテスティング時のバスライン番号の判別を容易にするためである。本発明では、データ送受信の際のデータdとバスライン番号との対応関係を、データ転送ごとに変化させる。さらには、両者の対応は非線形な関係となるように構成する。対応を非線形な関係とすることで、バスラインを異なるタイミングで複数回観察しても、ランダム化される前のデータに関する情報を容易に得られないようにすることができ、耐タンパー性が向上する。
【００３９】
データ転送ごとにデータのビット番号とバスライン番号との対応関係が変化するため、アタッカーは単一のバスラインをプロービングによって観測しても、現在データの第何ビットを観測しているかを知ることができない。これはすなわち、アタッカーがすべてのバスラインを観測しても、データビット番号とバスライン番号との対応関係を規定するアルゴリズムが分からなければ、得られる情報はデータのハミングウェイトのみであることを意味する。６４ビットバスラインであれば、ハミングウェイトhに対応するデータは、64Ch通り存在する。たとえば最も起こりうる場合であるh=32の場合、対応するデータの候補は64C32=260.7通りとなり、総当りによる検索は事実上不可能である。さらに、マイクロコンピュータは微細加工されているため、プローブのサイズによる制約から、一度に観測することの出来るバスラインの本数は限られ、実際に攻撃を行うことは著しく困難なものとなる。
（３）エラー検出用符号を用いた転送時ビットエラーの検出
データ送受信の際のデータバス幅を増加し、データとともにエラー検出用符号を併せて送る。受信側では、エラー検出用符号の正当性を検査し、必要であれば、エラー検出処理を行い、エラーが含まれていれば、エラー信号を発行する。
【００４０】
エラー検出用符号は、送信されるデータとは独立の乱数としても良く、その場合、受信側でも同じ乱数を共有もしくは生成する。先の対策方式によって、送信データに依存してデータ転送に使用されるバスライン番号とデータのビット番号が異なることに注意すると、エラー検出用符号を乱数とすることによって、同一データを転送する際にも、ビット番号とバスライン番号の対応が毎回変化するため、耐タンパー性を向上させることができる。同じ乱数を共有するためには、送信側で生成した乱数を、バスラインを通じて受信側に転送しても良いし、ＬＦＳＲなどの良く知られた擬似乱数生成器を用いることもできる。送信側で生成した乱数を、バスラインを通じて受信側に転送する場合、送信する乱数がバスラインにおいてアタッカーの攻撃を受けて変化しても、引き続きデータを転送する際に、送信側と受信側での共有乱数の不一致によって速やかにエラーが発見される。よって、乱数を共有する際のバスラインにおけるデータの完全性の保障については、特別な対策を行う必要は無い。この点は、従来の暗号化を用いる方式では実現することのできない、本願発明の特徴である。擬似乱数生成器を用いる場合は、各々の擬似乱数生成器が同一の擬似乱数列を出力するように初期化し、同一タイミングで同一の数が得られるように構成する。そのような方法として最も容易なのは、同一の初期値から動作を開始し、同一のクロックタイミングで順次乱数列を出力するように構成する方法である。
【００４１】
乱数を用いるのではなく、エラー検出符号を送信データに依存して生成して使用しても良い。その場合は、同じデータについて同じエラー検出符号が生成されるため、データのランダム化効果は得られない。しかし、さらに（１）に従って送信データのランダム化を併せて行うことで、データのランダム化を行うことが出来る。エラー検出符号の代わりに、エラー訂正符号を使用すれば、受信側で、エラー訂正用符号の正当性を検査し、データにエラーが含まれていれば、エラーからの回復を試みることができる。
【００４２】
＜実施例１＞
本実施例では、CPUから記憶装置にデータを記録する際のデータ変換装置の配置について記述している。
【００４３】
ここで、データ変換装置は、データの非線形変換を行うものであり、データのビット表現そのものを変化させる機能を有する場合と、データのビット表現そのものを変化させる機能およびデータのビット番号とバスの番号との対応関係を変換する序列の変換機能も有する場合がある。ビット表現を変化させるとは、少なくとも一つ以上のあるデータDの変換Ｆによる像（D）のハミングウェイトがＤとは異なることを意味し、序列の変換とは、すべてのDについて、DとＦ（D）のハミングウェイトが常に一致するように変換を行うことを意味している。データの変換は一般に、このビット表現を変化させる場合と序列を変化させる場合の和集合であるから、本願発明においては両者を総じてデータ変換装置と呼ぶことにする。特に呼び分ける場合は、前者をビット表現変換装置と呼び、後者をビット序列変換装置と呼ぶ。
【００４４】
データ序列変換装置のみを用いた場合でも、ハードウェアプロービングに対する耐タンパー性を得ることができるため、構成要素として単にデータ変換装置と表記する場合は、当該部分をデータ序列変換装置と読み替えて構成することも意味している。
【００４５】
図４に示すように、CPU４０１から記憶装置４０２にデータDを記録する場合、データDはCPUからデータバス４０４に向けて送り出される。データDはまず、データ変換装置４０３に入力され、データ変換装置４０３は変換処理FによってデータDを変換し、データD'を出力する。データD'は、データバス４０４を経由してデータ変換装置４０５に入力される。データ変換装置４０５では、変換処理FによってデータD'をデータDに変換して出力する。データDは記憶装置４０２に記録される。
【００４６】
ここで、データ変換装置４０３および４０５に関して、同じデータ変換処理Fによって、４０３ではD'=F(D)としてD'を得、４０５では、D=F(D')として得ている。変換と復元を異なる処理として行うように構成すれば、CPU４０１側と記憶装置４０２側でそれぞれ、変換及び復元用の装置を設置する必要があり、本実施例のように構成する場合に比べて２倍程度の装置規模となる。本実施例で述べたような変換Fの例として、データDのビット位置を変更する置換処理が挙げられる。|I|=|J|=n/2であり、I∩J=φかつI∪J={1, ..., n}であるI⊂{1, ..., n}、J⊂{1, ..., n}について、D[i]はDの第iビット目を表すとして、D[i] (i∈I), D[j] (j∈J)を入れ替える処理がその一例である。明らかに、この入れ替えを２度繰り返すと、元の状態に戻る。また、図５に示すように、GF(2n)における逆元を求める変換INVを変換Fとして使用することが出来る。逆元を求めるとは、あるデータDについてDxD'=1となるようなD'を求めることを言う。一般にD'はD-1とも表記される。データDが３２ビットの数である場合、データDをGF(232)の元であるとし、例えば既約多項式m(x)=x32+x7+x6+x2+1を用いて、
D'=F(D)=D-1mod m(x) 
のようにしてデータD'を得る。データD'を、データバス５０３を通してデータ変換装置５０４に転送し、データ変換装置５０４においてD'をFで処理することによってDを得ることができる。これは、次に示す関係が成立するためである。
F(D')=D'-1 mod m(x)=(D-1)-1mod m(x)=D
＜実施例２＞
図６に示した本実施例では、データ変換装置を拡張し、データ変換部におけるデータ変換処理に先立って、逆元計算INVを行う前に鍵データRとの加算とデータ拡張を行うことによってさらにデータの攪乱を行う例である。ここでの加算とは、論理加算D'=D xor Rを意味している。その上で、データとD'とRの連接によってデータビット長を拡張し、データ変換部である逆元計算INVへの入力を得る。連接とは、データD'とRを平行接続することで、ビット長が両データのビット長の和であるデータをえることを意味する。これをD'│Rと表記する。CPU６０１から出力されたデータD0はデータ変換装置６０２に入力される。データ変換装置６０２は、さらに鍵加算部６０３とデータ拡張部６０４、逆元計算部６０５から構成されており、データD0 は鍵加算部６０３において鍵R0を加算されD0'となる。データ拡張部６０４でD0'とR0を連接したD1を得た後、D1はデータ変換部、すなわちここでは逆元計算部６０５を経てD2となる。D2はデータバス６０６を通り、次のデータ変換装置６０７に入力される。データ変換装置６０７は、内部に鍵加算部６０８および逆元計算部６０９を持つ。データD2は鍵加算部６０８において鍵R1が加算されD3となり、D3は逆元計算部６０９を経てD4となる。D4が記憶装置６１０に記録される。ここで、加算処理と逆元計算はGF(2n)で行うことに注意する。すなわち、加算は排他的論理和演算に対応する。排他的論理和演算は2度行うと互いに打ち消しあう性質がある。
【００４７】
データ読み出しの際は、上記の手順を全く逆方向に適用すればよい。このことは、
D4=(((D0+R0)│R0)-1+R1)-1 mod m(x) 
より、逆方向の処理結果が、
t((D4-1+R1)-1 mod m(x)) +R0 =t(((((D0+R0)-1 +R1)-1)-1 +R1)-1 mod m(x)) +R0
=t(((D0+R0)-1 +R1+R1)-1 mod m(x)) +R0
=t((D0+R0)│R0))+R0 
=D0+R0+R0
=D0
となることから、確認することが出来る。ここで、t(x│y)は、yを取り除いてビット長を縮める処理であり、データ拡張の逆変換に対応する。
【００４８】
本実施例のように装置を構成することで、鍵が異なるデータ変換装置６０２および６０７を用いて、データバス６０６を通過するデータの保護と、記憶装置６１０に記録するデータの秘匿が可能となる。本実施例では、データ変換装置６０２および６０７を独立した装置であるかのように記述したが、鍵加算とデータ拡張は順序を入れ替えることが可能であるため、データ拡張部６０４をデータ変換装置６０２の外部に持てば、データ変換装置６０２と６０７は同一の構成とすることができる。このとき、鍵のみが異なるという性質から、処理部のほとんどを共通化し、鍵を保持しているレジスタのみが異なるように構成することも可能であり、そのように構成することで、さらに装置の回路規模を縮小することが出来る。
【００４９】
＜実施例３＞
本実施例では、データ変換装置の構成例を示す。基本的なデータ変換装置は、データ変換部７０１のみからなり図７に示したように、データDを受け取り、データ変換を行った後にデータD'を出力する。しかし、図８に示したように、データ変換装置８０１は、データRをさらに入力として受け取り、データRを鍵とみなして、鍵データ保持用のレジスタ８０２に保持し、鍵は鍵加算部８０３においてデータDに加算され、その結果と鍵Rを合わせてデータ拡張部６０４によってデータ拡張した後にデータ変換部８０５に入力され、変換されたデータはD'として出力されるように構成することも出来る。図９では、さらにデータRを読み出すことが出来るように構成した例である。攻撃によりデータに連接された鍵データが変化した場合、データD'をデータDに戻す変換を行うことが出来なくなる。鍵データが変化する可能性がある場合は、鍵データの読み出しを適当なタイミングで行い、変化が起きていないことを確認し、変化している場合は書き込み線を通じて鍵データの書き込みを行う。一方、図１０に示すように、データ変換装置１００１は、鍵データを受け取る先を乱数源１００２とし、鍵更新指示信号線からの信号によって鍵保持部１００３に保持している鍵を更新するように構成することが出来る。このように構成することによって、データ変換装置１００１によるデータ変換を予測もしくは操作できる者が存在しなくなり、バスを通じて転送されるデータD'の安全性をより高めることが出来る。この場合、鍵保持部のデータは読み出せないように構成することが望ましい。データD'生成時とデータD復元時の鍵が異なることによるデータの破損は、パリティやエラー検出符号などを用いて検出することができる。もちろん、この場合も、鍵保持部１００３のデータを読み書きできるようにすることが可能であり、鍵の更新タイミングをランダムに決定するなどの、より複雑な鍵利用を行い、データの安全性を高める方法を取ることも出来る。
【００５０】
以上、データ変換装置におけるデータ変換について述べた。次にデータ変換装置によるデータ変換解除を図１１に示す。データ変換解除とは、データ変換部によって変換されたデータD'から、元のデータDを取り出す処理を指す。データ逆変換部に入力されたD'はデータ逆変換部１１０２による変換の後、データ縮小部１１０３に入力される。データ縮小部は、入力をデータと鍵データに分割し、それぞれを鍵加算部１１０４に入力する。鍵加算部では、データと鍵データを加算し、その結果をDとして出力する。ここで、データ逆変換部の処理は、データ変換時のデータ変換部の処理は同一である。データ逆変換を経たデータは、鍵加算が行われたデータと鍵データとの連接になっているので、これを鍵データ縮小部がそれぞれに分割する。鍵加算部１１０４の処理は論理加算である。データ変換時の加算が論理加算であったことから、この処理によって元のデータDを得ることができる。データ変換時の鍵加算として共通鍵暗号による暗号化を用いた場合は、ここでの鍵加算は、同じ共通鍵暗号による復号化処理に対応する。データ縮小部で得られる鍵データは、後の鍵加算部で用いられると共に、後の実施例に示すように、破棄する場合とデータ転送中のデータ誤りの検出や訂正に使用する場合もある。
【００５１】
＜実施例４＞
図１２に示した本実施例では、データ変換装置１２０１は、複数のデータ変換部１２０７を持つ。データRは鍵保持部１２０２に保持され、データCは選択情報保持部１２０３に保持され、データDはデータ変換装置１２０１に入力される。データDは鍵加算部１２０４において、鍵保持部１２０２に保持されたデータRが加算され、その結果は、データ拡張部１２０５に入力される。データ拡張部１２０５の結果は、処理選択部１２０６によって、選択情報保持部１２０３に保持されたデータCに基づいて複数から選択された一つ以上のデータ変換部１２０７に渡される。データ変換部１２０７は、受け取ったデータを変換し、データD'として出力する。このとき、どのデータ変換部１２０７が選択されたかが装置の動作電流などの様子から漏洩することを防ぐために、データCの如何に関わらず、すべてのデータ変換部１からNを動作させて、ノイズを増加させることもできる。
【００５２】
一方、図１３に示すように、鍵加算部１３０４において鍵保持部１３０２に保持されているデータRを加算されたデータDは、データ拡張部１３０５を経て、データ変換部１３０６の１からNすべてに入力され、選択情報保持部１３０３の保持されたデータCに基づいて、出力選択部１３０７でN個の出力うちの１つが選択され、その結果をデータD'として出力するように構成することも出来る。この場合、出力選択部１３０７の動作は、データ変換部１３０６の動作と比較してわずかな動作であるため、消費電流等による判別は困難となる。
【００５３】
図１４に、図１２に対応するデータ変換解除時のデータ変換装置を示す。データ変換装置１４０１は、データD'を受け取り、処理選択部でデータ変換時に使用した処理選択情報Cに基づいて、データ逆変換部１４０４のいずれかを選択する。データ逆変換部１４０４は、先に述べた実施例と同様に、データ変換時の逆変換を行う。データ逆変換されたデータは、データ縮小部１４０５によってデータと鍵データに分離され、次の鍵加算部１４０６において加算される。加算結果が元のデータDとなる。加算が共通鍵暗号によって代替可能であることは、すでに述べたとおりである。図１３に対応するデータ変換解除時のデータ変換装置も、同様にして構成することができる。また明らかに、図１２と１４が組み合わされている必要がなく、図１３のデータ変換に図１４のデータ変換解除を、図１２のデータ変換装置に図１３に対応するデータ変換解除を組み合わせても良い。
【００５４】
本実施例では、データ変換装置に、鍵保持部および鍵加算部、データ拡張部を併せた例を示したが、実際の仕様において、必ずしもこれらを統合して実装とする必要は無い。というのは、データ変換部のみでもアタッカーは多くの試行錯誤が必要となるため、鍵加算を行わずとも、安全性が十分であると判断できるためである。
【００５５】
＜実施例５＞
図１５に示した本実施例では、データDを、データバス１５０４を通じて転送する際に、データDをデータRとともにデータ変換装置１５０３によって変形する。変形されたデータは、データバス１５０４を通過した後に、データ変換装置１５０５に入力される。データ変換装置１５０５は、データ変換装置１５０３の逆変換を行い、データRとデータDを得る。ここで、データRを乱数源から得られた乱数とすることで、データバス１５０４を通過するデータは、同一のデータDに対しても毎回変化するため、データDとデータバス１５０４を通過するデータの間の相関は無く、消費電流解析などの攻撃を防止することが出来る。また、データバス１５０４のプロービングによるデータ読み出しを行っても、データRが不明であるため、データDを推定することが困難となる。図１５では、データDを３２ビットの数とし、データRを８ビットの数とする例を示した。データ変換装置１５０３の出力は、データ変換装置１５０５でデータDとRを復元するために、４０ビット以上とする必要がある。このとき、データRが不明であっても、データバス１５０４をプロービングして得た４０ビットから、データDを２５６通りに限定することが出来る。しかし複数ブロックで構成されるデータにおいて、３２ビットｎブロックのデータは、２５６ｎ通りの候補数を持ち、実用上８ブロック以上（２５６ビット以上）のデータを推定することは困難である。もちろん、本実施例は、データＤおよびＲのビット長を制限するものではなく、データＲのビット長を大きくしたり、またブロック数を増加させるためにデータＤのビット長を小さくしたりすることで、総当りによるデータの推定をより困難にすることが出来る。本実施例においては、データ変換装置１５０５の出力であるデータＲは、そのまま破棄してもよい。
【００５６】
一方で、図１６に示すように、データRを、データバス１６０３を通じて転送し、データ変換装置１６０６の出力との比較を比較装置１６０９において行うように構成すれば、データバス１６０５を通じて転送されたデータのランダム化効果とともに、転送時のデータ変化などを検出することが出来る。データ変化の原因は、電気的な条件から発生するデータの破損である場合や、アタッカーによる故意のデータ破壊である場合などがある。特に、データ破壊によって暗号解読が行われる例があり、図１６の実施例のようにデータの正しさを検証し、比較結果に基づいて適切なエラー処理を行うことで、このような暗号解読を防止することが出来る。データRのビット長を大きくすることで、より高いエラー検出性能を得ることが出来る。
【００５７】
ここでは、データの送信側と受信側で、データＲをデータバスで転送共有する例を示したが、二つの同期した擬似乱数生成装置を用いることで、データ転送を省略することが出来る。擬似乱数生成装置の初期値を設定する場合には、本発明に従ったデータバスを用いることが出来る。
【００５８】
＜実施例６＞
図１７に示した、本実施例では、データDをデータバス１７０１から分岐してエラー訂正コード（ECC）生成装置１７０２に接続して、データDに対応するECCコードを生成し、データバス１７０３を通じてデータDとともにデータ変換装置１７０４に入力する。データ変換装置１７０４で変換されたデータは、データバス１７０５を通じてデータ変換装置１７０６に入力され、データ変換装置１７０６は、データDとECCコードに入力データを分離する。ECCコードとデータDは、それぞれデータバス１７０７、１７０８を通じてECC検査装置１７０９に入力され、ECC検査装置１７０９は、必要でありかつ可能であれば、データDに含まれるエラーを修正し、修正されたデータDを出力する。また、データDにエラーが含まれていた場合は、エラー信号出力線を通じて、エラーが発生したことを伝える。ここで、エラー信号出力線は、必ずしもエラー信号のみを出力するものではなく、エラーが含まれなかった場合は、正常にデータ転送が行われたことをあらわす信号を出力したり、エラーが発生した場合においても修正が可能であったかどうかをあらわす信号を出力したりするように構成することで、より適切にデータを管理することが出来る。
【００５９】
＜実施例７＞
図１８に示した本実施例では、データDを転送する際に、鍵加算装置１８０１において鍵K0を加算し、その結果はデータバス１８０３を通じてデータ変換装置１８０４に入力される。また、データバス１８０３は、ECC生成装置１８０２に接続されており、ECC生成装置１８０２は入力データに基づいてエラー訂正コードを生成する。同エラー訂正コードは、データバスを通じて、データ変換装置１８０４に入力される。データ変換装置１８０４は、２つの入力に基づいたデータ変換を行い、変換されたデータは、データバス１８０５を通じてデータ変換装置１８０６に送られる。データ変換装置１８０６は、入力データを２つに分離し、データバス１８０７および１８０８を通過してECC検査装置１８０９に送る。ここで、２つのデータは、データ変換装置１８０４に入力された２つのデータに対応する。すなわち、一方はデータDに鍵K0が加算されたデータであり、もう一方は、それに対応するエラー訂正コードである。これら２つのデータから、ECC検査装置１８０９は必要に応じてエラー訂正を行い、結果を鍵加算装置１８１０に渡す。ECC検査装置１８０９は、データにエラーを検出した場合、エラー信号出力線を通じて、エラーが発生したことを通知する。鍵加算装置１８１０は、受け取ったデータに鍵K1を加算し、データD'を出力する。本実施例において、鍵K0をランダムに変化させることで、データDが固定値であっても、データバス１８０５を通過するデータはランダム化されるため、アタッカーはデータバス１８０５を監視しても、データDを得ることが出来ない。また、鍵K0と鍵K1を等しいものとすることで、データDはデータD'と等しいものとなる。この場合、本実施例では、鍵加算装置１８０１によってデータDに鍵K0を加算した上で、ECC生成装置１８０２によるエラー訂正コードの生成を行ったが、順序を入れ替えて、データDに関するエラー訂正コードを生成し、その後データDに鍵K0を加算したものをデータ変換装置１８０４に入力し、データ変換装置１８０６の出力に関しても、データに鍵K1（ただし、今K1=K0と仮定している）を加算した後でECC検査装置１８０９によるエラー検査および訂正を行うように構成しても同様に転送データの安全性を確保することが出来る。
【００６０】
図１９に示した実施例は、特にデータDの送信先が記憶装置１９０６である場合である。記憶装置１９０６は、データ変換装置１９０７およびECC検査装置１９０８、鍵加算装置１９０９を内部に保持している。データバス１９０５を通して記憶装置１９０６に送付されたデータは、データ変換装置１９０７によってデータ部とエラー訂正コード部に分離され、ECC検査装置１９０８において、データ部の正しさの検証もしくはデータ部の修正が行われる。ECC検査装置１９０８の出力は鍵加算装置１９０９に渡され、鍵加算装置１９０９では、受け取ったデータに鍵K1を加算した結果であるデータD'を出力する。記憶装置１９０６は、データD'を記憶する。このとき、鍵K0とK1を互いに独立な値とすることによって、データDの送出側は実際に記録されたデータD'の形式を知ることができず、記憶装置１９０６に記憶されているデータD'を読み取ってもデータDを推定することが出来ないという、高い安全性を得ることが出来る。
【００６１】
図２０に示した実施例では、鍵加算装置２００１においてデータDに鍵Kを加算した結果と、ECC生成装置２００２によって生成されたエラー訂正コードに基づいてデータ変換装置２００３を用いて変形して得たデータD'を、データバス２００４を通じて記憶装置２００５に記録している。データD'読み出しの際は、データバス２００６を通してデータ変換装置２００７に入力し、データ変換装置２００７によってデータ部とエラー訂正コード部に分離した結果をECC検査装置２００８に入力する。必要に応じて修正されたデータは、鍵加算装置２００９において、鍵Kが加算された結果、データDとして得ることが出来る。この方式の特長は、データバス２００４および２００６に限らず記憶装置２００５上でのデータ変化をECC検査装置２００８において検出もしくは修正することが出来るという点である。鍵KはデータDに対応しており、必ずしもシステムで固定されている必要は無い。例えば、記憶装置のメモリアドレスやシステムのクロックカウントに依存した一時鍵を自動的に生成する鍵生成装置を用いて鍵Kを生成するように装置を構成すれば、ユーザーが鍵Kの管理が全く不要で、暗号化の有無を意識せずともよい、安全な装置を提供することが出来る。
【００６２】
図２１に、データ変換装置を備える情報処理装置の例を示す。情報総理装置の中央演算装置２１０１およびコプロセッサ２１０２、入出力ポート２１０７、記憶装置２１０４には、データ変換装置２１０８を設置しており、データが内部バス２１０３を通過する際の、先に述べた各種攻撃への対策としている。ここで、データ変換装置２１０８は、図１９に示すような鍵加算装置１９０１、ＥＣＣ生成装置１９０３やＥＣＣ検査装置１９０８、図１６に示すような比較装置１６０９を内部に含む構成とすることがある。また、必ずしもすべての装置にデータ変換装置を設置する必要はなく、図２０に示す実施例に見られるように、記憶装置にはデータ変換装置を設置しない構成も可能である。入出力ポート２１０７を通じて送受信されるデータは、基本的にアタッカーに既知の情報であるので必ずしもデータのランダム化などは必要ではない。
【００６３】
そこで、入出力ポートに設置されるデータ変換装置は、単にエラー検出・訂正を行える最低限の構成とすることで装置の実装負荷を軽減することが可能である。このとき、入出力ポートとのデータ送受信を行う装置は、エラー検出・訂正のみを行う特別なモードを備える。
【図面の簡単な説明】
【００６４】
【図１】一般的なマイクロコンピュータの構成図。
【図２】一般的なＩＣカード（スマートカード）の外観。
【図３】マイクロコンピュータにおける２つの異なる処理に対応する、２種類の消費電力波形。
【図４】ＣＰＵから記憶装置にデータＤを記録する際のデータ変形手順。
【図５】データＤの変形に逆元計算器を用いた場合の装置構成を示す図。
【図６】データＤの変形に際して鍵データ加算を併せて行う装置構成を示す図。
【図７】基本的なデータ変換装置。
【図８】鍵加算部とデータ変換部から構成されるデータ変換装置。
【図９】鍵入出力バスを備えたデータ変換装置。
【図１０】鍵を乱数源から得るように構成したデータ変換装置。
【図１１】データ変換解除を行うデータ変換装置。
【図１２】複数のデータ変換部を持つデータ変換装置例１。
【図１３】複数のデータ変換部を持つデータ変換装置例２。
【図１４】複数のデータ逆変換部を持つデータ変換解除時のデータ変換装置例。
【図１５】乱数ＲとデータＤを併せてデータ変換装置に入力することで、バスラインにおけるデータの攪乱を行う情報処理装置。
【図１６】乱数Ｒにより、バスラインデータの攪乱を行い、かつデータエラーを検出する構成とした情報処理装置。
【図１７】エラー修正コードを用いてバスラインデータの攪乱を行い、かつデータエラーの検出修正を行う構成とした情報処理装置。
【図１８】さらに鍵加算を行うことで、バスラインデータの攪乱を行う構成とした情報処理装置。
【図１９】記憶装置内部にデータ変換装置、ＥＣＣ検査装置、鍵加算装置を統合する構成とした情報処理装置。
【図２０】バスライン中に記憶装置を設置することにより、データ変換コストを削減する構成とした情報処理装置。
【図２１】データ変換装置を備えた、マイクロコンピュータの構成図。
【符号の説明】
【００６５】
１０１…中央演算装置、１０２…コプロセッサ、１０３…信号線１、１０４…記憶装置、１０５…プログラム格納部、１０６…データ格納部、１０７…入出力ポート、
２０１…ＩＣカード、２０２…ＩＣチップ、３０１,３０２…消費電力の波形、４０１…ＣＰＵ、４０２…記憶装置、４０３,４０５…データ変換装置、４０４…データバス、５０１…ＣＰＵ、５０３…データバス、５０４…データ変換装置、５０５…記憶装置、
２００１、２００９…鍵加算装置、２００２…ＥＣＣ生成装置、２００３、２００７…データ変換装置、２００４,２００６…データバス、２００５…記憶装置、２００８…ＥＣＣ検査装置。
【図１】
2005223477.tif 000003
【図２】
2005223477.tif 000004
【図３】
2005223477.tif 000005
【図４】
2005223477.tif 000006
【図５】
2005223477.tif 000007
【図６】
2005223477.tif 000008
【図７】
2005223477.tif 000009
【図８】
2005223477.tif 000010
【図９】
2005223477.tif 000011
【図１０】
2005223477.tif 000012
【図１１】
2005223477.tif 000013
【図１２】
2005223477.tif 000014
【図１３】
2005223477.tif 000015
【図１４】
2005223477.tif 000016
【図１５】
2005223477.tif 000017
【図１６】
2005223477.tif 000018
【図１７】
2005223477.tif 000019
【図１８】
2005223477.tif 000020
【図１９】
2005223477.tif 000021
【図２０】
2005223477.tif 000022
【図２１】
2005223477.tif 000023