【事件の表示】
　特願２０１０−５０６４８０「擬似乱数生成器のための初期シード管理」拒絶査定不服審判事件〔平成２０年１０月３０日国際公開、ＷＯ２００８／１３１４４４、平成２２年　７月２２日国内公表、特表２０１０−５２５４１７〕について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
１．手続の経緯
　本願は、２００８月４月２３日を国際出願日（優先権主張２００７年４月２３日；米国）とする出願であって、出願後の手続の経緯の概略は次のとおりである。
　
拒絶理由の通知　　　　（起案日）平成２４年６月７日
意見、手続補正　　　　（提出日）平成２４年１２月１２日
拒絶査定　　　　　　　（起案日）平成２５年１月４日
同謄本送達　　　　　　（送達日）平成２５年１月８日
審判請求　　　　　　　（提出日）平成２５年５月８日
手続補正　　　　　　　（提出日）平成２５年５月８日
前置報告　　　　　　　（作成日）平成２５年５月３１日
審尋　　　　　　　　　（起案日）平成２５年１１月５日
　
２．本願発明
　本願の請求項１に係る発明は、平成２５年５月８日付けの手続補正書により補正された特許請求の範囲の請求項１に記載されたとおりの次の事項により特定されるものである。（以下「本願発明」という。）
　
「【請求項１】
　擬似乱数生成器を動作させるための方法であって、
　前記擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化することと、
　前記記憶された原始シードを一度使用された後に破棄することと、
　エントロピーの１つまたは複数の予測不可能なソースから新たなシードを取得することと、
　前記擬似乱数生成器の前記内部状態を前記新たなシードで予測不可能な状態に変更することと、
　前記擬似乱数生成器の前記変更された内部状態に基づいて擬似ランダム出力を生成することと、
　前記擬似ランダム出力を前記擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶することと、
　前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すことと、
　信頼できるソースから時間値を取得することと、
　前記時間値と初期化シードを組み合わせて、変更された初期化シードを取得することと、
　前記シードファイルの前記コンテンツを前記擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えることと、
　を備え、
　前記時間値と初期化シードが、前記時間値が前記変更された初期化シードの範囲全体に分散されるように組み合わされ、
　前記擬似ランダム出力をシードファイル中に記憶することは、前記擬似ランダム出力をセキュアなファイルシステム内のプライマリシードファイルに記憶すること、および前記擬似ランダム出力を前記セキュアなファイルシステム内のシャドーシードファイルに記憶することを含み、前記プライマリシードファイルの完全性（ｉｎｔｅｇｒｉｔｙ）が前記擬似乱数生成器の再始動時に損なわれていたか否かを決定することにより、前記プライマリシードファイルの完全性が首尾よく検証されるなら、前記プライマリシードファイルの初期化シードで前記擬似乱数生成器を初期化することにより記憶し、および前記プライマリシードファイルの完全性検査が失敗した場合、前記擬似乱数生成器の始動内部状態を前記シャドーシードファイルの初期化シードで初期化することにより記憶する、
　方法。」
　
３．引用文献
３．１　原審の拒絶の理由で引用された本願の優先権主張日前に頒布または電気通信回線を通じて公衆に利用可能となった文献である国際公開第２００７／０３７８６９号（ 以下、「引用文献１」という。）には、図面とともに次の記載がある。（日本語は、パテントファミリーである特表２００９−５０６４３８号公報の対応部分を掲げた。） 
ア．「SUMMARY
[0012] 
A method
for operating a 
pseudo-random number generator
(1) obtaining one or more unpredictable sources of entropy to provide a seed, (2) accumulating entropy in an internal state of the number generator by modifying the internal state as a function of a current internal state of the number generator and the seed, and (3) generating a pseudo-random number based on the modified internal state of the number generator
[0013] 
An initialization seed may be stored upon shutdown of the number generator, wherein the initialization seed is a pseudo-random number generated by the number generator
A startup internal state of the number generator can then be initialized with the stored initialization seed upon startup of the number generator. The initialization seed is stored in a secure file system.
Prior to initialization of the startup internal state 
 a determination is made as to whether the integrity of the initialization seed has been compromised.
・・・（中略）・・・
[0015] 
The number generator may be continuously reseeded from the one or more unpredictable sources 
The unpredictable sources include physical sources having quantifiable information.
[0016] The modified internal state of the number generator may be obtained by (1) loading the seed into one or more state registers of the number generator by exclusive-OR operations with a current content of the one or more state registers, (2) feeding the bit-shifted content of a plurality of the state registers to a non-linear function to obtain a result, (3) performing an exclusive-OR operation between the result and one of the one or more state registers to obtain a feedback number, and (4) modifying the one or more state registers by shifting the content from a first state register to a second state register and loading a third state register with the feedback number.
・・・（中略）・・・
[0018] An additional feature maintains an interval counter that changes each time a pseudo-random number is generated. The number generator is reseeded from the one or more unpredictable sources to change the internal state of the number generator only at an interval defined by the interval counter. The number generator may be reseeded with a system time at the interval defined by the interval counter. The seed may be at least one hundred twenty-eight bits long and the internal state of the number generator is eighteen word-size registers.
[0019] Another embodiment provides a cryptographically secure number generator comprising: (1) a seed loader 
configured to obtain one or more unpredictable sources of seed information to provide a seed,
 reseeds the state registers
the seed to modify the internal state of the number generator and accumulate entropy
The pseudo-random number generator may be further configured to (1) generate an initialization seed upon shutdown of the number generator,
may be further configured to continuously modify the plurality of state registers with additional seeds obtained from the one or more unpredictable sources
ア．の公表公報の対応部分；「【発明の概要】
【００１２】
　安全な
擬似乱数生成器を操作する方法
（１）エントロピーの１つ以上の予測不可能な源を得て、シードを与えることと、（２）数生成器の現在の内部状態とシードとの関数として内部状態を修正することによって、数生成器の内部状態においてエントロピーを蓄積することと
（３）数生成器の修正された内部状態に基づいて、擬似乱数を生成すること
【００１３】
　
初期化シードは、数生成器のシャットダウン時に記憶され得る。初期化シードは、数生成器によって生成された擬似乱数である。次に、数生成器のスタートアップの内部状態は、数生成器のスタートアップ時に、記憶されている初期化シードを用いて初期化することができる。初期化シードは、セキュア　ファイル　システム（ｓｅｃｕｒｅ　ｆｉｌｅ　ｓｙｓｔｅｍ）に記憶されている
スタートアップの内部状態の初期化前に、初期化シードの完全性が損なわれているかどうかについて判断される
・・・（中略）・・・
【００１５】
　
数生成器は、１つ以上の予測不可能な源から連続的に再びシードを与えられ
予測不可能な源は、量子化可能な情報をもつ物理的な源を含む
【００１６】
　数生成器の修正された内部状態は、（１）１つ以上の状態レジスタの現在の内容との排他的論理和演算によって、数生成器の１つ以上の状態レジスタにシードをロードすることと、（２）複数の状態レジスタのビットシフトされた内容を非線形関数に供給し、結果を得ることと、（３）結果と１つ以上の状態レジスタの１つとの間で排他的論理和演算を行って、フィードバックの数を得ることと、（４）第１の状態レジスタから第２の状態レジスタへ内容をシフトし、第３のレジスタにフィードバックの数をロードすることによって１つ以上の状態レジスタを修正することとによって得ることができる。
・・・（中略）・・・
【００１８】
　追加の特徴は、擬似乱数が生成されるたびに変更する間隔カウンタ（ｉｎｔｅｒｖａｌ　ｃｏｕｎｔｅｒ）を維持する。数生成器は、１つ以上の予測不可能な源から再びシードを与えられ、間隔カウンタによって定義された間隔においてのみ、数生成器の内部状態を変更する。数生成器は、システム時間を用いて、間隔カウンタによって定義された間隔で再びシードを与えられ得る。シードは、少なくとも１２８ビット長であり、数生成器の内部状態は、１８ワードサイズのレジスタである。
【００１９】
　別の実施形態は、暗号的に安全な数生成器であって、（１）
シード情報の１つ以上の予測不可能な源を得て、シードを与えるように構成され
状態レジスタに再びシードを与え、数生成器の内部状態を修正し、エントロピーを蓄積し、
擬似乱数生成器は、（１）数生成器のシャットダウン時に初期化シードを生成し
１つ以上の予測不可能な源から得た追加のシードを用いて、複数の状態レジスタを連続的に修正するようにさらに構成され
　
イ．「[0048] Figure 2 illustrates how a pseudo-random number generator 202 may be represented as separate functions according to one implementation. A seed function SEED( ) 204 uses one or more unpredictable source 206 as the seed to configure the generator 202. In particular, one or more unpredictable sources 206 may include one or more different physical sources from which the seed is generated. In some implementations, the information from each unpredictable source 206 may be quantified into separate seeds that are sequentially fed to the seed function SEED( ) 204. In other implementations,
 the information from two or more of the unpredictable sources 206 may be quantified and combined 
