問題タブ [entropy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3681 参照

php - パスワードエントロピーの計算(および有用性)を支援する

これは2つの部分からなる質問です。

パート1

まず、PHPでのパスワードのエントロピーの計算を扱います。私は経験的に健全なコード例を見つけることができず、最終的な数値を計算するための「正しい」方法を見つけるのに本当に助けを求めています。ネット上の多くの人々は独自の自家製の重み付けアルゴリズムを持っていますが、私は方程式に対する科学的な答えを本当に探しています。

パスワードエントロピーは、より大規模なセキュリティシステムの一部として、またユーザーのパスワードが侵害された場合にアクセス可能な情報とブルートフォースによってパスワードが簡単に破られる可能性がある情報に基づいてデータセキュリティ全体を分析する方法として使用します。

パート2

この質問の2番目の部分は、この数値が実際にどれほど役立つかということです。私の最終目標は、動的エンティティとしてシステム全体のセキュリティを監視するために使用できる、システム内のパスワードごとに「スコア」を生成することです。辞書攻撃やl33t置換パスワードなどについては、おそらく別のアルゴリズムで作業する必要がありますが、このような「全体的な」システム評価ではエントロピーが重要な役割を果たすと思います。ただし、他のアプローチの提案は歓迎します。

私が知っていること

上記のエントロピーを計算するための対数方程式についての言及を見たことがありますが、実際には数式として書かれていない良い例はまだ見ていません。私は実際にコード例を使用して(厳密にPHPでなくても)私を動かすことができました。

拡大

コメントをすることで、この計算の有用性をよりよく説明できることに気づきました。ユーザーのパスワードが非常に弱いレガシーシステムで作業している場合、すべてのユーザーにパスワードを新しい(強制された)強力なパスワードに変更するように強制する前に、その弱点の具体的な証拠が必要です。システム内の各ユーザーアカウントのパスワード強度スコアを保存することで、システム全体の弱点を示し、より強力なパスワードを主張するためのいくつかの異なるメトリックを構築できます。

TIA

0 投票する
4 に答える
1409 参照

random - エントロピー ソースの安全な混合

ブロック暗号のキーとして機能する非常に大きな (128 ビットや 256 ビットなど) 数値を生成しているとします。

さらに、アルミ箔の帽子をかぶっていると仮定しましょう (少なくとも屋外では)。

非常に偏執的であるため、利用可能なエントロピーを確認したいと考えていますが、特定の情報源を完全に信頼しているわけではありません。政府が私たちのコインを不正操作しているのかもしれません。たぶん、これらのサイコロはこれまでになく微妙に重み付けされています. ハードウェア割り込みのフィード/dev/randomが少し一貫しすぎている場合はどうなりますか? (偏執的であることに加えて、私たちは怠け者なので、すべてを手動で生成したくありません...)

それでは、それらをすべて混ぜてみましょう。

これを行うための安全な方法は何ですか? おそらく、各ソースから数バイトを連結するだけでは完全に安全ではありません.ソースの1つに偏りがある場合、理論的には、たとえば関連キー攻撃などに役立つ可能性があります.

連結されたバイトに対して SHA-256 を実行するだけで十分ですか?

(そして、はい、近いうちに暗号化エンジニアリングのコピーを手に入れるつもりです。:))

0 投票する
1 に答える
3240 参照

windows - CryptGenRandomエントロピー

CryptGenRandomは、WindowsのCryptoAPIの乱数ジェネレーター関数です。その乱数ジェネレーターにはどのくらいのエントロピーがありますか?すでにたくさん見てきましたが、見つかりませんでした。

0 投票する
1 に答える
1734 参照

random - 高速で安全な乱数

私はこの興味深い一口/dev/urandomに出くわしたときよりも速い代替手段を探していました:

非常に優れた非ランダムだがほぼランダムなビットを生成するための1つの優れたトリックは、/ dev / randomのエントロピーを使用して高速対称ストリーム暗号(私のお気に入りはblowfish)をシードし、その出力をそれを必要とするアプリケーションにリダイレクトすることです。

