web-dev-qa-db-ja.com

子供のための秘密の転送

スカウトでは、メッセージを書き込むために シークレットコード を使用するのが一般的です(これは単純な暗号です)。

子供たちに転送秘密を導入して、これらの暗号でそれを使用できるようにしたいと思います。したがって、競合するチームが暗号化されたメッセージを見つけて正常にデコードした場合、古いメッセージもデコードできません。

私の質問、これらの単純な暗号を転送秘密でどのように実行できますか?

12
ScoutHelper

あなたが説明することは、前方秘密ではありません。

Forward secrecy は次のプロパティに関連します:エンティティ間で安全な通信が行われました[〜#〜] a [〜#〜]および[〜#〜] b [〜#〜]いつか[〜#〜] t [〜#〜];攻撃者はすべてのメッセージを記録しました。後でT '攻撃者は、既知のすべての秘密鍵のコピーを取得します[〜#〜] a [〜#〜]および[〜 #〜] b [〜#〜];それでも、攻撃者は時間に発生した通信の内容[〜#〜] t [〜#〜]を回復できません。前方秘密を達成するには、次の条件が満たされている必要があります。

  • 各通信(たとえば、メールコンテキスト内の個々のメッセージ)では、送信者と受信者が特定の暗号化キーを使用します保持しない。これは必然的にランダム性を伴う何らかの生成メカニズムを伴います。
  • ステートレス一方向メールはサポートしていません。実際、2つのスカウト間の完全な通信がスカウトからの単一のメッセージである場合[〜#〜] a [〜#〜]スカウト[〜#〜] b [〜#〜]、つまり、これは[〜#〜] b [〜#〜]メッセージを処理して内容を回復するのに十分な知識があることを意味します。 [〜#〜] b [〜#〜]でない限り、かつて知っていたもの(つまり、ステートレスではない)を忘れさせます[〜#〜] b [〜#〜]再びこの偉業を行うことができます。また、攻撃者が[〜#〜] b [〜#〜]の秘密をすべて取得した場合も同様です。

双方向通信が可能な場合(SSL接続の場合と同様に、初期ハンドシェイクなど)、Diffie-Hellmanのような鍵交換アルゴリズムを使用して、通信期間のみ使用される通信固有のセッション鍵を生成できます。 、その後破棄されます。両方のスカウトに既知の長期的な秘密は、相互認証にのみ使用されます。

スカウトメッセージは一方向であり、平均的なスカウトは1024ビットDHキー交換を計算しません(とにかくcould:これらすべての若者は、スマートフォンを持っているため、完全に任務を果たしています。しかし、それは教育的ポイントではないことを理解しています)、この種のソリューションは使用できません。

代わりに、解決策は、スカウトstatefulを作成することです。ここでのモデルは One-Time Pad のモデルです。送信者と受信者が長いシーケンスを共有するようにしてください小冊子などの物理的な媒体に保存する秘密の。メッセージを送信または受信するためにキー(小冊子ページなど)を使用する場合、destroyになります。そのため、事後に小冊子を押収した敵は鍵を取得できず、過去のメッセージを解読することができません。

これは歴史的に正しい解決策です。コンピュータ以前の時代には、フィールドエージェントはOTPを使用していました。スカウトは、何十年もの間使用されていた実際のスパイや軍隊とまったく同じ方法を使用することによってのみ、興奮することができます。小冊子を食用素材で作るための追加のポイント。使用後の破壊が楽しく、簡単で安全です(平均的な偵察では、紙を燃やすだけでもとても楽しいですが、環境に害を及ぼす可能性があります)。 OTPが悪用されたとき、つまりパッドが再利用されたときに、解読をスカウトに説明するための追加のポイント。


前方秘密は、フィールドエージェントが敵に押収され、彼の秘密を明かすことを強いられたときに何が起こるかについてです。想定するシナリオは異なります:強制的に明らかにされた秘密はありませんが、不特定の方法で発生したパッシブな復号化(たとえば、部分的に既知の平文からの大量の推測)。説明するプロパティ(1つのメッセージを復号化しても他のメッセージは明らかにならない)は、暗号化方式が known-plaintext attack に対してロバストであることを意味します:いくつかのクリアテキストと対応する暗号文を知っていても、他の暗号文、特に、他のメッセージに再利用される鍵コンポーネントを再構築するには不十分です。

ペンと紙の暗号は通常弱いですが、攻撃者がペンと紙しか持っていない場合は、かなり強力なものもあります。提案とリンクについては この質問 を参照してください。

ワンタイムパッドは例外です。非常に低いコンピューティング能力で計算できますが、使用されるキーイングコンポーネントが別のメッセージまたはメッセージパーツで再利用されないため、既知のプレーンテキスト攻撃に対して究極的に堅牢です。


概要:OTPを使用します。必要なプロパティを提供します。 it alsoは前方機密を提供します。それは教育的で、歴史的再建を啓蒙するのに適しています。

19
Tom Leek

はい。

スカウトで対称鍵を使用していると思います。つまり、暗号化されたメッセージの暗号化と復号化には同じ鍵が使用されます。

Forward Secrecyは、次の場合に達成されます。

a)両方の当事者(送信者と受信者)が 鍵生成に貢献しました b)両方の当事者が保証できるものを提供することに同意しました 今後使用されない ...

したがって、スカウトリーダーは「22」を貢献し、スカウトは「33」を貢献してキーを「726」にします(22 * 33)。どちらの当事者も他方の貢献を知らなければ理想的です。

編集:

もちろん、このスキームは完全に安全ではありません。アイデアは、Perfect Forward Secrecyについて子供たちに伝えることであり、その目標は次のとおりです。

  1. 送信者と受信者の両方が鍵生成に参加します
  2. キーは1回だけ使用され、キーの知識は単一のメッセージの復号化にのみ役立ちます
  3. 基盤となる暗号化アルゴリズムは変更されておらず、PFSとは無関係です。目標は、キーとその最終的な妥協点についてより優れたセキュリティを実現することです。

実施例:上記のように、送信者は「22」を提供し、受信者は「33」を提供し、これと「726」のこのメッセージのみに使用される「セッション」キーを生成します。元のリンクにある「Numbers Stand For Letters」アルゴリズムを使用して、単純な置換を作成します。

A B C D E F G H I ...
7 2 6 1 3 4 5 8 9 ...

(私はセットから726を削除することを選択しましたが、厳密に言えば、それは必要ではありません...)

このアイデアは、効果的な暗号化を実現することではなく、子供たちにエフェメラルキーを使用することの利点と、キーに貢献する両方の当事者に楽しみを与えることです。

キーは受信者の参加なしに送信者によって生成されるため、OTPは完全転送秘密の有効な例ではありません。受信者は、送信者を信頼して、鍵が正しく生成されていることを確認する必要があります。

1
RQ'