into a single seed that is fed to the seed function SEED( ) 204 as a parameter. Each time the seed function SEED( ) is invoked with a seed as a parameter, the internal state of the number generator 202 is updated (i.e., reseeded) 
[0049] A pseudo-random sequence generation function RAND( ) 208 uses the internal state of the number generator 202 to obtain a pseudo-random output 210. The generated pseudo-random number (output) 210 may be used as nonces, initialization vectors, etc.
 ・・・（中略）・・・
[0052] Figure 3 is a block diagram illustrating one example of a seed function 204. 
A state register initializer 302 (NLS_INITSTATE) initializes the state registers of a number generator when the number generator is first started. For example, Fibonacci numbers are used to initialize state registers r[0] to r[16]. A Konst register is also initialized to a randomly chosen number (e.g., 0x6996c53a)
[0053] Figure 4 is a block diagram illustrating one example of a state register initializer 302 used by a seeding function 204. When a number generator is first started, its state registers are initialized. The state register initializer 302 may 
include a Fibonacci Number Table 402 with which the number generator state registers r[0] ... r[ 16] are initialized.
[0054] Figure 5 is a block diagram illustrating functions performed by a seed loader 304 that may be used to seed and/or reseed a number generator according to one example. The seed loader 304 may include a non-linear mechanism that ensures every bit of seed input affects every bit of the resulting state registers. 
・・・（中略）・・・
[0058] Figure 6 illustrates a method for executing a seed function modified from NLS key scheduling. A seed is obtained based on one or more unpredictable sources 602 and passed to the seed function as a parameter. A seed is defined as a byte string, of any length, that contains some entropy but is not required to be perfectly random. For example, sources for generating seeds may be obtained by quantifying measurements from physical sources, such as processor temperature, communication link errors, detected frequency peaks within a channel, etc.
[0059] When the seed function is invoked, a state_initialized flag is checked 604 to determine if the generator state registers have been initialized. A conventional stream cipher NLS algorithm resets or clears the state registers upon reseeding, thereby failing to accumulate entropy. By contrast, the present modified algorithm accumulates entropy by combining new seeds with current state register (e.g., without clearing the state registers). 
If it is the first time the seed function has been invoked after the generator is started, the internal state registers are initialized 
[0060] The seed is passed to the NLS_LOADKEY function where a new state for the number generator is obtained as a function of the current state and the seed 610. For example, the seed and its length are loaded into state registers using XORs so that the new state is a function of both current state and the seed. Consequently, it is not feasible to use the knowledge of a current seed to deduce the previous, current, or next state of the generator. The system continually adds entropy from new, unpredictable seeds, to the number generator. Additionally, the seed function may be invoked by applications calling the number generator. In this sense, an application calls the seed function to contribute entropy for randomness and changes the generator state in an unpredictable way. As a result, reseeding with the same input seeds leads to different outputs at different times. This is distinguishable from a general PRNG, which produces the same output sequence whenever the same seed is used. The value of Konst is then updated based on the current generator state 612. For example, a NLS_GENKONST function may be invoked to obtain the new Konst from the evolving generator state. Konst may be used to mask the output as illustrated previously. The output buffer is flushed 514 to hold new pseudo-random bits for generating the next seed. 
・・・（中略）・・・ 
[0064] Depending on the nature of physical sources, the seeding procedure during power-up may be quite time consuming. One improvement is to use a Secure File System (SFS) to store a seed file right before power shutdown. Figure 7 illustrates a method for storing a seed in a secure file system associated with a pseudo-random number generator. A secure file system makes use of cryptographic primitives to protect confidentiality and integrity of file contents. If a secure file system is available 702, before a device is turned off, the system calls RAND( ) to generate a string of 128 bits as a seed 704. The seed is stored in the SFS as a file 706.
[0065] Figure 8 illustrates a method for using a seed stored in a seed file to initialize a pseudo-random number generator upon startup. For example, a CSPRNG in a CDMA mobile phone may be initialized using this seed file upon startup. 
Upon power up initialization of a device 802, the system determines if a secure file system is available 804. If the SFS is available during power-up, the seed file is decrypted with integrity verification 806. If successful 808, the content is restored from the seed file 810 and used to seed the SEED() function 812. The seed file is removed from SFS once its content has been extracted. When the normal power-down procedure is compromised, such arrangement prevents the same seed from being used for the next time that the phone powers up. If either an SFS is unavailable or the seed file fails the integrity test, an unpredictable source is used to provide 128 bits (for example) as the first seed 814.
add its own entropy
The seed
has to include 
new entropy
the system time
[0067]・・・（中略）・・・, the number generator 
is reseeded using the SEED( ) function taking system time
　
イ．の公表公報の対応部分；「【００３８】（［００４８］；［］内は国際公開の対応する段落番号を示す。）
　図２は、１つの実施にしたがって、擬似乱数生成器２０２が別々の関数としてどのように表わされ得るかを示している。シード関数ＳＥＥＤ（　）２０４は１つ以上の予測不可能な源２０６をシードとして使用し、生成器２０２を構成する。具体的には、１つ以上の予測不可能な源２０６は、シードを生成する１つ以上の異なる物理的な源を含み得る。幾つかの実施において、各予測不可能な源２０６からの情報は、別々のシードに量子化され、別々のシードは、シード関数ＳＥＥＤ（　）２０４に順次に供給される。他の実施において、
予測不可能な源２０６の２つ以上からの情報は量子化され、１つのシードに結合され
その１つのシードがシード関数ＳＥＥＤ（　）２０４にパラメータとして供給される。シード関数ＳＥＥＤ（　）２０４が、パラメータとして“シード”により呼び出される（ｉｎｖｏｋｅ）されるたびに、数生成器２０２の内部状態は、
更新される（すなわち、“再びシードを与えられる（ｒｅｓｅｅｄｅｄ）”）
【００３９】（［００４９］）
　擬似ランダム列生成関数ＲＡＮＤ（　）２０８は、数生成器２０２の内部状態を使用し、擬似ランダム出力２１０を得る。生成された擬似乱数（出力）２１０は、ナンス、初期化ベクトル、等として使用され得る。
・・・（中略）・・・
【００４２】（［００５２］）
　図３は、シード関数２０４の一例を示すブロック図である。
数生成器が最初に始動されるとき、状態レジスタイニシャライザ３０２（ＮＬＳ＿ＩＮＩＴＳＴＡＴＥ）は、数生成器の状態レジスタを初期化する。例えば、フィボナッチ数は、状態レジスタｒ〔０〕ないしｒ〔１６〕を初期化するのに使用される。コンスト（Ｋｏｎｓｔ）レジスタもランダムに選択された数（例えば、０ｘ６９９６ｃ５３ａ）に初期化される
【数２】
（“○＋○”によって示される論理的ＸＯＲ演算）
　を使用して、シード３００を状態レジスタ（ｒ〔０〕ないしｒ〔１６〕）へ１ワードずつロードする。シード３００の長さも、ワードとしてロードされ得る。シードローダ３０４は、さらに、非線形フィードバックモードにおいて状態レジスタ（（ｒ〔０〕ないしｒ〔１６〕）を同時にシフトし、シード３００が任意の長さをもつことを可能にする。第３に、コンスト（Ｋｏｎｓｔ）生成器３０６（Ｋｏｎｓｔ　ｇｅｎｅｒａｔｏｒ，　ＧＥＮＫＯＮＳＴ）は、現在の生成器の状態と現在のコンスト値とに基づいて、新しいコンスト値でコンストレジスタを更新する。このコンスト値は、擬似乱数の出力２１０中に定数として使用される。
【００４４】（［００５３］）
　図４は、シーディング関数２０４によって使用される状態レジスタイニシャライザ３０２の一例を示すブロック図である。数生成器が最初に始動されると、その状態レジスタが初期化される。状態レジスタイニシャライザ３０２は、
数生成器の状態レジスタｒ〔０〕．．．ｒ〔１６〕を初期化するフィボナッチ数テーブル４０２を含み得る
【００４５】（［００５４］）
　図５は、一例にしたがって数生成器にシードを与える（seed）、および／または再びシードを与える(reseed)のに使用され得るシードローダ304によって行われる関数を説明するブロック図である。シードローダ304は、シード入力の全ビットが結果の状態レジスタの全ビットに確実に影響を与えるようにする非線形機構を含み得る。
・・・（中略）・・・
【００４９】（［００５８］）
　図６は、ＮＬＳ鍵スケジューリングから修正されたシード関数を実行する方法を示している。シードは、１つ以上の予測不可能な源に基づいて得られ（６０２）、パラメータとしてシード関数に渡される。シードは、幾つかのエントロピーを含むが、完全にランダムである必要のない、任意の長さをもつバイトストリングとして定義される。例えば、シードを生成する源は、プロセッサの温度、通信リンクエラー、チャネル内における検出された周波数ピーク、等のような物理的な源からの測定値を量子化することによって得ることができる。
【００５０】（［００５９］）
　シード関数が呼び出されると、ｓｔａｔｅ＿ｉｎｉｔｉａｌｉｚｅｄフラグがチェックされ（６０４）、生成器の状態レジスタが初期化されたかどうかを判断する。従来のストリーム暗号ＮＬＳアルゴリズムは、再シーディング時に状態レジスタをリセットまたはクリアし、それによって、エントロピーを蓄積しない。対照的に、現在の修正されたアルゴリズムは、（例えば、状態レジスタをクリアせずに）現在の状態レジスタと新しいシードを結合することによって、エントロピーを蓄積する。
生成器が始動した後で、シード関数が始めて呼び出されると、内部状態レジスタ
は初期化され
【００５１】（［００６０］）
　数生成器の新しい状態が現在の状態とシードとの関数として得られると、シードはＮＬＳ＿ＬＯＡＤＫＥＹ関数に渡される（６１０）。例えば、シードおよびその長さは、ＸＯＲを使用して、状態レジスタにロードされ、新しい状態は、現在の状態とシードとの両者の関数になる。したがって、現在のシードの知識を使用して、生成器の前の状態、現在の状態、または次の状態を推定するのは、実現不可能である。システムは、新しい予測不可能なシードからのエントロピーを数生成器に加え続ける。さらに、シード関数は、数生成器を呼び出すアプリケーションによって呼び出され（ｉｎｖｏｋｅ）され得る。この意味で、アプリケーションは、シード関数を呼び出して（ｃａｌｌ）、ランダム性のためにエントリピーを与え、予測不可能なやり方で生成器状態を変更する。その結果、同じ入力シードを用いた再シーディングは、異なる時間において、異なる出力をもたらす。このことは、同じシードが使用されるときは必ず同じ出力列を生成する一般的なＰＲＮＧと区別できる。次に、現在の生成器の状態に基づいて、コンスト（Ｋｏｎｓｔ）値が更新される（６１２）。例えば、ＮＬＳ＿ＧＥＮＫＯＮＳＴ関数を呼び出して、漸進的に変化する（ｅｖｏｌｖｉｎｇ）生成器の状態から新しいコンスト（Ｋｏｎｓｔ）を得ることができる。コンストは、既に説明したように、出力にマスクするのに使用され得る。出力緩衝器は、フラッシュされ（６１４）、次のシードを生成するために新しい擬似ランダムビットを保持する。
・・・（中略）・・・
【００５５】（［００６４］）
　物理的な源の性質に応じて、パワーアップ中のシーディング手続きは、相当に時間がかかり得る。１つの改良では、セキュア　ファイル　システム（Ｓｅｃｕｒｅ　Ｆｉｌｅ　Ｓｙｓｔｅｍ，　ＳＦＳ）を使用し、パワー　シャットダウン前に、シードファイルの権利（ｓｅｅｄ　ｆｉｌｅ　ｒｉｇｈｔ）を記憶する。図７は、擬似乱数生成器に関連付けられたセキュア　ファイル　システムにシードを記憶する方法を示している。セキュア　ファイル　システムは、暗号プリミティブを使用し、ファイル内容の機密性および完全性を保護する。デバイスがオフにされる前に、セキュア　ファイル　システムが利用可能であるとき（７０２）、システムはＲＡＮＤ（　）を呼び出し、１２８ビットのストリングをシードとして生成する（７０４）。シードは、ＳＦＳにファイルとして記憶される（７０６）。
【００５６】（［００６５］）
　図８は、スタートアップ時に、シードファイルに記憶されたシードを使用して、擬似乱数生成器を初期化する方法を示している。例えば、ＣＤＭＡ移動電話におけるＣＳＰＲＮＧは、
スタートアップ時に、このシードファイルを使用して初期化され得る。デバイスの初期化をパワーアップするとき（８０２）、システムは、セキュア　ファイル　システムが利用可能であるかどうかを判断する（８０４）。ＳＦＳがパワーアップ中に利用可能であるとき、シードファイルは完全性検証のために解読される（８０６）。成功すると（８０８）、内容はシードファイルから回復され（８１０）、ＳＥＥＤ（　）関数にシードを与えるのに使用される（８１２）。シードファイルは、その内容が抽出されると、ＳＦＳから取り去られる。正常なパワーダウン手続きが損なわれると、このような構成は、同じシードが、次に電話がパワーアップするときに使用されるのを防ぐ。ＳＦＳが利用可能でないか、またはシードファイルが完全性の試験に失敗すると、予測不可能な源を使用し、（例えば）１２８ビットを第１のシードとして与える（８１４）
【００５７】（［００６６］）
　１つの特徴によると、アプリケーションは、ＳＥＥＤ（　）関数を使用することによって、それ
自身のエントロピーを加える
シードは、
新しいエントロピーを含まなければならない
システム時間
【００５８】（［００６７］）
・・・（中略）・・・
数生成器は、
system timeを入力源として用いるＳＥＥＤ（ ）関数を使用して、再びシードを与えられる
　
ウ．「[0071]・・・（中略）・・・
The processor 
may be further configured to (1) store an initialization seed upon shutdown of the number generator, wherein the initialization seed is a pseudo-random number generated by the number generator, (2) determine whether the integrity of the initialization seed has been compromised prior to initializing a startup internal state of the number generator, and (3) reseed the startup internal state of the number generator with: (a) an alternative unpredictable source if the integrity of the stored initialization seed has been compromised, and (b) the stored initialization seed otherwise.
ウ．の公表公報の対応部分；「【００６２】（［００７１］）
・・・（中略）・・・　
プロセッサは、
（１）数生成器によって生成された擬似乱数である初期化シードを、数生成器のシャットダウン時に記憶し、（２）数生成器のスタートアップ時の内部状態を初期化する前に、初期化シードの完全性が損なわれているかどうかを判断し、（３）（ａ）記憶されている初期化シードの完全性が損なわれているときは、別の予測不可能な源を用いて、（ｂ）そうでなければ、記憶されている初期化シードを用いて、数生成器のスタートアップの内部状態に再びシードを与えるようにさらに構成され得る
　
引用文献１に記載された事項を検討する。
（ア）ア．の「擬似乱数生成器を操作する方法」、「数生成器の修正された内部状態に基づいて、擬似乱数を生成することとを含む」との記載から、「数生成器の内部状態に基づいて擬似乱数を生成する擬似乱数生成器を操作する方法」をよみとることができる。
　
（イ）イ．の段落［００５２］の「数生成器が最初に始動されるとき、状態レジスタイニシャライザ３０２（ＮＬＳ＿ＩＮＩＴＳＴＡＴＥ）は、数生成器の状態レジスタを初期化する。例えば、フィボナッチ数は、状態レジスタｒ〔０〕ないしｒ〔１６〕を初期化するのに使用される。コンスト（Ｋｏｎｓｔ）レジスタもランダムに選択された数（例えば、０ｘ６９９６ｃ５３ａ）に初期化される」との記載、段落［００５２］の予め記憶されていることが通常である「フィボナッチ数テーブル」や前記「コンストレジスタ」との記載、段落［００５９］の「生成器が始動した後で、シード関数が始めて呼び出されると、内部状態レジスタ」「は初期化され」るとの記載から、「生成器が始動した後でシード関数が始めて呼び出されると、予め記憶されているコンストレジスタとフィボナッチ数テーブルを用いて内部状態レジスタを初期化すること」をよみとることができる。
　
（ウ）ア．の「（１）エントロピーの１つ以上の予測不可能な源を得て、シードを与えること」、「（２）数生成器の現在の内部状態とシードとの関数として内部状態を修正することによって、数生成器の内部状態においてエントロピーを蓄積すること」、「（３）数生成器の修正された内部状態に基づいて、擬似乱数を生成することとを含む」との記載、「状態レジスタに再びシードを与え、数生成器の内部状態を修正し、エントロピーを蓄積し」との記載から、「エントロピーの１つまたは複数の予測不可能なソースから新たなシードを取得すること」をよみとることができる。
　
（エ）さらに、前記（ウ）で言及した記載から「数生成器の現在の内部状態と前記新たなシードとの関数として内部状態を修正することによって、前記数生成器の内部状態においてエントロピーを蓄積すること」をよみとることができる。
　
（オ）さらに前記（ウ）で言及した「（３）数生成器の修正された内部状態に基づいて、擬似乱数を生成すること」との記載から「数生成器の修正された内部状態に基づいて、擬似乱数を生成すること」は明らかである。
　
（カ）ア．の「初期化シードは、数生成器のシャットダウン時に記憶され得る。初期化シードは、数生成器によって生成された擬似乱数である。次に数生成器のスタートアップの内部状態は、数生成器のスタートアップ時に、記憶されている初期化シードを用いて初期化することができる。初期化シードは、セキュア　ファイル　システム（ｓｅｃｕｒｅ　ｆｉｌｅ　ｓｙｓｔｅｍ）に記憶されている」との記載、イ．の「スタートアップ時に、シードファイルに記憶されたシードを使用して、擬似乱数生成器を初期化する」との記載から、「前記擬似ランダム出力を前記擬似乱数生成器のシャットダウン後の、後続の始動内部状態用の初期化シードとしてシードファイル中に記憶すること」をよみとることができる。
　
（キ）前記（カ）の言及において、「数生成器のスタートアップ時に、記憶されている初期化シードを用いて初期化することができる」ことから、「前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すこと」ができることは明らかである。
　
（ク）ア．の「予測不可能な源（ソース；当審注）は、量子化可能な情報をもつ物理的な源を含む」との記載、イ．の段落［００６６］の「シードは、」「新しいエントロピーを含まなければならない」、乱数の要求に対する任意のタイプの情報、例えば、「システム時間」との記載、段落［００６７］の「system time（システム時間；当審注）を入力源として用いるＳＥＥＤ（ ）関数を使用して、再びシードを与えられる」との記載、および、通常、システム時間値は、正確で狂わないタイマ等の「信頼できる」源からのものであることは慣用のものであり記載されているに等しいことを加味すれば、「信頼できるソースから時間値を取得すること」をよみとることができる。
　
（ケ）前記（ク）での言及から前記「予測不可能な源」の「情報」の例として「システム時間値」が含まれる。ア．の「数生成器は、１つ以上の予測不可能な源から連続的に再びシードを与えられ」、段落［００４８］の「予測不可能な源２０６の２つ以上からの情報は量子化され、１つのシードに結合され」、「その１つのシードがシード関数ＳＥＥＤ（　）２０４にパラメータとして供給される。シード関数ＳＥＥＤ（　）２０４が、パラメータとして“シード”により呼び出される（ｉｎｖｏｋｅ）されるたびに、数生成器２０２の内部状態は、」「更新される（すなわち、“再びシードを与えられる（ｒｅｓｅｅｄｅｄ）”」との記載から、「２つ以上からのシステム時間値を含む情報は１つのシードに結合され１つの結合されたシードがシード関数ＳＥＥＤ（　）にパラメータとして取得されること」をよみとることができる。
　
（コ）前記（カ）で言及したように「前記擬似ランダム出力を前記擬似乱数生成器のシャットダウン後の、後続の始動内部状態用の初期化シードとしてシードファイル中に記憶すること」、及び、（キ）で言及したように「前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すこと」をよみとることができるとともに、イ．の段落［００６５］の「内容はシードファイルから回復され（８１０）、ＳＥＥＤ（　）関数にシードを与えるのに使用される（８１２）。シードファイルは、その内容が抽出されると、ＳＦＳから取り去られる。正常なパワーダウン手続きが損なわれると、このような構成は、同じシードが、次に電話がパワーアップするときに使用されるのを防ぐ」との記載から、シードを与えるのに抽出され使用されたシードファイルは同じシードが使用されないように取り出され、換言すればＳＦＳに戻されることなく取り去られて使い捨ての如き使用が含まれると解され、且つ、シャットダウン時に後続の始動内部状態用の初期化シードとしてシードファイルが記憶されることから、スタートアップ時に取り出され使用され取り去られたシードファイル（初期化シード）は、その後のシャットダウン時に新たに記憶されるシードファイル（初期化シード）に「置き換え」られるとみることができる。よって「前記シードファイルの内容（コンテンツ）を前記擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えること」をよみとることができる。
　
（サ）前記（カ）で言及した「前記擬似ランダム出力を前記擬似乱数生成器のシャットダウン後の、後続の始動内部状態用の初期化シードとしてシードファイル中に記憶すること」に関連し、ア．の「初期化シードは、セキュア　ファイル　システム（ｓｅｃｕｒｅ　ｆｉｌｅ　ｓｙｓｔｅｍ；ＳＦＳ。当審注）に記憶されている」との記載、「スタートアップの内部状態の初期化前に、初期化シードの完全性が損なわれているかどうかについて判断される」との記載、イ．の段落［００６５］の「スタートアップ時に、このシードファイルを使用して初期化され得る。デバイスの初期化をパワーアップするとき（８０２）、システムは、セキュア　ファイル　システムが利用可能であるかどうかを判断する（８０４）。ＳＦＳがパワーアップ中に利用可能であるとき、シードファイルは完全性検証のために解読される（８０６）。成功すると（８０８）、内容はシードファイルから回復され（８１０）、ＳＥＥＤ（　）関数にシードを与えるのに使用される（８１２）。」「ＳＦＳが利用可能でないか、またはシードファイルが完全性の試験に失敗すると、予測不可能な源を使用し、」「第１のシードとして与える」との記載、ウ．にも同様の記載があることから、「前記擬似ランダム出力をシードファイル中に記憶することは、前記擬似ランダム出力をセキュアなファイルシステム内のシードファイルに記憶することを含み、前記シードファイルの完全性が前記擬似乱数生成器の再始動時に損なわれていたか否かを決定することにより、前記シードファイルの完全性が首尾よく検証されるなら、前記シードファイルの初期化シードで前記擬似乱数生成器を初期化することにより記憶し、および前記シードファイルの完全性検査が失敗した場合、前記擬似乱数生成器の始動内部状態を予測不可能なソースを使用し第１のシードとして与え初期化することにより記憶する」ことをよみとることができる。
　
　よって、前記（ア）ないし（サ）によれば、引用文献１には、次の発明（以下「引用文献１発明」と呼ぶ。）が示されている。
　
　数生成器の内部状態に基づいて擬似乱数を生成する擬似乱数生成器を操作する方法であって、
　前記数生成器が始動した後でシード関数が始めて呼び出されると、予め記憶されているコンストレジスタとフィボナッチ数テーブルを用いて内部状態レジスタを初期化することと、
　エントロピーの１つまたは複数の予測不可能なソースから新たなシードを取得することと、
　前記数生成器の現在の内部状態と前記新たなシードとの関数として内部状態を修正することによって、前記数生成器の内部状態においてエントロピーを蓄積することと、
　前記数生成器の修正された内部状態に基づいて、擬似乱数を生成することと、
　前記擬似ランダム出力を前記擬似乱数生成器のシャットダウン後の、後続の始動内部状態用の初期化シードとしてシードファイル中に記憶することと、
　前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すことと、
　信頼できるソースから時間値を取得することと、
　２つ以上からのシステム時間値を含む情報は１つのシードに結合され１つの結合されたシードがシード関数ＳＥＥＤ（　）にパラメータとして取得されることと、
　前記シードファイルの内容（コンテンツ）を前記擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えることと、
　を備え、
　前記擬似ランダム出力をシードファイル中に記憶することは、前記擬似ランダム出力をセキュアなファイルシステム内のシードファイルに記憶することを含み、前記シードファイルの完全性が前記擬似乱数生成器の再始動時に損なわれていたか否かを決定することにより、前記シードファイルの完全性が首尾よく検証されるなら、前記シードファイルの初期化シードで前記擬似乱数生成器を初期化することにより記憶し、および前記シードファイルの完全性検査が失敗した場合、前記擬似乱数生成器の始動内部状態を予測不可能なソースを使用し第１のシードとして与え初期化することにより記憶する、
　方法。
　
３．２　原審の拒絶の理由で引用された本願優先権主張日前に頒布または電気通信回線を通じて公衆に利用可能となった文献である米国特許出願公開第２００６／０１０４４４３号明細書（ 以下、「引用文献２」という。）には、図面とともに次の記載がある。
「[0043] The APRNG is executed once per activation (e.g., once per power up) of the card or chip. This PRNG is according to the specification of a General Purpose Random Number Generationin FIPS 186-2. The APRNG  108  has two inputs. One input includes a unique 160-bit random secret seed value e, which is held in NVM  103 . The initial value of e is a 160-bit random number, which is generated and installed in the chip during the chip initialization phase by the chip manufacturer; each chip has its own unique value of e. The APRNG  108  uses an optional user input feature  107  of the FIPS 186-2 standard; 160 bits generated by the TRNG may be used for this input in block  206 . 
・・・（中略）・・・
[0045] The two inputs to the APRNG are combined in block  208 . The combining step may include a mathematical or logical operation, for example. The output from APRNG may include a 160-bit value (or other value), Out1, which is used for two purposes in block  210 : 
 1) It is used to generate a value e': 
