ソースコード for pg_crypto モジュールは、暗号的に強力なランダム生成なしでビルドするオプションについて言及しています。
/ *
ランダムビットを生成します。 pg_backend_random()はここで行います、私たちは約束しません
で構築された場合、暗号的にランダムなUUID
--disable-strong-random。
* /
このスレッド でさらに説明します。
私が使用している可能性のある特定のビルドで、どうすれば強力なランダム機能が有効か無効かを検出する?
--disable-strong-random
は、ソースコードの./configure
スクリプトで使用できるPostgreSQL構成オプションです。 pg_config --configure
を使用し、その特定のフラグが構成プロセスの一部として渡されたかどうかを確認することで、PostgreSQLのバージョンと関連するcontrib
モジュールがそれを使用してビルドされたかどうかを確認できます。リンクされたスレッドで述べられているように、合理的な本番プラットフォームではそのフラグを使用しないため、暗号的にランダムなビルドを使用している可能性があります。
少なくともPostgres10ベータの時点では、失敗するように構成を探すことができます。 (configure設定を介して)strong-randomを省略する許可を与えていない場合、strong-randomなしでビルドされたPostgresは設定中に失敗します。
10ベータドキュメント を引用するには:
•暗号化された安全な使用に使用される、より堅牢な乱数ジェネレーターを追加します(Magnus Hagander、Michael Paquier、Heikki Linnakangas)
強力な乱数ジェネレーターが見つからない場合、configure --disable-strong-randomを使用しない限り、configureは失敗します。ただし、このオプションを使用すると、強力な乱数ジェネレーターを必要とするpgcrypto関数が無効になります。