これは初心者のテクニックではありませんが、2行または3行のシェルスクリプトといくつかのクリエイティブなパイプを使用して簡単にセットアップできます。

さらなる調査により、セキュリティに関するシュナイアーからのこのコメントが得られました。

「エントロピーを注入」する場合、それを行う方法はいくつかありますが、より良い方法の1つは、高速ストリーム暗号全体に「拡散」し、非決定論的サンプリングシステムと結合することです。

私が間違っている場合は訂正してください。ただし、ランダムビットを生成するこの方法は/dev/urandom、速度とセキュリティの点で単純に優れているようです。

だから、これが実際のコードについての私の見解です:

この速度テストは400MBのゼロを取り、疑似ランダムで印刷可能な文字で作られた448ビットのキーを使用してblowfishを使用して暗号化します。これが私のネットブックの出力です:

400+0レコードイン400+0レコードアウト419430400バイト(419 MB)コピー、14.0068秒、29.9MB/秒

実際の0m14.025sユーザー0m12.909ssys0m2.004s

それは素晴らしいことです!しかし、それはどのくらいランダムですか?結果を次の場所にパイプしてみましょうent

エントロピー=バイトあたり8.000000ビット。

最適な圧縮により、この419430416バイトファイルのサイズが0%削減されます。

419430416サンプルのカイ2乗分布は250.92であり、ランダムにこの値を50.00パーセント超えることがあります。

データバイトの算術平均値は127.5091(127.5 =ランダム)です。Piのモンテカルロ値は3.141204882(エラー0.01パーセント)です。シリアル相関係数は-0.000005です(完全に無相関= 0.0)。

よさそうだ。ただし、私のコードには明らかな欠陥がいくつかあります。

  1. /dev/urandom初期エントロピーソースに使用します。
  2. 印刷可能な文字のみが使用されるため、キー強度は448ビットと同等ではありません。
  3. エントロピーを「拡散」するために、暗号を定期的に再シードする必要があります。

それで、私は自分が正しい方向に進んでいるかどうか疑問に思いました。そして、誰かがこれらの欠陥のいずれかを修正する方法を知っているなら、それは素晴らしいことです。また、、、、、またはDBAN以外の場合は、ディスクを安全にワイプするために使用するものを共有していただけ/dev/urandomますか?sfillbadblocks

ありがとうございました!

編集:ストリーム暗号としてblowfishを使用するようにコードを更新しました。

0 投票する
5 に答える
1824 参照

random - 組み込みシステムの「一意性」/エントロピーのソース

私は組み込みシステムを持っています。電源投入時またはリセット時に実行したいのは、一意の ID を生成することです。これにより、異なる再起動時に異なる一意の ID が高い確率で生成されます。

リアルタイム クロックにはアクセスできませんが、ADC と UART にはアクセスできます。これらのソースからエントロピーを収集して一意の ID を生成する適切な方法があるかどうか疑問に思っています。私は漠然とヤローに精通しています。これをうまく使う方法はありますか?

残念ながら、予測可能な特性のノイズ源はありません。ADC は多数の比較的低ノイズの入力に接続されているため、ADC の最下位ビットのみを入力として使用できると思います。

編集:価値のあるものとして、これはTI TMS320F28335プロセッサです。


更新/明確化:ソフトウェアでエントロピーを収集する方法を探していました。私は自分の問題を解決する別の方法を見つけたので、ある意味で私の質問は議論の余地がありましたが、ADC やシステムの最下位ビットなどの低エントロピー ソースからエントロピーを収集するための特定のソフトウェア ソリューションに関するガイダンスをまだ探しています。 UART 文字を受信するタイミング。

0 投票する
1 に答える
1370 参照

c++ - 画像エントロピー計算

レコーダーに厄介な問題が発生しました。一部の人々はまだアナログ チューナーでそれを使用しています。アナログ チューナーは、信号が存在しない場合に「雪」を吐き出す傾向があります。

問題は、ノイズがエンコーダーに供給されると、完全に異常になり、最初にすべての CPU を消費し、最終的にフリーズすることです。レコーダーの主なポイントは何があっても稼働し続けることなので、エンコーダーが処理できないデータにさらされないように、これをどのように進めるかを考え出す必要があります。

