web-dev-qa-db-ja.com

弱いが未知の暗号化プロトコルをどのようにクラックしますか?

私はこの興味深い質問を読んでいました:

開発者の自作のパスワードセキュリティは正しいのか、間違っているのですか?

「Dave」によって開発された弱い自作アルゴリズムを示し、回答がこれがなぜ悪い考えであるかを議論します。 (実際には暗号化ではなくハッシュアルゴリズムですが、私の質問は両方に当てはまります。)

自作アルゴリズムは非常に悪い考えであることは私には理にかなっていますが、私が理解していないことが1つあります。

私が攻撃者であり、「Dave」によって開発された、弱いが不明な暗号化アルゴリズムに直面していると想定します。どうすれば解読できますか?どこから始めればいいのかさえわからなかった。一見意味のない文字列になります。

たとえば、自作アルゴリズムが次のようであるとします。

  • 元のデータに、よく知られた弱い暗号化アルゴリズムを使用します。
  • ファイル内のシリアル番号が素数である数字の合計が繰り返されているバイトに対して、ビットごとに負の値を計算します。 (または他のそのような数学的操作、これは単なる例です。)

そのようなアルゴリズムによって生成されたファイルをどのようにハッキングするのでしょうか事前に知らない

編集:皆さん、アルゴリズムを秘密に保つことがどれほど難しいかを私に納得させないでください。実生活でそれを達成するのがいかに難しいかにもかかわらず、アルゴリズムが完全に秘密にされているという前提でこの質問に答えてください。

また、アルゴリズムにはまったくアクセスできず、結果のデータにしかアクセスできないと仮定します。

87
Ram Rachum

私が攻撃者であり、「Dave」によって開発された、弱いが不明な暗号化アルゴリズムに直面しているとします。どうすれば解読できますか?どこから始めればいいのかさえわからなかった。一見意味のない文字列になります。

そうです、そうではありません。これが暗号化されたデータです(4587556841584465455874588)。それが何を意味するのか手掛かりを得ましたか?絶対違う。

ただし、暗号化をまとめる宇宙の鍵となる、基本的に最も統合的に重要な中心的な柱の鍵がありません。アイデアは簡単です:

the key is everything

それでおしまい。それはあなたが保護しなければならないビットです。あなたがあなたの人生を守り、あなたがそれが何であるかを彼らに伝えるまで、誰もあなたがハンマーであなたを打たないことを望む必要があるビット。

これに基づいて、攻撃者が自分のアルゴリズムを読み取れると想定する必要があります。彼らはそれがどのように機能するかを知っています。彼らはそのプロセスを文書化できます。弱点があれば見つけます。そして、彼らはそれらを利用するでしょう。 Takenからの怒ったCIAお父さんのように。

これは、結局のところ、仮定ではなく、実際に使用されているケースです。自作の暗号技術者であるDaveは、自分のプログラムに暗号化アルゴリズムを組み込みたいと考えています。暗号学者が長年にわたって彼のために無料で行ったすべてのテストと設計作業を避けることを決心し、彼は奇妙なxorを含む何かを書いて、彼のプログラムをコンパイルし、それを友人に有益に提供します。

そのアルゴリズムは現在手元にあります。ゲームオーバー。

さて、「アルゴリズムを秘密にしておくことはできないのでしょうか?それはうまくいきますか?」おお、デイブ、止まって。ダメダメダメ。秘密のアルゴリズムの問​​題は、盗まれる可能性がはるかに高いことです。結局のところ、キーはユーザーごとに異なります(実際には、これは要件ではありませんが、単純化のためであると仮定しましょう)が、アルゴリズムは変更されていません。したがって、攻撃者にさらされるのは実装の1つだけで、ゲームオーバーになります。


Edit:OK、OPの更新された質問への応答。少しの間、アルゴリズムが完全に未知であると仮定しましょう。暗号化された会話の2人の参加者はそれぞれ、アルゴリズム実装の完全なセキュリティを備えています。

この場合、分析するデータがあります。次のいずれかを実行できます。

  • よく知られている文字 を分析します。これは、典型的なシーザーシフト暗号を解読する方法です。
  • キーの長さを推測してみてください。この情報を使用して、同じ平文に対応する可能性のある暗号文ブロックの繰り返しを探すことができます。
  • 多くの多アルファベット暗号は(おそらく)これの変形にすぎないため、一致の試みインデックスと、vigenere暗号を破るために使用される他のそのような手段。
  • パターンに注意してください。どんなパターンでもあなたに鍵を与えるかもしれません。
  • 他の手がかりを探します。長さは特定のメジャーに対応していますか?たとえば、バイト境界などの特定の値の倍数であるため、(おそらく)パディングされていますか?
  • 対称暗号解読技術 のいずれかを使用して分析を試みます。これらは多くの場合、アルゴリズムを知っていることに依存しているため、ここでは適用されません。
  • 問題のデータが鍵交換を表していると思われる場合は、 公開鍵アルゴリズム を解読するための多くの手法の1つを試すことができます。

