NIST SP800-90Aは、SHA-1に基づくHash_DRBG(決定論的ランダムビットジェネレーター)を使用する場合、440ビット(つまり55バイト)のシード長を推奨します。(アルゴリズムもそこに描かれています)。
しかし、それはシードの長さだけでなく、そのエントロピー(「ランダム性」)にも関係します。ゼロの440ビット文字列でDRBGを初期化する場合、その長さにもかかわらず、それは悪い選択になります。
シードの目的は、ジェネレーターの初期状態を構成して、攻撃者が乱数のシーケンスを予測できないようにすることです。すべてのプロセスが決定論的であることを忘れないでください。ジェネレーターの状態がわかれば、その時点からランダムシーケンスを再現できるようになります。
SecureRandom.generateSeed
現在のOSが提供するエントロピーソースに依存するメソッドを使用してシードを計算できます(たとえば、 OpenJDKのSeedGeneratorはLinuxでは/ dev / randomを使用し、WindowsではMS CryptoAPIを使用します)。
SecureRandom sr= SecureRandom.getInstance("SHA1PRNG");
byte seed[] = random.generateSeed(55);
sr.setSeed(seed);