念のため、これが暗号化の強度に影響を与えるとは思いません。
私はソースコードをチェックしました。私が読んだものを正しく解釈している限り、必ずしもこれについて心配する必要はありません.
このコードは、モジュール 'stdrng' に属しています。少なくとも Fedora 23 では、これはカーネル モジュールとしてエクスポートされるのではなく、カーネルに組み込まれています。
stdrng が初めて初期化されると、次の呼び出しが発生します。
crypto/drbg.c では、ここから初期化が開始されます。
1997 module_init(drbg_init);
これにより、システムが認識しているすべての drbgs が登録されます..
1985 for (j = 0; ARRAY_SIZE(drbg_cores) > j; j++, i++)
1986 drbg_fill_array(&drbg_algs[i], &drbg_cores[j], 1);
1987 for (j = 0; ARRAY_SIZE(drbg_cores) > j; j++, i++)
1988 drbg_fill_array(&drbg_algs[i], &drbg_cores[j], 0);
次に、初期化を実行するヘルパー関数にそれを渡します:
1989 return crypto_register_rngs(drbg_algs, (ARRAY_SIZE(drbg_cores) * 2));
crypto/rng.c
で これは、各 rng を反復して登録するだけです..
210 for (i = 0; i < count; i++) {
211 ret = crypto_register_rng(algs + i);
212 if (ret)
213 goto err;
214 }
この関数は一連の初期化手順を実行し、割り当てのために別の関数を呼び出します。
196 return crypto_register_alg(base);
それほど明白ではないのは、登録中に何が起こるかです.
tcrypt
という別のモジュール また、カーネルに組み込まれており、新しいアルゴリズムが挿入されたという通知を受け取ります。新しく登録されたアルゴリズムを確認すると、そのテストをスケジュールします。これにより、画面に表示される出力が生成されます。
テストが終了すると、アルゴリズムは TESTED 状態になります。テストが失敗した場合、想像 (この動作を生成するビットを見つけることができませんでした) 正しいフラグを渡すと、検索対象として選択できなくなります。
テストに合格したかどうかは、確実に内部に保存されます。
これに加えて、疑似乱数ジェネレーターを呼び出すと、crypto/drbg.c
のこのメモで指示されているように、アルゴリズムのリストが強度の順に prng で繰り返されます。
107 /*
108 * The order of the DRBG definitions here matter: every DRBG is registered
109 * as stdrng. Each DRBG receives an increasing cra_priority values the later
110 * they are defined in this array (see drbg_fill_array).
111 *
最強のものは失敗しない (hmac sha256) ため、選択できたとしても、失敗したものを使用する可能性は低いです。
要約すると-
- これは
stdrng
何かのためにモジュールが必要です。 - 既知のアルゴリズムをすべて読み込みます。
- ロードされたすべてのアルゴリズムがテストされます。一部は失敗する可能性があります (この回答で考慮されていない理由)。
- 失敗したアルゴリズムをテストするべきではない 後で選択できるようにします。
- PRNGS は強度の順に並べられ、合格した強力な PRNGS が最初に試行されます。
stdrng
に依存するもの これらのアルゴリズムを PRNG ソースの基礎として使用しないでください。
次のコマンドを使用して、どのアルゴが成功し、テストに合格したかを確認できます:
grep -EC5 'selftest.*passed' /proc/crypto
「priority」フィールドで選択の優先度を確認することもできます。モジュールの作成者によると、値が高いほど PRNG が強くなります。
ですから、私は自分自身をカーネル プログラマーとは考えていないので、ここで間違っていてよかったと思いますが、結論として -
stdrng
のとき 許容可能なアルゴリズムのリストから、失敗したアルゴリズムよりも強力であると見なされる他のアルゴリズムを選択するように見えますが、失敗したアルゴリズムはいずれにせよ選択されない可能性があります。
そのため、luks を使用する際にこれが追加のリスクになることはないと思います。