実際には、未知のアルゴリズムからの短いデータは解読できない可能性があります。ただし、これは当てはまることを意味するわけではありません。クリプトアナリストが回復できるデータが多いほど、アルゴリズムを破る可能性が高くなります。深刻な暗号解読なしでは、その境界が何であるかはおそらくわかりません。たとえば、3文字の単語に対してシーザー暗号アルゴリズムをブルートフォースすることができると仮定するのは合理的です。

再利用の問題にも直面しています。第二次世界大戦では、エンギマはシークレットアルゴリズムの設定をプログラム可能にすることでこの問題を克服しましたが、これも壊れていました。

考慮すべき暗号の人間的要素もあります。缶のラベルには「1回使用、消化しない」などと記載されていますが、人間は人間であり、2回、3回など使用する可能性があります。

60
user2213

未知の「暗号化」アルゴリズムは、歴史的に少なくとも1回達成されています。私は Minoan Linear B script について話しています。これは、紀元前1300年頃にクレタ島で使用された書き込み方法です。この方法は数世紀後に失われ、いわゆる Greek Dark Ages の期間中にすべての開業医が死亡し、文明全体が崩壊しました。考古学者が19世紀の終わりに、クノッソスや他の場所の周りで地球をふるいにかけ始めたとき、彼らが得たのは、それらを生成するために使用された書記体系についての手掛かりがなく、未知の兆候のあるタブレットの束だけでした。

ここでの興味深い話は、線形Bが1950年代に当時の暗号化システムに対して採用されていたのと同じ分析ツールを使用して 解き明かされた だったことです。実際、この文章は「未知の暗号化アルゴリズム」と見なされていました。それは、統計分析、連鎖推論、平文に関するいくつかの仮説(基本的に、ギリシャ語の変種のベース言語であるという仮定)に屈しました。これは、「手動暗号システム」に対して暗号解読がどのように機能するかを示す古典的で見事な例です。


もちろん、暗号化アルゴリズムが使用されている可能性があり、それでも秘密のままであると想定することは、妥当ではありません。同じ前提で、ビデオゲームやメディアコンテンツの海賊行為はありません。現実の世界は、これが真実ではないことを容赦なく思い出させます。アルゴリズムが秘密にされる唯一の既知の方法は、発明者と実務家を殺し、彼らの装置を破壊し、数世紀待つことです。これにはいくつかの不便な副作用があります。

そして、特定の特定のインスタンスで、アルゴリズムの詳細が漏洩していない場合でもyet、アルゴリズムを定量化する方法はありませんどれだけの秘密アルゴリズムは、つまりどのくらいの時間アルゴリズムを再構築するには、リバースエンジニアリング、賄賂、健全な盗難が必要です。 これは、約40年前に暗号学者が鍵とアルゴリズムを分割し、鍵を秘密にし、アルゴリズムを非公開にすることを決定した主な理由です-secret:アルゴリズムの秘密性ではなく、キーの秘密性を定量化できます。

これにより、特定の質問に対する洞察が得られます。 「秘密のアルゴリズム」は、「数学的操作」の概念にかかっています。これらはいくつありますか? 「数学的操作」のセットを推定または説明できますか? 暗号化アルゴリズム自体は「数学的な操作」であることがわかるので、質問はかなり明確ではありません。

51
Tom Leek

暗号化プロトコルを攻撃するには、次の攻撃方法があります

  • 既知の平文:持っている平文と対応する暗号文の間の相関関係を見つけようとしています。

  • 選択された平文:特定の平文を暗号化し、平文の変更に伴う暗号文への変更を調査します。

  • 暗号文を選択:特定の暗号文を復号化し、平文への変更と暗号文の変更を調査します。

  • 既知の暗号文:暗号文しか持っていない場合、以下に簡単な例を示します。

昔、私は暗号学のクラスを受講しました。1つは、講義で 置換暗号 の暗号解読を教えられた講義です。これが現在行われている方法ではありませんが、これが暗号化の科学が始まった場所であり、これが暗号分析が始まった方法です。

この暗号文を横切ることができるとしましょう。

Mx qeoiw wirwi xs qi xlex e lsqi-fvia epksvmxlq mw e zivc feh mhie、fyx xlivi'w sri xlmrk M'q rsx yrhivwxerhmrk。

あなたはアルゴリズムを知らない、あなたは鍵を知らない。どのように始めますか?

  • 文字の頻度を分析する:全長は87文字です。 iが12回使用されたことがわかります->〜13%。 Wikipediaの文字の頻度に関する記事 によると、この文字はeのようです。現在の暗号文は次のとおりです。

Mx qeoew werwe xs qe xlex e lsqe-fvea epksvmxlq mw e zevc feh mhee、fyx xleve'w sre xlmrk M'q rsx yrhivwxerhmrk。

  • 現在、2番目に多い文字はxが11回使用された->〜11%であるため、tになる可能性があります。現在の暗号文は次のとおりです。

