説明

格納されている入力値および格納されているカウント値を利用する暗号化鍵生成

【課題】情報処理システムは、1以上の暗号化鍵を用いて情報を暗号化、復号化するが、これらの鍵が大きな鍵(例えば一対の2048ビットのRSA鍵)の場合、記憶装置に格納することでシステム当たりのコストを上昇させるため、1以上の固有の暗号化鍵を再生成する機能を提供して、コスト低減する。
【解決手段】格納されている入力値および格納されているカウント値を利用して暗号化鍵を生成する方法であって、プロセッサ100は、入力値とカウント値とを格納する不揮発性記憶装置140と、格納されている入力値と格納されている第1のカウント値とに基づいて、暗号化鍵を生成するロジック122とを備え、暗号化鍵を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理分野に係り、より詳しくは情報暗号化の分野に係る。
【背景技術】
【0002】
情報処理システムにおいては、秘密情報は暗号化により秘匿とすることができる。暗号アルゴリズムは通常1以上の暗号化鍵を利用して、暗号化されていない情報(「平文」)を、1以上の暗号化鍵を用いた逆変換により復号されなければ意味をなさない暗号化情報(「暗号文」)に変換する。
【0003】
例えば、Rivest、Shamir、およびAdelman(「RSA」)が開発した公開鍵暗号アルゴリズムは、公開鍵と秘密鍵という2つの鍵を利用する。公開鍵は、情報の暗号用に公開され、秘密鍵は、対応する公開鍵で暗号化された情報を復号化するのに利用される。これら鍵は両方とも一対の素数から導出される。
【図面の簡単な説明】
【0004】
本発明を例示するが、添付図面には制限されない。
【0005】
【図1】本発明の一実施形態による暗号化鍵を生成するプロセッサを示す。
【0006】
【図2】本発明の一実施形態による入力値およびカウント値を格納するロジックを示す。
【0007】
【図3】本発明の一実施形態による入力値およびカウント値を格納する方法を示す。
【0008】
【図4】本発明の一実施形態による暗号化鍵を生成するロジックを示す。
【0009】
【図5】本発明の一実施形態による暗号化鍵を生成する方法を示す。
【0010】
【図6】本発明の一実施形態による暗号化鍵を生成するシステムを示す。
【発明を実施するための形態】
【0011】
格納されている入力値および格納されているカウント値を利用する暗号化鍵生成に冠する発明の実施形態を記載する。記載においては、本発明のより完全な理解を促すべく、コンポーネントよびシステム構成等の多くの特定の詳細を述べる。しかし、当業者にとっては、本発明がこれら特定の詳細がなくても実施可能であることを理解する。公知の構造、回路、その他の特徴の中には、詳細に示さず、本発明を不必要に曖昧にしないようにしている箇所もある。
【0012】
本発明の実施形態の部材は、ハードウェア、ソフトウェア、ファームウェア、またはハードウェア、ソフトウェア、またはファームウェアの任意の組み合わせでの実装が可能である。ハードウェアという用語は、一般的に、電子、電磁、光学、電気光学、機械、電子機械部品等の物理的構造を有する部材のことを示す。ソフトウェアとう用語は、一般的に、論理構造、方法、手順、プログラム、ルーチン、処理、アルゴリズム、公式、数式等のことを示す。ファームウェアという用語は、一般的に、ハードウェア構造(例えばフラッシュメモリまたは読み取り専用メモリ)に実装できる、または具現化できる論理構造、方法、手順、プログラム、ルーチン、処理、アルゴリズム、公式、または数式のことを示す。ファームウェアの例としては、マイクロコード、書き込み可能制御格納装置、マイクロプログラムされた構造、およびプロセッサ抽象化層が挙げられる。
【0013】
背景技術で記載したように、情報処理システムは、1以上の暗号化鍵を用いて情報を暗号化、復号化する。これら鍵は、情報処理システム内の不揮発性記憶装置に格納される、もしくは、情報処理システムにアクセス可能な不揮発性記憶装置に格納されることにより、システムの電源停止の前後に該システムがこれら鍵を利用できることが望ましい。しかし、様々なシステムが互いに異なる鍵を利用する場合があり、これら様々なシステムに対して個々のコンポーネントを作製(フォトマスク技術を利用して)することは経済的に実現不可能と思われる。これら様々なシステムに固有の情報は、半導体ヒューズまたは電気プログラム技術を利用して格納することができるが、大きな鍵(例えば一対の2048ビットのRSA鍵)の格納は、システムあたりのコストをかなり上昇させることが懸念される。従って、情報処理システムが、1以上の固有の暗号化鍵を再生成する機能を有することが望ましいと思われる。本発明の実施形態は、この機能の提供に利用することができる。
【0014】
図1は、本発明の一実施形態によるプロセッサ100を示す。プロセッサ100は、任意の種類のプロセッサであってよい。これには、インテル(登録商標)ペンティアム(登録商標)プロセッサファミリ、アイテニアム(登録商標)プロセッサファミリ、その他のインテル(登録商標)コーポレーションの他のプロセッサファミリ、または、他の会社の他のプロセッサを含む汎用マイクロプロセッサ、または、専用プロセッサまたはマイクロプロセッサであってよい。プロセッサ100は、マルチスレッドおよびマルチ実行コアを任意の組み合わせで含んでよい。プロセッサ100は、命令ロジック110、実行ロジック120、制御ロジック130、および記憶領域140を含む。プロセッサ100は、さらに、図1に示されない任意の他の回路、構造、またはロジックを含んでもよい。
【0015】
命令ロジック110は命令を受信する。これら命令の1以上は、任意の公知の暗号アルゴリズムにより情報を暗号化、復号化するのに利用される命令であっても、任意の公知の暗号アルゴリズムにより情報を暗号化、復号化するのに利用されうる命令列のうちの1つの命令であってもよい。命令ロジック110は、これら命令を認識、復号化、あるいは受信する任意の回路、ロジック、または他の構造を含むことができる。命令ロジック110は、さらに、本明細書には記載されない任意の他の命令を含むこともできる。一実施形態では、命令ロジック110は、命令を復号化する復号ロジックを含むことができる。
【0016】
実行ロジック120は、命令ロジック110が情報を暗号化、復号化する1以上の命令を受信すると、暗号アルゴリズム、復号アルゴリズム、および/または、暗号アルゴリズムで用いられる任意の処理サブセットを実行する。実行ロジック120は、任意の数の演算ロジックユニット、シフタ、その他の構造等の暗号アルゴリズムを実行する任意の回路、ロジック、その他の構造を含んでよい。実行ロジック120の全体またはその一部は、単一の規格またはアルゴリズムによる暗号化に特化していてもよいが、その全体が、一部が、および/または、他のロジックと協働することにより、複数の規格またはアルゴリズムによる暗号をサポートしてもよく、および/または、これらアルゴリズムのいずれかによる復号をサポートしてもよく、および/または、他の処理に利用されてもよい。実行ロジック120はさらに、暗号アルゴリズムが利用するもの以外の命令を実行する任意の回路、ロジック、その他の構造を含んでもよい。
【0017】
一実施形態では、実行ロジック120は、鍵生成ロジック122の全体またはその一部を含みうる。他の実施形態では、鍵生成ロジック122の全体またはその一部が、実行ロジック120の外部にある別個のロジックに組み込まれていてもよい。鍵生成ロジック122は、1以上の暗号化鍵を生成する任意の回路、ロジック、その他の構造を含んでもよい。図2および図3に、これと異なる鍵生成ロジック122の実施形態を示す。
【0018】
制御ロジック130は、実行ロジック120に命令を実行させる、および/または、鍵生成ロジック122に1以上の暗号化鍵を生成させる。制御ロジック130は、マイクロコード、状態マシンロジック、プログラム可能なロジック、その他の任意の形式の制御ロジックを含む任意の回路、ロジック、その他の構造を含むことにより、命令ユニット110が受信する命令に基づいて実行ロジック120に制御信号を供給することができる。制御ロジック130は、さらに、プロセッサ100内の任意の他の回路、ロジック、その他の構造に、実行ロジック120内ではその全てが実行されない任意の他の処理を行わせることもできる。例えば制御ロジック130は、以下で説明するように、プロセッサ100に、本発明の実施形態で利用される、格納されている入力値および格納されているカウント値をフェッチさせてよい。格納されている入力値および格納されているカウント値は、プロセッサ100内の、またはそれにアクセス可能な記憶領域に格納されてよく、または、そこからフェッチされてもよい。
【0019】
例えば、一実施形態では、格納されている入力値および格納されているカウント値は、プロセッサ100内の記憶領域140からフェッチされてよい。記憶領域140は、プロセッサ100内の任意の種類のメモリまたは格納部材の記憶領域であってよい。一実施形態では、記憶領域140は不揮発性であってよい。例えば、記憶領域140は、半導体ヒューズ技術で実装されるプログラム可能な読み取り専用メモリであってよい。一実施形態では、記憶領域140は、例えば、命令ロジック110による暗号化、復号化、または鍵生成命令を受けた場合に、制御ロジック130が提供する制御信号に基づいて実行ロジック120および/または鍵生成ロジック122内のロジックからしかアクセスできない、というように、セキュリティ化、プライベート化、または保護がなされてよい。
【0020】
図2は、本発明の一実施形態による鍵生成ロジック200を示す。一実施形態では、図2の鍵生成ロジック200は、図1の鍵生成ロジック122の全体または一部に、または、鍵生成ロジック122の全体または一部、および、制御ロジック130の全体または一部の組み合わせに対応している。一実施形態では、鍵生成ロジック200は一対のRSA鍵を生成する。
【0021】
鍵生成ロジック200は、シード生成器220、疑似乱数生成器230、素数テスタ240、カウンタ250、および鍵生成器260を含みうる。鍵生成ロジック200は、ハードウェア、ソフトウェア、およびファームウェアの任意の組み合わせで実装されうる。例えば、シード生成器220、疑似乱数生成器230、素数テスタ240、カウンタ250、および鍵生成器260の各々は、ハードウェア回路、ソフトウェアモジュール、任意のその他のハードウェア、ソフトウェア、またはファームウェア構造であってよい。
【0022】
鍵生成ロジック200は、真の乱数生成器210から、または任意の他のソースから入力値を受信してよい。真の乱数生成器210は、乱数を生成する任意の処理またはデバイスであってよい。しかし、本発明はこの点に限定されず、つまり、本発明の実施形態では、入力値が真の乱数である必要はない。真の乱数生成器210、または、鍵生成ロジック200の入力値のその他の任意のソースは、鍵生成ロジック200に組み込まれていても、それとは別個に設けられてもよい。一実施形態では、入力値は256ビット値であってよい。
【0023】
シード生成器220は、疑似乱数生成器230のシード値を生成する。シード生成器220は、任意の決定性プロセスにより、単一の入力値から1以上のシード値を生成してよい。シード生成器220は、パディング等の任意の方法を利用して、入力値のビット数より大きい、シード値の全ビット数を生成してよい。
【0024】
疑似乱数生成器230は、シード値を入力値として利用して疑似乱数列を生成する。疑似乱数生成器230の出力値の統計分布は、真の乱数生成器210等の真の乱数生成器の出力値の統計分布に近似していてよい。しかし、真の乱数生成器210とは異なり、疑似乱数生成器230は決定性プロセスを用いる。特定の入力が与えられた場合には、疑似乱数生成器230は常に同じ数列を生成する。疑似乱数生成器230は、ソフトウェアアルゴリズム、ハードウェアシフトレジスタ、または任意の他の方法で実装されうる。
【0025】
素数テスタ240は、数が素数であるか否かを判断する。入力が与えられると、素数テスタ240は、それが素数であるか否かを所定の方法により判断する。カウンタ250は、イベントの周波数をカウントする。カウンタ250は、任意の他の方法によりインクリメント、ディクリメント、またはカウントを行ってもよい。一実施形態では、カウンタ250は16ビットカウンタであってよい。
【0026】
鍵生成器260は、1以上の暗号化鍵を生成する。鍵生成器260は、任意の方法で暗号化鍵を生成してよい。一実施形態では、鍵生成器260は一対のRSA鍵を生成する。
【0027】
一実施形態では、鍵生成ロジック200は、図3の方法300に示される本発明の方法の実施形態により、1つの入力値から1以上の暗号化鍵を生成して、入力値と1以上のカウント値とを不揮発性メモリに格納してよい。
【0028】
図3のボックス310では、真の乱数生成器210により乱数が生成される。ボックス312では、乱数を鍵生成ロジック200への入力値として利用する。ボックス314では、乱数を不揮発性メモリに格納する。ボックス316では、シード生成器220は、2つのシード値(第1および第2)を乱数に基づいて生成する。
【0029】
ボックス320でカウンタ250をクリアする。ボックス322で、ボックス316で生成された第1のシード値を、疑似乱数生成器(PRNG)230への入力として利用する。
【0030】
ボックス330では、疑似乱数生成器230は、その入力値に基づいて疑似乱数(PRN)を生成する。ボックス332では、素数テスタ240が、ボックス330で生成された疑似乱数が素数であるかをテストする。ボックス332で疑似乱数が素数であると判断された場合には、その疑似乱数を、ボックス360で鍵生成器260への第1の入力として利用して、カウンタ250からのカウント値を、ボックス334で第1のカウント値として不揮発性メモリに格納する。一方で、ボックス332で疑似乱数が素数ではないと判断された場合には、疑似乱数(またはその一部、または、それから導出した数)をボックス336で疑似乱数生成器230の入力へと戻し、ボックス338でカウンタ250をインクリメントさせ、方法300はボックス330へ戻る。
【0031】
ボックス340でカウンタ250をクリアする。ボックス342で、ボックス316の第2のシード値を、疑似乱数生成器230への入力として利用する。
【0032】
ボックス350では、疑似乱数生成器230は、その入力値に基づいて疑似乱数を生成する。ボックス352では、素数テスタ240が、ボックス350で生成された疑似乱数が素数であるかをテストする。ボックス352で疑似乱数が素数であると判断された場合には、その疑似乱数を、ボックス362で鍵生成器260への第2の入力として利用して、カウンタ250からのカウント値を、ボックス354で不揮発性メモリに格納する。一方で、ボックス352で疑似乱数が素数ではないと判断された場合には、疑似乱数(またはその一部、または、それから導出した数)をボックス356で疑似乱数生成器230の入力へと戻し、ボックス358でカウンタ250をインクリメントさせ、方法300はボックス350へ戻る。
【0033】
ボックス360で、ボックス332で生成された素数の疑似乱数を鍵生成器260への第1の入力として利用する。ボックス362で、ボックス352で生成された素数の疑似乱数を鍵生成器260への第2の入力として利用する。ボックス364で、鍵生成器は、第1の入力を第1の素数として、および、第2の入力を第2の素数として利用して、一対のRSA鍵を生成する。
【0034】
ボックス370で、入力値および第1および第2のカウント値を格納する不揮発性メモリを、別のシステム、または別のシステムのコンポーネント(プロセッサまたはチップセット)へコピーまたは転送してよい。従って、方法300で入力値から生成された同じ一対のRSA鍵を、本発明の別の実施形態では別のシステムで再生成してもよい。この別のシステムでは、同じ一対のRSA鍵を、その後、格納されている入力値および格納されているカウント値から繰り返し再生成することで、該システムに同じ一対のRSA鍵を再利用させることができるので、一対のRSA鍵の2048ビットの情報を永続的に格納し続ける必要がなくなる。この代わりに、256ビットの1つの入力値および16ビットの2つのカウント値を利用する一実施形態では、288ビットの情報のみを永続的に格納し続ける。
【0035】
本発明の範囲においては、方法300は、順序を変えて実行されてもよく、図示されたボックスを省いたり、ボックスを追加したりしてもよく、または、順序を変えること、ボックスを省くこと、またはボックスを追加することを組み合わせることで実行されてもよい。一例としては、カウント値を作成するシステムにおいては一対のRSA鍵を生成または利用する必要がない、またはそれが望ましくない場合がある、という理由から、ボックス360から364までを省くことができる。別の例においては、乱数およびカウント値を不揮発性メモリに格納および/またはコピーするボックス314、334、354、および374を組み合わせることで、単一の不揮発性メモリには一回だけ書き込みを行うようにすることもできる。
【0036】
図4は、本発明の別の実施形態による鍵生成ロジック400を示す。一実施形態では、図4の鍵生成ロジック400は、図1の鍵生成ロジック122の全体または一部に、または、鍵生成ロジック122の全体または一部、および、制御ロジック130の全体または一部の組み合わせに対応している。一実施形態では、鍵生成ロジック400は一対のRSA鍵を生成する。
【0037】
鍵生成ロジック400は、シード生成器420、疑似乱数生成器430、カウンタ450、および鍵生成器460を含みうる。鍵生成ロジック400は、ハードウェア、ソフトウェア、およびファームウェアの任意の組み合わせで実装されうる。例えば、シード生成器420、疑似乱数生成器430、カウンタ450、および鍵生成器460の各々は、ハードウェア回路、ソフトウェアモジュール、任意のその他のハードウェア、ソフトウェア、またはファームウェア構造であってよい。
【0038】
鍵生成ロジック400は、不揮発性メモリから入力値と、第1および第2のカウント値とをフェッチあるいは受信することができる。例えば、鍵生成ロジックがプロセッサ100内にある実施形態では、鍵生成ロジック400は、記憶領域140から入力値およびカウント値をフェッチあるいは受信することができる。入力値およびカウント値は、本発明の別の実施形態では、図3の方法300のように、不揮発性メモリに格納されていてよい。入力値は、真の乱数生成器が生成する乱数であってよいが、本発明の範囲においては、任意のソースからの任意の乱数、疑似乱数、非乱数が入力値として利用可能である。
【0039】
シード生成器420は、疑似乱数生成器430のシード値を生成する。シード生成器420は、任意の決定性プロセスにより、単一の入力値から1以上のシード値を生成してよい。シード生成器420は、パディング等の任意の方法を利用して、入力値のビット数より大きい、シード値の全ビット数を生成してよい。
【0040】
疑似乱数生成器430は、シード値を入力値として利用して疑似乱数列を生成する。疑似乱数生成器430の出力値の統計分布は、真の乱数生成器210等の真の乱数生成器の出力値の統計分布に近似していてよい。しかし、真の乱数生成器210とは異なり、疑似乱数生成器430は決定性プロセスを用いる。特定の入力が与えられた場合には、疑似乱数生成器430は常に同じ数列を生成する。疑似乱数生成器430は、ソフトウェアアルゴリズム、ハードウェアシフトレジスタ、または任意の他の方法で実装されうる。
【0041】
カウンタ450は、イベントの周波数をカウントする。カウンタ450は、任意の他の方法によりインクリメント、ディクリメント、またはカウントを行ってもよい。
【0042】
鍵生成器460は、1以上の暗号化鍵を生成する。鍵生成器460は、任意の方法で暗号化鍵を生成してよい。一実施形態では、鍵生成器460は一対のRSA鍵を生成する。
【0043】
一実施形態では、鍵生成ロジック400は、図5の方法500に示される本発明の方法の実施形態により、格納されている1つの入力値、および、格納されている第1および第2のカウント値から1以上の暗号化鍵を生成してよい。図5の実施形態では、入力値及びカウント値は、シード生成器、疑似乱数生成器、カウンタ、および鍵生成器が両実施形態で同じ決定性アルゴリズムまたは設計を利用することにより両実施形態で任意の入力値に対して生成されるRSA鍵が同じになるよう、方法300等の本発明の別の実施形態により作成および格納されていることもある。さらに、与えられたシード値に基づき素数を生成する目的から、疑似乱数生成器の出力を疑似乱数生成器の入力に戻すべき回数は、両実施形態で同じである。従って、図5の実施形態では、格納されているカウント値を、格納されている入力値とともに利用することにより、図3の実施形態で生成されたものに等しい素数が生成されることから、素数テストが不要である。
【0044】
図5のボックス510では、不揮発性メモリから入力値をフェッチまたは受信する。ボックス512で、不揮発性メモリから第1のカウント値をフェッチまたは受信する。ボックス514で、不揮発性メモリから第2のカウント値をフェッチまたは受信する。ボックス516で、シード生成器420は、2つのシード値(第1および第2)を入力値に基づいて生成する。
【0045】
ボックス520で、カウンタ450をクリアする。ボックス522で、ボックス516で生成された第1のシード値を、疑似乱数生成器430への入力として利用する。
【0046】
ボックス530では、疑似乱数生成器430は、その入力値に基づいて疑似乱数を生成する。ボックス532では、カウンタ450のカウントを第1のカウント値と比較する。ボックス532で、カウンタ450のカウントが第1のカウント値と等しいと判断された場合には、ボックス560で疑似乱数生成器430の出力を鍵生成器460への第1の入力として利用する。一方、カウンタ450のカウントが第1のカウント値と等しくないと判断された場合には、ボックス536で疑似乱数生成器430の出力(またはその一部、またはそれから導出した数)を疑似乱数生成器430の入力へ戻し、ボックス538でカウンタ450をインクリメントさせ、方法500はボックス530へ戻る。
【0047】
ボックス540でカウンタ450をクリアする。ボックス542で、ボックス516の第2のシード値を、疑似乱数生成器430への入力として利用する。
【0048】
ボックス550では、疑似乱数生成器430は、その入力値に基づいて疑似乱数を生成する。ボックス552では、カウンタ450のカウントを第2のカウント値と比較する。ボックス552で、カウンタ450のカウントが第2のカウント値と等しいと判断された場合には、ボックス562で疑似乱数生成器430の出力を鍵生成器460への第2の入力として利用する。一方、カウンタ450のカウントが第2のカウント値と等しくないと判断された場合には、ボックス556で疑似乱数生成器430の出力(またはその一部、またはそれから導出した数)を疑似乱数生成器430の入力へ戻し、ボックス558でカウンタ450をインクリメントさせ、方法500はボックス550へ戻る。
【0049】
ボックス560で、ボックス532で生成された素数の疑似乱数を鍵生成器460への第1の入力として利用する。ボックス562で、ボックス552で生成された素数の疑似乱数を鍵生成器460への第2の入力として利用する。ボックス564で、鍵生成器は、第1の入力を第1の素数として、および、第2の入力を第2の素数として利用して、一対のRSA鍵を生成する。
【0050】
ボックス570で、ボックス564で生成された一対のRSA鍵の公開鍵を別のシステムへ送信してよい。ボックス572で、方法500を実行しているシステムの電力を停止してよい。故に、ボックス564で生成された一対のRSA鍵を揮発性システムメモリから消去することができる。
【0051】
ボックス580で、方法500を実行しているシステムの電力を復帰させてよい。ボックス582で、他のシステムにより公開鍵を用いて暗号化された情報をシステム500により受信してよい。そして、ボックス584で、ボックス510から564を繰り返して、ボックス564で生成されたものと同じ一対のRSA鍵を再生成してよい。ボックス586で、他のシステムにより公開鍵を用いて暗号化された情報を、秘密鍵を用いて復号化してよい。
【0052】
本発明の範囲においては、方法500は、順序を変えて実行されてもよく、図示されたボックスを省いたり、ボックスを追加したりしてもよく、または、順序を変えること、ボックスを省くこと、またはボックスを追加することを組み合わせることで実行されてもよい。一例としては、ボックス510から514を一処理として組み合わせる、または、方法500内で別々に順序付けしなおして、入力値、および、第1および第2のカウント値を、一緒に、または、時を変えて別個に方法500でフェッチまたは受信してよい。
【0053】
図6は、本発明の一実施形態によるシステム600を示す。システム600は、鍵生成ロジック612を有するプロセッサ610を含み、プロセッサには、上述のように本発明の実施形態を実装するハードウェア、および/または、上述のように本発明を実施するソフトウェアおよび/またはファームウェアを実行する汎用ハードウェアが含まれてもよい。システム600はさらに、上述したように、ロケーション622に入力値を、ロケーション624に第1のカウント値を、および、ロケーション626に第2のカウント値を格納している(またはこれから格納する)不揮発性記憶装置620を含んでもよい。不揮発性記憶装置620は、プロセッサ610により読み取り可能な任意の種類の不揮発性記憶装置であってもよいし、別のメモリコンポーネントであってもよいし、チップセット等の別の機能を有するコンポーネント内の記憶装置であってもよい。システム600はさらに、システムメモリ630を含んでよく、これは、スタティックRAMまたはダイナミックRAM、あるいは、プロセッサ610により読み取り可能な任意の他の種類の媒体であってもよいし、これら媒体の任意の組み合わせであってもよい。プロセッサ610、不揮発性記憶装置620、およびシステムメモリ630は、任意の方法で(例えば、1以上のバスを介して直接的にまたは間接的に、ポイントツーポイントで、または、他の有線または無線接続により)システム600内で互いに連結され、通信してよい。
【0054】
上述した本発明の実施形態あるいはその一部は、任意の形式の機械可読媒体に格納することができる。例えば、方法300および/または500の全てまたは一部が、プロセッサ100および/またはプロセッサ610により読み取り可能な媒体に格納されているソフトウェアまたはファームウェア命令として具現化されてよく、これら命令はプロセッサ100および/またはプロセッサ610により実行されると、プロセッサ100および/またはプロセッサ610に、本発明の実施形態を実行させてよい。
【0055】
以上のように、格納されている入力値および格納されているカウント値を利用する暗号化鍵生成に関する発明の実施形態を記載した。特定の実施形態を説明し添付図面に示したが、これら実施形態は例示のみを目的としたものであり、広義の発明を限定する意味はなく、本発明を図示し、説明した特定の構成および配置に制限する目的はない、というのも、本開示を読めば当業者であれば多くの他の変形例について想到するからである。本技術分野における進歩は目覚しく、今後の進歩は容易に予測できないので、開示された実施形態の構成及び詳細は、本会時の原理または添付請求項の範囲から逸脱しない範囲において、技術進歩により変形例の想到が容易である可能性があることを留意されたい。

