3

Windowsでランダムな暗号化キーを作成したい。エントロピーはどこで入手できますか?

エントロピー機能がネットワーク接続なしで機能し、Windows2000以降で信頼できるものになりたいです。少量のエントロピーを提供する場合も提供しない場合もあるソースでさえ、すべてのソースがプールされるため、役立つ可能性があります。

これは私の最初の関数のリストです:

GetCurrentProcessIDGetCurrentThreadIDGetTickCountGetLocalTimeQueryPerformanceCounterGlobalMemoryStatusGetDiskFreeSpaceGetComputerNameGetUserNameGetCursorPosGetMessageTimeGetSystemInfoCryptGenRandomGetProcessHandleCountGetProcessMemoryInfo

4

3 に答える 3

7

CryptGenRandom関数の初期バージョンには弱点が含まれている可能性がありますが、後のバージョンは安全な標準に従います(CrypGenRandomページの注釈を参照してください)。

時間をシードとして使うのは弱いです。乱数生成の最も安全なシードは何ですか?の下に答えがあります。これは、予測不可能なランダムシードが安全なPRNGを生成するために必要なのは128ビットのみである可能性があることを説明しています。したがって、質問にリストされているソースよりも多くのソースを見つける必要はおそらくありません。通常、CryptGenRandom関数には、呼び出し元がこれを行う必要がないほど十分なエントロピーが含まれ、生成されます。

CryptGenRandomとその前に必要な関数CryptAcquireContextは、このようにDelphiから呼び出すことができます。

于 2011-02-10T14:46:28.563 に答える
2

オプションの場合は、マウスポインタをしばらく動かすようにユーザーに求めることができます。

于 2011-02-10T10:45:30.473 に答える
2

ほとんどのマシンにある唯一の外部ソースはマイク入力/ライン入力です。waveInOpen+waveInPrepareHeader+ waveInAddBuffer+waveInStartを呼び出します。それがどれほどランダムであるかは、おそらくハードウェアに依存します...

于 2011-02-10T16:12:21.027 に答える