20

この方法でテキストを暗号化するアプリケーションを作成しました。

  1. 入力テキストを取得する

  2. テキストを反転

  3. 16 進数に変換

  4. キーを使用した XOR

  5. Base64 エンコード

さて、私は自分で多くの暗号化/エンコードを行っていないので、私の質問はばかげているように聞こえるかもしれませんが、上記のアルゴリズムのコンテンツを含むファイルを取得し、このアルゴリズムについて知らなかったとしましょう。ガイドライン、原則、従うべきルールはありますか?

私の質問はこれらの 5 つのステップとは関係ありません。これは純粋な例です。

別の例として、A751CD9E1F99 というテキストを取り上げます。これが何を意味するのかを調査するにはどうすればよいでしょうか。

4

11 に答える 11

18

暗号を解読するために、暗号解読者は収集できるすべての情報を使用します。攻撃は、既知のものに応じて、いくつかのカテゴリに分類されます。最も難しいものから最も簡単なものまで、主な攻撃のいくつかは次のとおりです。

  • 暗号文のみ: これは最も難しい攻撃です。アナリストは、できるだけ多くの暗号化されたメッセージを収集しようとし、それらを分析してシンボルの頻度のパターンやバイアスを探します。ただし、優れた最新の暗号にはパターンがありません。これは、適切に使用された優れた暗号では実行不可能です。
  • 既知の平文: ある暗号文に対応する平文を持つことは、新しい暗号文から未知の平文を回復するための大きな一歩です。ここから「リバース エンジニアリング」が実際に始まります。なぜなら、彼は既知の入力と出力に対してアルゴリズムに関する仮説をテストできるからです。第二次世界大戦中、暗号解読者は、既知の平文攻撃を悪用するために、敵のメッセージに表示される可能性が高い単語である「クリブ」の広範なリストを作成するために懸命に働きました. たとえば、特定の日の気象状況や戦闘の地名などは、暗号化されたメッセージで本部に報告される可能性がありました。
  • 選択された平文: さらに良いのは、暗号分析者が敵を騙して、暗号分析者によって作成されたメッセージを暗号化できる場合です。戦時中、暗号化されて暗号解読者がコードを解読するのに役立つことを期待して、偽の情報が敵に漏洩することがありました。
  • 適応選択平文: これは、既知の平文に対する一種の反復アプローチです。暗号解読者は、選択した平文を繰り返しシステムに暗号化させることができ、その結果を見て次の試行を調整します。

現在、コードを解読する方法としては、システムの欠陥を利用する方法が考えられます。たとえば、不適切なキー管理が使用され、キーが盗まれたり推測されたりする可能性があります。それ以外の場合は、「サイドチャネル」攻撃が使用される可能性があります。たとえば、特定の暗号化操作にかかる時間を注意深く測定することにより、攻撃者はキーの特定のビットまたはバイトがゼロであると推測し、何らかのアルゴリズムを介して高速パスを引き起こす可能性があります。

スペクトルの「アルミ箔の帽子」の端近くまで、コンピューティング機器からの無線放射を傍受する方法があります。これにより、リモート エージェントはモニターに表示されているものを「見る」ことができます。この種の盗聴を妨害しようとする特別に設計されたフォントさえあります。

于 2009-06-12T20:21:08.973 に答える
8

基本的に、この種の暗号化は、適度に簡単に解読できます。base64 エンコーディングは、合理的に認識しやすいでしょう。(Base64 では一般的な 64 文字のみを使用します。) 次は、元の XOR キーを見つける手順です。これは少し難しいですが、暗号化されたデータが十分にあれば、これらのキーを検出できるアルゴリズムがいくつかあります。単純なテキストでは不十分ですが、それが 16 進数の文字列になることがわかっていれば、作業はずっと簡単になります。次に、他の手順を逆にします。どれも簡単すぎる。

可能であれば、ハッカーが暗号化前の元の値を知っていればハッキングできるはずです。このような場合、提供されたものと同じくらい短い文字列で、少なくとも完全な暗号化ルーチンを検出するのに十分な場合がありますが、文字列の XOR に使用したキーは完全にはわからない可能性があります。

よし、A751CD9E1F99... 12 文字を解読してみましょう。数文字しか使用していないように見えるため、16 進数の文字列のように見えます。オリジナルは6文字だったはずです。値は 0x51 から 0xCD の範囲になり、これは base64 エンコーディングに使用するには大きすぎます。また、ほとんどの値は 0x7F を超えているため、何らかのエンコードを行ったことを示しています。辞書攻撃は、使用された XOR キーですでにある程度の洞察を提供する可能性があります。6 つの 16 進値と 6 文字の多くの単語を XOR して、どれが辞書内の別の単語を返すかを確認します。有効な単語を返すように見えるものは、元の XOR に使用したキーである可能性があります。2 番目の暗号化された文字列を使用すると、これらの検出されたキーを再度使用して、可能なキーのセットをさらに小さなセットにフィルター処理できます。現代のシステムでは、

約 50 年前、この暗号化方式は非常に強力でした。今日では、解読に興味のある人なら誰でも、1 日以内にクラックされると考えてください。

