(58)【調査した分野】(Int.Cl.,DB名)
過去に生成された第1の乱数と、(mod n)における当該第1の乱数の逆元を示す第1の逆元とを関連付けた第1組情報を記憶する乱数記憶部を備える情報処理装置の情報処理方法であって、
乱数生成部が、第2の乱数を生成する乱数生成ステップと、
逆元生成部が、(mod n)における前記第2の乱数の逆元を示す第2の逆元を生成する逆元生成ステップと、
ブラインド処理部が、前記乱数記憶部が関連付けて記憶する前記第1組情報に含まれる前記第1の乱数及び前記第1の逆元のうちのいずれか一方を示す第1マスク情報と、前記第2の乱数及び前記第2の逆元のうちのいずれか一方を示す第2マスク情報とに基づいてマスク情報を生成し、生成した前記マスク情報に基づいて、データをマスクしたブラインドデータを生成するブラインド処理ステップと、
ブラインド解除処理部が、前記第1組情報に含まれる前記第1の乱数及び前記第1の逆元のうちの前記第1マスク情報と異なる一方を示す第1解除情報と、前記第2の乱数及び前記第2の逆元のうちの前記第2マスク情報と異なる一方を示す第2解除情報とに基づいてマスク解除情報を生成し、生成した前記マスク解除情報に基づいて、少なくとも(mod n)を含む処理がされた前記ブラインドデータのマスクを解除するブラインド解除処理ステップと
を含むことを特徴とする情報処理方法。
過去に生成された第1の乱数と、(mod n)における当該第1の乱数の逆元を示す第1の逆元とを関連付けた第1組情報を記憶する乱数記憶部を備える情報処理装置のコンピュータに、
第2の乱数を生成する乱数生成ステップと、
(mod n)における前記第2の乱数の逆元を示す第2の逆元を生成する逆元生成ステップと、
前記乱数記憶部が関連付けて記憶する前記第1組情報に含まれる前記第1の乱数及び前記第1の逆元のうちのいずれか一方を示す第1マスク情報と、前記第2の乱数及び前記第2の逆元のうちのいずれか一方を示す第2マスク情報とに基づいてマスク情報を生成し、生成した前記マスク情報に基づいて、データをマスクしたブラインドデータを生成するブラインド処理ステップと、
前記第1組情報に含まれる前記第1の乱数及び前記第1の逆元のうちの前記第1マスク情報と異なる一方を示す第1解除情報と、前記第2の乱数及び前記第2の逆元のうちの前記第2マスク情報と異なる一方を示す第2解除情報とに基づいてマスク解除情報を生成し、生成した前記マスク解除情報に基づいて、少なくとも(mod n)を含む処理がされた前記ブラインドデータのマスクを解除するブラインド解除処理ステップと
を実行させるためのプログラム。
【発明を実施するための形態】
【0018】
以下、本発明の一実施形態による情報処理装置について、図面を参照して説明する。
[第1の実施形態]
本実施形態では、情報処理装置の一例として、ICカード1である場合について説明する。
図1は、本実施形態によるICカード1の機能構成の一例を示すブロック図である。
【0019】
ICカード1は、例えば、RSA暗号を使用して、暗号化処理、復号処理、メッセージの署名処理などの暗号処理(RSA暗号処理)を実行する情報処理装置である。本実施形態では、一例として、RSA暗号処理による署名処理を実行する場合について説明する。
本実施形態によるICカード1は、RSA暗号処理による署名処理を行う際に、RSA暗号処理の対象データ(例えば、メッセージデータCM)に乱数を利用してマスクするブラインド処理を実行する。また、ICカード1は、メッセージデータCMをブラインド処理したブラインドデータBCMをRSA暗号処理して、ブラインド署名データBEMを生成する。そして、ICカード1は、生成したブラインド署名データBEMにブラインド解除処理を実行し、メッセージデータCMをRSA暗号した署名データEMを生成する。
また、
図1に示すように、ICカード1は、インタフェース部10、ROM20、RAM30、EEPROM40、乱数生成部50、及び制御部60を備えている。
【0020】
インタフェース部10は、ICカード1とICカードリーダライタを備える情報端末装置(不図示)との間で情報通信を行う。
ROM(Read Only Memory)20は、ICカード1に各種処理を実行させるためのプログラムや各種設定情報などを記憶する不揮発性メモリである。
RAM(Random Access Memory)30は、ICカード1の各種処理に用いるデータを一時記憶する揮発性メモリである。
【0021】
EEPROM(Electrically Erasable Programmable Read Only Memory)40は、ICカード1の各種処理に用いられるワーキングデータを記憶する電気的に書き換え可能な不揮発性メモリである。EEPROM40は、例えば、ID等の個人情報、パスワード、暗号鍵(公開鍵、及び秘密鍵)などの電源が遮断されても記憶内容を残す必要のあるデータを記憶する。また、EEPROM40は、乱数記憶部41を備えている。
【0022】
乱数記憶部41は、過去に生成された乱数(第1の乱数)と、当該乱数の逆元(第1の逆元)とを関連付けた組情報(第1組情報)を記憶する。ここで、乱数の逆元とは、(mod n)における乱数の逆元を示す。また、“n”は、ICカード1で用いるRSA暗号における剰余算の法nを示す。また、(mod n)とは、法nによる剰余演算を示す。逆元の詳細については、後述する。乱数記憶部41は、例えば、
図2に示すように、後述する乱数生成部50が前回(1回前)に生成した乱数(r
i−1)とその逆元(v
i−1)とを関連付けて記憶する。
【0023】
図2は、本実施形態における乱数記憶部41の記憶例を示す図である。
図2に示す例では、1回前の署名処理を(i−1)回目の署名処理とし、(i−1)回目の署名処理において生成した乱数を乱数r
i−1としている。また、(i−1)回目の署名処理において生成した乱数の逆元を、逆元v
i−1としている。すなわち、この例において、乱数記憶部41は、乱数r
i−1と逆元v
i−1とを関連付けて記憶している。なお、乱数記憶部41が記憶する乱数r
i−1と逆元v
i−1との組情報は、上述した署名処理などの暗号処理が実行された後に、新しく生成された乱数と逆元との組情報に書き換えられる。
なお、本実施形態では、以下の説明において、乱数記憶部41に記憶されている乱数を乱数r
i−1又は乱数rsとし、乱数記憶部41に記憶されている逆元を逆元v
i−1又は逆元vsとして説明する。
【0024】
図1に戻り、乱数生成部50は、所定のビット長の乱数(第2の乱数)を生成する。本実施形態では、乱数生成部50は、例えば、65ビット長の乱数を生成する。なお、乱数生成部50は、所定のビット長より短いビット長の乱数を複数回生成し、生成した複数の乱数を直列に接続することにより、所定のビット長の乱数を生成してもよい。例えば、乱数生成部50は、13ビット長の乱数を5回生成して、65ビット長の乱数を生成してもよい。
なお、本実施形態では、以下の説明において、乱数生成部50が生成した所定のビット長の乱数を乱数r
i又は乱数rgとし、乱数r
i又は乱数rgの逆元を逆元v
i又は逆元vgとして説明する。
【0025】
制御部60は、例えば、CPU(Central Processing Unit)などを含むプロセッサであり、ICカード1を統括的に制御する。制御部60は、例えば、ROM20に記憶されているプログラムを読み出し、RAM30を使用して各種処理を実行する。制御部60は、例えば、RSA暗号処理を実行する際に、乱数生成部50が生成した乱数rgを取得して、乱数rgの逆元vgを生成する。制御部60は、取得した乱数rg及び逆元vgと、乱数記憶部41が記憶する乱数rs及び逆元vsとを利用して、メッセージデータCMをブラインド処理した後に、RSA暗号処理を実行するとともに、ブラインド解除処理を実行して、署名データを生成する。また、制御部60は、RSA暗号処理を実行した後に、取得した乱数rg及び逆元vgを、新しい乱数rs及び逆元vgとして、乱数記憶部41に記憶させる。
【0026】
なお、制御部60は、取得した乱数rgが“0”(全ビット“0”)である場合に、取得した乱数rgを破棄し、乱数生成部50から再度、乱数rgを取得する。制御部60は、例えば、取得した乱数rgの全ビットが“0”であるか否かを判定し、全ビットが“0”であると判定した場合には、乱数生成部50から再度、乱数rgを取得する。また、制御部60は、全ビットが“0”でないと判定した場合には、乱数生成部50から取得済みの乱数rgの逆元vgを生成する。
また、制御部60は、逆元生成部61、ブラインド処理部62、署名処理部63、ブラインド解除処理部64、及び記憶処理部65を備えている。
【0027】
逆元生成部61は、取得した乱数rs(第2の乱数)に対して逆元vg(第2の逆元)を生成する。つまり、逆元生成部61は、(mod n)における乱数rsの逆元vgを生成する。具体的に、逆元生成部61は、下記の式(1)に基づいて、逆元vgを生成する。
【0029】
なお、式(1)をi回目の乱数r
iとした場合の逆元v
iは、下記の式(2)により表される。
【0031】
ブラインド処理部62は、乱数記憶部41が関連付けて記憶する組情報に含まれる乱数rs及び逆元vsのうちのいずれか一方を示す第1マスク情報(ストアマスク情報)と、上述した乱数rg及び逆元vgのうちのいずれか一方を示す第2マスク情報(生成マスク情報)とに基づいてマスク情報Vを生成する。本実施形態では、ブラインド処理部62は、一例として、乱数rsを第1マスク情報とし、乱数rgを第2マスク情報としてマスク情報Vを生成する場合について説明する。具体的に、ブラインド処理部62は、下記の式(3)に基づいて、マスク情報Vを生成する。
【0033】
このように、ブラインド処理部62は、第1マスク情報と第2マスク情報とを積算した上で、法nにより剰余演算することにより、マスク情報Vを生成する。
なお、式(3)をi回目のブラインド処理におけるマスク情報V
iとした場合のマスク情報は、下記の式(4)により表される。
【0035】
また、ICカード1が公開鍵e(検証鍵e)を、例えば、EEPROM40などに保有している場合には、ブラインド処理部62は、下記の式(5)に基づいて、マスク情報Vを生成してもよい。
【0037】
ブラインド処理部62は、生成したマスク情報Vに基づいて、メッセージデータCMをマスクするブラインド処理を実行する。ブラインド処理部62は、例えば、下記の式(6)に基づいて、ブラインド処理を実行し、ブラインドデータBCMを生成する。
【0039】
このように、ブラインド処理部62は、マスク情報VとメッセージデータCMとを積算した上で、法nにより剰余演算することにより、ブラインドデータBCMを生成する。
【0040】
署名処理部63(暗号処理部の一例)は、ブラインド処理部62がブラインド処理したブラインドデータBCMに、(mod n)に基づく署名処理(例えば、RSA暗号処理)を実行する。署名処理部63は、例えば、秘密鍵(d、n)に基づいて、下記の式(7)により、RSA暗号処理を実行し、ブラインド署名データBEMを生成する。
【0042】
このように、署名処理部63は、秘密鍵(d、n)に基づいて、署名処理する場合に、ブラインドデータBCMを秘密鍵(d、n)により冪乗剰余演算処理することにより、ブラインド署名データBEMを生成する。
【0043】
ブラインド解除処理部64は、第1解除情報(ストアマスク解除情報)と、第2解除情報(生成マスク解除情報)とに基づいてマスク解除情報Uを生成する。ここで、第1解除情報は、乱数記憶部41が関連付けて記憶する組情報に含まれる乱数rs及び逆元vsのうちの第1マスク情報と異なる一方を示し、第2解除情報は、上述した乱数rg及び逆元vgのうちの第2マスク情報と異なる一方を示す。例えば、上述した乱数rsを第1マスク情報とし、乱数rgを第2マスク情報とした場合には、第1解除情報は、逆元vsであり、第2解除情報は、逆元vgである。具体的に、ブラインド解除処理部64は、下記の式(8)に基づいて、マスク解除情報Uを生成する。
【0045】
このように、ブラインド解除処理部64は、第1解除情報と第2解除情報とを積算した上で、RSA暗号処理の秘密鍵dにより冪乗演算することにより、マスク解除情報Uを生成する。なお、この式(8)の処理において、法nにより剰余演算を行ってもよい。
なお、式(8)をi回目のブラインド解除処理におけるマスク解除情報U
iとした場合のマスク解除情報は、下記の式(9)により表される。
【0047】
また、ICカード1が検証鍵eを、例えば、EEPROM40などに保有している場合には、ブラインド解除処理部64は、下記の式(10)に基づいて、マスク解除情報Uを生成してもよい。
【0049】
ブラインド解除処理部64は、生成したマスク解除情報Uに基づいて、少なくとも(mod n)を含む処理がされたブラインドデータのマスクを解除する。すなわち、ブラインド解除処理部64は、署名処理部63が署名処理したブラインドデータ(ブラインド署名データBEM)のマスクを解除し、署名処理されたデータ(署名データEM)を生成する。ブラインド解除処理部64は、例えば、下記の式(11)に基づいて、ブラインド解除処理を実行し、署名データEMを生成する。
【0051】
このように、ブラインド解除処理部64は、マスク解除情報Uとブラインド署名データBEMとを積算した上で、法nにより剰余演算することにより、署名データEMを生成する。
なお、上述のブラインド解除処理により署名データEMが求められる根拠は、下記の式(12)による。
【0053】
記憶処理部65は、今回の署名処理の際に生成した乱数rgと逆元vgとを関連づけた組情報(第2組情報)を上述した第1組情報として乱数記憶部41に記憶させる。なお、本実施形態では、記憶処理部65は、既に記憶されている乱数rsと逆元vsとの組情報(第1組情報)に、今回の署名処理の際に生成した乱数rgと逆元vgとの組情報(第2組情報)を上書きして、乱数rg及び逆元vgを次回の乱数rs及び逆元vsとして乱数記憶部41に記憶させる。
【0054】
次に、本実施形態によるICカード1の動作について、図面を参照して説明する。
図3は、本実施形態によるICカード1の署名処理の概要の一例を示す図である。
また、
図4は、本実施形態における署名処理の一例を示すフローチャートである。
この
図3及び
図4に示すように、まず、乱数生成部50が乱数r
i(例えば、65ビット)を生成する(ステップS101)。乱数生成部50は、生成した乱数r
iを制御部60に出力する。
【0055】
次に、制御部60の逆元生成部61が、乱数生成部50によって生成された乱数r
iの逆元v
iを生成する(ステップS102)。逆元生成部61は、乱数生成部50が生成した乱数r
iを取得し、上述した式(2)に基づいて、逆元v
iを生成する。
【0056】
次に、ブラインド処理部62が、乱数記憶部41が記憶する1回前の乱数r
i−1と、乱数生成部50が生成した乱数r
iとを積算処理し、マスク情報V(例えば、130ビット)を生成する(ステップS103)。すなわち、ブラインド処理部62は、乱数記憶部41が記憶する1回前の乱数r
i−1を第1マスク情報として取得するとともに、乱数生成部50が生成した乱数r
iを第2マスク情報として取得する。そして、ブラインド処理部62は、取得した第1マスク情報と、第2マスク情報とを上述した式(4)により積算処理して、マスク情報Vを生成する。
【0057】
次に、ブラインド処理部62は、生成したマスク情報Vに基づいて、メッセージデータCMをブラインド処理して、ブラインドデータBCMを生成する(ステップS104)。ブラインド処理部62は、上述した式(6)によりブラインドデータBCMを生成する。
【0058】
次に、署名処理部63が、ブラインドデータBCMをRSA暗号処理してブラインド署名データBEMを生成する(ステップS105)。署名処理部63は、上述した式(7)により、ブラインド署名データBEMを生成する。
【0059】
次に、ブラインド解除処理部64が、乱数記憶部41が記憶する1回前の逆元v
i−1と、逆元生成部61が生成した逆元v
iとを積算処理し、マスク解除情報U(例えば、130ビット)を生成する(ステップS106)。すなわち、ブラインド解除処理部64は、乱数記憶部41が記憶する1回前の逆元v
i−1を第1解除情報として取得するとともに、逆元生成部61が生成した逆元v
iを第2解除情報として取得する。そして、ブラインド解除処理部64は、取得した第1解除情報と、第2解除情報とを上述した式(9)により積算処理して、マスク解除情報Uを生成する。
【0060】
次に、ブラインド解除処理部64は、生成したマスク解除情報Uに基づいて、ブラインド署名データBEMをブラインド解除処理して、署名データEMを生成する(ステップS107)。ブラインド処理部62は、上述した式(11)により署名データEMを生成する。
【0061】
次に、
図4に示すように、記憶処理部65は、今回の署名処理の際に生成した乱数rgと逆元vgとを関連づけた組情報(第2組情報)を上述した第1組情報として乱数記憶部41に記憶させて(ステップS108)、処理を終了する。
【0062】
このように、本実施形態によるICカード1は、乱数記憶部41に記憶されている過去に生成された乱数r
i−1又は逆元v
i−1と、今回生成した乱数r
i又は逆元v
iとに基づいて、ブラインド処理及びブラインド解除処理を実行する。本実施形態によるICカード1は、ブラインド処理を行うことにより、同一のメッセージデータCMであっても、署名処理部63が署名処理するデータを、処理を行うごとにランダムに異ならせることができる。そのため、本実施形態によるICカード1は、サイドチャネル攻撃による署名鍵dの漏えいするリスクを低減することができる。
【0063】
なお、上述した本実施形態の一例では、マスク情報Vを、乱数r
i(乱数rg)と乱数r
i−1(乱数rs)とに基づいて生成し、マスク解除情報Uを、逆元v
i(逆元vg)と逆元v
i−1(逆元vs)とに基づいて生成する場合について説明したが、これに限定されるものではない。例えば、ブラインド処理部62及びブラインド解除処理部64は、以下の組み合わせにより、マスク情報V及びマスク解除情報Uを生成してもよい。
【0064】
(組み合わせ例1)ブラインド処理部62が、乱数r
i(乱数rg)と逆元v
i−1(逆元vs)とに基づいてマスク情報Vを生成し、ブラインド解除処理部64が、逆元v
i(逆元vg)と乱数r
i−1(乱数rs)とに基づいてマスク解除情報Uを生成する。
(組み合わせ例2)ブラインド処理部62が、逆元v
i(逆元vg)と乱数r
i−1(乱数rs)とに基づいてマスク情報Vを生成し、ブラインド解除処理部64が、乱数r
i(乱数rg)と逆元v
i−1(逆元vs)とに基づいてマスク解除情報Uを生成する。
(組み合わせ例3)ブラインド処理部62が、逆元v
i(逆元vg)と逆元v
i−1(逆元vs)とに基づいてマスク情報Vを生成し、ブラインド解除処理部64が、乱数r
i(乱数rg)と乱数r
i−1(乱数rs)とに基づいてマスク解除情報Uを生成する。
【0065】
以上説明したように、本実施形態によるICカード1(情報処理装置の一例)は、乱数記憶部41と、逆元生成部61と、ブラインド処理部62と、ブラインド解除処理部64とを備えている。乱数記憶部41は、過去に生成された乱数rs(第1の乱数)と、(mod n)における当該乱数rsの逆元を示す逆元vs(第1の逆元)とを関連付けた第1組情報を記憶する。乱数生成部50は、乱数rg(第2の乱数)を生成する。逆元生成部61は、(mod n)における乱数rgの逆元を示す逆元vg(第2の逆元)を生成する。
ブラインド処理部62は、乱数記憶部41が関連付けて記憶する第1組情報に含まれる乱数rs及び逆元vsのうちのいずれか一方を示す第1マスク情報を取得する。また、ブラインド処理部62は、乱数rg及び逆元vgのうちのいずれか一方を示す第2マスク情報を取得する。ブラインド処理部62は、第1マスク情報と第2マスク情報とに基づいてマスク情報Vを生成し、生成したマスク情報Vに基づいて、データ(例えば、メッセージデータCM)をマスクしたブラインドデータを生成する。
【0066】
また、ブラインド解除処理部64は、第1組情報に含まれる乱数rs及び逆元vsのうちの第1マスク情報と異なる一方を示す第1解除情報を取得する。また、ブラインド解除処理部64は、乱数rg及び逆元vgのうちの第2マスク情報と異なる一方を示す第2解除情報を取得する。ブラインド解除処理部64は、第1解除情報と第2解除情報とに基づいてマスク解除情報を生成し、生成したマスク解除情報に基づいて、少なくとも(mod n)を含む処理がされたブラインドデータのマスクを解除し、署名処理されたデータ(例えば、署名データEM)を生成する。
【0067】
これにより、本実施形態によるICカード1は、マスク情報V及びマスク解除情報Uを生成するための乱数及び逆元の一部を乱数記憶部41に記憶されている過去に生成された乱数及び逆元を利用する。そのため、本実施形態によるICカード1は、毎回全ての乱数及び逆元を生成する場合に比べて、演算処理量を低減することができる。すなわち、本実施形態によるICカード1は、セキュリティを維持しつつ、時間がかかる乱数の生成や乱数の逆元を生成する処理を軽減することができる。よって、本実施形態によるICカード1は、セキュリティを維持しつつ、処理時間を短縮することができる。
【0068】
また、本実施形態によるICカード1は、乱数rgと逆元vgとを関連づけた第2組情報を第1組情報として乱数記憶部41に記憶させる記憶処理部65を備えている。
これにより、本実施形態によるICカード1は、生成した乱数rg及び逆元vgを記憶して、次回以降に使用することができる。
【0069】
また、本実施形態では、第1マスク情報及び第2マスク情報うちのいずれか一方が乱数であり、他方が乱数の逆元であってもよい。
本実施形態によるICカード1は、この場合であっても上述した第1マスク情報及び第2マスク情報に乱数を使用する場合と同様に、セキュリティを維持しつつ、処理時間を短縮することができる。
【0070】
また、本実施形態による情報処理方法は、上述した乱数記憶部41を備える情報処理装置(例えば、ICカード1)の情報処理方法であって、乱数生成ステップと、逆元生成ステップと、ブラインド処理ステップと、ブラインド解除処理ステップとを含んでいる。
乱数生成ステップにおいて、乱数生成部50が、乱数rgを生成し、逆元生成ステップにおいて、逆元生成部61が、(mod n)における乱数rgの逆元を示す逆元vgを生成する。ブラインド処理ステップにおいて、上述したように、ブラインド処理部62が、第1マスク情報と第2マスク情報とに基づいてマスク情報Vを生成し、生成したマスク情報Vに基づいて、データをマスクしたブラインドデータを生成する。そして、ブラインド解除処理ステップにおいて、ブラインド解除処理部64が、第1解除情報と第2解除情報とに基づいてマスク解除情報Uを生成し、生成したマスク解除情報Uに基づいて、少なくとも(mod n)を含む処理がされたブラインドデータのマスクを解除し、署名処理されたデータを生成する。
これにより、本実施形態による情報処理方法は、上述したICカード1と同様に、セキュリティを維持しつつ、処理時間を短縮することができるという効果を奏する。
【0071】
[第2の実施形態]
次に、第2の実施形態によるICカード1について、図面を参照して説明する。
上述した第1の実施形態では、ICカード1が、130ビット長のマスク情報V及びマスク解除情報Uを、乱数又は逆元における2つの65ビット長の情報に基づいて生成する場合について説明した。これに対して、本実施形態では、所定のビット長の2つ以上の情報に基づいて、マスク情報V及びマスク解除情報Uを生成する場合について説明する。
【0072】
なお、本実施形態におけるICカード1の構成は、
図1に示す第1の実施形態と同様であるので、ここでは説明を省略する。
本実施形態では、乱数記憶部41が複数の組情報を記憶する点と、ブラインド処理部62及びブラインド解除処理部64によるマスク情報V及びマスク解除情報Uの生成処理が異なる点が、第1の実施形態と異なる。
【0073】
本実施形態において、例えば、乱数記憶部41が記憶する乱数(第1の乱数)、及び乱数生成部50が生成する乱数(第2の乱数)は、マスク情報Vのビット長をN分割した所定のビット長の乱数である。ただし、ここでの分割数Nは、2以上の整数である。
また、本実施形態における乱数生成部50は、M個の乱数rgを生成する。ここで、Mは、1以上(N−1)以下の整数である。乱数生成部50は、署名処理を行う際に、例えば、乱数r
i〜乱数r
i−(M−1)のM個の乱数rgを生成する。
また、本実施形態における逆元生成部61は、M個の乱数rgそれぞれに対応するM個の逆元vg(第2の逆元)を生成する。逆元生成部61は、例えば、逆元v
i〜逆元v
i−(M−1)のM個の逆元vgを生成する。
【0074】
また、乱数記憶部41は、少なくとも(N−M)個の組情報を記憶している。乱数記憶部41は、例えば、
図5に示すように、(i−M)回目から(i−(N−M))回目までの過去の組情報を記憶している。
図5は、本実施形態における乱数記憶部41の記憶例を示す図である。
この図に示す例では、乱数記憶部41は、例えば、(i−M)回目に生成した組情報を示す乱数r
i−Mと逆元v
i−Mとを関連付けた組情報を記憶している。乱数記憶部41は、同様の組情報を(i−(N−M))回目に生成した組情報まで記憶する。このように、乱数記憶部41は、(N−M)個の組情報を記憶している。なお、各組情報は、署名処理が行われた後に、記憶処理部65が、例えば、古い組情報から順に、新しく生成された組情報に置き換えられて変更される。
【0075】
本実施形態におけるブラインド処理部62は、(N−M)個の第1マスク情報と、M個の第2マスク情報とに基づいて、マスク情報Vを生成する。ここで、(N−M)個の第1マスク情報は、乱数記憶部41が記憶する(N−M)個の組情報(第1組情報)に基づく情報であり、M個の第2マスク情報は、乱数rg及び逆元vgのM個の組情報(第2組情報)に基づく情報である。なお、本実施形態では、(N−M)個の第1マスク情報は、(N−M)個の乱数rs(例えば、乱数r
i−M〜乱数r
i−(N−M))であり、M個の第2マスク情報は、M個の乱数rs(例えば、乱数r
i〜乱数r
i−(M−1))である場合の一例について説明する。
なお、本実施形態におけるマスク情報Vのビット長(サイズ)、分割数N、及び1回の処理に生成する乱数の数Mは、例えば、ICカード1が有するハード構成の制限、想定されるセキュリティレベル、要求される処理時間などに基づいて定められている。
【0076】
具体的に、ブラインド処理部62は、下記の式(13)に基づいて、マスク情報Vを生成する。
【0078】
なお、式(13)をi回目の乱数までを利用したブラインド処理におけるマスク情報V
iとした場合のマスク情報は、下記の式(14)により表される。
【0080】
本実施形態におけるブラインド解除処理部64は、(N−M)個の第1解除情報と、M個の第2解除情報とに基づいて、マスク解除情報Uを生成する。ここで、(N−M)個の第1解除情報は、乱数記憶部41が記憶する(N−M)個の組情報(第1組情報)に基づく情報であり、M個の第2解除情報は、乱数rg及び逆元vgのM個の組情報(第2組情報)に基づく情報である。なお、本実施形態では、(N−M)個の第1解除情報は、(N−M)個の逆元vs(例えば、逆元v
i−M〜逆元v
i−(N−M))であり、M個の第2解除情報は、M個の逆元vs(例えば、逆元v
i〜逆元v
i−(M−1))である。
具体的に、ブラインド解除処理部64は、下記の式(15)に基づいて、マスク解除情報Uを生成する。
【0082】
なお、式(15)をi回目の逆元までを利用したブラインド解除処理におけるマスク解除情報U
iとした場合のマスク解除情報は、下記の式(16)により表される。
【0084】
また、例えば、上述のMが“1”である場合(M=1)には、マスク情報Vは、下記の式(17)によって表される。すなわち、この場合、ブラインド処理部62は、式(17)により、マスク情報Vを生成する。
【0086】
なお、この式(17)をi回目の逆元までを利用したブラインド処理におけるマスク情報V
iとした場合のマスク解除情報は、下記の式(18)により表される。
【0088】
また、同様に、上述のMが“1”である場合(M=1)には、マスク解除情報Uは、下記の式(19)によって表される。すなわち、この場合、ブラインド処理部62は、式(19)により、マスク解除情報Uを生成する。
【0090】
なお、この式(19)をi回目の逆元までを利用したブラインド解除処理におけるマスク解除情報U
iとした場合のマスク解除情報は、下記の式(20)により表される。
【0092】
また、上述のNが偶数であり、Mが(N/2)である場合(M=N/2)には、マスク情報Vは、下記の式(21)によって表され、マスク解除情報Uは、下記の式(22)によって表される。
【0095】
次に、本実施形態によるICカード1の動作について、図面を参照して説明する。
図6は、本実施形態における署名処理の一例を示すフローチャートである。
なお、
図6に示す例は、上述したMが“1”である場合(M=1)の一例である。
図6において、まず、乱数生成部50が乱数r
iを生成する(ステップS201)。乱数生成部50は、生成した乱数r
iを制御部60に出力する。
【0096】
次に、制御部60の逆元生成部61が、乱数生成部50によって生成された乱数r
iの逆元v
iを生成する(ステップS202)。逆元生成部61は、乱数生成部50が生成した乱数r
iを取得し、上述した式(2)に基づいて、逆元v
iを生成する。
【0097】
次に、ブラインド処理部62が、乱数記憶部41が記憶する(i−1)回目から(i−(N−1))回目までの乱数r
i−1〜乱数r
i−(N−1)と、乱数生成部50が生成した乱数r
iとを積算処理し、マスク情報Vを生成する(ステップS203)。すなわち、ブラインド処理部62は、乱数記憶部41が記憶する(i−1)回目から(i−(N−1))回目までの乱数r
i−1〜乱数r
i−(N−1)を(N−1)個の第1マスク情報として取得するとともに、乱数生成部50が生成した乱数r
iを第2マスク情報として取得する。そして、ブラインド処理部62は、取得した(N−1)個の第1マスク情報と、第2マスク情報とを上述した式(18)により積算処理して、マスク情報Vを生成する。
【0098】
続く、ステップS204及びステップS205の処理は、
図4のステップS104及びステップS105の処理と同様であるので、ここではその説明を省略する。
【0099】
次に、ブラインド解除処理部64が、乱数記憶部41が記憶する(i−1)回目から(i−(N−1))回目までの逆元v
i−1〜逆元v
i−(N−1)と、逆元生成部61が生成した逆元v
iとを積算処理し、マスク解除情報Uを生成する(ステップS206)。すなわち、ブラインド解除処理部64は、乱数記憶部41が記憶する(i−1)回目から(i−(N−1))回目までの逆元v
i−1〜逆元v
i−(N−1)を(N−1)個の第1解除情報として取得するとともに、逆元生成部61が生成した逆元v
iを第2解除情報として取得する。そして、ブラインド解除処理部64は、取得した(N−1)個の第1解除情報と、第2解除情報とを上述した式(20)により積算処理して、マスク解除情報Uを生成する。
【0100】
続く、ステップS207及びステップS208の処理は、
図4のステップS107及びステップS107の処理と同様であるので、ここではその説明を省略する。
なお、ステップS208において、記憶処理部65は、例えば、最も古い組情報を、今回の署名処理の際に生成した乱数rgと逆元vgとの組情報(第2組情報)により上書きして記憶させる。
【0101】
以上説明したように、本実施形態によれば、記憶処理部65が記憶する乱数rs(第1の乱数)及び乱数生成部50が生成する乱数rg(第2の乱数)は、マスク情報Vのビット長をN分割した所定のビット長の乱数である(Nは、2以上の整数)。乱数生成部50は、M個の乱数rgを生成し(Mは、1以上(N−1)以下の整数)、逆元生成部61は、M個の乱数rgそれぞれに対応するM個の逆元vg(第2の逆元)を生成する。また、乱数記憶部41は、少なくとも(N−M)個の組情報(第1組情報)を記憶している。ブラインド処理部62は、乱数記憶部41が記憶する(N−M)個の組情報に基づく(N−M)個の第1マスク情報と、乱数rg及び逆元vgを関連付けたM個の組情報(第2組情報)に基づくM個の第2マスク情報とに基づいて、マスク情報Vを生成する。そして、ブラインド解除処理部64は、上述した(N−M)個の情報に基づく(N−M)個の第1解除情報と、上述したM個の組情報に基づくM個の第2解除情報とに基づいて、マスク情報Vと等しいビット長のマスク解除情報Uを生成する。
これにより、マスク情報V及びマスク解除情報UをN個に分割した乱数を利用するので、生成する乱数rg及び逆元vgのビット長が、分割数Nの応じて短くなる。そのため、本実施形態によるICカード1は、マスク情報V及びマスク解除情報Uのビット長を低減させずに、生成する乱数rg及び逆元vgのビット長を低減することができる。つまり、本実施形態によるICカード1は、乱数rg及び逆元vgを生成するための演算処理量をさらに低減することができる。よって、本実施形態によるICカード1は、セキュリティを維持しつつ、処理時間をさらに短縮することができる。
【0102】
また、本実施形態の
図6において説明した例では、生成する乱数の数Mが“1”である。これにより、本実施形態によるICカード1は、マスク情報V及びマスク解除情報Uを生成する上で使用する乱数及び逆元において、生成する乱数rg及び逆元vgの個数を最小にし、乱数記憶部41が記憶する乱数rs及び逆元vsの個数を最大にすることができる。
【0103】
なお、本実施形態では、分割数Nの増加に応じて、マスク情報Vのビット長、及びマスク解除情報Uのビット長を増加させてもよい。例えば、N=2の場合には、マスク情報Vのビット長を132ビット(乱数のビット長を66ビット)とし、N=3の場合には、マスク情報Vのビット長を135ビット(乱数のビット長を45ビット)とする。また、例えば、N=4の場合には、マスク情報Vのビット長を136ビット(乱数のビット長を34ビット)とする。
これにより、本実施形態によるICカード1は、マスク情報V(マスク解除情報U)の分割数Nが増加することにより使用する乱数及び逆元のビット長が低下することによるランダム性の低下を、ビット長を増加させることにより低減することができる。
【0104】
[第3の実施形態]
次に、第2の実施形態によるICカード1について、図面を参照して説明する。
上述した第1の実施形態において、マスク情報V及びマスク解除情報Uは、乱数rg、乱数rs、逆元vg、及び逆元vsの組み合わせを変えて生成されてもよいことを説明した。そこで、本実施形態では、これらのマスク情報V及びマスク解除情報Uに使用する乱数及び逆元の組み合わせを、ランダムに変更する場合の一例について説明する。
なお、本実施形態では、第1の実施形態と同様に、マスク情報V及びマスク解除情報Uを2分割する場合について説明する。
【0105】
なお、本実施形態におけるICカード1の構成は、
図1に示す第1の実施形態と同様であるので、ここでは説明を省略する。
本実施形態では、乱数生成部50がマスク情報V及びマスク解除情報Uに使用する乱数及び逆元の組み合わせを選択するための乱数を生成する点と、マスク情報V及びマスク解除情報Uの生成処理に、上述の組み合わせを選択する処理が追加される点が、第1の実施形態と異なる。
【0106】
本実施形態における乱数生成部50は、乱数rgを生成するとともに、乱数R2(第3の乱数)を生成する。乱数生成部50は、生成した乱数R2を制御部60に出力する。なお、本実施形態では、
図7に示すように4通りの組み合わせが存在するため、乱数R2は、例えば、2ビット長の乱数であり、“0”〜“3”の値となる。また、乱数生成部50は、2ビット以上の乱数(例えば、乱数rgと同じビット長の乱数)を生成して、生成した乱数の内の2ビット(例えば、下位2ビット)を乱数R2として出力してもよい。
【0107】
図7は、本実施形態における乱数と逆元との組み合わせの一例を示す図である。
図7に示す例では、マスク情報V及びマスク解除情報Uを生成するために、パターン“1”〜パターン“4”の4通りの組み合わせがあり、乱数R2の値に応じて、これらの組み合わせ(パターン)のうちの1つが選択される。
なお、
図7に示すような組み合わせの設定テーブルは、例えば、ROM20に予め記憶されている。
【0108】
本実施形態におけるブラインド処理部62は、乱数R2に応じて、乱数rs及び乱数rgと、乱数rs及び逆元vgと、逆元vs及び乱数rgと、逆元vs及び逆元vgと、のいずれかの組み合わせを第1マスク情報及び第2マスク情報の組み合わせとして選択する。すなわち、ブラインド処理部62は、例えば、乱数R2に応じて、
図7に示す設定テーブルの「マスク情報」の組み合わせのうちの1つを選択する。ブラインド処理部62は、選択した組み合わせに応じた第1マスク情報及び第2マスク情報に基づいて、マスク情報Vを生成する。
【0109】
本実施形態におけるブラインド解除処理部64は、乱数R2に応じて、乱数rs及び乱数rgと、乱数rs及び逆元vgと、逆元vs及び乱数rgと、逆元vs及び逆元vgと、のいずれかの組み合わせを第1解除情報及び第2解除情報の組み合わせとして選択する。すなわち、ブラインド解除処理部64は、例えば、乱数R2に応じて、
図7に示す設定テーブルの「マスク解除情報」の組み合わせのうちの1つを選択する。ブラインド解除処理部64は、選択した組み合わせに応じた第1解除情報及び第2解除情報に基づいて、マスク解除情報Uを生成する。
【0110】
次に、本実施形態によるICカード1の動作について、図面を参照して説明する。
図8は、本実施形態における署名処理の一例を示すフローチャートである。
図8において、ステップS301及びステップS302の処理は、
図4のステップS101及びステップS102の処理と同様であるので、ここではその説明を省略する。
なお、
図8において、乱数r
iは、乱数rgを示し、乱数r
i−1は、乱数rsを示す。また、逆元v
iは、逆元vgを示し、逆元v
i−1は、逆元vsを示す。
【0111】
続く、ステップS303において、乱数生成部50は、乱数R2を生成し、生成した乱数R2を制御部60に出力する。
【0112】
次に、ブラインド処理部62は、乱数R2の値に応じて分岐処理を行う(ステップS304)。ブラインド処理部62は、乱数R2の値が“0”である場合(R2=0)に、処理をステップS305に進め、乱数r
iと乱数r
i−1とを積算してマスク情報Vを生成する。すなわち、ブラインド処理部62は、乱数r
i−1を第1マスク情報として取得するとともに、乱数r
iを第2マスク情報として取得する。そして、ブラインド処理部62は、取得した乱数r
iと乱数r
i−1とに基づいて、マスク情報Vを生成する。
【0113】
また、ブラインド処理部62は、乱数R2の値が“1”である場合(R2=1)に、処理をステップS306に進め、乱数r
iと逆元v
i−1とを積算してマスク情報Vを生成する。すなわち、ブラインド処理部62は、逆元v
i−1を第1マスク情報として取得するとともに、乱数r
iを第2マスク情報として取得する。そして、ブラインド処理部62は、取得した乱数r
iと逆元v
i−1とに基づいて、マスク情報Vを生成する。
【0114】
また、ブラインド処理部62は、乱数R2の値が“2”である場合(R2=2)に、処理をステップS307に進め、逆元v
iと乱数r
i−1とを積算してマスク情報Vを生成する。すなわち、ブラインド処理部62は、乱数r
i−1を第1マスク情報として取得するとともに、逆元v
iを第2マスク情報として取得する。そして、ブラインド処理部62は、取得した逆元v
iと乱数r
i−1とに基づいて、マスク情報Vを生成する。
【0115】
また、ブラインド処理部62は、乱数R2の値が“3”である場合(R2=3)に、処理をステップS308に進め、逆元v
iと逆元v
i−1とを積算してマスク情報Vを生成する。すなわち、ブラインド処理部62は、逆元v
i−1を第1マスク情報として取得するとともに、逆元v
iを第2マスク情報として取得する。そして、ブラインド処理部62は、取得した逆元v
iと乱数r
i−1とに基づいて、マスク情報Vを生成する。
【0116】
続く、ステップS309及びステップS310の処理は、
図4のステップS104及びステップS105の処理と同様であるので、ここではその説明を省略する。
【0117】
次に、ブラインド解除処理部64は、乱数R2の値に応じて分岐処理を行う(ステップS311)。ブラインド解除処理部64は、乱数R2の値が“0”である場合(R2=0)に、処理をステップS312に進め、逆元v
iと逆元v
i−1とを積算してマスク解除情報Uを生成する。すなわち、ブラインド解除処理部64は、逆元v
i−1を第1解除情報として取得するとともに、逆元v
iを第2解除情報として取得する。そして、ブラインド処理部62は、取得した逆元v
iと逆元v
i−1とに基づいて、マスク解除情報Uを生成する。
【0118】
また、ブラインド解除処理部64は、乱数R2の値が“1”である場合(R2=1)に、処理をステップS313に進め、逆元v
iと乱数r
i−1とを積算してマスク解除情報Uを生成する。すなわち、ブラインド解除処理部64は、乱数r
i−1を第1解除情報として取得するとともに、逆元v
iを第2解除情報として取得する。そして、ブラインド解除処理部64は、取得した逆元v
iと乱数r
i−1とに基づいて、マスク解除情報Uを生成する。
【0119】
また、ブラインド解除処理部64は、乱数R2の値が“2”である場合(R2=2)に、処理をステップS314に進め、乱数r
iと逆元v
i−1とを積算してマスク解除情報Uを生成する。すなわち、ブラインド解除処理部64は、逆元v
i−1を第1解除情報として取得するとともに、乱数r
iを第2解除情報として取得する。そして、ブラインド解除処理部64は、取得した乱数r
iと逆元v
i−1とに基づいて、マスク解除情報Uを生成する。
【0120】
また、ブラインド解除処理部64は、乱数R2の値が“3”である場合(R2=3)に、処理をステップS315に進め、乱数r
iと乱数r
i−1とを積算してマスク解除情報Uを生成する。すなわち、ブラインド解除処理部64は、乱数r
i−1を第1解除情報として取得するとともに、乱数r
iを第2解除情報として取得する。そして、ブラインド解除処理部64は、取得した乱数r
iと乱数r
i−1とに基づいて、マスク解除情報Uを生成する。
【0121】
続く、ステップS316及びステップS317の処理は、
図4のステップS107及びステップS108の処理と同様であるので、ここではその説明を省略する。
【0122】
以上説明したように、本実施形態によれば、乱数生成部50は、乱数rgを生成するとともに、乱数R2(第3の乱数)を生成する。ブラインド処理部62は、乱数R2に応じて、乱数rs及び乱数rgと、乱数rs及び逆元vgと、逆元vs及び乱数rgと、逆元vs及び逆元vgと、のいずれかの組み合わせを第1マスク情報及び第2マスク情報の組み合わせとして選択する。
これにより、本実施形態によるICカード1は、マスク情報Vを生成する乱数及び逆元の組み合わせをランダムに変更するため、マスク情報Vのランダム性を向上させることができる。
【0123】
[第4の実施形態]
次に、第4の実施形態によるICカード1について、図面を参照して説明する。
本実施形態では、上述した第3の実施形態に、第2の実施形態を組み合わせて拡張した場合の一例について説明する。
【0124】
なお、本実施形態におけるICカード1の構成は、
図1に示す第1の実施形態と同様であるので、ここでは説明を省略する。
本実施形態では、マスク情報V及びマスク解除情報Uを2分割からN分割に拡張するため、マスク情報V及びマスク解除情報Uに使用する乱数及び逆元の組み合わせは、2
N通り(2のN乗通り)となる。また、本実施形態では、一例として、分割数Nが“3”(N=3)であり、乱数の生成数Mが“1”(M=1)である場合の例について説明する。
【0125】
乱数生成部50は、第3の実施形態と同様に、乱数rgを生成するとともに、乱数R2(第3の乱数)を生成し、生成した乱数R2を制御部60に出力する。なお、本実施形態では、上述したように分割数Nが“3”であるので、乱数及び逆元の組み合わせは、
図9に示すように8通りとなり、乱数R2は、例えば、3ビット長の乱数であり、“0”〜“7”の値となる。
【0126】
図9は、本実施形態における乱数と逆元との組み合わせの一例を示す図である。
図9に示す例では、マスク情報V及びマスク解除情報Uを生成するために8通りの組み合わせがあり、乱数R2の値に応じて、これらの組み合わせのうちの1つが選択される。
なお、
図9に示すような組み合わせの設定テーブルは、例えば、ROM20に予め記憶されている。
【0127】
ブラインド処理部62は、2
3通り(2
N通りの一例)のうちから、乱数R3に応じて、1つの組み合わせを選択して、第1マスク情報及び第2マスク情報を生成する。すなわち、ブラインド処理部62は、例えば、乱数R2に応じて、
図9に示す設定テーブルの「マスク情報」の組み合わせのうちの1つを選択する。ブラインド処理部62は、選択した組み合わせに応じた第1マスク情報及び第2マスク情報に基づいて、マスク情報Vを生成する。
【0128】
また、ブラインド解除処理部64は、2
3通り(2
N通りの一例)のうちから、乱数R3に応じて、1つの組み合わせを選択して、第1解除情報及び第2解除情報を生成する。すなわち、ブラインド解除処理部64は、例えば、乱数R2に応じて、
図9に示す設定テーブルの「マスク解除情報」の組み合わせのうちの1つを選択する。ブラインド解除処理部64は、選択した組み合わせに応じた第1解除情報及び第2解除情報に基づいて、マスク解除情報Uを生成する。
【0129】
次に、本実施形態によるICカード1の動作について、図面を参照して説明する。
図10は、本実施形態における署名処理の一例を示すフローチャートである。
図10において、ステップS401からステップS403の処理は、
図8のステップS301からステップS304の処理と同様であるので、ここではその説明を省略する。
【0130】
続く、ステップS404において、ブラインド処理部62は、2
N通り(例えば、2
3通り)のうちから、乱数R3に応じて、第1マスク情報及び第2マスク情報を選択する。具体的に、ブラインド処理部62は、乱数R2に応じて、
図9に示す設定テーブルの「マスク情報」の組み合わせのうちの1つを選択する。なお、
図9において、「ストアマスク情報」が第2マスク情報を示し、「生成マスク情報」が第2マスク情報を示す。
【0131】
次に、ブラインド処理部62は、第1マスク情報及び第2マスク情報に基づいて、マスク情報Vを生成する(ステップS405)。ブラインド処理部62は、乱数R3に応じて選択した第1マスク情報及び第2マスク情報を取得する。そして、ブラインド処理部62は、取得した第1マスク情報及び第2マスク情報に基づいて、マスク情報Vを生成する。
【0132】
続く、ステップS406及びステップS407の処理は、
図8のステップS309及びステップS310の処理と同様であるので、ここではその説明を省略する。
【0133】
次に、ステップS408において、ブラインド解除処理部64は、2
N通り(例えば、2
3通り)のうちから、乱数R3に応じて、第1解除情報及び第2解除情報を選択する。具体的に、ブラインド解除処理部64は、乱数R2に応じて、
図9に示す設定テーブルの「マスク解除情報」の組み合わせのうちの1つを選択する。なお、
図9において、「ストアマスク解除情報」が第2解除情報を示し、「生成マスク解除情報」が第2解除情報を示す。
【0134】
次に、ブラインド解除処理部64は、第1解除情報及び第2解除情報に基づいて、マスク解除情報Uを生成する(ステップS409)。ブラインド解除処理部64は、乱数R3に応じて選択した第1解除情報及び第2解除情報を取得する。そして、ブラインド解除処理部64は、取得した第1解除情報及び第2解除情報に基づいて、マスク解除情報Uを生成する。
【0135】
続く、ステップS410及びステップS411の処理は、
図8のステップS316及びステップS317の処理と同様であるので、ここではその説明を省略する。
【0136】
以上説明したように、本実施形態によれば、乱数生成部50が、乱数R2を生成し、ブラインド処理部62が、2
N(2のN乗)通りの組み合わせのうちから、乱数R2に応じて、1つの組み合わせを選択して、第1マスク情報及び第2マスク情報を生成する。ここで、2
N通りの組み合わせは、(N−M)個の第1組情報とM個の第2組情報とを含むN個の組情報それぞれの乱数と逆元とのいずれかを選択する組み合わせである。
これにより、本実施形態によるICカード1は、マスク情報Vのランダム性をさらに向上させることができる。
【0137】
[第5の実施形態]
次に、第5の実施形態によるICカード1について、図面を参照して説明する。
本実施形態では、RSA暗号処理のビット長に応じて、マスク情報V及びマスク解除情報Uのビット長を変更する場合の一例について説明する。
【0138】
なお、本実施形態におけるICカード1の構成は、
図1に示す第1の実施形態と同様であるので、ここでは説明を省略する。
本実施形態では、一例として、乱数の生成数Mが“1”(M=1)である場合の例について説明する。
【0139】
図11は、本実施形態におけるアルゴリズムIDと乱数の個数との組み合わせの一例を示す図である。
この図に示すように、本実施形態では、「アルゴリズムID」と「マスク情報の乱数の個数L」との対応が、予め設定されている。ここで、「アルゴリズムID」は、署名処理のアルゴリズム種類を識別する識別情報と、鍵長を識別する識別情報とを含む識別情報である。また、「マスク情報の乱数の個数L」は、マスク情報Vを生成するための乱数の個数を示し、上述した分割数Nに対応する。
この「アルゴリズムID」と「マスク情報の乱数の個数L」とを対応付けた設定テーブルは、例えば、ROM20に予め記憶されている。
【0140】
図11に示す例では、「アルゴリズムID」が“RSA1024”である場合に、「マスク情報の乱数の個数L」が“2”に設定されている。つまり、鍵長が1024ビットのRSA暗号では、分割数Nが“2”に設定されることを示している。また、「アルゴリズムID」が“RSA2048”である場合に、「マスク情報の乱数の個数L」が“3”に設定されている。つまり、鍵長が2048ビットのRSA暗号では、分割数Nが“3”に設定されることを示している。
【0141】
本実施形態におけるブラインド処理部62は、署名処理部63によって実行される署名処理に用いる鍵長に応じて、マスク情報Vのビット長を乱数rgのビット長単位で変更する。ブラインド処理部62は、例えば、
図11に示す設定テーブルを参照して、分割数Nを、「アルゴリズムID」に対応する分割数に設定する。そして、ブラインド処理部62は、設定した分割数Nに応じたビット長のマスク情報Vを生成する。
【0142】
図12は、本実施形態におけるアルゴリズムIDとマスク情報のビット長との設定例を示す図である。
例えば、
図12(a)に示しように、ブラインド処理部62は、「アルゴリズムID」が“RSA1024”である場合に、66ビット長の乱数を2個使用して、132ビット長のマスク情報Vを生成する。
また、例えば、
図12(b)に示しように、ブラインド処理部62は、「アルゴリズムID」が“RSA2048”である場合に、66ビット長の乱数を3個使用して、198ビット長のマスク情報Vを生成する。
【0143】
また、ブラインド解除処理部64は、ブラインド処理部62と同様に、暗号処理に用いる鍵長に応じて、マスク解除情報Uのビット長を乱数rgのビット長単位で変更する。
なお、本実施形態において、乱数記憶部41に記憶する組情報の数は、設定される分割数Nの最大値に応じて決定される。
【0144】
次に、本実施形態によるICカード1の動作について、図面を参照して説明する。
図13は、本実施形態における署名処理の一例を示すフローチャートである。
図13において、ステップS501及びステップS502の処理は、
図6のステップS201及びステップS202の処理と同様であるので、ここではその説明を省略する。なお、
図13に示す例では、分割数Nが乱数の個数Lに置き換わっている。
【0145】
続く、ステップS503において、ブラインド処理部62は、上述したアルゴリズムIDを取得する。なお、アルゴリズムIDは、処理に応じてICカード1に接続されるICカードリーダライタを備える情報端末装置から取得してもよいし、処理に応じてROM20やEEPROM40に記憶されているものを取得してもよい。また、制御部60が、処理に応じて、アルゴリズムIDを設定するものとしてもよい。
【0146】
次に、ブラインド処理部62は、取得したアルゴリズムIDに基づいて、乱数の個数Lを取得する(ステップS504)。ブラインド処理部62は、例えば、
図11に示す設定テーブルに基づいて、乱数の個数Lを取得する。
【0147】
次に、ブラインド処理部62は、乱数の個数Lに基づいて、第1マスク情報と第2マスク情報とを取得して、マスク情報Vを生成する(ステップS505)。
続く、ステップS506からステップS510の処理は、
図6のステップS204からびステップS208の処理と同様であるので、ここではその説明を省略する。
【0148】
以上説明したように、本実施形態によれば、ブラインド処理部62は、ブラインドデータに、少なくとも(mod n)を含む処理として実行される署名処理(暗号処理の一例)に用いる鍵長に応じて、マスク情報Vのビット長を乱数rgのビット長単位で変更する。
これにより、本実施形態によるICカード1は、処理時間の増大を抑制しつつ、鍵長を増大させた署名処理(暗号処理)に対応させることができる。また、本実施形態によるICカード1は、簡易な手法により、鍵長を拡張させることができる。
【0149】
[第6の実施形態]
次に、第6の実施形態によるICカード1について、図面を参照して説明する。
本実施形態では、乱数記憶部41が(N−M)個より多い複数の組情報を記憶し、ブラインド処理部62が、乱数R3に応じて、複数の組情報のうちから、マスク情報Vの生成に使用する(N−M)個の組情報をランダムに選択する場合の一例について説明する。
【0150】
本実施形態において、乱数生成部50は、乱数rgを生成するとともに、乱数R3(第4の乱数)を生成する。
また、乱数記憶部41は、(N−M)個より多い複数の組情報(第1組情報)を記憶する。
ブラインド処理部62は、乱数R3に応じて、乱数記憶部41が記憶する複数の組情報のうちから、第1マスク情報に使用する組情報を選択する。
【0151】
図14は、本実施形態における署名処理の一例を示すフローチャートである。
なお、
図14に示す例は、分割数Nが“2”(N=2)であり、乱数の生成数Mが“1”(M=1)である場合の例を示している。
図14において、ステップS601及びステップS602の処理は、
図4のステップS101及びステップS102の処理と同様であるので、ここではその説明を省略する。
【0152】
続く、ステップS603において、乱数生成部50が、乱数R3を生成する。
次に、ブラインド処理部62は、乱数R3に基づいて、乱数記憶部41が記憶する複数の組情報のうちの1つを選択する(ステップS604)。
【0153】
次に、ブラインド処理部62は、乱数r
i(乱数rg)と、選択した組情報の乱数rsとを積算してマスク情報Vを生成する(ステップS605)。
続く、ステップS606及びステップS607の処理は、
図4のステップS104及びステップS105の処理と同様であるので、ここではその説明を省略する。
【0154】
次に、ブラインド解除処理部64は、逆元v
i(逆元vg)と、選択した組情報の逆元vsとを積算してマスク解除情報Uを生成する(ステップS608)。
続く、ステップS609及びステップS610の処理は、
図4のステップS107及びステップS108の処理と同様であるので、ここではその説明を省略する。
なお、ステップS108において、記憶処理部65は、生成した乱数r
i(乱数rg)と逆元v
i(逆元vg)と乱数記憶部41に記憶する際に、組情報の最大組数になるまでの間において、乱数r
i(乱数rg)と逆元v
i(逆元vg)との組情報を上書きせずに追記して記憶させる。
【0155】
以上説明したように、本実施形態によれば、乱数生成部50は、乱数rgを生成するとともに、乱数R3(第4の乱数)を生成し、乱数記憶部41は、複数の組情報を記憶する。そして、ブラインド処理部62は、乱数R3に応じて、乱数記憶部41が記憶する複数の組情報のうちから、第1マスク情報に使用する組情報を選択する。
これにより、第1マスク情報を複数の中からランダムに選択するので、本実施形態によるICカード1は、マスク情報Vのランダム性をさらに向上させることができる。
【0156】
なお、本発明は、上記の各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
例えば、上記の各実施形態は、それぞれを単独に実施してもよいし、複数の実施形態を組み合わせて実施してもよい。
また、上記の各実施形態において、署名処理にRSA暗号を使用する場合について説明したが、ICカード1は、冪乗剰余演算処理であれば、他の処理方式を用いてもよい。
【0157】
また、上記の各実施形態において、情報処理装置の一例として、ICカード1である場合について説明したが、これに限定されるものではなく、他の情報処理装置に適用してもよい。
また、上記の各実施形態において、ブラインド処理及びブラインド解除処理は、暗号処理の一例として、メッセージ等の署名処理である場合について説明したが、暗号処理が、例えば、暗号化処理、復号処理、メッセージ等の検証処理などである場合に適用してもよい。また、ブラインド処理及びブラインド解除処理を適用する暗号処理は、これらに限定されるものではなく、他の暗号処理に適用してもよい。
また、上記の各実施形態において、ブラインド処理が、秘密鍵d(又は署名鍵d)を利用したRSA暗号処理に適用される場合について説明したが、公開鍵e(又は検証鍵e)を利用するRSA暗号処理の場合に適用されてもよい。
【0158】
また、上記の各実施形態において、ICカード1は、記憶処理部65を備える場合について説明したが、記憶処理部65を備えない形態であってもよい。例えば、第6の実施形態において、乱数記憶部41が、(N−M)個より多い大量の組情報(第1組情報)を記憶している場合など、新たに生成した乱数rg及び逆元vgの組情報(第2組情報)を、乱数記憶部41に記憶させなくてもよい。
【0159】
なお、上述したICカード1は、内部に、コンピュータシステムを有している。そして、上述したICカード1が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述したICカード1が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、インターネットやWAN、LAN、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、CD−ROM等の非一過性の記録媒体であってもよい。
【0160】
また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部又は外部に設けられた記録媒体も含まれる。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後にICカード1が備える各構成で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0161】
また、上述した機能の一部又は全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、又は汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。