web-dev-qa-db-ja.com

/ dev / randomエントロピープールを供給していますか?

追加給餌の方法/dev/randomランダムなパスワードを作成するためのエントロピープールを提案しますか?または、完全にランダムなパスワードをローカルで作成するより良い方法はありますか?

51
pootzko

存在する場合は、サウンドチップからホワイトノイズを供給することができます。この記事を参照してください: http://www.linuxfromscratch.org/hints/downloads/files/entropy.txt

24
Henri

/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に書き込みます。これはまだ大きなやり過ぎです。

50
Thomas Pornin

オーディオエントロピーデーモン および havegedデーモン で使用される havege を知っているので、試してみてください。

13
krempita

HWランダムデバイスで見た最高の値は simtec entropy key。 です。
障害や攻撃から保護するためにいくつかの保護手段が組み込まれています。たとえば、20Kbの各バッチでFIPS 140-2ランダム性テストを実行し、統計的に有意な数のテストが失敗した場合はそれ自体を停止します。多くのキーを実行していたときに1つ取得しましたDNSSEC研究のための生成、そしてそれは私の仕事を大いにスピードアップしました。それはすべての困難なテストに合格します(ベンダーがあなたに言ったことに関係なく、常にランダムストリームを定期的にテストしてください;-)

7
spinkham

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 
7
D.W.

データソースと適切なハッシュアルゴリズムを組み合わせてランダ​​ムデータを生成しています。

Webサーバーでは、サーバーデータ(HW、SW、パフォーマンス)、クライアントデータ(ユーザーエージェント、リクエスト時間、Cookie、URL変数、収集できるもの)、一部の外部データ(random.orgなど)、すべてをlet say sha1(mixed_data + time + some_secret_key)と混合すると、ランダムデータのかなり予測できないビットが得られます。

P2PEG を使用して、クライアントとサーバーからエントロピーを簡単に収集することもできます。

2
DUzun

パスワードが短い場合、スピードや試行回数が制限されていなければ、ブルートフォースによって常に解読可能です。一方、試行が制限されている場合(例:対話型ログイン)、少量のエントロピーでも基本的には解読できません。

したがって、パスワードのエントロピーを非常に高くすることが重要になるケースはありません。

したがって、/ dev/urandomを使用するだけで十分です。

ここに記載されている他の回答は、必要に応じて/ dev/randomに十分なエントロピーを供給し続ける方法についての良いコメントです。

1
Nakedible