web-dev-qa-db-ja.com

これは公開鍵を検証する安全な方法ですか?

次のような公開鍵を確認したい:

  1. アリスは暗号化のための公開/秘密鍵ペアを生成します
  2. アリスは署名用の公開/秘密鍵ペアを生成します
  3. アリスは、ランダムな4文字のWord +自分の秘密署名鍵を使用して公開暗号鍵に署名します
  4. アリスは彼女の公開鍵(両方)と署名をボブに送信します
  5. アリスは安全で信頼できる方法で4文字の単語をボブに送信します
  6. ボブは、署名が上記の方法で4文字のワードで作成されていることを確認することにより、アリスの公開暗号鍵を検証します。

これは私が確信していないことです:

  1. 4文字の単語で十分ですか?
  2. 署名を検証すると、元のメッセージが秘密であるときに、公開鍵が元の鍵であり、「中間者」によって変更されていないことが検証されますか?

背景:あまりにも多くの当事者間の公開鍵の保存交換をアーカイブしたい。しかし、私が信頼できる信頼できる第三者機関はありません。

代わりに、最初に2つの当事者が直接会います。その瞬間、彼らはお互いを完全に信頼しています。一方の当事者は他方に秘密を与えることができます(たとえば、紙の上に)。

もちろん、理論的には相手が何かを返すことができます。しかし、使いやすさの理由から、これは避けたいと思います。

もちろん、公開鍵のフィンガープリントが秘密かもしれません。しかし、繰り返しになりますが、ユーザーフレンドリーにするために、秘密はできるだけ短くします。

6
Nathan

1。4文字の単語で十分ですか?

単語がユニークであると見なすことができ、秘密にされている限り、単語の長さは重要ではありません。ランダムな組み合わせの量が攻撃をかなり明白にしているため、攻撃者が4文字のランダムなシーケンスの多くにそれらの1つが正しいシーケンスを含んでいる場合に、公開鍵に署名します。

2。署名を検証すると、元のメッセージが秘密の場合、公開鍵が元の鍵であり、「中間者」によって変更されていないことが検証されますか?

署名が有効な場合、秘密の4文字のシーケンスも知っている(署名ペア)秘密鍵の所有者が公開鍵を提供することは間違いありません。内部の鍵が有効な証明書であるかどうか、4文字のシーケンスが正しいかどうか、またはこれが正しい公開鍵であるかどうかは確認しません(署名鍵ペアの所有者は、好きなものに署名できます)。

アリスが公開鍵と署名された4文字のワードをボブに転送するときに、ステップ4でMan-in-the-Middle(MITM)があるとしましょう。 CAがなく、ボブはアリスの証明書とMITMの証明書を区別できないと想定しているため、MITMは単に公開鍵を自分の鍵に置き換え、4文字のWordを読み取り、自分の鍵で同じWordに署名することができます。あまりにも。署名されたWordには簡単にアクセスできるため、送信した時点で、MITMはそれを読み取るだけで、それを使用して将来のすべてのデータを置き換え、Bobによって認証を受けることができます。 したがって、これは公開鍵を検証する安全な方法ではありません。

可能な解決策

  • ステップ5で指紋のハッシュ(sha1 fe)を交換します。MITMが指紋のハッシュが始まる証明書を作成することは不可能であるため、ボブがハッシュの最初と最後の2文字のみを覚えている場合でも、十分に安全であると見なすことができます。そして、同じカップル文字で正確に終わります。
  • 対称暗号化を使用します。公開証明書をパスワード保護(Zip f.e.)アーカイブに入れ、このパスワードを交換します。

ちなみに、2つの鍵ペアは必要ありません。同じ鍵で署名して暗号化できます。

4
James Cameron