web-dev-qa-db-ja.com

総当たり攻撃でGPUはどのように使用されますか?

GPUがブルートフォース攻撃で使用できることを読んだことがありますか?しかし、これをどのように行うことができ、他のハードウェアデバイス(たとえば、ハードディスク)が必要ですか?

注:Webアプリケーションのセキュリティに関心がありますが、目隠しをしたくありません。私の質問があなたにばかげているとは申し訳ありませんが、私のハードウェアの背景はあまりよくありません。基本的なコンポーネントがどのように連携し、それらを組み合わせる方法を知っているだけです。

私は、ハッキングする方法ではなく、なぜリスクであるのかと尋ねていると仮定します。

GPUは、コンピュータグラフィックスと暗号化の両方の基礎である数学演算の並列化に非常に優れています。通常、GPUは [〜#〜] cuda [〜#〜] または OpenCL を使用してプログラムされます。それらがブルートフォース攻撃に適している理由は、特定の操作ではCPUよりも桁違いに速いためです。本質的にスマートではありません。

同じ操作をCPUで実行できますが、時間がかかります。

55
Phil Lello

人々はあなたの質問に直接答える素晴らしい答えをここに与えました、しかし私はGPUがこれと他のアプリケーションに対してなぜとても強力であるかをより深く説明するために補足的な答えを与えたいと思います。

一部の人が指摘したように、GPUは、画面への描画がすべて数学(頂点の位置のプロット、行列の操作、RBG値の混合、テクスチャ空間の読み取りなど)であるため、数学的演算が高速になるように特別に設計されています。ただし、これがパフォーマンス向上の主な原動力ではありません。主な原動力は平行度です。 ハイエンドCP には12個の論理コアがある可能性がありますが、 ハイエンドGP は3072のようなものをパッキングします。

単純にするために、論理コアの数は、特定のデータセットに対して実行できる同時操作の総数と同じです。たとえば、2つの配列の値を比較または合計したいとします。配列の長さが3072であるとします。CPUで、同じ長さの新しい空の配列を作成し、スレッド数(12)に等しいステップで2つの入力配列を反復する12のスレッドを生成できます。同時に、値の合計を3番目の出力配列にダンプします。これには合計256回の反復が必要です。

ただし、GPUを使用すると、CPUから同じ値をGPUにアップロードし、 kernel を書き込むことができます。これにより、そのカーネルに対して3072のスレッドが同時に生成され、操作全体が1回で完了します。反復。

これは、本質的に、並列化可能な方法で「処理」をサポートできるデータに対して作業する場合に便利です。私が言いたいのは、これはハッキング/悪用ツールに限定されないということです。これが [〜#〜] gpgpu [〜#〜] がますます人気になり、OpenCL、OpenMPなどのものが、私たちのプログラマーが貧困層を悩ませていることに気づいたために生まれました対照的にほとんど使用されていない大規模な発電所がPCに設置されている場合に動作する小さなCPU。それはソフトウェアをクラッキングするためだけのものではありません。たとえば、過去30年間の宝くじの歴史を取り入れた精巧なCUDAプログラムを作成し、すべての可能な数のさまざまな組み合わせのチケットを使用して、チケットごとのプレイ数を変化させて賞品/当選確率を計算した後、これらの優れたスキルを使って就職するだけではありません(これは笑いですが、悲しいことにそうです)。

私は必ずしもプレゼンテーションを行う人々を支持しているわけではありませんが、 このプレゼンテーション は、GPUが並列化できるものに対して特に優れている理由を、非常に単純ですがかなり正確に示しています。 (他のスレッドを妨げ、並列処理のプラスの影響を大幅に減らします)。

51
user7933

他のデバイスは必要ありません。適切なGPUとソフトウェアだけが必要です。たとえば、 cRARk は、GPUを使用して、rarパスワードを総当たりすることができます。そして oclhashcat は、GPUを使用して多くのことを総当たりすることができます。

なぜGPUはCPUをクラックするよりもはるかに高速なのですか?クラッキングはあなたができるものだからです並列に実行できます(すべてのコアを使用して同時に異なるパスワードを試すことができます)そしてGPUには、並行して使用できるコアがたくさんあります。

例:ハイエンドGPUであるGeForce GTX980 Tiには、2816コアがあります。 16コア72-cores ですが、スーパーコンピューティングとサーバーの目的のためです)を超えるPC CPUはありません。

しかし、なぜCPUはGPUに比べてコアの量が少ないのですか?彼らはたくさんのコアを持つCPUを作ることはできませんか?もちろん可能ですが、有益ではありません。一般的にグラフィックのように並列処理することは不可能だからです。多くのソフトウェアは順次処理する必要があり、並列処理が可能であっても、開発者にとっては難しいため、並列処理用のソフトウェアを作成することは一般的ではありません。

以下のグラフをご覧ください。

enter image description here

処理の平均%50を並列化できるとすると、スピードアップは16コアで2倍に過ぎません。したがって、コア数を増やすと、CPUのリターンは非常に低下します。

13
ferit

職場には、「計算上困難なルーティング問題」を解決する特別なサーバーがあります。各ホストは4つのソケットとクアッドコアxeonでかなり明確に指定されているため、16の物理コアとその上にHTがあります。 32コアと呼んでください。

各ボックスにはPCIeエクスパンダシャーシがあり、複数のハイエンドNVidia GPUと、それらに電力を供給する大きなPSUがあります。各グラフィックスカードには約2000のCUDAコアがあるため、ホストあたり約30,000のCUDAコアで動作します。

したがって、手を振ってCUDAコアをCPUコアに相当するものと呼ぶと、このサーバーは通常のCPUで実行されている1000台のサーバーと同じです。 CUDAコアは一部のタスクには不向きですが、他のタスクには非常に優れているので、そこには多くの混乱があります。

考えられるすべてのルートを列挙して最良のルートを選択することで、巡回セールスマンの問題を解決することを想像してみてください。または、現在のボードから可能なすべてのチェスの動きを列挙し、次の動きが成功する可能性が最も高い単一の動きを選びます。

考えられるすべての回答が計算されたら、ヒューリスティックな方法は必要ありません。これがブルートフォース攻撃の定義です。

3
Criggie

このリンク https://www.iacr.org/archive/ches2006/09/09.pdf をご覧ください。 GPUの利点は、暗号システムを解読するために必要な大量の離散対数計算を並列化することです。

概要。対称暗号と非対称暗号の暗号解析は、計算上非常に厳しいものです。ほとんどすべての実用的な暗号アルゴリズムのセキュリティパラメータ(特にキーの長さ)は、従来のコンピュータでの攻撃が計算上実行できないように選択されているため、既存の暗号に取り組む唯一の有望な方法(数学的突破がないと仮定)は、専用のハードウェアを構築することです。 。これらのマシンを暗号解読のタスクに専念させることで、劇的に改善されたコストパフォーマンス比が期待できるため、商用暗号の解読が可能になります。この貢献は、暗号解析アルゴリズムの実行用に最適化され、10,000米ドル未満で実現できるCOPACOBANA(コスト最適化並列コードブレーカー)マシンの設計と実現を示しています。実際のアルゴリズムによっては、アーキテクチャが従来のコンピュータよりも数桁優れていることが示されます。 COPACOBANAは120の低コストFPGAをホストし、平均して9日未満でデータ暗号化規格(DES)の徹底的なキー検索を実行できます。私たちのアーキテクチャは、実際のアプリケーションとして、機械で読み取り可能な旅行ドキュメント(ePass)を攻撃するために使用できます。 COPACOBANAは意図されていますが、必ずしも暗号解読に関連する問題の解決に限定されていません。ハードウェアアーキテクチャは、並列化が可能で通信要件が低い計算問題に適しています。ハードウェアは、たとえば、楕円曲線暗号システムを攻撃したり、数値を因数分解したりするために使用できます。フルサイズのRSA(1024ビット以上)または楕円曲線(160ビット以上のECC)を壊すことはCOPACOBANAでは不可能ですが、(意図的に選択された)小さなビット長の暗号システムを分析して信頼性の高いセキュリティを提供するために使用できます外挿によるRSAおよびECCの推定3。

2
Dendi Suhubdy

GPUのブルートフォーサーは、1つ以上のハイエンドGPUが搭載されたPCです。ある種のパスワードクラッキングソフトウェアを実行します。このソフトウェアは、特殊なGPU処理能力を使用して、多数の高性能数学演算を実行するように最適化されています。

グラフィックカードはかなり電力を消費するため、通常は比較的高電力のPSUが必要です。大容量のハードドライブは、使用する大規模な辞書の保持など、一部のタスクに役立ちます。

辞書からでも、キースペース全体をカバーする文字のシーケンスを出力するジェネレータからでも、すべてをすばやくハッシュします。次に、ハッシュの結果を、通常は攻撃を受けているシステムから回復されたターゲットハッシュと比較します。

2
Matthew

すべては非常に技術的な答えですが、より現実的な状況にする必要があります。

スーパーで商品をビープ音で鳴らして支払いをするという簡単な仕事がある場合、1回のチェックアウトまたは1024をお勧めしますか?確かに1つのチェックアウトは機能します。通常のチェックアウトよりもパフォーマンスを向上させるために、多くのトリックを使って非常に洗練されたものにすることができます。しかし、結局のところ、人々は非常に速く働くことができるだけであり、買い物客はしばしば物事を遅くします。したがって、それまでよりも多くの負荷がかかります。

逆に、手術のように行うのが非常に難しい場合。本当に熟練した1人の外科医に、小さいながらも優れたチームや肉屋の軍隊にバックアップしてもらい、基本的には切り刻むことしかできないのではないでしょうか。

2
chris scott