(57)【特許請求の範囲】
【請求項１】
複数のビットからなる識別情報であるＩＤを整数値に変換して整数ｎｕｍを求め、変数ｍａｓｋの初期値に所定の値ｓｅｅｄを設定し、ｍａｓｋ＝ｈａｓｈ（ｍａｓｋ）により変数ｍａｓｋのハッシュ値をハッシュ関数ｈａｓｈにより求めて求めたハッシュ値を新たな変数ｍａｓｋとすることにより変数ｍａｓｋを更新することを上記整数ｎｕｍの回数だけ繰り返し、上記変数ｍａｓｋの更新を整数ｎｕｍの回数だけ繰り返した結果得られた変数ｍａｓｋを複数のビットからなるマスク情報として出力するマスク情報生成部と、
上記マスク情報生成部により出力された複数のビットからなるマスク情報の先頭から所定のビット数ｍ（ビット数ｍは上記ＩＤのビット数以下のビット数とする）のビットを切り出して変数ＩＶとし、変数ＩＶと上記ＩＤとの排他的論理和を算出して算出結果を求め、求めた算出結果をマスター鍵ｍｋｅｙにより暗号化し、暗号化した結果を個別鍵ｕｋｅｙとして出力する暗号化部と
を備えたことを特徴とする個別鍵生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、個別鍵生成装置に係り、サイドチャネルアタックによる不正解析を困難にする技術に関する。
【背景技術】
【０００２】
従来の個別鍵生成装置は、例えば、特開平５−７５５９５号公報  第３頁〜４頁、第１図のように、識別情報を暗号化手段等により変換し、識別情報ごとに異なる値を生成することで個別鍵の生成を行っていた。
【０００３】
従来の個別鍵生成装置は、装置の消費電力や装置から発生する磁場等を観測すること（サイドチャネルアタックと呼ばれる。）で、本来秘密であるべき、個別鍵を生成するための鍵が解析される問題点があった。
【特許文献１】特開平５−７５５９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、上記した従来技術の欠点を除くためになされたものであって、その目的とするところは、上記のような問題点を解決するためになされたもので、電力差分解析や電磁波解析といった解析を困難にすることを目的とする。
【課題を解決するための手段】
【０００５】
本発明に係る個別鍵生成装置は、
識別情報に基づいて、当該識別情報に対して固有の個別鍵を生成する個別鍵生成装置であって、以下の要素を有することを特徴とする
（１）識別情報に基づいてマスク情報を生成するマスク情報生成部
（２）識別情報をマスク情報によりマスク処理した値を暗号化して、暗号化の結果を個別鍵とする暗号化部。
【発明の効果】
【０００６】
本発明においては、暗号化等の個別鍵の生成に係る元データにマスク処理を施すので、不正解析を困難にできる。
【発明を実施するための最良の形態】
【０００７】
実施の形態１．
以下本発明を図面に示す実施例に基づいて説明する。図１は、この発明の一実施例を示す個別鍵生成装置の構成図である。
【０００８】
図１において、個別鍵生成装置１００は、マスク情報生成部２００、暗号化部３００、及びメモリ４００によって構成される。個別鍵生成装置１００の入力は、識別情報５００であり、出力は個別鍵１１０である。また、識別情報５００は公開されている情報であるが、マスター鍵４１０やシード４２０は秘密であり、予めメモリ４００に記憶されている。
【０００９】
次に動作について説明する。図２は、処理フローを示す図である。まず、個別鍵生成装置１００に識別情報５００が入力される（Ｓ２０１）。
【００１０】
次に、マスク情報生成部２００によりマスク情報生成処理（Ｓ２０２）を行う。このマスク情報生成処理では、識別情報５００を入力して、識別情報５００に対応したマスク情報を生成する。
【００１１】
図３は、マスク情報生成処理の動作の一例を示したものである。まず、第一ステップで識別情報５００（ＩＤ）を整数値化して、整数ｎｕｍを得る。第二ステップで、変数ｍａｓｋの初期値としてシード４２０（ｓｅｅｄ）を設定する。第三ステップで、変数ｍａｓｋのハッシュ値を算出し、その結果で変数ｍａｓｋを更新する処理を、整数ｎｕｍの回数だけ繰り返す。そして、その結果であるｍａｓｋをマスク情報２１０として出力する。
【００１２】
最後に、暗号化部３００で暗号化処理（Ｓ２０３）を行う。暗号化処理（Ｓ２０３）では、マスク情報２１０（ｍａｓｋ）と識別情報５００（ＩＤ）とマスター鍵４１０（ｍｋｅｙ）を用いて個別鍵１１０を生成する。
【００１３】
図４は、暗号化処理の動作の一例を示したものである。第四ステップで、マスク情報２１０から必要なビット数ｍを先頭から切り出し、変数ＩＶとする。第五ステップで、変数ＩＶと識別情報５００（ＩＤ）のビットごとの排他的論理和を算出する。マスク処理の例である。そして、得られた値をマスター鍵４１０（ｍｋｅｙ）で暗号化する。この暗号化された値が、個別鍵１１０（ｕｋｅｙ）として個別鍵生成装置１００から出力される。この例で、必要なビット数ｍは、識別情報５００のビット長以下の値を想定している。
【００１４】
以上の例で、攻撃者は、個別鍵生成装置に入力される識別情報５００を知っていても、マスク情報２１０を知ることはできない。また。マスク情報２１０は識別情報によって異なるので、暗号化される値を秘匿することができ、電力差分解析や電磁波解析を行うことができない。そして、マスク情報２１０は識別情報５００によって一意に決まるので、マスター鍵４１０とシード４２０を保持していれば、個別鍵生成装置が複数あったとしても、どの装置でも同じ個別鍵を生成できる。
【００１５】
実施の形態２．
実施の形態１では、マスター鍵４１０とシード４２０は別々の値であったが、同一の値を用いてもよい。メモリ節約の観点から有効である。
【００１６】
実施の形態３．
実施の形態１では、マスク情報生成部２００の内部でハッシュ関数を使用していたが、ハッシュ関数に代えて暗号化関数や擬似乱数生成器を用いてもよい。暗号化関数を使用する場合には、鍵と暗号化する値がシードとなる。擬似乱数生成器を使用する場合には、シード４２０を初期値として使用する。また、マスク情報生成部２００で使用する関数は、ハッシュ関数、暗号化関数、あるいは擬似乱数生成器でなくても、シードがわからないとビットに移り変わりが予想できないような関数であればよい。
【００１７】
実施の形態４．
実施の形態１では、暗号化部３００を使用しているが、鍵付ハッシュなど個別鍵が解析されたとしても、個別鍵からマスター鍵を求めることが困難な関数を使用すればよい。
【００１８】
実施の形態５．
実施の形態２〜４を組み合わせる形態も有効である。
【００１９】
個別鍵生成装置は、演算装置とメモリを備えたコンピュータとして、各要素はプログラムにより処理を実行することができる。また、プログラムを記憶媒体に記憶させ、記憶媒体からコンピュータに読み取られるようにすることができる。
【００２０】
図５は、個別鍵生成装置のハードウエア構成例を示す図である。バスに、演算装置５０１、データ記憶装置５０２、メモリ５０３が接続されている。データ記憶装置５０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やハードディスクである。メモリ５０３は、通常ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００２１】
プログラムは、通常データ記憶装置５０２に記憶されており、メモリ４０３にロードされた状態で、順次演算装置５０１に読み込まれ処理を行う。
【図面の簡単な説明】
【００２２】
【図１】この発明の一実施例を示す個別鍵生成装置の構成図である。
【図２】処理フローを示す図である。
【図３】マスク情報生成処理の動作の一例を示したものである。
【図４】暗号化処理の動作の一例を示したものである。
【図５】個別鍵生成装置のハードウエア構成例を示す図である。
【符号の説明】
【００２３】
１００  個別鍵生成装置、２００  マスク情報生成部、３００  暗号化部。
【図１】
0004611643.tif 000002
【図２】
0004611643.tif 000003
【図３】
0004611643.tif 000004
【図４】
0004611643.tif 000005
【図５】
0004611643.tif 000006