1

デジタル署名で否認防止と整合性がどのように達成されるかは理解していますが、まだ把握していないのは認証です。

私は C# でクライアント サーバー アプリケーションを開発しています。これは、デジタル証明書とデジタル署名による認証が可能である必要があります。(SignedCms.CheckSignature() を使用して) 署名の有効性と整合性をチェックする方法は知っていますが、関連する部分をどのように認証するのでしょうか?

例えば:

  1. クライアントはサーバーにデジタル署名を要求します。
  2. クライアントは署名を受け取り、それを検証します。
  3. 検証が成功した場合は、続行します。

クライアントは中間者攻撃の被害者となり、ステップ 2 で有効な署名を受け取る可能性があります。検証は成功しますが、クライアントは適切なサーバーと通信していません。

私は何が欠けていますか?

4

2 に答える 2

1

中間の人物が要求に署名するための秘密鍵を所有している場合にのみ、有効な署名を受け取ることができます。あなたが見逃しているかもしれない重要なことは、デジタル署名されたアイテムの側面を変更すると署名が無効になるということです. 中間者はリクエストを再送信できますが、変更すると署名の検証に失敗します。

于 2011-01-12T23:50:05.503 に答える
1

署名証明書の信頼がありません。

SSL 証明書を検討してください。Windows (または任意の OS) によって信頼されているルート CA への署名パスがあります。MITM が自己署名証明書、または信頼できない CA によって作成された証明書を提示すると、ブラウザーによって拒否され、警告が表示されます。したがって、証明書は、既知の CA によって発行された場合、または既知の CA にチェーンされている場合にのみ信頼されます。

自己署名証明書の場合はより複雑になります。鍵のフィンガープリント、シリアル番号、またはその他の定数識別子を安全に交換し、署名鍵が実際に期待したものであることを検証する必要があります。これは、自己署名証明書を一般的に使用しない理由の 1 つです。一般向けの Web サイトまたはその他のサービス。

したがって、MITM 攻撃があり、元のマシンからの署名が削除された場合、メッセージが変更され、信頼できるものに対して署名証明書の身元を確認する限り、不明な証明書を使用して辞任し、辞任したものを拒否しますメッセージ。

(実際にはもっと複雑になりますが、私が望む要点は理解できます)

于 2011-01-12T23:57:40.877 に答える