[0046] e'=e XOR Out1 XOR 1 
[0047] This value e' is then written to NVM  103 , replacing e. Thus, each time the chip is activated it will have a different value for e. This implementation minimizes the number of writes to NVM  103 ; therefore, reducing the hotspot problem.
2) It is used as the initial value for f, the seed  122  for the second PRNG  110 .」
訳；「［００４３］ＡＰＲＮＧ（アクチベーション疑似乱数生成器；当審注）はカードあるいはチップについて起動毎に１度（例えば、パワーアップ毎に１度）実行される。このＰＲＮＧはＦＩＰＳ１８６−２で「汎用目的の乱数生成」の仕様による。ＡＰＲＮＧ１０８は２つのインプットを持っている。１つのインプットがＮＶＭ１０３に拘束されるユニークな１６０ビットの任意の秘密のシード値ｅを含む。ｅの初期値はチップ製造業者によって生成されて、そしてチップ初期化フェーズの間にチップにインストールされる１６０ビットの乱数である；それぞれのチップがそれ自身のユニークな値ｅを持っている。ＡＰＲＮＧ１０８はＦＩＰＳ１８６−２標準の「オプションのユーザーインプット」特性１０７を使う；ＴＲＮＧ（真正乱数生成器；当審注）によって生み出された１６０ビットがブロック２０６でこのインプットのために使われてもよい。　
 ・・・（中略）・・・ 