Mt qeoew werwe ts qe tlet e lsqe-fvea epksvmtlq mw e zevc feh mhee、fyt tleve'w sre tlmrk M'q rst yrhivwterhmrk。

  • 今、私たちはパターンを見始めています。 i->ex->tを置き換えると、キーが4になる可能性があります。試してみよう:

自作アルゴリズムは非常に悪い考えであることは私には理にかなっていますが、私が理解していないことが1つあります。

あはぁ!わかった!これで、最初の暗号分析が完了しました。これは、暗号文を分析できる1つの方法です。

32
Adi

ここでは誰もそれを声に出して言っていないので、私はそうします。

暗号化者に1つだけの暗号文が与えられ、それ以上取得する手段がない場合、暗号文は短く、平文の知識が与えられない場合、テキストを復号化することはほぼ不可能です。これが依然として可能である唯一の方法は、暗号が置換暗号の難易度レベルである場合です。

同じアルゴリズムを前提として、オンデマンドでより多くの暗号文を取得する方法がある場合、暗号文が十分に長い場合、またはプレーンテキストのいくつかの既知の部分が役立つ場合、十分な労力をかけてアルゴリズムが解読される可能性があります。

しかし、それでもなお、暗号解読は、単純な暗号アルゴリズムを最初から作成するよりも多くの労力を必要とするため、正当な理由がない限り、だれもその努力を費やすことはありません。

15
Nakedible

シークレットアルゴリズムを配布する場合は、代わりにワンタイムパッドを配布するだけではどうですか。より安全です。

回線上を移動するデータが多すぎるためにワンタイムパッドのアイデアが気に入らない場合、なぜ攻撃者は1つの暗号文しか持っていないと想定しているのですか?

誰かが暗号文を1つだけ持ち、アルゴリズムを持たない(2つの誤った仮定)と仮定すると、弱いが、よく知られている基礎となる暗号化システムには、おそらく最初から脆弱性はありません。

13
mgjk

いくつかの方法があります。

最初の、そして最も明白なことは、攻撃者がソースコードを入手できた範囲でサーバーを侵害したことです。その特定のケースでは、あなたの自家製の計画は何もないほど良いです。

2番目の方法は、攻撃者が自分の値をアルゴリズムに送信して、前/後の結果を確認できる可能性があることです。これは Chosen Plaintext Attack として知られています。優れた暗号化スキームは、それに対して脆弱であってはなりません。自作のスキームはおそらくです。

選択された平文攻撃がなくても、自作のスキームは通常、笑えるほど弱いです。あなたや私のような素人は、自作の計画の成果を理解できないかもしれません。ただし、通常は優れた給料と引き換えに、このような暗号化スキームを破ることに時間と労力を費やす、非常に賢い人々のクラスがあります。あなたはそれらを聞いたことがあるかもしれません、私たちはそれらを暗号技術者と呼びます。

8
user10211

実生活でそれを達成するのがいかに難しいかにもかかわらず、アルゴリズムが完全に秘密にされているという前提でこの質問に答えてください。

これの問題は、あなたが無視していることです Kerckhoffsの原則 。これは、暗号化スキームのセキュリティがアルゴリズムの機密性に依存すべきではないことを示しています。

とにかく、暗号に本当に興味があるなら、 これ のようなコースをとるべきです。

4
matugm

それは言及されておらず、この質問はしばらくの間...

コンピュータ科学者が18世紀の秘密結社の暗号化されたテキストの解読を助けました。テキストは非常に華やかで、記号とグリフがありました。それは何世紀にもわたって文学の専門家を困らせました。トリックは、いくつかの文字とそれらが何を表しているのかを推測し、元の言語も推測することでした。ドイツ語は英語やイタリア語とは文字の頻度が異なるためです。

暗号文の説明と解読方法を以下に示します。

http://phys.org/news/2011-10-scientist-mysterious-copiale-cipher.html

http://stp.lingfil.uu.se/~bea/copiale/

http://www.wired.com/dangerroom/2012/11/ff-the-manuscript/all/ (非常に長く、非常に興味深い。)

Copiale Cipherにより、暗号解読チームは暗号化されたドキュメントの言語すら知らなくなった。しかし、彼らは原稿全体に配されたローマとギリシャの文字についての予感があったので、それらを抽象的な記号から分離し、それを本当のコードとして攻撃しました。

「それはかなり長い時間を要し、完全な失敗をもたらしました」とナイトは言います。 80の言語を試した後、暗号化チームは、ローマ字が読者に誤解を与えることを目的とした「ヌル」であることを認識しました。それはメッセージを保持する抽象的なシンボルでした。

次に、チームは、類似した形状の抽象的な記号が同じ文字または文字のグループを表すという仮説をテストしました。やがて、ドイツ語の最初の意味のある言葉が現れました:「開始の儀式」、それに続く「秘密のセクション」。

3
Chloe