JP2006136032A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2006136032A JP2006136032A JP2006034970A JP2006034970A JP2006136032A JP 2006136032 A JP2006136032 A JP 2006136032A JP 2006034970 A JP2006034970 A JP 2006034970A JP 2006034970 A JP2006034970 A JP 2006034970A JP 2006136032 A JP2006136032 A JP 2006136032A
- Authority
- JP
- Japan
- Prior art keywords
- data
- key
- xor
- encrypted
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】情報処理装置において、消費電流などのリーク情報から内部で処理される秘密情報を推定されることを防ぐことにある。
【解決手段】その解決手段は次の通りである。鍵情報を自動的に生成する鍵生成装置と、鍵情報を用いてデータを暗号化する暗号化装置と、複数の暗号化データを暗号化のための鍵情報とともに記録するレジスタと、暗号化のための鍵情報とともに表現したデータと新たな鍵情報とを入力として演算を行い、演算結果を入力された新たな鍵で暗号化して出力する演算装置とを少なくとも有し、情報処理装置内での処理を暗号化されたデータ表現で行うことが可能な情報処理装置。
【選択図】 図4
【解決手段】その解決手段は次の通りである。鍵情報を自動的に生成する鍵生成装置と、鍵情報を用いてデータを暗号化する暗号化装置と、複数の暗号化データを暗号化のための鍵情報とともに記録するレジスタと、暗号化のための鍵情報とともに表現したデータと新たな鍵情報とを入力として演算を行い、演算結果を入力された新たな鍵で暗号化して出力する演算装置とを少なくとも有し、情報処理装置内での処理を暗号化されたデータ表現で行うことが可能な情報処理装置。
【選択図】 図4
Description
本発明は情報処理装置に関し、特に機密性の高いICカードなどの耐タンパ装置に関する。
ICカードは、主に、勝手に書き換えられない情報の保持や秘密情報である暗号鍵を使ったデータの暗号化や暗号文の復号化を行うために使われる装置である。ICカードは、電源を持っていないため、リーダライタに差し込まれると、電源の供給を受け、動作可能となる。動作可能になると、リーダライタからコマンドを受けて、コマンドに従い、データの転送を行う。ICカードの一般的な解説は、以下の非特許文献1などにある。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カードが暗号処理を行っている時の消費電流を観測し、解析することにより、暗号アルゴリズムの解読より容易に暗号処理の内容や暗号鍵が推定される可能性が示唆されている。消費電流は、リーダライタから供給されている電流を測定することにより観測することができる。これは、以下の非特許文献2にこのような危険性が記載されている。ICカード用チップを構成しているCMOSは、出力状態が1から0あるいは0から1に変わった時に電流を消費する。特に、データバス203は、大きな電気容量を持つため、バスの値が1から0あるいは0から1に変わると、大きな電流が流れる。そのため、消費電流を観測すれば、ICカード用チップの中で、何が動作しているか分かる可能性を示唆している。図3は、ICカード用チップの1サイクルでの消費電流の波形を示したものである。処理しているデータの依存して、電流波形が301や302のように異なる。このような差は、バス203を流れるデータや中央演算装置201で処理しているデータに依存して生じる。
ICカード用チップを構成しているCMOSは、出力状態が1から0、あるいは0から1に変わったときに電力を消費する。したがって、消費電流を観測すれば、ICカードのチップ内で、何が動作しているのかや、どの様なデータが処理されているのかを推定することが可能である。
従来技術としては、消費電流値を常に一定にする方法と、同じ処理を行う場合でも消費電流を毎回変化させる方法がある。前者の例としては、各々のデータ線をポジとネガの2種類を用意し、演算器も複数個用意し、ダミーの演算と真の演算を同時に行うことにより、入力データや演算結果にかかわらず、常に消費電流が等しくなるという方法(特許文献1)があるが、バス幅が2倍、演算器が4倍とハードウエア規模が大きくなってしまう点が問題となる。後者の方法としては、バス転送時やメモリ格納時に暗号化を行う方法(特許文献2)が提案されているが、鍵情報を複数のデータで共有しており、それぞれのデータのライフタイムが異なるため、暗号化鍵を更新するタイミングに制限があり、プログラミング上の制約が加わる。
本願発明の課題は、ICカード向けマイクロコンピュータチップでのデータ処理と消費電力との関連性を、ハードウエア規模の大幅な増加やプログラミング上の制約が加わることなしに減少させることである。
消費電流と処理データとの関連性を減少させる方法には(1)データの値が同じであっても、消費電流が予測不可能な方法で変化させる方法、(2)データの値が異なる場合でも、消費電流が常に一定とする方法、の2通りの方法が有る。
本発明では、(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 1010101
0(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 1010101
0(b)) xor 1111011(b)
= (not(0) xor 10101010(b)) xor 1111
011(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に示す。
たとえば、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 1010101
0(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 1010101
0(b)) xor 1111011(b)
= (not(0) xor 10101010(b)) xor 1111
011(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に示す。
鍵ビットを表現する際、1ビットのみを用いる場合、鍵ビットの値が1の時と0の時では、鍵の値によって、消費電流に差が出る。プリチャージバスでは、いったんバスの電圧を上げた後、ビットの値に従って電圧を下げるため、鍵ビットの値によって、プリチャージ後のディスチャージの有無によって、消費電流に差が出る。従って、鍵ビットの表現には複数ビットを用いて、鍵ビットの値によって消費電流が変わらないようにすることが望ましい。たとえば2ビットで鍵ビットを表現することを考える。鍵ビット1、鍵ビット2の2つのビットで鍵ビットの0、1を表現する際、鍵ビットが1の状態を、(鍵ビット1=1、鍵ビット2=0)、鍵ビットが0の状態を(鍵ビット1=0、鍵ビット2=1)と表現する。鍵ビットを2本の信号線で表現した場合の暗号化・復号化回路の実施例を図12に示す。
本発明の情報処理装置は、所定の部位に暗号化・復号化手段を有するので、従前のメモリ、バスとの接続が可能である。具体的には、本発明の情報処理装置からデータが外部に出力される部分に復号化手段を置き、復号化後、従来のバスやメモリに出力するように構成し、反対に外部から本発明の情報処理装置へデータが入力される部分には、暗号化手段を置き、従来設計のバスやメモリからのデータを暗号化した後情報処理装置内に取り込むように構成する。
暗号化された状態のデータを用いて演算を実現するには、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)で表される。
A’= A xor Ak
B’= B xor Bk
C’in = Cin xor Rk
C’out = Cout xor Rk
R’= R xor Rk (式14)
(式14)を(式12)、(式13)に代入すると、暗号化全加算器の論理式が次のように求められる。
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)で表される。
A’= A xor Ak
B’= B xor Bk
C’in = Cin xor Rk
C’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))na
nd((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)で表される。
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))na
nd((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)で表される。
A’= A xor not Ak
B’= B xor not Bk
C’in = Cin xor Rk
C’out = Cout xor Rk
R’= R xor not Rk (式19)
(式19)を(式12)、(式13)に代入し、ドモルガンの定理を適応すると、暗号化ビットが0の時にビットが反転する暗号化全加算器の論理式は次のように求められる。
B’= B xor not Bk
C’in = Cin xor Rk
C’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 x
or Rk))) xor Rk
(式21)
(式20)、(式21)を論理回路で表現したものが、図9になる。図8、図9で示される1ビットの全加算器を並べることで、複数ビットの加算器が実現可能である。たとえば、暗号化ビットが0の時に、0x55で暗号化し、暗号化ビットが1の時に0xAAで暗号化する場合の暗号化加算器は、下位から、図9、図8、図9、図8、図9、図8、図9、図8の暗号化全加算器を並べて実現することができる。
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 x
or Rk))) xor Rk
(式21)
(式20)、(式21)を論理回路で表現したものが、図9になる。図8、図9で示される1ビットの全加算器を並べることで、複数ビットの加算器が実現可能である。たとえば、暗号化ビットが0の時に、0x55で暗号化し、暗号化ビットが1の時に0xAAで暗号化する場合の暗号化加算器は、下位から、図9、図8、図9、図8、図9、図8、図9、図8の暗号化全加算器を並べて実現することができる。
暗号化されたデータを解釈・実行する命令デコーダには、2つの実現方法があり、ひとつは命令デコーダの命令を取り込む部分に復号化器を接続する方法である。もう一つの方法は、暗号化されたデータを直接解釈・実行できるように命令コードと命令が多対一で対応づけられているようなデコーダを構成しておく方法である。命令コードを暗号化すると、暗号化ビットの種類数だけ、暗号化された値が得られる。その暗号化して得られた全ての値を、元の暗号化される前に対応づけられていた命令と対応づける。全ての命令コードに対して、そうした対応付けを行い、多対一の暗号化された命令コードと命令の対応表を作成する。その表に従ってデコーダを構成することで、暗号化された命令コードを復号化することなしに解釈可能なデコーダが実現できる。
本発明の実施例によれば、高いセキュリティを持つ情報処理装置を提供することができる。更に、高いセキュリティを持つカード部材、および情報処理システムを提供することができる。
図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に示す。
0x5C xor 0x55 + 0 = 0x009
(鍵ビット=0)
0x5C xor 0xAA + 0x100 = 0x1F6
(鍵ビット=1)
という2つの値を取りうる。この2つの値がBSRと対応づけられるような多対一の命令コードと命令の対応表を用意することで、復号化することなしに、命令を解釈、実行できるデコーダが実現できる。図17の命令コードと命令の対応表を、暗号化された命令コードを直接解釈できるように多対一の対応表に変換した表を図18に示す。
図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に示される真理値表より合成された回路により実施することもできる。
また、暗号化ビットが0の場合に値を反転する暗号方式で暗号化する場合の暗号化全加算器の一実施例を図9に示す。暗号化全加算器は、図9以外の論理回路でも実現することが可能であり、図7に示される真理値表より合成された回路により実施することもできる。
図10は、本発明の別の一実施例を示している。本実施例では、従来の暗号化されていないデータや命令コードを扱うように構成されている演算器406、命令デコーダ404を用いて演算や命令解釈を行うように構成されており、命令デコーダ404の入力部に復号化器1006を置き、命令デコーダには、復号化した値が入力される。同様に、演算器の演算数の入力部にも、復号化器1007、1008を接続し、データを復号化した後に演算器406で計算を行い、演算結果は鍵生成手段1009で生成された鍵に従って、暗号化器1005で暗号化されて、内部バス402に出力される。レジスタ403は、暗号化されたnビットのデータと暗号化に用いられたmビットの鍵情報を格納可能なように構成されている。図11は、本発明で用いられる暗号方式のための暗号化器・復号化器の一実施例で、1ビットの鍵ビット1101とデータビット1104を入力として、暗号化・復号化を行う。本実施例では、暗号化器と復号化器は同一の回路で実現されている。図12は、暗号化に用いる鍵ビットが2ビットの場合の一実施例である。
図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)では、暗号化の際の鍵を変換するような操作を行うようにしても良い。
図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に格納することなく、暗号化することができる。
図16は本発明の別の一実施例で、RAMデータ復号化器(1504)、ROMデータ復号化器(1505)とCPU内部の暗号化方式による暗号化器(1502)の順番を逆にしている。図15での実施例では、RAMデータ暗号化方式で暗号化されたデータをまずRAM暗号復号化器で復号化し、平文データに戻した後、CPU内部の暗号化方式にしたがって暗号化していたが、暗号化方式を適切に選択することで、RAMデータ暗号化方式で暗号化されたデータをさらにCPU内部の暗号化方式で暗号化した後、RAMデータ暗号化方式に対応した復号化器で復号化し、CPU内部の暗号化方式で暗号化されているデータを得る事ができる。このような方法が可能な暗号化方式としては、たとえばバーナム暗号がある(非特許文献3)。
401は情報処理装置(CPU)、402は内部バス、403はレジスタ、404は命令デコーダ、406は演算器、408は複号化器、409は暗号化器、410は鍵生成器、501、502、503は暗号化全加算器、510は出力Rのための秘密鍵、511は入力Aの第0ビット目、512は入力Aのための秘密鍵Ak、513は入力Bの第0ビット目、521は入力Aの第1ビット目、523は入力Bの第1ビット目、531は入力Aの第2ビット目、533は入力Bの第2ビット目、1005は暗号化器、1006、1007、1008は復号化器、1009は鍵生成器、1101は鍵ビット信号線、1104は入力ビット信号線、1103は出力ビット信号線、1201は第1鍵ビット信号線、1202は第2鍵ビット信号線、1204は入力ビット信号線、1203は出力ビット信号線、1301は外部バス、1304はROM/EEPROM、1305はRAM、1402は暗号化器、1403は鍵生成器、1501は鍵生成器、1502は暗号化器、1503は復号化器、1504はRAMデータ復号化器、1505はROMデータ復号化器、1506はRAMデータ暗号化器、1550はRAMデータ暗号用鍵記憶装置である。
Claims (1)
- 内部バスと、
演算器と、
鍵データ発生し、前記鍵データを時間に応じて変化させる鍵発生器と、
復号化器と、
暗号化器とを有し、
前記内部バスは、暗号化データと、前記暗号化データに同時に伴われる鍵データとをメモリへ転送し、前記暗号化データと前記鍵データの両方を組で前記メモリへ格納させ、
前記復号化器は、前記暗号化データに随伴する鍵データにより、前記暗号化データを復号化し、前記演算器ヘその復号化データを出力し、
前記暗号化器は、前記鍵発生器により生成される鍵データにより、前記演算器からの出力データを暗号化し、その暗号化データと前記鍵発生器により発生された鍵データとを前記内部バスへ出力することを特徴とする情報情報装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006034970A JP2006136032A (ja) | 2006-02-13 | 2006-02-13 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006034970A JP2006136032A (ja) | 2006-02-13 | 2006-02-13 | 情報処理装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001350936A Division JP3904432B2 (ja) | 2001-11-16 | 2001-11-16 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006136032A true JP2006136032A (ja) | 2006-05-25 |
Family
ID=36729059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006034970A Withdrawn JP2006136032A (ja) | 2006-02-13 | 2006-02-13 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006136032A (ja) |
-
2006
- 2006-02-13 JP JP2006034970A patent/JP2006136032A/ja not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3904432B2 (ja) | 情報処理装置 | |
US7472285B2 (en) | Apparatus and method for memory encryption with reduced decryption latency | |
KR100445406B1 (ko) | 데이터 암호화 장치 및 그 방법 | |
JP3848573B2 (ja) | マイクロプロセッサシステム | |
JP5339237B2 (ja) | 格納されている入力値および格納されているカウント値を利用する暗号化鍵生成 | |
JP4180094B2 (ja) | プログラム変換装置、暗号処理装置、暗号処理方法 | |
JP4045777B2 (ja) | 情報処理装置 | |
JP4317607B2 (ja) | 情報処理装置、耐タンパ処理装置 | |
US8045712B2 (en) | Stream ciphering of the content of a memory external to a processor | |
CN106688027A (zh) | 依赖puf和地址的数据加密 | |
JP4199937B2 (ja) | 耐タンパー暗号処理方法 | |
CN103988461A (zh) | 用于对数据进行解密的设备和方法 | |
Verma et al. | Enhancement of RC6 block cipher algorithm and comparison with RC5 & RC6 | |
JP2008181225A (ja) | Icカード | |
CN105574441A (zh) | 一种嵌入式固件保护的方法和装置 | |
JP4119882B2 (ja) | メモリ情報保護システム、メモリ情報の保護方法、および半導体メモリ | |
KR20180059217A (ko) | 메모리 데이터 보안 처리 장치 및 방법 | |
JP2005149262A (ja) | 情報処理装置 | |
JP2006136032A (ja) | 情報処理装置 | |
US11061996B2 (en) | Intrinsic authentication of program code | |
JP4003723B2 (ja) | 情報処理装置、耐タンパ処理装置 | |
JP4664655B2 (ja) | 情報処理装置、および、そのアドレス制御方法 | |
JP2006180375A (ja) | プログラマブル論理回路 | |
JPH0547875B2 (ja) | ||
JP2004078976A (ja) | 情報処理装置、耐タンパ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060303 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A132 Effective date: 20061003 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20061130 |