［００４５］ＡＰＲＮＧへの２つの入力はブロック２０８で結合される。結合ステップは例えば数学的か、あるいは論理的なオペレーションを含んでもよい。ＡＰＲＮＧからの出力は１６０ビットの値（あるいは他の値）、ブロック２１０における２つの目的のために使われるＯｕｔ１を含んでもよい：
 
１）それは値ｅ’を生成するために使われる：
 
［００４６］ｅ’　＝　ｅ　ＸＯＲ　Ｏｕｔ１　ＸＯＲ　１
 
［００４７］この値ｅ’はそれから、ｅに置き換えて、ＮＶＭ１０３に書き込まれる。かくして、チップが始動するたびに、それはｅの異なった値を置き換えて持つであろう。このインプリメンテーションはＮＶＭ１０３への書き込みの数を最小にし；従って、ホットスポット問題を減らす。
　
２）それはｆのための初期値、すなわち第２のＰＲＮＧ１１０のためのシード１２２として使用される。」
　
　前記記載によれば、チップ初期時間にチップ製造業者により不揮発性メモリに置かれたユニークなランダム秘密値（秘密のシード値ｅ）を、アクティベーション擬似乱数生成器のシードとして用い、そのアクティベーション擬似乱数生成器の出力を用いて、不揮発性メモリに置かれた値を置き換えることで、チップが活性化されるごとに、その値を異なるものとすることが記載されており、この引用文献２に記載の技術は、チップ初期時間にチップ製造業者により不揮発性メモリに置かれたユニークなランダム秘密値を、一度使用された後に破棄するものである。
　
３．３　原審の拒絶の理由で引用された本願優先権主張日前に頒布または電気通信回線を通じて公衆に利用可能となった文献である特開２００４−１５８９２４号公報（ 以下、「引用文献３」という。）には、図面とともに次の記載がある。
　
「【００４３】
次に、キーサーバ装置１１１は、種を生成する（ステップＳ３０３）。種の生成には、上記のようなアルゴリズムを用いても良いし、識別子の送受信時刻、種の生成時刻、種の生成に用いるプログラムのプロセスＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）、宛先の識別子、ファイル送信装置１２１に割り当てられている識別子、これらの情報を組み合わせ等により生成したものでも良い。たとえば、これらの情報をバイト列としてみたときに、これに各種のハッシュ関数を適用したもの、これのチェックサム、これのＭＤ（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ）５値、これのＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）値などを採用することができる。
【００４４】
そして、ステップＳ３０２で取得したプログラムを実行することにより、生成された種に所定の乱数生成関数を適用してファイルの暗号化に用いる乱数を生成する（ステップＳ３０４）。」
　
　前記記載によれば、生成した種に乱数生成関数を適用して乱数を生成するものにおいて、種の生成には、種の生成時刻等の情報を組み合わせにより生成したものでも良く、たとえば、これらの情報をバイト列としてみたときに、これに各種のハッシュ関数を適用したもの、あるいはそのＭＤ５値を、採用できることが記載されている。
　
３．４　原審の拒絶の理由で引用された本願優先権主張日前に頒布または電気通信回線を通じて公衆に利用可能となった文献である実願平５−１２４４０号（実開平６−７５０４１号）のＣＤ−ＲＯＭ（ 以下、「引用文献４」という。）には、図面とともに次の記載がある。
ａ．「【０００３】
【考案が解決しようとする課題】
　ところで、ディスク書き込み動作中に停電等の異常が発生したときは、このデータ書き込み動作は中断されるが、第三者には、どちらのディスクが書き込み中断になったか認識できず、また、第１ディスクＤ１内のデータと第２ディスクＤ２内のデータとが不一致となることがあった。
　更に、第１ディスクＤ１の内容と第２ディスクＤ２の内容との不一致を検出したとき、不一致となった原因が停電であるのか、その他の原因によるものか把握できないため、修復方法を特定することができない、という問題もあった。
【０００４】
　本考案は、このような問題を課題として解決したものであり、停電等の例外的な事象が発生しても装置の復元処理が容易となるように改善を施すことを目的とする。」
　
ｂ．「【０００７】
【実施例】
　以下、図面を用いて本考案を詳細に説明する。
　図１は本考案を実施したデータ二重化装置であり、第１ディスクＤ１、第２ディスクＤ２は図６に示した従来のものと同様なデータ格納領域を持つ補助記憶であり、コントローラＣＮＴも図６のものと同機能を有するものである。
　コンピュータＣＯＭは、新たに、フラグ設定部ｆ、不揮発メモリｍと、これらのフラグ設定部ｆ、不揮発メモリｍを制御する制御部ｃｔｌを備える。
【０００８】
　フラグ設定部ｆは、制御部ｃｔｌの制御により、第１ディスクＤ１のデータ格納領域、第２ディスクＤ２のデータ格納領域の２領域につき、データ書き込み時に、２領域とも書き込み未完，一方の領域に書き込み完かつ他方の領域に書き込み未完，２領域とも書き込み完の３種類の状態を表すフラグが設定されるブロックである。
【０００９】
　不揮発メモリｍは、制御部ｃｔｌにおいて停電等の異常事態、即ち例外事象が検出されたときに、その時の書き込み処理に関連する情報として、ファイル名、レコード番号、書き込みサイズ、フラグ設定部ｆ内のフラグが書き込まれる記憶手段である。
　停電後、復電があった場合のような、例外事象が解除されてシステムが再スタートする場合は、この不揮発メモリｍの内容が参照される。
【００１０】
　このように構成された本考案装置の動作を次に説明する。
　図２は、本考案装置における書き込み動作を表すフローチャートである。
　尚、以下の動作の説明にあっては、第１ディスクＤ１を第１系統、第２ディスクＤ２を第２系統と呼ぶこととする。
　書き込み動作を開始すると、第１，第２系統につきフラグ設定部ｆに設定するフラグを、第１，第２系統書き込み未完とする。
　続いて、フラグとは別に、第１系統、第２系統の正常異常を表すエラー・コードを初期化する。
　はじめに、コントローラＣＮＴは、第１系統にデータを書き込む。
　この書き込み動作に異常（エラー）がなければ、フラグに第１系統書き込み完を設定し、書き込み異常（エラー）が発生した場合は第１系統に対してエラー・コードを設定する。
　続いて、第２系統にデータを書き込む。この第２系統書き込み動作に異常（エラー）がなければ、第１系統に対応するフラグ内容をそのままとして、フラグに第２系統書き込み完を設定し、書き込み動作に異常（エラー）が発生した場合は第２系統に対してエラー・コードを設定する。
　最後に、制御部ｃｔｌは、第１系統、第２系統の両方のエラー・コードを参照して書き込みが終了したことを表すリターン・コードを設定する。
　以上が本考案装置によるデータ二重書き込み動作である。
【００１１】
　図３は、本考案装置における読み出し動作を表すフローチャートである。
　読み出し動作は、通常、どちらか一方の系統を対象に行われる。
　第１系統に読み出し起動をかけたときは、この第１系統に異常を表すエラー・コードが設定されていなければ読み出し動作を実行し、この読み出し動作自体に異常（エラー）がなければこの動作は終了する。
　第１系統にエラー・コードが設定されているとき、または、第１系統の読み出し動作中に異常（エラー）が発生したときは、第２系統側に読み出し起動をかける。
　第２系統に読み出し起動をかけて第２系統異常を表すエラー・コードが設定されていなければ読み出し動作を実行し、この読み出し動作にエラーが発生しなければ、この動作は終了する。
　更に、この第２系統にエラー・コードが設定されているとき、または、第２系統読み出し動作中に異常（エラー）が発生したときは、第１系統、第２系統とも異常であるとして、エラーを設定し、上位へ通知する。
　以上が本考案装置におけるデータ読み出し動作である。
【００１２】
　このように、本考案装置にあっては、データ書き込みは常に二つの領域に同一のデータを書き込み、データ読み出しはいずれか一方の領域から読み出しエラーがあると他方の領域から読み出しを行う構成である。
　また、データ書き込み時は、第１系統の書き込みが終了するまで第２系統への書き込みを開始することはなく、同時に書き込みをすることはない。従って、第１系統または第２系統のいずれかのデータ内容について新旧の差はあるが、その内容を保証できる。」
　
　ａ．ｂ．の記載によれば、「ファイルを第１系統に書き込むと共に第２系統にも書き込み、第１系統に読み出し起動をかけて、第１系統にエラーコードが設定されているか第１系統の読み出し動作中にエラーが発生したときは、第２系統に読み出し起動をかけること」でファイル多重化によるファイル書き込み中の異常に対処する技術が示されている。
　
４．対比 
　本願発明と引用文献１発明とを対比する。
（１）引用文献１発明の「数生成器の内部状態に基づいて擬似乱数を生成する擬似乱数生成器を操作する方法」と本願発明の「擬似乱数生成器を動作させるための方法」とに実質的な差異はない。
　また、引用文献１発明の「前記数生成器が始動した後でシード関数が始めて呼び出されると、予め記憶されているコンストレジスタとフィボナッチ数テーブルを用いて内部状態レジスタを初期化すること」と本願発明の「前記擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化すること」とに実質的な差異はない。
　
（２）引用文献１発明の「エントロピーの１つまたは複数の予測不可能なソースから新たなシードを取得することと、
　前記数生成器の現在の内部状態と前記新たなシードとの関数として内部状態を修正することによって、前記数生成器の内部状態においてエントロピーを蓄積することと、
　前記数生成器の修正された内部状態に基づいて、擬似乱数を生成することと、
　前記擬似ランダム出力を前記擬似乱数生成器のシャットダウン後の、後続の始動内部状態用の初期化シードとしてシードファイル中に記憶することと、
　前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すことと、
　信頼できるソースから時間値を取得すること」と本願発明の「エントロピーの１つまたは複数の予測不可能なソースから新たなシードを取得することと、
　前記擬似乱数生成器の前記内部状態を前記新たなシードで予測不可能な状態に変更することと、
　前記擬似乱数生成器の前記変更された内部状態に基づいて擬似ランダム出力を生成することと、
　前記擬似ランダム出力を前記擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶することと、
　前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すことと、
　信頼できるソースから時間値を取得すること」とに実質的な差異はない。　
（３）引用文献１発明の「２つ以上からのシステム時間値を含む情報は１つのシードに結合され１つの結合されたシードがシード関数ＳＥＥＤ（　）にパラメータとして取得されること」と本願発明の「前記時間値と初期化シードを組み合わせて、変更された初期化シードを取得すること」とは、上位概念において「シードを取得すること」において共通する。
　
（４）引用文献１発明の「前記シードファイルの内容（コンテンツ）を前記擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えること」と本願発明の「前記シードファイルの前記コンテンツを前記擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えること」とに実質的な差異はない。
　
（５）本願発明の「プライマリシードファイル」、「シャドーシードファイル」は何れも上位概念では「シードファイル」である。この点をふまえれば、引用文献１発明の「前記擬似ランダム出力をシードファイル中に記憶することは、前記擬似ランダム出力をセキュアなファイルシステム内のシードファイルに記憶することを含み、前記シードファイルの完全性が前記擬似乱数生成器の再始動時に損なわれていたか否かを決定することにより、前記シードファイルの完全性が首尾よく検証されるなら、前記シードファイルの初期化シードで前記擬似乱数生成器を初期化することにより記憶し、および前記シードファイルの完全性検査が失敗した場合、前記擬似乱数生成器の始動内部状態を予測不可能なソースを使用し第１のシードとして与え初期化することにより記憶する」ことと本願発明の「前記擬似ランダム出力をシードファイル中に記憶することは、前記擬似ランダム出力をセキュアなファイルシステム内のプライマリシードファイルに記憶すること、および前記擬似ランダム出力を前記セキュアなファイルシステム内のシャドーシードファイルに記憶することを含み、前記プライマリシードファイルの完全性（ｉｎｔｅｇｒｉｔｙ）が前記擬似乱数生成器の再始動時に損なわれていたか否かを決定することにより、前記プライマリシードファイルの完全性が首尾よく検証されるなら、前記プライマリシードファイルの初期化シードで前記擬似乱数生成器を初期化することにより記憶し、および前記プライマリシードファイルの完全性検査が失敗した場合、前記擬似乱数生成器の始動内部状態を前記シャドーシードファイルの初期化シードで初期化することにより記憶する」こととは、上位概念において「前記擬似ランダム出力をシードファイル中に記憶することは、前記擬似ランダム出力をセキュアなファイルシステム内のシードファイルに記憶することを含み、前記シードファイルの完全性（ｉｎｔｅｇｒｉｔｙ）が前記擬似乱数生成器の再始動時に損なわれていたか否かを決定することにより、前記シードファイルの完全性が首尾よく検証されるなら、前記シードファイルの初期化シードで前記擬似乱数生成器を初期化することにより記憶し、および前記シードファイルの完全性検査が失敗した場合、前記擬似乱数生成器の始動内部状態をシードで初期化することにより記憶する」ことにおいて共通する。
　
（１）ないし（５）の対比によれば、引用文献１発明と本願発明とは次の点で一致し、そして相違する。
　
〈一致点〉
　「擬似乱数生成器を動作させるための方法であって、
　前記擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化することと、
　エントロピーの１つまたは複数の予測不可能なソースから新たなシードを取得することと、
　前記擬似乱数生成器の前記内部状態を前記新たなシードで予測不可能な状態に変更することと、
　前記擬似乱数生成器の前記変更された内部状態に基づいて擬似ランダム出力を生成することと、
　前記擬似ランダム出力を前記擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶することと、
　前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すことと、
　信頼できるソースから時間値を取得することと、
　前記シードを取得することと、
　前記シードファイルの前記コンテンツを前記擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えることと、
　を備え、
　前記擬似ランダム出力をシードファイル中に記憶することは、前記擬似ランダム出力をセキュアなファイルシステム内のシードファイルに記憶することを含み、前記シードファイルの完全性（ｉｎｔｅｇｒｉｔｙ）が前記擬似乱数生成器の再始動時に損なわれていたか否かを決定することにより、前記シードファイルの完全性が首尾よく検証されるなら、前記シードファイルの初期化シードで前記擬似乱数生成器を初期化することにより記憶し、および前記シードファイルの完全性検査が失敗した場合、前記擬似乱数生成器の始動内部状態をシードで初期化することにより記憶する、
　方法。」
　
〈相違点１〉
　本願発明は「前記記憶された原始シードを一度使用された後に破棄すること」を有しているのに対し引用文献１発明は有していない点。
　
〈相違点２〉
　シードを取得することに関し、本願発明は「前記時間値と初期化シードを組み合わせて、変更された初期化シード」を取得するのに対し、引用文献１発明はそのようなシードの取得はされていない点。
　
〈相違点３〉
　本願発明は「前記時間値と初期化シードが、前記時間値が前記変更された初期化シードの範囲全体に分散されるように組み合わされ」ているのに対し、引用文献１発明はそのように組み合わされていない点。
　
〈相違点４〉
　前記擬似ランダム出力をシードファイル中に記憶することに関し、本願発明は、「プライマリ」シードファイルと「シャドー」シードファイルとを有しそれらを所定の順序で用いているのに対し引用文献１発明はそのようではない点。即ち、本願発明が、前記擬似ランダム出力をセキュアなファイルシステム内の「プライマリ」シードファイルに記憶すること、「および前記擬似ランダム出力を前記セキュアなファイルシステム内のシャドーシードファイルに記憶する」ことを含み、前記「プライマリ」シードファイルの完全性（ｉｎｔｅｇｒｉｔｙ）が前記擬似乱数生成器の再始動時に損なわれていたか否かを決定することにより、前記「プライマリ」シードファイルの完全性が首尾よく検証されるなら、前記「プライマリ」シードファイルの初期化シードで前記擬似乱数生成器を初期化することにより記憶し、および前記「プライマリ」シードファイルの完全性検査が失敗した場合、前記擬似乱数生成器の始動内部状態を前記「シャドーシードファイルの初期化」シードで初期化することにより記憶するのに対し、引用文献１発明はそのような「プライマリ」シードファイルや「シャドー」シードファイルを有し、完全性検査が失敗した場合、「シャドーシードファイルの初期化」シードで初期化するものではない点。
　
５．当審の判断
（１）〈相違点１〉について
　引用文献２には、引用文献１と共通する疑似乱数生成器にシードを与える技術に関し、チップ初期時間にチップ製造業者により不揮発性メモリに置かれたユニークなランダム秘密値（秘密のシード値ｅ）を、一度使用された後に破棄する技術が示されており、この技術は「記憶された原始シードを一度使用された後に破棄する」技術とみることができる。
　引用文献１発明において「記憶された原始シードを一度使用された後に破棄する」と成すことは、前記引用文献２に記載の技術を参酌することにより当業者が容易になし得ることである。
　
（２）〈相違点２〉について
　引用文献３には引用文献１と共通するシードの生成に関する技術であって、生成した種に乱数生成関数を適用して乱数を生成するものにおいて、種の生成には、種の生成時刻等の情報を組み合わせにより生成したものでも良く、たとえば、これらの情報をバイト列としてみたときに、これに各種のハッシュ関数を適用したもの、あるいはそのＭＤ５値を、採用できることが記載されている。
　引用文献１発明において、シードを取得することに関し、「前記時間値と初期化シードを組み合わせて、変更された初期化シード」を取得すると成すことは前記引用文献３に示された、種の生成には、種の生成時刻等の情報を組み合わせにより生成する技術を参酌することにより当業者が容易になし得ることである。
　
（３）〈相違点３〉について
　引用文献３には、前記「〈相違点２〉について」において言及した技術として、当該「種の生成には、種の生成時刻等の情報を組み合わせにより生成したものでも良く、たとえば、これらの情報をバイト列としてみたときに、これに各種のハッシュ関数を適用したもの、あるいはそのＭＤ５値を、採用」した技術が記載されており、当該各種のハッシュ関数を適用した場合には、「時間値と初期化シードが、前記時間値が前記変更された初期化シードの範囲全体に分散されるように組み合わされている」ものであることは、各種のハッシュ関数の機能から当然の事項であり、本願明細書段落【００５６】に「混合関数７０６の一例はハッシュアルゴリズム（hashalgorithm）である」と記載され、時間値と初期化シードにハッシュアルゴリズムを適用することで自ずと実現されるものと変わるものではない。即ち、引用文献１発明において引用文献３の前記技術を採用するということは、前記の如く、システム時間値と、シードファイルから取り出した初期化シードファイルとを組み合わせ、その情報をバイト列としたものに、各種のハッシュ関数を適用したもの、あるいは、そのＭＤ５値は、各種のハッシュ関数がハッシュアルゴリズムであり、ＭＤ５もまたハッシュアルゴリズムであることから、「前記時間値と初期化シードが、前記時間値が前記変更された初期化シードの範囲全体に分散されるように組み合わされ」たものであることを意味する。
　よって、引用文献１発明において、「前記時間値と初期化シードが、前記時間値が前記変更された初期化シードの範囲全体に分散されるように組み合わされ」と成すことは前記引用文献３の技術を参酌することにより当業者が容易になし得ることである。
　
（４）〈相違点４〉について
　引用文献４には、「ファイルを第１系統に書き込むと共に第２系統にも書き込み、第１系統に読み出し起動をかけて、第１系統にエラーコードが設定されているか第１系統の読み出し動作中にエラーが発生したときは、第２系統に読み出し起動をかけること」でファイル多重化によるファイル書き込み中の異常に対処する技術が示されている。
　引用文献１発明は、「前記擬似ランダム出力をシードファイル中に記憶することは、前記擬似ランダム出力をセキュアなファイルシステム内のシードファイルに記憶することを含み、前記シードファイルの完全性が前記擬似乱数生成器の再始動時に損なわれていたか否かを決定することにより、前記シードファイルの完全性が首尾よく検証されるなら、前記シードファイルの初期化シードで前記擬似乱数生成器を初期化することにより記憶し、および前記シードファイルの完全性検査が失敗した場合、前記擬似乱数生成器の始動内部状態を予測不可能なソースを使用し第１のシードとして与え初期化することにより記憶する」との異常に対処する構成を有するものであるところ、ファイルを多重化することでファイル書き込み中の異常に対処することは、引用文献４の技術に示された様に本願出願前に普通に行われていたことである。
　してみれば、引用文献１発明において、シードのセキュアファイルへの記憶と読み出しに、この引用文献４に記載の技術を適用し、「前記擬似ランダム出力を前記セキュアなファイルシステム中のシャドーシードファイル中に記憶する」ものとし、
プライマリシードファイルの完全性が損なわれている場合に「前記シャドーシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化する」ように構成すること、即ち、前記擬似ランダム出力をセキュアなファイルシステム内の「プライマリ」シードファイルに記憶すること、「および前記擬似ランダム出力を前記セキュアなファイルシステム内のシャドーシードファイルに記憶する」ことを含み、前記「プライマリ」シードファイルの完全性（ｉｎｔｅｇｒｉｔｙ）が前記擬似乱数生成器の再始動時に損なわれていたか否かを決定することにより、前記「プライマリ」シードファイルの完全性が首尾よく検証されるなら、前記「プライマリ」シードファイルの初期化シードで前記擬似乱数生成器を初期化することにより記憶し、および前記「プライマリ」シードファイルの完全性検査が失敗した場合、前記擬似乱数生成器の始動内部状態を前記「シャドーシードファイルの初期化」シードで初期化することにより記憶すると成すことは、前記引用文献４の技術を参酌することにより当業者が容易になし得ることである。
　
　そして、本願発明により奏する効果も、引用文献１発明及び引用文献２ないし４に記載された技術から当然予想される範囲内のものにすぎず、格別顕著なものとは認めることはできない。
　
　よって、本願発明は引用文献１発明及び引用文献２ないし４に記載された技術に基いて当業者が容易に発明し得たものである。
　
６．むすび
　上記のとおり、本願請求項１に係る発明は、その出願前に日本国内又は外国において頒布された刊行物に記載された発明又は電気通信回線を通じて公衆に利用可能となった発明に基いて、当業者が容易に発明をすることができたものであるから、特許法第２９条第２項の規定により特許を受けることができないものであり、本願を拒絶すべきものとした原審の拒絶査定は妥当なものである。
　
　よって、結論のとおり審決する。