web-dev-qa-db-ja.com

あいまいさによるセキュリティが機能しない方法のデモンストレーション

次のシナリオでは、あいまいさによるセキュリティが2回失敗することを示す必要があります。

私は秘密の鍵を持っています。

ユーザーAはMessageX = SecretTransformation(KEY、SecretValue1);を取得します。

ユーザーBはMessageY = SecretTransformation(KEY、SecretValue2);を取得します。

SecretTransformation()は標準の暗号化関数ではありません。

現在、あいまいさによるセキュリティは、オープンデザインの原則とシャノンの格言とは対照的です。また、このセキュリティは、攻撃者が「秘密」の1つを取得しようとするとすぐに失敗することも知っています。

さらに、それを実証できると思うのは、

攻撃者が秘密を知らずにMessageXとMessageYを取得できた場合、暗号解読攻撃を実行してKEYを取得するか、SecretTransformationの機能を理解できます。

これは真実であると想定されており、攻撃者が収集できるメッセージの数が多いほど強くなります。 messageX messageY ... messageN自分で説明したことを願っています。ワンタイムパッドなどのいくつかの例を指摘する必要があります。ここで、XORとキーを1つ以上入力すると、XOR戻って秘密を取得します。

ここに提案されたスキーマの画像があります http://s17.postimage.org/mdgij13un/bad_Transformation.png

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

3
NoobTom

そのような法律はありません。たくさんのことが正しいと思っているとおっしゃっていますが、実際はそうではないと思いますので、自分の前提を再検討する必要があると思います。

「あいまいさによるセキュリティ」は、システムが必ずしも安全でないことを意味しません。システムのセキュリティにとって悪い戦略であり、悪い考えです依存システムの秘密性。歴史的に、あいまいさを介してセキュリティに依存してきたほとんどのシステムは、不十分なセキュリティを提供することが証明されています。

しかし、システムの詳細を非表示にしても、魔法のように安全なシステムが安全でないシステムに変換されるわけではありません。 PGPで暗号化しても、暗号化していることを誰かに伝えないだけで、PGPが安全でなくなるわけではありません。詳細の開示に失敗したすべてのシステムが必ずしも安全ではないという法律はありません。

7
D.W.

「あいまいさを介したセキュリティ」は少しロードされた用語であり、実際よりもはるかに少ないことを意味します。ある意味で、ほぼallのセキュリティは、あいまいさによって得られます。たとえば、あなたのパスワードはそれが公に知られていない範囲でのみ安全です。ただし、実際のセキュリティの鍵は、秘密を簡単に保護できるようにすることです。

確かにあなたはcould暗号化パスワードを公開し、アルゴリズムを秘密にします。しばらくの間、ある程度のセキュリティを享受できます。ただし、アルゴリズムはリバースエンジニアリングが容易であることで有名です。それらはコンパイラのトリックと巧妙な戦術によって難読化される可能性がありますが、適度な量のカフェインを備えたまともなハッカーは、通常、1日でそのような課題に対処できます。気が散る場合は2つ。

対照的に、「既知の平文」または「選択された平文」攻撃などの非常に悪条件でも、ペイロードだけでなく鍵も保護するために優れた暗号化アルゴリズムが構築されており、特定の対策を講じてサイドから保護します-チャネル攻撃。これらの対策はすべて、特定のクラスの秘密を保護することを目的としており、そうした実績は証明されています。

さて、確かにアルゴリズムを秘密に保つことにはharmはありません。それは追加のセキュリティを提供しないかもしれませんが、それはharmあなたのセキュリティにも行きません。そして、必要以上に多くの情報を開示する意味はありません。しかし、あなたがcanであるためにアルゴリズムを秘密に保つこととあなたのセキュリティはそれに依存するのためにそれを秘密に保つことの間には大きな違いがあります。保持できるすべての秘密のうち、これは攻撃者が導き出すのが最も簡単なものの1つです。したがって、それに応じてセキュリティを計画するのが賢明です。

3
tylerl

攻撃者が大量の暗号化されたメッセージを取得して悪用することができたために暗号的に安全でないシステムがどのようにして壊れたかのデモンストレーションのために、第二次世界大戦におけるエニグマ(特に海軍のエニグマ)のケースを調べますシステムの動作を把握するために、これらのメッセージのランダムでないビット。

第二次世界大戦中、ドイツはエニグマと呼ばれるマシンを使用して、潜水艦へのメッセージを暗号化し、本質的に非常に複雑な置換暗号を使用してフィールドの軍隊を暗号化しました。同盟国はブレッチリーパークの外で働いており、ラジオで放送されたため、これらのメッセージのほとんどを傍受することができました。長年にわたって、彼らは暗号化されたメッセージのかなり大きなコーパスがあるという事実を悪用して、最終的には解読できるようになるまでアルゴリズムの他のビットを処理するために使用できる出力のパターンを検索できました暗号。非常に基本的なコンピューターだけで、これは骨の折れるプロセスでした-エニーグマがトニーセールの講義の段階でどのように壊れたかについて、まともな内訳があります Bigrams、Trigrams、Naval Enigma .

エニグマストーリーは、他の方法ではあいまいさを介してセキュリティに依存する危険性も指摘しています。戦争中、連合軍は沈没する前にドイツの潜水艦からエニグママシンをいくつか盗むことができ、コードブレーカーの作業を大幅に簡素化しました。同様に、実際のシステムがシステムの動作方法を知らない攻撃者に依存している場合、攻撃者は他のチャネルを通じて攻撃を完了するために必要なすべての情報を常に入手することができます(ソーシャルエンジニアリングや一般的な情報漏えい、会社など)。

2
Justin Cave

暗号システムとその脆弱性を検討してください

システムの次の秘密コンポーネントがある場合:

  • 秘密鍵(通常、ユーザーごとに1つ/システムの使用)。
  • SecretTransformation(すべてのエンドポイントで共有される1つのシングルトンシークレット)。

これら2つのシナリオを比較する

  1. 関係者のみが共有する秘密鍵のセキュリティ。

  2. SecretTransformationのセキュリティ。コードが過去/現在/未来にあるすべてのシステム/バックアップにアクセスするすべての関係者、ユーザー、インストーラー、請負業者、ISV、DVDプリンター、開発者、レビュー担当者、営業担当者、ハッカーに配備されます。

次に、上記のそれぞれが侵害された場合に何が起こるかを比較します。

  1. 秘密鍵が再生成され、関係者と共有されます。

  2. 完全な暗号システムは、すべて同じ弱点を介して再開発および展開する必要があります。

だから簡潔に:

  1. シークレットキーのみがシークレットである暗号システムには、キーを持つ場所の数と同じ数の脆弱点があります。すべての当事者は、秘密鍵を保護することについて十分に理解し、責任があります。各キーの範囲は設計により制限されています。
  2. SecretTransformationが秘密である暗号システムには、文字通り何千もの潜在的な弱点があり、そのいずれからも回復するには膨大な量の作業が必要です。

では、なぜchooseに、非常に多くの弱点があるシステムを開発するのでしょうか。

SecretTransformationを使用した暗号システム[〜#〜] may [〜#〜]壊れるまで問題ありませんが、オープンアルゴリズムは常に[〜#〜]常に[〜#〜] =良くなる。

1
Andrew Russell