したがって、アイデアは「エントロピー検出器」を作成することです。これは、フレームバッファデータを調べてエントロピーインデックスを計算する、つまり画像内のデータが実際にランダムである方法を計算する単純で小さなルーチンです。

ルーチンの結果は数値になり、完全に後ろの画像の場合は 0 になり、完全にランダムな画像 (つまり雪) の場合は 1 になります。

ルーチン自体は順方向スキャンのみで、レジスタに適切に収まるローカル変数はほとんどありません。

そのようなタスクには zlib または 7z api を使用できますが、自分で何かを調理したいです。

何か案は?

0 投票する
3 に答える
74 参照

algorithm - ランダムテイク間のユーザー遅延はPRNGにとって良い改善ですか?

たとえば、プレーヤーの次のトラックやブラウザの次のページをランダムに選択する場合、時間を「自然現象」として使用できる可能性があると思いました。たとえば、まともなRPNGは、プログラムの要求なしに次の乱数を継続的に取得できます(たとえば、スレッドでは数ミリ秒ごと、またはイベントがより頻繁に発生します)、その時が来ると(ユーザーの決定に基づいて)、選択はこのユーザーの遅延の影響を自然に受けます。

このアプローチは十分に優れており、どのようにテストできますか?手動でテストする場合の問題は、実際の世界では、いくつかのテストプログラムにそれらを供給するのに十分な乱数を保存するのにそれほど長く待つことができないということです。これを人為的に高速化しようとすると、メソッド自体が無効になります。

ありがとう

0 投票する
2 に答える
1309 参照

entropy - 相互情報の計算

M が、それぞれ属性 X と Y を持つオブジェクト m の集合であると仮定します。ここで、X と Y が指定された m に対して 1 つの値しか持てない場合 (つまり、X,Y が P(X=x_i|M=m_i) の確率変数である場合、P( Y=y_i|M=m_i))、X と Y の相互情報量を計算することは可能です。しかし、X が一度に複数の結果を持つことができるとしたらどうでしょうか? つまり、m_3 の場合 X={x1,x2} - 一般に、X の結果はすべての可能な結果のサブセットです。そのような場合、相互情報量やその他の依存度を測定できますか?

X をバイナリ確率変数 X_1、X_2 などに分割することは可能ですか? X_1=1 の場合、X に x1 が含まれている場合は X_1=0 であり、それ以外の場合はすべての組み合わせ i,j について I(X_i,Y_j) を計算し、情報を順番に合計します。 I(X,Y) を取得するには?

ありがとう。

例:

0 投票する
2 に答える
2935 参照

ruby - Ruby と imagemagick を使用して画像のエントロピーを取得または計算する

Rubyでimagemagick、できればmini_magicで「エントロピー」を見つける方法は? これは、より大きなプロジェクトの一部として必要であり、画像の「面白さ」を見つけてトリミングします。

Python/Djangoで良い例を見つけました。これにより、次の擬似コードが得られます。

これは式に変換されentropy = -sum(p.*log2(p))ます。

私の質問: Django/Python コードを正しく解釈しましたか? Rubyのmini_magickでヒストグラムを取得するにはどうすればよいですか?

最も重要な質問: そもそも、このアルゴリズムは適切でしょうか? 画像(の一部)で「エントロピー」または「変化するピクセルの量」または「グラデーションの深さ」を見つけるためのより良いものを提案しますか?

編集:以下の回答で提供されるリソースを使用して、動作するコードを思いつきました:

image_data はRMagick::Image.

これはsmartcropper gemで使用され、ペーパークリップなどで画像のスマートなスライスとトリミングを可能にします。

0 投票する
3 に答える
6692 参照

windows - Windowsで利用できるエントロピーソースは何ですか?

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

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

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

GetCurrentProcessIDGetCurrentThreadIDGetTickCountGetLocalTimeQueryPerformanceCounterGlobalMemoryStatusGetDiskFreeSpaceGetComputerNameGetUserNameGetCursorPosGetMessageTimeGetSystemInfoCryptGenRandomGetProcessHandleCountGetProcessMemoryInfo