2011-01-04 27 views
2

分散環境で50 MBのデータパケットにデジタル署名する必要があります。署名は中央サーバーで行われ、クライアントはデータパケットを中央サーバーに送信します。巨大なデータパケットを送信することでネットワークのボトルネックを避けたいと思っていました。デジタル署名 - 分散環境 - 別々のハッシングと署名

私の質問は、私はクライアント側でハッシュを生成し、ちょうど署名のための中央サーバにハッシュを送ることができます

  1. のですか?
  2. このアプローチにはセキュリティ上の欠陥がありますか?

おかげ

+1

あなたはどのような脅威から守っていますか? – Karmastan

+0

私の要件は、ある銀行からの金融取引データのデジタル署名を実装してから、それを他の銀行に送信し、それを検証することです。だから私は私の実装が十分に安全であることを確認する必要があります。 – Raj

答えて

3

あなたは、ハッシュがクライアントから受信した署名することができ、まだセキュリティの問題がここにあります - あなたは、ハッシュがあることを許可されているデータから導出されていることを確実にする方法を見つける必要がありますハッシュ。サーバーが企業証明書を使用して、dev.teamがコンパイルする実行可能ファイルに署名する状況を想像してください。ハッカーがトロイアンを作成し、(ハッシュのみを渡して)署名リクエストをサーバーに送信する方法を見つけました。そして、彼はあなたの会社の証明書を使って署名したトロヤンを手に入れます。これは外部からの攻撃ではあまり実用的ではありませんが、内部攻撃ではそうではありません

+0

すべてがクライアントの完全性に依存することは間違いありません。しかし、それはハッシュまたは完全な内容を送信することに関係なく有効です。 – mtraut

+0

@mtrautは正確ではありません。サーバー上で署名される50Mbの大きさのPDF文書であれば、サーバーはPDF文書の特定のパラメーターをチェックできます(たとえば、透かしを入れて変更することもできます)。それがXMLファイルの場合、サーバーはXMLが受け入れ可能な構造に従っているかどうかを確認できます。しかし、これはハッシュだけでは不可能です。 –

+0

そうです。しかし、彼は正式なチェックしかできません。 10.00 $または10,000,000.00 $が有効であるかどうかはわかりません。 – mtraut

2

ハッシュを盲目的に署名することは危険な提案のようです。この状況に関連するように思われる質問がいくつかあります。

  • クライアントは「信頼できる」ですか?
  • 通信チャネルは信頼されていますか?
  • 受信して署名するデータの検証をサーバーが実行していますか?

最後のものが最も重大な場合があります。サーバーがデータを検証せずに盲目的に署名した場合、おそらくハッシュにハッシュ署名する以外の方法はありません。いずれのプロセスでも、誰でも署名されたデータを取得できます。

+1

..サーバーがデータの検証を実行していない場合は、中央サーバーを完全に排除して署名キーをクライアント。 – caf

+0

ありがとうございます、あなたの質問は私が考慮すべき要因を要約した。 – Raj