(57)【要約】【課題】情報処理装置において、消費電流などのリーク情報から内部で処理される秘密情報を推定されることを防ぐことにある。【解決手段】その解決手段は次の通りである。鍵情報を自動的に生成する鍵生成装置と、鍵情報を用いてデータを暗号化する暗号化装置と、複数の暗号化データを暗号化のための鍵情報とともに記録するレジスタと、暗号化のための鍵情報とともに表現したデータと新たな鍵情報とを入力として演算を行い、演算結果を入力された新たな鍵で暗号化して出力する演算装置とを少なくとも有し、情報処理装置内での処理を暗号化されたデータ表現で行うことが可能な情報処理装置。【選択図】        図４
2006136032.tif 000002
【特許請求の範囲】
【請求項１】
内部バスと、
演算器と、
鍵データ発生し、前記鍵データを時間に応じて変化させる鍵発生器と、
復号化器と、
暗号化器とを有し、
前記内部バスは、暗号化データと、前記暗号化データに同時に伴われる鍵データとをメモリへ転送し、前記暗号化データと前記鍵データの両方を組で前記メモリへ格納させ、
前記復号化器は、前記暗号化データに随伴する鍵データにより、前記暗号化データを復号化し、前記演算器ヘその復号化データを出力し、
前記暗号化器は、前記鍵発生器により生成される鍵データにより、前記演算器からの出力データを暗号化し、その暗号化データと前記鍵発生器により発生された鍵データとを前記内部バスへ出力することを特徴とする情報情報装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置に関し、特に機密性の高いＩＣカードなどの耐タンパ装置に関する。
【背景技術】
【０００２】
ICカードは、主に、勝手に書き換えられない情報の保持や秘密情報である暗号鍵を使ったデータの暗号化や暗号文の復号化を行うために使われる装置である。ＩＣカードは、電源を持っていないため、リーダライタに差し込まれると、電源の供給を受け、動作可能となる。動作可能になると、リーダライタからコマンドを受けて、コマンドに従い、データの転送を行う。ＩＣカードの一般的な解説は、以下の非特許文献１などにある。ＩＣカードの構成は、図１に示すように、カード１０１の上に、ICカード用チップ１０２を搭載したものである。一般にＩＣカードは、接点を持ち、接点を通して、リーダーライタから電源の供給やリーダライタとのデータの通信を行う。ＩＣカード用チップの構成は、基本的にマイクロコンピュータと同じような構成である。その構成は、図２に示すように、中央演算装置２０１、記憶装置２０４、入出力ポート２０７、コ・プロセッサ２０２からなる。中央処理装置２０１は、論理演算や算術演算などを行う装置であり、記憶装置２０４は、プログラムやデータを格納する装置である。入出力ポートは、リーダライタと通信を行う装置である。コ・プロセッサは、剰余演算を行うための特別な演算装置であり、非対称暗号であるRSAの演算などに用いられる装置である。ICカード用プロセッサの中には、コ・プロセッサを持たないものも多くある。データバス２０３は、各装置を接続するバスである。記憶装置２０４は、ＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌ Ｅｒａｓａｂｌｅ Ｐｒｏｇｒａｍｍａｂｌｅ Ｒｅａｄ ＯｎｌｙＭｅｍｏｒｙ）などからなる。ＲＯＭは、変更できないメモリであり、主にプログラムを格納するメモリである。ＲＡＭは自由に書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容が消えてなくなる。ＩＣカードがリーダライタから抜かれると電源の供給が中断されるため、ＲＡＭの内容は、保持できなくなる。ＥＥＰＲＯＭは、電源の供給が中断されてもその内容を保持することができるメモリである。書き換える必要があり、ＩＣカードがリーダライタから抜かれても、保持するデータを格納するために使われる。例えば、プリペイドカードでのプリペイドの度数などは、使用するたびに書き換えられ、かつリーダライタか抜かれてもデータを保持する必要があるため、ＥＥＰＲＯＭで保持される。ＩＣカードは、プログラムや重要な情報がICカード用チップの中に密閉されているため、重要な情報を格納したり、カードの中で暗号処理を行うために、使われている。ＩＣカードでの暗号処理の解読の難しさは、暗号アルゴリズムの解読の困難さと同じと考えられていた。しかし、ＩＣカードが暗号処理を行っている時の消費電流を観測し、解析することにより、暗号アルゴリズムの解読より容易に暗号処理の内容や暗号鍵が推定される可能性が示唆されている。消費電流は、リーダライタから供給されている電流を測定することにより観測することができる。これは、以下の非特許文献２にこのような危険性が記載されている。ＩＣカード用チップを構成しているＣＭＯＳは、出力状態が１から０あるいは０から１に変わった時に電流を消��する。特に、データバス２０３は、大きな電気容量を持つため、バスの値が１から０あるいは０から１に変わると、大きな電流が流れる。そのため、消費電流を観測すれば、ＩＣカード用チップの中で、何が動作しているか分かる可能性を示唆している。図３は、ＩＣカード用チップの１サイクルでの消費電流の波形を示したものである。処理しているデータの依存して、電流波形が３０１や３０２のように異なる。このような差は、バス２０３を流れるデータや中央演算装置２０１で処理しているデータに依存して生じる。
【０００３】
ＩＣカード用チップを構成しているＣＭＯＳは、出力状態が１から０、あるいは０から１に変わったときに電力を消費する。したがって、消費電流を観測すれば、ＩＣカードのチップ内で、何が動作しているのかや、どの様なデータが処理されているのかを推定することが可能である。
【０００４】
従来技術としては、消費電流値を常に一定にする方法と、同じ処理を行う場合でも消費電流を毎回変化させる方法がある。前者の例としては、各々のデータ線をポジとネガの2種類を用意し、演算器も複数個用意し、ダミーの演算と真の演算を同時に行うことにより、入力データや演算結果にかかわらず、常に消費電流が等しくなるという方法(特許文献１)があるが、バス幅が2倍、演算器が４倍とハードウエア規模が大きくなってしまう点が問題となる。後者の方法としては、バス転送時やメモリ格納時に暗号化を行う方法（特許文献２）が提案されているが、鍵情報を複数のデータで共有しており、それぞれのデータのライフタイムが異なるため、暗号化鍵を更新するタイミングに制限があり、プログラミング上の制約が加わる。
【０００５】
【特許文献１】国際公開第９９／６７７６６号パンフレット
【特許文献２】特開２００１−５７３１号公報
【非特許文献１】オーム社出版電子情報通信学会編水沢順一著「ＩＣカード」
【非特許文献２】Ｊｏｈｎ Ｗｉｌｅｙ ＆ ｓｏｎｓ社 Ｗ．Ｒａｎｋｌ ＆ Ｗ．Ｅｆｆｉｎｇ著 「Ｓｍａｒｔ Ｃａｒｄ Ｈａｎｄｂｏｏｋ」の８．５．１．１ Ｐａｓｓｉｖｅ ｐｒｏｔｅｃｔｉｖｅ ｍｅｃｈａｎｉｓｍｓ（２６３ページ）
【非特許文献３】岡本栄司、「暗号理論入門」、pp.65-66、共立出版株式会社
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本願発明の課題は、ＩＣカード向けマイクロコンピュータチップでのデータ処理と消費電力との関連性を、ハードウエア規模の大幅な増加やプログラミング上の制約が加わることなしに減少させることである。
【課題を解決するための手段】
【０００７】
消費電流と処理データとの関連性を減少させる方法には（１）データの値が同じであっても、消費電流が予測不可能な方法で変化させる方法、（２）データの値が異なる場合でも、消費電流が常に一定とする方法、の2通りの方法が有る。
【０００８】
本発明では、（１）の方法により、消費電流とデータとの関連性を減少させる。基本的には、データを暗号化し、暗号化の鍵を短い期間で変化させることにより、データの真の値と電気的な表現の関連性を予測不能にする。ここで、暗号化を行う際の鍵を複数のデータで共有すると、鍵を書き換える場合に、鍵を共有するデータすべてについて、鍵の変更とともにデータの書き換えを行わなければならない。したがって、暗号化の際の鍵を共有するデータのサイズは小さければ小さいほど望ましく、データがアクセスされる最小単位と等しくすることが望ましい。たとえば、バイト毎に鍵を用意する。また、鍵のビット数は、最低限１ビットあればよい。1ビットの鍵は、2種類の鍵を選択するための選択ビットとみなすこともできる。もっとも簡単な一例としては、鍵のビットが１の時には、データを反転し、鍵のビットが０のときはデータを反転させない、という方法がある。ここで用いる暗号化手法は、バーナム暗号の一種だと考えることが可能で、鍵ビットが１の時には、２５５を鍵として用い、鍵ビットが０の時には、０を鍵として用いることと等しい。バーナム暗号とは、秘密鍵Ｋと ｘｏｒ を取って暗号化する方法で、復号化する際には暗号化データに対して、暗号化の際に用いた秘密鍵Ｋで再び ｘｏｒ を取ることで復号化する暗号方式である。
【０００９】
暗号データ＝（鍵ビット×２５５） ｘｏｒ 平文データ …（式１）
たとえば、10進数で63という値を暗号化する場合、鍵ビットを１とすると、2進数表現であらわすと、
（１ × １１１１１１１１（ｂ）） ｘｏｒ ００１１１１１１（ｂ）
＝ １１００００００（ｂ） …（式２）
となり、鍵ビットを最上位に付与し、
暗号化されたデータ＝１１１００００００（ｂ）＝４４８ …（式３）
と63が448に暗号化される。復号化する場合は、最上位1ビットを鍵ビット、下位8ビットを暗号化データとして取り出し、
平文データ＝（鍵ビット×２５５） ｘｏｒ 暗号化データ …（式４）
により復号化可能で、
（ １ × １１１１１１１１（ｂ） ） ｘｏｒ １１００００００
＝ ００１１１１１１（ｂ） ＝ ６３ … (式５）
となる。また、（式１）や（式４）で鍵ビットによって選択される鍵を別の値にすることも可能である。その際、１ビットの鍵ビットで選択される２つの鍵データは、ｘｏｒ を取ると、全ビットが１になるような値にする必要がある。これは、２つの鍵で同一の値をもつビットが存在したとすると、鍵ビットの値にかかわらず、当該ビットの値が常に同じ値に符号化されるためである。０と２５５はこの条件を満たしている。したがって、対象となるデータが8ビットの場合は、暗号化するときの鍵の値をＫとすると、鍵ビットが１ビットの場合の暗号化、復号化の式は
暗号データ＝（ｎｏｔ（鍵ビット×２５５） ｘｏｒ 鍵値） ｘｏｒ 平文データ …（式６）
となる。復号化は、同様に
平文データ＝（ｎｏｔ（鍵ビット×２５５） ｘｏｒ 鍵値） ｘｏｒ 暗号データ …（式７）
となる。また、暗号データの最上位等に鍵ビットを付与して格納しておく。たとえば、鍵値を１７０（＝１０１０１０１０（ｂ））として、平文データを１２３とすると、鍵ビットが１の場合
（ｎｏｔ（１×２５５） ｘｏｒ １７０） ｘｏｒ １２３ 
＝ （ｎｏｔ（１ × １１１１１１１１（ｂ）） ｘｏｒ １０１０１０１
０（ｂ）） ｘｏｒ １１１１０１１（ｂ）
＝ （ｎｏｔ （１１１１１１１１（ｂ）） ｘｏｒ １０１０１０１０（ｂ
）） ｘｏｒ １１１１０１１（ｂ）
＝ １０１０１０１０（ｂ） ｘｏｒ １１１１０１１（ｂ）
＝ １１０１０００１（ｂ）
＝ ２０９
（式８）
最上位に鍵ビットを付け加えると、２０９＋２５６＝４６５ となる。同様に、鍵ビットが0の場合は、
（ｎｏｔ（０×２５６） ｘｏｒ １７０） ｘｏｒ １２３
＝ （ｎｏｔ（０ × １１１１１１１１（ｂ）） ｘｏｒ １０１０１０１
０（ｂ）） ｘｏｒ １１１１０１１（ｂ）
＝ （ｎｏｔ（０） ｘｏｒ １０１０１０１０（ｂ）） ｘｏｒ １１１１
０１１（ｂ）
＝ ０１０１０１０１（ｂ） ｘｏｒ １１１１０１１（ｂ）
＝ ００１０１１１０（ｂ）
＝ ４６
（式９）
となる。鍵ビットは０なので、鍵ビットを加えた値も 46 となる。レジスタ等の記憶装置にデータを格納する際には、暗号化されたデータに加え、暗号ビットも保管できるようにしておき、暗号化した状態のまま値を格納し、復号化するのは演算時などの真の値が必要な場面のみに限定する。次に、復号化を考えると、４６５は鍵ビットが１、暗号データが209であるので、
（ｎｏｔ（１×２５５） ｘｏｒ １７０） ｘｏｒ ２０９
＝ １７０ ｘｏｒ ２０９
＝ １２３
（式１０）
同様に４６は鍵ビットが０、暗号データが ４６であるので、
（ｎｏｔ（０×２５５） ｘｏｒ １７０） ｘｏｒ ４６ 
＝ ８５ ｘｏｒ ４６
＝ １２３
（式１１）
とどちらもきちんと復号化できる。（式６）、（式７）を論理回路に実装した例を図１１に示す。
【００１０】
鍵ビットを表現する際、１ビットのみを用いる場合、鍵ビットの値が１の時と０の時では、鍵の値によって、消費電流に差が出る。プリチャージバスでは、いったんバスの電圧を上げた後、ビットの値に従って電圧を下げるため、鍵ビットの値によって、プリチャージ後のディスチャージの有無によって、消費電流に差が出る。従って、鍵ビットの表現には複数ビットを用いて、鍵ビットの値によって消費電流が変わらないようにすることが望ましい。たとえば2ビットで鍵ビットを表現することを考える。鍵ビット１、鍵ビット２の２つのビットで鍵ビットの０、１を表現する際、鍵ビットが１の状態を、（鍵ビット１＝１、鍵ビット２＝０）、鍵ビットが０の状態を（鍵ビット１＝０、鍵ビット２＝１）と表現する。鍵ビットを２本の信号線で表現した場合の暗号化・復号化回路の実施例を図１２に示す。
【００１１】
本発明の情報処理装置は、所定の部位に暗号化・復号化手段を有するので、従前のメモリ、バスとの接続が可能である。具体的には、本発明の情報処理装置からデータが外部に出力される部分に復号化手段を置き、復号化後、従来のバスやメモリに出力するように構成し、反対に外部から本発明の情報処理装置へデータが入力される部分には、暗号化手段を置き、従来設計のバスやメモリからのデータを暗号化した後情報処理装置内に取り込むように構成する。
【００１２】
暗号化された状態のデータを用いて演算を実現するには、２つの方法がある。一つは、演算器の入力部分に復号化器を置き、演算結果の出力部に暗号化器を置くという方法で、もう一つは、暗号化されたデータをそのまま用いて計算可能な演算回路を構成する方法である。ここで、1ビット全加算器を例に挙げ、暗号化されたデータを入力として受け入れ、出力として暗号化された演算結果を出力する暗号化全加算器の実現方法を示す。ます、暗号化されていない通常の全加算器の場合は、２つの入力をＡ’、Ｂ’、下位からのキャリーをＣ’ｉｎ、上位へのキャリーをＣ’ｏｕｔ、加算結果をＲ’とすると、Ａ’、Ｂ’、Ｃ’ｉｎ、Ｃ’ｏｕｔ、Ｒ’の関係は、
Ｒ’＝Ａ’ ｘｏｒ Ｂ’ ｘｏｒ Ｃ’ｉｎ …（式１２）
Ｃ’ｏｕｔ＝Ａ’ ａｎｄ Ｂ’ ｏｒ （Ａ’ ｘｏｒ Ｂ’） ａｎｄ Ｃ
’ｉｎ
（式１３）
となる。つぎに、暗号化全加算器について考える。第1の暗号化された入力データをＡ、第1の入力データの鍵ビットをＡｋ、第２の暗号化された入力データをＢ、第２の入力の鍵ビットをＢｋ、生じたキャリーをＣｏｕｔ、下位からのキャリーをＣｉｎ、加算結果をＲとし、キャリーＣｏｕｔ、Ｃｉｎ、Ｒのための暗号化ビットをＲｋとする。ここで、暗号化されていない全加算器の入出力のＡ’、Ｂ’、Ｃ’ｉｎ、Ｃ’ｏｕｔ、Ｒ’と暗号化された全加算器の入出力のＡ、Ａｋ、Ｂ、Ｂｋ、Ｃｉｎ、Ｃｏｕｔ、Ｒ、Ｒｋとの関係は、暗号化ビットが１の時にビットが反転する暗号化全加算器の場合、（式１４）で表される。
Ａ’＝ Ａ ｘｏｒ Ａｋ
Ｂ’＝ Ｂ ｘｏｒ Ｂｋ
Ｃ’ｉｎ ＝ Ｃｉｎ ｘｏｒ Ｒｋ
Ｃ’ｏｕｔ ＝ Ｃｏｕｔ ｘｏｒ Ｒｋ
Ｒ’＝ Ｒ ｘｏｒ Ｒｋ （式１４）
（式１４）を（式１２）、（式１３）に代入すると、暗号化全加算器の論理式が次のように求められる。
【００１３】
Ｒ＝（Ａ ｘｏｒ Ａｋ ｘｏｒ Ｂ ｘｏｒ Ｂｋ ｘｏｒ Ｃｉｎ ｘｏｒ
Ｒｋ）ｘｏｒ Ｒｋ
＝ Ａ ｘｏｒ Ｂ ｘｏｒ Ｃｉｎ ｘｏｒ Ａｋ ｘｏｒ Ｂｋ
（式１５）
Ｃｏｕｔ＝（（Ａ ｘｏｒ Ａｋ） ａｎｄ （Ｂ ｘｏｒ Ｂｋ） ｏｒ （
（Ａ ｘｏｒ Ａｋ） ｘｏｒ （Ｂ ｘｏｒ Ｂｋ）） ａｎｄ （Ｃｉｎ 
ｘｏｒ Ｒｋ））ｘｏｒ Ｒｋ
＝（（Ａ ｘｏｒ Ａｋ） ａｎｄ （Ｂ ｘｏｒ Ｂｋ） ｏｒ （
Ａ ｘｏｒ Ｂ ｘｏｒ Ａｋ ｘｏｒ Ｂｋ）） ａｎｄ （Ｃｉｎ ｘｏｒ
Ｒｋ））ｘｏｒ Ｒｋ
（式１６）
ここで、（式１７）のドモルガンの定理を用いると、
Ｘ ｏｒ Ｙ＝ｎｏｔ（（ｎｏｔ Ｘ） ａｎｄ （ｎｏｔ Ｙ）） （式１７）
（式１６）は、
Ｃｏｕｔ＝（（（Ａ ｘｏｒ Ａｋ） ｎａｎｄ （Ｂ ｘｏｒ Ｂｋ））ｎａ
ｎｄ（（Ａ ｘｏｒ Ｂ ｘｏｒ Ａｋ ｘｏｒ Ｂｋ） ｎａｎｄ （Ｃｉｎ
ｘｏｒ Ｒｋ））） ｘｏｒ Ｒｋ
（式１８）
と書き換えられる。（式１５）、（式１８）を論理回路で表現すると、図８の様になる。つぎに、暗号化ビットが０の時にビットが反転する暗号化全加算器の場合について考える。Ｃｉｎ、Ｃｏｕｔについては、常に暗号化ビットが１の時にビットが反転するものとする。すると、Ａ’、Ｂ’、Ｃ’ｉｎ、Ｃ’ｏｕｔ、Ｒ’とＡ、Ａｋ、Ｂ、Ｂｋ、Ｃｉｎ、Ｃｏｕｔ、Ｒ、Ｒｋの関係は、（式１９）で表される。
【００１４】
Ａ’＝ Ａ ｘｏｒ ｎｏｔ Ａｋ
Ｂ’＝ Ｂ ｘｏｒ ｎｏｔ Ｂｋ
Ｃ’ｉｎ ＝ Ｃｉｎ ｘｏｒ Ｒｋ
Ｃ’ｏｕｔ ＝ Ｃｏｕｔ ｘｏｒ Ｒｋ
Ｒ’＝ Ｒ ｘｏｒ ｎｏｔ Ｒｋ （式１９）
（式１９）を（式１２）、（式１３）に代入し、ドモルガンの定理を適応すると、暗号化ビットが０の時にビットが反転する暗号化全加算器の論理式は次のように求められる。
【００１５】
Ｒ＝（Ａ ｘｏｒ （ｎｏｔ Ａｋ） ｘｏｒ Ｂ ｘｏｒ （ｎｏｔ Ｂｋ）
ｘｏｒ Ｃｉｎ ｘｏｒ Ｒｋ） ｘｏｒ （ｎｏｔ Ｒｋ）
＝ ｎｏｔ （Ａ ｘｏｒ Ｂ ｘｏｒ Ｃｉｎ ｘｏｒ Ａｋ ｘｏｒ Ｂｋ）
（式２０）
Ｃｏｕｔ＝（（（Ａ ｘｏｒ ｎｏｔ Ａｋ） ｎａｎｄ
（Ｂ ｘｏｒ ｎｏｔ Ｂｋ））ｎａｎｄ（（Ａ ｘｏｒ Ｂ ｘｏｒ ｎｏｔ Ａｋ ｘｏｒ ｎｏｔ Ｂｋ） ｎａｎｄ （Ｃｉｎ ｘｏｒ Ｒｋ））） ｘｏｒ Ｒｋ
＝（（（Ａ ｘｏｒ Ａｋ） ｏｒ （Ｂ ｘｏｒ Ｂｋ））ｎａｎｄ
（（Ａ ｘｏｒ Ｂ ｘｏｒ Ａｋ ｘｏｒ Ｂｋ） ｎａｎｄ （Ｃｉｎ ｘ
ｏｒ Ｒｋ））） ｘｏｒ Ｒｋ
（式２１）
（式２０）、（式２１）を論理回路で表現したものが、図９になる。図８、図９で示される1ビットの全加算器を並べることで、複数ビットの加算器が実現可能である。たとえば、暗号化ビットが０の時に、０ｘ５５で暗号化し、暗号化ビットが１の時に０ｘＡＡで暗号化する場合の暗号化加算器は、下位から、図９、図８、図９、図８、図９、図８、図９、図８の暗号化全加算器を並べて実現することができる。
【００１６】
暗号化されたデータを解釈・実行する命令デコーダには、２つの実現方法があり、ひとつは命令デコーダの命令を取り込む部分に復号化器を接続する方法である。もう一つの方法は、暗号化されたデータを直接解釈・実行できるように命令コードと命令が多対一で対応づけられているようなデコーダを構成しておく方法である。命令コードを暗号化すると、暗号化ビットの種類数だけ、暗号化された値が得られる。その暗号化して得られた全ての値を、元の暗号化される前に対応づけられていた命令と対応づける。全ての命令コードに対して、そうした対応付けを行い、多対一の暗号化された命令コードと命令の対応表を作成する。その表に従ってデコーダを構成することで、暗号化された命令コードを復号化することなしに解釈可能なデコーダが実現できる。
【発明の効果】
【００１７】
本発明の実施例によれば、高いセキュリティを持つ情報処理装置を提供することができる。更に、高いセキュリティを持つカード部材、および情報処理システムを提供することができる。
【発明を実施するための最良の形態】
【００１８】
図４は本発明の一実施例を説明する為の情報処理装置の概要を説明する基本構成図である。勿論、図４は情報処理装置の当該発明に係わる部分の主要部のみを例示している。当該情報処理装置の他の部分は通例の構成を用いて十分である。ＣＰＵ４０１は、演算結果を暗号化する際に用いる鍵を発生する鍵発生器１００９、暗号化された値を入力とし、結果も暗号化された状態で出力する演算器４０６、内部バス４０２、レジスタ４０３、命令デコーダ４０４、外部ポートなどからのデータを取り込む際にデータを暗号化する暗号化器４０９、暗号化器４０９で暗号化する際の鍵を発生する鍵発生器４１０、外部ポートなどにデータを出力する際に復号化を行う復号化器４０８などを有して図のように構成されている。命令デコーダ４０４は、内部バス４０２から送られてくる暗号化されたデータと鍵ビットの双方を用いて、実行すべき命令を特定する。このようなデコーダは、例えば、データビットｎビットと鍵ビットｍビットをあわせたｎ＋ｍビットからなるデータを命令コードと見なしてデコード回路を構成することにより、容易に実現することができる。ｎ＝８ビット、ｍ＝１ビットの場合の実施例を示す。まず、暗号化されていない状態で、図１７のような８ビットの命令コードと命令の対応関係を持つプロセッサがあるとする。暗号化方式としては、１ビットの鍵ビットを最上位に加え、鍵ビットが０の場合には、０ｘ５５とのｘｏｒを計算し、鍵ビットが１の場合には、０ｘＡＡとのｘｏｒを計算するような暗号化を行うとする。ＢＳＲの命令コードは暗号化しない場合は０ｘ５Ｃである。暗号化を行うと、ＢＳＲに対応する命令コードは、鍵ビットの値に応じて、
０ｘ５Ｃ ｘｏｒ ０ｘ５５ ＋ ０ ＝ ０ｘ００９
（鍵ビット＝０）
０ｘ５Ｃ ｘｏｒ ０ｘＡＡ ＋ ０ｘ１００ ＝ ０ｘ１Ｆ６
（鍵ビット＝１）
という２つの値を取りうる。この２つの値がＢＳＲと対応づけられるような多対一の命令コードと命令の対応表を用意することで、復号化することなしに、命令を解釈、実行できるデコーダが実現できる。図１７の命令コードと命令の対応表を、暗号化された命令コードを直接解釈できるように多対一の対応表に変換した表を図１８に示す。
【００１９】
図５は、本発明による加算器の一実施例で、暗号化されたデータを直接計算することができる全加算器５０１、５０２、５０３より構成されている。暗号化全加算器５０１は、第１の暗号化された入力データのうちの１ビットであるＡ０（５１１）と第１の入力データの鍵ビットＡｋ（５１１）、第２の暗号化された入力データのうちの1ビットであるＢ０（５１３）と第２のデータの鍵ビットＢｋ（５１４）、演算結果およびキャリーの暗号化に使用される第３の暗号化ビットＲｋ（５１０）を入力とし、暗号化された加算結果Ｒ０（５１５）と次のビットへの暗号化されたキャリーＣｏｕｔ（５１６）を生成する。ここで、暗号化ビットが１の場合に値を反転する暗号方式で暗号化する場合の、暗号化全加算器５０１の一実施例を図８に示す。また、暗号化全加算器５０１は、図８以外の論理回路でも実現することが可能であり、図６に示される真理値表より合成された回路により実施することもできる。
【００２０】
また、暗号化ビットが０の場合に値を反転する暗号方式で暗号化する場合の暗号化全加算器の一実施例を図９に示す。暗号化全加算器は、図９以外の論理回路でも実現することが可能であり、図７に示される真理値表より合成された回路により実施することもできる。
【００２１】
図１０は、本発明の別の一実施例を示している。本実施例では、従来の暗号化されていないデータや命令コードを扱うように構成されている演算器４０６、命令デコーダ４０４を用いて演算や命令解釈を行うように構成されており、命令デコーダ４０４の入力部に復号化器１００６を置き、命令デコーダには、復号化した値が入力される。同様に、演算器の演算数の入力部にも、復号化器１００７、１００８を接続し、データを復号化した後に演算器４０６で計算を行い、演算結果は鍵生成手段１００９で生成された鍵に従って、暗号化器１００５で暗号化されて、内部バス４０２に出力される。レジスタ４０３は、暗号化されたｎビットのデータと暗号化に用いられたｍビットの鍵情報を格納可能なように構成されている。図１１は、本発明で用いられる暗号方式のための暗号化器・復号化器の一実施例で、１ビットの鍵ビット１１０１とデータビット１１０４を入力として、暗号化・復号化を行う。本実施例では、暗号化器と復号化器は同一の回路で実現されている。図１２は、暗号化に用いる鍵ビットが２ビットの場合の一実施例である。
【００２２】
図１３は、本発明の別の一実施例である。ＲＡＭ（１３０５）およびＲＯＭ／ＥＥＰＲＯＭ（１３０４）は外部バス（１３０１）を介してＣＰＵ（４０１）と接続されている。ＲＡＭ（１３０５）はＣＰＵ（４０１）内で暗号化器（１００５）により暗号化されたデータと暗号鍵の両方を格納することができる。ＲＯＭ／ＥＥＰＲＯＭ（１３０４）も同様に、暗号鍵とデータの両方を格納することができ、ＲＯＭデータはあらかじめＣＰＵの復号化器（１００６、１００７、１００８）で復号化可能な暗号化が施されている。このような構成にすることで、演算器（４０６）、命令デコーダ（４０４）の内部を除いた情報処理システムのすべての部分でデータが暗号化されているため、アタックが困難となる。 図１４は、本発明の別の一実施例である。ＲＡＭ（１３０５）は外部バス（１３０１）を介してＣＰＵ（４０１）と接続されている。ＲＡＭ（１３０５）はＣＰＵ（４０１）内で暗号化器（１００５）により暗号化されたデータと暗号鍵の両方を格納することができる。ＲＯＭ／ＥＥＰＲＯＭ（１３０４）は、暗号鍵を自動生成する鍵生成器（１４０３）の鍵にしたがって暗号化を行う暗号化器（１４０２）を介して外部バス（１３０１）に接続されており、ＣＰＵ（４０１）がデータ読み込みを行う際には、暗号化器（１４０２）により暗号化が行われる。この実施例のメリットは、外部バス上に送られるＲＯＭデータが暗号化され、同じデータを送った場合にも、鍵情報が異なるためにバス上のデータ表現が固定値にはならないため、外部からの解析が困難になる。また、ＲＯＭデータ中に鍵情報を置かなくてもよいので、ＲＯＭの面積が少なくてすむ。もちろん、ＲＯＭデータを暗号化しておき、暗号化器（１４０２）では、暗号化の際の鍵を変換するような操作を行うようにしても良い。
【００２３】
図１５は本発明の別の一実施例である。ＲＡＭ（１３０５）およびＲＯＭ（１３０４）は外部バス（１３０１）を介してＣＰＵ（４０１）と接続されている。ＲＡＭデータはあらかじめ決められた方法により暗号化される。ＲＡＭデータが書き込まれる際には、まず復号化器（１５０３）により、ＣＰＵ内部の暗号化方式で暗号化されたデータが復号化され、つづいてＲＡＭデータ暗号化器（１５０６）により暗号化された後、外部バス（１３０１）に送出され、ＲＡＭ（１３０５）に書き込まれる。ＲＯＭデータはあらかじめ決められた方法で暗号化され、データ読み込みの際に、ＲＯＭデータ復号化器（１５０５）によって復号化され、その後鍵生成器（１５０１）が生成した鍵を用いて、暗号化器（１５０２）によって暗号化される。ＲＡＭからのデータ読み込みの際には、ＲＡＭデータ復号化器（１５０４）により復号化され、ＲＯＭの場合と同様にその後鍵生成器（１５０１）が生成した鍵を用いて、暗号化器（１５０２）によって暗号化される。この方法では、ＲＡＭデータおよびＲＯＭデータの暗号化および復号化の手法を適切に選ぶことにより、鍵情報をＲＡＭやＲＯＭに格納することなく、暗号化することができる。
【００２４】
図１６は本発明の別の一実施例で、ＲＡＭデータ復号化器（１５０４）、ＲＯＭデータ復号化器（１５０５）とＣＰＵ内部の暗号化方式による暗号化器（１５０２）の順番を逆にしている。図１５での実施例では、ＲＡＭデータ暗号化方式で暗号化されたデータをまずＲＡＭ暗号復号化器で復号化し、平文データに戻した後、ＣＰＵ内部の暗号化方式にしたがって暗号化していたが、暗号化方式を適切に選択することで、ＲＡＭデータ暗号化方式で暗号化されたデータをさらにＣＰＵ内部の暗号化方式で暗号化した後、ＲＡＭデータ暗号化方式に対応した復号化器で復号化し、ＣＰＵ内部の暗号化方式で暗号化されているデータを得る事ができる。このような方法が可能な暗号化方式としては、たとえばバーナム暗号がある（非特許文献３）。
【図面の簡単な説明】
【００２５】
【図１】図１はＩＣカードにおける半導体集積回路装置の配置を示す図である。
【図２】図２はマイクロコンピュータの基本構成を示す図である。
【図３】図３は通例のＩＣカード用半導体装置における１サイクルの消費電流を示す電流波形を示す図である。
【図４】図４は本発明の一実施例を示す図である。
【図５】図５は本発明による、加算演算器の一実施例を示す図である。
【図６】図６は本発明による、加算演算器を構成する暗号化全加算器の一実施例を示す真理値表である。
【図７】図７は本発明による、加算演算器を構成する暗号化全加算器の別の一実施例を示す真理値表である。
【図８】図８は図６の真理値表から合成された論理回路の一実施例である。
【図９】図９は図７の真理値表から合成された論理回路の一実施例である。
【図１０】図１０は本発明による一実施例を示す図である。
【図１１】図１１は本発明で用いられる、暗号化及び復号化器の一実施例である。
【図１２】図１２は本発明で用いられる、暗号化及び復号化器の別の一実施例である。
【図１３】図１３は、本発明の一実施例である。
【図１４】図１４は、本発明の一実施例である。
【図１５】図１５は、本発明の一実施例である。
【図１６】図１６は、本発明の一実施例である。
【図１７】図１７は、命令コードと命令の対応表の一例である。
【図１８】図１８は、本発明の一実施例における、命令コードと請求項８の別の一実施例である。
【符号の説明】
【００２６】
４０１は情報処理装置（ＣＰＵ）、４０２は内部バス、４０３はレジスタ、４０４は命令デコーダ、４０６は演算器、４０８は複号化器、４０９は暗号化器、４１０は鍵生成器、５０１、５０２、５０３は暗号化全加算器、５１０は出力Ｒのための秘密鍵、５１１は入力Ａの第0ビット目、５１２は入力Ａのための秘密鍵Ａｋ、５１３は入力Ｂの第0ビット目、５２１は入力Ａの第1ビット目、５２３は入力Ｂの第1ビット目、５３１は入力Ａの第2ビット目、５３３は入力Ｂの第2ビット目、１００５は暗号化器、１００６、１００７、１００８は復号化器、１００９は鍵生成器、１１０１は鍵ビット信号線、１１０４は入力ビット信号線、１１０３は出力ビット信号線、１２０１は第１鍵ビット信号線、１２０２は第２鍵ビット信号線、１２０４は入力ビット信号線、１２０３は出力ビット信号線、１３０１は外部バス、１３０４はＲＯＭ／ＥＥＰＲＯＭ、１３０５はＲＡＭ、１４０２は暗号化器、１４０３は鍵生成器、１５０１は鍵生成器、１５０２は暗号化器、１５０３は復号化器、１５０４はＲＡＭデータ復号化器、１５０５はＲＯＭデータ復号化器、１５０６はＲＡＭデータ暗号化器、１５５０はＲＡＭデータ暗号用鍵記憶装置である。
【図１】
2006136032.tif 000003
【図２】
2006136032.tif 000004
【図３】
2006136032.tif 000005
【図４】
2006136032.tif 000006
【図５】
2006136032.tif 000007
【図６】
2006136032.tif 000008
【図７】
2006136032.tif 000009
【図８】
2006136032.tif 000010
【図９】
2006136032.tif 000011
【図１０】
2006136032.tif 000012
【図１１】
2006136032.tif 000013
【図１２】
2006136032.tif 000014
【図１３】
2006136032.tif 000015
【図１４】
2006136032.tif 000016
【図１５】
2006136032.tif 000017
【図１６】
2006136032.tif 000018
【図１７】
2006136032.tif 000019
【図１８】
2006136032.tif 000020