【特許請求の範囲】
【請求項1】
入力値と第1のカウント値とを格納する不揮発性記憶装置と、
格納されている前記入力値と格納されている前記第1のカウント値とに基づいて、暗号化鍵を生成するロジックとを備えるプロセッサ。
【請求項2】
前記入力値は乱数である請求項1に記載のプロセッサ。
【請求項3】
前記不揮発性記憶装置はさらに第2のカウント値を格納する請求項2に記載のプロセッサ。
【請求項4】
前記ロジックは、格納されている前記入力値と、格納されている前記第1のカウント値と、格納されている前記第2のカウント値とに基づいて、一対のRSA鍵を生成する請求項3に記載のプロセッサ。
【請求項5】
前記ロジックは、格納されている前記入力値に基づいて疑似乱数生成器にシード値を与えて、格納されている前記第1のカウント値に基づいて第1の疑似乱数列を反復生成して、格納されている前記第2のカウント値に基づいて第2の疑似乱数列を反復生成して、前記疑似乱数生成器の第1の出力および第2の出力を用いて一対のRSA鍵を生成する請求項4に記載のプロセッサ。
【請求項6】
入力値と第1のカウント値とを格納する不揮発性記憶装置と、
格納されている前記入力値と格納されている前記第1のカウント値とに基づいて、暗号化鍵を生成するプロセッサとを備えるシステム。
【請求項7】
入力値を生成する段階と、
前記入力値に基づいて疑似乱数生成器にシード値を与える段階と、
前記疑似乱数生成器の出力値が素数であるか否かを判断する段階と、
前記疑似乱数生成器の前記出力が素数であるか否かの前記判断に基づいて、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の入力に戻す段階と、
前記疑似乱数生成器の前記出力が前記疑似乱数生成器の前記入力に戻された回数をカウントする段階と、
不揮発性メモリに、前記入力値と、前記疑似乱数生成器の前記出力が前記疑似乱数生成器の前記入力に戻された回数とを格納する段階とを備える方法。
【請求項8】
前記入力値を生成する段階は、真の乱数生成器により行われる請求項7に記載の方法。
【請求項9】
不揮発性メモリから、入力値と第1のカウント値とを読み出す段階と、
前記入力値に基づいて疑似乱数生成器にシード値を与える段階と、
前記第1のカウント値が示す回数分、前記疑似乱数生成器の出力を前記疑似乱数生成器の入力に戻す段階と、
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階とを備える方法。
【請求項10】
前記不揮発性メモリから第2のカウント値を読み出す段階をさらに備える請求項9に記載の方法。
【請求項11】
前記入力値に基づいて疑似乱数生成器にシード値を与える段階は、
前記入力値から、第1のシード値と第2のシード値とを生成する段階を有する請求項10に記載の方法。
【請求項12】
前記入力値に基づいて疑似乱数生成器にシード値を与える段階は、
前記入力値から、第1のシード値と第2のシード値とを生成する段階を有する請求項11に記載の方法。
【請求項13】
疑似乱数生成器にシード値を与える段階は、
前記疑似乱数生成器に前記第1のシード値を与え、前記疑似乱数生成器に前記第2のシード値を与える段階を有する請求項12に記載の方法。
【請求項14】
前記第1のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階は、
前記疑似乱数生成器に前記第1のシード値を与えた後に、前記第1のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階を有する請求項13に記載の方法。
【請求項15】
前記疑似乱数生成器に前記第2のシード値を与えた後に、前記第2のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階をさらに備える請求項14に記載の方法。
【請求項16】
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階は、
前記疑似乱数生成器に前記第1のシード値を与えた後に、前記第1のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階の後に、前記疑似乱数生成器の第1の出力値を利用する段階を有する請求項15に記載の方法。
【請求項17】
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階は、
前記疑似乱数生成器に前記第2のシード値を与えた後に、前記第2のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階の後に、前記疑似乱数生成器の第2の出力値を利用する段階を有する請求項16に記載の方法。
【請求項18】
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階は、
一対のRSA鍵生成アルゴリズムにおいて、前記第1の出力値を第1の素数として利用して、前記第2の出力値を第2の素数として利用する段階を有する請求項17に記載の方法。
【請求項19】
命令を備える機械可読媒体であって、前記命令は実行されると、処理システムに、
不揮発性メモリから、入力値と第1のカウント値とを読み出す段階と、
前記入力値に基づいて疑似乱数生成器にシード値を与える段階と、
前記第1のカウント値が示す回数分、前記疑似乱数生成器の出力を前記疑似乱数生成器の入力に戻す段階と、
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階とを行わせる機械可読媒体。
【請求項20】
暗号化鍵を生成する段階は、
前記疑似乱数生成器に前記入力値に基づく第1のシード値を与えた後に、前記第1のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻した後に、前記疑似乱数生成器の第1の出力値を第1の素数として利用して、且つ、前記疑似乱数生成器に前記入力値に基づく第2のシード値を与えた後に読み出された第2のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻した後に、前記疑似乱数生成器の第2の出力値を第2の素数として利用することにより、一対のRSA鍵を生成する段階を有する請求項19に記載の機械可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−10277(P2011−10277A)
【公開日】平成23年1月13日(2011.1.13)
【国際特許分類】
【外国語出願】
【出願番号】特願2010−92556(P2010−92556)
【出願日】平成22年4月13日(2010.4.13)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】