この回答で推奨されているように、実際には「/dev/urandom」を意味すると仮定して、「linux PRNG」の意味を明確にしましょう。
現在、その背後にあるアルゴリズムはよく知られています-ソースコメントでそれについて読んでみましょう:
ランダムなバイトが必要な場合は、「エントロピー プール」の内容の SHA ハッシュを取得して取得します。SHA ハッシュは、エントロピー プールの内部状態の公開を回避します。SHA の入力に関する有用な情報をその出力から導き出すことは、計算上不可能であると考えられています。巧妙な方法で SHA を分析できたとしても、ジェネレーターから返されるデータの量がプール内の固有のエントロピーよりも少ない限り、出力データはまったく予測できません。このため、ルーチンは、乱数を出力するときに、エントロピー プールに含まれる「真のランダム性」のビット数の内部推定値を減らします。
この推定値がゼロになっても、ルーチンは乱数を生成できます。ただし、攻撃者は (少なくとも理論上は) 以前の出力からジェネレーターの将来の出力を推測できる可能性があります。これには SHA の暗号解読の成功が必要であり、これは実行可能であるとは考えられていませんが、わずかな可能性があります。それにもかかわらず、これらの数値は、ほとんどの目的に役立つはずです。
したがって、さまざまなソースから取得され、定期的に更新されるランダム性のプールがあります。典型的なサイズは 4096 ビットのようです。「攻撃者」を「機械学習」に置き換えると、答えが得られます。
SHA-1 を逆にする方法、または SHA-1 出力と非 SHA-1 出力を区別する方法は知られていません。標準的な分類とクラスタリングは、このタスクでは確実に失敗します。成功したアルゴリズムを見つけることは非常に驚くべきことです。なぜなら、SHA-1 自体に対して実行可能な攻撃を提示するからです。SHA-1 が完璧であるというわけではありません (衝突攻撃については既に説明されているため、既に廃止されており、改善されるだけです)。