(57)【要約】      （修正有）【課題】情報処理システムは、１以上の暗号化鍵を用いて情報を暗号化、復号化するが、これらの鍵が大きな鍵（例えば一対の２０４８ビットのＲＳＡ鍵）の場合、記憶装置に格納することでシステム当たりのコストを上昇させるため、１以上の固有の暗号化鍵を再生成する機能を提供して、コスト低減する。【解決手段】格納されている入力値および格納されているカウント値を利用して暗号化鍵を生成する方法であって、プロセッサ１００は、入力値とカウント値とを格納する不揮発性記憶装置１４０と、格納されている入力値と格納されている第１のカウント値とに基づいて、暗号化鍵を生成するロジック１２２とを備え、暗号化鍵を生成する。【選択図】図１
2011010277.tif 000002
【特許請求の範囲】
【請求項１】
入力値と第１のカウント値とを格納する不揮発性記憶装置と、
格納されている前記入力値と格納されている前記第１のカウント値とに基づいて、暗号化鍵を生成するロジックとを備えるプロセッサ。
【請求項２】
前記入力値は乱数である請求項１に記載のプロセッサ。
【請求項３】
前記不揮発性記憶装置はさらに第２のカウント値を格納する請求項２に記載のプロセッサ。
【請求項４】
前記ロジックは、格納されている前記入力値と、格納されている前記第１のカウント値と、格納されている前記第２のカウント値とに基づいて、一対のＲＳＡ鍵を生成する請求項３に記載のプロセッサ。
【請求項５】
前記ロジックは、格納されている前記入力値に基づいて疑似乱数生成器にシード値を与えて、格納されている前記第１のカウント値に基づいて第１の疑似乱数列を反復生成して、格納されている前記第２のカウント値に基づいて第２の疑似乱数列を反復生成して、前記疑似乱数生成器の第１の出力および第２の出力を用いて一対のＲＳＡ鍵を生成する請求項４に記載のプロセッサ。
【請求項６】
入力値と第１のカウント値とを格納する不揮発性記憶装置と、
格納されている前記入力値と格納されている前記第１のカウント値とに基づいて、暗号化鍵を生成するプロセッサとを備えるシステム。
【請求項７】
入力値を生成する段階と、
前記入力値に基づいて疑似乱数生成器にシード値を与える段階と、
前記疑似乱数生成器の出力値が素数であるか否かを判断する段階と、
前記疑似乱数生成器の前記出力が素数であるか否かの前記判断に基づいて、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の入力に戻す段階と、
前記疑似乱数生成器の前記出力が前記疑似乱数生成器の前記入力に戻された回数をカウントする段階と、
不揮発性メモリに、前記入力値と、前記疑似乱数生成器の前記出力が前記疑似乱数生成器の前記入力に戻された回数とを格納する段階とを備える方法。
【請求項８】
前記入力値を生成する段階は、真の乱数生成器により行われる請求項７に記載の方法。
【請求項９】
不揮発性メモリから、入力値と第１のカウント値とを読み出す段階と、
前記入力値に基づいて疑似乱数生成器にシード値を与える段階と、
前記第１のカウント値が示す回数分、前記疑似乱数生成器の出力を前記疑似乱数生成器の入力に戻す段階と、
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階とを備える方法。
【請求項１０】
前記不揮発性メモリから第２のカウント値を読み出す段階をさらに備える請求項９に記載の方法。
【請求項１１】
前記入力値に基づいて疑似乱数生成器にシード値を与える段階は、
前記入力値から、第１のシード値と第２のシード値とを生成する段階を有する請求項１０に記載の方法。
【請求項１２】
前記入力値に基づいて疑似乱数生成器にシード値を与える段階は、
前記入力値から、第１のシード値と第２のシード値とを生成する段階を有する請求項１１に記載の方法。
【請求項１３】
疑似乱数生成器にシード値を与える段階は、
前記疑似乱数生成器に前記第１のシード値を与え、前記疑似乱数生成器に前記第２のシード値を与える段階を有する請求項１２に記載の方法。
【請求項１４】
前記第１のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階は、
前記疑似乱数生成器に前記第１のシード値を与えた後に、前記第１のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階を有する請求項１３に記載の方法。
【請求項１５】
前記疑似乱数生成器に前記第２のシード値を与えた後に、前記第２のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階をさらに備える請求項１４に記載の方法。
【請求項１６】
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階は、
前記疑似乱数生成器に前記第１のシード値を与えた後に、前記第１のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階の後に、前記疑似乱数生成器の第１の出力値を利用する段階を有する請求項１５に記載の方法。
【請求項１７】
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階は、
前記疑似乱数生成器に前記第２のシード値を与えた後に、前記第２のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階の後に、前記疑似乱数生成器の第２の出力値を利用する段階を有する請求項１６に記載の方法。
【請求項１８】
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階は、
一対のＲＳＡ鍵生成アルゴリズムにおいて、前記第１の出力値を第１の素数として利用して、前記第２の出力値を第２の素数として利用する段階を有する請求項１７に記載の方法。
【請求項１９】
命令を備える機械可読媒体であって、前記命令は実行されると、処理システムに、
不揮発性メモリから、入力値と第１のカウント値とを読み出す段階と、
前記入力値に基づいて疑似乱数生成器にシード値を与える段階と、
前記第１のカウント値が示す回数分、前記疑似乱数生成器の出力を前記疑似乱数生成器の入力に戻す段階と、
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階とを行わせる機械可読媒体。
【請求項２０】
暗号化鍵を生成する段階は、
前記疑似乱数生成器に前記入力値に基づく第１のシード値を与えた後に、前記第１のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻した後に、前記疑似乱数生成器の第１の出力値を第１の素数として利用して、且つ、前記疑似乱数生成器に前記入力値に基づく第２のシード値を与えた後に読み出された第２のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻した後に、前記疑似乱数生成器の第２の出力値を第２の素数として利用することにより、一対のＲＳＡ鍵を生成する段階を有する請求項１９に記載の機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理分野に係り、より詳しくは情報暗号化の分野に係る。
【背景技術】
【０００２】
情報処理システムにおいては、秘密情報は暗号化により秘匿とすることができる。暗号アルゴリズムは通常１以上の暗号化鍵を利用して、暗号化されていない情報（「平文」）を、１以上の暗号化鍵を用いた逆変換により復号されなければ意味をなさない暗号化情報（「暗号文」）に変換する。
【０００３】
例えば、Ｒｉｖｅｓｔ、Ｓｈａｍｉｒ、およびＡｄｅｌｍａｎ（「ＲＳＡ」）が開発した公開鍵暗号アルゴリズムは、公開鍵と秘密鍵という２つの鍵を利用する。公開鍵は、情報の暗号用に公開され、秘密鍵は、対応する公開鍵で暗号化された情報を復号化するのに利用される。これら鍵は両方とも一対の素数から導出される。
【図面の簡単な説明】
【０００４】
本発明を例示するが、添付図面には制限されない。
【０００５】
【図１】本発明の一実施形態による暗号化鍵を生成するプロセッサを示す。
【０００６】
【図２】本発明の一実施形態による入力値およびカウント値を格納するロジックを示す。
【０００７】
【図３】本発明の一実施形態による入力値およびカウント値を格納する方法を示す。
【０００８】
【図４】本発明の一実施形態による暗号化鍵を生成するロジックを示す。
【０００９】
【図５】本発明の一実施形態による暗号化鍵を生成する方法を示す。
【００１０】
【図６】本発明の一実施形態による暗号化鍵を生成するシステムを示す。
【発明を実施するための形態】
【００１１】
格納されている入力値および格納されているカウント値を利用する暗号化鍵生成に冠する発明の実施形態を記載する。記載においては、本発明のより完全な理解を促すべく、コンポーネントよびシステム構成等の多くの特定の詳細を述べる。しかし、当業者にとっては、本発明がこれら特定の詳細がなくても実施可能であることを理解する。公知の構造、回路、その他の特徴の中には、詳細に示さず、本発明を不必要に曖昧にしないようにしている箇所もある。
【００１２】
本発明の実施形態の部材は、ハードウェア、ソフトウェア、ファームウェア、またはハードウェア、ソフトウェア、またはファームウェアの任意の組み合わせでの実装が可能である。ハードウェアという用語は、一般的に、電子、電磁、光学、電気光学、機械、電子機械部品等の物理的構造を有する部材のことを示す。ソフトウェアとう用語は、一般的に、論理構造、方法、手順、プログラム、ルーチン、処理、アルゴリズム、公式、数式等のことを示す。ファームウェアという用語は、一般的に、ハードウェア構造（例えばフラッシュメモリまたは読み取り専用メモリ）に実装できる、または具現化できる論理構造、方法、手順、プログラム、ルーチン、処理、アルゴリズム、公式、または数式のことを示す。ファームウェアの例としては、マイクロコード、書き込み可能制御格納装置、マイクロプログラムされた構造、およびプロセッサ抽象化層が挙げられる。
【００１３】
背景技術で記載したように、情報処理システムは、１以上の暗号化鍵を用いて情報を暗号化、復号化する。これら鍵は、情報処理システム内の不揮発性記憶装置に格納される、もしくは、情報処理システムにアクセス可能な不揮発性記憶装置に格納されることにより、システムの電源停止の前後に該システムがこれら鍵を利用できることが望ましい。しかし、様々なシステムが互いに異なる鍵を利用する場合があり、これら様々なシステムに対して個々のコンポーネントを作製（フォトマスク技術を利用して）することは経済的に実現不可能と思われる。これら様々なシステムに固有の情報は、半導体ヒューズまたは電気プログラム技術を利用して格納することができるが、大きな鍵（例えば一対の２０４８ビットのＲＳＡ鍵）の格納は、システムあたりのコストをかなり上昇させることが懸念される。従って、情報処理システムが、１以上の固有の暗号化鍵を再生成する機能を有することが望ましいと思われる。本発明の実施形態は、この機能の提供に利用することができる。
【００１４】
図１は、本発明の一実施形態によるプロセッサ１００を示す。プロセッサ１００は、任意の種類のプロセッサであってよい。これには、インテル（登録商標）ペンティアム（登録商標）プロセッサファミリ、アイテニアム（登録商標）プロセッサファミリ、その他のインテル（登録商標）コーポレーションの他のプロセッサファミリ、または、他の会社の他のプロセッサを含む汎用マイクロプロセッサ、または、専用プロセッサまたはマイクロプロセッサであってよい。プロセッサ１００は、マルチスレッドおよびマルチ実行コアを任意の組み合わせで含んでよい。プロセッサ１００は、命令ロジック１１０、実行ロジック１２０、制御ロジック１３０、および記憶領域１４０を含む。プロセッサ１００は、さらに、図１に示されない任意の他の回路、構造、またはロジックを含んでもよい。
【００１５】
命令ロジック１１０は命令を受信する。これら命令の１以上は、任意の公知の暗号アルゴリズムにより情報を暗号化、復号化するのに利用される命令であっても、任意の公知の暗号アルゴリズムにより情報を暗号化、復号化するのに利用されうる命令列のうちの１つの命令であってもよい。命令ロジック１１０は、これら命令を認識、復号化、あるいは受信する任意の回路、ロジック、または他の構造を含むことができる。命令ロジック１１０は、さらに、本明細書には記載されない任意の他の命令を含むこともできる。一実施形態では、命令ロジック１１０は、命令を復号化する復号ロジックを含むことができる。
【００１６】
実行ロジック１２０は、命令ロジック１１０が情報を暗号化、復号化する１以上の命令を受信すると、暗号アルゴリズム、復号アルゴリズム、および／または、暗号アルゴリズムで用いられる任意の処理サブセットを実行する。実行ロジック１２０は、任意の数の演算ロジックユニット、シフタ、その他の構造等の暗号アルゴリズムを実行する任意の回路、ロジック、その他の構造を含んでよい。実行ロジック１２０の全体またはその一部は、単一の規格またはアルゴリズムによる暗号化に特化していてもよいが、その全体が、一部が、および／または、他のロジックと協働することにより、複数の規格またはアルゴリズムによる暗号をサポートしてもよく、および／または、これらアルゴリズムのいずれかによる復号をサポートしてもよく、および／または、他の処理に利用されてもよい。実行ロジック１２０はさらに、暗号アルゴリズムが利用するもの以外の命令を実行する任意の回路、ロジック、その他の構造を含んでもよい。
【００１７】
一実施形態では、実行ロジック１２０は、鍵生成ロジック１２２の全体またはその一部を含みうる。他の実施形態では、鍵生成ロジック１２２の全体またはその一部が、実行ロジック１２０の外部にある別個のロジックに組み込まれていてもよい。鍵生成ロジック１２２は、１以上の暗号化鍵を生成する任意の回路、ロジック、その他の構造を含んでもよい。図２および図３に、これと異なる鍵生成ロジック１２２の実施形態を示す。
【００１８】
制御ロジック１３０は、実行ロジック１２０に命令を実行させる、および／または、鍵生成ロジック１２２に１以上の暗号化鍵を生成させる。制御ロジック１３０は、マイクロコード、状態マシンロジック、プログラム可能なロジック、その他の任意の形式の制御ロジックを含む任意の回路、ロジック、その他の構造を含むことにより、命令ユニット１１０が受信する命令に基づいて実行ロジック１２０に制御信号を供給することができる。制御ロジック１３０は、さらに、プロセッサ１００内の任意の他の回路、ロジック、その他の構造に、実行ロジック１２０内ではその全てが実行されない任意の他の処理を行わせることもできる。例えば制御ロジック１３０は、以下で説明するように、プロセッサ１００に、本発明の実施形態で利用される、格納されている入力値および格納されているカウント値をフェッチさせてよい。格納されている入力値および格納されているカウント値は、プロセッサ１００内の、またはそれにアクセス可能な記憶領域に格納されてよく、または、そこからフェッチされてもよい。
【００１９】
例えば、一実施形態では、格納されている入力値および格納されているカウント値は、プロセッサ１００内の記憶領域１４０からフェッチされてよい。記憶領域１４０は、プロセッサ１００内の任意の種類のメモリまたは格納部材の記憶領域であってよい。一実施形態では、記憶領域１４０は不揮発性であってよい。例えば、記憶領域１４０は、半導体ヒューズ技術で実装されるプログラム可能な読み取り専用メモリであってよい。一実施形態では、記憶領域１４０は、例えば、命令ロジック１１０による暗号化、復号化、または鍵生成命令を受けた場合に、制御ロジック１３０が提供する制御信号に基づいて実行ロジック１２０および／または鍵生成ロジック１２２内のロジックからしかアクセスできない、というように、セキュリティ化、プライベート化、または保護がなされてよい。
【００２０】
図２は、本発明の一実施形態による鍵生成ロジック２００を示す。一実施形態では、図２の鍵生成ロジック２００は、図１の鍵生成ロジック１２２の全体または一部に、または、鍵生成ロジック１２２の全体または一部、および、制御ロジック１３０の全体または一部の組み合わせに対応している。一実施形態では、鍵生成ロジック２００は一対のＲＳＡ鍵を生成する。
【００２１】
鍵生成ロジック２００は、シード生成器２２０、疑似乱数生成器２３０、素数テスタ２４０、カウンタ２５０、および鍵生成器２６０を含みうる。鍵生成ロジック２００は、ハードウェア、ソフトウェア、およびファームウェアの任意の組み合わせで実装されうる。例えば、シード生成器２２０、疑似乱数生成器２３０、素数テスタ２４０、カウンタ２５０、および鍵生成器２６０の各々は、ハードウェア回路、ソフトウェアモジュール、任意のその他のハードウェア、ソフトウェア、またはファームウェア構造であってよい。
【００２２】
鍵生成ロジック２００は、真の乱数生成器２１０から、または任意の他のソースから入力値を受信してよい。真の乱数生成器２１０は、乱数を生成する任意の処理またはデバイスであってよい。しかし、本発明はこの点に限定されず、つまり、本発明の実施形態では、入力値が真の乱数である必要はない。真の乱数生成器２１０、または、鍵生成ロジック２００の入力値のその他の任意のソースは、鍵生成ロジック２００に組み込まれていても、それとは別個に設けられてもよい。一実施形態では、入力値は２５６ビット値であってよい。
【００２３】
シード生成器２２０は、疑似乱数生成器２３０のシード値を生成する。シード生成器２２０は、任意の決定性プロセスにより、単一の入力値から１以上のシード値を生成してよい。シード生成器２２０は、パディング等の任意の方法を利用して、入力値のビット数より大きい、シード値の全ビット数を生成してよい。
【００２４】
疑似乱数生成器２３０は、シード値を入力値として利用して疑似乱数列を生成する。疑似乱数生成器２３０の出力値の統計分布は、真の乱数生成器２１０等の真の乱数生成器の出力値の統計分布に近似していてよい。しかし、真の乱数生成器２１０とは異なり、疑似乱数生成器２３０は決定性プロセスを用いる。特定の入力が与えられた場合には、疑似乱数生成器２３０は常に同じ数列を生成する。疑似乱数生成器２３０は、ソフトウェアアルゴリズム、ハードウェアシフトレジスタ、または任意の他の方法で実装されうる。
【００２５】
素数テスタ２４０は、数が素数であるか否かを判断する。入力が与えられると、素数テスタ２４０は、それが素数であるか否かを所定の方法により判断する。カウンタ２５０は、イベントの周波数をカウントする。カウンタ２５０は、任意の他の方法によりインクリメント、ディクリメント、またはカウントを行ってもよい。一実施形態では、カウンタ２５０は１６ビットカウンタであってよい。
【００２６】
鍵生成器２６０は、１以上の暗号化鍵を生成する。鍵生成器２６０は、任意の方法で暗号化鍵を生成してよい。一実施形態では、鍵生成器２６０は一対のＲＳＡ鍵を生成する。
【００２７】
一実施形態では、鍵生成ロジック２００は、図３の方法３００に示される本発明の方法の実施形態により、１つの入力値から１以上の暗号化鍵を生成して、入力値と１以上のカウント値とを不揮発性メモリに格納してよい。
【００２８】
図３のボックス３１０では、真の乱数生成器２１０により乱数が生成される。ボックス３１２では、乱数を鍵生成ロジック２００への入力値として利用する。ボックス３１４では、乱数を不揮発性メモリに格納する。ボックス３１６では、シード生成器２２０は、２つのシード値（第１および第２）を乱数に基づいて生成する。
【００２９】
ボックス３２０でカウンタ２５０をクリアする。ボックス３２２で、ボックス３１６で生成された第１のシード値を、疑似乱数生成器（ＰＲＮＧ）２３０への入力として利用する。
【００３０】
ボックス３３０では、疑似乱数生成器２３０は、その入力値に基づいて疑似乱数（ＰＲＮ）を生成する。ボックス３３２では、素数テスタ２４０が、ボックス３３０で生成された疑似乱数が素数であるかをテストする。ボックス３３２で疑似乱数が素数であると判断された場合には、その疑似乱数を、ボックス３６０で鍵生成器２６０への第１の入力として利用して、カウンタ２５０からのカウント値を、ボックス３３４で第１のカウント値として不揮発性メモリに格納する。一方で、ボックス３３２で疑似乱数が素数ではないと判断された場合には、疑似乱数（またはその一部、または、それから導出した数）をボックス３３６で疑似乱数生成器２３０の入力へと戻し、ボックス３３８でカウンタ２５０をインクリメントさせ、方法３００はボックス３３０へ戻る。
【００３１】
ボックス３４０でカウンタ２５０をクリアする。ボックス３４２で、ボックス３１６の第２のシード値を、疑似乱数生成器２３０への入力として利用する。
【００３２】
ボックス３５０では、疑似乱数生成器２３０は、その入力値に基づいて疑似乱数を生成する。ボックス３５２では、素数テスタ２４０が、ボックス３５０で生成された疑似乱数が素数であるかをテストする。ボックス３５２で疑似乱数が素数であると判断された場合には、その疑似乱数を、ボックス３６２で鍵生成器２６０への第２の入力として利用して、カウンタ２５０からのカウント値を、ボックス３５４で不揮発性メモリに格納する。一方で、ボックス３５２で疑似乱数が素数ではないと判断された場合には、疑似乱数（またはその一部、または、それから導出した数）をボックス３５６で疑似乱数生成器２３０の入力へと戻し、ボックス３５８でカウンタ２５０をインクリメントさせ、方法３００はボックス３５０へ戻る。
【００３３】
ボックス３６０で、ボックス３３２で生成された素数の疑似乱数を鍵生成器２６０への第１の入力として利用する。ボックス３６２で、ボックス３５２で生成された素数の疑似乱数を鍵生成器２６０への第２の入力として利用する。ボックス３６４で、鍵生成器は、第１の入力を第１の素数として、および、第２の入力を第２の素数として利用して、一対のＲＳＡ鍵を生成する。
【００３４】
ボックス３７０で、入力値および第１および第２のカウント値を格納する不揮発性メモリを、別のシステム、または別のシステムのコンポーネント（プロセッサまたはチップセット）へコピーまたは転送してよい。従って、方法３００で入力値から生成された同じ一対のＲＳＡ鍵を、本発明の別の実施形態では別のシステムで再生成してもよい。この別のシステムでは、同じ一対のＲＳＡ鍵を、その後、格納されている入力値および格納されているカウント値から繰り返し再生成することで、該システムに同じ一対のＲＳＡ鍵を再利用させることができるので、一対のＲＳＡ鍵の２０４８ビットの情報を永続的に格納し続ける必要がなくなる。この代わりに、２５６ビットの１つの入力値および１６ビットの２つのカウント値を利用する一実施形態では、２８８ビットの情報のみを永続的に格納し続ける。
【００３５】
本発明の範囲においては、方法３００は、順序を変えて実行されてもよく、図示されたボックスを省いたり、ボックスを追加したりしてもよく、または、順序を変えること、ボックスを省くこと、またはボックスを追加することを組み合わせることで実行されてもよい。一例としては、カウント値を作成するシステムにおいては一対のＲＳＡ鍵を生成または利用する必要がない、またはそれが望ましくない場合がある、という理由から、ボックス３６０から３６４までを省くことができる。別の例においては、乱数およびカウント値を不揮発性メモリに格納および／またはコピーするボックス３１４、３３４、３５４、および３７４を組み合わせることで、単一の不揮発性メモリには一回だけ書き込みを行うようにすることもできる。
【００３６】
図４は、本発明の別の実施形態による鍵生成ロジック４００を示す。一実施形態では、図４の鍵生成ロジック４００は、図１の鍵生成ロジック１２２の全体または一部に、または、鍵生成ロジック１２２の全体または一部、および、制御ロジック１３０の全体または一部の組み合わせに対応している。一実施形態では、鍵生成ロジック４００は一対のＲＳＡ鍵を生成する。
【００３７】
鍵生成ロジック４００は、シード生成器４２０、疑似乱数生成器４３０、カウンタ４５０、および鍵生成器４６０を含みうる。鍵生成ロジック４００は、ハードウェア、ソフトウェア、およびファームウェアの任意の組み合わせで実装されうる。例えば、シード生成器４２０、疑似乱数生成器４３０、カウンタ４５０、および鍵生成器４６０の各々は、ハードウェア回路、ソフトウェアモジュール、任意のその他のハードウェア、ソフトウェア、またはファームウェア構造であってよい。
【００３８】
鍵生成ロジック４００は、不揮発性メモリから入力値と、第１および第２のカウント値とをフェッチあるいは受信することができる。例えば、鍵生成ロジックがプロセッサ１００内にある実施形態では、鍵生成ロジック４００は、記憶領域１４０から入力値およびカウント値をフェッチあるいは受信することができる。入力値およびカウント値は、本発明の別の実施形態では、図３の方法３００のように、不揮発性メモリに格納されていてよい。入力値は、真の乱数生成器が生成する乱数であってよいが、本発明の範囲においては、任意のソースからの任意の乱数、疑似乱数、非乱数が入力値として利用可能である。
【００３９】
シード生成器４２０は、疑似乱数生成器４３０のシード値を生成する。シード生成器４２０は、任意の決定性プロセスにより、単一の入力値から１以上のシード値を生成してよい。シード生成器４２０は、パディング等の任意の方法を利用して、入力値のビット数より大きい、シード値の全ビット数を生成してよい。
【００４０】
疑似乱数生成器４３０は、シード値を入力値として利用して疑似乱数列を生成する。疑似乱数生成器４３０の出力値の統計分布は、真の乱数生成器２１０等の真の乱数生成器の出力値の統計分布に近似していてよい。しかし、真の乱数生成器２１０とは異なり、疑似乱数生成器４３０は決定性プロセスを用いる。特定の入力が与えられた場合には、疑似乱数生成器４３０は常に同じ数列を生成する。疑似乱数生成器４３０は、ソフトウェアアルゴリズム、ハードウェアシフトレジスタ、または任意の他の方法で実装されうる。
【００４１】
カウンタ４５０は、イベントの周波数をカウントする。カウンタ４５０は、任意の他の方法によりインクリメント、ディクリメント、またはカウントを行ってもよい。
【００４２】
鍵生成器４６０は、１以上の暗号化鍵を生成する。鍵生成器４６０は、任意の方法で暗号化鍵を生成してよい。一実施形態では、鍵生成器４６０は一対のＲＳＡ鍵を生成する。
【００４３】
一実施形態では、鍵生成ロジック４００は、図５の方法５００に示される本発明の方法の実施形態により、格納されている１つの入力値、および、格納されている第１および第２のカウント値から１以上の暗号化鍵を生成してよい。図５の実施形態では、入力値及びカウント値は、シード生成器、疑似乱数生成器、カウンタ、および鍵生成器が両実施形態で同じ決定性アルゴリズムまたは設計を利用することにより両実施形態で任意の入力値に対して生成されるＲＳＡ鍵が同じになるよう、方法３００等の本発明の別の実施形態により作成および格納されていることもある。さらに、与えられたシード値に基づき素数を生成する目的から、疑似乱数生成器の出力を疑似乱数生成器の入力に戻すべき回数は、両実施形態で同じである。従って、図５の実施形態では、格納されているカウント値を、格納されている入力値とともに利用することにより、図３の実施形態で生成されたものに等しい素数が生成されることから、素数テストが不要である。
【００４４】
図５のボックス５１０では、不揮発性メモリから入力値をフェッチまたは受信する。ボックス５１２で、不揮発性メモリから第１のカウント値をフェッチまたは受信する。ボックス５１４で、不揮発性メモリから第２のカウント値をフェッチまたは受信する。ボックス５１６で、シード生成器４２０は、２つのシード値（第１および第２）を入力値に基づいて生成する。
【００４５】
ボックス５２０で、カウンタ４５０をクリアする。ボックス５２２で、ボックス５１６で生成された第１のシード値を、疑似乱数生成器４３０への入力として利用する。
【００４６】
ボックス５３０では、疑似乱数生成器４３０は、その入力値に基づいて疑似乱数を生成する。ボックス５３２では、カウンタ４５０のカウントを第１のカウント値と比較する。ボックス５３２で、カウンタ４５０のカウントが第１のカウント値と等しいと判断された場合には、ボックス５６０で疑似乱数生成器４３０の出力を鍵生成器４６０への第１の入力として利用する。一方、カウンタ４５０のカウントが第１のカウント値と等しくないと判断された場合には、ボックス５３６で疑似乱数生成器４３０の出力（またはその一部、またはそれから導出した数）を疑似乱数生成器４３０の入力へ戻し、ボックス５３８でカウンタ４５０をインクリメントさせ、方法５００はボックス５３０へ戻る。
【００４７】
ボックス５４０でカウンタ４５０をクリアする。ボックス５４２で、ボックス５１６の第２のシード値を、疑似乱数生成器４３０への入力として利用する。
【００４８】
ボックス５５０では、疑似乱数生成器４３０は、その入力値に基づいて疑似乱数を生成する。ボックス５５２では、カウンタ４５０のカウントを第２のカウント値と比較する。ボックス５５２で、カウンタ４５０のカウントが第２のカウント値と等しいと判断された場合には、ボックス５６２で疑似乱数生成器４３０の出力を鍵生成器４６０への第２の入力として利用する。一方、カウンタ４５０のカウントが第２のカウント値と等しくないと判断された場合には、ボックス５５６で疑似乱数生成器４３０の出力（またはその一部、またはそれから導出した数）を疑似乱数生成器４３０の入力へ戻し、ボックス５５８でカウンタ４５０をインクリメントさせ、方法５００はボックス５５０へ戻る。
【００４９】
ボックス５６０で、ボックス５３２で生成された素数の疑似乱数を鍵生成器４６０への第１の入力として利用する。ボックス５６２で、ボックス５５２で生成された素数の疑似乱数を鍵生成器４６０への第２の入力として利用する。ボックス５６４で、鍵生成器は、第１の入力を第１の素数として、および、第２の入力を第２の素数として利用して、一対のＲＳＡ鍵を生成する。
【００５０】
ボックス５７０で、ボックス５６４で生成された一対のＲＳＡ鍵の公開鍵を別のシステムへ送信してよい。ボックス５７２で、方法５００を実行しているシステムの電力を停止してよい。故に、ボックス５６４で生成された一対のＲＳＡ鍵を揮発性システムメモリから消去することができる。
【００５１】
ボックス５８０で、方法５００を実行しているシステムの電力を復帰させてよい。ボックス５８２で、他のシステムにより公開鍵を用いて暗号化された情報をシステム５００により受信してよい。そして、ボックス５８４で、ボックス５１０から５６４を繰り返して、ボックス５６４で生成されたものと同じ一対のＲＳＡ鍵を再生成してよい。ボックス５８６で、他のシステムにより公開鍵を用いて暗号化された情報を、秘密鍵を用いて復号化してよい。
【００５２】
本発明の範囲においては、方法５００は、順序を変えて実行されてもよく、図示されたボックスを省いたり、ボックスを追加したりしてもよく、または、順序を変えること、ボックスを省くこと、またはボックスを追加することを組み合わせることで実行されてもよい。一例としては、ボックス５１０から５１４を一処理として組み合わせる、または、方法５００内で別々に順序付けしなおして、入力値、および、第１および第２のカウント値を、一緒に、または、時を変えて別個に方法５００でフェッチまたは受信してよい。
【００５３】
図６は、本発明の一実施形態によるシステム６００を示す。システム６００は、鍵生成ロジック６１２を有するプロセッサ６１０を含み、プロセッサには、上述のように本発明の実施形態を実装するハードウェア、および／または、上述のように本発明を実施するソフトウェアおよび／またはファームウェアを実行する汎用ハードウェアが含まれてもよい。システム６００はさらに、上述したように、ロケーション６２２に入力値を、ロケーション６２４に第１のカウント値を、および、ロケーション６２６に第２のカウント値を格納している（またはこれから格納する）不揮発性記憶装置６２０を含んでもよい。不揮発性記憶装置６２０は、プロセッサ６１０により読み取り可能な任意の種類の不揮発性記憶装置であってもよいし、別のメモリコンポーネントであってもよいし、チップセット等の別の機能を有するコンポーネント内の記憶装置であってもよい。システム６００はさらに、システムメモリ６３０を含んでよく、これは、スタティックＲＡＭまたはダイナミックＲＡＭ、あるいは、プロセッサ６１０により読み取り可能な任意の他の種類の媒体であってもよいし、これら媒体の任意の組み合わせであってもよい。プロセッサ６１０、不揮発性記憶装置６２０、およびシステムメモリ６３０は、任意の方法で（例えば、１以上のバスを介して直接的にまたは間接的に、ポイントツーポイントで、または、他の有線または無線接続により）システム６００内で互いに連結され、通信してよい。
【００５４】
上述した本発明の実施形態あるいはその一部は、任意の形式の機械可読媒体に格納することができる。例えば、方法３００および／または５００の全てまたは一部が、プロセッサ１００および／またはプロセッサ６１０により読み取り可能な媒体に格納されているソフトウェアまたはファームウェア命令として具現化されてよく、これら命令はプロセッサ１００および／またはプロセッサ６１０により実行されると、プロセッサ１００および／またはプロセッサ６１０に、本発明の実施形態を実行させてよい。
【００５５】
以上のように、格納されている入力値および格納されているカウント値を利用する暗号化鍵生成に関する発明の実施形態を記載した。特定の実施形態を説明し添付図面に示したが、これら実施形態は例示のみを目的としたものであり、広義の発明を限定する意味はなく、本発明を図示し、説明した特定の構成および配置に制限する目的はない、というのも、本開示を読めば当業者であれば多くの他の変形例について想到するからである。本技術分野における進歩は目覚しく、今後の進歩は容易に予測できないので、開示された実施形態の構成及び詳細は、本会時の原理または添付請求項の範囲から逸脱しない範囲において、技術進歩により変形例の想到が容易である可能性があることを留意されたい。
【図１】
2011010277.tif 000003
【図２】
2011010277.tif 000004
【図３】
2011010277.tif 000005
【図４】
2011010277.tif 000006
【図５】
2011010277.tif 000007
【図６】
2011010277.tif 000008
【手続補正書】
【提出日】平成22年6月2日(2010.6.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力値と第１のカウント値とを格納する不揮発性記憶装置と、
格納されている前記入力値と格納されている前記第１のカウント値とに基づいて、暗号化鍵を生成するロジックとを備えるプロセッサ。
【請求項２】
前記入力値は乱数である請求項１に記載のプロセッサ。
【請求項３】
前記不揮発性記憶装置はさらに第２のカウント値を格納する請求項２に記載のプロセッサ。
【請求項４】
前記ロジックは、格納されている前記入力値と、格納されている前記第１のカウント値と、格納されている前記第２のカウント値とに基づいて、一対のＲＳＡ鍵を生成する請求項３に記載のプロセッサ。
【請求項５】
前記ロジックは、格納されている前記入力値に基づいて疑似乱数生成器にシード値を与えて、格納されている前記第１のカウント値に基づいて第１の疑似乱数列を反復生成して、格納されている前記第２のカウント値に基づいて第２の疑似乱数列を反復生成して、前記疑似乱数生成器の第１の出力および第２の出力を用いて一対のＲＳＡ鍵を生成する請求項４に記載のプロセッサ。
【請求項６】
入力値と第１のカウント値とを格納する不揮発性記憶装置と、
格納されている前記入力値と格納されている前記第１のカウント値とに基づいて、暗号化鍵を生成するプロセッサとを備えるシステム。
【請求項７】
入力値を生成する段階と、
前記入力値に基づいて疑似乱数生成器にシード値を与える段階と、
前記疑似乱数生成器の出力値が素数であるか否かを判断する段階と、
前記疑似乱数生成器の前記出力が素数であるか否かの前記判断に基づいて、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の入力に戻す段階と、
前記疑似乱数生成器の前記出力が前記疑似乱数生成器の前記入力に戻された回数をカウントする段階と、
不揮発性メモリに、前記入力値と、前記疑似乱数生成器の前記出力が前記疑似乱数生成器の前記入力に戻された回数とを格納する段階とを備える方法。
【請求項８】
前記入力値を生成する段階は、真の乱数生成器により行われる請求項７に記載の方法。
【請求項９】
不揮発性メモリから、入力値と第１のカウント値とを読み出す段階と、
前記入力値に基づいて疑似乱数生成器にシード値を与える段階と、
前記第１のカウント値が示す回数分、前記疑似乱数生成器の出力を前記疑似乱数生成器の入力に戻す段階と、
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階とを備える方法。
【請求項１０】
前記不揮発性メモリから第２のカウント値を読み出す段階をさらに備える請求項９に記載の方法。
【請求項１１】
前記入力値に基づいて疑似乱数生成器にシード値を与える段階は、
前記入力値から、第１のシード値と第２のシード値とを生成する段階を有する請求項１０に記載の方法。
【請求項１２】
疑似乱数生成器にシード値を与える段階は、
前記疑似乱数生成器に前記第１のシード値を与え、前記疑似乱数生成器に前記第２のシード値を与える段階を有する請求項１１に記載の方法。
【請求項１３】
前記第１のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階は、
前記疑似乱数生成器に前記第１のシード値を与えた後に、前記第１のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階を有する請求項１２に記載の方法。
【請求項１４】
前記疑似乱数生成器に前記第２のシード値を与えた後に、前記第２のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階をさらに備える請求項１３に記載の方法。
【請求項１５】
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階は、
前記疑似乱数生成器に前記第１のシード値を与えた後に、前記第１のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階の後に、前記疑似乱数生成器の第１の出力値を利用する段階を有する請求項１４に記載の方法。
【請求項１６】
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階は、
前記疑似乱数生成器に前記第２のシード値を与えた後に、前記第２のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻す段階の後に、前記疑似乱数生成器の第２の出力値を利用する段階を有する請求項１５に記載の方法。
【請求項１７】
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階は、
一対のＲＳＡ鍵生成アルゴリズムにおいて、前記第１の出力値を第１の素数として利用して、前記第２の出力値を第２の素数として利用する段階を有する請求項１６に記載の方法。
【請求項１８】
コンピュータに、
不揮発性メモリから、入力値と第１のカウント値とを読み出す段階と、
前記入力値に基づいて疑似乱数生成器にシード値を与える段階と、
前記第１のカウント値が示す回数分、前記疑似乱数生成器の出力を前記疑似乱数生成器の入力に戻す段階と、
前記疑似乱数生成器の出力値に基づいて暗号化鍵を生成する段階とを行わせるプログラム。
【請求項１９】
暗号化鍵を生成する段階は、
前記疑似乱数生成器に前記入力値に基づく第１のシード値を与えた後に、前記第１のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻した後に、前記疑似乱数生成器の第１の出力値を第１の素数として利用して、且つ、前記疑似乱数生成器に前記入力値に基づく第２のシード値を与えた後に読み出された第２のカウント値が示す回数分、前記疑似乱数生成器の前記出力を前記疑似乱数生成器の前記入力に戻した後に、前記疑似乱数生成器の第２の出力値を第２の素数として利用することにより、一対のＲＳＡ鍵を生成する段階を有する請求項１８に記載のプログラム。
【外国語明細書】
2011010277.tif 000009
2011010277.tif 000010
2011010277.tif 000011
2011010277.tif 000012
2011010277.tif 000013
2011010277.tif 000014
2011010277.tif 000015
2011010277.tif 000016
2011010277.tif 000017
2011010277.tif 000018
2011010277.tif 000019
2011010277.tif 000020
2011010277.tif 000021
2011010277.tif 000022
2011010277.tif 000023
2011010277.tif 000024
2011010277.tif 000025
2011010277.tif 000026
2011010277.tif 000027
2011010277.tif 000028
2011010277.tif 000029
2011010277.tif 000030