web-dev-qa-db-ja.com

乱数発生器に対する実際的な攻撃はありますか?

開発者向けの内部セキュリティコースを作成しています。もっと面白くするために、私は実際の攻撃で各章を強化しようとしていますが、安全でないランダムな使用法のセクションに出くわしました。

したがって、標準のRNG(一般的なバックエンド言語は問題ありません)が安全でない方法(たとえば、パスワード機能の生成)で使用されていると仮定します。 RNG状態と以前/将来の値を計算できる段階的なアルゴリズムまたは自動ツールはありますか?

6
getupandgo

安全でない使用PRNG:これの非常に素朴なデモンストレーション(ラボを行う場合)は、現在の時間から派生したシードを使用して、オープンソースパスワードマネージャーの疑似ランダムパスワードを生成することです(他のいくつかのビットを追加できます)よりランダムに見せたい場合は、知っておくべき情報)。生徒がソースでこの事実に気づいた場合、パスワードを予測できます。もちろん、この情報を決定するためにソースは実際には必要ありません(ラボを高速化するだけです)。

よく知られている実世界の例については、チェックアウト https://en.wikipedia.org/wiki/Random_number_generator_attack

3
DarkMatter

はいあります。ランダム性が不十分な場合に収集されたRSAおよびDSAキーが組み込みデバイスによって即座に生成された有名な例については、 Factorable を参照してください。

インターネットで使用されているRSAおよびDSA暗号化キーの大規模な調査を行ったところ、ランダム性が不十分なため、かなりの数のキーが安全でないことがわかりました。これらのキーは、数十万のホストのTLS(HTTPS)およびSSH接続を保護するために使用されています。

ほぼすべての脆弱なホストは、ルーター、ファイアウォール、サーバー管理カードなどのヘッドレスの組み込みネットワークデバイスです。これらのタイプのデバイスは、多くの場合、初回の起動時に自動的にキーを生成し、乱数を生成するために従来のPCで使用されていたランダム性の物理的なソースの多くを欠いています。 54の製造元から明らかに脆弱なデバイスとソフトウェアを特定し、これらの会社に問題について通知しました。

彼らの 研究論文 を読んで、彼らがこれをどのように行ったかを正確に見てください。

3
forest

PRNGプログラミング言語の標準アルゴリズムの一部は、十分なサンプルが表示された後で壊れる可能性があります。参照 https://security.stackexchange.com/a/31645/192426 =説明とサンプルスクリプトへのリンク。

2
Jonathan

これから説明する攻撃は、ハードウェアベースの攻撃である限り、また何年もの計画と大きな経済的影響力を必要とする限り、他の回答で述べた攻撃とは少し異なります。また、非アルゴリズム的な種類のPRNG失敗を表します。これは、おそらくクラスに最も当てはまる場所です。エントロピーが汚染される可能性がある場合、すべてのエントロピーを1つのソースのみに基づいて裏返すことができます。 。

理論的には、知っているアルゴリズムごとに数値を生成するハードウェアを作成し、それを真のRNGであると主張しながらそのハードウェアを販売することができます。そのハードウェアを使用してすべてのエントロピーを生成するコードは、そのハードウェアのメーカーによって簡単に攻撃される可能性があります。

(これは幻想的なように見えるかもしれませんが、このような状況が IntelのRdRand命令 のように実際に発生する可能性があるという正当な懸念があります。)

2
Miles B Huff