追加給餌の方法/dev/random
ランダムなパスワードを作成するためのエントロピープールを提案しますか?または、完全にランダムなパスワードをローカルで作成するより良い方法はありますか?
存在する場合は、サウンドチップからホワイトノイズを供給することができます。この記事を参照してください: http://www.linuxfromscratch.org/hints/downloads/files/entropy.txt
/dev/urandom
ではなく/dev/random
を使用してください。 /dev/random
と/dev/urandom
の2つの違いは(ここではLinuxについて話しています):
/dev/random
は、情報理論的に安全なアルゴリズムのコンテキストでは、理論的にはより良いかもしれません。これは、今日のテクノロジーだけでなく、明日のテクノロジーや、エイリアンが使用するテクノロジー、そして神のiPadに対しても安全なアルゴリズムの一種です。情報理論的に安全なアルゴリズムは、無限の計算能力に対して安全です。言うまでもなく、そのようなアルゴリズムはかなりまれであり、使用している場合はそれを知っています。また、これは "might"です。内部的には、/dev/random
は従来のハッシュ関数を使用しているため、無限の力で攻撃された場合、とにかく弱点がある可能性があります(Earth-ベースの攻撃者も)。
/dev/urandom
はブロックしませんが、/dev/random
はブロックします。 /dev/random
は、生成したビットが失われたエントロピービットであるという想定の下に、「エントロピーの量」のカウンターを維持します。ブロッキングは非常に現実的な問題を引き起こします。 SSHサーバーキーの作成で停止しているため、自動インストール後に起動に失敗するサーバー(そうです、私はそれを見ました)。 /dev/urandom
は暗号学的に強力な疑似乱数ジェネレータを使用しているため、ブロックされません。
したがって、/dev/urandom
を使用して、このエントロピービジネスについて心配するのをやめる必要があります。
Linuxインストーラーを作成している場合は、エントロピーについて心配する必要があります。トリックは/dev/urandom
がブロックすることは決してないということです:/dev/urandom
は、最後のブート以降に十分なバイト数の「初期エントロピー」を受け取っている限り安全です(ランダムな32バイトで十分です)。 。通常のLinuxインストールでは、インストール時にランダムシード(/dev/random
から)が作成され、ディスクに保存されます。再起動するたびに、シードが読み取られて/dev/urandom
に送られ、新しいシードが(/dev/urandom
から)すぐに生成されて置き換えられます。したがって、これは/dev/urandom
が常に暗号的に強いaleaを生成するのに十分な初期エントロピーを持ち、パスワード生成を含むあらゆる平凡な暗号ジョブに完全に十分であることを保証します。唯一の重要なポイントはインストール時です。インストーラーは/dev/random
からいくつかのエントロピーを取得する必要があります。この問題は、ライブCDおよびその他のバリアントでも発生します。このような状況では、/dev/random
が十分に供給され、ブロックされないようにするために、エントロピーのソースを見つけることが必要になる場合があります。
オペレーティングシステム自体、より正確にはカーネルは、ハードウェアを処理するため、ハードウェアイベントからエントロピーを収集するのに適切な場所にあります。したがって、カーネルがまだ使用していないエントロピーに使用できるものは比較的少ないです。それらの残りのソースの1つはWebカメラデータです。Webカメラは、空白の壁に面していても、熱ノイズのあるデータを出力し、ロットのデータを出力するため、優れたエントロピーです。収集家。したがって、Webカメラから数フレームを取得し、安全なハッシュ関数(SHA-256)でハッシュして、/dev/urandom
に書き込みます。これはまだ大きなやり過ぎです。
オーディオエントロピーデーモン および havegedデーモン で使用される havege を知っているので、試してみてください。
HWランダムデバイスで見た最高の値は simtec entropy key。 です。
障害や攻撃から保護するためにいくつかの保護手段が組み込まれています。たとえば、20Kbの各バッチでFIPS 140-2ランダム性テストを実行し、統計的に有意な数のテストが失敗した場合はそれ自体を停止します。多くのキーを実行していたときに1つ取得しましたDNSSEC研究のための生成、そしてそれは私の仕事を大いにスピードアップしました。それはすべての困難なテストに合格します(ベンダーがあなたに言ったことに関係なく、常にランダムストリームを定期的にテストしてください;-)
1)/dev/random
にエントロピーを追加してパスワードに使用する必要はありません。システムはすでにそれを行います。
2)ランダムなパスワードを生成するには、/dev/urandom
ではなく/dev/random
を使用することをお勧めします。 (/dev/random
にはいくつかの問題があります。ブロックされます。これにより、/dev/random
の他のユーザーがブロックされる可能性がある方法でエントロピープールが枯渇します。/dev/urandom
は、より優れた汎用インターフェースです。)
3)これは、ランダムなパスワードを生成するために使用する簡単なスクリプトです。どうぞご利用ください。
#!/bin/sh
# Make a 48-bit password (8 characters, 6 bits per char)
dd if=/dev/urandom count=1 2>/dev/null | base64 | head -1 | cut -c4-11
データソースと適切なハッシュアルゴリズムを組み合わせてランダムデータを生成しています。
Webサーバーでは、サーバーデータ(HW、SW、パフォーマンス)、クライアントデータ(ユーザーエージェント、リクエスト時間、Cookie、URL変数、収集できるもの)、一部の外部データ(random.orgなど)、すべてをlet say sha1(mixed_data + time + some_secret_key)と混合すると、ランダムデータのかなり予測できないビットが得られます。
P2PEG を使用して、クライアントとサーバーからエントロピーを簡単に収集することもできます。
パスワードが短い場合、スピードや試行回数が制限されていなければ、ブルートフォースによって常に解読可能です。一方、試行が制限されている場合(例:対話型ログイン)、少量のエントロピーでも基本的には解読できません。
したがって、パスワードのエントロピーを非常に高くすることが重要になるケースはありません。
したがって、/ dev/urandomを使用するだけで十分です。
ここに記載されている他の回答は、必要に応じて/ dev/randomに十分なエントロピーを供給し続ける方法についての良いコメントです。