米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 株式会社日立製作所

発明の名称 情報処理装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2003−152702(P2003−152702A)
公開日 平成15年5月23日(2003.5.23)
出願番号 特願2001−350936(P2001−350936)
出願日 平成13年11月16日(2001.11.16)
代理人 【識別番号】100075096
【弁理士】
【氏名又は名称】作田 康夫
【テーマコード(参考)】
5J104
【Fターム(参考)】
5J104 AA04 AA18 AA41 
発明者 遠藤 隆 / 神永 正博 / 渡邊 高志 / 中田 邦彦 / 塚本 卓
要約 課題
情報処理装置において、消費電流などのリーク情報から内部で処理される秘密情報を推定されることを防ぐことにある。

解決手段
その解決手段は次の通りである。鍵情報を自動的に生成する鍵生成装置と、鍵情報を用いてデータを暗号化する暗号化装置と、複数の暗号化データを暗号化のための鍵情報とともに記録するレジスタと、暗号化のための鍵情報とともに表現したデータと新たな鍵情報とを入力として演算を行い、演算結果を入力された新たな鍵で暗号化して出力する演算装置とを少なくとも有し、情報処理装置内での処理を暗号化されたデータ表現で行うことが可能な情報処理装置。
特許請求の範囲
【請求項1】演算装置と、第1の鍵でデータを暗号化した第1の暗号化データと前記第1の鍵とを第1のデータとして前記記憶装置又は前記演算装置へ転送する手段とを有し、前記第1のデータを前記演算装置で解釈して演算するものであることを特徴とする情報処理装置。
【請求項2】前記演算結果を第2の鍵で暗号化した第2の暗号化データと前記第2の鍵とを第2のデータとして出力する手段を有することを特徴とする請求項1記載の情報処理装置。
【請求項3】前記第1の鍵は第1の鍵生成手段で生成され、前記第2の鍵は第2の鍵生成手段で生成されることを特徴とする請求項1記載の情報処理装置。
【請求項4】前記転送する手段はバスラインを有することを特徴とする請求項1記載の情報処理装置。
【請求項5】前記解釈は前記第1のデータをそのまま解釈するものであるか、または前記第1のデータに基づいて前記第1の暗号化データを復号化した上で解釈するものであることを特徴とする請求項1記載の情報処理装置。
【請求項6】前記解釈は、前記第1のデータと前記演算装置の命令とを多対一に対応させることで、前記暗号化データを復号化すること無しに行うことを特徴とする請求項1記載の情報処理装置。
【請求項7】前記第2のデータを用いて前記第2の暗号化データを復号化する第1の復号化手段と、前記第2の鍵データを用いてその復号化したデータを第3の鍵データを用いて暗号化して第3の暗号化データとし、前記第3の暗号化データと前記第3の鍵データとを第3のデータとして外部記憶装置へ転送する手段を有することを特徴とする請求項1記載の情報処理装置。
【請求項8】前記第3の鍵データは第3の鍵生成手段で生成されることを特徴とする請求項7記載の情報処理装置。
【請求項9】外部記憶装置には第3の鍵データと第3の暗号化データとを対として第3のデータとしてデータが記憶され、前記第3のデータを読み出して第2の復号化手段で第3の暗号化データを復号化し、そのデータを前記第1の鍵データで暗号化して前記第1の暗号化データとすることを特徴とする請求項1記載の情報処理装置。
【請求項10】暗号化されたデータとそのデータの暗号化に使用した鍵とを入力として前記暗号化データを復号化する第1の手段と、演算装置の演算結果を暗号化するための鍵の生成手段と、前記演算結果と前記鍵を用いて前記演算結果を暗号化する第2の手段とが前記演算装置のデータ入出力部またはその近傍に備えられていることを特徴とする情報処理装置。
【請求項11】記憶手段から読み出されるデータを第1の手段で生成した鍵を用いて暗号化して暗号化データとし、前記暗号化データと前記鍵とを一組の第1のデータとして演算装置へ転送する手段を有し、前記演算装置は前記第1のデータを解釈して演算する手段を有し、前記記憶手段および前記第1の手段は前記演算装置から離間した位置に設けられていることを特徴とする情報処理装置。
【請求項12】外部記憶装置には第3の鍵データと第3の暗号化データとを対として第3のデータとしてデータが記憶され、前記第3のデータを読み出して前記第1の鍵データで暗号化し、続いて第2の復号化手段で第3の暗号化データを復号化し、データを前記第1の暗号化データとすることを特徴とする請求項1記載の情報処理装置。
発明の詳細な説明
【0001】
【発明の属する技術分野】本発明は情報処理装置に関し、特に機密性の高いICカードなどの耐タンパ装置に関する。
【0002】
【従来の技術】ICカードは、主に、勝手に書き換えられない情報の保持や秘密情報である暗号鍵を使ったデータの暗号化や暗号文の復号化を行うために使われる装置である。ICカードは、電源を持っていないため、リーダライタに差し込まれると、電源の供給を受け、動作可能となる。動作可能になると、リーダライタからコマンドを受けて、コマンドに従い、データの転送を行う。ICカードの一般的な解説は、オーム社出版電子情報通信学会編水沢順一著「ICカード」などにある。ICカードの構成は、図1に示すように、カード101の上に、ICカード用チップ102を搭載したものである。一般にICカードは、接点を持ち、接点を通して、リーダーライタから電源の供給やリーダライタとのデータの通信を行う。ICカード用チップの構成は、基本的にマイクロコンピュータと同じような構成である。その構成は、図2に示すように、中央演算装置201、記憶装置204、入出力ポート207、コ・プロセッサ202からなる。中央処理装置201は、論理演算や算術演算などを行う装置であり、記憶装置204は、プログラムやデータを格納する装置である。入出力ポートは、リーダライタと通信を行う装置である。コ・プロセッサは、剰余演算を行うための特別な演算装置であり、非対称暗号であるRSAの演算などに用いられる装置である。ICカード用プロセッサの中には、コ・プロセッサを持たないものも多くある。データバス203は、各装置を接続するバスである。記憶装置204は、ROM(Read Only Memory)、RAM(Random Access Memory)、EEPROM(Electrical Erasable Programmable Read OnlyMemory)などからなる。ROMは、変更できないメモリであり、主にプログラムを格納するメモリである。RAMは自由に書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容が消えてなくなる。ICカードがリーダライタから抜かれると電源の供給が中断されるため、RAMの内容は、保持できなくなる。EEPROMは、電源の供給が中断されてもその内容を保持することができるメモリである。書き換える必要があり、ICカードがリーダライタから抜かれても、保持するデータを格納するために使われる。例えば、プリペイドカードでのプリペイドの度数などは、使用するたびに書き換えられ、かつリーダライタか抜かれてもデータを保持する必要があるため、EEPROMで保持される。ICカードは、プログラムや重要な情報がICカード用チップの中に密閉されているため、重要な情報を格納したり、カードの中で暗号処理を行うために、使われている。ICカードでの暗号処理の解読の難しさは、暗号アルゴリズムの解読の困難さと同じと考えられていた。しかし、ICカードが暗号処理を行っている時の消費電流を観測し、解析することにより、暗号アルゴリズムの解読より容易に暗号処理の内容や暗号鍵が推定される可能性が示唆されている。消費電流は、リーダライタから供給されている電流を測定することにより観測することができる。これは、John Wiley & sons社 W.Rankl & W.Effing著 「Smart Card Handbook」の8.5.1.1 Passive protective mechanisms(263ページ)にこのような危険性が記載されている。ICカード用チップを構成しているCMOSは、出力状態が1から0あるいは0から1に変わった時に電流を消費する。特に、データバス203は、大きな電気容量を持つため、バスの値が1から0あるいは0から1に変わると、大きな電流が流れる。そのため、消費電流を観測すれば、ICカード用チップの中で、何が動作しているか分かる可能性を示唆している。図3は、ICカード用チップの1サイクルでの消費電流の波形を示したものである。処理しているデータの依存して、電流波形が301や302のように異なる。このような差は、バス203を流れるデータや中央演算装置201で処理しているデータに依存して生じる。
【0003】ICカード用チップを構成しているCMOSは、出力状態が1から0、あるいは0から1に変わったときに電力を消費する。したがって、消費電流を観測すれば、ICカードのチップ内で、何が動作しているのかや、どの様なデータが処理されているのかを推定することが可能である。
【0004】従来技術としては、消費電流値を常に一定にする方法と、同じ処理を行う場合でも消費電流を毎回変化させる方法がある。前者の例としては、各々のデータ線をポジとネガの2種類を用意し、演算器も複数個用意し、ダミーの演算と真の演算を同時に行うことにより、入力データや演算結果にかかわらず、常に消費電流が等しくなるという方法(PCT WO 99/67766)があるが、バス幅が2倍、演算器が4倍とハードウエア規模が大きくなってしまう点が問題となる。後者の方法としては、バス転送時やメモリ格納時に暗号化を行う方法(特開2001−5731)が提案されているが、鍵情報を複数のデータで共有しており、それぞれのデータのライフタイムが異なるため、暗号化鍵を更新するタイミングに制限があり、プログラミング上の制約が加わる。
【0005】
【発明が解決しようとする課題】本願発明の課題は、ICカード向けマイクロコンピュータチップでのデータ処理と消費電力との関連性を、ハードウエア規模の大幅な増加やプログラミング上の制約が加わることなしに減少させることである。
【0006】
【課題を解決するための手段】消費電流と処理データとの関連性を減少させる方法には(1)データの値が同じであっても、消費電流が予測不可能な方法で変化させる方法、(2)データの値が異なる場合でも、消費電流が常に一定とする方法、の2通りの方法が有る。
【0007】本発明では、(1)の方法により、消費電流とデータとの関連性を減少させる。基本的には、データを暗号化し、暗号化の鍵を短い期間で変化させることにより、データの真の値と電気的な表現の関連性を予測不能にする。ここで、暗号化を行う際の鍵を複数のデータで共有すると、鍵を書き換える場合に、鍵を共有するデータすべてについて、鍵の変更とともにデータの書き換えを行わなければならない。したがって、暗号化の際の鍵を共有するデータのサイズは小さければ小さいほど望ましく、データがアクセスされる最小単位と等しくすることが望ましい。たとえば、バイト毎に鍵を用意する。また、鍵のビット数は、最低限1ビットあればよい。1ビットの鍵は、2種類の鍵を選択するための選択ビットとみなすこともできる。もっとも簡単な一例としては、鍵のビットが1の時には、データを反転し、鍵のビットが0のときはデータを反転させない、という方法がある。ここで用いる暗号化手法は、バーナム暗号の一種だと考えることが可能で、鍵ビットが1の時には、255を鍵として用い、鍵ビットが0の時には、0を鍵として用いることと等しい。バーナム暗号とは、秘密鍵Kと xor を取って暗号化する方法で、復号化する際には暗号化データに対して、暗号化の際に用いた秘密鍵Kで再び xor を取ることで復号化する暗号方式である。
暗号データ=(鍵ビット×255) xor 平文データ …(式1)
たとえば、10進数で63という値を暗号化する場合、鍵ビットを1とすると、2進数表現であらわすと、(1 × 11111111(b)) xor 00111111(b)
= 11000000(b) …(式2)
となり、鍵ビットを最上位に付与し、暗号化されたデータ=111000000(b)=448 …(式3)
と63が448に暗号化される。復号化する場合は、最上位1ビットを鍵ビット、下位8ビットを暗号化データとして取り出し、平文データ=(鍵ビット×255) xor 暗号化データ …(式4)
により復号化可能で、( 1 × 11111111(b) ) xor 11000000 = 00111111(b) = 63 … (式5)
となる。また、(式1)や(式4)で鍵ビットによって選択される鍵を別の値にすることも可能である。その際、1ビットの鍵ビットで選択される2つの鍵データは、xor を取ると、全ビットが1になるような値にする必要がある。これは、2つの鍵で同一の値をもつビットが存在したとすると、鍵ビットの値にかかわらず、当該ビットの値が常に同じ値に符号化されるためである。0と255はこの条件を満たしている。したがって、対象となるデータが8ビットの場合は、暗号化するときの鍵の値をKとすると、鍵ビットが1ビットの場合の暗号化、復号化の式は暗号データ=(not(鍵ビット×255) xor 鍵値) xor 平文データ …(式6)
となる。復号化は、同様に平文データ=(not(鍵ビット×255) xor 鍵値) xor 暗号データ …(式7)
となる。また、暗号データの最上位等に鍵ビットを付与して格納しておく。たとえば、鍵値を170(=10101010(b))として、平文データを123とすると、鍵ビットが1の場合(not(1×255) xor 170) xor 123 = (not(1 × 11111111(b)) xor 10101010(b)) xor 1111011(b)
= (not (11111111(b)) xor 10101010(b)) xor 1111011(b)
= 10101010(b) xor 1111011(b)
= 11010001(b)
= 209 (式8)
最上位に鍵ビットを付け加えると、209+256=465 となる。同様に、鍵ビットが0の場合は、(not(0×256) xor 170) xor 123 = (not(0 × 11111111(b)) xor 10101010(b)) xor 1111011(b)
= (not(0) xor 10101010(b)) xor 1111011(b)
= 01010101(b) xor 1111011(b)
= 00101110(b)
= 46 (式9)
となる。鍵ビットは0なので、鍵ビットを加えた値も 46 となる。レジスタ等の記憶装置にデータを格納する際には、暗号化されたデータに加え、暗号ビットも保管できるようにしておき、暗号化した状態のまま値を格納し、復号化するのは演算時などの真の値が必要な場面のみに限定する。次に、復号化を考えると、465は鍵ビットが1、暗号データが209であるので、(not(1×255) xor 170) xor 209 = 170 xor 209 = 123 (式10)
同様に46は鍵ビットが0、暗号データが 46であるので、(not(0×255) xor 170) xor 46 = 85 xor 46 = 123 (式11)
とどちらもきちんと復号化できる。(式6)、(式7)を論理回路に実装した例を図11に示す。
【0008】鍵ビットを表現する際、1ビットのみを用いる場合、鍵ビットの値が1の時と0の時では、鍵の値によって、消費電流に差が出る。プリチャージバスでは、いったんバスの電圧を上げた後、ビットの値に従って電圧を下げるため、鍵ビットの値によって、プリチャージ後のディスチャージの有無によって、消費電流に差が出る。従って、鍵ビットの表現には複数ビットを用いて、鍵ビットの値によって消費電流が変わらないようにすることが望ましい。たとえば2ビットで鍵ビットを表現することを考える。鍵ビット1、鍵ビット2の2つのビットで鍵ビットの0、1を表現する際、鍵ビットが1の状態を、(鍵ビット1=1、鍵ビット2=0)、鍵ビットが0の状態を(鍵ビット1=0、鍵ビット2=1)と表現する。鍵ビットを2本の信号線で表現した場合の暗号化・復号化回路の実施例を図12に示す。
【0009】本発明の情報処理装置は、所定の部位に暗号化・復号化手段を有するので、従前のメモリ、バスとの接続が可能である。具体的には、本発明の情報処理装置からデータが外部に出力される部分に復号化手段を置き、復号化後、従来のバスやメモリに出力するように構成し、反対に外部から本発明の情報処理装置へデータが入力される部分には、暗号化手段を置き、従来設計のバスやメモリからのデータを暗号化した後情報処理装置内に取り込むように構成する。
【0010】暗号化された状態のデータを用いて演算を実現するには、2つの方法がある。一つは、演算器の入力部分に復号化器を置き、演算結果の出力部に暗号化器を置くという方法で、もう一つは、暗号化されたデータをそのまま用いて計算可能な演算回路を構成する方法である。ここで、1ビット全加算器を例に挙げ、暗号化されたデータを入力として受け入れ、出力として暗号化された演算結果を出力する暗号化全加算器の実現方法を示す。ます、暗号化されていない通常の全加算器の場合は、2つの入力をA’、B’、下位からのキャリーをC’in、上位へのキャリーをC’out、加算結果をR’とすると、A’、B’、C’in、C’out、R’の関係は、R’=A’ xor B’ xor C’in …(式12)
C’out=A’ and B’ or (A’ xor B’) and C’in (式13)
となる。つぎに、暗号化全加算器について考える。第1の暗号化された入力データをA、第1の入力データの鍵ビットをAk、第2の暗号化された入力データをB、第2の入力の鍵ビットをBk、生じたキャリーをCout、下位からのキャリーをCin、加算結果をRとし、キャリーCout、Cin、Rのための暗号化ビットをRkとする。ここで、暗号化されていない全加算器の入出力のA’、B’、C’in、C’out、R’と暗号化された全加算器の入出力のA、Ak、B、Bk、Cin、Cout、R、Rkとの関係は、暗号化ビットが1の時にビットが反転する暗号化全加算器の場合、(式14)で表される。
【0011】
A’= A xor Ak B’= B xor BkC’in = Cin xor RkC’out = Cout xor Rk R’= R xor Rk (式14)
(式14)を(式12)、(式13)に代入すると、暗号化全加算器の論理式が次のように求められる。
R=(A xor Ak xor B xor Bk xor Cin xor Rk)xor Rk = A xor B xor Cin xor Ak xor Bk (式15)
Cout=((A xor Ak) and (B xor Bk) or ((A xor Ak) xor (B xor Bk)) and (Cin xor Rk))xor Rk =((A xor Ak) and (B xor Bk) or (A xor B xor Ak xor Bk)) and (Cin xor Rk))xor Rk (式16)
ここで、(式17)のドモルガンの定理を用いると、X or Y=not((not X) and (not Y)) (式17)
(式16)は、Cout=(((A xor Ak) nand (B xor Bk))nand((A xor B xor Ak xor Bk) nand (Cin xor Rk))) xor Rk (式18)
と書き換えられる。(式15)、(式18)を論理回路で表現すると、図8の様になる。つぎに、暗号化ビットが0の時にビットが反転する暗号化全加算器の場合について考える。Cin、Coutについては、常に暗号化ビットが1の時にビットが反転するものとする。すると、A’、B’、C’in、C’out、R’とA、Ak、B、Bk、Cin、Cout、R、Rkの関係は、(式19)で表される。
【0012】
A’= A xor not Ak B’= B xor not BkC’in = Cin xor RkC’out = Cout xor Rk R’= R xor not Rk (式19)
(式19)を(式12)、(式13)に代入し、ドモルガンの定理を適応すると、暗号化ビットが0の時にビットが反転する暗号化全加算器の論理式は次のように求められる。
R=(A xor (not Ak) xor B xor (not Bk)
xor Cin xor Rk) xor (not Rk)
= not (A xor B xor Cin xor Ak xor Bk)
(式20)
Cout=(((A xor not Ak) nand (B xor not Bk))nand((A xor B xor not Ak xor not Bk) nand (Cin xor Rk))) xor Rk =(((A xor Ak) or (B xor Bk))nand((A xor B xor Ak xor Bk) nand (Cin xor Rk))) xor Rk (式21)
(式20)、(式21)を論理回路で表現したものが、図9になる。図8、図9で示される1ビットの全加算器を並べることで、複数ビットの加算器が実現可能である。たとえば、暗号化ビットが0の時に、0x55で暗号化し、暗号化ビットが1の時に0xAAで暗号化する場合の暗号化加算器は、下位から、図9、図8、図9、図8、図9、図8、図9、図8の暗号化全加算器を並べて実現することができる。
【0013】暗号化されたデータを解釈・実行する命令デコーダには、2つの実現方法があり、ひとつは命令デコーダの命令を取り込む部分に復号化器を接続する方法である。もう一つの方法は、暗号化されたデータを直接解釈・実行できるように命令コードと命令が多対一で対応づけられているようなデコーダを構成しておく方法である。命令コードを暗号化すると、暗号化ビットの種類数だけ、暗号化された値が得られる。その暗号化して得られた全ての値を、元の暗号化される前に対応づけられていた命令と対応づける。全ての命令コードに対して、そうした対応付けを行い、多対一の暗号化された命令コードと命令の対応表を作成する。その表に従ってデコーダを構成することで、暗号化された命令コードを復号化することなしに解釈可能なデコーダが実現できる。
【0014】
【発明の実施の形態】図4は本発明の一実施例を説明する為の情報処理装置の概要を説明する基本構成図である。勿論、図4は情報処理装置の当該発明に係わる部分の主要部のみを例示している。当該情報処理装置の他の部分は通例の構成を用いて十分である。CPU401は、演算結果を暗号化する際に用いる鍵を発生する鍵発生器1009、暗号化された値を入力とし、結果も暗号化された状態で出力する演算器406、内部バス402、レジスタ403、命令デコーダ404、外部ポートなどからのデータを取り込む際にデータを暗号化する暗号化器409、暗号化器409で暗号化する際の鍵を発生する鍵発生器410、外部ポートなどにデータを出力する際に復号化を行う復号化器408などを有して図のように構成されている。命令デコーダ404は、内部バス402から送られてくる暗号化されたデータと鍵ビットの双方を用いて、実行すべき命令を特定する。このようなデコーダは、例えば、データビットnビットと鍵ビットmビットをあわせたn+mビットからなるデータを命令コードと見なしてデコード回路を構成することにより、容易に実現することができる。n=8ビット、m=1ビットの場合の実施例を示す。まず、暗号化されていない状態で、図17のような8ビットの命令コードと命令の対応関係を持つプロセッサがあるとする。暗号化方式としては、1ビットの鍵ビットを最上位に加え、鍵ビットが0の場合には、0x55とのxorを計算し、鍵ビットが1の場合には、0xAAとのxorを計算するような暗号化を行うとする。BSRの命令コードは暗号化しない場合は0x5Cである。暗号化を行うと、BSRに対応する命令コードは、鍵ビットの値に応じて、0x5C xor 0x55 + 0 = 0x009(鍵ビット=0)
0x5C xor 0xAA + 0x100 = 0x1F6(鍵ビット=1)
という2つの値を取りうる。この2つの値がBSRと対応づけられるような多対一の命令コードと命令の対応表を用意することで、復号化することなしに、命令を解釈、実行できるデコーダが実現できる。図17の命令コードと命令の対応表を、暗号化された命令コードを直接解釈できるように多対一の対応表に変換した表を図18に示す。
【0015】図5は、本発明による加算器の一実施例で、暗号化されたデータを直接計算することができる全加算器501、502、503より構成されている。暗号化全加算器501は、第1の暗号化された入力データのうちの1ビットであるA0(511)と第1の入力データの鍵ビットAk(511)、第2の暗号化された入力データのうちの1ビットであるB0(513)と第2のデータの鍵ビットBk(514)、演算結果およびキャリーの暗号化に使用される第3の暗号化ビットRk(510)を入力とし、暗号化された加算結果R0(515)と次のビットへの暗号化されたキャリーCout(516)を生成する。ここで、暗号化ビットが1の場合に値を反転する暗号方式で暗号化する場合の、暗号化全加算器501の一実施例を図8に示す。また、暗号化全加算器501は、図8以外の論理回路でも実現することが可能であり、図6に示される真理値表より合成された回路により実施することもできる。
【0016】また、暗号化ビットが0の場合に値を反転する暗号方式で暗号化する場合の暗号化全加算器の一実施例を図9に示す。暗号化全加算器は、図9以外の論理回路でも実現することが可能であり、図7に示される真理値表より合成された回路により実施することもできる。
【0017】図10は、本発明の別の一実施例を示している。本実施例では、従来の暗号化されていないデータや命令コードを扱うように構成されている演算器406、命令デコーダ404を用いて演算や命令解釈を行うように構成されており、命令デコーダ404の入力部に復号化器1006を置き、命令デコーダには、復号化した値が入力される。同様に、演算器の演算数の入力部にも、復号化器1007、1008を接続し、データを復号化した後に演算器406で計算を行い、演算結果は鍵生成手段1009で生成された鍵に従って、暗号化器1005で暗号化されて、内部バス402に出力される。レジスタ403は、暗号化されたnビットのデータと暗号化に用いられたmビットの鍵情報を格納可能なように構成されている。図11は、本発明で用いられる暗号方式のための暗号化器・復号化器の一実施例で、1ビットの鍵ビット1101とデータビット1104を入力として、暗号化・復号化を行う。本実施例では、暗号化器と復号化器は同一の回路で実現されている。図12は、暗号化に用いる鍵ビットが2ビットの場合の一実施例である。
【0018】図13は、本発明の別の一実施例である。RAM(1305)およびROM/EEPROM(1304)は外部バス(1301)を介してCPU(401)と接続されている。RAM(1305)はCPU(401)内で暗号化器(1005)により暗号化されたデータと暗号鍵の両方を格納することができる。ROM/EEPROM(1304)も同様に、暗号鍵とデータの両方を格納することができ、ROMデータはあらかじめCPUの復号化器(1006、1007、1008)で復号化可能な暗号化が施されている。このような構成にすることで、演算器(406)、命令デコーダ(404)の内部を除いた情報処理システムのすべての部分でデータが暗号化されているため、アタックが困難となる。 図14は、本発明の別の一実施例である。RAM(1305)は外部バス(1301)を介してCPU(401)と接続されている。RAM(1305)はCPU(401)内で暗号化器(1005)により暗号化されたデータと暗号鍵の両方を格納することができる。ROM/EEPROM(1304)は、暗号鍵を自動生成する鍵生成器(1403)の鍵にしたがって暗号化を行う暗号化器(1402)を介して外部バス(1301)に接続されており、CPU(401)がデータ読み込みを行う際には、暗号化器(1402)により暗号化が行われる。この実施例のメリットは、外部バス上に送られるROMデータが暗号化され、同じデータを送った場合にも、鍵情報が異なるためにバス上のデータ表現が固定値にはならないため、外部からの解析が困難になる。また、ROMデータ中に鍵情報を置かなくてもよいので、ROMの面積が少なくてすむ。もちろん、ROMデータを暗号化しておき、暗号化器(1402)では、暗号化の際の鍵を変換するような操作を行うようにしても良い。
【0019】図15は本発明の別の一実施例である。RAM(1305)およびROM(1304)は外部バス(1301)を介してCPU(401)と接続されている。RAMデータはあらかじめ決められた方法により暗号化される。RAMデータが書き込まれる際には、まず復号化器(1503)により、CPU内部の暗号化方式で暗号化されたデータが復号化され、つづいてRAMデータ暗号化器(1506)により暗号化された後、外部バス(1301)に送出され、RAM(1305)に書き込まれる。ROMデータはあらかじめ決められた方法で暗号化され、データ読み込みの際に、ROMデータ復号化器(1505)によって復号化され、その後鍵生成器(1501)が生成した鍵を用いて、暗号化器(1502)によって暗号化される。RAMからのデータ読み込みの際には、RAMデータ復号化器(1504)により復号化され、ROMの場合と同様にその後鍵生成器(1501)が生成した鍵を用いて、暗号化器(1502)によって暗号化される。この方法では、RAMデータおよびROMデータの暗号化および復号化の手法を適切に選ぶことにより、鍵情報をRAMやROMに格納することなく、暗号化することができる。
【0020】図16は本発明の別の一実施例で、RAMデータ復号化器(1504)、ROMデータ復号化器(1505)とCPU内部の暗号化方式による暗号化器(1502)の順番を逆にしている。図15での実施例では、RAMデータ暗号化方式で暗号化されたデータをまずRAM暗号復号化器で復号化し、平文データに戻した後、CPU内部の暗号化方式にしたがって暗号化していたが、暗号化方式を適切に選択することで、RAMデータ暗号化方式で暗号化されたデータをさらにCPU内部の暗号化方式で暗号化した後、RAMデータ暗号化方式に対応した復号化器で復号化し、CPU内部の暗号化方式で暗号化されているデータを得る事ができる。このような方法が可能な暗号化方式としては、たとえばバーナム暗号がある(岡本栄司、「暗号理論入門」、pp.65-66、共立出版株式会社)。
【0021】
【発明の効果】本発明の実施例によれば、高いセキュリティを持つ情報処理装置を提供することができる。更に、高いセキュリティを持つカード部材、および情報処理システムを提供することができる。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013