私は暗号解読の専門家ではありませんが、どの暗号化方法が弱すぎて使用できないかを十分に知っています。約 10 年前、私はあなたのような複雑な XOR メカニズムを使用して暗号化されたファイルにパスワードを保存するプロジェクトに取り組みました。その後、顧客はセキュリティをチェックすることに決め、専門家にパスワード ファイルだけを調査してもらいました。彼は 1 つのユーザー名とパスワードしか知らず、そのユーザー アカウントには管理者権限がありませんでした。しかし、彼が 1 時間以内にそのセキュリティを解読し、管理者アカウントに関する情報を読み取り、その情報を使用して好きなことをするのに十分な情報でした。その後、私の会社は彼に 1 週​​間無料のビールを提供しました... :-) したがって、10 年前、専門家は 1 時間しか必要としませんでした。今日では、彼らはさらに複雑なアルゴリズムを比較的簡単にクラックしています。単純に、コンピューターの方がはるかに強力だからです。この種の暗号化を使用する必要がある場合は、暗号化を使用しないこともできます。ハッカーにとってはまったく問題になりません。

于 2009-06-12T20:58:12.333 に答える
5

解読方法を知っていれば、アルゴリズムを推測してみることができます。一部の入力に対して「A751CD9E1F99」になるアルゴリズムを多数作成できます。

ここで、利用可能な入力/出力が多数ある場合、たとえば入力を少しだけ変更して、出力がどうなるかを確認できます。通常、優れた暗号化アルゴリズムは、マイナーな入力の変更に対してメジャーな出力の変更をもたらします。

于 2009-06-12T19:43:08.270 に答える
5

The Code Bookを読むことから始めるべきだと思います。あなたが求めているのは、暗号化方法を解読する方法であり、それがどのように機能するかについての出発点になります.

于 2009-06-12T19:43:44.663 に答える
4

ゴムホース暗号解読は非常に効果的です。

于 2009-06-12T20:11:50.557 に答える
3

それよりも大きなテキストベースと、暗号が特定の言語/ドメインから来ていることをある程度理解する必要があります。次に、その言語/ドメインでの単語の頻度に基づいて、テキストから特定の属性を解読できる可能性があります。

もちろん、優れた暗号はこれを回避します。この方法で簡単に解読できるのは、実装が不十分な暗号だけです。

于 2009-06-12T19:44:43.007 に答える
2

暗号文の識別不能性は、どの暗号アルゴリズムが防止/防御するように設計されているかを理解するための最初の良いページです。言及されている攻撃の種類(IND-CPAなど)も、何から始められるかについての手がかりを与える可能性があります。

于 2009-06-12T19:59:16.920 に答える
1

攻撃者は、おそらく (一般的に) 次のことを行います。

テキストの反転、Base64 エンコーディング、ROT13 などの「目に見えるエンコーディング」または些細な暗号を特定して無効にします。

高いエントロピー状態を見つけた時点で、より多くのエンコードされたデータを取得しようとし、それらを XOR します。これにより、エンコーディングが実際に XOR ベース (RC4 など) であり、キーが一定である場合に、キーがキャンセルされた 2 つの元のプレーン テキストの XOR 演算が行われます。攻撃者がプレーンテキストとエンコードされたデータの組み合わせを手に入れることができれば、他のすべてのエンコードされたデータはデコード可能です。

最後にやむを得ず、RC4 やその他の単純なアルゴリズムを動的キーで使用し、ファイル/データの末尾または先頭にキーを配置する場合など、最も一般的なプラクティスに対してテストを試みる可能性があります。

エンコードされたテキストにしかアクセスできない場合、これでほぼ終わりです。提供されたプレーンテキストのエンコードされたバージョンを生成できるAPIのようにアクセスできる場合、ビットベース(XORなど)か、ブロック暗号か、フィードフォワードブロック暗号かを自明に識別しますエンコードしますが、キーと実際のアルゴを取得することは依然として問題です。

対称キー エンコーディング (XOR など) のデコーディング プログラム、または非対称キー エンコーディングのエンコーディング プログラムにアクセスできる場合、エンコーディングは、逆にすることで即座に無効になる可能性が高くなります。

于 2016-03-29T09:39:51.020 に答える
0

暗号化を行うブラック ボックスにアクセスできる場合は、特定の入力値を入力することで多くの情報を取得できます。

簡単な例として、ブラック ボックスが「ワン タイム パッド」スタイルの暗号化を行う場合、すべてゼロを入力すると、ワン タイム パッドが得られます。(実際、任意の入力値を与えると、xor が追加されたワンタイム パッドが得られます。)

優れた暗号システムは、その暗号システムが既に知られている場合でも、このような攻撃に耐性があることに注意してください (ただし、鍵は知られていません)。

于 2009-06-12T20:08:26.133 に答える
-1

それは一種の不可能です。使用されたキーについての知識がなければ、XOR 復号化に失敗します。

一般的なケースでは、暗号化された文字列が何を意味するかを判断することはさらに不可能です (可能であれば:))。

于 2009-06-12T19:38:52.053 に答える
-2

エラー... 私は言うだろう:

  1. 出力を Base64 でデコードします。
  2. 出力と入力を XOR してキーを取得します。

これは単純な暗号化アルゴリズムであるため、入力と出力がわかっているがキーがわからない場合は、この方法で簡単に元に戻すことができるはずです。

于 2009-06-12T19:44:10.090 に答える