(57)【要約】内部データを、互いにビット反転した関係にある正表現データと負表現データの表現形式を持つようにし、それらの表現形式で演算する演算装置を並列に動作させる。そして、結果の出力をランダムに選択するようにして、正表現データと負表現データの表現形式のいずれか一方をＩＣカード内で記憶するように動作させる。内部データとしては、表現形式を示す鍵データとデータを対として記憶する。また、それぞれの表現形式の演算装置の出力結果が、ビット反転した関係を保っているかを検証する。このようにすれば、ＩＣカードにおいて、ＩＣカード用チップでのデータ処理と消費電流との関連性を減少させ、セキュリティを高めることができる。また、チップに故意に誤動作を起こさせ、正常動作と比較して内部の秘密情報を取得するような攻撃がされた場合に、誤動作を検出してデータの盗用を防止できる。
2005027403.tif 000002
【特許請求の範囲】
【請求項１】
０と１の２値データの一方を電圧の高電位で表現し、他方を低電位で表す情報処理装置において、
前記１を高電位、前記０を低電位として演算をおこなう第一演算装置と、
前記０を高電位、前記１を低電位として演算をおこなう第二演算装置とを有し、
互いにビット反転した関係にある正表現データと負表現データの表現形式を持つ入力データを各々の演算装置に適合する形式に変換して、
前記正表現データの形式の入力データを前記第一演算装置、前記負表現データの形式の入力データを前記第二演算装置で並列して演算させ、
前記第一演算装置で正表現データの形式の出力データを、前記第二演算装置で負表現データ形式の出力データを得ることを特徴とする情報処理装置。
【請求項２】
前記正表現データと前記負表現データの形式の識別を、鍵データによりおこなうようにして、
しかも、正表現データを表す鍵データと、負表現データを表す鍵データは、互いにビット反転した関係にあって、
この情報処理装置の中では、前記鍵データをデータと共に、対として取扱うことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置は、
さらに、データを格納するレジスタまたは記憶装置を有し、
前記第一演算装置の出力データと前記第二演算装置の出力データのいずれを前記レジスタまたは記憶装置に転送するかを決定する選択部を有することを特徴とする請求項１および請求項２記載のいずれかの情報処理装置。
【請求項４】
前記第一演算装置の出力データと前記第二演算装置の出力データを比較し、互いにビット反転した関係にあるか否かを判定する判定部を有することを特徴とする請求項１および請求項２記載のいずれかの情報処理装置。
【請求項５】
前記判定部において、不一致と判定されたときに、エラーとして当該情報処理装置をリセットすることを特徴とする請求項４記載の情報処理装置。
【請求項６】
データ転送手段としてバスラインを有することを特徴とする請求項１記載の情報処理装置。
【請求項７】
前記鍵データは、１ビットまたは２ビットで表現されたことを特徴とする請求項２記載の情報処理装置。
【請求項８】
前記第一演算装置の出力データと前記第二演算装置の出力データのいずれを転送するかを選択するに際し、
乱数パターンによりランダムに選択することを特徴とする請求項３記載の情報処理装置。
【請求項９】
０と１の２値データで情報を扱い記憶するＩＣカードにおいて、
内部データとして、互いにビット反転した関係にある正表現データと負表現データの表現形式のデータを持ち、
正表現データの表現形式の演算結果と負表現データ表現形式の演算結果の両方を求めて、その一方をランダムに選択して、演算の出力データとして記憶することを特徴とするＩＣカード。
【請求項１０】
０と１の２値データで情報を扱い記憶するＩＣカードにおいて、
内部データとして、互いにビット反転した関係にある正表現データと負表現データの表現形式のデータを持ち、
正表現データの表現形式の演算結果と負表現データ表現形式の演算結果の両方を求めて、その出力が互いにビット反転した関係にあるかを判定し、判定の結果、不一致と判定されたときに、エラーとして当該情報処理装置をリセットすることを特徴とするＩＣカード。
【請求項１１】
ＣＰＵと記憶装置とを有し、
異常入力があったときに、前記ＣＰＵ内の並列して動作する演算装置の結果を比較することにより、異常入力を検出し、エラーとして前記ＣＰＵの出力を停止することを特徴とする請求項１０記載のＩＣカード。
【請求項１２】
０と１の２値データの一方を電圧の高電位で表現し、他方を低電位で表す情報処理装置において、
前記１を高電位、前記０を低電位として、正表現データの演算をおこなう第一演算装置と、
前記０を高電位、前記１を低電位として、負表現データの演算をおこなう第二演算装置とを有し、
前記正表現データと前記負表現データは、互いにビット反転した関係にある表現形式を持つデータであることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】  本発明は、情報処理装置に係り、高いセキュリティを持つ耐タンパ−情報処理装置であって、特にＩＣカードなどに用いて好適な情報処理装置に関する。
【背景技術】  近年、あらゆる分野で個人情報を取り扱うために従来の磁気カードに変わり、ＩＣカードが用いられるようになってきている。磁気カードでは、情報を蓄積するのをストリップに磁気を塗布することでおこなっていたが、ＩＣカードでは、カードにＩＣを埋め込んでそこで演算と情報を蓄積をおこなうことができる。そのために、ＩＣカードでは、勝手に書き換えることが許されないような個人情報の保持や、秘密情報である暗号鍵を用いたデータの暗号化や、暗号文の復号化をおこなうことができる。ＩＣカード自体は電源を持たず、接触式のＩＣカードでは、ＩＣカード用のリーダライタに差し込まれると、電源の供給を受け、動作可能となる。また、非接触式のＩＣカードは、リーダライタから発する電波を受け、電磁誘導の原理を利用して電力を起こすことによって動作可能となる。ＩＣカードは、動作可能になると、リーダライタから送信されるコマンドを受信し、そのコマンドに従って、データの転送等の処理をおこなう。
以下、図６および図７を用いてＩＣカードの構成の概要について説明する。
なお、接触式と非接触式のＩＣカードは、その本体は、本質的に同じＩＣチップなので、以下、接触式のＩＣカードについてのみ説明することにする。
図６は、ＩＣカードの概観とＩＣチップの端子を示す平面図である。
図７は、ＩＣカードに搭載されるＩＣの基本的構成を示すブロック図である。
ＩＣカードの基本概念は、図６に示すように、カード１０１の上に、ＩＣカード用チップ１０２を搭載したものである。図に示すように、一般にＩＣカードは、所定位置に、供給電圧端子Ｖｃｃ、グランド端子ＧＮＤ、リセット端子ＲＳＴ、入出力端子Ｉ／Ｏ、および、クロック端子ＣＬＫを有する。この端子の位置は、ＩＳＯ７８１６の規格に定められている。これらの諸端子を通して、リーダーライタから電源の供給やリーダライタとのデータの通信をおこなう。
ＩＣカードに搭載される半導体チップの構成は、基本的には通常のマイクロコンピュータと同じ構成である。図７に示されるように、カード部材用の半導体チップは、中央処理装置（ＣＰＵ）２０１、記憶装置２０４、入出力（Ｉ／Ｏ）ポート２０７、コプロセッサ２０２を有する。システムによってはコプロセッサがない場合もある。ＣＰＵ２０１は、論理演算や算術演算などをおこなう装置であり、記憶装置２０４は、プログラムやデータを格納する装置である。入出力ポートは、リーダライタと通信をおこなう装置である。コプロセッサは、暗号処理そのもの、または、暗号処理に必要な演算を高速におこなう装置である。例えば、ＲＳＡ暗号の剰余演算をおこなうための特別な演算装置や、ＤＥＳ暗号の処理をおこなう装置などがある。なお、ＩＣカード用プロセッサの中には、コプロセッサを持たないものも多くある。データバス２０３は、各装置を接続するバスである。
記憶装置２０４は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などで構成されている。ＲＯＭは、記憶情報を変更できないメモリであり、主にプログラムを格納するメモリである。ＲＡＭは、自由に書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容は消滅する。ＥＥＰＲＯＭは、電源の供給が中断されてもその内容を保持することができるメモリである。このＥＥＰＲＯＭは記憶情報を書き換える必要があり、ＩＣカードがリーダライタから抜かれても、保持が可能なデータを格納するために使われる。例えば、プリペイドカードでの使用金額などは、ＥＥＰＲＯＭに保持される。
このようなＩＣカードでは、暗号化が必須の技術となっている。暗号化に関してＩＣカードのセキュリティを高めるために以下の文献がある。
・特開２００１−５７３１号公報
・特開２００３−１５２７０２号公報
・特開２００２−３１１８２６号公報
・岡本栄司「暗号理論入門」共立出版、１９９３（ｐｐ．３３−４１）
【発明の開示】
上述のように、ＩＣカードでは、暗号化によりデータのセキュリティを高めることができ、これがＩＣカードの有用性の一因ともなっている。セキュリティを高めるためには、悪意によるデータの盗用者（ハッカー）などの攻撃（いわゆる「タンパ」行為）に対して防衛することが必要になる。
このようなときに、第一に問題となるのは、ハッカーがデータと電流の関連性を観測して、観測した消費電流の波形からＩＣカード用チップ内での処理や暗号鍵を推測する攻撃を仕掛けてくることである。
また、第二に問題となるのは、ハッカーがチップに故意に誤動作を起こさせ、正常動作と比較して内部の秘密情報（例えば、暗号の秘密鍵）を取り出そうとすることである。
以下、この課題について詳細に説明する。
先ず、図８を用いて第一の技術的課題について説明する。
図８は、ＩＣカードにおける消費電流の波形の例を示すグラフである。
ＩＣカードは、プログラムや重要な情報がＩＣカード用チップの中に密閉されているため、重要な情報の格納や、カードの中で暗号処理をおこなうために用いられる。従来、ＩＣカードでの暗号を解読する難しさは、暗号アルゴリズムの解読の困難さと同じと考えられていた。
しかしながら、ＩＣカードが暗号処理をおこなっている時の消費電流を観測し、解析することにより、暗号アルゴリズムの解読より容易に暗号処理の内容や暗号鍵が推定される可能性が示唆されている。消費電流は、リーダライタから供給されている電流を測定することにより観測することができる。それは、次のような理由による。ＩＣカード用チップを構成しているＣＭＯＳは、出力状態が１から０、あるいは、０から１に変わった時に電流を消費する。特に、図７に示されるデータバス２０３においては、バスドライバーの電流や、配線、および、配線に接続されているトランジスタの静電容量のため、バスの値が１から０、あるいは、０から１に変わると、大きな電流が流れる。そのため、消費電流を観測すれば、ＩＣカード用チップの中で、何が動作しているか分かる可能性がある。
ＩＣカード用チップの１サイクルでの消費電流の波形は、図７に示されるように、処理しているデータに依存して、電流波形が３０１や３０２のように異なる。このような差は、バス２０３を流れるデータや中央演算装置２０１で処理しているデータに依存して生じる。
コプロセッサ２０２は、ＣＰＵと並列に、例えば、５１２ビットの剰余演算をおこなうことができる。そのため、ＣＰＵの消費電流とは異なった消費電流波形の長時間の観測が可能である。その特徴的な波形を観測することにより、コプロセッサの動作回数を容易に測定することができる。コプロセッサの動作回数が暗号鍵と何らかの関係があるならば、動作回数から暗号鍵を推定できる可能性がある。また、コプロセッサでの演算内容に暗号鍵に依存した偏りがあると、その偏りが消費電流から求められ、暗号鍵が推定される可能性がある。
ＣＰＵでも同様の事情が存在する。暗号鍵のビットパタンは決まっている。このため、処理するデータを変更して消費電流を観測することにより、暗号鍵のビットパタンの影響が観測できる可能性がある。これらの消費電流の波形を統計的に処理することにより、暗号鍵を推定できる可能性がある。
したがって、データと電流の関連性を減少させれば、電流からデータを推定することが困難になる。例えば、データの道であるバスラインやメモリを暗号化する方法が考えられる。この考え方を実現する方法について述べたものに、特開２００１−５７３１号公報、特開２００３−１５２７０２号公報がある。
しかしながら、このような方法では、演算装置の消費電流に関する情報を隠すことができない。上記特開２００１−５７３１号公報、特開２００３−１５２７０２号公報の方法においては、演算装置に入力するデータは、正しいものでなければならないため、入力する前にデータを復号しなければならない。例えば、上記の特開２００１−５７３１号公報、特開２００３−１５２７０２号公報に開示されている方法では、データと乱数Ｋ（データ暗号化鍵）とを排他的論理和（ＥＸＯＲ）することにより暗号化しているが、例えば、二つのデータＡ，Ｂに対する加算Ａ＋Ｂについては、
（Ａ  ＥＸＯＲ  Ｋ）＋（Ｂ  ＥＸＯＲ  Ｋ）≠（Ａ＋Ｂ）  ＥＸＯＲ  Ｋ
であるので、データ暗号化の鍵Ｋで暗号化したデータをそのまま演算して、復号することはできない。
したがって、演算器にデータを入力する前に鍵Ｋによって再びデータを元のものに復号化する必要があり、演算器内部では、元のＡ，Ｂを処理することになる。したがって、このような方法では、演算器の消費電流に関する情報を隠すことはできないという問題点がある。
また、データと電流の関連性を減少させるための別のアプローチもある。
特開２００２−３１１８２６号公報では、特定の暗号処理について、上記特開２００１−５７３１号公報、特開２００３−１５２７０２号公報とは、異なる考え方でデータと電流の関連性を減少させている。
この特開２００２−３１１８２６号公報の方法では、「転字・換字を行うポジ用スクランブル回路とネガ用スクランブル回路」を並列動作させ、電流の撹乱をおこなう方法を提示している。
この転字・換字を行うポジ用スクランブル回路とネガ用スクランブル回路は、ＤＥＳ暗号などで用いられるＦ関数、特にＳ−ＢＯＸの処理を抽象したものである。Ｓ−ＢＯＸについては、岡本栄司「暗号理論入門」共立出版、１９９３（ｐｐ．３３−４１）に記載されている。Ｓ−ＢＯＸの処理は、本質的にはビットパタンの置き換え（転字・換字）であり、結線回路で構成される。転字・換字は、演算ではない。演算とは、Ｓ，Ｔ二つの値に対して、一つの値Ｕを対応させるものであり、例えば、Ｕ＝Ｓ＋Ｔ、Ｕ＝Ｓ＊Ｔのような算術演算や、論理和Ｕ＝Ｓ  ＯＲ  Ｔや論理積Ｕ＝Ｓ  ＡＮＤ  Ｔなどの論理演算があるが、転字・換字は、この意味の演算には成り得ない。
したがって、「転字・換字を行うポジ用スクランブル回路とネガ用スクランブル回路」の並列動作によっては、算術演算や、論理演算処理の電流の情報を隠すことはできない。また、この方法では、バスラインで消費される電流の情報を隠すことはできない。
このようにいずれの従来的においても、演算に伴う消費電力の情報を隠すことができないという問題点があった。
次に第二の技術課題について説明する。
一般に、チップは、以下のような異常環境においた際に、誤動作する可能性がある。
・異常高電圧／低電圧の供給
・異常高温／低温
・異常高周波クロック信号／低周波クロック信号の供給
・ストロボフラッシュ（強い光の照射）
ＩＣカードから不正に秘密情報を取り出す攻撃者は、上記のような異常環境を利用することがある。例えば、暗号処理をおこなっている際に、故意に誤動作を引き起こし、正常動作と比較することで、暗号の鍵を取り出すなどの行為がそれである。ストロボを用いたアタックの方法が書かれている。
本願発明者は、実際にストロボ照射を用いたアタックの方法などによって、ＩＣチップを上記のような異常環境で動作させる実験を繰り返しおこない、その誤動作を観察し、内部処理データの各ビットが、全て高電位となるか、全て低電位になることが非常に多いことを見出した。
従来、誤動作の検出のうち、有効なものとして、パリティチェックや、同一の二つ以上の演算器の結果を比較するなどの方法が取られていた。正常な環境下での誤動作は、１ビット反転などの現象が主であるので、このような対策が有効である。
しかしながら、同一の演算器では、データビット全部が高電位（あるいは低電位）になった場合は、誤動作を検出できない。これは、攻撃者が故意に誤動作を誘発することによって生ずる誤動作であり、正常時の処理の誤動作を検出する場合には想定されていないものである。
本発明は、上記問題点を解決するためになされたもので、その目的は、ＩＣカードにおいて、カード部材、特に、ＩＣカード用チップでのデータ処理と消費電流との関連性を減少させることにより、セキュリティを高めることにある。
また、別の目的は、チップに故意に誤動作を起こさせ、正常動作と比較して内部の秘密情報を取得するような攻撃がされた場合に、誤動作を検出してデータの盗用を防止することによりセキュリティを高めることにある。
本発明では、０と１の２値データで情報を扱い記憶するＩＣカードにおいて、内部データとして、互いにビット反転した関係にある正表現データと負表現データの表現形式のデータを持たせる。表現形式の判別は、データと対に持たせた鍵データによりおこなうようにする。そして、正表現データの演算をおこなう第一演算装置、負表現データの演算をおこなう第二演算装置とを設けて、正表現データと負表現データの表現形式を持つ入力データを各々の演算装置に適合する形式に変換し、正表現データの形式の入力データを第一演算装置、負表現データの形式の入力データを第二演算装置で並列して演算させる。その結果の出力は、ランダムに選択されて、内部の記憶装置に格納される。正表現データの演算をおこなう第一演算装置、負表現データの演算をおこなう第二演算装置とは、並列に動作する。したがって、外部からの消費電流を計測することを困難にする。
以上のように本発明の情報処理装置の構成により、データと消費電流の関連性を減少させることができて、ＩＣカードのセキュリティを高めることができる。
また、第一演算装置と第二演算装置のビット反転した関係にあるので、それをみたさないときには、エラーとして出力を停止する。これにより、異常入力があったときには、外部への出力がなくなるので、チップに故意に誤動作をおこさせて、内部の秘密情報を取得するような攻撃から防衛される。
本発明によれば、ＩＣカードにおいて、カード部材、特に、ＩＣカード用チップでのデータ処理と消費電流との関連性を減少させることにより、セキュリティを高めることができる。
また、本発明によれば、チップに故意に誤動作を起こさせ、正常動作と比較して内部の秘密情報を取得するような攻撃がされた場合に、誤動作を検出してデータの盗用を防止することによりセキュリティを高めることができる。
したがって、高いセキュリティを持つカード部材などの耐タンパ−情報処理装置を提供することができる。
【図面の簡単な説明】  図１は、本発明の一実施形態に係るＩＣカードの構成を示すブロック図である。
図２は、本発明の第一の実施形態に係る分配器４１７の構成を示すブロック図である。
図３は、分配器４１７において、入力データを反転して、８ビットに拡張する結線回路の模式図である。
図４は、分配器４１７において、入力データを８ビットに拡張する結線回路の模式図である。
図５は、本発明の第二の実施形態に係る分配器４１７の構成を示すブロック図である。
図６は、ＩＣカードの概観とＩＣチップの端子を示す平面図である。
図７は、ＩＣカードに搭載されるＩＣの基本的構成を示すブロック図である。
図８は、ＩＣカードにおける消費電流の波形の例を示すグラフである。
【符号の説明】
以下、上記実施形態の主な符号を記す。
Ｖｃｃ：電源端子、ＲＳＴ：リセット端子、ＣＬＫ：クロック端子、ＧＮＤ：グランド端子、Ｉ／Ｏ：入出力端子、
２０１…ＣＰＵ：中央処理装置、２０２…ＣＯＰＲＯ：コプロセッサ、２０７…Ｉ／Ｏ：入出力ポート、２０４…ＭＥＭ：記憶装置、２０５…ＰＡ：プログラム領域、２０６…ＤＡ：データ領域、
４０１…ＲＡＭ：連続して読み書き可能なメモリ、４０６…ＲＮＧ：乱数発生装置、４０８…ＣＯＭＰ：比較器、４１１…Ｐｏｓｉ：正論理の演算装置、４１２…Ｎｅｇａ：負論理の演算装置、４１７…ＤＩＳＰ：分配器、４２０…ＲＥＧ：レジスタ、４２１，４２２…Ｒ１：第一レジスタ，４２３，４２４…Ｒ２：第二レジスタ、
５０１…ＰＤＢＵＦ：正論理で表現されたデータ用のバッファ、５０２…ＮＤＢＵＦ：負論路で表現されたデータ用のバッファ、５０５…ＩＮＶ：反転拡張装置、５０６…ＥＸＴ：拡張装置、５０７…ＤＢＵＦ：データバッファ、５０８…Ｋ：１ビットの暗号化鍵データバッファ、
８０１…ＰＤＢＵＦ：正論理で表現されたデータ用のバッファ、８０２…ＮＤＢＵＦ：負論路で表現されたデータ用のバッファ、８０５…ＥＸＴ：拡張装置、８０７…ＤＢＵＦ：データバッファ、８１２…Ｋ：１ビットの暗号化鍵データバッファ（その一）、８０８…Ｊ：１ビットの暗号化鍵データバッファ（その二）。
発明の実施するための最良の形態
以下、本発明に係る各実施形態を、図１ないし図５を用いて説明する。
〔本発明の原理〕
先ず、上記の技術的課題を解決を解決するための本発明の原理について説明する。
第一の技術的課題を解決するため、本発明では、極性の異なる演算器に着目する。通常の計算機では、データの１と０に対し、１を高電位とし０を低電位とする構成と、０を高電位とし１を低電位とする構成の二通りがある。前者を正論理回路、後者を負論理回路などということもある。例えば、高電位をＨ、低電位をＬで表現すると、バイナリデータ「１１０１００１０」は、正論理では、「ＨＨＬＨＬＬＨＬ」、負論理では、「ＬＬＨＬＨＨＬＨ」で表現する。このような電気的違いにより、消費電力パタンもまた異なる。以下、１をＨ、０をＬで表現するデータ形式を正表現、１をＬ、０をＨで表現するデータ形式を負表現と呼ぶことにする。
本発明では、この現象を利用するために、データＡを正表現するか、負表現するかを決める鍵データＫを当該データＡに付随させ、データ対（Ａ，Ｋ）の形で処理をおこなう。例えば、Ｋ＝１であれば、Ａは正表現されており、Ｋ＝０であれば、Ａは負表現されていると定める。
このように定めた場合、データＡの二進数表現を（Ａ［Ｎ−１］，Ａ［Ｎ−２］，…，Ａ［０］）（Ａ［Ｊ］＝０または１）に対し、１ビットの鍵Ｋを用いて、
ＰＯＳＩ（Ａ，Ｋ）＝（Ａ［Ｎ−１］  ＥＸＯＲ  ＮＯＴ（Ｋ），Ａ［Ｎ−２］  ＥＸＯＲ  ＮＯＴ（Ｋ），…，Ａ［０］  ＥＸＯＲ  ＮＯＴ（Ｋ））…（式１）
とすれば、これはＡの正表現となる。逆に、
ＮＥＧＡ（Ａ，Ｋ）＝（Ａ［Ｎ−１］  ＥＸＯＲ  Ｋ，Ａ［Ｎ−２］  ＥＸＯＲ  Ｋ，…，Ａ［０］  ＥＸＯＲ  Ｋ）    …（式２）
とすれば、Ａの負表現が得られる。
以下、正論理の演算器をＰ−ＡＬＵ、負論理の演算器をＮ−ＡＬＵと書くことにする。一般に、演算は、二つのデータＡ１，Ａ２に対してなされる。論理演算、算術演算などを総称してＯＰと表現すると、Ａ１とＡ２に対して演算ＯＰを施して得られた結果をＡ３とするという操作を
Ａ３  ＝  Ａ１  ＯＰ  Ａ２
のように書くことができる。
以下、正論理の演算器をＰ−ＡＬＵ、負論理の演算器をＮ−ＡＬＵと書くことにする。Ｐ−ＡＬＵでは、
Ａ３（正表現）＝  Ａ１（正表現）  ＯＰ  Ａ２（正表現）
Ｎ−ＡＬＵでは、
Ａ３（負表現）＝  Ａ１（負表現）  ＯＰ  Ａ２（負表現）
となる。
そこで、データと鍵データの対（Ａ，Ｋ）から、ＰＯＳＩ（Ａ，Ｋ），ＮＥＧＡ（Ａ，Ｋ）を計算する分配回路を設け、Ｐ−ＡＬＵでは、
ＰＯＳＩ（Ａ１，Ｋ１）  ＯＰ  ＰＯＳＩ（Ａ１，Ｋ２）
の計算をおこない、Ｎ−ＡＬＵでは、
ＮＥＧＡ（Ａ１，Ｋ１）  ＯＰ  ＮＥＧＡ（Ａ１，Ｋ２）
を計算する。Ｐ−ＡＬＵの演算結果は、Ａ３の正表現であり、Ｎ−ＡＬＵの演算結果は、Ａ３の負表現である。そこで、このいずれかをランダムに選ぶ選択回路を設け、Ｐ−ＡＬＵの結果を選択するときは、Ｋ３＝１とし、Ｎ−ＡＬＵの結果を選択するときは、Ｋ３＝０とすれば、結果は（Ａ３，Ｋ３）と書くことができる。
ここで、Ｐ−ＡＬＵとＮ−ＡＬＵの動作電流は異なり、Ｐ−ＡＬＵでのＰＯＳＩとＮ−ＡＬＵでのＮＥＧＡは、並列に動作することに留意する。そのため、この方法によって、消費電流の波形から、処理や暗号鍵の推測を困難にすることが可能となる。
次に、第二の技術的課題を解決するために、以下のようにする。
上記の方法において用いられたＰ−ＡＬＵの出力値ＡとＮ−ＡＬＵの出力Ｂの反転値ＮＯＴ（Ｂ）が一致するかどうかを調べる比較器を設け、比較結果が一致しているときは、処理を継続し、不一致であれば、エラーとしてリセットして、結果を出力しないようにする。Ｐ−ＡＬＵの出力とＮ−ＡＬＵの出力は、ビット反転の関係が成り立たなければならないので、エラーが検出される。先に述べたように、故意に引き起こしたエラーは、データ全体が、全て高電位（または低電位）のように起きることが多い。したがって、Ｐ−ＡＬＵの出力とＮ−ＡＬＵの出力は、共に、高電位（または低電位）となる可能性が高い。この場合、両出力はビット反転の関係にないので、エラーが検出される。
上記のように本発明により、セキュリティの高いＩＣカードを提供することができる。
また、本発明は、既存技術と組み合わせて使うことにより、よりセキュリティを高めることができる。例えば、特開２００１−５７３１号公報はバスラインやメモリの暗号化方法について開示されたものであるが、これらの技術との組み合わせは有効と考えられる。すなわち、特開２００１−５７３１号公報に開示された技術によりバスラインやメモリの暗号化をおこない、ＣＰＵに関しては、本発明を用いることにより、より広範囲の内部データを暗号化して処理することができ、セキュリティを向上させることができる。
〔実施形態１〕
以下、本発明に係る第一の実施形態を、図１ないし図４を用いて説明する。
図１は、本発明の一実施形態に係るＩＣカードの構成を示すブロック図である。
図２は、本発明の第一の実施形態に係わる分配器４１７の構成を示すブロック図である。
図３は、分配器４１７において、入力データを反転して、８ビットに拡張する結線回路の模式図である。
図４は、分配器４１７において、入力データを８ビットに拡張する結線回路の模式図である。
図４に示されるように、本発明の一実施形態に係るＩＣカードは、ＲＡＭ４０１、Ｐ−ＡＬＵ４１１、Ｎ−ＡＬＵ４１２、乱数発生装置４０６、比較器４０８、分配器４１７、入力データバッファ４１３，４１４，４１５，４１６、出力データバッファ４０９，４１０、レジスタ４２０、リードデータバス４１９、リードデータ用鍵バス４１８、選択器４０７より構成される。
より詳細には、ＲＡＭの内部には、データ４０３と鍵データ４０２のように両者が組となって格納されている。データは、必ず鍵データを伴う。ここでは、物理的に近いように描いたが、データと組にして転送されるのであれば、物理的に離れていてもよい。
レジスタ４２０の内部もＲＡＭと同様に、データ４２２と鍵データ４２１が組となって格納されている。
なお、ここには示していないが、プログラムは、通常、ＲＯＭやＥＥＰＲＯＭに格納されており、前記ＡＬＵは、当該プログラムに従って動作する。また、煩雑化を避けるため、アドレスバスの説明や、クロック信号の説明も省略することにする。
ここでは、各構成要素の働きを明らかにするため、ＲＡＭ上の二つのデータＡ，Ｂに対して、加算処理をする場合を考える。通常、この処理は、「ＲＡＭ上の二つのデータＡ，ＢをそれぞれレジスタＲ１，Ｒ２に転送する」（処理１）、
「レジスタＲ１，Ｒ２のデータを演算器に転送し、加算処理をおこなう」（処理２）、「加算の結果を再びレジスタＲ２に転送する」（処理３）
という一連の動作から構成されている。
本実施形態においては、ＲＡＭ４０１に格納されているデータは、先に説明したように、
（データ，鍵データ）
の形で保持される。ここでは、データＡ（４０３）鍵データＫ１（４０２）は、１ビットとし、正表現であれば１、負表現であれば０とする。データのビット長には任意性があるが、ここでは８ビットとしておく。（処理１）では、データ４０３（Ａ）は、データバス４０５、鍵データ４０２は、鍵データバス４０４を通って、データレジスタＲ１（４２２）、鍵データレジスタ４２１に転送される。同じようにデータＢ（４２６）と鍵データＫ２（４２５）もそれぞれデータレジスタＲ２（４２３）、鍵データレジスタ４２４に転送される。
次に、これらのデータは、順番に、データバス４１９、鍵データバス４１８を通って、分配器４１７に転送される。この分配器４１７は、図２のような構成の回路である。
分配器４１７の構成を説明する。分配器４１７は、バッファとして、正表現データのバッファ５０１、負表現データのバッファ５０２を有する。ここでバッファとは、物理的にはレジスタと同じもので、データの一時的な記憶に用いられるものである。また、排他的論理和回路５０３と排他的論理和回路５０４は、８ビットの排他的論理和を計算する回路である。拡張器５０５は、図３に示すように、１ビット入力をインバータ６０１を用いてビット反転し、これを８ビットに拡張する拡張器である。拡張期５０６は、図４に示すように、１ビットの入力を８ビットに拡張する回路である。
入力データバッファ５０７は、データの入力バッファ、鍵データバッファ５０８は、１ビットの鍵データのバッファである。データバス５０９は８ビットのデータバス、鍵データバス５１０は、１ビットの鍵データバスである。
分配器の動作は、以下の通りである。８ビットのデータＤは、データバス５０９を通って入力データバッファ５０７に転送される。同じく、データＤが正表現であるか負表現であるかを示す鍵データＫも鍵データバス５１０を通って、鍵データバッファ５０８に転送される。鍵データＫは、拡張器５０６によって８ビットに拡張され、排他的論理和回路５０４に入力される。データバッファ５０７のデータは、そのまま、排他的論理和回路５０４に入力され、鍵データとの排他的論理和が計算され、負表現データバッファ５０２に入力される。同時に、データバッファ５０７のデータは、排他的論理和回路５０３に入力される。鍵データバッファ５０８のデータは、図３に示す否定拡張回路に入力され、その鍵データの値を反転して、これを８ビットに拡張するものである。この８ビットのデータは、排他的論理和回路５０３に入力され、データバッファ５０７のデータとの排他的論理和が計算され、正表現データバッファ５０１に入力される。
分配器によって、データＡ，Ｂが、それぞれに随伴する鍵データＫ１、Ｋ２に従って、データバッファ４１３，４１４，４１５，４１６に転送され、それぞれ正表現のデータの演算をおこなうＰ−ＡＬＵ４１１、負表現のデータの演算をおこなうＮ−ＡＬＵ４１２に送られる。これらの演算器でおこなわれる演算は、（式１）、（式２）で示したものである。本例では、それぞれの演算器で、並列して加算処理され（処理２）、正表現用のデータバッファ４０９、負表現用のデータバッファ４１０に格納される。そして、これらのデータは、比較器４０８に入力される。Ｐ−ＡＬＵ４１１とＮ−ＡＬＵ４１２で並列に演算されることにより、外部からの消費電力の推測を困難にすることは、〔本発明の原理〕でも述べたところである。
この比較器は、バッファ４０９、４１０の値に対し、そのビット毎の排他的論理和を取り、結果の８ビット全ての論理積を取り、これを制御信号とする。制御信号は、１であれば、情報処理装置をリセットし、０であれば処理を継続させるものである。すなわち、得られた両者の出力データがビット反転しているか否かを調べるものである。
この制御信号が０であり、処理が継続されるものとすると、データバッファ４０９、４１０の値を乱数発生装置４０６の出力する１ビットに合わせて選択する選択装置４０７に入力される。
選択回路４０７は、乱数発生装置４０６の出力ビットが１であれば、正表現のデータを鍵データバス４０４を通してレジスタＲ２の鍵データレジスタ部４２４に転送する。乱数発生装置４０６の出力ビットは、比較器４０７にも転送され、この比較器４０７は、そのビットが１であれば、正表現データ４０９を、データバス４０５を通して、レジスタＲ２のデータ部４２３に転送する。
これにより、鍵データと対となった正表現データを、Ｒ２に得ることができる（処理３）。同様に、乱数発生装置４０６の出力ビットが０のときは、鍵データと対となった負表現データを得ることができる。
鍵データと対となった正表現データと鍵データと対となった負表現データを得る動作は、並列して動作し、外部からの消費電力を推測することを困難にする。
なお、本実施形態では、Ｐ−ＡＬＵ４１１とＮ−ＡＬＵの両者の動作タイミングについては触れなかったが、例えば、入力データバッファ４１３，４１４，４１５，４１６のデータに対してＡＬＵへの入力タイミングを与える信号（通常はＩＣチップに外部から供給されているクロック信号）に従って、そのバッファ群のバスドライバを同時に動作させればよい。なお、本実施形態の並列に演算されるとは、同一のクロック信号に従って動作させるという意味であり、信号の遅延程度のずれを許容するという意味である。
〔実施形態２〕
以下、本発明に係る第二の実施形態を、図５を用いて説明する。
図５は、本発明の第二の実施形態に係る分配器４１７の構成を示すブロック図である。
第一の実施形態は、鍵データが１ビットの場合であったが、本実施形態は、鍵データを、２ビットにしたものである。
２ビットにする場合のＩＣカードの基本的な構成は、図１に示したブロック図の構成と同じである。
本実施形態では、鍵データバス４０４、４１８は２ビットのバスとする（物理的に、信号線が二本になる）。分配器４１７の構成も変えなければならない。
ここでは、２ビットの信号に対して、例えば、０１を正表現、１０を負表現に対応させる。００、１１という信号は使わないものとする。鍵データのどのビットパタンに正表現、負表現を対応させるかには任意である。
分配器４１７の構成は、図５に示すようになる。分配器４１７は、バッファとして、正表現データのバッファ８０１、負表現データのバッファ８０２を有する。排他的論理和回路８０３と排他的論理和回路８０４は、８ビットの排他的論理和を計算する回路である。拡張器８０５は、１ビット入力を８ビットに拡張する回路である（図４参照）。入力バッファ８０７は、データの入力バッファ、鍵データバッファ８０８，８１２は、１ビットの鍵データバッファである。データバス８０９は８ビットのデータバス、鍵データバス８１０，８１１は、それぞれ１ビットの鍵データバスである。したがって、鍵データの表現としては、２ビットを使用することになる。
分配器４１７の動作は、以下の通りである。８ビットのデータＤは、データバス８０９を通って入力データバッファ８０７に転送される。同じく、データＤが正表現であるか負表現であるかを示す鍵データＫ、Ｊもそれぞれ鍵データバス８１０、８１１を通って、鍵データバッファ８１２、８０８に転送される。鍵データＫは、拡張器８０５によって８ビットに拡張され、排他的論理和回路８０３に入力される。同様に、データバッファ８０７のデータは、そのまま、排他的論理和回路５０４に入力され、鍵データとの排他的論理和が計算され、負表現データバッファ５０２に入力される。同時に、データバッファ５０７のデータは、排他的論理和回路５０３に入力される。鍵データバッファ５０８のデータは、図３に示す否定拡張回路に入力され、その鍵データの値を反転して、これを８ビットに拡張するものである。当該８ビットは、排他的論理和回路５０３に入力され、データバッファ５０７のデータとの排他的論理和が計算され、正表現データバッファ５０１に入力される。
そして、正表現と負表現の演算回路によって、それぞれ演算されて、その後、乱数により、正表現と負表現のいずれかを選択されて、レジスタに転送されるのは、第一の実施形態と同様である。
本実施形態では、鍵データバスを２ビットで表現して、それぞれ「０１」「１０」により、鍵データを表現した。データ秘匿の観点から言えば、鍵データ自体が０、１が同数の数使われているために、プリチャージバスなどで、電流に着目した鍵データの解析がおこなわれにくくなる利点がある。
【図１】
2005027403.tif 000003
【図２】
2005027403.tif 000004
【図３】
2005027403.tif 000005
【図４】
2005027403.tif 000006
【図５】
2005027403.tif 000007
【図６】
2005027403.tif 000008
【図７】
2005027403.tif 000009
【図８】
2005027403.tif 000010
【手続補正書】
【提出日】平成17年1月11日(2005.1.11)
【手続補正００１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】特許請求の範囲
【請求項１】０と１の２値データの一方を電圧の高電位で表現し、他方を低電位で表す情報処理装置において、
前記１を高電位、前記０を低電位として演算をおこなう第一演算装置と、
前記０を高電位、前記１を低電位として演算をおこなう第二演算装置とを有し、
互いにビット反転した関係にある正表現データと負表現データの表現形式を持つ入力データを各々の演算装置に適合する形式に変換して、
前記正表現データの形式の入力データを前記第一演算装置、前記負表現データの形式の入力データを前記第二演算装置で並列して演算させ、
前記第一演算装置で正表現データの形式の出力データを、前記第二演算装置で負表現データ形式の出力データを得て、
前記第一演算装置の出力データと前記第二演算装置の出力データを比較し、互いにビット反転した関係にあるか否かを判定する判定部を有することを特徴とする情報処理装置。
【請求項２】前記正表現データと前記負表現データの形式の識別を、鍵データによりおこなうようにして、
しかも、正表現データを表す鍵データと、負表現データを表す鍵データは、互いにビット反転した関係にあって、
この情報処理装置の中では、前記鍵データをデータと共に、対として取扱うことを特徴とする請求項１記載の情報処理装置。
【請求項３】前記情報処理装置は、
さらに、データを格納するレジスタまたは記憶装置を有し、
前記第一演算装置の出力データと前記第二演算装置の出力データのいずれを前記レジスタまたは記憶装置に転送するかを決定する選択部を有することを特徴とする請求項１および請求項２記載のいずれかの情報処理装置。
【請求項４】（削除）
【請求項５】前記判定部において、不一致と判定されたときに、エラーとして当該情報処理装置をリセットすることを特徴とする請求項４記載の情報処理装置。
【請求項６】データ転送手段としてバスラインを有することを特徴とする請求項１記載の情報処理装置。
【請求項７】前記鍵データは、１ビットまたは２ビットで表現されたことを特徴とする請求項２記載の情報処理装置。
【請求項８】前記第一演算装置の出力データと前記第二演算装置の出力データのいずれを転送するかを選択するに際し、
乱数パターンによりランダムに選択することを特徴とする請求項３記載の情報処理装置。
【請求項９】０と１の２値データで情報を扱い記憶するＩＣカードにおいて、
内部データとして、互いにビット反転した関係にある正表現データと負表現データの表現形式のデータを持ち、
正表現データの表現形式の演算結果と負表現データ表現形式の演算結果の両方を求めて、その一方をランダムに選択して、演算の出力データとして記憶することを特徴とするＩＣカード。
【請求項１０】０と１の２値データで情報を扱い記憶するＩＣカードにおいて、
内部データとして、互いにビット反転した関係にある正表現データと負表現データの表現形式のデータを持ち、
正表現データの表現形式の演算結果と負表現データ表現形式の演算結果の両方を求めて、その出力が互いにビット反転した関係にあるかを判定し、判定の結果、不一致と判定されたときに、エラーとして当該情報処理装置をリセットすることを特徴とするＩＣカード。
【請求項１１】ＣＰＵと記憶装置とを有し、
異常入力があったときに、前記ＣＰＵ内の並列して動作する演算装置の結果を比較することにより、異常入力を検出し、エラーとして前記ＣＰＵの出力を停止することを特徴とする請求項１０記載のＩＣカード。
【請求項１２】０と１の２値データの一方を電圧の高電位で表現し、他方を低電位で表す情報処理装置において、
前記１を高電位、前記０を低電位として、正表現データの演算をおこなう第一演算装置と、
前記０を高電位、前記１を低電位として、負表現データの演算をおこなう第二演算装置とを有し、
前記正表現データと前記負表現データは、互いにビット反転した関係にある表現形式を持つデータであり、
前記第一演算装置の出力データと前記第二演算装置の出力データを比較し、互いにビット反転した関係にあるか否かを判定する判定部を有することを特徴とする情報処理装置。




【国際調査報告】
2005027403.tif 000011
2005027403.tif 000012
2005027403.tif 000013
2005027403.tif 000014