大規模なソフトウェアプロジェクトで作業するときは、テストケースの一部としてファズテストを使用して、入力が特定のサイズまたは形状に達したときにのみ発生する可能性のあるバグを排除するのに役立てることがよくあります。私はこれを最も一般的に行っているのは、たまたま使用しているプログラミング言語にバンドルされている標準の乱数機能を使用することです。
最近、ファジングテストを行うときに暗号論的に安全でない疑似乱数ジェネレータを使用するのが良いかどうか、一般的なファジングテストの長所と短所を無視して疑問に思い始めました。弱い乱数ジェネレーターは、それらのパターンがすぐに明らかにならない場合でも、真の乱数シーケンスと区別するパターンを示すことがよくあります。弱いPRNGを使用したファズテストでは、特定の状況でのみ発生する特定の潜在的なバグを常にトリガーできない可能性があります。これは、疑似乱数が相互に関連している可能性があるためです。
ファジングテストに弱いPRNGを使用することは本質的に賢明ではありませんか?そうすることが理論的に不健全である場合、それは実際にはまだ合理的ですか?